From 1758bc76037f4ab15ab62609c6c9c3e375d42ffc Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:45:42 -0300
Subject: [PATCH 001/589] update(i18n):
public/content/translations/es/community/events/organizing/index.md
---
.../es/community/events/organizing/index.md | 221 ++++++++++++++++++
1 file changed, 221 insertions(+)
create mode 100644 public/content/translations/es/community/events/organizing/index.md
diff --git a/public/content/translations/es/community/events/organizing/index.md b/public/content/translations/es/community/events/organizing/index.md
new file mode 100644
index 00000000000..44cade9436a
--- /dev/null
+++ b/public/content/translations/es/community/events/organizing/index.md
@@ -0,0 +1,221 @@
+---
+title: Organizar un evento sobre Ethereum
+description: Cómo organizar un evento sobre Ethereum
+lang: es
+hideEditButton: true
+---
+
+# Cómo organizar un evento sobre Ethereum {#how-to-organize-an-ethereum-event}
+
+Para que el ecosistema de Ethereum crezca, es fundamental crear una comunidad fuerte y dinámica. Tanto si está planeando organizar encuentros, talleres o una conferencia a gran escala, el éxito de su evento depende de las conexiones y la implicación de su red local. Esta guía le ayudará a sentar las bases para crear una comunidad de Ethereum activa y le guiará paso a paso por el proceso de organización de una conferencia memorable e impactante.
+
+## Pregúntese si ya existe una comunidad de Ethereum. {#ask-yourself-is-there-an-ethereum-community}
+
+Una conferencia de Ethereum exitosa se apoya en una comunidad activa y comprometida. Si ya cuenta con una, lleva ventaja; pero si no es así, el paso previo y esencial es sentar esas bases. Es importante distinguir entre escena y comunidad: una escena puede incluir empresas y personas presentes en una determinada región, que suelen funcionar de forma independiente y solo ocasionalmente llevan a cabo iniciativas conjuntas, como el ecosistema tradicional Web2 en muchos lugares. Una comunidad, por otro lado, es una red de personas y organizaciones interconectadas que colaboran y se apoyan mutuamente, como suele observarse en los ecosistemas Web3.
+
+**Sus primeros pasos deberían ser:**
+
+- Examinar las empresas locales y las de nueva creación: contar con empresas sólidas y activas en su ciudad o país suele ser el requisito previo más importante para crear una comunidad.
+- Comprobar si ya hay algunos encuentros: [página de eventos](https://ethereum.org/community/events/) de ethereum.org
+- [Consulte la web ethereum.org](https://ethereum.org/community/events/) y el chat Discord ethereum.org: para comprobar si hay eventos de Ethereum, desarrolladores y colaboradores locales.
+- Luma y Meetup.com: para ver si hay eventos relacionados con Ethereum o eventos más generales sobre Web3 organizados en su zona.
+- X: intente encontrar activistas locales o personas influyentes en el sector.
+
+La presencia de la mayoría de estos elementos es una señal clara de que se dan las condiciones para construir una comunidad, pero no necesariamente de que ya existe una comunidad. El siguiente paso es la labor crucial de organizar, involucrar y formar a estos actores, creando oportunidades para la colaboración y el crecimiento a largo plazo.
+
+### Si no es el caso, cómo construirla {#if-not-how-to-build-it}
+
+Si se da cuenta de que faltan muchos de estos elementos, no se preocupe, construir una comunidad desde cero es un proceso difícil, aunque muy gratificante. Una comunidad Ethereum fuerte no surge de la noche a la mañana; requiere paciencia, constancia y una visión clara. Puede empezar de la siguiente manera:
+
+- **Establezca un canal de comunicación**. Puede ser Telegram, Signal, WhatsApp, WeChat o un servidor Discord —lo que sea más popular en su zona— para que la gente pueda conectarse, hacer preguntas y compartir recursos.
+- **Encuentre a sus usuarios pioneros**: identifique a algunas personas a las que les apasione Ethereum y Web3. Se convertirán en sus principales seguidores y colaboradores.
+- **Organice eventos pequeños y constantes**: empiece por reuniones informales, grupos de estudio o talleres. La fórmula es ser constante, aunque al principio el grupo sea pequeño, los eventos regulares generan confianza e impulso.
+- **Intente ponerse en contacto con empresas locales**, instituciones educativas o espacios de trabajo cooperativo para que puedan proporcionarle un espacio de forma gratuita. Si no puede encontrar ponentes de su país, invite a ponentes en línea, pero reúna a la gente físicamente. Es fundamental mantener a su público físicamente presente en un lugar.
+- **Colabore con comunidades tecnológicas existentes**. Si existen grupos de desarrolladores, ecosistemas de empresas emergentes o encuentros sobre cadenas de bloques, colabore con ellos para introducir temas relacionados con Ethereum y ampliar su alcance.
+- **Comparta contenido educativo** sobre el potencial de Ethereum.
+- **Contacte con comunidades globales**. Conecte con grupos y proyectos de Ethereum consolidados en todo el mundo para obtener apoyo, asesoramiento y posibles colaboraciones. Las comunidades Ethereum de todo el mundo tienen al menos una cosa en común: todas están deseosas de ayudar.
+- **Intente conseguir financiación**: ya sea de empresas locales de web3 o a través de algún programa de subvenciones como [ESP](https://esp.ethereum.foundation/).
+
+### Si es el caso, cómo mantenerla y hacerla crecer {#if-yes-how-to-maintain-and-grow-it}
+
+Una vez que cuente con una comunidad consolidada, el trabajo no se detiene —de hecho, solo acaba de empezar—. Mantener una comunidad activa, comprometida y en crecimiento requiere un esfuerzo y una creatividad constantes. Uno de los elementos clave para mantener a la comunidad involucrada es que debe experimentar constantemente con nuevos formatos e ideas.
+
+A continuación, se presentan algunas estrategias para mantener una comunidad de Ethereum dinámica:
+
+- **Diversifique los formatos de sus eventos:** no solo se limite a un tipo de reunión. Combine cosas como encuentros, hackatones cortos, mesas redondas y eventos para establecer contactos. Puede intentar organizar jornadas de trabajo cooperativo o cursos educativos.
+- **Diversifique los temas**: Ethereum no es solo una tecnología, sino también un conjunto de valores que incluye cuestiones legales, de mercadotecnia y comerciales.
+- **Pídale a su comunidad** comentarios e ideas.
+- **Interactúe con diferentes públicos**. Adapte el contenido y los eventos a diferentes niveles de experiencia, desde principiantes que exploran Ethereum por primera vez hasta desarrolladores y emprendedores experimentados.
+
+Al ofrecer diversas oportunidades de aprendizaje, colaboración y crecimiento, se asegura de que su comunidad se mantenga activa y preparada para iniciativas más grandes, como organizar una conferencia.
+
+## Evento {#event}
+
+### ¿Cuándo es el momento adecuado para organizar un evento? {#when-is-the-right-time-to-organize-an-event}
+
+Organizar una conferencia de Ethereum o un evento comunitario exitoso requiere una meticulosa planificación y reflexión. El momento adecuado depende de multitud de factores que contribuyen al éxito general del evento.
+
+Debe tener en cuenta la madurez de la comunidad, las condiciones del mercado, si tiene un equipo organizado y si existe una escena local (por ejemplo, posibles patrocinadores).
+
+### Conozca a su comunidad {#kyc-know-your-community}
+
+Uno de los pasos más importantes al organizar un evento es entender a su comunidad. Al igual que el «conozca a su cliente» (KYC) en servicios financieros, «conozca a su comunidad» significa dedicar tiempo a comprender las necesidades, preferencias y características específicas de su público local. Esta comprensión le ayudará a adecuar la conferencia para garantizar su éxito y relevancia.
+
+Es tentador aspirar a organizar un evento a gran escala de golpe, pero empezar a pequeña escala suele ser la mejor estrategia. Sabrá cuál es la mejor solución para usted si analiza objetivamente el estado de su comunidad y otros aspectos que pueden parecerle irrelevantes, como si su país es un destino turístico popular o el coste del alojamiento.
+
+En el primer año, la mayor parte de su público será una comunidad local, por lo que todo lo que haga durante el primer año en que organiza un evento mayor deberá adaptarse a las necesidades y al tamaño de esa comunidad.
+
+### Por dónde empezar {#where-to-start}
+
+Cuando se trata de organizar una conferencia, los primeros pasos pueden parecer abrumadores. Pero con un plan y una estructura claros, puede estructurar el proceso en tareas manejables. Analizaremos cada una de estas.
+
+Empezar con un enfoque estructurado le ayudará a mantenerse organizado y reducir el estrés a medida que avance por las distintas etapas de la organización de su evento. Cada decisión que tome debería acercarle más a ofrecer una experiencia que satisfaga las necesidades de su comunidad.
+
+**Lo primero es crear un equipo organizador con funciones y responsabilidades bien definidas.**
+
+Otro paso importante antes de empezar a crear un programa o ponerse en contacto con patrocinadores es elegir una fecha. Aunque parece un paso fácil, hay algunos factores importantes que debe considerar de antemano. He aquí algunos de ellos:
+
+- **Evite fechas que coincidan** con conferencias o eventos importantes
+- **Tenga en cuenta las condiciones y circunstancias locales** (como la estación del año, los días festivos significativos, etc.)
+- **Tenga en cuenta las condiciones del mercado**
+- **Tómese el tiempo necesario para organizarlo todo**: al menos nueve meses
+
+### ¿Cómo reunir un equipo? {#how-to-assemble-a-team}
+
+Elija a personas que compartan su visión y complementen sus habilidades. Algunos equipos funcionan como colectivos, mientras que otros tienen roles definidos. Descubra lo que mejor le funcione. Es esencial mantener una comunicación frecuente y tener claras las expectativas. Aunque es tentador recurrir a plataformas de comunicación para la planificación de eventos, le sugerimos que elija una plataforma de gestión de tareas (como Notion, Basecamp, Trello, Asana o incluso las típicas hojas de cálculo de Google) para organizar y realizar un seguimiento de lo que hay que hacer. Es fundamental contar con un equipo que funcione y esté bien organizado.
+
+Los diferentes equipos organizadores de Ethereum tienen diferentes funciones en sus equipos, pero todos tienen en común personas que trabajan en cuestiones logísticas, de presupuestos, promoción, programación, diseño y colaboraciones.
+
+### El programa: un elemento clave de un evento exitoso {#the-program-a-key-element-of-a-successful-event}
+
+Cuando se trata de organizar una conferencia verdaderamente valiosa y memorable, **el programa lo es todo**. Este no es un ámbito que pueda permitirse comprometer. Aunque los patrocinadores son importantes y a menudo cruciales para financiar el evento, la experiencia del público y el valor que este recibe deben tener siempre prioridad. Un programa repleto de contenido publicitario y presentaciones interminables de patrocinadores distanciará a sus asistentes y socavará la credibilidad de su evento.
+
+Cada sesión, mesa redonda y taller debe informar, inspirar y enganchar a la comunidad. Escuche a su público: comprenda sus intereses, necesidades y dificultades. ¿Qué temas les interesan? Al mismo tiempo, introduzca perspectivas novedosas y formatos innovadores para mantener el programa dinámico. Trate de encontrar un equilibrio entre temas conocidos y de actualidad con ideas innovadoras, garantizando una agenda polifacética que aborde diferentes aspectos del ecosistema de Ethereum —desde análisis técnicos profundos y sesiones sobre creación de comunidades hasta discusiones sobre políticas y talleres prácticos. Asimismo, tenga en cuenta el idioma de la conferencia. Aunque el inglés es el idioma por defecto en la mayoría de los eventos de Ethereum, ofrecer sesiones en el idioma local puede hacer que el evento sea más accesible para los desarrolladores y entusiastas locales.
+
+**A la hora de elegir a los ponentes, abra la convocatoria al menos seis meses antes de la conferencia para atraer propuestas de alta calidad y disponer de tiempo suficiente para elaborar el programa.** La persona responsable de la selección de ponentes debe tener una amplia experiencia en el sector y un profundo conocimiento del ecosistema. Esto garantiza que pueda identificar contribuciones valiosas y perspicaces, y mantener un alto nivel de calidad para el contenido.
+
+### Dónde encontrar apoyo financiero {#where-to-find-financial-support}
+
+Organizar una conferencia de alta calidad conlleva gastos importantes: el alquiler de la sede, los materiales promocionales, comida y bebida, la producción y un montón de otros gastos. Conseguir apoyo financiero desde el principio es esencial para garantizar que su evento cumpla con los estándares profesionales y ofrezca una gran experiencia a los asistentes.
+
+#### ¿Cómo crear una presentación para patrocinadores? {#how-to-create-a-sponsorship-deck}
+
+Antes de nada, va a necesitar una presentación. **Pida consejo a otros organizadores de conferencias**, incluso para que compartan sus presentaciones y pueda crear sus planes para patrocinadores basándose en ellas. Debe ser realista a la hora de fijar los precios de los planes y proponerse cubrir los costes, no ganar dinero, sobre todo al principio.
+
+**Cada presentación de patrocinio debe ofrecer una visión general clara y atractiva del evento**, lo que asegura que los posibles patrocinadores comprendan su alcance, enfoque y valor. Comience con los aspectos fundamentales: el lugar, la fecha y los detalles sobre el equipo organizador para dar credibilidad. A continuación, destaque el tema principal del evento, ya que cada conferencia sobre Ethereum está dirigida a un público diferente. Algunas están muy dirigidas a los desarrolladores y ofrecen debates técnicos profundos, mientras que otras pueden centrarse más en DeFi, DAO o temas relacionados con política.
+
+Más allá de describir el evento, defina expectativas claras. **Indique el número previsto de asistentes y los ponentes destacados ya confirmados**, pues esto ayuda a los patrocinadores a evaluar su alcance potencial. Y lo que es más importante, defina claramente qué recibirán a cambio de su patrocinio: espacio en expositores, oportunidades para dar charlas, promoción en redes sociales, visibilidad de marca o acceso exclusivo a redes de contactos. Una presentación bien estructurada no solo informa, sino que también ilusiona a los posibles patrocinadores con la oportunidad de formar parte de su evento.
+
+#### ¿Quién podría apoyar su evento? {#who-might-support-your-event}
+
+Empiece poniéndose en contacto con empresas del ecosistema tecnológico y de Ethereum en su ciudad o país. Estas **organizaciones suelen tener un interés particular en apoyar eventos locales** que fomenten el crecimiento y la innovación de la comunidad. También son más propensas a reconocer el valor de invertir en el ecosistema local y ven su conferencia como una oportunidad para conectar con talento, socios y usuarios.
+
+Una vez que haya obtenido apoyo local, amplíe su alcance a los actores globales del mundo Web3. **Pprotocolos consolidados, organizaciones autónomas descentralizadas y fondos del ecosistema suelen destinar presupuestos a eventos organizados por la comunidad**. Esto puede ser un poco complicado para los organizadores novatos, ya que aún no cuentan con una trayectoria que mostrar, pero intente elaborar un paquete de patrocinio atractivo que describa claramente las ventajas de apoyar su evento: visibilidad de la marca, oportunidades para dar charlas y una vinculación significativa con un público objetivo. Trate de encontrar su valor único que otros quizá no tengan.
+
+#### Formas alternativas de financiar su evento {#alternative-forms-of-funding-your-event}
+
+Las subvenciones son otra fuente potencial de financiación que muchos organizadores pasan por alto. Existen programas como el [Programa de Apoyo al Ecosistema](https://esp.ethereum.foundation/) de Ethereum Foundation y [otras iniciativas de subvenciones](https://ethereum.org/community/grants/#ethereum-grants) para apoyar eventos organizados por la comunidad.
+
+Más allá de los patrocinios financieros, considere las colaboraciones en especie, especialmente para alimentos y bebidas. Las marcas alineadas con la cultura local o la comunidad tecnológica pueden ser excelentes socios para su evento. Las marcas de café, las empresas de bebidas o incluso las pizzerías locales podrían estar dispuestas a proporcionar productos a cambio de visibilidad en el evento. Estas colaboraciones pueden ayudar a reducir los costes a la vez que mejoran la experiencia de los asistentes.
+
+Ya que hablamos de finanzas, recuerde esto: cada dólar que invierta en crear una experiencia excepcional para los asistentes se compensará de forma exponencial. Una organización de gran calidad, recintos cómodos, regalos bien pensados y eventos paralelos bien organizados contribuyen a crear una experiencia memorable de la que los participantes seguirán hablando mucho tiempo después de que la conferencia haya terminado. Los asistentes satisfechos se convierten en sus mejores defensores y garantizan el éxito a largo plazo de su evento.
+
+### Logística {#logistics}
+
+Paralelamente a la obtención de financiación, su principal objetivo debería ser la logística. Una conferencia bien organizada requiere una planificación meticulosa de diversos aspectos, desde la preparación de la sede hasta la experiencia de los asistentes. Contar con alguien con un bastante experiencia en la organización de eventos —no necesariamente eventos de Web3, sino eventos en general— puede marcar una gran diferencia. Un responsable de logística con experiencia puede prever posibles problemas y resolverlos antes de que se conviertan en problemas, ahorrando tiempo, dinero y estrés.
+
+La persona responsable de la logística debería elegir la sede, la empresa de producción y los diferentes proveedores de comida, bebida y materiales promocionales, así como un sistema de venta de entradas en línea fácil de usar que permita a los asistentes registrarse y pagar también con criptomonedas.
+
+### Infraestructura de la ubicación {#location-infrastructure}
+
+A la hora de elegir la ubicación de su conferencia, es importante pensar más allá del propio recinto y tener en cuenta la infraestructura general de la ciudad y del país. Factores como el clima, la facilidad de desplazamiento, la seguridad y el entorno político desempeñan un papel muy importante en la experiencia de los asistentes.
+
+En el caso de los lugares menos conocidos, esto cobra especial importancia. Los asistentes y patrocinadores de todo el mundo deben tener la seguridad de que pueden viajar con facilidad y seguridad. Analice aspectos como la conexión por aeropuerto, el transporte público y las opciones de alojamiento. También es aconsejable tener en cuenta el clima cultural y político de la región para evitar cualquier complicación que pueda disuadir a los participantes internacionales, como la política de visados.
+
+### Cómo promocionar el evento {#how-to-promote-the-event}
+
+Promocionar su evento de manera eficaz es clave para atraer al público adecuado y generar expectación. Una estrategia de promoción bien pensada garantiza que su conferencia obtenga la visibilidad y el respaldo que se merece. El diseño también desempeña un papel importante en su marca, de modo que sin duda debe incluirlo en su presupuesto también.
+
+#### Redes sociales {#social-media}
+
+X.com será la columna vertebral de su promoción en redes sociales. Intente ser activo y constante con sus publicaciones en esta red, pero también participe en diferentes conversaciones, tanto con su cuenta personal como con la cuenta de su organización.
+
+Aunque LinkedIn no parece la opción más clara para promocionarse, a través de ella, puede llegar a un público completamente diferente, o incluso a algunos patrocinadores.
+
+#### Colaboraciones con otras comunidades de Ethereum {#partnerships-with-other-ethereum-communities}
+
+Las colaboraciones con diferentes organizadores de Ethereum pueden ayudarle a ampliar su alcance al aprovechar las redes existentes, especialmente cuando está empezando de cero. Ofrezca descuentos para la comunidad, realice promociones cruzadas con otros eventos e invite a socios a coorganizar eventos paralelos o talleres.
+
+#### Divulgación universitaria {#university-outreach}
+
+Póngase en contacto con las facultades de ingeniería y economía de la localidad a través de clubes estudiantiles o profesores para promocionar el evento. Trabajar con las universidades puede ayudar a atraer a talento joven, investigadores y futuros profesionales del sector, fomentando una conexión más sólida entre el mundo académico y el ecosistema de Ethereum. Esto es particularmente útil si está organizando un hackatón, ya que los estudiantes suelen aportar ideas frescas, entusiasmo y una sólida base técnica.
+
+#### Medios de comunicación {#media}
+
+Póngase en contacto con medios de comunicación y boletines informativos centrados en la Web3 para que cubran el evento. Aunque los medios de comunicación del mundo Web3 esperan recibir un pago por sus artículos de relaciones públicas, puede ofrecerles entradas gratuitas o entrevistas con algunos ponentes y patrocinadores prominentes si no dispone de presupuesto para una promoción de pago. Cree material para relaciones públicas con un comunicado de prensa y algunos elementos visuales listos para su promoción en redes sociales o en un sitio web en diferentes formatos. Además, amplíe el alcance a periodistas locales o incluso a creadores de contenido (siempre que tengan una reputación decente) que puedan cubrir temas tecnológicos, ya que eso puede ser crucial para dar a conocer el evento a un público más amplio. Esto ayuda a cerrar la brecha entre la industria de las criptomonedas y el público en general, atrayendo el interés de las comunidades tecnológicas y empresariales convencionales.
+
+### ¿Debería organizar también un hackatón? {#should-you-organize-a-hackathon-as-well}
+
+Organizar un hackatón puede ser beneficioso, ya que los hackatones pueden ser una excelente manera de involucrar a la comunidad de desarrolladores y fomentar la innovación. También ofrece oportunidades prácticas para colaborar y desarrollar proyectos, lo que podría dar lugar a resultados tangibles para el ecosistema. Los hackatones atraen a desarrolladores que normalmente no suelen asistir a conferencias, pero que están interesados en el reto de crear y probar nuevas ideas. Si su conferencia está destinada a desarrolladores, innovación y proyectos prácticos, organizar un hackatón es la opción ideal.
+
+Pero, antes de organizar uno, piense en si tiene suficientes recursos y tiempo. **Un hackatón requiere importantes recursos en lo que se refiere a tiempo, mano de obra e inversión financiera**. Asegúrese de contar con un equipo dedicado a ello, especialmente si también está gestionando una conferencia. Compruebe también si hay interés en su comunidad. Si su comunidad está más orientada hacia la creación, probablemente tenga sentido organizarlo.
+
+Aunque organizarlo supone muchas ventajas, hay que tener en cuenta que, dependiendo del tamaño de la conferencia, añadir un hackatón puede resultar abrumador. Debe evaluar si gestionar ambas cosas disminuirá la calidad de cualquiera de ellas. Puede optar por un hackatón más pequeño y específico o distribuir los eventos a lo largo de diferentes meses.
+
+### Desafíos (casi inevitables) a los que se enfrentará {#almost-inevitable-challenges-that-you-will-face}
+
+Uno de los mayores retos a la hora de organizar una conferencia, especialmente en el ámbito de Ethereum, es conseguir suficiente financiación. **Muchos organizadores de eventos tienen dificultades para reunir el capital necesario para cubrir los gastos de la sede**, del catering y de otros gastos logísticos. Los patrocinios suele ser esenciales, pero establecer relaciones y convencer a las empresas para que inviertan en su evento puede llevar tiempo. Además, la dificultad de atraer a patrocinadores puede aumentar durante las recesiones económicas, ya que las empresas podrían estar menos dispuestas a invertir en actividades no esenciales.
+
+Gestionar el presupuesto de forma eficaz es clave. **Los gastos imprevistos**, como cambios de la sede de última hora y requisitos técnicos adicionales para el evento, pueden disparar rápidamente su presupuesto.
+
+Para los nuevos eventos **conseguir ponentes de gran calidad puede resultar especialmente difícil**. Las personas influyentes o los líderes de opinión establecidos en el mundo de Ethereum podrían tener ya agendas muy apretadas y mostrarse reacios a involucrarse en un nuevo evento sin una trayectoria probada. Prepárese para dedicar tiempo a tejer una red contactos y contactar con posibles ponentes mucho antes del evento.
+
+Asimismo, en lo que respecta a los ponentes, mantenga una comunicación clara y constante con ellos: establezca la fecha límite para enviar las presentaciones y evite cualquier cambio de última hora.
+
+Una conferencia exitosa requiere un equipo entregado que pueda encargarse de la logística, la mercadotecnia, los patrocinios, el soporte técnico y la gestión de los asistentes. Encontrar personas con experiencia en la organización de eventos tecnológicos puede ser complicado, especialmente si cuenta con poco presupuesto o, en la mayoría de los casos, sin presupuesto alguno, sino con el apoyo de voluntarios.
+
+### No debería hacerlo solo. Necesita voluntarios. {#you-shouldnt-do-it-alone-you-need-volunteers}
+
+Organizar un evento de Ethereum requiere un equipo diverso y dedicado que se encargue de la logística, las inscripciones, la coordinación de los ponentes, la asistencia a los asistentes y mucho más. Con equipos formados únicamente por entre 3 y 15 personas, queda claro que los voluntarios son esenciales para el buen funcionamiento del evento.
+
+Los voluntarios suelen ser el pilar fundamental de muchas conferencias, ya que proporcionan un apoyo fundamental, especialmente cuando se trabaja con un presupuesto limitado. Pueden encargarse de todo, desde atender los puestos de registro hasta ayudar con la organización del evento, asegurándose de que el evento salga lo mejor posible.
+
+Aunque es difícil ofrecer una compensación económica a los voluntarios, es esencial proporcionarles algo de valor que haga que su experiencia merezca la pena. Considere ofrecerles oportunidades para establecer contactos y desarrollar habilidades, así como algunas ventajas exclusivas, certificados o cartas de recomendación.
+
+### Aspectos esenciales del cumplimiento normativo para organizadores de eventos {#compliance-essentials-for-event-organizers}
+
+A la hora de organizar un evento, hay varias consideraciones legales y logísticas esenciales que hay que tener en cuenta:
+
+- **Acuerdo de patrocinio**: asegúrese de tener un contrato claro para los patrocinadores, que incluya una política de cancelación bien definida.
+- **Código de conducta**: prepare un código de conducta adaptado al tipo de evento en concreto (conferencia/hackatón, casas de hackers, etc.).
+- **Política de privacidad**: redacte una política de privacidad para su sitio web con el fin de cumplir con la normativa de protección de datos y de imagen
+- **Avisar a las autoridades locales**: incluso si su evento es una reunión a puerta cerrada, es recomendable notificárselo a la comisaría de policía local.
+- **Acuerdo de venta de entradas**: establezca un acuerdo formal con su proveedor de servicios de venta de entradas para aclarar los términos y responsabilidades.
+- **Cumplimiento normativo**: compruebe con antelación si el país en el que se organizará la conferencia tiene normativas o restricciones específicas para la industria de las criptomonedas.
+- **Autorización de aduanas para mercancías**: si va a importar productos de patrocinadores, se recomienda contratar a un agente de Aduanas para que se encargue del proceso de manera eficiente.
+- **Política sobre fotos y medios de comunicación**: defina claramente las pautas sobre hacer fotos y la cobertura mediática, asegurándose de que los participantes estén bien informados sobre las opciones de consentimiento y rechazo.
+
+## Después del evento: ¿Qué hacer luego? {#after-the-event-whats-next}
+
+Una vez finalizado el evento, es fundamental recopilar las opiniones de los asistentes, ponentes y patrocinadores, y elaborar un informe interno para que pueda estar mejor preparado para futuros eventos. Esto ayuda a identificar qué salió bien y dónde se pueden realizar mejoras. Utilice encuestas o entrevistas individuales para recopilar perspectivas valiosas que le sirvan de guía en futuras ediciones. Tómese el tiempo necesario para revisar los posibles errores o ámbitos con ineficiencias, ya que pueden evitarse en la próxima conferencia, lo que simplificará el proceso.
+
+La clave es mantener vivo el impulso. Siga comunicándose con su comunidad, comparta novedades sobre los avances que está logrando gracias a sus sugerencias y genere entusiasmo de cara al siguiente evento. Al mantener esta conexión, garantiza que el impacto de la conferencia se extienda más allá del evento en sí, fortaleciendo las relaciones y sentando las bases para futuros éxitos.
+
+## Reconocimientos {#acknowledgement}
+
+Nuestro agradecimiento especial a todos los que han contribuido a este artículo compartiendo sus perspectivas: Slavo Fabisik, de ETHBratislava; Lola, de ETH Kipu y ETH Latam; Tanja Mladenovic, de ETH Belgrade; Juan David, de Ethereum Bogota; Monika Zając, de ETHWarsaw; Raffaele Orefice, de NapulETH; Xiao Wu(Ling), de ETH Riyadh; Marco, de urbe.eth; Caolán Walsh, de ETH Dublin; Alex Males, de ETHCluj; y Stanko Devic, de ETH Slovenia.
+
+## Recursos {#resources}
+
+Pódcast: cómo organizar y promocionar un evento de ETH de principio a fin:
+
+- [El estudio de caso de ETHWarsaw, por Out of Ordinary](https://www.youtube.com/watch?v=io2Dx1ouz8o)
+
+Espacio de Twitter:
+
+- 
+
+Artículos:
+
+- [Construir ETHKL, por Danny H.](https://sekto.tech/ethkl24)
+- [Manual de creación de eventos de POKT](https://docs.pokt.network/community/pokt-events-playbook)
From d0509e31bdfb3cfb0da82649febbe9a1d7c15262 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:45:44 -0300
Subject: [PATCH 002/589] update(i18n): src/intl/es/page-layer-2-networks.json
From 8b2d96bb83769d512200701dc6bca3a54b48c775 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:45:46 -0300
Subject: [PATCH 003/589] update(i18n):
public/content/translations/es/developers/docs/oracles/index.md
---
.../es/developers/docs/oracles/index.md | 187 +++++++++---------
1 file changed, 95 insertions(+), 92 deletions(-)
diff --git a/public/content/translations/es/developers/docs/oracles/index.md b/public/content/translations/es/developers/docs/oracles/index.md
index 4432d54fcaa..ca45cae1cd3 100644
--- a/public/content/translations/es/developers/docs/oracles/index.md
+++ b/public/content/translations/es/developers/docs/oracles/index.md
@@ -1,50 +1,50 @@
---
-title: Oráculos
+title: Oracles
description: Los oráculos proporcionan a los contratos inteligentes de Ethereum acceso a los datos del mundo real para aprovechar más casos de uso y otorgar mayor valor a los usuarios.
lang: es
---
-Los oráculos son aplicaciones que producen fuentes de datos que ponen a disposición de la cadena de bloques fuentes de datos fuera de cadena para contratos inteligentes. Se necesitan, ya que los contratos inteligentes basados en Ethereum no pueden, por defecto, acceder a información almacenada fuera de la red de cadena de bloques.
+Los oráculos son aplicaciones que producen fuentes de datos que ponen a disposición de la cadena de bloques fuentes de datos externas a la cadena para su uso en contratos inteligentes. Se necesitan, ya que los contratos inteligentes basados en Ethereum no pueden, por defecto, acceder a información almacenada fuera de la red de cadena de bloques.
-Proporcionar a los contratos inteligentes la capacidad de ejecutarse usando datos de fuera de la cadena extiende la utilidad y el valor de las aplicaciones descentralizadas. Por ejemplo, los mercados de predicción en cadena dependen de los oráculos para proporcionar información sobre los resultados usados para validad las predicciones del usuario. Supongamos que Alice apuesta 20 ETH sobre quién será el próximo presidente de EE.UU. En ese caso, la dapp del mercado de predicciones necesita un oráculo para confirmar los resultados de las elecciones y determinar si Alice puede recibir el pago.
+Dar a los contratos inteligentes la capacidad de ejecutarse utilizando datos fuera de la cadena consigue ampliar la utilidad y el valor de las aplicaciones descentralizadas. Por ejemplo, los mercados de predicción en la cadena dependen de oráculos para proporcionar información sobre los resultados que utilizan para validar las predicciones de los usuarios. Supongamos que Alice apuesta 20 ETH sobre quién será el próximo presidente de EE.UU. En ese caso, la dapp del mercado de predicciones necesita un oráculo para confirmar los resultados de las elecciones y determinar si Alice puede recibir el pago.
## Requisitos previos {#prerequisites}
-Esta página asume que el lector está familiarizado con los fundamentos de Ethereum, incluyendo [nodos](/developers/docs/nodes-and-clients/), [mecanismos de consenso](/developers/docs/consensus-mechanisms/)y la [EVM](/developers/docs/evm/). También debe tener un buen entendimiento de [contratos inteligentes](/developers/docs/smart-contracts/) y [anatomía de un contrato inteligente](/developers/docs/smart-contracts/anatomy/), especialmente [eventos](/glossary/#events).
+Esta página asume que el lector está familiarizado con los fundamentos de Ethereum, incluidos los [nodos](/developers/docs/nodes-and-clients/), [mecanismos de consenso](/developers/docs/consensus-mechanisms/) y la [EVM](/developers/docs/evm/). También debe tener un buen entendimiento de los [smart contracts](/developers/docs/smart-contracts/) y de la [anatomía de los smart contracts](/developers/docs/smart-contracts/anatomy/), especialmente de los [eventos](/glossary/#events).
## ¿Qué es un oráculo de la cadena de bloques? {#what-is-a-blockchain-oracle}
-Los oráculos son aplicaciones que consiguen, verifican y transmiten información externa (es decir, información almacenada fuera de la cadena) a contratos inteligentes que se ejecutan en la cadena de bloques. Además de extraer la información fuera de la cadena y transmitirla en Ethereum, los oráculos también envían información desde la cadena de bloques a sistemas externos, por ejemplo, desbloqueando un bloqueo inteligente cuando el usuario envía una comisión a través de una transacción de Ethereum.
+Los oráculos son aplicaciones que obtienen, verifican y transmiten información externa (es decir, información almacenada fuera de la cadena) a los smart contracts que se ejecutan en la blockchain. Además de «obtener» datos fuera de la cadena y transmitirlos en Ethereum, los oráculos también pueden «enviar» información desde la cadena de bloques a sistemas externos, por ejemplo, desbloqueando una cerradura inteligente una vez que el usuario envíe una tarifa a través de una transacción de Ethereum.
-Sin un oráculo, un contrato inteligente estaría limitado completamente a la información que se encuentra en la cadena.
+Sin un oráculo, un contrato inteligente estaría limitado completamente a los datos en la cadena.
-Los oráculos difieren en función de la fuente de datos (una o varias fuentes), los modelos de confianza (centralizados o descentralizados) y la arquitectura del sistema (inmediato-lectura, publicación-suscripción y solicitud-respuesta). También podemos distinguir entre oráculos basados en si recuperan datos externos para el uso de contratos en cadena (oráculos de entrada), envían información de la cadena de bloques a aplicaciones fuera de la cadena (oráculos de salida) o realizan tareas computacionales fuera de la cadena (oráculos computacionales).
+Los oráculos difieren en función de la fuente de datos (una o varias fuentes), los modelos de confianza (centralizados o descentralizados) y la arquitectura del sistema (inmediato-lectura, publicación-suscripción y solicitud-respuesta). También podemos distinguir entre oráculos según si recuperan datos externos para que los utilicen contratos en la cadena (oráculos de entrada), envían información desde la cadena de bloques a aplicaciones fuera de la cadena (oráculos de salida), o realizan tareas computacionales fuera de la cadena (oráculos computacionales).
## ¿Por qué los contratos inteligentes necesitan oráculos? {#why-do-smart-contracts-need-oracles}
-Muchos desarrolladores ven a los contratos inteligentes como código ejecutándose en direcciones específicas en la cadena de bloques. Sin embargo, una visión [ más general de los contratos inteligentes](/smart-contracts/) es que son programas informáticos autoejecutables, con la capacidad de hacer cumplir acuerdos entre varias partes, una vez que se cumplan las condiciones, por eso se denominan «contratos inteligentes».
+Muchos desarrolladores ven a los contratos inteligentes como código ejecutándose en direcciones específicas en la cadena de bloques. Sin embargo, una [visión más general de los smart contracts](/smart-contracts/) es que son programas de software autoejecutables capaces de hacer cumplir acuerdos entre partes una vez que se cumplen condiciones específicas; de ahí el término "smart contracts".
-Pero usar contratos inteligentes para hacer cumplir acuerdos entre personas no es fácil, dado que Ethereum es determinista. Un [sistema determinista](https://en.wikipedia.org/wiki/Deterministic_algorithm) es un sistema que siempre produce los mismos resultados dado un estado inicial y una entrada en particular, lo que indica no hay aleatoriedad ni variación en el proceso de cálculo de resultados a partir de entradas.
+Pero usar contratos inteligentes para hacer cumplir acuerdos entre personas no es fácil, dado que Ethereum es determinista. Un [sistema determinista](https://en.wikipedia.org/wiki/Deterministic_algorithm) es aquel que siempre produce los mismos resultados dado un estado inicial y una entrada particular, lo que significa que no hay aleatoriedad ni variación en el proceso de cálculo de salidas a partir de entradas.
-Para lograr la ejecución determinista, las cadenas de bloques limitan los nodos a alcanzar un consenso sobre preguntas binarias simples (verdadero/falso) usando _solo_ datos almacenados en la propia cadena de bloques. Ejemplos de estas preguntas incluyen:
+Para lograr la ejecución determinista, las blockchains limitan a los nodos a llegar a consenso únicamente sobre preguntas binarias (verdadero/falso) usando _solo_ datos almacenados en la propia blockchain. Ejemplos de estas preguntas incluyen:
- “¿Firmó el propietario de la cuenta (identificado por una clave pública) esta transacción con la clave privada emparejada?”
- “¿Esta cuenta tiene fondos suficientes para cubrir la transacción?”
- “¿Es esta transacción válida en el contexto de este contrato inteligente?”, etc.
-Si las cadenas de bloques han recibido información de fuentes externas (como por ejemplo, del mundo real), el determinismo sería imposible de lograr, lo que evitaría que los nodos se pusieran de acuerdo sobre la validez de los cambios en el estado de la cadena de bloques. Tomemos por ejemplo un contrato inteligente que ejecuta una transacción basada en el tipo de cambio actual ETH-USD obtenido de una API de precios tradicional. Es probable que esta figura cambie con frecuencia (por no mencionar que la API puede quedar obsoleta o hackeada), significando que los nodos ejecutando el mismo código de contrato pueden llegar a resultados diferentes.
+Si las cadenas de bloques recibieran información de fuentes externas (o sea, del mundo real), el determinismo sería imposible de lograr, evitando así que los nodos acordaran sobre la validez de los cambios en el estado de la cadena de bloques. Tomemos por ejemplo un contrato inteligente que ejecuta una transacción basada en el tipo de cambio actual ETH-USD obtenido de una API de precios tradicional. Es probable que esta figura cambie con frecuencia (por no mencionar que la API puede quedar obsoleta o hackeada), significando que los nodos ejecutando el mismo código de contrato pueden llegar a resultados diferentes.
Para una cadena de bloques pública como Ethereum, con miles de nodos alrededor del mundo procesando transacciones, el determinismo es crítico. Sin una autoridad central funcionando como una fuente de la verdad, los nodos necesitan mecanismos para llegar al mismo estado luego de aplicar las mismas transacciones. Un caso en el que el nodo A ejecuta el código de un contrato inteligente y obtiene "3" como resultado, mientras que el nodo B obtiene "7" después de ejecutar la misma transacción causaría que el consenso se rompa y eliminaría el valor de Ethereum como plataforma de computación descentralizada.
-Esta situación también pone de relevancia un problema con el diseño de cadenas de bloques para extraer información de fuentes externas. Sin embargo, los oráculas resuelven este problema tomando información de fuentes fuera de la cadena y almacenándola en la cadena de bloques para que los contratos inteligentes la consumen. Puesto que la información almacenada en la cadena es inalterable y está disponible públicamente, los nodos de Ethereum pueden usar de forma segura los datos fuera de la cadena importados por el oráculo para calcular los cambios de estado sin romper el consenso.
+Esta situación también pone de relevancia un problema con el diseño de cadenas de bloques para extraer información de fuentes externas. Los oráculos, sin embargo, resuelven este problema tomando información de fuentes fuera de la cadena y almacenándola en la cadena de bloques para que los contratos inteligentes la consuman. Dado que la información almacenada en la cadena es inalterable y se encuentra disponible de forma pública, los nodos de Ethereum pueden usar de manera segura los datos importados desde oráculos fuera de la cadena para calcular los cambios de estado sin romper el consenso.
-Para ello, un oráculo se compone típicamente de un contrato inteligente que corre en la cadena y algunos componentes fuera de la cadena. El contrato en cadena recibe solicitudes de datos de otros contratos inteligentes, que pasa al componente fuera de la cadena (llamado nodo oráculo). Este nodo de oráculo puede consultar fuentes de datos (usando interfaces de programación de aplicaciones, por ejemplo) y enviar transacciones para almacenar los datos solicitados en el almacenamiento del contrato inteligente.
+Para ello, un oráculo generalmente está compuesto por un contrato inteligente que se ejecuta en la cadena y algunos componentes fuera de ella. El contrato en la cadena recibe solicitudes de datos de otros contratos inteligentes, que luego pasa a un componente fuera de la cadena (llamado nodo oráculo). Este nodo de oráculo puede consultar fuentes de datos (usando interfaces de programación de aplicaciones, por ejemplo) y enviar transacciones para almacenar los datos solicitados en el almacenamiento del contrato inteligente.
-Esencialmente, un oráculo de cadena de bloques es un puente entre la brecha de información entre la cadena de bloques y el entorno externo, lo que crea “contratos inteligentes híbridos”. Un contrato inteligente híbrido funciona en función de una combinación de código de contrato en cadena e infraestructura fuera de la cadena. Los mercados de predicción descentralizados son un excelente ejemplo de contratos inteligentes híbridos. Otros ejemplos podrían ser los contratos inteligentes de seguros de cosechas que pagan cuando un conjunto de oráculos determinan que se han producido ciertas condiciones meteorológicas.
+Esencialmente, un oráculo de cadena de bloques es un puente entre la brecha de información entre la cadena de bloques y el entorno externo, lo que crea “contratos inteligentes híbridos”. Un contrato inteligente híbrido es aquel que funciona basado en una combinación de código de contrato en la cadena e infraestructura fuera de esta. Los mercados de predicción descentralizados son un excelente ejemplo de contratos inteligentes híbridos. Otros ejemplos podrían ser los contratos inteligentes de seguros de cosechas que pagan cuando un conjunto de oráculos determinan que se han producido ciertas condiciones meteorológicas.
## ¿Cuál es el problema de los oráculos? {#the-oracle-problem}
-Los oráculos solucionan un problema importante, aunque también introducen algunas complicaciones, como por ejemplo:
+Los oráculos resuelven un problema importante, pero también introducen algunas complicaciones, por ejemplo:
- ¿Cómo verificamos si la información inyectada se extrajo de la fuente correcta o si fue manipulada?
@@ -54,11 +54,11 @@ El llamado "problema de los oráculos" demuestra los problemas que conlleva el u
Diferentes oráculos ofrecen diferentes soluciones al problema del oráculo, que exploraremos más adelante. Los oráculos suelen ser evaluados sobre lo bien que manejan los siguientes desafíos:
-1. **Corrección**: Un oráculo no debe causar que los contratos inteligentes provoquen cambios de estado con base en datos no válidos fuera de la cadena. Un oráculo debe garantizar la _autenticidad_ e _integridad_ de los datos. La autenticidad significa que los datos se obtuvieron de la fuente correcta, mientras que la integridad significa que los datos permanecieron intactos (es decir, que no se alteraron) antes de enviarse en cadena.
+1. **Corrección**: Un oráculo no debe hacer que los smart contracts desencadenen cambios de estado basándose en datos offchain inválidos. Un oráculo debe garantizar la _autenticidad_ y la _integridad_ de los datos. Autenticidad significa que los datos se obtuvieron de la fuente correcta, mientras que integridad indica que los datos se mantuvieron intactos (es decir, no fueron alterados) antes de ser enviados onchain.
-2. **Disponibilidad**: Un oráculo no debe retrasar o impedir que los contratos inteligentes ejecuten acciones y activen cambios de estado. Esto significa que los datos de un oráculo deben estar _disponibles a petición_ sin interrupción.
+2. **Disponibilidad**: Un oráculo no debe retrasar o impedir que los smart contracts ejecuten acciones y desencadenen cambios de estado. Esto significa que los datos provenientes de un oráculo deben estar _disponibles bajo demanda_ sin interrupción.
-3. **Compatibilidad con incentivos**: Un oráculo debe fomentar que proveedores de datos fuera de la cadena envíen información correcta a los contratos inteligentes. La compatibilidad con incentivos implica _atribuibilidad_ y _responsabilidad_. La atribuibilidad permite vincular una información externa a su proveedor, mientras que la rendición de cuentas vincula a los proveedores de datos con la información que proporcionan, para que puedan ser recompensados o penalizados en función de la calidad de la información proporcionada.
+3. **Compatibilidad de incentivos**: Un oráculo debe incentivar a los proveedores de datos offchain a enviar información correcta a los smart contracts. La compatibilidad de incentivos implica _atribuibilidad_ y _responsabilidad_. La atribuibilidad permite vincular una información externa a su proveedor, mientras que la rendición de cuentas vincula a los proveedores de datos con la información que proporcionan, para que puedan ser recompensados o penalizados en función de la calidad de la información proporcionada.
## ¿Cómo funciona un servicio de oráculo de cadena de bloques? {#how-does-a-blockchain-oracle-service-work}
@@ -78,11 +78,11 @@ Los usuarios son entidades (es decir, contratos inteligentes) que necesitan info
### Contrato de oráculo {#oracle-contract}
-El contrato de oráculo es el componente en cadena para el servicio del oráculo. Escucha las solicitudes de datos de otros contratos, retransmite las consultas de datos a los nodos del oráculo y transmite los datos devueltos a los contratos de los clientes. Este contrato también puede realizar algunos cálculos en los puntos de datos devueltos para producir un valor añadido que enviar al contrato solicitante.
+El contrato del oráculo es el componente de la cadena de bloques para este servicio. Escucha las solicitudes de datos de otros contratos, retransmite las consultas de datos a los nodos del oráculo y transmite los datos devueltos a los contratos de los clientes. Este contrato también puede realizar algunos cálculos en los puntos de datos devueltos para producir un valor añadido que enviar al contrato solicitante.
-El contrato de oráculo expone algunas funciones que los contratos de cliente invocan al realizar una solicitud de datos. Tras recibir una nueva consulta, el contrato inteligente emitirá un [evento de registro](/developers/docs/smart-contracts/anatomy/#events-and-logs) con detalles de la solicitud de datos. Esto notifica a los nodos fuera de cadena suscritos al registro (generalmente usando algo como el comando JSON-RPC `eth_subscribe`), que proceden a recuperar los datos definidos en el evento de registro.
+El contrato de oráculo expone algunas funciones que los contratos de cliente invocan al realizar una solicitud de datos. Al recibir una nueva consulta, el smart contract emitirá un [evento de registro](/developers/docs/smart-contracts/anatomy/#events-and-logs) con los detalles de la solicitud de datos. Esto notifica a los nodos fuera de la cadena que están suscritos al registro (generalmente utilizando algo como el comando JSON-RPC `eth_subscribe`), quienes proceden a recuperar los datos definidos en el evento de registro.
-A continuación se muestra un [ejemplo de contrato de oráculo](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) proporcionado por Pedro Costa. Este es un simple servicio de oráculo que puede consultar API fuera de la cadena a petición de otros contratos inteligentes y almacenar la información solicitada en la cadena de bloques:
+A continuación se muestra un [ejemplo de contrato oráculo](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) de Pedro Costa. Este es un sencillo servicio del oráculo que puede consultar API fuera de la cadena, a petición de otros contratos inteligentes y almacenar la información solicitada en la cadena de bloques:
```solidity
pragma solidity >=0.4.21 <0.6.0;
@@ -196,51 +196,51 @@ contract Oracle {
}
```
-### Nodos de oráculos {#oracle-nodes}
+### Nodos de oráculo {#oracle-nodes}
-El nodo del oráculo es el componente fuera de la cadena del servicio del oráculo. Extrae información de fuentes externas, como API alojadas en servidores de terceros y la pone en la cadena para que la utilicen los contratos inteligentes. Los nodos de oráculo escuchan los eventos del contrato de oráculo en cadena y proceden a completar la tarea descrita en el registro.
+El nodo del oráculo es el componente fuera de la cadena del servicio de oráculo. Extrae información de fuentes externas, como API alojadas en servidores de terceros, y la coloca en la cadena para su consumo por parte de contratos inteligentes. Los nodos del oráculo escuchan los eventos del contrato del oráculo en la cadena y proceden a completar la tarea descrita en el registro.
-Una tarea común de los nodos de oráculo es enviar una solicitud [HTTP GET](https://www.w3schools.com/tags/ref_httpmethods.asp) a un servicio de API, analizar la respuesta para extraer datos relevantes, formatearla en una salida legible para la cadena de bloques y enviarla en cadena incluyéndola en una transacción al contrato de oráculo. También se le podría solicitar al nodo de oráculo que certifique la validez e integridad de la información enviada utilizando “pruebas de autenticidad”, las cuales exploraremos más adelante.
+Una tarea común para los nodos oráculo es enviar una solicitud [HTTP GET](https://www.w3schools.com/tags/ref_httpmethods.asp) a un servicio API, analizar la respuesta para extraer los datos relevantes, formatearla en una salida legible por la blockchain y enviarla onchain incluyéndola en una transacción al contrato oráculo. También se le podría solicitar al nodo de oráculo que certifique la validez e integridad de la información enviada utilizando “pruebas de autenticidad”, las cuales exploraremos más adelante.
-Los oráculos computacionales también dependen de los nodos fuera de la cadena para realizar tareas computacionales que no serían prácticas de ejecutar en cadena, dado el coste del gas y los límites de tamaño de los bloques. Por ejemplo, el nodo de oráculo podría tener la tarea de generar una figura verificablemente aleatoria (por ejemplo, para juegos basados en la cadena de bloques).
+Los oráculos computacionales también dependen de nodos fuera de la cadena para realizar tareas computacionales que serían poco prácticas de ejecutar en la cadena, debido a los costes de gas y los límites del tamaño de bloque. Por ejemplo, el nodo de oráculo podría tener la tarea de generar una figura verificablemente aleatoria (por ejemplo, para juegos basados en la cadena de bloques).
-## Patrones de diseño de los oráculos {#oracle-design-patterns}
+## Patrones de diseño de oráculos {#oracle-design-patterns}
-Los oráculos son de diferentes tipos, incluyendo _inmediato-lectura_,_publicar-suscribir_ y_solicitud-respuesta_, siendo los dos últimos los más populares entre los contratos inteligentes de Ethereum. Aquí describimos brevemente los modelos de publicación-suscripción y solicitud-respuesta.
+Existen diferentes tipos de oráculos, entre ellos _lectura inmediata_, _publicación-suscripción_ y _petición-respuesta_, siendo estos dos últimos los más populares entre los smart contracts en Ethereum. Aquí describimos brevemente los modelos de publicación-suscripción y solicitud-respuesta.
-### Oráculos publicar-suscribir {#publish-subscribe-oracles}
+### Oráculos de publicación-suscripción {#publish-subscribe-oracles}
Este tipo de oráculo expone una «fuente de datos» que otros contratos pueden leer regularmente para obtener información. En este caso se espera que los datos cambien frecuentemente, por lo que los contratos de los clientes deben estar atentos a las actualizaciones de los datos en el almacenamiento del oráculo. Un ejemplo es un oráculo que proporciona la última información de precios de ETH-USD a los usuarios.
-### Oráculos solicitud-respuesta {#request-response-oracles}
+### Oráculos de petición-respuesta {#request-response-oracles}
Una configuración de solicitud-respuesta permite que el contrato del cliente solicite datos arbitrarios distintos de los proporcionados por un oráculo publicación-suscripción. Los oráculos de solicitud-respuesta son idóneos cuando el conjunto de datos es demasiado grande para almacenarse en el almacenamiento de un contrato inteligente, y/o los usuarios solo van a nacesitar una pequeña parte de los datos en cualquier momento.
-Aunque son más complejos que los modelos de publicación-suscripción, los oráculos del tipo solicitud-respuesta son basicamente lo que describimos en la sección anterior. El oráculo tendrá un componente en la cadena que recibe una solicitud de datos y la pasa a un nodo fuera de la cadena para procesarla.
+Aunque son más complejos que los modelos de publicación-suscripción, los oráculos del tipo solicitud-respuesta son basicamente lo que describimos en la sección anterior. El oráculo tendrá un componente en la cadena que recibe una solicitud de datos y la pasa a un nodo fuera de la cadena para su procesamiento.
-Los usuarios que inician la consulta de datos deben cubrir el costo de recuparar la información de la fuente fuera de la cadena. El contrato del cliente también debe de proporcionar fondos para cubrir los costos del gas incurridos por el contrato del oráculo para devolver la respuesta a través de la función callback especificada en la solicitud.
+Los usuarios que inicien consultas de datos deben cubrir el coste de recuperar la información de la fuente fuera de la cadena. El contrato del cliente también debe de proporcionar fondos para cubrir los costos del gas incurridos por el contrato del oráculo para devolver la respuesta a través de la función callback especificada en la solicitud.
-## Oráculos centralizados frente a descentralizados {#types-of-oracles}
+## Oráculos centralizados vs. descentralizados {#types-of-oracles}
### Oráculos centralizados {#centralized-oracles}
-Un oráculo centralizado está controlado por una sola entidad responsable de agregar información fuera de la cadena y actualizar los datos del oráculo según se solicite. Los oráculos centralizados son eficientes, ya que se basan en una única fuente de verdad. Pueden funcionar mejor en los casos en que el propietario publica directamente los conjuntos de datos en propiedad con una firma ampliamente aceptada. Sin embargo, también tienen desventajas:
+Un oráculo centralizado lo controla una única entidad responsable de agregar la información fuera de la cadena y de actualizar los datos del contrato oráculo según se solicite. Los oráculos centralizados son eficientes, ya que se basan en una única fuente de verdad. Pueden funcionar mejor en los casos en que el propietario publica directamente los conjuntos de datos en propiedad con una firma ampliamente aceptada. Sin embargo, también tienen desventajas:
#### Bajas garantías de corrección {#low-correctness-guarantees}
Con los oráculos centralizados, no hay forma de confirmar si la información proporcionada es correcta o no. Incluso los proveedores «de buena reputación» pueden ser malos actores o verse pirateados. Si el oráculo se corrompe, los contratos inteligentes se ejecutarán en función de datos incorrectos.
-#### Poca disponibilidad {#poor-availability}
+#### Baja disponibilidad {#poor-availability}
-No se garantiza que los oráculos centralizados siempre hagan que los datos fuera de la cadena estén disponibles para otros contratos inteligentes. Si el proveedor decide apagar el servicio o un hacker secuestra el componente fuera de la cadena del oráculo, su contrato inteligente corre el riesgo de sufrir un ataque de negación de servicio (DoS).
+Los oráculos centralizados no garantizan que los datos fuera de la cadena siempre estén disponibles para otros contratos inteligentes. Si el proveedor decide apagar el servicio o un hacker secuestra el componente fuera de la cadena del oráculo, su contrato inteligente está en riesgo de un ataque de denegación de servicio (DoS).
-#### Mala compatibilidad con incentivos {#poor-incentive-compatibility}
+#### Baja compatibilidad de incentivos {#poor-incentive-compatibility}
Los oráculos centralizados a menudo tienen incentivos mal diseñados o inexistentes para que el proveedor de datos envíe información precisa e inalterada. Pagar a un oráculo por información precisa o correcta no garantiza honestidad. Este problema aumenta a medida que se incrementa la cantidad de valor que controlan los contratos inteligentes.
### Oráculos descentralizados {#decentralized-oracles}
-Los oráculos descentralizados están diseñados para superar las limitaciones de los oráculos centralizados mediante la eliminación de puntos únicos de falla. Un servicio de oráculo descentralizado consta de múltiples participantes en una red entre pares que forman un consenso sobre datos fuera de la cadena antes de enviarlos a un contrato inteligente.
+Los oráculos descentralizados están diseñados para superar las limitaciones de los oráculos centralizados mediante la eliminación de puntos únicos de falla. Un servicio de oráculo descentralizado comprende múltiples participantes en una red entre semejantes que alcanzan consenso sobre los datos fuera de la cadena antes de enviarlos a un contrato inteligente.
Un oráculo descentralizado debería (idealmente) no tener permiso, no necesitar confianza y estar libre de la administración de una parte central; en realidad, la descentralización entre los oráculos está en un espectro. Existen redes de oráculos semidescentralizadas en las que cualquiera puede participar, pero con un "propietario" que aprueba y elimina nodos en función del rendimiento histórico. Tambien existen redes de oráculos totalmente descentralizadas: por lo general, se ejecutan como cadenas de bloques independientes y tienen mecanismos de consenso definidos para coordinar nodos y castigar el mal comportamiento.
@@ -248,7 +248,7 @@ El uso de oráculos descentralizados tiene los siguientes beneficios:
### Altas garantías de corrección {#high-correctness-guarantees}
-Los oráculos descentralizados intentan lograr la corrección de los datos utilizando diferentes enfoques. Esto incluye el uso de pruebas que acrediten la autenticidad y la integridad de la información devuelta y el requisito de que varias entidades acuerden colectivamente la validez de los datos fuera de la cadena.
+Los oráculos descentralizados intentan lograr la corrección de los datos utilizando diferentes enfoques. Esto incluye el uso de pruebas que atestiguan la autenticidad e integridad de la información devuelta y requiere que múltiples entidades acuerden colectivamente la validez de los datos fuera de la cadena.
#### Pruebas de autenticidad {#authenticity-proofs}
@@ -256,17 +256,17 @@ Las pruebas de autenticidad son mecanismos criptográficos que permiten la verif
Ejemplos de pruebas de autenticidad incluyen:
-**Pruebas de Seguridad de la Capa de Transporte (TLS)**: Los nodos de oráculo a menudo recuperan datos de fuentes externas mediante una conexión HTTP segura basada en el protocolo de Seguridad de la Capa de Transporte (TLS). Algunos oráculos descentralizados utilizan pruebas de autenticidad para verificar las sesiones TLS (es decir, confirmar el intercambio de información entre un nodo y un servidor específico) y confirmar que el contenido de la sesión no se haya alterado.
+**Pruebas de Transport Layer Security (TLS)**: Los nodos oráculo suelen recuperar datos de fuentes externas utilizando una conexión HTTP segura basada en el protocolo Transport Layer Security (TLS). Algunos oráculos descentralizados utilizan pruebas de autenticidad para verificar las sesiones TLS (es decir, confirmar el intercambio de información entre un nodo y un servidor específico) y confirmar que el contenido de la sesión no se haya alterado.
-**Certificaciones de Entorno de Ejecución de Confianza (TEE)**: Un [entorno de ejecución de confianza](https://en.wikipedia.org/wiki/Trusted_execution_environment) (TEE) es un entorno computacional que está aislado de los procesos operativos de su sistema host. Los TEE garantizan que cualquier código de aplicación o datos almacenados/utilizados en el entorno informático conserven la integridad, la confidencialidad y la inmutabilidad. Los usuarios tambien pueden generar una certificación para demostrar que una instancia de la aplicación se está corriendo dentro del entorno de ejecución de confianza.
+**Atestaciones de Trusted Execution Environment (TEE)**: Un [entorno de ejecución confiable](https://en.wikipedia.org/wiki/Trusted_execution_environment) (TEE) es un entorno computacional aislado del resto de los procesos operativos del sistema anfitrión. Los TEE garantizan que cualquier código de aplicación o datos almacenados/utilizados en el entorno informático conserven la integridad, la confidencialidad y la inmutabilidad. Los usuarios tambien pueden generar una certificación para demostrar que una instancia de la aplicación se está corriendo dentro del entorno de ejecución de confianza.
Ciertas clases de oráculos descentralizados requieren que los operadores de nodos de oráculo proporcionen certificaciones de TEE. Esto le confirma a un usuario que el operador del nodo está ejecutando una instancia del oráculo del cliente en un entrono de ejecución confiable. Los TEE evitan que los procesos externos alteren o lean el código y los datos de una aplicación; por lo tanto, esas certificaciones prueban que el nodo del oráculo ha mantenido la información intacta y confidencial.
-#### Validación de información basada en el consenso {#consensus-based-validation-of-information}
+#### Validación de información basada en consenso {#consensus-based-validation-of-information}
-Los oráculos centralizados se basan en una única fuente de verdad cuando proporcionan datos a contratos inteligentes, lo que introduce la posibilidad de publicar información inexacta. Los oráculos descentralizados resuelven este problema al confiar en múltiples nodos de oráculo para consultar información fuera de la cadena. Al comparar datos de múltiples fuentes, los oráculos descentralizados reducen el riesgo de pasar información no válida a los contratos en cadena.
+Los oráculos centralizados se basan en una única fuente de verdad cuando proporcionan datos a contratos inteligentes, lo que introduce la posibilidad de publicar información inexacta. Los oráculos descentralizados resuelven este problema al depender de múltiples nodos de oráculo para consultar información fuera de la cadena. Al comparar datos de múltiples fuentes, los oráculos descentralizados reducen el riesgo de transmitir información inválida a los contratos en la cadena.
-Los oráculos descentralizados, sin embargo, deben de lidiar con las discrepancias en la información recuperada de múltiples fuentes fuera de la cadena. Para minimizar las diferencias en la información y garantizar que los datos pasados al contrato del oráculo reflejen la opinión coletiva de los nodos de oráculo, los oráculos descentralizados utilizan los siguientes mecanismos:
+Los oráculos descentralizados, sin embargo, deben lidiar con discrepancias en la información obtenida de múltiples fuentes fuera de la cadena. Para minimizar las diferencias en la información y garantizar que los datos pasados al contrato del oráculo reflejen la opinión coletiva de los nodos de oráculo, los oráculos descentralizados utilizan los siguientes mecanismos:
##### Votar/apostar por la precisión de los datos
@@ -274,49 +274,49 @@ Algunas redes de oráculos descentralizados requieren que los participantes vote
Los nodos cuyas respuestas se desvían de la respuesta mayoritaria son penalizados con la distribución de sus tokens a otros que proporcionen valores más correctos. Obligar a los nodos a proporcionar un vínculo antes de proporcionar datos incentiva las respuestas honestas, ya que se supone que son actores económicos racionales que intentan maximizar los rendimientos.
-El staking/la votación también protegen a los oráculos descentralizados de los [ataques Sybil](/glossary/#sybil-attack) donde los actores maliciosos crean múltiples identidades para engañar al sistema de consenso. Sin embargo, apostar no puede prevenir "la carga gratuita" (nodos de oráculos que copian datos de otros) y "la validación diferida" (o "lazy validation", nodos de oráculos que siguen a la mayoría sin verificar la información ellos mismos).
+El staking/votación también protege a los oráculos descentralizados de los [ataques Sybil](/glossary/#sybil-attack), donde actores maliciosos crean múltiples identidades para manipular el sistema de consenso. Sin embargo, apostar no puede prevenir "la carga gratuita" (nodos de oráculos que copian datos de otros) y "la validación diferida" (o "lazy validation", nodos de oráculos que siguen a la mayoría sin verificar la información ellos mismos).
##### Mecanismos de punto de Schelling
-[Punto de Shelling](https://en.wikipedia.org/wiki/Focal_point_(game_theory)) es un concepto de la teoría de juegos que asume que múltiples entidades siempre darán por defecto una solución común a un problema en ausencia de cualquier comunicación. Los mecanismos de punto de Shelling se utilizan a menudo en redes de oráculos descentralizados para permitir que los nodos lleguen a un consenso sobre las respuestas a las solicitudes de datos.
+[Punto de Schelling](https://en.wikipedia.org/wiki/Focal_point_\(game_theory\)) es un concepto de teoría de juegos que asume que múltiples entidades siempre optarán por una solución común a un problema en ausencia de comunicación. Los mecanismos de punto de Shelling se utilizan a menudo en redes de oráculos descentralizados para permitir que los nodos lleguen a un consenso sobre las respuestas a las solicitudes de datos.
-Una explicación dada en un principio era la [SchellingCoin](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/), una fuente de datos propuesta en la que los participantes envían respuestas a preguntas «escalar» (preguntas cuyas respuestas se describen por magnitud, por ejemplo, "¿cuál es el precio de ETH?), junto con un depósito. Los usuarios que proporcionen valores entre el [percentil](https://en.wikipedia.org/wiki/Percentile) 25 y 75 son recompensados, mientras que aquellos cuyos valores se desvíen de la media son penalizados.
+Una idea temprana para esto fue [SchellingCoin](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/), un feed de datos propuesto donde los participantes envían respuestas a preguntas "escalares" (preguntas cuyas respuestas se describen por magnitud, por ejemplo, "¿cuál es el precio de ETH?"), junto con un depósito. Los usuarios que proporcionan valores entre el 25 y el 75 [percentil](https://en.wikipedia.org/wiki/Percentile) son recompensados, mientras que aquellos cuyos valores difieren mucho del valor medio son penalizados.
-Si bien SchellingCon no existe en la actualidad, un número de oraculos descentralizados —principalmente los [Oráculos del Protocolo Maker](https://docs.makerdao.com/smart-contract-modules/oracle-module)— usan el mecanismo de punto de Schelling para mejorar la precisión los datos de los oráculos. Cada oráculo Maker consta de una red de nodos P2P fuera de la cadena ("relayers" y "feeds") que suministran precios de mercado para activos colaterales y un contrato "Mediador" en cadena que calcula el promedio de todos los valores proporcionados. Una vez que el periodo de atraso especificado termina, el valor medio se vuelve el nuevo precio de referencia del activo asociado.
+Si bien SchellingCoin no existe actualmente, varios oráculos descentralizados—en particular los [Oráculos del Protocolo Maker](https://docs.makerdao.com/smart-contract-modules/oracle-module)—utilizan el mecanismo de punto de Schelling para mejorar la precisión de los datos de oráculo. Cada oráculo Maker consiste en una red entre semejantes fuera de la cadena de nodos («intermediarios» y «fuentes») que envían los precios de mercado de los activos colaterales y un contrato «Medianizer» en la cadena que calcula la media de todos los valores proporcionados. Una vez que el periodo de atraso especificado termina, el valor medio se vuelve el nuevo precio de referencia del activo asociado.
-Otros ejemplos de oráculos que utilizan mecanismos de puntos de Schelling incluyen [Chainlink Off-Chain Reporting](https://docs.chain.link/docs/off-chain-reporting/) y [Witnet](https://witnet.io/). En ambos sistemas, las respuestas de los nodos de oráculo en la red peer-to-peef son agregados en un único valor agregado, como una media o promedio. Los nodos son recompensados o castigados de acuerdo con la medida en que sus respuestas se alinean o se desvían del valor agregado.
+Otros ejemplos de oráculos que usan mecanismos de punto de Schelling incluyen [Chainlink Offchain Reporting](https://docs.chain.link/architecture-overview/off-chain-reporting) y [Witnet](https://witnet.io/). En ambos sistemas, las respuestas de los nodos de oráculo en la red peer-to-peef son agregados en un único valor agregado, como una media o promedio. Los nodos son recompensados o castigados de acuerdo con la medida en que sus respuestas se alinean o se desvían del valor agregado.
-Los mecanismos de punto de Schelling son atractivos porque minimizan la huella en la cadena (solo se necesita enviar una transacción), al tiempo que garantizan la descentralización. Esta última es posible porque los nodos deben firmar la lista de respuestas enviadas antes de que se introduzcan en el algoritmo que produce el valor medio/mediana.
+Los mecanismos de punto de Schelling son atractivos, porque minimizan la huella en la cadena (solo se necesita enviar una transacción) mientras garantizan la descentralización. Esta última es posible porque los nodos deben firmar la lista de respuestas enviadas antes de que se introduzcan en el algoritmo que produce el valor medio/mediana.
### Disponibilidad {#availability}
-Los servicios descentralizados de oráculos garantizan una alta disponibilidad de los datos fuera de la cadena para los contratos inteligentes. Esto se logra descentralizando tanto la fuente de información fuera de la cadena como los nodos responsables de transferir la información en la cadena.
+Los servicios de oráculos descentralizados garantizan una alta disponibilidad de datos fuera de la cadena para los contratos inteligentes. Esto se logra descentralizando tanto la fuente de información fuera de la cadena, como los nodos responsables de transferir la información en la cadena.
-Esto garantiza la tolerancia a fallas, ya que el contrato de oráculo puede confiar en múltiples nodos (que también usan múltiples fuentes de datos) para ejecutar consultas de otros contratos. La descentralización a nivel de la fuente _y_ de nodo-operador es crucial: una red de nodos de oráculo que sirvan información recuperada de la misma fuente se encontrará con el mismo problema que un oráculo centralizado.
+Esto garantiza la tolerancia a fallas, ya que el contrato de oráculo puede confiar en múltiples nodos (que también usan múltiples fuentes de datos) para ejecutar consultas de otros contratos. La descentralización tanto en la fuente como a nivel de los operadores de nodos es fundamental: una red de nodos oráculo que sirve información obtenida de la misma fuente enfrentará el mismo problema que un oráculo centralizado.
-También es posible que los oráculos basados en participación puedan reducir los operadores de nodos que no responden rápidamente a las solicitudes de datos. Esto incentiva significativamente a los nodos de oráculo a invertir en infraestructura tolerante a fallas y a proporcionar datos de manera oportuna.
+También es posible que los oráculos basados en participaciones penalicen a los operadores de nodos que no respondan rápidamente a las solicitudes de datos. Esto incentiva significativamente a los nodos de oráculo a invertir en infraestructura tolerante a fallas y a proporcionar datos de manera oportuna.
-### Buena compatibilidad con incentivos {#good-incentive-compatibility}
+### Buena compatibilidad de incentivos {#good-incentive-compatibility}
-Los oráculos descentralizados implementan varios diseños de incentivos para evitar el comportamiento [Bizantino](https://en.wikipedia.org/wiki/Byzantine_fault) entre los nodos del oráculo. Específicamente, logran _atribuibilidad_ y _responsabilidad_:
+Los oráculos descentralizados implementan varios diseños de incentivos para prevenir comportamientos [bizantinos](https://en.wikipedia.org/wiki/Byzantine_fault) entre los nodos oráculo. Específicamente, logran _atribuibilidad_ y _responsabilidad_:
-1. A menudo se requiere que los nodos de oráculo descentralizados firmen los datos que proporcionan en respuesta a las solicitudes de datos. Esta información ayuda a evaluar el rendimiento histórico de los nodos de oráculo, de modo que los usuarios pueden filtrar los nodos de oráculo poco fiables al hacer solicitudes de datos. Un ejemplo es el [Sistema de Reputación Algorítmica de Witnet](https://docs.witnet.io/intro/about/architecture#algorithmic-reputation-system).
+1. A menudo se requiere que los nodos de oráculo descentralizados firmen los datos que proporcionan en respuesta a las solicitudes de datos. Esta información ayuda a evaluar el rendimiento histórico de los nodos de oráculo, de modo que los usuarios pueden filtrar los nodos de oráculo poco fiables al hacer solicitudes de datos. Un ejemplo es el [Sistema de Reputación Algorítmica](https://docs.witnet.io/intro/about/architecture#algorithmic-reputation-system) de Witnet.
2. Los oráculos descentralizados, como se explicó anteriormente, pueden requerir que los nodos pongan una participación o apuesta en su confianza en la veracidad de los datos que envían. Si la reclamación se comprueba, esta participación se puede devolver junto con recompensas por un servicio honesto. Pero también se puede acuchillar en caso de que la información sea incorrecta, lo que hace que se tenga responsabilidad.
-## Aplicaciones de los oráculos en los contratos inteligentes {#applications-of-oracles-in-smart-contracts}
+## Aplicaciones de oráculos en smart contracts {#applications-of-oracles-in-smart-contracts}
Los siguientes son casos de uso comunes de oráculos en Ethereum:
### Recuperación de datos financieros {#retrieving-financial-data}
-Las aplicaciones de [finanzas descentralizadas](/defi/) (DeFi) permiten el préstamo, la toma de préstamos y el comercio de activos entre pares. Para ello, se suele requerir información financiera diferente, incluidos datos de tipos de cambio (para calcular el valor fiduciario de las criptomonedas o comparar los precios de los tókenes) y datos de los mercados de capital (para calcular el valor de los activos tokenizados, como el oro o el dólar estadounidense).
+Las aplicaciones de [finanzas descentralizadas](/defi/) (DeFi) permiten préstamos, préstamos y comercio de activos entre pares. Para ello, se suele requerir información financiera diferente, incluidos datos de tipos de cambio (para calcular el valor fiduciario de las criptomonedas o comparar los precios de los tókenes) y datos de los mercados de capital (para calcular el valor de los activos tokenizados, como el oro o el dólar estadounidense).
Un protocolo de préstamo DeFi, por ejemplo, necesita consultar los precios actuales del mercado de los activos (por ejemplo, ETH) depositados como garantía. Esto permite que el contrato determine el valor de los activos colaterales y determine cuánto puede pedir prestado del sistema.
-«Oráculos de precios» populares (como se les suele llamar) en DeFi incluyen Chainlink Price Feeds, [Open Price Feed](https://compound.finance/docs/prices) de Compound Protocol, [Time-Weighted Average Prices (TWAP)](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) de Uniswap y [Maker Oracles](https://docs.makerdao.com/smart-contract-modules/oracle-module).
+Los populares "oráculos de precios" (como a menudo se les llama) en DeFi incluyen Chainlink Price Feeds, el [Open Price Feed](https://compound.finance/docs/prices) de Compound Protocol, los [Precios de Promedio Ponderado por Tiempo (TWAPs)](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) de Uniswap y los [Oráculos de Maker](https://docs.makerdao.com/smart-contract-modules/oracle-module).
-Los constructores deben entender las advertencias que traen estos oráculos de precios antes de integrarlos en su proyecto. Este [artículo](https://blog.openzeppelin.com/secure-smart-contract-guidelines-the-dangers-of-price-oracles/) proporciona un análisis detallado de lo que se debe tener en cuenta cuando se planea utilizar cualquiera de los oráculos de precio mencionados.
+Los constructores deben entender las advertencias que traen estos oráculos de precios antes de integrarlos en su proyecto. Este [artículo](https://blog.openzeppelin.com/secure-smart-contract-guidelines-the-dangers-of-price-oracles/) proporciona un análisis detallado de lo que se debe considerar al planificar el uso de cualquiera de los oráculos de precios mencionados.
A continuación se muestra un ejemplo de cómo puede recuperar el último precio de ETH en su contrato inteligente utilizando una fuente de precios de Chainlink:
@@ -354,77 +354,80 @@ contract PriceConsumerV3 {
}
```
-### Generar aleatoriedad verificable {#generating-verifiable-randomness}
+### Generación de aleatoriedad verificable {#generating-verifiable-randomness}
Ciertas aplicaciones de cadena de bloques, como los juegos basados en la cadena de bloques o los esquemas de lotería, requieren un alto nivel de imprevisibilidad y aleatoriedad para funcionar de manera efectiva. No obstante, la ejecución determinista de las cadenas de bloques elimina cualquier aleatoriedad.
-El enfoque original era usar funciones criptográficas pseudoaleatorias, como `blockhash`, pero estas podían ser [manipuladas por los mineros](https://ethereum.stackexchange.com/questions/3140/risk-of-using-blockhash-other-miners-preventing-attack#:~:text=So%20while%20the%20miners%20can,to%20one%20of%20the%20players.) resolviendo el algoritmo de prueba de trabajo. Además, el [cambio de Ethereum a la prueba de participación](/roadmap/merge/) significa que los desarrolladores ya no pueden depender del `blockhash` para la aleatoriedad en la cadena. El [mecanismo RANDAO](https://eth2book.info/altair/part2/building_blocks/randomness) de la cadena de Baliza proporciona una fuente alternativa de aleatoriedad.
+El enfoque original era usar funciones criptográficas seudoaleatorias, como `blockhash`, pero estas podían ser [manipuladas por los mineros](https://ethereum.stackexchange.com/questions/3140/risk-of-using-blockhash-other-miners-preventing-attack#:~:text=So%20while%20the%20miners%20can,to%20one%20of%20the%20players.) resolviendo el algoritmo de proof-of-work. Además, el [cambio de Ethereum a proof-of-stake](/roadmap/merge/) significa que los desarrolladores ya no pueden depender de `blockhash` para aleatoriedad onchain. El [mecanismo RANDAO](https://eth2book.info/altair/part2/building_blocks/randomness) de la Beacon Chain ofrece una fuente alternativa de aleatoriedad.
-Es posible generar el valor aleatorio fuera de la cadena y enviarlo por la cadena, pero hacerlo impone altos requisitos de confianza a los usuarios. Deben creer que el valor se generó realmente a través de mecanismos impredecibles y no se alteró en el tránsito.
+Es posible generar el valor aleatorio fuera de la cadena y enviarlo en la cadena, pero hacerlo impone altos requisitos de confianza a los usuarios. Deben creer que el valor se generó realmente a través de mecanismos impredecibles y no se alteró en el tránsito.
-Los oráculos diseñados para el cálculo fuera de la cadena resuelven este problema generando de forma segura resultados aleatorios fuera de la cadena que se transmiten por la cadena junto con pruebas criptográficas que dan fe de la imprevisibilidad del proceso. Un ejemplo es [Chainlink VRF](https://docs.chain.link/docs/chainlink-vrf/) (función aleatoria verificable), que es un generador de números aleatorios (RNG) de equidad demostrable y a prueba de manipulaciones, útil para crear contratos inteligentes fiables para aplicaciones que dependen de resultados impredecibles.
+Los oráculos diseñados para la computación fuera de la cadena resuelven este problema generando de manera segura resultados aleatorios fuera de la cadena que transmiten en la cadena, junto con pruebas criptográficas que certifican la imprevisibilidad del proceso. Un ejemplo es [Chainlink VRF](https://docs.chain.link/docs/chainlink-vrf/) (Función Aleatoria Verificable), que es un generador de números aleatorios (RNG) demostrablemente justo e inalterable, útil para construir smart contracts fiables para aplicaciones que dependen de resultados impredecibles.
-### Obtener resultados para los eventos {#getting-outcomes-for-events}
+### Obtener resultados de eventos {#getting-outcomes-for-events}
-Con los oráculos, es fácil crear contratos inteligentes que respondan a eventos del mundo real. Los servicios del oráculo lo hacen posible, ya que permiten que los contratos se conecten a API externas a través de componentes fuera de la cadena y utilicen información de esas fuentes de datos. Por ejemplo, la DApp de predicción mencionada anteriormente puede solicitar a un oráculo que muestre resultados de las elecciones de una fuente fuera de la cadena fiable (por ejemplo, Associated Press).
+Con los oráculos, es fácil crear contratos inteligentes que respondan a eventos del mundo real. Los servicios de oráculos lo hacen posible, ya que permiten que los contratos se conecten a API externas a través de componentes fuera de la cadena y utilicen información de esas fuentes de datos. Por ejemplo, la DApp de predicción mencionada anteriormente puede solicitar a un oráculo que devuelva los resultados de las elecciones desde una fuente de confianza fuera de la cadena (por ejemplo, la Associated Press).
El uso de oráculos para recuperar datos basados en resultados del mundo real permite otros nuevos casos de uso; por ejemplo, un producto de seguro descentralizado necesita información precisa sobre el clima, los desastres, etc. para funcionar de manera efectiva.
-### Automatización de contratos inteligentes {#automating-smart-contracts}
+### Automatización de smart contracts {#automating-smart-contracts}
Los contratos inteligentes no se ejecutan automáticamente; más bien, una cuenta de propiedad externa (EOA), u otra cuenta de contrato debe activar las funciones correctas para ejecutar el código del contrato. En la mayoría de los casos, la mayor parte de las funciones del contrato son públicas y pueden ser invocadas por las EOA y otros contratos.
-Pero también hay _funciones privadas_ dentro de un contrato que son inaccesibles para otros, pero que son fundamentales para la funcionalidad general de una DApp. Los ejemplos incluyen una función `mintERC721Token()` que acuña periódicamente nuevos NFT para los usuarios, una función para otorgar pagos en un mercado de predicción o una función para desbloquear tókenes en participación en un DEX.
+Pero también existen _funciones privadas_ dentro de un contrato que son inaccesibles para otros; pero que son críticas para la funcionalidad general de una dapp. Ejemplos incluyen una función `mintERC721Token()` que emite periódicamente nuevos NFT para los usuarios, una función para otorgar recompensas en un mercado de predicción, o una función para desbloquear tokens bloqueados en un DEX.
Los desarrolladores tendrán que activar dichas funciones a diferentes intervalos para mantener el funcionamiento de la aplicación. No obstante, esto podría llevar a que se pierdan más horas en tareas mundanas para los desarrolladores, por lo que la automatización de la ejecución de contratos inteligentes es atractiva.
-Algunas redes de oráculo descentralizadas ofrecen servicios de automatización que permiten que los nodos de oráculo fuera de la cadena activen funciones de contratos inteligentes de acuerdo con parámetros definidos por el usuario. Por lo general, esto requiere «registrar» el contrato de destino en el servicio de oráculo, proporcionar fondos para pagar al operador del oráculo y especificar las condiciones o los tiempos para activar el contrato.
+Algunas redes de oráculos descentralizados ofrecen servicios de automatización, que permiten a los nodos oráculo fuera de la cadena activar funciones de contratos inteligentes según los parámetros definidos por el usuario. Por lo general, esto requiere «registrar» el contrato de destino en el servicio de oráculo, proporcionar fondos para pagar al operador del oráculo y especificar las condiciones o los tiempos para activar el contrato.
-La [red de Keeper](https://chain.link/keepers) de Chainlink ofrece opciones para que los contratos inteligentes externalicen las tareas de mantenimiento regulares de una manera de confianza minimizada y descentralizada. Lea la [documentación oficial de Keeper](https://docs.chain.link/docs/chainlink-keepers/introduction/) para obtener información sobre cómo hacer que su contrato sea compatible con Keeper y usar el servicio Upkeep.
+La [Keeper Network](https://chain.link/keepers) de Chainlink proporciona opciones para que los smart contracts subcontraten tareas regulares de mantenimiento de forma minimizada en confianza y descentralizada. Lea la [documentación oficial de Keeper](https://docs.chain.link/docs/chainlink-keepers/introduction/) para obtener información sobre cómo hacer que su contrato sea compatible con Keeper y utilizar el servicio Upkeep.
-## Cómo usar los oráculos de cadena de bloques {#use-blockchain-oracles}
+## Cómo utilizar oráculos blockchain {#use-blockchain-oracles}
Hay múltiples aplicaciones de oráculo que puede integrar en su DApp de Ethereum:
-**[Chainlink:](https://chain.link/)** _Las redes de oráculos descentralizadas de Chainlink proporcionan entradas, salidas y cálculos a prueba de manipulaciones para brindar respaldo a contratos inteligentes avanzados en cualquier cadena de bloques. _
+**[Chainlink](https://chain.link/)** - _Las redes de oráculos descentralizados de Chainlink proporcionan entradas, salidas y cálculos resistentes a manipulaciones para respaldar smart contracts avanzados en cualquier blockchain._
-**[Chronicle](https://chroniclelabs.org/)**: _Chronicle supera las limitaciones actuales de la transferencia de datos en cadena mediante el desarrollo de óraculos verdaderamente escalables, rentables, descentralizados y verificables. _
+**[RedStone Oracles](https://redstone.finance/)** - _RedStone es un oráculo modular descentralizado que provee feeds de datos optimizados en consumo de gas._ Se especializa en ofrecer fuentes de precios para activos emergentes, como tókenes de participaciones líquidas (LST), tókenes de nuevas participaciones líquidas (LRT) y derivados de participación de Bitcoin._
-**[Witnet:](https://witnet.io/)** _Witnet es un oráculo sin permiso, descentralizado y resistente a la censura que ayuda a los contratos inteligentes a reaccionar ante eventos del mundo real con sólidas garantías criptoeconómicas. _
+**[Chronicle](https://chroniclelabs.org/)** - _Chronicle supera las limitaciones actuales de transferencia de datos onchain mediante el desarrollo de oráculos verdaderamente escalables, rentables, descentralizados y verificables._
-**[UMA Oracle:](https://uma.xyz)** _el oráculo optimista de UMA permite que los contratos inteligentes envíen y reciban rápidamente cualquier tipo de datos para diferentes aplicaciones, incluidos los seguros, los derivados financieros y los mercados de predicción. _
+**[Witnet](https://witnet.io/)** - _Witnet es un oráculo sin permisos, descentralizado y resistente a la censura que ayuda a los smart contracts a reaccionar ante eventos del mundo real con sólidas garantías criptoeconómicas._
-**[Tellor:](https://tellor.io/)** _Tellor es un protocolo de oráculo transparente y sin permisos para que su contrato inteligente obtenga fácilmente cualquier dato cuando lo necesite. _
+**[UMA Oracle](https://uma.xyz)** - _El oráculo optimista de UMA permite a los smart contracts recibir rápidamente cualquier tipo de dato para distintas aplicaciones, incluyendo seguros, derivados financieros y mercados de predicción._
-**[Band Protocol:](https://bandprotocol.com/)** _el Band Protocol es una plataforma de oráculo de datos multicadena que añade y conecta datos del mundo real y API con contratos inteligentes. _
+**[Tellor](https://tellor.io/)** - _Tellor es un protocolo de oráculo transparente y sin permisos que permite a su smart contract obtener cualquier dato cuando lo necesite._
-**[Pyth Network:](https://pyth.network/)** _la red Pyth es una red de oráculos financieros de primera parte diseñada para publicar datos continuos del mundo real en cadena en un entorno a prueba de manipulación, descentralizado y autosostenible. _
+**[Band Protocol](https://bandprotocol.com/)** - _Band Protocol es una plataforma de oráculos de datos cross-chain que agrega y conecta datos y APIs del mundo real con smart contracts._
-**[DAO API3:](https://www.api3.org/)** _una DAO API3 ofrece soluciones de oráculo de primera parte que ofrecen mayor transparencia, seguridad y escalabilidad de la fuente en una solución descentralizada para contratos inteligentes._
+**[Pyth Network](https://pyth.network/)** - _La red Pyth es una red de oráculos financieros de primera parte diseñada para publicar datos del mundo real de manera continua onchain en un entorno resistente a manipulaciones, descentralizado y autosostenible._
-**[Supra](https://supra.com/)**: Un conjunto de herramientas integrado verticalmente de soluciones multicadena que interrelacionan todas las cadenas de bloques, públicas (L1 y L2) o privadas (empresas), proporcionando feeds de precios de oráculos descentralizados que se pueden utilizar para casos de uso en cadena y fuera de la cadena.
+**[API3 DAO](https://www.api3.org/)** - _API3 DAO está ofreciendo soluciones de oráculo de primera parte que proporcionan mayor transparencia sobre el origen, seguridad y escalabilidad en una solución descentralizada para smart contracts_
-## Para profundizar sobre el tema {#further-reading}
+**[Supra](https://supra.com/)** - Un conjunto de herramientas verticalmente integrado de soluciones cross-chain que interconectan todas las blockchains, ya sean públicas (L1s y L2s) o privadas (empresas), proporcionando feeds de precios de oráculo descentralizados que pueden usarse tanto para casos de uso onchain como offchain.
+
+**[Gas Network](https://gas.network/)** - Una plataforma de oráculos distribuida que proporciona datos de precios de gas en tiempo real en blockchain. Al llevar datos de los principales proveedores de precios de gas onchain, Gas Network está ayudando a impulsar la interoperabilidad. Gas Network ofrece soporte de datos para más de 35 cadenas, incluida Ethereum Mainnet y muchas L2 destacadas.
+
+## Lecturas adicionales {#further-reading}
**Artículos**
-- [¿Qué es un oráculo de cadena de bloques?](https://chain.link/education/blockchain-oracles), _Chainlink_
-- [¿Qué es un oráculo de cadena de bloques?](https://betterprogramming.pub/what-is-a-blockchain-oracle-f5ccab8dbd72), _Patrick Collins_
-- [Oráculos descentralizados: descripción detallada](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841), _Julien Thevenard_
-- [Implementación de un oráculo de cadena de bloques en Ethereum](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e), _Pedro Costa_
-- [¿Por qué los contratos inteligentes no pueden hacer llamadas de API?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls), _StackExchange_
-- [Así que quiere usar un oráculo de precios](https://samczsun.com/so-you-want-to-use-a-price-oracle/), _samczsun_
+- [¿Qué es un oráculo blockchain?](https://chain.link/education/blockchain-oracles) — _Chainlink_
+- [¿Qué es un oráculo blockchain?](https://medium.com/better-programming/what-is-a-blockchain-oracle-f5ccab8dbd72) — _Patrick Collins_
+- [Oráculos descentralizados: una visión completa](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841) — _Julien Thevenard_
+- [Cómo implementar un oráculo blockchain en Ethereum](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) – _Pedro Costa_
+- [¿Por qué los smart contracts no pueden hacer llamadas API?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls) — _StackExchange_
+- [Así que quieres usar un oráculo de precios](https://samczsun.com/so-you-want-to-use-a-price-oracle/) — _samczsun_
-**Vídeos**
+**Videos**
-- [Oráculos y la expansión de la utilidad de la cadena de bloques](https://youtu.be/BVUZpWa8vpw), _Real Vision Finance_
-- [Las diferencias entre los oráculos de primera parte y de terceros](https://blockchainoraclesummit.io/first-party-vs-third-party-oracles/), _Blockchain Oracle Summit_
+- [Oráculos y la expansión de la utilidad de blockchain](https://youtu.be/BVUZpWa8vpw) — _Real Vision Finance_
**Tutoriales**
-- [¿Cómo obtener el precio actual de Ethereum en Solidity?](https://blog.chain.link/fetch-current-crypto-price-data-solidity/), _Chainlink_
-- [Consumo de datos de oráculos](https://docs.chroniclelabs.org/Developers/tutorials/Remix): _Chronicle_
+- [Cómo obtener el precio actual de Ethereum en Solidity](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) — _Chainlink_
+- [Consumir datos de oráculo](https://docs.chroniclelabs.org/Developers/tutorials/Remix) — _Chronicle_
**Proyectos de ejemplo**
-- [Proyecto de inicio completo de Chainlink para Ethereum en Solidity](https://github.com/hackbg/chainlink-fullstack), _HackBG_
+- [Proyecto inicial completo de Chainlink para Ethereum en Solidity](https://github.com/hackbg/chainlink-fullstack) — _HackBG_
From dbe5c5a8858f0f969ea002b953654bf97b2746c3 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:45:47 -0300
Subject: [PATCH 004/589] update(i18n): src/intl/es/page-gas.json
---
src/intl/es/page-gas.json | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/intl/es/page-gas.json b/src/intl/es/page-gas.json
index 4960e6ab350..48871496886 100644
--- a/src/intl/es/page-gas.json
+++ b/src/intl/es/page-gas.json
@@ -6,7 +6,7 @@
"page-gas-hero-button-1-content": "¿Qué es el gas?",
"page-gas-hero-subtitle-1": "A las tarifas de red en Ethereum se les denomina gas.",
"page-gas-hero-subtitle-2": "El gas es el combustible que potencia a Ethereum.",
- "page-gas-summary-title": "Resumen",
+ "page-gas-summary-title": "Sumario",
"page-gas-summary-item-1": "Cada transacción en Ethereum requiere una pequeña forma de pago para su procesamiento",
"page-gas-summary-item-2": "A estas tarifas se les denomina tarifa de gas",
"page-gas-summary-item-3": "Las tarifas de gas no están fijadas, cambian en función de la congestión de la red",
@@ -33,10 +33,10 @@
"page-gas-why-do-we-need-gas-header": "¿Por qué necesitamos gas?",
"page-gas-why-do-we-need-gas-text": "El gas es un elemento vital para velar por la seguridad de Ethereum y procesar transacciones. El gas ayuda de varias maneras:",
"page-gas-benefits-1-description": "El gas mantiene a Ethereum resistente a los ataques de tipo Sybil al evitar que personas malintencionadas saturen la red con actividades fraudulentas.",
- "page-gas-benefits-2-description": "Como la computación cuesta gas, se desmotiva financieramente sobrecargar a Ethereum con transacciones costosas, ya sean accidentales o maliciosas.",
+ "page-gas-benefits-2-description": "Debido a que la computación cuesta gas, enviar transacciones costosas de manera masiva en Ethereum, ya sea de forma accidental o malintencionada, está desincentivado económicamente.",
"page-gas-benefits-3-description": "En cualquier momento, puede aplicarse un límite estricto en la cantidad de computación para prevenir la sobrecarga de Ethereum, lo que permite garantizar que la red siempre esté accesible.",
"page-gas-how-is-gas-calculated-header": "¿Cómo se calcula el gas?",
- "page-gas-advanced": "Recursos avanzados",
+ "page-gas-advanced": "Avanzado",
"page-gas-how-is-gas-calculated-text-1": "La tarifa total de gas que pague se compondrá de cuatro partes:",
"page-gas-how-is-gas-calculated-item-1": "Tarifa base: la tarifa establecida por la red que debe pagar una transacción.",
"page-gas-how-is-gas-calculated-item-2": "Tarifa de prioridad: una propina opcional para incentivar a los operadores del nodo a que incluyan su transacción.",
@@ -56,7 +56,7 @@
"page-gas-faq-question-1-a-2": "Puedes leer una descripción detallada del proceso en la documentación del desarrollador de gas.",
"page-gas-faq-question-2-q": "¿Necesito pagar el gas en ETH?",
"page-gas-faq-question-2-a-1": "Sí, todas las tarifas de gas en Ethereum deben pagarse en la moneda nativa ETH.",
- "page-gas-faq-question-2-a-2": "Más sobre ETH",
+ "page-gas-faq-question-2-a-2": "Más información sobre ETH",
"page-gas-faq-question-3-q": "¿Qué es gwei?",
"page-gas-faq-question-3-a-1": "En muchas billeteras o rastreadores de gas, verá los precios de gas expresados en «gwei».",
"page-gas-faq-question-3-a-2": "Gwei es una denominación más pequeña de ETH, al igual que los céntimos lo son del euro o los centavos del dolar, con la salvedad de que 1 ETH equivale a 1.000 millones de gwei. El gwei es útil cuando hablamos sobre cantidades muy pequeñas de ETH.",
From ab2d9da77ff274163a23eb3d6ae062588291e387 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:45:49 -0300
Subject: [PATCH 005/589] update(i18n):
src/intl/es/page-developers-tutorials.json
---
src/intl/es/page-developers-tutorials.json | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/intl/es/page-developers-tutorials.json b/src/intl/es/page-developers-tutorials.json
index aa23764f130..5af6b59aa1e 100644
--- a/src/intl/es/page-developers-tutorials.json
+++ b/src/intl/es/page-developers-tutorials.json
@@ -1,20 +1,21 @@
{
"comp-tutorial-metadata-minute-read": "minuto leído",
- "page-tutorial-listing-policy-intro": "Antes de enviar un tutorial, lea nuestra política de publicaciones.",
+ "page-tutorial-listing-policy-intro": "Antes de enviar un tutorial, por favor lea nuestra política de inclusión.",
"comp-tutorial-metadata-tip-author": "Autor del consejo",
+ "page-tutorial-create-an-issue": "Crear una incidencia",
+ "page-tutorial-create-an-issue-desc": "Complete la plantilla del issue describiendo su tutorial.",
"page-tutorial-raise-issue-btn": "Crear una incidencia",
"page-tutorial-read-time": "mín",
"page-tutorial-submit-btn": "Enviar un tutorial",
- "page-tutorial-submit-tutorial": "Para enviar un tutorial, deberá usar GitHub. Le invitamos a crear una incidencia o una solicitud de extracción.",
"page-tutorial-subtitle": "Bienvenido a nuestra lista seleccionada de tutoriales de la comunidad.",
- "page-tutorial-tags-error": "Ningún tutorial tiene todas estas etiquetas",
+ "page-tutorial-tags-error": "Aún no hay tutoriales con todas las etiquetas seleccionadas",
"page-tutorial-title": "Tutoriales de desarrollo de Ethereum",
"page-tutorials-meta-description": "Busque y explore en los tutoriales de la comunidad Ethereum por tema.",
"page-tutorial-external-link": "Externo",
"page-tutorials-meta-title": "Tutoriales de desarrollo de Ethereum",
"page-tutorial-beginner": "Principiante",
"page-tutorial-intermediate": "Intermedio",
- "page-tutorial-advanced": "Recursos avanzados",
+ "page-tutorial-advanced": "Avanzado",
"page-find-wallet-try-removing": "Intente eliminar una o dos características",
"page-find-wallet-clear": "Limpiar filtros",
"page-tutorials-env-banner": "¡No corra riesgos! .env! Asegúrese de no compartir ni exponer nunca su archivo .env con nadie, ya que de lo contrario estará compartiendo sus secretos. Si está utilizando el control de la versión, añada su .env al archivo gitignore."
From d87d0d00f405b2cbb48a81ee0e05842bc51dbeaa Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:45:50 -0300
Subject: [PATCH 006/589] update(i18n): src/intl/es/page-learn.json
---
src/intl/es/page-learn.json | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/src/intl/es/page-learn.json b/src/intl/es/page-learn.json
index 7ca57419267..2e2419eff94 100644
--- a/src/intl/es/page-learn.json
+++ b/src/intl/es/page-learn.json
@@ -1,4 +1,5 @@
{
+ "about-ethereum-video-series": "Serie de vídeos acerca de Ethereum",
"toc-learn-hub": "Centro de aprendizaje",
"toc-what-is-crypto-ethereum": "¿Qué es Ethereum?",
"toc-how-do-i-use-ethereum": "¿Cómo puedo utilizar Ethereum?",
@@ -18,7 +19,7 @@
"what-is-ethereum-card-image-alt": "Ilustración de una persona mirando en un bazar, que pretende representar a Ethereum.",
"what-is-eth-card-title": "¿Qué es el ETH?",
"what-is-eth-description": "Ether (ETH) es la moneda que potencia la red y las aplicaciones de Ethereum.",
- "what-is-web3-card-title": "¿Qué es Web 3.0?",
+ "what-is-web3-card-title": "¿Qué es la Web3?",
"what-is-web3-card-description": "Web3 es un modelo para el Internet en el que se valoriza la propiedad de sus bienes y e identidad.",
"additional-reading-more-on-ethereum-basics": "Más detalles sobre lo esencial de Ethereum",
"guides-hub-desc": "Guías: instrucciones paso a paso para usar Ethereum",
@@ -52,15 +53,15 @@
"stablecoins-card-title": "Monedas estables",
"stablecoins-card-description": "Las criptomonedas están vinculadas al valor de una moneda, una mercancía o algún otro instrumento financiero.",
"stablecoins-card-button": "¿Qué son las monedas estables?",
- "nft-card-title": "Tókenes No Fungibles (NFT)",
+ "nft-card-title": "Tóekens no fungibles (NFT)",
"nft-card-description": "Representan la propiedad de objetos únicos, desde títulos de propiedad de obras de arte hasta entradas de conciertos.",
"nft-card-button": "¿Qué son los NFT?",
"dao-card-title": "Organizaciones Autónomas Descentralizadas (DAO)",
"dao-card-description": "Habilitar nuevas formas de coordinar el trabajo sin un jefe.",
"dao-card-button": "¿Qué son las DAO?",
- "dapp-card-title": "Aplicaciones descentralizadas (DApps)",
+ "dapp-card-title": "Aplicaciones de Ethereum",
"dapp-card-description": "Crear una economía digital de servicios entre pares.",
- "dapp-card-button": "Explorar las Dapps",
+ "dapp-card-button": "¿Qué son las aplicaciones?",
"emerging-use-cases-title": "Casos de uso emergentes",
"emerging-use-cases-description": "También se están creando o mejorando otras industrias prominentes con Ethereum:",
"play-to-earn": "Juegos de jugar a ganar (P2E)",
@@ -72,7 +73,7 @@
"staking-ethereum-card-title": "Apostar en Ethereum",
"staking-ethereum-card-description": "Aprenda cómo empezar a apostar sus ETH.",
"staking-ethereum-card-button": "Empezar a apostar",
- "run-a-node-card-title": "Ejecute un nodo",
+ "run-a-node-card-title": "Ejecutar un nodo",
"run-a-node-card-description": "Desempeñar un papel crítico en la red Ethereum ejecutando un nodo.",
"learn-about-ethereum-protocol-description": "Para los usuarios más interesados en la parte técnica de la red Ethereum.",
"energy-consumption-card-title": "Consumo de energía",
@@ -94,7 +95,7 @@
"community-hub-card-description": "Nuestra comunidad incluye a personas de todos los orígenes.",
"community-hub-card-alt": "Ilustración de un grupo de constructores trabajando juntos.",
"community-hub-card-button": "Explorar más",
- "get-involved-card-title": "¿Cómo puedo participar?",
+ "get-involved-card-title": "¿Cómo puedo involucrarme?",
"get-involved-card-description": "Usted (¡sí, usted!) es bienvenido/a a contribuir con la comunidad Ethereum.",
"online-communities-card-title": "Comunidades en línea",
"online-communities-card-description": "Las comunidades en línea ofrecen una gran oportunidad para hacer preguntas más específicas o involucrarse más en Ethereum.",
@@ -117,8 +118,10 @@
"zeroknowledge-description": "Profundiza en la tecnología que impulsará la emergente web descentralizada y la comunidad construyendo esto.",
"green-pill-title": "Green Pill",
"green-pill-description": "Explora los sistemas criptoeconómicos que producen consecuencias positivas para el mundo.",
+ "ethereum-basics-title": "Conceptos básicos de Ethereum",
+ "ethereum-basics-description": "Aprenda los conceptos básicos de la arquitectura de la red Ethereum con una serie de vídeos fáciles de entender.",
"unchained-title": "Unchained",
"unchained-description": "Se adentra en las personas que construyen el Internet descentralizado, los detalles de esta tecnología que podría sustentar nuestro futuro y algunos de los temas más espinosos de las criptomonedas, como la regulación, la seguridad y la privacidad.",
"the-daily-gwei-title": "The Daily Gwei",
"the-daily-gwei-description": "Resumen de noticias, actualizaciones y análisis de Ethereum."
-}
\ No newline at end of file
+}
From 25c1cadb2a764c839ccdd862bb41068729e1537c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:45:51 -0300
Subject: [PATCH 007/589] update(i18n): src/intl/es/page-start.json
---
src/intl/es/page-start.json | 38 +++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
create mode 100644 src/intl/es/page-start.json
diff --git a/src/intl/es/page-start.json b/src/intl/es/page-start.json
new file mode 100644
index 00000000000..ed14698638d
--- /dev/null
+++ b/src/intl/es/page-start.json
@@ -0,0 +1,38 @@
+{
+ "page-start-meta-title": "Comenzar con las criptomonedas",
+ "page-start-meta-description": "Su puerta de entrada al mundo de Ethereum",
+ "page-start-hero-alt": "Comenzar con las criptomonedas",
+ "page-start-title": "Empiece con Ethereum",
+ "page-start-subtitle": "Ethereum es mucho más que una plataforma de transacciones de tókenes en un intercambio. Sumérjase en el nuevo mundo usted mismo y aprenda conceptos básicos en pocos pasos.",
+ "page-start-share-section-title": "¿Conoce a alguien que necesite ayuda para incorporarse?",
+ "page-start-share-section-description": "Miles de millones de personas no pueden abrir cuentas bancarias ni utilizar libremente su dinero. El sistema financiero de Ethereum siempre es abierto e imparcial.",
+ "page-start-man-doge-alt": "Man Doge",
+ "page-start-share-modal-trigger": "Compartir esta página",
+ "page-start-share-modal-title": "Compartir esta página",
+ "page-start-share-modal-description": "Comparta esta página con tus amigos y familiares.",
+ "page-start-share-modal-copied": "¡Copiada!",
+ "page-start-share-modal-share": "Compartir",
+ "page-start-share-modal-twitter": "Twitter",
+ "page-start-share-modal-tweet-text": "¡Me he conectado a Ethereum en ethereum.org! Pruébelo en {url}",
+ "page-start-download-wallet-title": "Descargar una cartera",
+ "page-start-download-wallet-description": "Una billetera es una aplicación que le permite recibir, enviar criptomonedas y gestionar su cuenta de Ethereum.",
+ "page-start-download-wallet-checkbox": "Tengo una cartera.",
+ "page-start-download-wallet-continue": "Continuar",
+ "page-start-download-wallet-get-wallet": "Conseguir una cartera",
+ "page-start-connect-wallet-title": "Conecte su billetera",
+ "page-start-connect-wallet-description": "Puede utilizar su nueva cartera como una sola cuenta en todas las aplicaciones y projectos en Ethereum. No se necesitan cuentas separadas.",
+ "page-start-connect-wallet-account-message": "Esta es su cuenta",
+ "page-start-connect-wallet-continue": "Continuemos",
+ "page-start-connect-wallet-finance-alt": "Finanzas",
+ "page-start-apps-title": "Usemos algunas aplicaciones",
+ "page-start-apps-description": "Es hora de conectarse en cadena y de beneficiarse del amplio ecosistema de proyectos que están a su disponibilidad.",
+ "page-start-apps-explore-more": "Explorar más",
+ "page-start-apps-go": "Go",
+ "page-start-apps-socials-tag": "SOCIALES",
+ "page-start-apps-finance-tag": "FINANZAS",
+ "page-start-apps-collectibles-tag": "COLECCIONABLES",
+ "page-start-apps-farcaster-description": "La plataforma social y comunitaria de cripto.",
+ "page-start-apps-aave-description": "Preste sus tókenes para ganar intereses y retírelos en cualquier momento.",
+ "page-start-apps-uniswap-description": "Intercambie sus tókenes por otros diferentes a escala mundial.",
+ "page-start-apps-opensea-description": "Compre, venda, descubra e intercambie bienes de edición limitada."
+}
From e5c26783f9f05964db97cd190192e49d8a95631a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:45:52 -0300
Subject: [PATCH 008/589] update(i18n): src/intl/es/page-index.json
---
src/intl/es/page-index.json | 67 +++++++++++++++++++++----------------
1 file changed, 39 insertions(+), 28 deletions(-)
diff --git a/src/intl/es/page-index.json b/src/intl/es/page-index.json
index f032380f69b..eed909b1cda 100644
--- a/src/intl/es/page-index.json
+++ b/src/intl/es/page-index.json
@@ -1,25 +1,27 @@
{
- "page-index-activity-description": "Actividad de todas las redes Ethereum",
+ "page-index-activity-description": "Ethereum es la plataforma líder para emitir, gestionar y liquidar activos digitales. Desde dinero tokenizado e instrumentos financieros hasta activos del mundo real y mercados emergentes, Ethereum proporciona una base segura y neutral para la economía digital.",
+ "page-index-activity-subtitle": "Actividad en la red principal de Ethereum y en las redes de capa 2",
"page-index-activity-tag": "Actividad",
"page-index-activity-header": "El ecosistema más resistente",
- "page-index-activity-action": "Más actividad de Ethereum",
+ "page-index-activity-action": "Más recursos del ecosistema",
+ "page-index-activity-action-primary": "Ethereum para instituciones",
"page-index-bento-header": "Una nueva forma de utilizar Internet",
"page-index-bento-assets-action": "Más información acerca de NFT",
- "page-index-bento-assets-content": "Se pueden convertir en tókenes obras de arte, certificados o incluso bienes inmuebles. Cualquier cosa puede ser un token comercializable. La propiedad es pública y verificable.",
+ "page-index-bento-assets-content": "Desde el arte hasta los bienes raíces y las acciones, cualquier activo puede ser tokenizado en Ethereum para probar y verificar la propiedad digitalmente. Compre, venda, intercambie y cree activos y coleccionables en cualquier momento y en cualquier lugar.",
"page-index-bento-assets-title": "El Internet de los activos",
"page-index-bento-dapps-action": "Explorar apps",
- "page-index-bento-dapps-content": "Las aplicaciones de Ethereum funcionan sin vender sus datos para proteger su privacidad.",
- "page-index-bento-dapps-title": "Apps innovadoras",
+ "page-index-bento-dapps-content": "Las aplicaciones creadas en Ethereum funcionan sin vender sus datos. Desde redes sociales hasta juegos o trabajo, utilice la misma cuenta para cada aplicación innovadora mientras mantiene la privacidad y el acceso.",
+ "page-index-bento-dapps-title": "Aplicaciones que respetan su privacidad",
"page-index-bento-defi-action": "Explorar DeFi",
- "page-index-bento-defi-content": "Miles de millones de personas no pueden abrir cuentas bancarias ni utilizar libremente su dinero. El sistema financiero de Ethereum siempre es abierto e imparcial.",
- "page-index-bento-defi-title": "Un sistema financiero más justo",
- "page-index-bento-networks-action": "Explorar beneficios",
- "page-index-bento-networks-content": "Ethereum es el centro de innovación de la cadena de bloques. Los mejores proyectos se basan en Ethereum.",
+ "page-index-bento-defi-content": "Pida prestado, preste, gane intereses y mucho más, sin necesidad de una cuenta bancaria. El sistema financiero descentralizado de Ethereum está abierto 24/7 para cualquier persona con conexión a internet.",
+ "page-index-bento-defi-title": "Un sistema financiero abierto a todos",
+ "page-index-bento-networks-action": "Descubra las capas 2",
+ "page-index-bento-networks-content": "Cientos de redes de capa 2 están construidas sobre Ethereum. Disfrute de comisiones bajas y transacciones casi instantáneas mientras se beneficia de la seguridad probada de Ethereum.",
"page-index-bento-networks-title": "La red de redes",
- "page-index-bento-stablecoins-action": "Más información",
- "page-index-bento-stablecoins-content": "Las monedas estables, o stablecoins, son monedas que mantienen un valor estable. Su precio coincide con el del dólar estadounidense o con el de otros activos estables.",
- "page-index-bento-stablecoins-title": "Criptomonedas sin volatilidad",
- "page-index-builders-action-primary": "Portal del creador",
+ "page-index-bento-stablecoins-action": "Descubra las monedas estables",
+ "page-index-bento-stablecoins-content": "Las stablecoins son monedas que mantienen un precio estable, equiparado a activos estables como el dólar estadounidense. Acceda a pagos globales al instante o almacene valor en dólares digitales en Ethereum.",
+ "page-index-bento-stablecoins-title": "Dinero digital para el uso diario",
+ "page-index-builders-action-primary": "Portal para desarrolladores",
"page-index-builders-action-secondary": "Documentación",
"page-index-builders-description": "Ethereum alberga el ecosistema de desarrolladores más grande y dinámico de la Web3. Use JavaScript y Python, o aprenda un lenguaje de contratos inteligentes como Solidity o Vyper para crear su propia aplicación.",
"page-index-builders-tag": "Creadores",
@@ -40,7 +42,7 @@
"page-index-cta-wallet-description": "Cree cuentas y administre activos",
"page-index-cta-wallet-label": "Seleccione una billetera",
"page-index-cta-build-apps-description": "Cree su primera aplicación",
- "page-index-cta-build-apps-label": "Empiece a desarrollar",
+ "page-index-cta-build-apps-label": "Empezar a crear",
"page-index-description": "La plataforma líder para aplicaciones innovadoras y redes de cadena de bloques",
"page-index-developers-code-example-description-0": "Construya un banco impulsado por la lógica que programe",
"page-index-developers-code-example-description-1": "Cree tókenes que pueda transferir y usar en distintas aplicaciones",
@@ -52,7 +54,7 @@
"page-index-developers-code-example-title-3": "Un DNS abierto y sin permisos",
"page-index-developers-code-examples": "Ejemplos de código",
"page-index-events-action": "Ver todos los eventos",
- "page-index-events-header": "Eventos",
+ "page-index-events-header": "Eventos de Ethereum",
"page-index-events-subtitle": "Las comunidades de Ethereum organizan eventos en todo el mundo, durante todo el año",
"page-index-hero-image-alt": "Una ilustración de una ciudad futurista, que representa el ecosistema Ethereum.",
"page-index-join-action-contribute-description": "Descubra todas las diferentes formas en que puede ayudar a que ethereum.org crezca y mejore.",
@@ -60,10 +62,21 @@
"page-index-join-action-discord-description": "Para hacer preguntas, coordinar contribuciones y unirse a las llamadas de la comunidad.",
"page-index-join-action-github-description": "Contribuya en el código, diseño, artículos, etc.",
"page-index-join-action-twitter-description": "Para mantenerse al día con nuestras actualizaciones y noticias importantes.",
- "page-index-join-description": "Este sitio web es de código abierto y cuenta con cientos de colaboradores de la comunidad. Puede proponer modificaciones a cualquier contenido de este sitio.",
+ "page-index-join-description": "El sitio web ethereum.org está construido y mantenido por miles de traductores, programadores, diseñadores, redactores y miembros de la comunidad. Puede proponer ediciones a cualquiera de los contenidos de este sitio de código abierto.",
"page-index-join-header": "Únase a ethereum.org",
- "page-index-learn-description": "Las criptomonedas pueden resultar abrumadoras. No se preocupe: estos materiales están diseñados para ayudarlo a comprender Ethereum en tan solo unos minutos.",
+ "page-index-join-action-hub": "Centro de colaboradores de ethereum.org",
+ "page-index-learn-description": "Ethereum es una red blockchain descentralizada y una plataforma de desarrollo de software, impulsada por la criptomoneda ether (ETH). Estos recursos son su puerta de entrada para navegar, comprender y utilizar Ethereum con confianza.",
+ "page-index-what-is-ethereum-title": "¿Qué es Ethereum?",
+ "page-index-what-is-ethereum-description-1": "Ethereum es una red blockchain de código abierto descentralizada y una plataforma de desarrollo de software, impulsada por la criptomoneda ether (ETH). Ethereum es la base segura y global para una nueva generación de aplicaciones imparables.",
+ "page-index-what-is-ethereum-description-2": "La red de Ethereum está abierta a todo el mundo: no se necesita ningún permiso. No tiene propietario y está construida y mantenida por miles de personas, organizaciones y usuarios de todo el mundo.",
+ "page-index-what-is-ethereum-action": "Obtener información sobre Ethereum",
+ "page-index-what-is-ether-title": "¿Qué es el ETH?",
+ "page-index-what-is-ether-description-1": "Ether (ETH) es la criptomoneda nativa que impulsa la red de Ethereum, utilizada para pagar las comisiones de transacción y asegurar la blockchain mediante el staking.",
+ "page-index-what-is-ether-description-2": "Más allá de su función técnica, ETH es dinero digital abierto y programable. Se utiliza para pagos globales, como garantía para préstamos y como reserva de valor que no depende de ninguna entidad central.",
+ "page-index-what-is-ether-action": "Obtenga más información sobre el ether",
"page-index-learn-tag": "Aprender",
+ "page-index-network-tag": "Red",
+ "page-index-token-tag": "Token",
"page-index-learn-header": "Comprenda Ethereum",
"page-index-meta-description": "Ethereum es una plataforma mundial descentralizada para el dinero y nuevos tipos de aplicaciones. En Ethereum, se pueden escribir códigos que controlan el dinero y construir aplicaciones accesibles desde cualquier rincón del mundo.",
"page-index-meta-title": "Ethereum.org: La guía completa sobre Ethereum",
@@ -74,13 +87,13 @@
"page-index-network-stats-total-value-held": "Valor total mantenido en Ethereum",
"page-index-popular-topics-ethereum": "¿Qué es Ethereum?",
"page-index-popular-topics-header": "Temas populares",
- "page-index-popular-topics-action": "Otros temas",
+ "page-index-popular-topics-action": "Más guías en el Centro de aprendizaje de Ethereum",
"page-index-popular-topics-roadmap": "Hoja de ruta de Ethereum",
- "page-index-popular-topics-start": "Cómo empezar, paso a paso",
+ "page-index-popular-topics-start": "Guías paso a paso de Ethereum",
"page-index-popular-topics-wallets": "¿Qué son las carteras de criptomonedas?",
- "page-index-popular-topics-whitepaper": "Informe de Ethereum",
+ "page-index-popular-topics-whitepaper": "Informe oficial de Ethereum",
"page-index-posts-action": "Leer más sobre estos sitios web",
- "page-index-posts-header": "Publicaciones recientes",
+ "page-index-posts-header": "Noticias de Ethereum",
"page-index-posts-subtitle": "Las últimas publicaciones de blog y actualizaciones de la comunidad",
"page-index-title": "Bienvenidos a Ethereum",
"page-index-use-cases-tag": "Casos de uso",
@@ -116,14 +129,12 @@
"page-index-values-censorship-ethereum-content-0": "La resistencia a la opresión es el principio fundamental de Ethereum. Su funcionalidad debe ser siempre justa e imparcial.",
"page-index-values-censorship-ethereum-content-1": "Ethereum no puede ser controlado por ningún estado nacional, empresa ni individuo.",
"page-index-values-open-legacy-label": "Cerrado a la mayoría",
- "page-index-values-open-legacy-content-0": "Las empresas protegen su propiedad intelectual y no la comparten. Nadie fuera de la empresa puede ver cómo funcionan las cosas, solucionar problemas ni realizar mejoras. Es difícil para las personas crear nuevas herramientas o personalizarlas.",
+ "page-index-values-open-legacy-content-0": "Las empresas protegen su propiedad intelectual y no la comparten. Nadie fuera de la empresa puede ver cómo funcionan las cosas, solucionar problemas o hacer mejoras. Es difícil que las personas creen nuevas herramientas o personalicen las existentes.",
"page-index-values-open-ethereum-label": "Abierto a todos",
"page-index-values-open-ethereum-content-0": "Ethereum es de código abierto. Cualquiera puede ver, usar y mejorar el código, haciéndolo mejor para todos.",
- "page-index-devconnect-banner-join-the-biggest-ethereum-event-of-the-year": "Únase al evento de Ethereum más grande del año",
- "page-index-devconnect-banner-get-tickets": "Conseguir entradas",
- "page-index-fusaka-network-upgrade": "Actualización de red",
- "page-index-fusaka-description": "Para una red Ethereum más rápida, segura y fácil de usar |",
- "page-index-fusaka-read-more": "Leer más",
+ "page-index-fusaka-network-upgrade": "Actualización de la red",
+ "page-index-fusaka-description": "Para una red de Ethereum más rápida, segura y fácil de usar |",
+ "page-index-fusaka-read-more": "Más información",
"page-index-fusaka-going-live-in": "Se activará en",
- "page-index-fusaka-live-now": "Activo ahora"
+ "page-index-fusaka-live-now": "En directo"
}
\ No newline at end of file
From cfec08c79692abb6cb14ef47a090756ce8195175 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:45:54 -0300
Subject: [PATCH 009/589] update(i18n): src/intl/es/page-roadmap.json
---
src/intl/es/page-roadmap.json | 101 ++++++++++++++++++++++++++++++++++
1 file changed, 101 insertions(+)
create mode 100644 src/intl/es/page-roadmap.json
diff --git a/src/intl/es/page-roadmap.json b/src/intl/es/page-roadmap.json
new file mode 100644
index 00000000000..e814a45e3a4
--- /dev/null
+++ b/src/intl/es/page-roadmap.json
@@ -0,0 +1,101 @@
+{
+ "page-roadmap-title": "Hoja de ruta de Ethereum",
+ "page-roadmap-meta-title": "Hoja de ruta de Ethereum | ethereum.org",
+ "page-roadmap-meta-description": "El camino hacia una mayor escalabilidad, seguridad y sostenibilidad para Ethereum.",
+ "page-roadmap-banner-notification": "El desarrollo de Ethereum está impulsado por la comunidad y puede cambiar.",
+ "page-roadmap-changes-coming-title": "¿Qué cambios le esperan a Ethereum?",
+ "page-roadmap-changes-coming-description": "Ethereum ya es una plataforma poderosa, pero va mejorando día a día. Un conjunto de mejoras ambicioso actualizará Etheruem para que pase de su forma actual a una plataforma totalmente escalable y máximamente resiliente.",
+ "page-roadmap-cheaper-transactions-title": "Transacciones más baratas",
+ "page-roadmap-cheaper-transactions-description": "Los rollups son demasiado caros y dependen de componentes centralizados, haciendo que los usuarios depositen demasiada fe en sus operadores. La hoja de ruta incluye soluciones a estos dos problemas.",
+ "page-roadmap-cheaper-transactions-button": "Más sobre la reducción de las comisiones",
+ "page-roadmap-extra-security-title": "Mayor seguridad",
+ "page-roadmap-extra-security-description": "Ethereum ya es muy seguro, pero puede volverse todavía más fuerte y listo para hacer frente a todo tipo de ataques a largo plazo.",
+ "page-roadmap-extra-security-button": "Más sobre seguridad",
+ "page-roadmap-better-user-experience-title": "Mejor experiencia de usuario",
+ "page-roadmap-better-user-experience-description": "Un mayor soporte para carteras de contratos inteligentes y nodos ligeros hará que utilizar Ethereum sea más sencillo y seguro.",
+ "page-roadmap-better-user-experience-button": "Más sobre la experiencia de usuario",
+ "page-roadmap-future-proofing-title": "De cara al futuro",
+ "page-roadmap-future-proofing-description": "Los investigadores y desarrolladores de Ethereum están resolviendo hoy los programas del mañana, preparando la red para generaciones futuras.",
+ "page-roadmap-future-proofing-button": "Más sobre cómo prepararse para el futuro",
+ "page-roadmap-why-need-title": "¿Por qué Ethereum necesita una hoja de ruta?",
+ "page-roadmap-why-need-description": "Ethereum recibe actualizaciones frecuentes que mejoran su escalabilidad, seguridad o sostenibilidad. Una de las fortalezas principales de Ethereum es adaptarse a medida que surgen nuevas ideas gracias a la investigación y el desarrollo. Esa adaptabilidad le da a Ethereum la flexibilidad para abordar nuevos desafíos y mantenerse al día de las innovaciones tecnológicas más avanzadas.",
+ "page-roadmap-how-defined-title": "Cómo se define la hoja de ruta",
+ "page-roadmap-how-defined-p1": "La hoja de ruta es principalmente el resultado de años de trabajo de investigadores y desarrolladores, dado que el protocolo es muy técnico. No obstante cualquier persona motivada puede participar.",
+ "page-roadmap-how-defined-p2": "Las ideas normalmente surgen como debates en foros como ethresear.ch, Los magos de Ethereum o el servidor de Discord Eth R&D. Pueden ser respuestas a nuevas vulnerabilidades que se descubren, sugerencias de organizaciones que están trabajando en la capa de aplicación (como DApps y plataformas de intercambio) o de problemas para usuarios finales (como los costes o la velocidad de las transacciones).",
+ "page-roadmap-how-defined-p3": "Cuando estas ideas maduran, pueden ser propuestas como propuestas de mejora de Ethereum. Todo esto se hace en público para que cualquier persona de la comunidad pueda intervenir en cualquier momento.",
+ "page-roadmap-governance-button": "Más acerca de la gobernanza de Ethereum",
+ "page-roadmap-hero-alt": "Hoja de ruta de Ethereum",
+ "page-roadmap-technical-upgrades-title": "¿Cuáles son las siguientes actualizaciones técnicas para Ethereum?",
+ "page-roadmap-danksharding-title": "Danksharding",
+ "page-roadmap-danksharding-description": "Danksharding abarata mucho los rollups de L2 a los usuarios añadiendo «blobs» de datos a los bloques de Ethereum.",
+ "page-roadmap-single-slot-finality-title": "Finalidad de la ranura única",
+ "page-roadmap-single-slot-finality-description": "En vez de esperar quince minutos, los bloques podrían proponerse y completarse en la misma ranura. Esto es más conveniente para aplicaciones y más difícil de atacar.",
+ "page-roadmap-account-abstraction-title": "Abstracción de cuenta",
+ "page-roadmap-account-abstraction-description": "La abstracción de cuenta es un conjunto de actualizaciones que dan soporte a carteras de contratos inteligentes de forma nativa en Ethereum, en vez de tener que usar código intermedio complejo.",
+ "page-roadmap-statelessness-title": "Sin estado",
+ "page-roadmap-statelessness-description": "Los clientes sin estado serán capaces de verificar nuevos bloques sin tener que almacenar grandes cantidades de datos. Esto proporcionará todos los beneficios de ejecutar un nodo por solo una pequeña parte de los costes actuales.",
+ "page-roadmap-learn-more": "Más información",
+ "page-roadmap-timeline-title": "¿Cuál es el calendario para estas actualizaciones?",
+ "page-roadmap-blocks-alt": "Bloques de Ethereum",
+ "page-roadmap-faq-1-title": "¿Cambiará la hoja de ruta de Ethereum con el tiempo?",
+ "page-roadmap-faq-1-p1": "Sí, casi seguro que sí.",
+ "page-roadmap-faq-1-p1-continued": "La hoja de ruta es el plan actual para actualizar Ethereum, que incluye tanto planes a corto como a largo plazo. Esperamos que la hoja de ruta cambie a medida que aparezca nueva información y tecnología.",
+ "page-roadmap-faq-1-p2": "Piense en la hoja de ruta de Ethereum como un conjunto de intenciones para mejorar Ethereum; es la mejor hipótesis de los investigadores y los desarrolladores principales sobre el camino más óptimo hacia adelante para Ethereum.",
+ "page-roadmap-faq-2-title": "¿Cuándo terminará la hoja de ruta?",
+ "page-roadmap-faq-2-p1": "Algunas actualizaciones tienen una prioridad más baja y es probable que no se implementen durante los próximos 5-10 años (por ejemplo, la resistencia cuántica).",
+ "page-roadmap-faq-2-p1-strong": "Es complicado especificar el momento preciso de cada actualización",
+ "page-roadmap-faq-2-p1-continued": "de predecir, ya que muchos elementos de la hoja de ruta se abordan al mismo tiempo y se desarrollan a diferentes velocidades. La urgencia de una actualización también puede cambiar con el tiempo dependiendo de factores externos (como por ejemplo, un salto repentino en el rendimiento y la disponibilidad de ordenadores cuánticos puede hacer que la criptografía resistente a la computación cuántica sea más urgente).",
+ "page-roadmap-faq-2-p2": "Una forma de pensar en el desarrollo de Ethereum es por analogía con la evolución biológica. Es más probable que una red que pueda adaptarse a los nuevos desafíos y mantener su buena forma tenga éxito, que una resistente al cambio. Aunque, a medida que la red se vuelve cada vez más eficiente, escalable y segura, se requerirán menos cambios en el protocolo.",
+ "page-roadmap-faq-3-title": "¿Tengo que hacer algo para prepararme para estas actualizaciones?",
+ "page-roadmap-faq-3-p1": "Las actualizaciones no suelen afectar a los usuarios más allá de proporcionarles mejores experiencias de usuario y un protocolo más seguro, y tal vez más opciones sobre cómo interactuar con Ethereum. Los usuarios normales no tienen que participar activamente en una actualización, ni tienen que hacer nada** para mantener sus activos seguros. Los operadores de nodos tendrán que actualizar sus clientes para prepararse para una actualización. Algunas actualizaciones podrían provocar cambios para los desarrolladores de aplicaciones. Por ejemplo, las actualizaciones de vencimiento del historial podrían obligar a los desarrolladores de aplicaciones a obtener datos históricos de nuevas fuentes.",
+ "page-roadmap-faq-4-title": "¿Qué pasa con la fragmentación?",
+ "page-roadmap-faq-4-p1": "La fragmentación es la división de la cadena de bloques de Ethereum de forma que subconjuntos de validadores sean solo responsables de una parte de los datos totales. Se pensó que esto sería la forma de escalar Ethereum. Sin embargo, los rollups de capa 2 se han desarrollado más rápidamente de lo esperado y ya han proporcionado mucha escalabilidad, y proporcionarán mucha más después de implementar Proto-Danksharding. Esto significa que las «cadenas de fragmentos» ya no hacen falta y se han sido sacadas de la hoja de ruta.",
+ "page-roadmap-release-status-prod": "En producción",
+ "page-roadmap-release-status-soon": "Próximamente",
+ "page-roadmap-release-status-dev": "En desarrollo",
+ "page-roadmap-release-main-features": "Características principales",
+ "page-roadmap-release-learn-more": "Más información",
+ "page-roadmap-paris-pos-title": "Transición a prueba de participación",
+ "page-roadmap-paris-pos-item-1": "Reemplazo de una minería de gran consumo energético por un consenso basado en la participación",
+ "page-roadmap-paris-pos-item-2": "Reducción del consumo energético de Ethereum en un ~99,95 %",
+ "page-roadmap-paris-beacon-title": "Integración de la cadena de baliza",
+ "page-roadmap-paris-beacon-item-1": "Fusionó la cadena de baliza con la red principal de Ethereum",
+ "page-roadmap-paris-beacon-item-2": "Permitió la transición completa a un mecanismo de consenso PoS",
+ "page-roadmap-paris-difficulty-title": "Eliminación de la bomba de dificultad",
+ "page-roadmap-paris-difficulty-item-1": "Eliminó la bomba de dificultad que estaba aumentando la dificultad de minado",
+ "page-roadmap-paris-difficulty-item-2": "Garantizó una transición sin complicaciones al nuevo mecanismo de consenso",
+ "page-roadmap-shapella-withdrawals-title": "Retiradas de participaciones",
+ "page-roadmap-shapella-withdrawals-item-1": "Permitió a los validadores retirar sus ETH participados y recompensas",
+ "page-roadmap-shapella-withdrawals-item-2": "Introdujo capacidades de retirada parciales y completas",
+ "page-roadmap-shapella-eip4895-title": "EIP-4895: empujones de retirada de la cadena de baliza",
+ "page-roadmap-shapella-eip4895-item-1": "Añadió una nueva operación dentro del sistema para retiradas",
+ "page-roadmap-shapella-eip4895-item-2": "Garantizó un procesamiento seguro y eficiente para peticiones de retirada",
+ "page-roadmap-shapella-eip3651-title": "EIP-3651: COINBASE en línea",
+ "page-roadmap-shapella-eip3651-item-1": "Redujo los costes de gas para acceder a la dirección COINBASE",
+ "page-roadmap-shapella-eip3651-item-2": "Aumentó la eficiencia de ciertas operaciones de contratos inteligentes",
+ "page-roadmap-dencun-danksharding-title": "Proto-danksharding (EIP-4844)",
+ "page-roadmap-dencun-danksharding-item-1": "Introdujo transacciones de blobs para reducir significativamente los costes de rollups de transacciones",
+ "page-roadmap-dencun-danksharding-item-2": "Añadió un nuevo tipo de transacción que almacena datos de forma temporal y barata",
+ "page-roadmap-dencun-eip1153-title": "EIP-1153: códigos de operación de almacenamiento transitorio",
+ "page-roadmap-dencun-eip1153-item-1": "Añadió los códigos de operación TSTORE y TLOAD para un almacenamiento temporal durante la ejecución de transacciones",
+ "page-roadmap-dencun-eip1153-item-2": "Permite patrones de contratos inteligentes más eficientes y reduce los costes de gas",
+ "page-roadmap-dencun-eip4788-title": "EIP-4788: raíz de bloques de baliza en la EVM",
+ "page-roadmap-dencun-eip4788-item-1": "Expone información de la capa de consenso a contratos inteligentes",
+ "page-roadmap-dencun-eip4788-item-2": "Permite aplicaciones nuevas de confianza mínima requerida y puentes entre cadenas",
+ "page-roadmap-pectra-eoa-title": "Mejora las carteras EOA con funciones de contratos inteligentes",
+ "page-roadmap-pectra-eoa-item-1": "Los usuarios pueden configurar su dirección para que se represente con un código de un contrato inteligente existente y obtener beneficios como el procesamiento de transacciones por lotes, patrocinio de comisiones por transacciones o mejores mecanismos de recuperación",
+ "page-roadmap-pectra-balance-title": "Incremento del balance efectivo máximo",
+ "page-roadmap-pectra-balance-item-1": "Los participantes ahora pueden elegir una cantidad arbitraria de ETH con la que participar y recibir recompensas por cada 1 ETH sobre el mínimo",
+ "page-roadmap-pectra-blob-title": "Aumento del rendimiento de blobs",
+ "page-roadmap-pectra-blob-item-1": "La cantidad de blobs se aumentará del 3 al 6 deseable, con un máximo de 9, dando como resultado comisiones más bajas en rollups de Ethereum",
+ "page-roadmap-fusaka-peerdas-title": "PeerDAS (muestreo de disponibilidad de datos entre pares)",
+ "page-roadmap-fusaka-peerdas-item-1": "Habilita una disponibilidad de datos más eficiente para rollups",
+ "page-roadmap-fusaka-peerdas-item-2": "Hace que ejecutar un nodo sea más accesible manteniendo la descentralización",
+ "page-roadmap-fusaka-additional-title": "Posibles funciones adicionales",
+ "page-roadmap-fusaka-additional-item-1": "Soporte para enclaves seguros en dispositivos móviles para mejorar la experiencia del usuario",
+ "page-roadmap-fusaka-additional-item-2": "Mejoras del mercado de comisiones de blobs",
+ "page-roadmap-fusaka-additional-item-3": "Más mejoras en la eficiencia de los validadores y de la red",
+ "page-roadmap-glamsterdam-discussed-title": "Programado para Glamsterdam.",
+ "page-roadmap-glamsterdam-discussed-item-1": "Separación de proponente y constructor integrada (ePBS)",
+ "page-roadmap-glamsterdam-discussed-item-2": "Listas de acceso a nivel de bloque (BALs)"
+}
From 24f9984494ba2b4b9ca4a3b812d4d33d6ae92746 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:45:55 -0300
Subject: [PATCH 010/589] update(i18n): src/intl/es/page-layer-2.json
---
src/intl/es/page-layer-2.json | 114 +++++++++++++++++-----------------
1 file changed, 58 insertions(+), 56 deletions(-)
diff --git a/src/intl/es/page-layer-2.json b/src/intl/es/page-layer-2.json
index e1e4d055796..9842af52e37 100644
--- a/src/intl/es/page-layer-2.json
+++ b/src/intl/es/page-layer-2.json
@@ -1,58 +1,60 @@
{
- "page-layer-2-hero-title": "Capa 2",
- "page-layer-2-hero-header": "Redes de Ethereum",
- "page-layer-2-hero-description": "Utilice Ethereum por una fracción del coste.",
- "page-layer-2-hero-button-2-content": "Más información",
- "page-layer-2-period": ".",
- "page-layer-2-calloutCard-1-title": "Tarifas de 0,01 $",
- "page-layer-2-calloutCard-1-description": "Puede cambiar de divisa, enviar dinero internacionalmente, o usar aplicaciones sin preocuparse de altos costes.",
- "page-layer-2-calloutCard-2-title": "Transacciones casi instantáneas",
- "page-layer-2-calloutCard-2-description": "Tanto si se trata de realizar un pago rápido como de participar en una operación financiera descentralizada (DeFi), todas las transacciones tardan sólo unos segundos.",
- "page-layer-2-calloutCard-3-title": "Respaldado por Ethereum",
- "page-layer-2-calloutCard-3-description": "La cadena de bloques descentralizada y de eficacia probada de Ethereum funciona como capa de liquidación para otras redes más nuevas.",
- "page-layer-2-meta-title": "Introducción a la capa 2 de Ethereum: ventajas y usos",
- "page-layer-2-meta-description": "Conozca las redes de capa 2 de Ethereum",
- "page-layer-2-powered-by-ethereum-title": "Desarrollado por Ethereum",
- "page-layer-2-powered-by-ethereum-description-1": "Ethereum ya no es una única red.",
- "page-layer-2-powered-by-ethereum-description-2": "Al tener cientos de cadenas de bloques construidas sobre él, Ethereum se ha vuelto más rentable, rápido y accesible para el uso diario.",
- "page-layer-2-powered-by-ethereum-description-3": "¡Prepárese para el futuro uniéndose a una de las muchas redes impulsadas por Ethereum!",
- "page-layer-2-man-and-dog-alt": "Hombre y perro jugando",
- "page-layer-2-blockchain-transaction-cost": "Coste medio de la transacción en la cadena de bloques Ethereum",
- "page-layer-2-networks-transaction-cost": "Coste medio de transacción en redes respaldadas por Ethereum",
- "page-layer-2-network-of-networks-title": "La red de redes",
- "page-layer-2-network-of-networks-description": "La fuerza y la seguridad de Ethereum proporcionan una plataforma sobre la que pueden construirse otras redes. Con una sola cuenta, todo es compatible y se conecta a la perfección.",
- "page-layer-2-ethereum-logo-alt": "Ethereum",
- "page-layer-2-ready-to-start-title": "¿Listo para empezar?",
- "page-layer-2-ready-to-start-description": "Eche un vistazo a las diferentes redes que están a su disposición.",
- "page-layer-2-ready-to-start-button": "Explorar redes",
- "page-layer-2-go": "Ir",
- "page-layer-2-walking-alt": "Caminando",
- "page-layer-2-why-do-we-need-multiple-networks-1": "¿Por qué necesita múltiples redes en Ethereum?",
- "page-layer-2-why-do-we-need-multiple-networks-2": "¿Por qué existen todas estas redes en lugar de una sola red Ethereum?",
- "page-layer-2-faq-title": "Preguntas más frecuentes",
- "page-layer-2-faq-ExpandableCard-1-title": "¿Cómo puedo saber que una red es parte de Ethereum?",
- "page-layer-2-faq-ExpandableCard-1-description-1": "Hay muchas maneras diferentes de categorizar las redes con respecto a Ethereum. Muchas redes afirman que están escalando Ethereum para ganar popularidad. Sin embargo, un dato clave es que la red almacene sus datos en la red principal de Ethereum. Esto mejora enormemente la seguridad del usuario y la visión sin permisos de Ethereum. Este tipo de proyectos suelen denominarse de acumulación o «rollups». Si los datos se almacenan en otro lugar, entonces el proyecto no es una extensión directa de Ethereum y es más bien independiente. Consulte algunas de las más populares",
- "page-layer-2-faq-ExpandableCard-1-description-2": "Es posible que algunos sectores específicos no requieran una relación tan estrecha y directa, como los juegos o las aplicaciones no financieras, en los que encajan mejor otras tecnologías.",
- "page-layer-2-faq-ExpandableCard-2-title": "¿Son todas estas redes seguras?",
- "page-layer-2-faq-ExpandableCard-2-description-1": "Aunque generalmente se diseñan con sólidas características de seguridad, su seguridad depende de la tecnología subyacente, la seguridad de los contratos inteligentes y",
- "page-layer-2-faq-ExpandableCard-2-link": "de la madurez de la red",
- "page-layer-2-faq-ExpandableCard-2-description-2": "Los usuarios deben actuar con la diligencia debida, empezando por las transacciones pequeñas y manteniéndose actualizados de las novedades y lanzamientos, para garantizar un uso seguro.",
- "page-layer-2-faq-ExpandableCard-3-title": "¿Por qué no puede Ethereum escalar su propia cadena en lugar de depender de estas redes?",
- "page-layer-2-faq-ExpandableCard-3-description": "Ethereum no puede escalar fácilmente su propia cadena principal, porque necesita mantenerse seguro y descentralizado. Hacer la cadena principal más rápida podría hacerla menos segura y más centralizada. Las redes de Ethereum ayudan procesando las transacciones fuera de la cadena principal y utilizando esta para la seguridad, lo que permite a Ethereum gestionar más transacciones sin perder seguridad ni descentralización.",
- "page-layer-2-faq-ExpandableCard-4-title": "¿Por qué no hay redes «oficiales» de Ethereum?",
- "page-layer-2-faq-ExpandableCard-4-description": "De la misma manera que no existe un cliente «oficial» de Ethereum, tampoco hay una capa 2 «oficial» de Ethereum. Ethereum no tiene permisos, técnicamente cualquiera puede crear una capa 2. Múltiples equipos implementarán su versión de una capa 2 y el ecosistema en su conjunto se beneficiará de una diversidad de enfoques de diseño optimizados para diferentes casos de uso. Al igual que tenemos múltiples clientes de Ethereum desarrollados por varios equipos para tener diversidad en la red, así también se desarrollará la capa 2 en el futuro.",
- "page-layer-2-callout-1-title": "Explore diferentes redes",
- "page-layer-2-callout-1-description": "Aprenda en qué se diferencian las redes y hasta dónde han llegado en su desarrollo.",
- "page-layer-2-callout-2-title": "¿Le interesa conocer más detalles?",
- "page-layer-2-callout-2-description": "¿Siente curiosidad por la tecnología y las razones de este enfoque de escalabilidad? Obtenga más información sobre el concepto y los distintos enfoques tecnológicos.",
- "page-layer-2-arbitrum-description": "Arbitrum One es un rollup optimista de propósito general desarrollado por Offchain Labs y administrado por Arbitrum DAO.",
- "page-layer-2-base-description": "Base es un rollup optimista desarrollado con OP Stack. Ofrece una forma sencilla y de bajo coste para cualquier persona, en cualquier lugar, de desarrollo en cadena.",
- "page-layer-2-optimism-description": "OP Mainnet es un Optimistic Rollup equivalente a EVM. Su objetivo es ser rápida, sencilla y segura.",
- "page-layer-2-blast-description": "Blast es un rollup optimista compatible con EVM que admite el rendimiento nativo.",
- "page-layer-2-zksync2-description": "ZKsync Era es un ZK Rollup de uso general con compatibilidad total con EVM.",
- "page-layer-2-linea-description": "Linea es un ZK Rollup impulsado por Consensys zkEVM, diseñado para escalar la red Ethereum.",
- "page-layer-2-scroll-description": "Scroll es ZK Rollup, que amplía las capacidades de Ethereum mediante la tecnología ZK y la compatibilidad con EVM.",
- "page-layer-2-starknet-description": "Starknet es un ZK Rollup de propósito general basado en STARKs y en el Cairo VM.",
- "page-layer-2-mode-description": "Mode es una rollup optimista de OP Stack que se basa en la economía AIFi (finanzas por medio de inteligencia artificial).",
- "page-layer-2-taiko-description": "Taiko es un rollup ZK-EVM equivalente a Ethereum descentralizado, que permite una comunicación fluida entre cadenas."
+ "page-layer-2-hero-title": "Capa 2",
+ "page-layer-2-hero-header": "Redes de Ethereum",
+ "page-layer-2-hero-description": "Utilice Ethereum por una fracción del coste.",
+ "page-layer-2-hero-button-2-content": "Más información",
+ "page-layer-2-period": ".",
+ "page-layer-2-calloutCard-1-title": "Tarifas de 0,01 $",
+ "page-layer-2-calloutCard-1-description": "Puede comerciar, enviar dinero internacionalmente o usar aplicaciones sin preocuparse por los altos costes.",
+ "page-layer-2-calloutCard-2-title": "Transacciones casi instantáneas",
+ "page-layer-2-calloutCard-2-description": "Tanto si se trata de realizar un pago rápido como de participar en una operación financiera descentralizada (DeFi), todas las transacciones tardan sólo unos segundos.",
+ "page-layer-2-calloutCard-3-title": "Respaldado por Ethereum",
+ "page-layer-2-calloutCard-3-description": "La cadena de bloques descentralizada y de eficacia probada de Ethereum funciona como capa de liquidación para otras redes más nuevas.",
+ "page-layer-2-meta-title": "Introducción a la capa 2 de Ethereum: ventajas y usos",
+ "page-layer-2-meta-description": "Conozca las redes de capa 2 de Ethereum",
+ "page-layer-2-powered-by-ethereum-title": "Desarrollado por Ethereum",
+ "page-layer-2-powered-by-ethereum-description-1": "Ethereum ya no es una única red.",
+ "page-layer-2-powered-by-ethereum-description-2": "Al tener cientos de cadenas de bloques construidas sobre él, Ethereum se ha vuelto más rentable, rápido y accesible para el uso diario.",
+ "page-layer-2-powered-by-ethereum-description-3": "¡Prepárese para el futuro uniéndose a una de las muchas redes impulsadas por Ethereum!",
+ "page-layer-2-man-and-dog-alt": "Hombre y perro jugando",
+ "page-layer-2-blockchain-transaction-cost": "Coste medio de la transacción en la cadena de bloques Ethereum",
+ "page-layer-2-networks-transaction-cost": "Coste medio de transacción en redes respaldadas por Ethereum",
+ "page-layer-2-network-of-networks-title": "La red de redes",
+ "page-layer-2-network-of-networks-description": "La fuerza y la seguridad de Ethereum proporcionan una plataforma sobre la que pueden construirse otras redes. Con una sola cuenta, todo es compatible y se conecta a la perfección.",
+ "page-layer-2-ethereum-logo-alt": "Ethereum",
+ "page-layer-2-ready-to-start-title": "¿Listo para empezar?",
+ "page-layer-2-ready-to-start-description": "Eche un vistazo a las diferentes redes que están a su disposición.",
+ "page-layer-2-ready-to-start-button": "Explorar redes",
+ "page-layer-2-go": "Go",
+ "page-layer-2-walking-alt": "Caminando",
+ "page-layer-2-why-do-we-need-multiple-networks-1": "¿Por qué necesita múltiples redes en Ethereum?",
+ "page-layer-2-why-do-we-need-multiple-networks-2": "¿Por qué existen todas estas redes en lugar de una sola red Ethereum?",
+ "page-layer-2-faq-title": "Preguntas más frecuentes",
+ "page-layer-2-faq-ExpandableCard-1-title": "¿Cómo puedo saber que una red es parte de Ethereum?",
+ "page-layer-2-faq-ExpandableCard-1-description-1": "Hay muchas maneras diferentes de categorizar las redes con respecto a Ethereum. Muchas redes afirman que están escalando Ethereum para ganar popularidad. Sin embargo, un dato clave es que la red almacene sus datos en la red principal de Ethereum. Esto mejora enormemente la seguridad del usuario y la visión sin permisos de Ethereum. Este tipo de proyectos suelen denominarse de acumulación o «rollups». Si los datos se almacenan en otro lugar, entonces el proyecto no es una extensión directa de Ethereum y es más bien independiente. Consulte algunas de las más populares",
+ "page-layer-2-faq-ExpandableCard-1-description-2": "Es posible que algunos sectores específicos no requieran una relación tan estrecha y directa, como los juegos o las aplicaciones no financieras, en los que encajan mejor otras tecnologías.",
+ "page-layer-2-faq-ExpandableCard-2-title": "¿Son todas estas redes seguras?",
+ "page-layer-2-faq-ExpandableCard-2-description-1": "Aunque generalmente se diseñan con sólidas características de seguridad, su seguridad depende de la tecnología subyacente, la seguridad de los contratos inteligentes y",
+ "page-layer-2-faq-ExpandableCard-2-link": "de la madurez de la red",
+ "page-layer-2-faq-ExpandableCard-2-description-2": "Los usuarios deben actuar con la diligencia debida, empezando por las transacciones pequeñas y manteniéndose actualizados de las novedades y lanzamientos, para garantizar un uso seguro.",
+ "page-layer-2-faq-ExpandableCard-3-title": "¿Por qué no puede Ethereum escalar su propia cadena en lugar de depender de estas redes?",
+ "page-layer-2-faq-ExpandableCard-3-description": "Ethereum no puede escalar fácilmente su propia cadena principal, porque necesita mantenerse seguro y descentralizado. Hacer la cadena principal más rápida podría hacerla menos segura y más centralizada. Las redes de Ethereum ayudan procesando las transacciones fuera de la cadena principal y utilizando esta para la seguridad, lo que permite a Ethereum gestionar más transacciones sin perder seguridad ni descentralización.",
+ "page-layer-2-faq-ExpandableCard-4-title": "¿Por qué no hay redes «oficiales» de Ethereum?",
+ "page-layer-2-faq-ExpandableCard-4-description": "De la misma manera que no existe un cliente «oficial» de Ethereum, tampoco hay una capa 2 «oficial» de Ethereum. Ethereum no tiene permisos, técnicamente cualquiera puede crear una capa 2. Múltiples equipos implementarán su versión de una capa 2 y el ecosistema en su conjunto se beneficiará de una diversidad de enfoques de diseño optimizados para diferentes casos de uso. Al igual que tenemos múltiples clientes de Ethereum desarrollados por varios equipos para tener diversidad en la red, así también se desarrollará la capa 2 en el futuro.",
+ "page-layer-2-callout-1-title": "Explore diferentes redes",
+ "page-layer-2-callout-1-description": "Aprenda en qué se diferencian las redes y hasta dónde han llegado en su desarrollo.",
+ "page-layer-2-callout-2-title": "¿Le interesa conocer más detalles?",
+ "page-layer-2-callout-2-description": "¿Siente curiosidad por la tecnología y las razones de este enfoque de escalabilidad? Obtenga más información sobre el concepto y los distintos enfoques tecnológicos.",
+ "page-layer-2-arbitrum-description": "Arbitrum One es un rollup optimista de propósito general desarrollado por Offchain Labs y administrado por Arbitrum DAO.",
+ "page-layer-2-base-description": "Base es un rollup optimista desarrollado con OP Stack. Ofrece una forma sencilla y de bajo coste para cualquier persona, en cualquier lugar, de desarrollo en cadena.",
+ "page-layer-2-optimism-description": "OP Mainnet es un Optimistic Rollup equivalente a EVM. Su objetivo es ser rápida, sencilla y segura.",
+ "page-layer-2-blast-description": "Blast es un rollup optimista compatible con EVM que admite el rendimiento nativo.",
+ "page-layer-2-zksync2-description": "ZKsync Era es un ZK Rollup de uso general con compatibilidad total con EVM.",
+ "page-layer-2-linea-description": "Linea es un ZK Rollup impulsado por Consensys zkEVM, diseñado para escalar la red Ethereum.",
+ "page-layer-2-scroll-description": "Scroll es ZK Rollup, que amplía las capacidades de Ethereum mediante la tecnología ZK y la compatibilidad con EVM.",
+ "page-layer-2-starknet-description": "Starknet es un ZK Rollup de propósito general basado en STARKs y en el Cairo VM.",
+ "page-layer-2-mode-description": "Mode es una rollup optimista de OP Stack que se basa en la economía AIFi (finanzas por medio de inteligencia artificial).",
+ "page-layer-2-taiko-description": "Taiko es un rollup ZK-EVM equivalente a Ethereum descentralizado, que permite una comunicación fluida entre cadenas.",
+ "page-layer-2-unichain-description": "Unichain es una solución de capa 2 de Ethereum nativa de DeFi, creada para ser el hogar de la liquidez entre cadenas.",
+ "page-layer-2-ink-description": "Ink es una blockchain de capa 2 basada en OP Stack de Ethereum, diseñada para ser la casa de DeFi para la Superchain; una base poderosa para desplegar protocolos DeFi innovadores."
}
From 458492c8ca98e5ff1b031a059622bbd9b2513e4a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:45:56 -0300
Subject: [PATCH 011/589] update(i18n): src/intl/es/page-get-eth.json
From 6a541d35f5ba9da8f31b0708161ab5a275fea463 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:45:58 -0300
Subject: [PATCH 012/589] update(i18n): src/intl/es/page-wallets.json
---
src/intl/es/page-wallets.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/intl/es/page-wallets.json b/src/intl/es/page-wallets.json
index 465915767c0..bb26bd56acf 100644
--- a/src/intl/es/page-wallets.json
+++ b/src/intl/es/page-wallets.json
@@ -43,7 +43,7 @@
"page-wallets-stay-safe-desc": "La libertad financiera y la capacidad de acceder y utilizar fondos en cualquier lugar conlleva responsabilidad: no hay soporte al cliente en criptomonedas. Usted es responsable de mantener tus claves seguras y protegidas.",
"page-wallets-subtitle": "Las carteras le ayudan a acceder a sus activos digitales y a sus aplicaciones.",
"page-wallets-take-responsibility": "Asuma la responsabilidad de sus propios fondos",
- "page-wallets-take-responsibility-desc": "Las plataformas de intercambios centralizados conectan su cartera a un nombre de usuario y a una contraseña que puede recuperar de la manera convencional. Pero recuerde que está confiando la custodia de sus fondos a la plataforma de intercambio. Si la plataforma de intercambio tiene problemas financieros, sus fondos estarían en riesgo.",
+ "page-wallets-take-responsibility-desc": "Los exchanges centralizados vincularán su cartera a un nombre de usuario y una contraseña que usted puede recuperar de la manera tradicional. Solo recuerde que está confiando la custodia de sus fondos a ese exchange. Si el exchange tiene problemas financieros, sus fondos estarían en riesgo.",
"page-wallets-tips": "Más consejos sobre cómo mantenerse seguro",
"page-wallets-tips-community": "De la comunidad",
"page-wallets-title": "Carteras de Ethereum",
From 494b03aba279f027720c66b90635c88248da235e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:45:59 -0300
Subject: [PATCH 013/589] update(i18n): src/intl/es/page-founders.json
---
src/intl/es/page-founders.json | 94 +++++++++++++++++-----------------
1 file changed, 47 insertions(+), 47 deletions(-)
diff --git a/src/intl/es/page-founders.json b/src/intl/es/page-founders.json
index 0199bb80f8c..9a76babf53a 100644
--- a/src/intl/es/page-founders.json
+++ b/src/intl/es/page-founders.json
@@ -1,65 +1,65 @@
{
- "page-founders-accelerators-alliance-description": "Alliance es la principal aceleradora de cripto y la comunidad de fundadores. Ahora acepta startups de IA.",
- "page-founders-accelerators-alliance-highlight-1": "$500K en financiación",
- "page-founders-accelerators-base-description": "Base Batches es un programa global para desarrolladores que crean la próxima ola de aplicaciones onchain",
- "page-founders-accelerators-base-highlight-1": "Hasta $1M de financiación",
- "page-founders-accelerators-growth-label": "Aceleradoras y Crecimiento",
- "page-founders-accelerators-kernel-description": "Kernel se trata de construir lentamente, a través de interacciones repetidas con pares.",
- "page-founders-accelerators-kernel-highlight-1": "Más de 2.200 becarios",
+ "page-founders-accelerators-alliance-description": "Alliance es el principal acelerador cripto y comunidad de fundadores. Ahora aceptando startups de IA.",
+ "page-founders-accelerators-alliance-highlight-1": "Financiamiento de $500K",
+ "page-founders-accelerators-base-description": "Base Batches es un programa global para creadores desarrollando la próxima ola de aplicaciones onchain",
+ "page-founders-accelerators-base-highlight-1": "Financiamiento de hasta $1M",
+ "page-founders-accelerators-growth-label": "Aceleradoras y crecimiento",
+ "page-founders-accelerators-kernel-description": "Kernel trata de construir lentamente, a través de interacciones repetidas con colegas.",
+ "page-founders-accelerators-kernel-highlight-1": "Más de 2,200 becarios",
"page-founders-accelerators-kernel-highlight-2": "Más de 150 proyectos activos",
- "page-founders-apply-h2": "Solicita apoyo",
- "page-founders-apply-p1": "Elige tu camino y serás dirigido al siguiente paso más relevante.",
- "page-founders-cta-explore-name": "Explora {name}",
- "page-founders-cta-visit-name": "Visita {name}",
- "page-founders-description": "Un centro dedicado para que los emprendedores accedan a programas, mentoría y visibilidad en todo el ecosistema de Ethereum, brindando a los fundadores el apoyo que necesitan en cada etapa.",
- "page-founders-funding-arbitrum-description": "La misión es empoderar a los desarrolladores y emprendedores para construir DApps impactantes que aprovechen las capacidades de la red Arbitrum",
+ "page-founders-apply-h2": "Solicitar apoyo",
+ "page-founders-apply-p1": "Elija su camino y será dirigido al siguiente paso más relevante.",
+ "page-founders-cta-explore-name": "Explorar {name}",
+ "page-founders-cta-visit-name": "Visite {name}",
+ "page-founders-description": "Un centro dedicado para que emprendedores accedan a programas, mentoría y visibilidad en todo el ecosistema de Ethereum, proporcionando a los fundadores el apoyo necesario en cada etapa.",
+ "page-founders-funding-arbitrum-description": "La misión es empoderar a desarrolladores y emprendedores para crear DApps impactantes que aprovechen las capacidades de la red Arbitrum.",
"page-founders-funding-arbitrum-highlight-1": "Más de 300 proyectos apoyados",
- "page-founders-funding-base-description": "Las subvenciones para desarrolladores (Builder Grants) son experimentos continuos para reconocer a los desarrolladores de Base.",
- "page-founders-funding-base-highlight-1": "Subvenciones de 1 a 5 ETH",
- "page-founders-funding-esp-description": "Asignar recursos a proyectos críticos, ser una voz valorada dentro del ecosistema de Ethereum y abogar por Ethereum ante el mundo exterior.",
- "page-founders-funding-esp-highlight-1": "Más de 2.000 proyectos apoyados",
+ "page-founders-funding-base-description": "Las Builder Grants son experimentos continuos para reconocer a los creadores de Base.",
+ "page-founders-funding-base-highlight-1": "Becas de 1-5 ETH",
+ "page-founders-funding-esp-description": "Asignando recursos a proyectos críticos, siendo una voz valiosa dentro del ecosistema de Ethereum y promoviendo Ethereum hacia el mundo exterior.",
+ "page-founders-funding-esp-highlight-1": "Más de 2,000 proyectos apoyados",
"page-founders-funding-label": "Financiación",
- "page-founders-funding-optimism-description": "Apoyo para desarrolladores individuales y equipos que crean aplicaciones onchain, herramientas e infraestructura para avanzar en la Superchain.",
+ "page-founders-funding-optimism-description": "Apoyo para creadores individuales y equipos que desarrollan aplicaciones onchain, herramientas e infraestructura para avanzar en la Superchain.",
"page-founders-funding-optimism-highlight-1": "19 cadenas elegibles",
"page-founders-funding-optimism-highlight-2": "Más de 700 proyectos apoyados",
- "page-founders-funding-polygon-description": "Un programa de subvenciones comunitarias para apoyar a desarrolladores, equipos y creadores comprometidos con el crecimiento de Polygon",
+ "page-founders-funding-polygon-description": "Un programa de subvenciones comunitarias para apoyar a creadores, equipos y creadores comprometidos con el crecimiento de Polygon",
"page-founders-funding-polygon-highlight-1": "Construyendo o migrando a Polygon",
- "page-founders-funding-unichain-description": "Una serie de programas y recursos diseñados para apoyar a la comunidad de desarrolladores emergentes de Unichain",
- "page-founders-funding-unichain-highlight-1": "Nuevos mecanismos DeFi",
+ "page-founders-funding-unichain-description": "Una serie de programas y recursos diseñados para apoyar a la comunidad de desarrolladores emergente de Unichain",
+ "page-founders-funding-unichain-highlight-1": "Mecanismos DeFi novedosos",
"page-founders-get-in-touch-cta": "Solicitar apoyo",
- "page-founders-get-in-touch-h2": "Equipo de Founder Success de Ethereum Foundation",
- "page-founders-get-in-touch-p1": "Founder Success es para desarrolladores con ideas audaces, emprendedores que ven Ethereum como la base para productos y negocios que pueden dar forma al futuro.",
- "page-founders-metadata-description": "Empoderando a los fundadores en Ethereum con programas, mentoría y recursos. Descubre cómo el ecosistema de Ethereum apoya a los emprendedores desde la idea hasta el crecimiento.",
- "page-founders-metadata-title": "Apoyo a Fundadores",
- "page-founders-partnerships-devconnect-description": "Devconnect ARG es la Feria Mundial de Ethereum: Un escaparate de aplicaciones y un evento para conectar, construir y acelerar la adopción de Ethereum.",
- "page-founders-partnerships-ef-founder-support-cta": "Programar introducción",
- "page-founders-partnerships-ef-founder-support-description": "Coordinación de reparto de ingresos, liquidez y asociaciones. El equipo de Founder Success de EF ayuda a conectar a los equipos adecuados para lograrlo.",
+ "page-founders-get-in-touch-h2": "Equipo de Éxito de Fundadores de la Fundación Ethereum",
+ "page-founders-get-in-touch-p1": "Founder Success es para creadores con ideas audaces, emprendedores que ven Ethereum como la base para productos y negocios que pueden dar forma al futuro.",
+ "page-founders-metadata-description": "Empoderando a fundadores en Ethereum con programas, mentoría y recursos. Descubra cómo el ecosistema de Ethereum apoya a los emprendedores desde la idea hasta el crecimiento.",
+ "page-founders-metadata-title": "Soporte para fundadores",
+ "page-founders-partnerships-devconnect-description": "Devconnect ARG es la Feria Mundial de Ethereum: Una exhibición de aplicaciones y un evento para conectar, construir y acelerar la adopción de Ethereum.",
+ "page-founders-partnerships-ef-founder-support-cta": "Agendar presentación",
+ "page-founders-partnerships-ef-founder-support-description": "Coordinando reparto de ingresos, liquidez y asociaciones. El Equipo de Éxito de Fundadores de la EF ayuda a conectar los equipos adecuados para que esto suceda.",
"page-founders-partnerships-ef-founder-support-subtitle": "Presentaciones a Protocolos/Equipos DeFi",
- "page-founders-partnerships-ens-description": "El programa tiene como objetivo empoderar proyectos que hayan demostrado una utilidad e impacto excepcionales tanto para desarrolladores como para usuarios.",
- "page-founders-partnerships-ens-highlight-1": "Pequeñas subvenciones de hasta 2 ETH",
- "page-founders-partnerships-ens-highlight-2": "Grandes subvenciones de hasta 50k USDC",
+ "page-founders-partnerships-ens-description": "El programa tiene como objetivo empoderar proyectos que han demostrado una utilidad e impacto excepcionales tanto para desarrolladores como para usuarios.",
+ "page-founders-partnerships-ens-highlight-1": "Subvenciones pequeñas hasta 2 ETH",
+ "page-founders-partnerships-ens-highlight-2": "Subvenciones grandes hasta 50k USDC",
"page-founders-partnerships-ethglobal-description": "Eventos globales que fomentan un ecosistema de clase mundial de desarrolladores y emprendedores de Ethereum.",
- "page-founders-partnerships-label": "Asociaciones e Integraciones",
- "page-founders-partnerships-protocol-guild-description": "Organización de financiación independiente para desarrolladores principales de Ethereum. Financiamos proactivamente a los mantenedores que realizan el trabajo del que depende el ecosistema.",
+ "page-founders-partnerships-label": "Alianzas e integraciones",
+ "page-founders-partnerships-protocol-guild-description": "Organización independiente de financiamiento para desarrolladores principales de Ethereum. Financiamos proactivamente a quienes mantienen el trabajo del que depende el ecosistema.",
"page-founders-partnerships-protocol-guild-highlight-1": "$28M recaudados para desarrolladores principales",
- "page-founders-partnerships-unichain-description": "Una serie de programas y recursos diseñados para apoyar a la comunidad de desarrolladores emergentes de Unichain",
- "page-founders-partnerships-unichain-highlight-1": "Nuevos mecanismos DeFi",
- "page-founders-story-dith-p1": "El Founder Support de EF fue excelente; fueron un gran socio de pensamiento imparcial y asesor para nosotros mientras completábamos nuestra primera recaudación de fondos. No dudo en recomendar a otros fundadores EVM que se pongan en contacto con ellos.",
- "page-founders-story-fahim-p1": "El equipo de Founders Success es un gran activo para el ecosistema de Ethereum. Realmente se preocupan por ayudar a los equipos a ganar, y su apoyo práctico y compromiso genuino para ayudar a equipos como Optimism es evidente. Estoy emocionado de seguir colaborando con ellos y fortaleciendo nuestro ecosistema juntos.",
- "page-founders-story-kedian-p1": "Nuestro contacto en la EF ha sido fundamental para guiarnos, no solo al compartir ideas valiosas sobre nuestra próxima característica, sino también al presentarnos a L2 clave en el ecosistema de Ethereum.",
- "page-founders-story-kedian-p2": "Gracias a sus comentarios sobre nuestra estrategia de comercialización (GTM), aceleramos la toma de decisiones, redujimos el tiempo dedicado a la investigación y nos centramos directamente en la ejecución.",
+ "page-founders-partnerships-unichain-description": "Una serie de programas y recursos diseñados para apoyar a la comunidad de desarrolladores emergente de Unichain",
+ "page-founders-partnerships-unichain-highlight-1": "Mecanismos DeFi novedosos",
+ "page-founders-story-dith-p1": "El apoyo de EF Founder fue excelente, fueron un gran socio de pensamiento imparcial y consejero para nosotros mientras completábamos nuestra primera recaudación de fondos. No tengo ninguna duda en recomendar a otros fundadores de EVM que se acerquen a ellos.",
+ "page-founders-story-fahim-p1": "El equipo de Founder Success es un gran valor para el ecosistema de Ethereum. Realmente les importa ayudar a los equipos a alcanzar el éxito, y su apoyo práctico y su compromiso genuino con ayudar a equipos como Optimism son evidentes. Me entusiasma seguir colaborando con ellos y fortalecer nuestro ecosistema juntos.",
+ "page-founders-story-kedian-p1": "Nuestro contacto en la EF ha sido fundamental para guiarnos, no solo compartiendo valiosos conocimientos sobre nuestra próxima función, sino también presentándonos a L2 clave en el ecosistema de Ethereum.",
+ "page-founders-story-kedian-p2": "Gracias a sus comentarios sobre nuestra estrategia GTM, aceleramos la toma de decisiones, reducimos el tiempo dedicado a la investigación y nos enfocamos directamente en la ejecución.",
"page-founders-succeed-h2": "Cómo otros tuvieron éxito",
- "page-founders-succeed-p1": "No tienes que construir solo, este ecosistema te respalda.",
- "page-founders-support-tag-accelerator": "Aceleradora",
- "page-founders-support-tag-active": "Activo",
- "page-founders-support-tag-audit-grants": "Subvenciones para auditorías",
+ "page-founders-succeed-p1": "No tiene que construir solo, este ecosistema le respalda.",
+ "page-founders-support-tag-accelerator": "Acelerador",
+ "page-founders-support-tag-active": "Activos",
+ "page-founders-support-tag-audit-grants": "Subvenciones de auditoría",
"page-founders-support-tag-ecosystem-events": "Eventos del ecosistema",
"page-founders-support-tag-events": "Eventos",
"page-founders-support-tag-fundraising": "Recaudación de fondos",
"page-founders-support-tag-grant-program": "Programa de subvenciones",
"page-founders-support-tag-mentorship": "Mentoría",
- "page-founders-support-tag-networking": "Networking",
- "page-founders-support-tag-public-goods": "Bienes Públicos",
- "page-founders-support-tag-tooling-infra": "Herramientas e Infraestructura",
- "page-founders-title": "Empoderando a Fundadores en Ethereum"
+ "page-founders-support-tag-networking": "Red de contactos",
+ "page-founders-support-tag-public-goods": "Bienes públicos",
+ "page-founders-support-tag-tooling-infra": "Herramientas e infraestructura",
+ "page-founders-title": "Empoderando a los fundadores en Ethereum"
}
From 64d134a883863977f87fe748c0c87e880c027178 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:01 -0300
Subject: [PATCH 014/589] update(i18n): src/intl/es/page-community.json
---
src/intl/es/page-community.json | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/intl/es/page-community.json b/src/intl/es/page-community.json
index 4247bcf2e72..0418b7266cd 100644
--- a/src/intl/es/page-community.json
+++ b/src/intl/es/page-community.json
@@ -2,11 +2,14 @@
"page-community-card-1-title": "Únase a una comunidad en línea",
"page-community-card-1-description": "Encuentre a su tribu y participe en comunidad con otros entusiastas de Ethereum.",
"page-community-card-2-title": "Eventos de Ethereum",
- "page-community-card-2-description": "Encuentre y participe en una conferencia, hackathon o encuentro de Ethereum.",
+ "page-community-card-2-description": "Encuentre y participe en una conferencia, hackatón o encuentro de Ethereum.",
"page-community-card-3-title": "Contribuir con un proyecto",
"page-community-card-3-description": "Descubra en esta lista todas las formas en las que puede involucrarse y contribuir, según sus habilidades y experiencia profesional.",
"page-community-card-4-title": "Buscar subvenciones",
"page-community-card-4-description": "Hay subvenciones disponibles para ayudarte a poner en marcha un proyecto.",
+ "page-community-community-hub-list-h3": "Foro de la comunidad",
+ "page-community-community-hub-list-cta-label-1": "Inscripción para el cotrabajo",
+ "page-community-community-hub-list-cta-label-2": "Encuentro",
"page-community-contribute": "Contribuir con ethereum.org",
"page-community-contribute-button": "Más información sobre cómo contribuir",
"page-community-contribute-description": "Para mucha gente, ethereum.org es su primer paso dentro de un ecosistema, que miles de colaboradores de código abierto actualizan y puntualizan. ¿Quiere ayudar? Lee nuestra guía sobre cómo contribuir, o solucione algún problema en nuestro GitHub.",
@@ -32,7 +35,7 @@
"page-community-hero-title": "Únase a la comunidad",
"page-community-meetuplist-no-meetups": "No tenemos ningún encuentro que coincida con esta búsqueda. ¿Sabe de alguno?",
"page-community-meta-title": "Foro de la comunidad",
- "page-community-meta-description": "Descripción de la página de inicio de la comunidad",
+ "page-community-meta-description": "Centro comunitario para el ecosistema de Ethereum",
"page-community-open-source": "¿Creador? ¿Desarrollador? Reciba un salario por tu trabajo.",
"page-community-open-source-description": "¿Está desarrollando en Ethereum, o le gustaría hacerlo? Las empresas tiene miles de vacantes para candidatos de perfiles técnicos y no técnicos. ¿Tiene alguna idea propia? Intente encontrar una subvención para poner en marcha su proyecto.",
"page-community-open-source-image-alt": "Reciba remuneración por su trabajo",
@@ -44,11 +47,18 @@
"page-community-try-ethereum": "Pruebe Ethereum por sí mismo",
"page-community-upcoming-events-no-events": "No sabemos de ningún evento próximo. ¿Sabe usted de alguno?",
"page-community-upcoming-events-load-more": "Cargar más",
+ "page-community-upcoming-events-view-event": "Ver el evento",
"page-community-why-get-involved-title": "¿Por qué participar?",
"page-community-why-get-involved-card-1-title": "Encuentre su tribu",
"page-community-why-get-involved-card-1-description": "Hay una tribu para todos. Encuentre y conéctese con personas afines para debatir, reflexionar y celebrar Ethereum juntos.",
"page-community-why-get-involved-card-2-title": "Gánese su porvenir",
"page-community-why-get-involved-card-2-description": "Todo el mundo tiene facturas que pagar. Ethereum le permite encontrar un trabajo bien remunerado y cobrar justamente por hacerlo.",
"page-community-why-get-involved-card-3-title": "Marque la diferencia",
- "page-community-why-get-involved-card-3-description": "Involucrarse en Ethereum le permite participar proactivamente en una tecnología que está teniendo un efecto positivo en millones de personas."
+ "page-community-why-get-involved-card-3-description": "Involucrarse en Ethereum le permite participar proactivamente en una tecnología que está teniendo un efecto positivo en millones de personas.",
+ "page-index-internet-image-alt": "Ilustración de un ordenador futurista, propulsado por cristales de Ethereum.",
+ "page-index-get-started-image-alt": "Imagen de una persona trabajando en un ordenador.",
+ "page-index-get-started-wallet-image-alt": "Ilustración de un robot con una caja fuerte como cuerpo, que representa una cartera de Ethereum.",
+ "page-index-get-started-eth-image-alt": "Imagen de un grupo de personas maravilladas ante un glifo asombroso de ether (ETH).",
+ "page-index-get-started-dapps-image-alt": "Ilustración de un doge utilizando un ordenador.",
+ "page-index-get-started-devs-image-alt": "Una Ilustración de una mano creando un logotipo de ETH hecho con bloques de LEGO."
}
From 31f49d20006ebc0c11a372dfb40711726228a4f4 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:02 -0300
Subject: [PATCH 015/589] update(i18n): src/intl/es/page-bug-bounty.json
---
src/intl/es/page-bug-bounty.json | 73 +++++++++++++++++++++++---------
1 file changed, 52 insertions(+), 21 deletions(-)
diff --git a/src/intl/es/page-bug-bounty.json b/src/intl/es/page-bug-bounty.json
index 72bd2dea965..64effa157eb 100644
--- a/src/intl/es/page-bug-bounty.json
+++ b/src/intl/es/page-bug-bounty.json
@@ -8,18 +8,20 @@
"page-upgrades-bug-bounty-clients-type-1": "Problemas de incumplimiento de especificaciones",
"page-upgrades-bug-bounty-clients-type-2": "Errores inesperados, RCE o vulnerabilidades de negación del servicio (DOS)",
"page-upgrades-bug-bounty-clients-type-3": "Cualquier problema que cause divisiones irreparables en el consenso con respecto al resto de la red.",
- "page-upgrades-bug-bounty-misc-bugs": "Errores de solidez",
- "page-upgrades-bug-bounty-misc-bugs-desc": "Consulte el archivo SECURITY.MD de Solidity para obtener más detalles sobre lo que se incluye en este alcance.",
- "page-upgrades-bug-bounty-misc-bugs-desc-2": "Solidity no ofrece garantías de seguridad con respecto a la compilación de entradas que no son de confianza, ni tampoco otorgamos recompensas por errores del compilador solc en datos generados de manera malintencionada.",
+ "page-upgrades-bug-bounty-misc-bugs": "Errores del compilador de lenguaje",
+ "page-upgrades-bug-bounty-misc-bugs-desc": "Los compiladores Solidity y Vyper están dentro del alcance del programa de recompensas por errores. Incluya todos los detalles necesarios para reproducir la vulnerabilidad, como: programa de entrada que desencadena el error, versión del compilador afectada, versión de EVM de destino, marco/IDE si corresponde, entorno de ejecución/cliente de EVM si corresponde y sistema operativo. Incluya los pasos para reproducir el error que encontró con el mayor detalle posible.",
+ "page-upgrades-bug-bounty-misc-bugs-desc-2": "Solidity y Vyper no ofrece garantías de seguridad con respecto a la compilación de entradas no fiables, como tampoco ofrecemos recompensas por fallos del compilador en datos generados maliciosamente.",
"page-upgrades-bug-bounty-deposit-bugs": "Errores del contrato de depósito",
"page-upgrades-bug-bounty-deposit-bugs-desc": "Las especificaciones y el código fuente del contrato de depósito de la cadena de baliza son parte del programa de recompensas por errores.",
+ "page-upgrades-bug-bounty-deposit-contract-specs": "Especificaciones del contrato de depósito.",
+ "page-upgrades-bug-bounty-deposit-contract-source": "Código fuente del contrato de depósito.",
"page-upgrades-bug-bounty-dependency-bugs": "Errores de dependencia",
"page-upgrades-bug-bounty-dependency-bugs-desc": "Ciertas dependencias son indispensables para el funcionamiento de la Red de Ethereum. Algunas de ellas han sido agregadas al Programa Bug Bounty. Actualmente, la lista de dependencias incluidas en el Programa Bug Bounty son C-KZG-4844 y Go-KZG-4844.",
"page-upgrades-bug-bounty-docking": "fusión",
"page-upgrades-bug-bounty-email-us": "Envíenos un correo electrónico:",
"page-upgrades-bug-bounty-help-links": "Enlaces útiles",
"page-upgrades-bug-bounty-hunting": "Reglas de búsqueda de errores",
- "page-upgrades-bug-bounty-hunting-desc": "El programa de recompensas por errores es un programa de recompensas experimental y discrecional para nuestra comunidad activa de Ethereum con el fin de alentar y recompensar a quienes ayudan a mejorar la plataforma. No es una competición. Debe saber que podemos cancelar el programa en cualquier momento, y los premios quedan a discreción del panel de recompensas por errores de Ethereum Foundation. Además, no podemos otorgar premios a personas que están en listas de sanciones, o que se encuentran en países en listas de sanciones (por ejemplo, Corea del Norte, Irán, etc.). La legislación local nos obliga a solicitar una prueba de su identidad. Usted es responsable del tributo de todos los impuestos. Todos los premios están sujetos a la ley aplicable. Por último, su prueba no debe infringir ninguna ley ni hacer referencia a ningún dato que no sea suyo y debe realizarse en redes de prueba locales en ejecución.",
+ "page-upgrades-bug-bounty-hunting-desc": "El programa de recompensas por errores es un programa de recompensas experimental y discrecional para nuestra comunidad activa de Ethereum con el fin de alentar y recompensar a quienes ayudan a mejorar la plataforma. No es una competición. Debe saber que podemos cancelar el programa en cualquier momento, y que los premios quedan a discreción del panel de recompensas por errores de Ethereum Foundation. Además, no podemos otorgar premios a personas que estén en listas de sanciones o que se encuentren en países en listas de sanciones (p. ej., Corea del Norte, Irán, etc.). La legislación local nos obliga a solicitar una prueba de su identidad. Usted es responsable de todos los impuestos. Todos los premios están sujetos a la legislación aplicable. Por último, sus pruebas no deben infringir ninguna ley ni comprometer ningún dato que no sea suyo, y deben realizarse en redes de prueba locales.",
"page-upgrades-bug-bounty-hunting-leaderboard": "Tabla de recompensa de errores de la capa de consenso",
"page-upgrades-bug-bounty-hunting-execution-leaderboard": "Tabla de recompensa de errores de la capa de ejecución",
"page-upgrades-bug-bounty-hunting-leaderboard-subtitle": "Encuentre errores en la capa de consenso para añadirlos a esta tabla de clasificación",
@@ -36,7 +38,7 @@
"page-upgrades-bug-bounty-meta-description": "Una descripción general del programa de recompensas de errores de Ethereum: cómo involucrarse y recompensar la información.",
"page-upgrades-bug-bounty-meta-title": "Programa de recompensas por errores de Ethereum",
"page-upgrades-bug-bounty-not-included": "Fuera de ámbito",
- "page-upgrades-bug-bounty-not-included-desc": "Solo los objetivos enumerados bajo el alcance del ámbito forman parte del programa de recompensas por errores. Lo que significa que, por ejemplo, nuestra infraestructura, como páginas web, DNS o correos electrónicos no están incluidos en el ámbito de las recompensas. Los errores de contrato ERC20 tampoco están incluidos en el ámbito de la recompensa. No obstante, podemos ayudarle a llegar a las partes afectadas, como autores o intercambios en estos casos. Del mantenimiento de ENS se encarga la fundación ENS y no forma parte del ámbito de recompensas. Las vulnerabilidades requieren que el usuario haya expuesto públicamente una API, como JSON-RPC o la API de baliza, que queda fuera del ámbito del programa de recompensas de errores.",
+ "page-upgrades-bug-bounty-not-included-desc": "Solo los objetivos indicados como dentro del alcance forman parte del Programa de Recompensa por Errores. Las vulnerabilidades que NO califican bajo el programa incluyen:",
"page-upgrades-bug-bounty-owasp": "Ver método OWASP",
"page-upgrades-bug-bounty-points": "La EF también proporcionará recompensas basadas en:",
"page-upgrades-bug-bounty-points-error": "Error al cargar los datos. Actualice.",
@@ -58,8 +60,8 @@
"page-upgrades-bug-bounty-execution-specs": "Especificaciones de la capa de ejecución",
"page-upgrades-bug-bounty-specs-docs": "Documentos de especificaciones",
"page-upgrades-bug-bounty-submit": "Enviar un error",
- "page-upgrades-bug-bounty-submit-desc": "Por cada error válido que encuentre, obtendrá recompensas. La cantidad de recompensas que se otorguen variará dependiendo del grado de gravedad. La gravedad se calcula según el modelo de calificación de riesgo OWASP basado en el impacto en la red de Ethereum y en la probabilidad.",
- "page-upgrades-bug-bounty-subtitle": "Encuentre un protocolo, cliente y errores de Solidity que afecten a la red Ethereum y gane hasta 250.000 USD, además de un lugar en el tablero de clasificación.",
+ "page-upgrades-bug-bounty-submit-desc": "Por cada error válido que encuentre, recibirá recompensas. La cantidad de recompensas otorgadas variará según la gravedad. La gravedad se calcula en base al modelo de valoración de riesgos de OWASP, tomando en cuenta el impacto en la red de Ethereum y la probabilidad.",
+ "page-upgrades-bug-bounty-subtitle": "Encuentre errores en protocolos, clientes y compiladores de lenguaje que afecten a la red de Ethereum y gane hasta 250.000 USD junto a una posición en el panel de clasificación.",
"page-upgrades-bug-bounty-title": "Ya puede enviar informes",
"page-upgrades-bug-bounty-title-1": "Cadena de baliza",
"page-upgrades-bug-bounty-title-2": "Opción de bifurcación",
@@ -71,7 +73,7 @@
"page-upgrades-bug-bounty-type-4": "Inconsistencias de cálculos o parámetros",
"page-upgrades-bug-bounty-types": "Tipos de errores",
"page-upgrades-bug-bounty-validity": "En el ámbito",
- "page-upgrades-bug-bounty-validity-desc": "Nuestro Programa Bug Bounty es muy amplio: desde la solidez de los protocolos (como el modelo de consenso de la cadena de bloques, los protocolos de cable y p2p, prueba de participación, etc.) y el cumplimiento de los protocolos/implementaciones hasta la seguridad de la red y la integridad del consenso. La seguridad clásica del cliente, así como la seguridad de los primitivos criptográficos, también forman parte del programa. En caso de duda, envíe un correo electrónico a bounty@ethereum.org y pregúntenos. También puede enviar una divulgación/vulnerabilidad directamente a bounty@ethereum.org, en cuyo caso le solicitamos que encripte el mensaje utilizando nuestra Clave PGP.",
+ "page-upgrades-bug-bounty-validity-desc": "Nuestro programa de recompensas por errores abarca de extremo a extremo: desde la solidez de los protocolos (como el modelo de consenso de la blockchain, los protocolos wire y p2p, proof of stake, etc.) y la conformidad de protocolos/implementaciones hasta la seguridad de la red y la integridad del consenso. La seguridad clásica de los clientes, así como la de los elementos criptográficos, también forman parte del programa. En caso de duda, envíe un correo a bounty@ethereum.org y consúltenos. También puede enviar una divulgación o vulnerabilidad directamente a bounty@ethereum.org; en tal caso, le solicitamos que cifre el mensaje usando nuestra Llave PGP.",
"page-upgrades-bug-bounty-card-critical": "Crítico",
"page-upgrades-bug-bounty-card-critical-risk": "Enviar un error de riesgo crítico",
"page-upgrades-bug-bounty-card-h2": "Medio",
@@ -105,28 +107,28 @@
"page-upgrades-question-title": "Preguntas más frecuentes",
"bug-bounty-faq-q1-title": "¿Cómo debería ser un buen envío de vulnerabilidad?",
"bug-bounty-faq-q1-contentPreview": "Mira un ejemplo real de un reporte de vulnerabilidad de calidad.",
- "bug-bounty-faq-q1-content-1": "Descripción: Denegación de servicio remoto usando bloques no validados",
- "bug-bounty-faq-q1-content-2": "Escenario posible: Un atacante puede enviar bloques que requieran una alta cantidad de computación (el máximo gasLimit), pero carecer de prueba de trabajo. Si el atacante envía bloques continuamente, este puede forzar al nodo de la víctima a utilizar 100 % de su CPU.",
- "bug-bounty-faq-q1-content-3": "Impacto: Un atacante puede abusar del uso de CPU en nodos remotos, causando posiblemente un DoS completo.",
- "bug-bounty-faq-q1-content-4": "Componentes: Ir a la versión del cliente v0.6.8.",
- "bug-bounty-faq-q1-content-5": "Reproducción: Envía un bloque a un «Go node» que contenga muchos tx pero ningún PoW válido.",
- "bug-bounty-faq-q1-content-6": "Details: Los bloques se validan con el método Process (Block, dontReact). Este método realiza costosas tareas con uso intensivo de la CPU, como la ejecución de transacciones (sm.ApplyDiff) y después verifica la prueba de trabajo (sm.ValidateBlock()). Esto permite a un atacante enviar bloques que tal vez requieran una gran cantidad de cálculo (el máximo gasLimit) pero sin prueba de trabajo. Si el atacante envía bloques continuamente, puede forzar al nodo víctima a una utilización del 100 % de la CPU.",
- "bug-bounty-faq-q1-content-7": "Solución: Invertir el orden de las comprobaciones.",
+ "bug-bounty-faq-q1-content-1": "Descripción: Denegación de servicio remoto usando bloques no validados",
+ "bug-bounty-faq-q1-content-2": "Escenario posible: Un atacante puede enviar bloques que requieran una alta cantidad de computación (el máximo gasLimit), pero carecer de prueba de trabajo. Si el atacante envía bloques continuamente, este puede forzar al nodo de la víctima a utilizar 100 % de su CPU.",
+ "bug-bounty-faq-q1-content-3": "Impacto: Un atacante puede abusar del uso de CPU en nodos remotos, causando posiblemente un DoS completo.",
+ "bug-bounty-faq-q1-content-4": "Componentes: Ir a la versión del cliente v0.6.8.",
+ "bug-bounty-faq-q1-content-5": "Reproducción: Envía un bloque a un «Go node» que contenga muchos tx pero ningún PoW válido.",
+ "bug-bounty-faq-q1-content-6": "Detalles: Los bloques se validan en el método Process(Block, dontReact). Este método realiza tareas costosas e intensivas en CPU, como ejecutar transacciones (sm.ApplyDiff) y luego verifica el proof-of-work (sm.ValidateBlock()). Esto permite que un atacante envíe bloques que pueden requerir una gran cantidad de computación (el gasLimit máximo), pero que no tienen proof-of-work. Si el atacante envía bloques de forma continua, puede forzar al nodo víctima a utilizar el 100% de la CPU.",
+ "bug-bounty-faq-q1-content-7": "Solución: Invertir el orden de las comprobaciones.",
"bug-bounty-faq-q2-title": "¿Tiene limitación temporal el programa de recompensas de errores?",
"bug-bounty-faq-q2-contentPreview": "No.",
- "bug-bounty-faq-q2-content-1": "Actualmente no hay fecha de finalización. Consulte el blog de Ethereum Foundation para estar al día de las novedades.",
+ "bug-bounty-faq-q2-content-1": "Actualmente no hay una fecha de finalización establecida. Consulte el blog de la Fundación Ethereum para obtener las últimas noticias.",
"bug-bounty-faq-q3-title": "¿Cómo se pagan las recompensas?",
"bug-bounty-faq-q3-contentPreview": "Las recompensas se pagan en ETH o DAI.",
- "bug-bounty-faq-q3-content-1": "Recompensas se pagan en ETH o DAI después de validar el envío, normalmente unos días después. Las leyes locales nos obligan a pedir una prueba de identidad. Además, necesitaremos su dirección ETH.",
+ "bug-bounty-faq-q3-content-1": "Las recompensas se pagan en ETH o DAI después de que la presentación haya sido validada, normalmente unos pocos días después. Las leyes locales nos obligan a solicitar prueba de identidad. Además, necesitaremos su dirección ETH.",
"bug-bounty-faq-q4-title": "¿Puedo donar mi recompensa a una organización benéfica?",
"bug-bounty-faq-q4-contentPreview": "¡Sí!",
"bug-bounty-faq-q4-content-1": "Podemos donar su recompensa a la organización benéfica que usted prefiera.",
"bug-bounty-faq-q5-title": "He informado de un problema o una vulnerabilidad, pero ¡no he recibido respuesta!",
"bug-bounty-faq-q5-contentPreview": "Por favor, dé unos días de tiempo para que alguien responda a su informe.",
- "bug-bounty-faq-q5-content-1": "Nuestro objetivo es responder a las solicitudes lo más rápido posible. No dude en enviarnos un correo electrónico a bounty@ethereum.org si no ha recibido una respuesta en uno o dos días.",
+ "bug-bounty-faq-q5-content-1": "Tenemos como objetivo responder a las presentaciones lo más rápido posible. Si no ha recibido respuesta en uno o dos días, puede escribirnos a bounty@ethereum.org.",
"bug-bounty-faq-q6-title": "Quiero ser anónimo. / No quiero que mi nombre aparezca en la tabla de clasificación.",
- "bug-bounty-faq-q6-contentPreview": "Puede hacerlo, pero podría perder el derecho a las recompensas.",
- "bug-bounty-faq-q6-content-1": "El envío anónimo o con un seudónimo puede hacerse, pero no le permitirá optar a las recompensas de ETH/DAI. Para poder optar a ellas, necesitamos saber su nombre real, junto con una prueba de identidad. Para donar su recompensa a una organización benéfica no es necesario su identidad.",
+ "bug-bounty-faq-q6-contentPreview": "Puede hacerlo, pero podría hacerle inelegible para recompensas.",
+ "bug-bounty-faq-q6-content-1": "Se puede enviar información de forma anónima o con un seudónimo, no obstante impedirá que sea elegible para recibir recompensas en ETH/DAI. Para optar por recompensas ETH/DAI, se requiere que informe de su nombre real y envíe una prueba de identidad, cifrada con PGP a través de nuestro sitio web seguro, al equipo jurídico de Ethereum Foundation, que será el único responsable de revisar la documentación. Para donar su recompensa a una organización benéfica no se requiere su identidad.",
"bug-bounty-faq-q6-content-2": "Por favor, avísenos si no quiere que su nombre aparezca en la tabla de clasificación.",
"bug-bounty-faq-q7-title": "¿Qué son los puntos en la tabla de clasificación?",
"bug-bounty-faq-q7-contentPreview": "A cada vulnerabilidad / problema detectado se le asigna una puntuación",
@@ -134,5 +136,34 @@
"bug-bounty-faq-q8-title": "¿Tiene una clave PGP?",
"bug-bounty-faq-q8-contentPreview": "Sí. Amplíe para conocer más detalles.",
"bug-bounty-faq-q8-content-1": "Por favor use AE96 ED96 9E47 9B00 84F3 E17F E88D 3334 FA5F 6A0A",
- "bug-bounty-faq-q8-PGP-key": "Clave PGP"
+ "bug-bounty-faq-q8-PGP-key": "Clave PGP",
+ "page-upgrades-bug-bounty-severity-qualifications-title": "Criterios para evaluar la gravedad de la vulnerabilidad",
+ "page-upgrades-bug-bounty-severity-qualifications-desc": "La gravedad se evalúa en función de la capacidad de la vulnerabilidad descubierta para realizar lo siguiente:",
+ "page-upgrades-bug-bounty-severity-low-title": "Gravedad baja",
+ "page-upgrades-bug-bounty-severity-low-li-1": "Slash al 0,01 % de los validadores",
+ "page-upgrades-bug-bounty-severity-low-li-2": "Causar trivialmente divisiones en la red que afecten al 0,01 % de la red",
+ "page-upgrades-bug-bounty-severity-low-li-3": "Ser capaz de derribar al 0,01 % de la red enviando un solo paquete de red o una transacción onchain",
+ "page-upgrades-bug-bounty-severity-medium-title": "Gravedad media",
+ "page-upgrades-bug-bounty-severity-medium-li-1": "Slash al 1 % de los validadores",
+ "page-upgrades-bug-bounty-severity-medium-li-2": "Causar trivialmente divisiones en la red que afecten al 5 % de la red",
+ "page-upgrades-bug-bounty-severity-medium-li-3": "Ser capaz de derribar al 5 % de la red enviando un solo paquete de red o una transacción onchain",
+ "page-upgrades-bug-bounty-severity-high-title": "Gravedad alta",
+ "page-upgrades-bug-bounty-severity-high-li-1": "Slash al 33 % de los validadores",
+ "page-upgrades-bug-bounty-severity-high-li-2": "Causar trivialmente divisiones en la red que afecten al 33 % de la red",
+ "page-upgrades-bug-bounty-severity-high-li-3": "Ser capaz de derribar al 33 % de la red enviando un solo paquete de red o una transacción onchain",
+ "page-upgrades-bug-bounty-severity-critical-title": "Gravedad crítica",
+ "page-upgrades-bug-bounty-severity-critical-li-1": "Slash al 50 % de los validadores",
+ "page-upgrades-bug-bounty-severity-critical-li-2": "Explotar un EIP/especificación o un bug en el cliente para crear fácilmente una cantidad infinita de ETH que la red considera como finalizada",
+ "page-upgrades-bug-bounty-severity-critical-li-3": "Robar ETH de todas las EOAs",
+ "page-upgrades-bug-bounty-severity-critical-li-4": "Destruir ETH de todas las EOAs",
+ "page-upgrades-bug-bounty-severity-critical-li-5": "Derribar toda la red enviando una única transacción onchain maliciosa que provoque la caída de todos los clientes",
+ "page-upgrades-bug-bounty-out-of-scope-footnote": "Normalmente no se incluyen, pero podemos ayudar a contactar a las partes afectadas, como autores o exchanges, en tales casos",
+ "page-upgrades-bug-bounty-not-included-li-1": "Errores de infraestructura—como páginas web, DNS, correo electrónico, etc.",
+ "page-upgrades-bug-bounty-not-included-li-2": "Errores en contratos ERC-20",
+ "page-upgrades-bug-bounty-not-included-li-3": "Errores de Ethereum Naming Service (ENS) (mantenido por la fundación ENS)",
+ "page-upgrades-bug-bounty-not-included-li-4": "Vulnerabilidades que requieran que el usuario haya expuesto públicamente una API, como JSON-RPC o la Beacon API",
+ "page-upgrades-bug-bounty-not-included-li-5": "Errores tipográficos",
+ "page-upgrades-bug-bounty-not-included-li-6": "Pruebas",
+ "page-upgrades-bug-bounty-not-included-li-7": "Ataques DoS de un solo par (que requieren mucho esfuerzo sostenido, con uso intensivo de CPU o ancho de banda, y/o más de un paquete o transacción onchain)",
+ "page-upgrades-bug-bounty-not-included-li-8": "Cualquier problema públicamente conocido (incluye publicaciones en foros, PRs, issues en github, commits, publicaciones de blog, mensajes públicos en Discord, etc.)"
}
From d329fc888cd67c42f1db9535c2a3c8560b683d93 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:03 -0300
Subject: [PATCH 016/589] update(i18n): src/intl/es/page-run-a-node.json
From 8ea7ca829a531fcd4fea0f4e11b486ed839374bd Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:05 -0300
Subject: [PATCH 017/589] update(i18n): src/intl/es/template-usecase.json
---
src/intl/es/template-usecase.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/intl/es/template-usecase.json b/src/intl/es/template-usecase.json
index 961a9383fe6..d97d55d39e0 100644
--- a/src/intl/es/template-usecase.json
+++ b/src/intl/es/template-usecase.json
@@ -3,14 +3,18 @@
"template-usecase-dropdown-defi": "Finanzas descentralizadas (DeFi)",
"template-usecase-dropdown-nft": "Tókenes No Fungibles (NFT)",
"template-usecase-dropdown-dao": "Organizaciones Autónomas Descentralizadas (DAO)",
+ "template-usecase-dropdown-apps": "Aplicaciones de Ethereum",
"template-usecase-dropdown-payments": "Pagos con Ethereum",
"template-usecase-dropdown-prediction-markets": "Mercados de predicción",
"template-usecase-dropdown-social-networks": "Redes sociales descentralizadas",
+ "template-usecase-dropdown-restaking": "Restaking",
"template-usecase-dropdown-identity": "Identidad descentralizada",
"template-usecase-dropdown-desci": "Ciencia descentralizada (DeSci)",
"template-usecase-dropdown-refi": "Finanzas regerenativas (ReFi)",
"template-usecase-dropdown": "Casos de uso de Ethereum",
"template-usecase-banner": "Los usos de Ethereum siempre se están desarrollando y evolucionando. Añada cualquier información que considere que aclare o aporte datos actuales.",
"template-usecase-edit-link": "Editar página",
- "template-usecase-dropdown-aria": "Menú desplegable de casos de uso"
+ "template-usecase-dropdown-aria": "Menú desplegable de casos de uso",
+ "template-usecase-dropdown-onchain-gaming": "Juegos en cadena (Onchain Gaming)",
+ "template-usecase-dropdown-rwa": "Activos del mundo real (RWA)"
}
From 8bba9dcc0a8c69919204d4f18b4f2dfc4d6b1f44 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:06 -0300
Subject: [PATCH 018/589] update(i18n):
public/content/translations/es/developers/docs/design-and-ux/heuristics-for-web3/index.md
---
.../docs/design-and-ux/heuristics-for-web3/index.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/content/translations/es/developers/docs/design-and-ux/heuristics-for-web3/index.md b/public/content/translations/es/developers/docs/design-and-ux/heuristics-for-web3/index.md
index cf50e195634..81ecd415fa3 100644
--- a/public/content/translations/es/developers/docs/design-and-ux/heuristics-for-web3/index.md
+++ b/public/content/translations/es/developers/docs/design-and-ux/heuristics-for-web3/index.md
@@ -5,7 +5,7 @@ lang: es
---
Los principios heurísticos de usabilidad son reglas generales que pueden utilizarse para medir cuán fácil de usar es su sitio.
-Estos principios heurísticos están diseñadas específicamente para la Web3 y deben usarse junto con los [10 principios generales de diseño de interacción de Jacob Nielsen](https://www.nngroup.com/articles/ten-usability-heuristics/).
+Las 7 reglas heurísticas aquí presentadas están específicamente diseñadas para la Web3 y deben usarse junto con [los 10 principios generales de diseño de interacción](https://www.nngroup.com/articles/ten-usability-heuristics/) de Jakob Nielsen.
## Siete principios heurísticos de usabilidad para la Web3 {#seven-usability-heuristics-for-web3}
@@ -54,7 +54,7 @@ Las personas se preocupan mucho por sus datos. La seguridad es una de las preocu
**Ejemplo:**
Incluya sus auditorías en el pie de página, en un tamaño que destaque.
-
+
### 3. La información más importante es obvia {#the-most-important-info-is-obvious}
From 3b2ebe8de47c303918d462c7cb5e14e215c9756c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:08 -0300
Subject: [PATCH 019/589] update(i18n): src/intl/es/page-collectibles.json
---
src/intl/es/page-collectibles.json | 90 +++++++++++++++---------------
1 file changed, 45 insertions(+), 45 deletions(-)
diff --git a/src/intl/es/page-collectibles.json b/src/intl/es/page-collectibles.json
index bbfcce82ea1..7c5579d4e49 100644
--- a/src/intl/es/page-collectibles.json
+++ b/src/intl/es/page-collectibles.json
@@ -1,67 +1,67 @@
{
- "page-collectibles-already-desc": "Revisa tu progreso",
- "page-collectibles-already-title": "¿Ya eres colaborador?",
- "page-collectibles-code-content-desc": "Corrige errores, escribe o mejora artículos o propone mejoras de diseño para el sitio web.",
- "page-collectibles-code-content-design-1issue": "Insignia por resolver un issue de diseño",
- "page-collectibles-code-content-design-desc": "Haz críticas de diseño, mejora nuestro sistema de diseño o participa en pruebas de usuario.",
+ "page-collectibles-already-desc": "Revise su progreso",
+ "page-collectibles-already-title": "¿Ya es un colaborador?",
+ "page-collectibles-code-content-desc": "Solucione problemas, escriba o mejore artículos, o proponga una mejora en el diseño del sitio web.",
+ "page-collectibles-code-content-design-1issue": "Insignia de problema de diseño resuelto",
+ "page-collectibles-code-content-design-desc": "Realice críticas en el diseño, mejore nuestro sistema de diseño o participe en pruebas de usuario.",
"page-collectibles-code-content-design-title": "Diseño",
- "page-collectibles-code-content-design-user-testing": "Insignia por participar en pruebas de usuario",
- "page-collectibles-code-content-developer-10pr": "Insignia por 10 PRs mergeados",
- "page-collectibles-code-content-developer-1pr": "Insignia por 1 PR mergeado",
- "page-collectibles-code-content-developer-5pr": "Insignia por 5 PRs mergeados",
- "page-collectibles-code-content-developer-desc": "Cualquier mejora mergeada al sitio web.",
+ "page-collectibles-code-content-design-user-testing": "Insignia de participación en pruebas de usuario",
+ "page-collectibles-code-content-developer-10pr": "Insignia por lograr fusionar 10 PRs",
+ "page-collectibles-code-content-developer-1pr": "Insignia por lograr fusionar 1 PR",
+ "page-collectibles-code-content-developer-5pr": "Insignia por lograr fusionar 5 PRs",
+ "page-collectibles-code-content-developer-desc": "Cualquier mejora se fusionó al sitio web.",
"page-collectibles-code-content-developer-title": "Desarrollador",
- "page-collectibles-code-content-gitpoap-1pr": "Insignia por 1 PR mergeado",
- "page-collectibles-code-content-gitpoap-desc": "Reclamable automáticamente después de que tu PR sea mergeada.",
+ "page-collectibles-code-content-gitpoap-1pr": "Insignia por fusionar PR",
+ "page-collectibles-code-content-gitpoap-desc": "Reclamable automáticamente después de que su PR se fusione.",
"page-collectibles-code-content-gitpoap-title": "GitPOAP",
- "page-collectibles-code-content-instructions-1": "Ve a nuestro repositorio de GitHub",
- "page-collectibles-code-content-instructions-2": "Elige un issue en el que trabajar",
- "page-collectibles-code-content-instructions-3": "Confirma una corrección o mejora",
- "page-collectibles-code-content-title": "Código y Contenido",
+ "page-collectibles-code-content-instructions-1": "Vaya a nuestro repositorio de GitHub",
+ "page-collectibles-code-content-instructions-2": "Elija un problema en el que trabajar",
+ "page-collectibles-code-content-instructions-3": "Confirme una corrección o mejora",
+ "page-collectibles-code-content-title": "Código y contenido",
"page-collectibles-code-content-writing-badge-1": "Insignia por contribución de contenido",
- "page-collectibles-code-content-writing-desc": "Por cualquier mejora de contenido mergeada a master.",
- "page-collectibles-code-content-writing-title": "Redacción",
- "page-collectibles-connect-wallet": "Conectar billetera",
+ "page-collectibles-code-content-writing-desc": "Por cualquier mejora de contenido fusionada a la rama principal.",
+ "page-collectibles-code-content-writing-title": "Escritura",
+ "page-collectibles-connect-wallet": "Conectar cartera",
"page-collectibles-contributing-since": "Contribuyendo desde",
- "page-collectibles-contributor-img-alt": "Dos colaboradores conversando",
+ "page-collectibles-contributor-img-alt": "Dos colaboradores chateando",
"page-collectibles-contributor-progress-label": "Reclamado",
"page-collectibles-current-year-title": "Año actual",
"page-collectibles-get-started": "Comenzar",
- "page-collectibles-hero-description": "Prueba que has trabajado en ethereum.org, onchain.",
- "page-collectibles-hero-header": "Coleccionables Ethereum.org",
+ "page-collectibles-hero-description": "Demuestre que ha trabajado en ethereum.org, en cadena.",
+ "page-collectibles-hero-header": "Coleccionables de Ethereum.org",
"page-collectibles-hero-title": "Insignias",
- "page-collectibles-how-step1-desc": "al sitio web",
- "page-collectibles-how-step1-title": "Contribuye",
+ "page-collectibles-how-step1-desc": "ir al sitio web",
+ "page-collectibles-how-step1-title": "Contribuir",
"page-collectibles-how-step2-desc": "en Discord",
- "page-collectibles-how-step2-title": "Verifícate",
+ "page-collectibles-how-step2-title": "Obtener verificación",
"page-collectibles-how-step3-desc": "en Galxe",
- "page-collectibles-how-step3-title": "Reclama NFT",
+ "page-collectibles-how-step3-title": "Reclamar NFT",
"page-collectibles-how-title": "Cómo funciona",
- "page-collectibles-improve-desc-1": "Gana NFTs únicos ayudando a mantener y expandir el sitio web ethereum.org. Estas insignias reconocen tu participación onchain.",
- "page-collectibles-improve-desc-2": "Los principales poseedores obtienen mercaderia de colaborador o entradas con descuento a eventos como Devcon. Tu insignia onchain facilita que otros te apoyen.",
- "page-collectibles-improve-title": "Mejora ethereum.org",
- "page-collectibles-index-frequency": "Resultados actualizados una vez al día a las 15:15 UTC",
+ "page-collectibles-improve-desc-1": "Consiga NFT únicos ayudando a mantener y expandir el sitio web de ethereum.org. Estas insignias reconocen su participación en cadena.",
+ "page-collectibles-improve-desc-2": "Los mayores tenedores obtienen el botín de colaborador/a o descuentos en tickets para eventos como la Devcon. Sus insignias en cadena facilitan que otros le apoyen.",
+ "page-collectibles-improve-title": "Mejore ethereum.org",
+ "page-collectibles-index-frequency": "Los resultados se actualizan todos los días a las 15:15 UTC",
"page-collectibles-instructions-label": "Instrucciones",
- "page-collectibles-previous-years-badge-count": "{count, plural, =0 {ninguna insignia} =1 {1 insignia} other {# insignias}}",
- "page-collectibles-previous-years-collectors-count": "{count, plural, =0 {ningún coleccionista} =1 {1 coleccionista} other {# coleccionistas}}",
- "page-collectibles-previous-years-no-badges": "No se han obtenido insignias",
+ "page-collectibles-previous-years-badge-count": "{count, plural,=0 {no tiene insignias} =1 {1 insignia} other {# insignias}}",
+ "page-collectibles-previous-years-collectors-count": "{count, plural,=0 {sin colecciones} =1 {1 colección}other {# colecciones}}",
+ "page-collectibles-previous-years-no-badges": "No se acuñaron insignias",
"page-collectibles-previous-years": "Años anteriores",
- "page-collectibles-social-desc": "Únete a cualquiera de nuestras llamadas de Discord para probar el sitio web antes de los lanzamientos o mantente al día con las noticias de ethereum.org en nuestras llamadas comunitarias mensuales.",
+ "page-collectibles-social-desc": "Únete a cualquiera de nuestras llamadas en Discord para probar errores en el sitio web antes de los lanzamientos o para estar al día con las ultimas novedades de ethereum.org en nuestras llamadas comunitarias mensuales.",
"page-collectibles-social-instructions-1": "Únete a nuestro servidor de Discord",
- "page-collectibles-social-instructions-2": "Ver horario",
- "page-collectibles-social-instructions-3": "¡Únete!",
+ "page-collectibles-social-instructions-2": "Ver programa",
+ "page-collectibles-social-instructions-3": "¡Únase!",
"page-collectibles-social-title": "Social",
"page-collectibles-stats-collectors": "Coleccionistas",
- "page-collectibles-stats-minted": "Reclamados",
+ "page-collectibles-stats-minted": "Acuñado",
"page-collectibles-stats-unique-badges": "Insignias únicas",
- "page-collectibles-translations-1000": "1,000 palabras",
- "page-collectibles-translations-10000": "10,000 palabras",
- "page-collectibles-translations-250": "250 palabras",
- "page-collectibles-translations-50000": "50,000 palabras",
+ "page-collectibles-translations-1000": "Insignia por 1.000 palabras",
+ "page-collectibles-translations-10000": "Insignia por 10.000 palabras",
+ "page-collectibles-translations-250": "Insignia por 250 palabras",
+ "page-collectibles-translations-50000": "Insignia por 50.000 palabras",
"page-collectibles-translations-badge-desc": "A cualquier idioma.",
- "page-collectibles-translations-desc": "La mayoría de los usuarios no hablan inglés, por lo que es crucial ayudar a traducir nuestros artículos a otros idiomas, no se necesita experiencia previa.",
- "page-collectibles-translations-instructions-1": "Regístrate en Crowdin",
- "page-collectibles-translations-instructions-2": "Selecciona idioma",
- "page-collectibles-translations-instructions-3": "Comienza a traducir",
+ "page-collectibles-translations-desc": "La mayoría de usuarios no habla Inglés, por lo tanto es crucial ayudar a traducir nuestros artículos a otros idiomas. No se requiere experiencia previa en traducción.",
+ "page-collectibles-translations-instructions-1": "Regístrese en Crowdin",
+ "page-collectibles-translations-instructions-2": "Seleccionar idioma",
+ "page-collectibles-translations-instructions-3": "Empezar a traducir",
"page-collectibles-translations-title": "Traducciones"
}
From a58baa8759f3f961fa3cbb379c26ca2c4be3577e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:09 -0300
Subject: [PATCH 020/589] update(i18n): src/intl/es/common.json
---
src/intl/es/common.json | 96 ++++++++++++++++++++++++++++++-----------
1 file changed, 70 insertions(+), 26 deletions(-)
diff --git a/src/intl/es/common.json b/src/intl/es/common.json
index 61c6801ac71..ff5204284bb 100644
--- a/src/intl/es/common.json
+++ b/src/intl/es/common.json
@@ -19,6 +19,7 @@
"bug-bounty": "Recompensa de errores",
"build": "Construir",
"build-menu": "Menú Construir",
+ "business": "Negocios",
"clear": "Borrar",
"close": "Cerrar",
"community": "Comunidad",
@@ -30,16 +31,20 @@
"content-resources": "Recursos de contenido",
"content-standardization": "Normalización del contenido",
"contributing": "Cómo contribuir",
+ "contributor-quiz-banner-title": "¿No sabe por dónde empezar?",
+ "contributor-quiz-banner-description": "Haga una breve prueba y descubra cómo puede contribuir en ethereum.org.",
+ "contributor-quiz-banner-button": "Haga una prueba",
"contributors": "Colaboradores",
- "contributors-thanks": "A todos los que han contribuido a esta página, ¡gracias!",
+ "contributors-thanks": "¡Gracias a todos los que han contribuido a esta página!",
"cookie-policy": "Política de cookies",
"copied": "Copiado",
"copy": "Copiar",
"danksharding": "Danksharding",
"dao-page": "DAO: organizaciones autónomas descentralizadas",
"dark-mode": "Oscuro",
+ "dark-mode-aria-label": "Cambiar al modo oscuro",
"data-provided-by": "Fuente de datos:",
- "decentralized-applications-dapps": "DApps: aplicaciones descentralizadas",
+ "application-explorer": "Explorador de aplicaciones",
"decentralized-identity": "Identidad descentralizada",
"decentralized-science": "DeSci: ciencia descentralizada",
"decentralized-social-networks": "Redes sociales descentralizadas",
@@ -75,8 +80,14 @@
"eips": "Propuestas de mejora de Ethereum",
"energy-consumption": "Consumo energético de Ethereum",
"enterprise": "Empresa",
+ "use-cases": "Casos de uso",
"enterprise-mainnet": "Empresa: red principal Ethereum",
"enterprise-menu": "Menú para empresa",
+ "enterprise-team-description": "Responderemos sus preguntas, le ayudaremos a identificar posibles vías, proporcionaremos soporte técnico y le pondremos en contacto con líderes relevantes de la industria.",
+ "enterprise-team": "Equipo de Ethereum para empresas",
+ "error-page-title": "¡Vaya! Se ha producido un error",
+ "error-page-description": "Nos podría ayudar informando del problema en nuestro repositorio en GitHub.",
+ "error-page-home-link": "Regresar a la página de inicio",
"esp": "Programa de soporte del ecosistema",
"eth-current-price": "Precio actual de ETH (USD)",
"ethereum": "Ethereum",
@@ -85,16 +96,19 @@
"ethereum-bug-bounty": "Programa de recompensas de Ethereum de búsqueda de errores",
"ethereum-events": "Eventos de Ethereum",
"ethereum-foundation": "Ethereum Foundation",
- "ethereum-foundation-logo": "Logo de Ethereum Foundation",
+ "ethereum-foundation-logo": "Logo Fundación Ethereum",
"ethereum-glossary": "Glosario de Ethereum",
"ethereum-governance": "Gobernanza de Ethereum",
- "ethereum-logo": "Logo de Ethereum",
+ "ethereum-history-founder-and-ownership": "Historia, fundador y propiedad de Ethereum",
+ "ethereum-logo": "Logo Ethereum",
"ethereum-online": "Comunidades en línea",
"ethereum-protocol": "Protocolo de Ethereum",
"ethereum-roadmap": "Hoja de ruta de Ethereum",
"ethereum-security": "Seguridad en Ethereum y prevención de fraudes",
+ "ethereum-privacy": "Privacidad en Ethereum",
"ethereum-support": "Soporte de Ethereum",
"ethereum-upgrades": "Actualizaciones de Ethereum",
+ "ethereum-vs-bitcoin": "Ethereum vs Bitcoin",
"ethereum-wallets": "Carteras de Ethereum",
"ethereum-whitepaper": "Informe de Ethereum",
"events": "Eventos",
@@ -109,6 +123,7 @@
"feedback-widget-thank-you-timing": "2–3 minutos",
"feedback-widget-thank-you-title": "¡Gracias por sus comentarios!",
"find-wallet": "Encontrar cartera",
+ "founders": "Fundadores",
"from": "De",
"future-proofing": "De cara al futuro",
"get-eth": "Conseguir ETH",
@@ -128,10 +143,11 @@
"how-to-use-a-bridge": "Cómo pasar los tókenes a la capa 2",
"how-to-use-a-wallet": "Cómo utilizar una cartera",
"image": "imagen",
+ "item-logo": "Logotipo de {item}",
"in-this-section": "En esta sección",
"individuals": "Usuarios",
"jobs": "Empleo",
- "kraken-logo": "Logo de Kraken",
+ "kraken-logo": "Logo Kraken",
"language-am": "Amárico",
"language-be": "Bielorruso",
"language-ar": "Árabe",
@@ -190,6 +206,7 @@
"language-te": "Telugu",
"language-th": "Tailandés",
"language-tk": "Turcomano",
+ "language-tl": "Tagalo",
"language-tr": "Turco",
"language-uk": "Ucraniano",
"language-ur": "Urdu",
@@ -199,7 +216,7 @@
"language-zh-tw": "Chino tradicional",
"languages": "Idiomas",
"last-24-hrs": "Últimas 24 horas",
- "last-edit": "Última edición",
+ "page-last-update": "Última actualización de la página:",
"last-updated": "Última actualización",
"layer-2": "Capa 2",
"learn": "Aprender",
@@ -209,6 +226,7 @@
"learn-more": "Más información",
"less": "Menos",
"light-mode": "Claro",
+ "light-mode-aria-label": "Cambiar al modo claro",
"listing-policy-disclaimer": "Todos los productos enumerados en esta página no cuentan con aprobación oficial y se proporcionan únicamente con fines informativos. Si quiere añadir un producto o comentario sobre la política, cree una incidencia en GitHub.",
"loading": "Cargando...",
"loading-error": "Error al cargar.",
@@ -216,18 +234,22 @@
"loading-error-try-again-later": "Imposible cargar datos. Inténtelo más tarde.",
"logo": "logo",
"mainnet-ethereum": "Red principal de Ethereum",
+ "menu": "Menú",
"merge": "Fusión",
"more": "Más",
"nav-about-description": "Un proyecto público de código abierto para la comunidad Ethereum",
"nav-advanced-description": "Conozca los temas más complejos",
- "nav-advanced-label": "Recursos avanzados",
- "nav-ai-agents-description": "Descubra el mundo de los agentes de IA en Ethereum",
+ "nav-advanced-label": "Avanzado",
+ "nav-ai-agents-description": "Explore el mundo de los agentes de IA en Ethereum",
"nav-basics-description": "Entienda lo esencial de Ethereum",
"nav-basics-label": "Lo básico",
"nav-bridges-description": "Web3 ha evolucionado en un ecosistema de cadenas de bloques primarios de capa 1 y soluciones de escalabilidad de capa 2",
"nav-builders-home-description": "Un manual de constructores para Ethereum. De constructores para constructores.",
"nav-builders-home-label": "Inicio para los constructores",
+ "nav-business-description": "Conéctese con expertos, reciba orientación, financiamiento y haga crecer su negocio",
"nav-code-of-conduct": "Código de conducta",
+ "nav-collectibles-description": "Panel de control de colaboradores para coleccionables de colaboradores de ethereum.org",
+ "nav-collectibles-label": "coleccionables de ethereum.org",
"nav-contribute-description": "Si quiere ayudar, esta guía le dirá cómo.",
"nav-contribute-label": "Colaborar con ethereum.org",
"nav-dao-description": "Comunidades con propiedad compartida por los miembros sin liderazgo centralizado.",
@@ -240,19 +262,22 @@
"nav-did-description": "Cree y sea propietario de sus identificadores descentralizados propios",
"nav-docs-description": "Documentación de ayuda para entender y construir en Ethereum",
"nav-docs-design-description": "Descripción de los retos de diseño únicos de Web3, mejores prácticas y hallazgos de investigaciones de los usuarios",
- "nav-docs-design-label": "Lo esencial del diseño de la UX/UI",
+ "nav-docs-design-label": "Lo esencial del diseño de la UX/IU",
"nav-docs-foundation-description": "Los fundamentos para desarrollar en Ethereum",
"nav-docs-foundation-label": "Temas fundamentales",
"nav-docs-overview-description": "El sitio donde buscar documentación para desarrolladores",
"nav-docs-stack-description": "Entender todos los detalles de la pila Ethereum",
- "nav-docs-stack-label": "Pila de Ethereum",
+ "nav-docs-stack-label": "Bloque de Ethereum",
"nav-eip-description": "Estándares que especifican nuevas características o procesos",
"nav-eip-label": "EIP: propuestas de mejora de Ethereum",
"nav-emerging-description": "Conozca otros nuevos casos de uso para Ethereum",
"nav-emerging-label": "Casos de uso emergentes",
+ "nav-enterprise-description": "Las aplicaciones de cadena de bloques para empresa se pueden construir en la red principal y pública de Ethereum",
"nav-ethereum-org-description": "Este sitio web está orientado a la comunidad: únase y contribuya con él",
"nav-ethereum-networks": "Redes de Ethereum",
"nav-ethereum-networks-description": "Transacciones más rápidas y baratas para Ethereum",
+ "nav-ethereum-vs-bitcoin-description": "Comprenda las diferencias entre Ethereum y Bitcoin",
+ "nav-ethereum-history-founder-and-ownership-description": "Comprenda la historia, el fundador y la propiedad de Ethereum",
"nav-ethereum-wallets-description": "Una aplicación para interactuar con su cuenta Ethereum",
"nav-events-description": "Descentralización y libertad para que todos participen",
"nav-events-irl-description": "Cada mes se celebran grandes eventos Ethereum en persona y en línea",
@@ -260,6 +285,8 @@
"nav-events-online-description": "Cientos de miles de entusiastas de Ethereum se reúnen en estas comunidades en línea",
"nav-find-wallet-description": "Las carteras le permiten usar criptomonedas",
"nav-find-wallet-label": "Elija su cartera",
+ "nav-gaming-description": "Juegos creados en la cadena de bloques en los que los activos y la jugabilidad son totalmente descentralizados y transparentes.",
+ "nav-founders-description": "Empoderando a los fundadores con programas, mentoría y recursos",
"nav-gas-fees-description": "Cómo se calcula la comisión por transacción de sus ETH",
"nav-gas-fees-label": "Tarifas de gas",
"nav-get-eth-description": "Necesita ether (ETH) para utilizar las aplicaciones de Ethereum",
@@ -280,7 +307,6 @@
"nav-history-label": "Historia técnica de Ethereum",
"nav-learn-by-coding-description": "Herramientas que le ayudan a experimentar con Ethereum",
"nav-local-env-description": "Elija y defina su pila de desarrollo en Ethereum",
- "nav-enterprise-description": "Las aplicaciones de cadena de bloques para empresa se pueden construir en la red principal y pública de Ethereum",
"nav-networks-home-description": "Transacciones más rápidas y baratas para Ethereum",
"nav-networks-introduction-label": "Introducción",
"nav-networks-introduction-description": "Ethereum se expandió en una red de redes",
@@ -295,6 +321,7 @@
"nav-overview-label": "Resumen",
"nav-participate-overview-description": "Resumen de cómo participar",
"nav-payments-description": "Los pagos en Ethereum están cambiando la forma en que enviamos y recibimos dinero",
+ "nav-prediction-markets-description": "Los mercados de predicción son una forma de apostar sobre el futuro",
"nav-primary": "Principal",
"nav-quizzes-description": "Descubra cómo de bien puede entender Ethereum y las criptomonedas",
"nav-quizzes-label": "Evalúe su conocimiento",
@@ -314,42 +341,46 @@
"nav-roadmap-scaling-description": "Actualizaciones de red para reducir aún más los costes de transacciones y la velocidad",
"nav-roadmap-scaling-label": "Transacciones más baratas",
"nav-roadmap-security": "Mayor seguridad",
- "nav-roadmap-security-description": "Asegurarse de que Ethereum sigue resistiendo a todo tipo de ataques en el futuro",
+ "nav-roadmap-security-description": "Asegurarse de que Etherum sigue resistiendo a todo tipo de ataques en el futuro",
"nav-roadmap-security-label": "Seguridad mejorada",
"nav-roadmap-user-experience": "Mejor experiencia de usuario",
"nav-roadmap-ux-description": "El uso de Ethereum debe simplificarse",
"nav-roadmap-ux-label": "Mejor experiencia de usuario",
+ "nav-rwa-description": "Un método para convertir valiosos productos básicos en tókenes digitales",
"nav-run-a-node-description": "Sea completamente autónomo mientras ayuda a proteger la red",
"nav-security-description": "Aprenda las mejores prácticas en el uso de criptomonedas",
- "nav-smart-contracts-description": "Los bloques de construcción fundamentales del ecosistema Ethereum",
+ "nav-privacy-description": "Herramientas y técnicas para proteger su privacidad en Ethereum",
+ "nav-smart-contracts-description": "Los componentes fundamentales del ecosistema de Ethereum",
"nav-stablecoins-description": "Las monedas estables son los tókenes de Ethereum diseñados para mantenerse a un valor fijo",
"nav-stake-description": "Gane recompensas por proteger Ethereum",
"nav-stake-label": "Participar",
"nav-staking-home-description": "Una presentación de las distintas opciones de participación",
- "nav-staking-home-label": "Inicio de participaciones",
+ "nav-staking-home-label": "Página principal de staking",
"nav-staking-pool-description": "Participe y gane recompensas con cualquier cantidad de ETH al unirse a otros",
- "nav-staking-pool-label": "Participación agrupada",
+ "nav-staking-pool-label": "Staking en conjunto",
"nav-staking-saas-description": "Nodos de terceros gestionan la operación de su cliente validador",
"nav-staking-saas-label": "Participar con un servicio",
"nav-staking-solo-description": "Ejecute hardware doméstico y contribuya personalmente a la seguridad y a la descentralización de la red Ethereum.",
"nav-staking-solo-label": "Participación en solitario",
"nav-start-building-description": "Información útil para principiantes",
- "nav-start-with-crypto-title": "Empieza aquí",
- "nav-start-with-crypto-description": "Tus primeros pasos con Ethereum",
+ "nav-start-with-crypto-title": "¡Vamos allá!",
+ "nav-start-with-crypto-description": "Sus primeros pasos utilizando Ethereum",
"nav-translation-program-description": "Una iniciativa de colaboración para traducir ethereum.org a todos los idiomas",
"nav-tutorials-description": "Lista seleccionada de tutoriales de la comunidad",
"nav-use-cases-description": "Descubra diferentes ideas de usos de Ethereum",
"nav-use-cases-label": "Casos de uso",
- "nav-what-is-ether-description": "La moneda de las aplicaciones de Ethereum",
+ "nav-what-is-ether-description": "Comprenda el ether (ETH), la moneda nativa de Ethereum",
"nav-what-is-ethereum-description": "Entienda qué es lo que hace a Ethereum especial",
+ "nav-what-is-ethereum-network-description": "Comprenda qué es la red de Ethereum",
"nav-what-is-web3-description": "Una alternativa a los monopolios centralizados que dictan las normas",
- "nav-what-is-web3-label": "¿Qué es Web 3.0?",
+ "nav-what-is-web3-label": "¿Qué es la Web3?",
"nav-whitepaper-description": "El informe técnico original de Ethereum escrito por Vitalik Buterin en 2014",
- "nav-zkp-description": "Una forma de demostrar la validez de una declaración sin tener que revelarla",
+ "nav-zkp-description": "Una forma de comprobar la validez de una declaración sin revelar la propia declaración",
"nft-page": "NFT: tókenes no fungibles",
"nfts": "NFT",
"no": "No",
"on-this-page": "En esta página",
+ "onchain-gaming": "Juegos en cadena (Onchain Gaming)",
"open": "Abierto",
"open-research": "Abrir investigación",
"page-developers-aria-label": "Menú para desarrolladores",
@@ -363,20 +394,24 @@
"page-languages-translated": "traducido(s)",
"page-languages-want-more-header": "¿Quiere ver ethereum.org en otro idioma?",
"page-languages-want-more-link": "Programa de traducción",
+ "page-languages-translate-cta-title": "Traducir a",
"page-languages-want-more-paragraph": "Los traductores de ethereum.org siempre traducen páginas a tantos idiomas como sea posible. Para ver en qué están trabajando ahora mismo o para registrarse y unirse a ellos, lea acerca de nuestro",
"page-languages-words": "palabras",
"page-last-updated": "Última actualización de la página",
+ "page-not-found": "No se ha encontrado la página",
+ "page-not-found-description": "No se ha podido encontrar la página solicitada.",
"participate": "Participar",
"participate-menu": "Menú Participar",
"payments-page": "Pagos",
"pbs": "Separación del creador de propuestas",
- "pools": "Participación agrupada",
+ "pools": "Staking en conjunto",
+ "prediction-markets": "Predicción de mercados",
"privacy-policy": "Política de privacidad",
"private-ethereum": "Red privada de Ethereum",
"product-disclaimer": "Los productos y servicios se indican para comodidad de la comunidad Ethereum. La inclusión de un producto o serviciono implica su recomendaciónpor parte del equipo del sitio web ethereum.org ni de Ethereum Foundation.",
"quizzes": "Cuestionarios",
"quizzes-title": "Centro de preguntas",
- "refresh": "Actualice la página.",
+ "refresh": "Actualizar página",
"regenerative-finance": "ReFi: finanzas regenerativas",
"research": "Investigación",
"research-menu": "Menú Investigación",
@@ -387,6 +422,7 @@
"rollup-component-technology-and-risk-summary": "Resumen de la tecnología y riesgos",
"rollup-component-website": "Sitio web",
"run-a-node": "Ejecutar un nodo",
+ "real-world-assets": "RWAs - Activos del mundo real",
"saas": "Participación como servicio",
"scaling": "Escalabilidad",
"search": "Buscar",
@@ -413,7 +449,8 @@
"start-here": "¡Vamos allá!",
"statelessness": "Sin estado",
"style-guide": "Guía de estilo",
- "support": "Soporte técnico",
+ "support": "Soporte",
+ "terms-and-conditions": "Condiciones generales",
"terms-of-use": "Condiciones de uso",
"translation-banner-body-new": "Está viendo esta página en inglés porque aún no la hemos traducido. Ayúdenos a traducir este contenido.",
"translation-banner-body-update": "Disponemos de una nueva versión de esta página, pero solo está en inglés por ahora. Ayúdenos a traducir la última versión.",
@@ -425,6 +462,8 @@
"translation-banner-title-new": "Ayúdenos a traducir esta página.",
"translation-banner-title-update": "Ayúdenos a actualizar esta página.",
"translation-program": "Programa de traducción",
+ "translator": "Traductor",
+ "trillion-dollar-security": "Proyecto de seguridad de miles de billones de dólares",
"try-using-search": "Utilice el buscador para encontrar lo que está buscando o",
"tutorials": "Tutoriales",
"up": "Subir",
@@ -439,13 +478,18 @@
"web3": "¿Qué es Web 3.0?",
"web3-title": "Web 3.0",
"website-last-updated": "Última actualización del sitio web",
+ "what-are-apps": "¿Qué son las aplicaciones?",
"what-is-ether": "¿Qué es el ether (ETH)?",
"what-is-ethereum": "¿Qué es Ethereum?",
+ "what-is-the-ethereum-network": "¿Qué es la red de Ethereum?",
"withdrawals": "Retiradas de participaciones",
"wrapped-ether": "Wrapped Ether (eter envuelto)",
"yes": "Sí",
"zero-knowledge-proofs": "Pruebas de conocimiento cero",
- "ethereum-vs-bitcoin": "Ethereum vs. Bitcoin",
- "nav-ethereum-vs-bitcoin-description": "Entiende las diferencias entre Ethereum y Bitcoin"
-
+ "region-crimea": "Crimea",
+ "region-navassa-island-usa": "Isla de Navaza (EE. UU.)",
+ "region-wake-island-usa": "Isla Wake (EE. UU.)",
+ "region-bonaire-netherlands": "Bonaire (Países Bajos)",
+ "region-saba-netherlands": "Saba (Países Bajos)",
+ "region-sint-eustatius-netherlands": "San Eustaquio (Países Bajos)"
}
From 019c715092211c78ed48b3506ae0134f3e05ee20 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:11 -0300
Subject: [PATCH 021/589] update(i18n): src/intl/es/page-stablecoins.json
---
src/intl/es/page-stablecoins.json | 76 +++++++++++++++++++++----------
1 file changed, 52 insertions(+), 24 deletions(-)
diff --git a/src/intl/es/page-stablecoins.json b/src/intl/es/page-stablecoins.json
index 0d918cabcd1..21f675c5742 100644
--- a/src/intl/es/page-stablecoins.json
+++ b/src/intl/es/page-stablecoins.json
@@ -1,5 +1,8 @@
{
"page-stablecoins-accordion-borrow-crypto-collateral": "Garantía criptográfica",
+ "page-stablecoins-usdc-banner-body": "USDC es la mayor moneda estable regulada por Estados Unidos, respaldada por dinero fiduciario. Su valor está ligado al dólar estadounidense, la emite Circle y su uso está muy extendido.",
+ "page-stablecoins-usdc-banner-learn-button": "Más información sobre USD Coin",
+ "page-stablecoins-usdc-banner-swap-button": "Consiga USDC",
"page-stablecoins-accordion-borrow-crypto-collateral-copy": "Con Ethereum puede pedir prestado directamente a otros usuarios sin necesidad de realizar operaciones con sus ETH. Esto le puede dar fuerza: algunos lo hacen para intentar acumular más ET.",
"page-stablecoins-accordion-borrow-crypto-collateral-copy-p2": "Pero, como el precio de los ETH es volátil, tendrá que aportar una sobregarantía. Esto significa que, si quiere pedir prestadas 100 monedas estables, probablemente necesitará al menos 150 $ en ETH. Esto protege el sistema y a los prestamistas.",
"page-stablecoins-accordion-borrow-crypto-collateral-link": "Más sobre las monedas estables respaldadas por criptomonedas",
@@ -23,10 +26,9 @@
"page-stablecoins-accordion-buy-text-preview": "Muchos intercambios y carteras le permiten comprar monedas estables directamente. Se aplicarán restricciones geográficas.",
"page-stablecoins-accordion-buy-title": "Comprar",
"page-stablecoins-accordion-buy-warning": "Los intercambios centralizados solo pueden enumerar monedas estables respaldadas por dinero fiduciario (FIAT), como la moneda estable digital vinculada al dólar estadounidense (USDC), Tether y otras. Es posible que no pueda comprar directamente, pero debería ser capaz de intercambiarlas desde ETH u otras criptomonedas que pueda comprar en la plataforma.",
- "page-stablecoins-accordion-earn-project-1-description": "La mayor parte del trabajo técnico es para el movimiento de software de código abierto.",
+ "page-stablecoins-accordion-earn-project-1-description": "Hackatones en curso y próximos. Cada constructor entra en la frontera digital.",
"page-stablecoins-accordion-earn-project-2-description": "Tecnología, contenido y otros trabajos para la comunidad MakerDao (el equipo que le trajo Dai).",
"page-stablecoins-accordion-earn-project-3-description": "Cuando lo conozca todo de verdad, encuentre errores para ganar Dai.",
- "page-stablecoins-accordion-earn-project-bounties": "Recompensas de gitcoin",
"page-stablecoins-accordion-earn-project-bug-bounties": "Recompensas por errores en la capa de consenso",
"page-stablecoins-accordion-earn-project-community": "Comunidad MakerDao",
"page-stablecoins-accordion-earn-projects-copy": "Estas son plataformas que le pagarán en monedas estables por su trabajo.",
@@ -36,8 +38,6 @@
"page-stablecoins-accordion-earn-requirements-description": "Las monedas estables son un gran método de pago por el trabajo y los servicios debido a que el valor es estable. Sin embargo, necesitará una cartera para el pago.",
"page-stablecoins-accordion-earn-text-preview": "Puede ganar monedas estables trabajando en proyectos dentro del ecosistema de Ethereum.",
"page-stablecoins-accordion-earn-title": "Ganar",
- "page-stablecoins-accordion-less": "Menos",
- "page-stablecoins-accordion-more": "Más",
"page-stablecoins-accordion-requirements": "Lo que necesitará",
"page-stablecoins-accordion-swap-dapp-intro": "Si ya tiene ETH y una cartera, puede usar estas DApps para cambiar por monedas estables.",
"page-stablecoins-accordion-swap-dapp-link": "Más sobre los plataformas de intercambio centralizada",
@@ -56,7 +56,6 @@
"page-stablecoins-algorithmic-con-1": "Necesita confiar (o ser capaz de leer) el algoritmo.",
"page-stablecoins-algorithmic-con-2": "Su saldo de monedas cambiará en función de la oferta total.",
"page-stablecoins-algorithmic-description": "Estas monedas estables no están respaldadas por ningún otro activo. En su lugar, un algoritmo venderá tókenes si el precio cae por debajo del valor deseado y proporcionará tókenes si el valor excede de la cantidad deseada. Debido a que el número de estos tókenes en circulación cambia regularmente, el número de tókenes que posea cambiará, pero siempre reflejará su cuota.",
- "page-stablecoins-algorithmic-disclaimer": "Las monedas estables algorítmicas son una tecnlogía experimental. Debería ser conciente de los riesgos antes de usarlas.",
"page-stablecoins-algorithmic-pro-1": "No se necesita garantía.",
"page-stablecoins-algorithmic-pro-2": "Controlado por un algoritmo público.",
"page-stablecoins-bank-apy": "0,05 %",
@@ -69,21 +68,16 @@
"page-stablecoins-crypto-backed": "Respaldado por criptomonedas",
"page-stablecoins-crypto-backed-con-1": "Menos estable que las monedas estables respaldadas por dinero fiduciario.",
"page-stablecoins-crypto-backed-con-2": "Es necesario vigilar el valor de la garantía criptográfica.",
- "page-stablecoins-crypto-backed-description": "Estas monedas estables están respaldadas por otros activos criptográficos, como el ETH. Sus precios dependen del valor del activo subyacente (o valor garantizado), que puede ser volátil. Debido a que el valor de ETH puede fluctuar, estas monedas estables están sobregarantizadas para asegurar que el precio se mantenga lo más estable posible. Esto significa en pocas palabras que una criptomoneda valorada en 1 $ respaldada por una moneda estable tiene una criptomoneda subyacente con un valor de al menos 2 $. Así, si el precio de ETH cae, habrá que usar más ETH para respaldar la moneda estable; de lo contrario, las monedas estables perderán su valor.",
+ "page-stablecoins-crypto-backed-description": "Estas monedas estables están respaldadas por otros criptoactivos, como ETH. Sus precios dependen del valor del activo subyacente (o garantía), que puede ser volátil. Como el valor de ETH puede fluctuar, estas monedas estables están sobregarantizadas para asegurarse de que el precio se mantenga lo más estable posible. En resumen, esto significa que una moneda estable de 1 dólar respaldada por criptomonedas tiene un criptoactivo subyacente valorado en al menos 2 dólares. Así que, si el precio de ETH cae, se debe usar más ETH para respaldar la moneda estable, o de lo contrario las monedas estables perderán su valor. Tenga en cuenta que algunas monedas estables respaldadas por criptomonedas, como DAI, también usan monedas estables centralizadas como parte de su respaldo.",
"page-stablecoins-crypto-backed-pro-1": "Transparente y totalmente descentralizado.",
"page-stablecoins-crypto-backed-pro-2": "Rápido para convertirse en otros activos criptográficos.",
"page-stablecoins-crypto-backed-pro-3": "No hay depositarios externos: todos los activos están controlados por cuentas de Ethereum.",
- "page-stablecoins-dai-banner-body": "Dai es probablemente la moneda estable descentralizada más famosa. Su valor es aproximadamente de 1 dólar y es ampliamente aceptada en las DApps.",
- "page-stablecoins-dai-banner-learn-button": "Más información sobre Dai",
- "page-stablecoins-dai-banner-swap-button": "Intercambiar ETH por Dai",
- "page-stablecoins-dai-banner-title": "Dai",
- "page-stablecoins-dai-logo": "El logo de Dai",
"page-stablecoins-editors-choice": "Opciones del editor",
"page-stablecoins-editors-choice-intro": "Estos son probablemente los ejemplos más conocidos de monedas estables en este momento y las monedas que hemos encontrado útiles al usar DApps.",
"page-stablecoins-explore-dapps": "Explorar DApps",
"page-stablecoins-fiat-backed": "Respaldado por dinero fiduciario",
"page-stablecoins-fiat-backed-con-1": "Centralizado: alguien debe emitir los tókenes.",
- "page-stablecoins-fiat-backed-con-2": "Requiere auditoría para asegurar que la empresa tenga suficientes reservas.",
+ "page-stablecoins-fiat-backed-con-2": "Requiere una auditoría para garantizar que la empresa cuente con reservas suficientes.",
"page-stablecoins-fiat-backed-description": "Es básicamente la promesa de pago de una deuda por dinero fiduciario tradicional (dólares, en general). Debe usar su dinero fiduciario para comprar una moneda estable que después puede canjear en efectivo por su moneda original.",
"page-stablecoins-fiat-backed-pro-1": "Seguro contra la volatilidad de las criptomonedas.",
"page-stablecoins-fiat-backed-pro-2": "Los cambios en el precio son mínimos.",
@@ -101,7 +95,7 @@
"page-stablecoins-precious-metals": "Metales preciosos",
"page-stablecoins-precious-metals-con-1": "Centralizado: alguien debe emitir los tókenes.",
"page-stablecoins-precious-metals-con-2": "Debe confiar en el emisor de tókenes y en las reservas de metales preciosos.",
- "page-stablecoins-precious-metals-description": "Al igual que las monedas respaldadas por el dinero fiduciario, en su lugar estas monedas estables utilizan recursos como el oro para mantener su valor.",
+ "page-stablecoins-precious-metals-description": "Al igual que las monedas respaldadas por dinero fiduciario, estas monedas estables en su lugar usan recursos como el oro para mantener su valor. Son «estables» en el sentido de que su precio está ligado de forma consistente al valor de otro activo, y son similares al seguimiento de propiedad en cadena de activos del mundo real",
"page-stablecoins-precious-metals-pro-1": "Seguro contra la volatilidad de las criptomonedas.",
"page-stablecoins-prices": "Precios de las monedas estables",
"page-stablecoins-prices-definition": "Las monedas estables son criptomonedas sin volatilidad. Comparten muchas de las capacidades de ETH, pero su valor es estable, más como una moneda tradicional. Por tanto, tiene acceso a dinero estable que puede utilizar en Ethereum. ",
@@ -118,6 +112,7 @@
"page-stablecoins-stablecoins-dapp-description-2": "Preste monedas estables y gane intereses y $COMP, el token propio de Compound.",
"page-stablecoins-stablecoins-dapp-description-3": "Una plataforma comercial donde puede ganar intereses con sus Dai y USDC.",
"page-stablecoins-stablecoins-dapp-description-4": "Una app diseñada para ahorrar Dai.",
+ "page-stablecoins-stablecoins-dapp-description-5": "Un protocolo para prestar y pedir prestado en Ethereum que soporta muchas opciones de monedas estables.",
"page-stablecoins-stablecoins-feature-1": "Las monedas estables son globales y se pueden enviar a través de Internet. Son fáciles de recibir o enviar una vez que tiene una cuenta de Ethereum.",
"page-stablecoins-stablecoins-feature-2": "La demanda de monedas estables es alta, por lo que puede ganar intereses por prestar las suyas. Asegúrese de que es consciente de los riesgos antes de prestarlas.",
"page-stablecoins-stablecoins-feature-3": "Las monedas estables se pueden cambiar por ETH y otros tókenes de Ethereum. Muchas DApps dependen de las monedas estables.",
@@ -126,43 +121,76 @@
"page-stablecoins-stablecoins-table-header-column-1": "Moneda",
"page-stablecoins-stablecoins-table-header-column-2": "Capitalización de mercado",
"page-stablecoins-stablecoins-table-header-column-3": "Tipo de garantía",
+ "page-stablecoins-stablecoins-table-header-column-4": "Vincular",
"page-stablecoins-stablecoins-table-type-crypto-backed": "Criptomoneda",
"page-stablecoins-stablecoins-table-type-fiat-backed": "Dinero fiduciario",
"page-stablecoins-stablecoins-table-type-precious-metals-backed": "Metales preciosos",
"page-stablecoins-table-error": "No se pudieron cargar las monedas estables. Intente actualizar la página.",
"page-stablecoins-title": "Monedas estables",
"page-stablecoins-meta-title": "Monedas estables explicadas: ¿para qué sirven?",
- "page-stablecoins-top-coins": "Mejores monedas estables por capitalización de mercado",
- "page-stablecoins-top-coins-intro": "La capitalización del mercado es",
+ "page-stablecoins-top-coins": "Principales monedas estables por capitalización del mercado",
+ "page-stablecoins-top-coins-intro": "La capitalización de mercado es",
"page-stablecoins-top-coins-intro-code": "el número total de tókenes que existen multiplicado por el valor de cada token. La lista es dinámica y los proyectos enumerados aquí no están necesariamente respaldados por el equipo de ethereum.org.",
"page-stablecoins-types-of-stablecoin": "Cómo funcionan: tipos de monedas estables",
- "page-stablecoins-usdc-banner-body": "El USDC es probablemente la moneda estable más famosa respaldada por dinero fiduciario. Su valor es aproximadamente de un dólar y está respaldada por Circle y Coinbase.",
- "page-stablecoins-usdc-banner-learn-button": "Más información sobre USD Coin",
- "page-stablecoins-usdc-banner-swap-button": "Intercambiar ETH por USDC",
- "page-stablecoins-usdc-banner-title": "USDC",
"page-stablecoins-usdc-logo": "El logo de USDC",
+ "page-stablecoins-usdt-banner-body": "Tether USD (USDT) es la mayor moneda estable respaldada por dinero fiduciario, según la capitalización del mercado. Su valor está ligado a 1 dólar estadounidense y sus reservas las gestiona Tether Limited.",
+ "page-stablecoins-usdt-banner-swap-button": "Intercambiar ETH por USDT",
+ "page-stablecoins-usdt-banner-learn-button": "Más información sobre USDT",
+ "page-stablecoins-usdt-logo": "El logo de USDT",
+ "page-stablecoins-usds-banner-body": "USDS es el sucesor de Dai, integramente respaldado por criptomonedas y diseñado para ahorros y recompensas en cadena. Muy utilizado en DeFi porque permite que los usuarios tengan un control total de sus fondos.",
+ "page-stablecoins-usds-banner-swap-button": "Intercambiar ETH por USDS",
+ "page-stablecoins-usds-banner-learn-button": "Más información sobre USDS",
+ "page-stablecoins-usds-logo": "El logo de USDS",
+ "page-stablecoins-gho-banner-body": "GHO es una moneda estable descentralizada con múltiples garantías creada por Aave. Usa un modelo híbrido que combina un respaldo de garantía múltiple para criptomonedas con un enfoque de gobernanza comunitario.",
+ "page-stablecoins-gho-banner-swap-button": "Intercambiar ETH por GHO",
+ "page-stablecoins-gho-banner-learn-button": "Más información sobre GHO",
+ "page-stablecoins-gho-logo": "El logo de GHO",
+ "page-stablecoins-glo-banner-body": "Glo Dollar (USDGLO) es una moneda estable que dona todos los beneficios a bienes públicos y organizaciones benéficas. Mantener o usar Glo Dollar ayuda a financiar causas como la lucha contra la pobreza y el apoyo al código abierto —sin ningún coste adicional para usted—.",
+ "page-stablecoins-glo-banner-swap-button": "Comprar GLO",
+ "page-stablecoins-glo-banner-learn-button": "Más información sobre GLO",
+ "page-stablecoins-glo-logo": "EL logo de USDGLO",
+ "page-stablecoins-hai-banner-title": "HAI",
+ "page-stablecoins-hai-banner-body": "HAI es una moneda estable descentralizada respaldada por ETH, creada por Let's Get HAI, centrada en la resistencia a la censura y bienes públicos. Está diseñada con una gobernanza minimalista y prioriza la estabilidad sin comprometer los valores de descentralización.",
+ "page-stablecoins-hai-banner-swap-button": "Acuñar HAI con ETH",
+ "page-stablecoins-hai-banner-learn-button": "Más información sobre HAI",
+ "page-stablecoins-hai-logo": "El logo de HAI",
+ "page-stablecoins-lusd-banner-title": "LUSD",
+ "page-stablecoins-lusd-banner-body": "LUSD es una moneda estable descentralizada de Liquidity que está respaldada exclusivamente por ETH con un proporción mínima de garantía del 110 %. Permite préstamos sin intereses, liquidaciones algorítmicas y una gobernanza mínima, lo que la hace muy resistente a la censura.",
+ "page-stablecoins-lusd-banner-swap-button": "Intercambiar ETH por LUSD",
+ "page-stablecoins-lusd-banner-learn-button": "Más información sobre LUSD",
+ "page-stablecoins-lusd-logo": "El logo de LUSD",
"page-stablecoins-why-stablecoins": "¿Por qué monedas estables?",
"page-stablecoins-how-they-work-button": "Cómo funcionan",
"page-stablecoins-why-stablecoins-body": "ETH, al igual que el bitcoin, tiene un precio volátil porque es una tecnología nueva, así que es posible que no quiera gastarla regularmente. Las monedas estables reflejan el valor de las monedas tradicionales para darle acceso a dinero estable que puede usar en Ethereum.",
"page-stablecoins-more-defi-button": "Más sobre finanzas descentralizadas (DeFi)",
"page-stablecoins-tools-title": "Más información sobre las monedas estables",
"page-stablecoins-tools-stablecoinswtf-description": "Stablecoins.wtf ofrece un tablero con datos históricos del mercado, estadísticas y contenido educativo para las monedas estables más destacadas.",
- "page-apps-ready-button": "Ir",
+ "page-stablecoins-tools-stablepulse-description": "Proporciona una visión clara, precisa y mínimamente filtrada del ecosistema de monedas estables con analíticas que engloban tókenes y cadenas.",
+ "page-stablecoins-tools-stablesinfo-description": "Clasificación y panel de información en directo que hace un seguimiento de los datos en cadena y de suministro de las principales monedas estables y cadenas.",
+ "page-stablecoins-tools-dune-description": "Panel que proporciona información en tiempo real sobre suministro, liquidez, volumen de negociación y adopción de monedas estables en las cadenas de bloques.",
+ "page-stablecoins-tools-visa-description": "Panel de información que permite visualizar el movimiento, suministro y uso de monedas estables respaldadas por dinero fiduciario en cadenas de bloques públicas.",
+ "page-stablecoins-tools-stablewars-description": "Clasificación de estadísticas y panel de información que hace un seguimiento del balance, las transferencias y clasificaciones de monedas estables en múltiples cadenas de bloques.",
+ "page-apps-ready-button": "Go",
"pros": "Ventajas",
"cons": "Desventajas",
"1inch-logo": "Logo de 1 pulgada",
"aave-logo": "Logo de Aave",
"binance-logo": "Logo de Binance",
"bittrex-logo": "Logo de Bittrex",
+ "buidlbox-logo": "Logo de Buidlbox",
"coinbase-logo": "Logo de Coinbase",
"coinmama-logo": "Logo de Coinmama",
- "compound-logo": "Logo de Compound",
+ "compound-logo": "Logo Compound",
"example-projects": "Proyectos de ejemplo",
+ "page-stablecoins-filter-by-type": "Filtrar por tipo",
+ "page-stablecoins-reset-list": "Restablecer lista",
+ "page-stablecoins-show-more": "Mostrar más",
+ "page-stablecoins-no-results": "Ninguna moneda estable coincide con los filtros actuales",
"gemini-logo": "Logo de Gemini",
- "gitcoin-logo": "Logo de Gitcoin",
"makerdao-logo": "Logo de MakerDao",
- "matcha-logo": "Logo de Matcha",
+ "matcha-logo": "Logo Matcha",
+ "sparkfi-logo": "Logo de Spark Protocol",
"summerfi-logo": "Logo de Summer.fi",
- "uniswap-logo": "Logo de Uniswap",
+ "uniswap-logo": "Logo Uniswap",
"page-stablecoins-go-to": "Ir a"
}
From 6545bd41849f49ce8e4a96fa5857d65f8e3a23d7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:12 -0300
Subject: [PATCH 022/589] update(i18n): src/intl/es/page-what-is-ether.json
---
src/intl/es/page-what-is-ether.json | 100 ++++++++++++++++++++++++++++
1 file changed, 100 insertions(+)
create mode 100644 src/intl/es/page-what-is-ether.json
diff --git a/src/intl/es/page-what-is-ether.json b/src/intl/es/page-what-is-ether.json
new file mode 100644
index 00000000000..b17d662dde8
--- /dev/null
+++ b/src/intl/es/page-what-is-ether.json
@@ -0,0 +1,100 @@
+{
+ "page-what-is-ether-meta-title": "¿Qué es el ether (ETH)? (Una guía completa) | ethereum.org",
+ "page-what-is-ether-meta-description": "El ether (ETH) es la criptomoneda nativa de Ethereum. Aprenda para qué se utiliza, cómo y dónde comprarlo, cuánto hay y qué afecta a su precio.",
+ "page-what-is-ether-twitter-meta-description": "El ether (ETH) es la criptomoneda nativa de Ethereum. Aprenda para qué se utiliza, cómo y dónde comprarlo, cuánto hay y mucho más.",
+ "page-what-is-ether-title": "¿Qué es el ether (ETH)?",
+ "page-what-is-ether-hero-description-1": "El ether (ETH) es la criptomoneda nativa que impulsa la red de Ethereum. Se utiliza para pagar las comisiones de transacción (conocidas como «gas») por usar la red y las aplicaciones construidas sobre ella, para proteger la red a través del staking y sirve como dinero digital para pagos e inversiones, sin estar controlado por ninguna entidad, organización o gobierno central. El ETH es una de las mayores criptomonedas por capitalización de mercado.",
+ "page-what-is-ether-what-is-ether-description-1": "El ether, comúnmente conocido como ETH, es el combustible que impulsa la cadena de bloques de Ethereum. A diferencia del bitcoin, que sirve principalmente como dinero digital, el ether tiene múltiples usos dentro del ecosistema de Ethereum.",
+ "page-what-is-ether-what-is-ether-description-2": "Como criptomoneda nativa de Ethereum, el ETH se utiliza para:",
+ "page-what-is-ether-what-is-ether-description-3": "Pagar las comisiones de transacción (gas) por usar la red y sus aplicaciones",
+ "page-what-is-ether-what-is-ether-description-4": "Proteger la red de Ethereum a través del staking",
+ "page-what-is-ether-what-is-ether-description-5": "El ETH se introdujo en 2015 como parte del lanzamiento de Ethereum y desde entonces ha crecido hasta convertirse en uno de los activos más valiosos del mundo.",
+ "page-what-is-ether-what-is-ether-description-6": "Para los consumidores",
+ "page-what-is-ether-what-is-ether-description-7": "El ETH permite realizar pagos globales sin bancos, comprar tókenes no fungibles (NFT) y acceder a aplicaciones de finanzas descentralizadas (DeFi). Es resistente a la censura y tiene funcionalidad transfronteriza las 24 horas del día, los 7 días de la semana.",
+ "page-what-is-ether-what-is-ether-description-8": "Para desarrolladores",
+ "page-what-is-ether-what-is-ether-description-9": "El ETH se usa para pagar las comisiones de transacción al implementar contratos inteligentes en la red principal de Ethereum. También es la moneda principal utilizada en muchas aplicaciones del ecosistema de Ethereum.",
+ "page-what-is-ether-what-is-ether-description-10": "Para los inversores",
+ "page-what-is-ether-what-is-ether-description-11": "El ETH funciona como una reserva de valor y un activo que genera rendimiento a través del staking. Proporciona exposición al crecimiento de la web3 y a la expansión de la economía digital.",
+ "page-what-is-ether-what-is-ether-description-12": "Más información sobre el staking de ETH",
+ "page-what-is-ether-how-to-buy-eth": "Cómo comprar ETH",
+ "page-what-is-ether-how-to-buy-eth-description-1": "Comprar ETH es sencillo y existen varias opciones según sus necesidades y ubicación. Empiece siempre con una plataforma de confianza que ofrezca una seguridad sólida.",
+ "page-what-is-ether-how-to-buy-eth-description-2": "Los consumidores pueden comprar ETH a través de exchanges de criptomonedas o aplicaciones de monedero.",
+ "page-what-is-ether-how-to-buy-eth-description-3": "Nota al margen",
+ "page-what-is-ether-how-to-buy-eth-description-4": "Al comprar ETH, oirá hablar de \"cuenta/dirección\" y \"monedero\".",
+ "page-what-is-ether-how-to-buy-eth-description-5": "Piense en su cuenta como su dirección de correo electrónico, a la que la gente le envía dinero.",
+ "page-what-is-ether-how-to-buy-eth-description-6": "Piense en su monedero como su aplicación de correo electrónico, donde consulta los saldos y realiza los pagos.",
+ "page-what-is-ether-how-to-buy-eth-description-7": "Puede comprar ETH con:",
+ "page-what-is-ether-how-to-buy-eth-description-8": "Tarjetas de crédito/débito: al instante, pero con comisiones más altas",
+ "page-what-is-ether-how-to-buy-eth-description-9": "Transferencias bancarias: más lento, pero con comisiones más bajas",
+ "page-what-is-ether-how-to-buy-eth-description-10": "PayPal o servicios similares donde estén disponibles",
+ "page-what-is-ether-how-to-buy-eth-description-11": "Para las empresas, los exchanges ofrecen cuentas corporativas con límites más altos, mejor soporte, funciones de cumplimiento, descuentos por volumen y seguridad mejorada.",
+ "page-what-is-ether-how-to-buy-eth-description-12": "Otras formas de obtener ETH:",
+ "page-what-is-ether-how-to-buy-eth-description-13": "Recibir pagos de personas que conoce",
+ "page-what-is-ether-how-to-buy-eth-description-14": "Aportar liquidez en protocolos de finanzas descentralizadas",
+ "page-what-is-ether-how-to-buy-eth-description-15": "Hacer staking de ETH para ganar recompensas mientras protege la red de Ethereum",
+ "page-what-is-ether-how-to-buy-eth-description-16": "Más información sobre cómo y dónde comprar ETH",
+ "page-what-is-ether-how-to-send-and-receive-eth": "Cómo enviar y recibir ETH",
+ "page-what-is-ether-how-to-send-and-receive-eth-description-1": "Para enviar ETH se necesita un monedero y una dirección de destinatario. Introduzca su dirección, especifique el importe, revise la comisión de transacción y confirme. Las transacciones suelen llegar en menos de 30 segundos y no se pueden revertir una vez confirmadas.",
+ "page-what-is-ether-how-to-send-and-receive-eth-description-2": "Para recibir ETH es necesario que comparta su dirección de Ethereum o su código QR con el remitente. Los fondos aparecen en su monedero tras la confirmación de la red, y la mayoría de los monederos proporcionan notificaciones.",
+ "page-what-is-ether-how-to-send-and-receive-eth-description-3": "¿Necesita ayuda? Lea la guía Cómo usar un monedero.",
+ "page-what-is-ether-how-to-send-and-receive-eth-description-4": "Al comprar ETH, oirá hablar de \"cuenta/dirección\" y \"monedero\".",
+ "page-what-is-ether-how-to-send-and-receive-eth-description-5": "Piense en su cuenta como su dirección de correo electrónico, a la que la gente le envía dinero.",
+ "page-what-is-ether-how-to-send-and-receive-eth-description-6": "Piense en su monedero como su aplicación de correo electrónico, donde consulta los saldos y realiza los pagos.",
+ "page-what-is-ether-how-to-send-and-receive-eth-description-7": "Para cantidades mayores, considere los monederos de hardware para mayor seguridad.",
+ "page-what-is-ether-how-to-send-and-receive-eth-description-8": "Aprenda sobre Ethereum y cómo funciona.",
+ "page-what-is-ether-how-to-send-and-receive-eth-callout": "Comparta su dirección de Ethereum solo con contactos de confianza. Dado que Ethereum es un libro de contabilidad público, podrán ver su saldo y sus transacciones. No podrán acceder a sus fondos, pero se recomienda privacidad.",
+ "page-what-is-ether-how-long-does-it-take-to-send-eth": "¿Cuánto tarda en enviarse el ETH?",
+ "page-what-is-ether-how-long-does-it-take-to-send-eth-description-1": "Las transacciones de ETH suelen completarse en menos de 30 segundos. La red de Ethereum procesa bloques cada 12 segundos, aunque las transacciones pueden quedar en cola durante los períodos de congestión.",
+ "page-what-is-ether-how-long-does-it-take-to-send-eth-description-2": "Las transacciones alcanzan la «finalidad» después de ~15 minutos, en comparación con el promedio de 60 minutos de Bitcoin.",
+ "page-what-is-ether-how-long-does-it-take-to-send-eth-description-3": "Durante los períodos de alto tráfico de la red, puede acelerar las transacciones pagando comisiones de transacción más altas, lo que le colocará en una posición preferente en la cola. Las comisiones se reparten entre los validadores y un mecanismo de quema.",
+ "page-what-is-ether-how-much-does-it-cost-to-send-eth": "¿Cuánto cuesta enviar ETH?",
+ "page-what-is-ether-how-much-does-it-cost-to-send-eth-description-1": "Las transacciones de Ethereum requieren comisiones de transacción pagadas en ETH. La comisión se calcula en función del trabajo computacional requerido (medido en «gas») y la demanda actual de la red. El precio del gas fluctúa con el tráfico de la red, lo que hace que las transacciones sean de menor costo durante los períodos de menor actividad.",
+ "page-what-is-ether-l2s": "Presentamos las L2: escalado de Ethereum",
+ "page-what-is-ether-l2s-description-1": "A medida que crece la popularidad de Ethereum, mantener bajas las comisiones de transacción se convierte en un desafío. Las redes de capa 2 (L2) abordan este problema.",
+ "page-what-is-ether-l2s-description-2": "Las L2 como Optimism y Arbitrum ofrecen comisiones entre 10 y 100 veces más baratas al tiempo que heredan la seguridad de Ethereum. Procesan las transacciones fuera de la cadena y publican los datos en Ethereum.",
+ "page-what-is-ether-l2s-description-3": "Piense en ellas como carriles expresos que proporcionan transacciones más rápidas y baratas junto a la autopista principal de Ethereum.",
+ "page-what-is-ether-l2s-description-4": "Las transferencias de L2 suelen costar menos de 0,01 $, lo que acerca Ethereum a millones de usuarios más a través de integraciones con empresas como Robinhood, PayPal y Shopify.",
+ "page-what-is-ether-what-is-the-eth-supply": "¿Cuál es el suministro de ETH?",
+ "page-what-is-ether-what-is-the-eth-supply-description-1": "A diferencia del tope fijo de 21 millones de Bitcoin, el ETH tiene una mecánica de suministro dinámica:",
+ "page-what-is-ether-what-is-the-eth-supply-description-2": "Se emite nuevo ETH para recompensar a los validadores de la red a una tasa limitada calculada por el protocolo",
+ "page-what-is-ether-what-is-the-eth-supply-description-3": "Una parte de cada comisión de transacción se \"quema\" permanentemente (se elimina de la existencia)",
+ "page-what-is-ether-what-is-the-eth-supply-description-4": "Esto crea períodos alternos de inflación y deflación basados en el uso de la red",
+ "page-what-is-ether-what-is-the-eth-supply-description-5": "Equilibrio esperado: el sistema equilibra la seguridad de la red con la preservación del valor a largo plazo. Un uso elevado conduce a la deflación; un uso bajo da lugar a la inflación.",
+ "page-what-is-ether-what-is-the-eth-supply-description-6": "Fuentes de datos: Etherscan, Ultrasound Money",
+ "page-what-is-ether-what-is-the-distribution-of-eth": "¿Cuál es la distribución de ETH?",
+ "page-what-is-ether-what-is-the-distribution-of-eth-description-1": "La propiedad está ampliamente distribuida entre decenas de millones de direcciones, lo que impide la concentración del control y mejora la descentralización.",
+ "page-what-is-ether-breakdown": "Un desglose de la distribución del ether",
+ "page-what-is-ether-breakdown-description-1": "Ether en staking: decenas de millones de ETH bloqueados para la seguridad de la red",
+ "page-what-is-ether-breakdown-description-2": "Exchanges: las plataformas centralizadas tienen entre el 13 y el 16 % del suministro",
+ "page-what-is-ether-breakdown-description-3": "Contratos inteligentes: cantidades significativas en contratos inteligentes, incluidos los protocolos DeFi",
+ "page-what-is-ether-breakdown-description-4": "Fundación Ethereum: posee menos del 0,3 % del suministro (frente al 9 % en 2014)",
+ "page-what-is-ether-who-holds-most": "¿Quién tiene la mayor parte?",
+ "page-what-is-ether-who-holds-most-description-1": "Las direcciones de Ethereum con los saldos de ETH más altos no suelen ser de particulares. La gran mayoría del ether visible en las direcciones de Ethereum \"principales\" representa los fondos colectivos y agrupados de muchas personas y entidades diferentes, no las posesiones de un solo individuo. ",
+ "page-what-is-ether-who-holds-most-description-2": "Las cuentas de ETH con los saldos más altos suelen incluir:",
+ "page-what-is-ether-who-holds-most-description-3": "El contrato de depósito de la Beacon Chain: el saldo del contrato de depósito representa todo el ETH que se ha puesto en staking para ayudar a proteger la red de Ethereum. Aunque esta es la dirección de Ethereum con el mayor saldo de ETH, no representa una cuenta de monedero de Ethereum accesible. Es un contrato inteligente que acepta depósitos de ETH como primer paso para participar en el staking, y luego gestiona los saldos de ese ether entre los validadores activos de la red.",
+ "page-what-is-ether-who-holds-most-description-4": "Contratos inteligentes: muchas de las otras direcciones de Ethereum con saldos elevados representan los contratos inteligentes que impulsan las aplicaciones basadas en Ethereum, como las direcciones de contratos inteligentes para protocolos de finanzas descentralizadas (DeFi), puentes u organizaciones autónomas descentralizadas (DAO). Estos saldos de contrato representan el ether que muchos monederos han depositado para participar en su aplicación.",
+ "page-what-is-ether-who-holds-most-description-5": "Cuentas ómnibus: son grandes monederos operados por exchanges, plataformas y fondos (como Coinbase, Robinhood o Binance). Cuando un usuario compra ETH en un exchange, a menudo se guarda en una de estas cuentas masivas junto con el ETH de miles de otros clientes de la plataforma.",
+ "page-what-is-ether-who-holds-most-description-6": "Puede ver una lista en vivo de las direcciones de monederos de Ethereum con los saldos de ETH más altos en Etherscan aquí.",
+ "page-what-is-ether-distribution": "Por qué la distribución es importante para la descentralización",
+ "page-what-is-ether-distribution-description-1": "Una amplia distribución impide el control centralizado. La verdadera descentralización depende del número de nodos y validadores independientes que mantienen la red.",
+ "page-what-is-ether-what-makes-eth-valuable": "¿Qué hace que el ETH sea valioso?",
+ "page-what-is-ether-what-makes-eth-valuable-description-1": "El ETH obtiene su valor de múltiples fuentes:",
+ "page-what-is-ether-what-makes-eth-valuable-description-2": "Utilidad de la red: todas las transacciones de Ethereum requieren ETH para las comisiones de gas, lo que crea una demanda constante que crece con la adopción de la red.",
+ "page-what-is-ether-what-makes-eth-valuable-description-3": "Recompensas de staking: los stakers de ETH obtienen rendimientos mientras protegen la red, lo que atrae tanto a inversores particulares como institucionales.",
+ "page-what-is-ether-what-makes-eth-valuable-description-4": "Reserva de valor: muchos ven el ETH como \"petróleo digital\", un activo escaso con una utilidad real que impulsa la economía digital.",
+ "page-what-is-ether-what-makes-eth-valuable-description-5": "Dinámica de suministro: la quema de comisiones crea una presión deflacionaria durante los períodos de uso elevado. Desde 2021, se han retirado permanentemente de la circulación millones de ETH.",
+ "page-what-is-ether-what-is-wrapping-eth": "¿Qué es wrappear ETH?",
+ "page-what-is-ether-what-is-wrapping-eth-description-1": "El ether wrappeado (WETH) es un token ERC-20 que representa al ETH en una proporción de 1:1. Muchas aplicaciones descentralizadas y redes L2 están construidas para manejar tókenes ERC-20, pero el ETH nativo en sí no es un token ERC-20. «Wrappear» significa bloquear ETH en un contrato inteligente y emitir una representación ERC-20 de ese ETH bloqueado (WETH), lo que permite su uso en cualquier aplicación y L2 que solo acepte tókenes ERC-20.",
+ "page-what-is-ether-what-is-wrapping-eth-description-2": "Los usos más comunes incluyen:",
+ "page-what-is-ether-what-is-wrapping-eth-description-3": "Pares de trading en exchanges descentralizados como Uniswap",
+ "page-what-is-ether-what-is-wrapping-eth-description-4": "Garantía en plataformas de préstamos como Aave",
+ "page-what-is-ether-what-is-wrapping-eth-description-5": "Pujas en mercados de NFT como OpenSea",
+ "page-what-is-ether-what-is-wrapping-eth-description-6": "El WETH se puede desenvolver para volver a convertirlo en ETH en cualquier momento con comisiones mínimas. El WETH se destruye y el ETH que representaba se libera del contrato inteligente. La mayoría de las aplicaciones gestionan el proceso de «wrappear» y «desenvolver» sin problemas.",
+ "page-what-is-ether-what-is-wrapping-eth-description-7": "Más información sobre el ether wrappeado (WETH)",
+ "page-what-is-ether-gas-table-transaction-type": "Tipo de transacción",
+ "page-what-is-ether-gas-table-typical-cost-range": "Rango de costos en tiempo real",
+ "page-what-is-ether-gas-table-estimated-gas-units": "Unidades de gas estimadas",
+ "page-what-is-ether-gas-table-row-1-1": "Transferencias de ETH",
+ "page-what-is-ether-gas-table-row-2-1": "Intercambio de tókenes",
+ "page-what-is-ether-gas-table-row-3-1": "Transacciones complejas de DeFi/NFT"
+}
\ No newline at end of file
From 66f10d7acc0a8193f18e3b1d0698e2b8138d871e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:13 -0300
Subject: [PATCH 023/589] update(i18n):
src/intl/es/page-what-is-the-ethereum-network.json
---
.../es/page-what-is-the-ethereum-network.json | 89 +++++++++++++++++++
1 file changed, 89 insertions(+)
create mode 100644 src/intl/es/page-what-is-the-ethereum-network.json
diff --git a/src/intl/es/page-what-is-the-ethereum-network.json b/src/intl/es/page-what-is-the-ethereum-network.json
new file mode 100644
index 00000000000..eebdabd99f6
--- /dev/null
+++ b/src/intl/es/page-what-is-the-ethereum-network.json
@@ -0,0 +1,89 @@
+{
+ "page-what-is-ethereum-network-meta-title": "¿Qué es la red de Ethereum? | ethereum.org",
+ "page-what-is-ethereum-network-meta-description": "Conozca qué es la red de Ethereum, la participación (staking) y la seguridad, las comisiones de red (también conocidas como gas), las redes de escalado de capa 2 y cómo explorar datos en vivo de la red.",
+ "page-what-is-ethereum-network-twitter-meta-description": "Conozca qué es la red de Ethereum, la participación (staking) y la seguridad, las comisiones de red, las redes de escalado de capa 2 y cómo explorar datos en vivo de la red.",
+ "page-what-is-ethereum-network-title": "¿Qué es la red de Ethereum?",
+ "page-what-is-ethereum-network-description-1": "La red de Ethereum es la infraestructura física y digital que sustenta a Ethereum.",
+ "page-what-is-ethereum-network-description-2": "Esto incluye nodos que almacenan datos, validadores que procesan transacciones, software que ejecuta smart contracts y redes de capa 2 que escalan Ethereum más allá de la cadena principal.",
+ "page-what-is-ethereum-network-section-network-fees-title": "¿Qué son las comisiones de la red de Ethereum (también conocidas como comisiones de gas)?",
+ "page-what-is-ethereum-network-section-staking-title": "¿Qué es el staking y cómo protege la red?",
+ "page-what-is-ethereum-network-section-layer-2s-title": "¿Qué son las capas 2 de Ethereum y cómo escalan la red?",
+ "page-what-is-ethereum-network-section-live-network-data-title": "Cómo explorar datos en vivo de la red de Ethereum",
+ "page-what-is-ethereum-network-read-next-title": "Leer a continuación",
+ "page-what-is-ethereum-network-read-next-item-1": "¿Qué son las carteras?",
+ "page-what-is-ethereum-network-read-next-item-2": "¿Qué es el ether (ETH)?",
+ "page-what-is-ethereum-network-read-next-item-3": "¿Qué es la Web3?",
+ "page-what-is-ethereum-network-read-next-item-4": "Conozca más a fondo la red de Ethereum",
+ "page-what-is-ethereum-network-section-description-1": "Cuando las personas hablan de Ethereum, generalmente se refieren a varias cosas distintas. Está el ecosistema de aplicaciones y activos digitales, la plataforma de software de código abierto y la moneda nativa ether (ETH).",
+ "page-what-is-ethereum-network-section-description-2": "Pero en el fondo de todo está la red de Ethereum; la base física y digital que une todo.",
+ "page-what-is-ethereum-network-section-description-3": "En esencia, la red de Ethereum es un conjunto de miles de computadoras independientes llamadas nodos. Estos nodos son operados por personas en todo el mundo. Trabajan juntos para almacenar datos, ejecutar smart contracts y registrar cada transacción en un libro mayor abierto y público.",
+ "page-what-is-ethereum-network-section-description-4": "La red de Ethereum realiza varias tareas clave, como:",
+ "page-what-is-ethereum-network-section-description-5": "actualizar cuentas de usuarios y balances",
+ "page-what-is-ethereum-network-section-description-6": "ejecutar smart contracts (programas que ejecutan aplicaciones)",
+ "page-what-is-ethereum-network-section-description-7": "rastrear la propiedad de activos digitales (como stablecoins y NFT)",
+ "page-what-is-ethereum-network-section-description-8": "procesar todas las transacciones que pasan por Ethereum cada día",
+ "page-what-is-ethereum-network-section-description-9": "Por suerte, no es necesario entender cómo funciona la red para utilizarla.",
+ "page-what-is-ethereum-network-section-description-10": "La mayoría de las personas simplemente usan la red a través de una billetera digital. Una billetera suele ser una aplicación web o móvil que le permite enviar y recibir ETH, gestionar sus activos y utilizar aplicaciones.",
+ "page-what-is-ethereum-network-section-description-11": "Otros tipos de usuarios, como los desarrolladores y las empresas que construyen en Ethereum, pueden usar APIs, software de nodos o desplegar smart contracts.",
+ "page-what-is-ethereum-network-section-description-12": "La red de Ethereum es diferente de los sistemas tradicionales por su diseño. El código y los datos de Ethereum se almacenan en nodos descentralizados en todo el mundo, por lo que nadie puede bloquear su acceso ni cerrar su aplicación.",
+ "page-what-is-ethereum-network-section-description-13": "Y como cualquiera puede unirse, abre la puerta al acceso e innovación global.",
+ "page-what-is-ethereum-network-section-description-14": "Estas características permiten cosas que antes no eran posibles, como:",
+ "page-what-is-ethereum-network-section-description-15": "propiedad de datos",
+ "page-what-is-ethereum-network-section-description-16": "redes sociales sin censura o exclusión de plataformas",
+ "page-what-is-ethereum-network-section-description-17": "sistemas financieros abiertos y transparentes",
+ "page-what-is-ethereum-network-section-description-18": "En esencia, la red de Ethereum es una base para la propiedad digital y la participación abierta.",
+ "page-what-is-ethereum-network-section-description-19": "Quizás escuche a personas hablar de Ethereum Mainnet. Esta es la misma red de Ethereum que millones utilizan cada día, donde se intercambian activos reales y existen aplicaciones reales. Pero “Mainnet” ayuda a diferenciarla de las redes de capa 2 de Ethereum y de las redes de prueba (testnets) que los desarrolladores usan para probar nuevas funciones antes de lanzarlas al público.",
+ "page-what-is-ethereum-network-gas-section-description-1": "Cada transacción en Ethereum cuesta una pequeña comisión llamada comisión de gas. Ya sea que envíe ETH, intercambie tokens o utilice una aplicación, paga una pequeña cantidad de gas cada vez que escribe datos en la blockchain.",
+ "page-what-is-ethereum-network-gas-section-description-2": "Las comisiones de gas mantienen Ethereum funcionando sin problemas. Sin ellas, actores malintencionados podrían saturar la red con transacciones vacías y hacerla imposible de usar debido a la congestión, ya que no habría forma de priorizar transacciones según la comisión que los usuarios estén dispuestos a pagar.",
+ "page-what-is-ethereum-network-gas-section-description-3": "Las comisiones de gas de Ethereum cubren el costo de los distintos recursos que puede consumir una transacción, como procesamiento, ancho de banda o almacenamiento. Todo esto se resume en un único valor para los usuarios, pero se realiza una amplia investigación y desarrollo para determinar cuánto debería costar cada operación en relación con las demás.",
+ "page-what-is-ethereum-network-gas-section-description-4": "Entonces, ¿qué ocurre cuando paga gas? Una parte se paga al validador que añade su transacción a un “bloque” de transacciones. Otra parte se “quema”, eliminándola de la oferta.",
+ "page-what-is-ethereum-network-gas-section-description-5": "Esto ayuda a equilibrar la oferta y la demanda, porque cuando la red está ocupada, las comisiones suben. Cuando está más tranquila, las comisiones bajan.",
+ "page-what-is-ethereum-network-gas-section-description-6": "Desde que la red introdujo la quema de comisiones en agosto de 2021, se han quemado millones de ETH. Puede explorar las cifras más recientes usando paneles de red y exploradores creados por la comunidad de Ethereum.",
+ "page-what-is-ethereum-network-gas-section-description-7": "Entonces, ¿cuánto cuesta una transacción?",
+ "page-what-is-ethereum-network-gas-section-description-8": "Bueno, las comisiones varían según lo que haga. Simplemente enviar ETH puede costar menos de un dólar. Intercambiar tokens en un exchange descentralizado (DEX) puede costar algunos dólares o más, especialmente si la red está ocupada. Cuanto más compleja es la transacción, más gas cuesta.",
+ "page-what-is-ethereum-network-gas-section-description-9": "Las comisiones de gas son una de las partes más visibles al usar Ethereum, especialmente para los usuarios nuevos, pero todo contribuye a que la red sea más confiable y segura.",
+ "page-what-is-ethereum-network-gas-section-description-10": "Obtenga más información sobre las comisiones de la red de Ethereum",
+ "page-what-is-ethereum-network-staking-section-description-1": "La red de Ethereum se protege con un sistema llamado staking. Así es como Ethereum verifica transacciones, añade nuevos bloques y mantiene la red segura frente a ataques.",
+ "page-what-is-ethereum-network-staking-section-description-2": "Cuando Ethereum comenzó, usaba un mecanismo de consenso (una forma de acordar quién posee qué) llamado proof-of-work. Es el mismo mecanismo que usa hoy en día Bitcoin.",
+ "page-what-is-ethereum-network-staking-section-description-3": "En septiembre de 2022, Ethereum migró a un mecanismo de consenso proof-of-stake, más seguro y eficiente energéticamente.",
+ "page-what-is-ethereum-network-staking-section-description-4": "Entonces, ¿cómo funciona?",
+ "page-what-is-ethereum-network-staking-section-description-5": "En términos simples, las personas bloquean algo de ETH (ponen su ETH en juego), como un depósito, para ayudar a proteger la red. A estas personas se les llama validadores. Cuando participa haciendo staking con ETH, su validador puede ser elegido para verificar y añadir nuevas transacciones. Si lo hace de forma honesta, gana recompensas. Si intenta hacer trampa, pierde parte de su depósito.",
+ "page-what-is-ethereum-network-staking-section-description-6": "El staking es la forma en que Ethereum se compromete con la calidad de su servicio. Todo ese dinero en juego tiene el mejor interés en que Ethereum siga siendo seguro —¿apostaría en su contra?",
+ "page-what-is-ethereum-network-staking-section-description-7": "Solo dos años después de implementar proof-of-stake, Ethereum atrajo a más de un millón de validadores que hacen staking con millones de ETH para proteger Ethereum. Esto hace que atacar Ethereum sea extremadamente costoso y difícil. Esto es porque, para atacar la red, una entidad necesita al menos 1/3 de todo el ETH en staking para siquiera comenzar el ataque. Hoy en día, eso equivale a decenas de miles de millones de dólares, y aun así, lo más probable es que el ataque fracase porque más de 1/3 en desacuerdo con el resto de la red impediría la finalización, pero la cadena seguiría creciendo y la otra versión sería considerada la fuente de verdad. Más de 1/2 cambia qué versión se considera verdadera, y más de 2/3 permitiría finalizar algo con lo que el resto no está de acuerdo.",
+ "page-what-is-ethereum-network-staking-section-description-8": "Esto es lo que da a Ethereum su “seguridad económica”. No solo se trata de tener la tecnología adecuada. Se trata de hacer que los ataques sean demasiado costosos incluso para intentarlos.",
+ "page-what-is-ethereum-network-staking-section-description-9": "Para ayudar a proteger la red de Ethereum, puede hacerlo de dos formas principales.",
+ "page-what-is-ethereum-network-staking-section-description-10": "La primera forma es operando un nodo. Los nodos almacenan toda la historia de la blockchain, incluyendo todas las transacciones y los datos de los smart contracts. Al sincronizarse con otros nodos, pueden acordar el estado de la red, asegurando que las transacciones sean legítimas y que los datos de los smart contracts estén disponibles.",
+ "page-what-is-ethereum-network-staking-section-description-11": "La segunda forma es haciendo staking con su ETH. La manera más sencilla es a través de un proveedor de staking como Lido o Rocketpool. Pero si tiene los conocimientos, puede probar a ejecutar el software de validador en casa.",
+ "page-what-is-ethereum-network-staking-section-description-12": "Obtenga más información sobre el staking y cómo participar",
+ "page-what-is-ethereum-network-staking-section-description-13": "Descubra cómo operar un nodo",
+ "page-what-is-ethereum-network-layer-2s-section-description-1": "A medida que Ethereum gana popularidad, la red se vuelve más concurrida. Cuando la demanda es alta, las comisiones de gas suben y las transacciones tardan más. Para solucionarlo, los desarrolladores han creado una serie de redes complementarias llamadas capas 2.",
+ "page-what-is-ethereum-network-layer-2s-section-description-2": "Las capas 2, también conocidas como L2, son otras redes que funcionan sobre Ethereum. Procesan transacciones por separado y luego envían un resumen para almacenarse en Ethereum.",
+ "page-what-is-ethereum-network-layer-2s-section-description-3": "Puede pensar en ellas como carriles exprés en una autopista. En lugar de que cada transacción pase por Ethereum Mainnet, muchas utilizan estos caminos más rápidos y económicos.",
+ "page-what-is-ethereum-network-layer-2s-section-description-4": "Algunas de las L2 más populares son Base, Arbitrum, Optimism, zkSync y Starknet. Cada una funciona de forma ligeramente diferente, pero la idea es la misma: escalar Ethereum sin comprometer la seguridad.",
+ "page-what-is-ethereum-network-layer-2s-section-description-5": "Una simple transferencia de ETH en Optimism o zkSync puede costar solo $0.04, comparado con $0.3-$1 en Ethereum Mainnet. Otras transacciones como el intercambio de tokens pueden costar tan solo $0.20. Para los usuarios, esto significa transacciones más rápidas a una fracción del precio.",
+ "page-what-is-ethereum-network-layer-2s-section-description-6": "Como resultado, las L2 están creciendo rápidamente. Juntas, reúnen miles de millones de dólares en activos digitales.",
+ "page-what-is-ethereum-network-layer-2s-section-description-7": "Dado que las L2 se benefician de la seguridad de Ethereum, las empresas que buscan crear pagos y aplicaciones globales han comenzado a construir sobre Ethereum.",
+ "page-what-is-ethereum-network-layer-2s-section-description-8": "Por ejemplo, Robinhood recientemente lanzó su propia L2 para explorar liquidaciones más rápidas para acciones. PayPal trasladó su stablecoin PYUSD a la L2 de Ethereum Arbitrum. Shopify ahora permite a los comerciantes aceptar la stablecoin USDC en Base.",
+ "page-what-is-ethereum-network-layer-2s-section-description-9": "Para los usuarios, mover activos entre Ethereum y las L2 es sencillo. Puede usar puentes, creados por las L2 como Superbridge de Optimism o Portal de ZKsync para mover ETH y otros activos. Incluso puede usar herramientas de terceros como Hop y Across que han sido desarrolladas por equipos independientes.",
+ "page-what-is-ethereum-network-layer-2s-section-description-10": "Obtenga más información sobre las redes de capa 2 de Ethereum",
+ "page-what-is-ethereum-network-live-network-data-section-description-1": "Ethereum es transparente por diseño. Cada acción en la red, desde enviar ETH hasta ejecutar un validador, se registra en un libro mayor abierto y público al que cualquiera puede acceder.",
+ "page-what-is-ethereum-network-live-network-data-section-description-2": "Esto contrasta radicalmente con el funcionamiento de la mayoría de los sistemas actuales:",
+ "page-what-is-ethereum-network-live-network-data-section-description-3": "los bancos e instituciones publican sus cifras internas",
+ "page-what-is-ethereum-network-live-network-data-section-description-4": "las cifras de uso de aplicaciones son guardadas celosamente por las empresas tecnológicas",
+ "page-what-is-ethereum-network-live-network-data-section-description-5": "los datos económicos suelen llegar tarde y se revisan después",
+ "page-what-is-ethereum-network-live-network-data-section-description-6": "Con Ethereum, no tiene que confiar. Puede verificar.",
+ "page-what-is-ethereum-network-live-network-data-section-description-7": "No necesita entender nada de esto para usar Ethereum. Pero si le da curiosidad saber cuántas transacciones se liquidaron en 2024, o cuántas nuevas direcciones de Ethereum se crearon en los últimos seis meses, existen herramientas que le permiten explorar la red en tiempo real.",
+ "page-what-is-ethereum-network-live-network-data-section-description-8": "Aquí tiene algunas de las fuentes de datos más útiles y para qué podría usarlas:",
+ "page-what-is-ethereum-network-live-network-data-section-description-9": "Etherscan: Consulte transacciones, actividad de billeteras y smart contracts",
+ "page-what-is-ethereum-network-live-network-data-section-description-10": "beaconcha.in: Vea estadísticas de validadores, niveles de staking y salud de la red",
+ "page-what-is-ethereum-network-live-network-data-section-description-11": "ultrasound.money: Consulte suministro, emisión y quema de ETH en tiempo real",
+ "page-what-is-ethereum-network-live-network-data-section-description-12": "l2fees.info: Compare los costos actuales de transacción en Ethereum y las L2",
+ "page-what-is-ethereum-network-live-network-data-section-description-13": "L2Beat: Consulte el valor asegurado y los modelos de seguridad en todas las principales L2",
+ "page-what-is-ethereum-network-live-network-data-section-description-14": "growthepie: Vea toda la actividad on-chain y el crecimiento a través de Ethereum",
+ "page-what-is-ethereum-network-live-network-data-section-description-15": "Dune: Explore paneles personalizados sobre todos los activos digitales en Ethereum",
+ "page-what-is-ethereum-network-live-network-data-section-description-16": "Token Terminal: Compare ingresos de dapps, uso y rendimiento de protocolos",
+ "page-what-is-ethereum-network-live-network-data-section-description-17": "Nansen: Siga los flujos de billeteras, movimientos de stablecoins y tendencias de \"smart money\".",
+ "page-what-is-ethereum-network-live-network-data-section-description-18": "Todas estas herramientas están disponibles si las necesita.",
+ "page-what-is-ethereum-network-live-network-data-section-description-19": "Ya sea que sea desarrollador, investigador, inversionista o simplemente alguien que desea verificar una transacción, la red abierta de Ethereum le da acceso a los datos —en vivo, sin permisos y verificables.",
+ "page-what-is-ethereum-network-live-network-data-section-description-20": "Consulte paneles de red y exploradores de bloques de Ethereum"
+}
\ No newline at end of file
From 5ea5d780c24342e7c37d641cbc6354cde4b2c747 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:15 -0300
Subject: [PATCH 024/589] update(i18n): src/intl/es/page-layer-2-learn.json
---
src/intl/es/page-layer-2-learn.json | 55 +++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
create mode 100644 src/intl/es/page-layer-2-learn.json
diff --git a/src/intl/es/page-layer-2-learn.json b/src/intl/es/page-layer-2-learn.json
new file mode 100644
index 00000000000..64ed19301f1
--- /dev/null
+++ b/src/intl/es/page-layer-2-learn.json
@@ -0,0 +1,55 @@
+{
+ "page-layer-2-learn-meta-title": "¿Qué es la capa 2? | ethereum.org",
+ "page-layer-2-learn-title": "¿Qué es la capa 2?",
+ "page-layer-2-learn-description": "Escalar Ethereum en pos de una adopción masiva",
+ "page-layer-2-learn-button-1-label": "¿Qué es la capa 2?",
+ "page-layer-2-learn-button-2-label": "Utilizar la capa 2",
+ "page-layer-2-learn-what-is-layer-2-title": "¿Qué es la capa 2?",
+ "page-layer-2-learn-what-is-layer-2-1": "La capa 2 (L2) es un término colectivo para describir un conjunto específico de soluciones de escalabilidad de Ethereum. Una capa 2 es una cadena de bloques independiente que extiende Ethereum y hereda las garantías de seguridad de Ethereum.",
+ "page-layer-2-learn-what-is-layer-2-2": "Ahondemos un poco más en el tema. Para ello, tenemos primero que explicar qué es la capa 1 (L1).",
+ "page-layer-2-learn-what-is-layer-1-title": "¿Qué es la capa 1?",
+ "page-layer-2-learn-what-is-layer-1-1": "Las cadenas de bloque de capa 1, como Ethereum y Bitcoin, son la base subyacente sobre la que se construyen proyectos de capa 2. Los ejemplos de proyectos de capa 2 incluyen rollups de conocimiento cero y optimistic rollups en Ethereum, así como la Lighting Network en Bitcoin.",
+ "page-layer-2-learn-what-is-layer-1-2": "Ethereum también funciona como una capa de disponibilidad de datos para las soluciones de capa 2 y, en caso de disputas sobre transacciones previas, proporciona los datos necesarios para resolverlas.",
+ "page-layer-2-learn-layer-1-list-title": "Ethereum como capa 1 incluye:",
+ "page-layer-2-learn-layer-1-list-1": "una red de operadores de nodo para asegurar y validar la red",
+ "page-layer-2-learn-layer-1-list-2": "una red de productores de bloques",
+ "page-layer-2-learn-layer-1-list-3": "la cadena de bloques y el historial de transacciones de datos",
+ "page-layer-2-learn-layer-1-list-4": "el mecanismo de consenso para la red",
+ "page-layer-2-learn-why-do-we-need-layer-2-title": "¿Por qué necesitamos la capa 2?",
+ "page-layer-2-learn-why-do-we-need-layer-2-1": "Las tres propiedades deseables en una cadena de bloques son que sea descentralizada, segura y escalable. El «trilema» de la cadena de bloques afirma que una arquitectura de cadena de bloques sencilla solo puede lograr dos de tres. ¿Quiere un cadena de bloques segura y descentralizada? Entonces, tendrá que sacrificar la escalabilidad. Ahí es donde entran las redes de capa 2.",
+ "page-layer-2-learn-why-do-we-need-layer-2-2": "Ethereum actualmente es capaz de procesar más de 1 millón de transacciones al día, con una gran demanda para cada una de las mismas. El éxito de Ethereum y la demanda por utilizarla han provocado un aumento considerable en los precios de gas. Por lo tanto, la necesidad de soluciones de escalabilidad también ha alcanzado su punto máximo.",
+ "page-layer-2-learn-why-do-we-need-layer-2-scalability": "Escalabilidad",
+ "page-layer-2-learn-why-do-we-need-layer-2-scalability-1": "El objetivo principal de la escalabilidad es aumentar la velocidad de las transacciones (finalidad más rápida) y el rendimiento de las transacciones (alto número de transacciones por segundo), sin sacrificar la descentralización ni la seguridad.",
+ "page-layer-2-learn-why-do-we-need-layer-2-scalability-2": "La comunidad de Ethereum ha adoptado una postura firme de no sacrificar la descentralización ni la seguridad para lograr la escalabilidad. Hasta la implementación de la fragmentación (sharding), la red principal de Ethereum (capa 1) solo podrá procesar alrededor de 15 transacciones por segundo. La alta demanda de uso de Ethereum congestiona la red, aumentando las comisiones de transacción y dificultando que los usuarios puedan pagarlas hasta que estas disminuyan. Ahí es donde las soluciones de capa 2 ya facilitan la escalabilidad de Ethereum.",
+ "page-layer-2-learn-layer2Cards-1-title": "Comisiones más bajas",
+ "page-layer-2-learn-layer2Cards-1-description": "Al combinar múltiples transacciones en una sola transacción en la capa 1, las comisiones se reducen drásticamente, haciendo que Ethereum sea más accesible para todos.",
+ "page-layer-2-learn-layer2Cards-2-title": "Mantener la seguridad",
+ "page-layer-2-learn-layer2Cards-2-description": "Las cadenas de bloque de la capa 2 liquidan sus transacciones en la red principal de Ethereum, permitiendo que los usuarios se beneficien de la seguridad de la red Ethereum.",
+ "page-layer-2-learn-layer2Cards-3-title": "Ampliar los casos de uso",
+ "page-layer-2-learn-layer2Cards-3-description": "Con más transacciones por segundo, comisiones más bajas y nuevas tecnologías, apareceran nuevas aplicaciones en los proyectos con una mejor experiencia de usuario.",
+ "page-layer-2-learn-how-does-layer-2-work-title": "¿Cómo funciona la capa 2?",
+ "page-layer-2-learn-how-does-layer-2-work-1": "Como mencionamos antes, capa 2 es un término colectivo para las soluciones de escalabilidad de Ethereum que manejan transacciones fuera de la capa 1 de Ethereum, mientras que aprovechan la robusta seguridad descentralizada de la capa 1 de Ethereum. Una capa 2 es una cadena de bloques separada que extiende el rendimiento de Ethereum. Entonces, ¿cómo funciona?",
+ "page-layer-2-learn-how-does-layer-2-work-2": "Hay muchos tipos diferentes de capa 2, cada uno tiene sus propias ventajas y desventajas, así como sus propios modelos de seguridad. Los proyectos de capa 2 liberan de carga transaccional a la capa 1, reduciendo su congestión y haciéndola más escalable.",
+ "page-layer-2-learn-how-does-layer-2-work-rollups-title": "Agrupaciones",
+ "page-layer-2-learn-how-does-layer-2-work-rollups-1": "Los «rollups» agrupan (o acumulan) cientos de transacciones en una sola transacción en la capa 1. Esto distribuye las comisiones de transacción en la red principal (L1) entre todos los participantes en el «rollup» y, por ende, reduce el coste de la transacción para cada usuario.",
+ "page-layer-2-learn-how-does-layer-2-work-rollups-2": "Los datos de la transacción en el rollup se envían a la capa 1, pero su ejecución se realiza por separado. Al enviar los datos de la transacción a la capa 1, los rollups heredan la seguridad de Ethereum. Esto se debe a que una vez que los datos se cargan en la capa 1, revertir una transacción de rollup requiere revertir Ethereum. Hay dos enfoques diferentes para los rollups: optimista y de conocimiento cero. Difieren principalmente en la forma en que se envían estos datos de transacción a la L1.",
+ "page-layer-2-learn-rollupCards-optimistic-title": "Acumulaciones optimistas (Optimistic rollups)",
+ "page-layer-2-learn-rollupCards-optimistic-description": "Las rollups optimistas usan pruebas de fallo en las que se validan transacciones, pero estas pueden ser impugnadas si se sospecha que son inválidas. En ese caso, se ejecuta una prueba de fallo para verificar si efectivamente se produjo una transacción inválida.",
+ "page-layer-2-learn-rollupCards-optimistic-childSentence": "Más información acerca de los optimistic rollups",
+ "page-layer-2-learn-rollupCards-zk-title": "Rollups de conocimiento cero",
+ "page-layer-2-learn-rollupCards-zk-description": "Los rollups de conocimiento cero utilizan pruebas de validez en las que se calculan transacciones fuera de la cadena, y luego estos datos se suministran a la red principal de Ethereum como prueba de su validez.",
+ "page-layer-2-learn-rollupCards-zk-childSentence": "Más información sobre los zk-rollups (o rollups de conocimiento cero)",
+ "page-layer-2-learn-dyor-title": "Investigue por su cuenta: riesgos de la capa 2",
+ "page-layer-2-learn-dyor-1": "Dado que las cadenas de capa 2 heredan la seguridad de Ethereum, en un mundo ideal son tan seguras como la L1 de Ethereum. Sin embargo, muchos de los proyectos todavía están en fases iniciales y son algo experimentales. Después de años de investigación y desarrollo, muchas de las tecnologías L2 para escalar Ethereum se lanzaron en 2021. Esto no implica que estas soluciones de capa 2 no sean seguras, sino que aún no han sido probadas en el terreno como red principal de Ethereum. Estudie e investigue por si cuenta y decida si se siente cómodo/a con los riesgos implicados.",
+ "page-layer-2-learn-dyor-2": "Para más información sobre la tecnología, los riesgos y los supuestos de confianza de la capa 2, le recomendamos revisar L2BEAT, que proporciona un marco integral de evaluación de riesgos de cada proyecto.",
+ "page-layer-2-learn-dyor-link": "Ir a L2BEAT",
+ "page-layer-2-learn-note-on-alt-l1-title": "Una observación sobre capas 1 alternativas, cadenas paralelas y validiums",
+ "page-layer-2-learn-note-on-alt-l1-1": "Las cadenas alternativas de capa 1 (alt L1s) tienen una mayor capacidad de procesamiento y menores comisiones por transacción que Ethereum. Sin embargo, las alt L1s han tenido que sacrificar la seguridad o la descentralización para lograr un mayor número de transacciones por segundo y reducir costes. El ecosistema de Ethereum está firmemente convencido de que escalar mediante soluciones de capa 2 es la única forma de resolver el trilema de escalabilidad manteniendo la descentralización y la seguridad.",
+ "page-layer-2-learn-note-on-alt-l1-2": "Las cadenas laterales y los validiums permiten transferir activos entre cadenas de bloques y usarlos en distintas redes. Estas cadenas de bloques funcionan en paralelo a la cadena principal e interactúan con ella a través de puentes, pero no heredan su seguridad ni su disponibilidad de datos. Escalan de forma similar a las soluciones de capa 2, aunque con distintos supuestos de confianza. Ofrecen comisiones de transacción más bajas y una mayor capacidad de procesamiento. Puede ver más información en cadenas paralelas y validiums.",
+ "page-layer-2-learn-callout-1-title": "¿Cuáles son los beneficios?",
+ "page-layer-2-learn-callout-1-description": "Explore el impacto práctico de las soluciones capa 2 en la experiencia del usuario.",
+ "page-layer-2-learn-learn-more": "Más información",
+ "page-layer-2-learn-callout-2-title": "Explora diferentes redes",
+ "page-layer-2-learn-callout-2-description": "Conozca las diferencias entre cada red y los avances logrados en su desarrollo.",
+ "page-layer-2-learn-explore-networks": "Explorar redes"
+}
From 725c63341408e15c080c2a7fc7f043eaec91af33 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:16 -0300
Subject: [PATCH 025/589] update(i18n): src/intl/es/page-developers-index.json
---
src/intl/es/page-developers-index.json | 97 +++++++++++++++++---------
1 file changed, 65 insertions(+), 32 deletions(-)
diff --git a/src/intl/es/page-developers-index.json b/src/intl/es/page-developers-index.json
index c89347f23db..b4066e8e748 100644
--- a/src/intl/es/page-developers-index.json
+++ b/src/intl/es/page-developers-index.json
@@ -1,36 +1,25 @@
{
"page-developer-meta-title": "Recursos para desarrolladores de Ethereum",
- "page-developers-about": "Sobre estos recursos del desarrollador",
- "page-developers-about-desc": "ethereum.org está aquí para ayudarle a desarrollar con Ethereum gracias a documentación sobre conceptos fundamentales, así como sobre la pila de desarrollo. Además, dispone de tutoriales para ayudarle a ponerse en marcha.",
- "page-developers-about-desc-2": "Con la inspiración de Mozilla Developer Network, pensamos que Ethereum necesitaba un lugar donde albergar el mejor contenido y los más destacados recursos para desarrolladores. Al igual que en el caso de nuestros amigos de Mozilla, todo aquí es de código abierto y disponible para que lo pueda ampliar y mejorar.",
"page-developers-account-desc": "Contratos o personas en la red",
"page-developers-accounts-link": "Cuentas",
- "page-developers-advanced": "Recursos avanzados",
"page-developers-api-desc": "Uso de bibliotecas para interactuar con contratos inteligentes",
"page-developers-api-link": "API de back-end",
"page-developers-block-desc": "Lotes de transacciones añadidas a la cadena de bloques",
"page-developers-block-explorers-desc": "Su portal para acceder a los datos de Ethereum",
"page-developers-block-explorers-link": "Exploradores de bloques",
"page-developers-blocks-link": "Bloques",
- "page-developers-browse-tutorials": "Ver tutoriales",
- "page-developers-choose-stack": "Elija su pila",
- "page-developers-contribute": "Contribuir",
"page-developers-dev-env-desc": "IDE apropiados para el desarrollo de DApp",
"page-developers-dev-env-link": "Entornos de desarrollo",
- "page-developers-discord": "Unirse a Discord",
"page-developers-docs-introductions": "Introducciones",
"page-developers-evm-desc": "El ordenador que procesa transacciones",
"page-developers-evm-link": "La máquina virtual de Ethereum (EVM)",
"page-developers-explore-documentation": "Explorar la documentación",
- "page-developers-feedback": "Si tiene algún comentario, póngase en contacto con nosotros creando una incidencia de GitHub o accediendo a nuestro servidor de Discord.",
"page-developers-frameworks-desc": "Herramientas para ayudar a acelerar el desarrollo",
"page-developers-frameworks-link": "Entornos de desarrollo",
"page-developers-fundamentals": "Aspectos esenciales",
"page-developers-gas-desc": "Ether necesario para alimentar las transacciones",
"page-developers-gas-link": "Gas",
- "page-developers-get-started": "¿Cómo le gustaría empezar?",
- "page-developers-improve-ethereum": "Ayúdenos a mejorar ethereum.org",
- "page-developers-improve-ethereum-desc": "Al igual que ethereum.org, estos documentos representan un esfuerzo comunitario. Cree una solicitud de extracción si ve errores, espacio para la mejora o nuevas oportunidades para ayudar a los desarrolladores de Ethereum.",
+ "page-developers-get-started": " ¿Qué quiere construir hoy?\n",
"page-developers-into-eth-desc": "Una introducción a cadena de bloques y Ethereum",
"page-developers-intro-ether-desc": "Una introducción a la criptomoneda y al ether",
"page-developers-intro-dapps-desc": "Una introducción a las Aplicaciones Descentralizadas",
@@ -41,6 +30,7 @@
"page-developers-intro-stack-desc": "Una introducción a la pila de Ethereum",
"page-developers-js-libraries-desc": "Usar JavaScript para interactuar con contratos inteligentes",
"page-developers-js-libraries-link": "Librerías de JavaScript",
+ "page-developers-jump-right-in-title": "Propulse su idea",
"page-developers-language-desc": "Uso de Ethereum con lenguajes conocidos",
"page-developers-languages": "Lenguajes de programación",
"page-developers-learn": "Aprenda a desarrollar en Ethereum",
@@ -49,41 +39,32 @@
"page-developers-learn-tutorials-cta": "Ver tutoriales",
"page-developers-learn-tutorials-desc": "Aprenda a desarrollar en Ethereum paso a paso de la mano de creadores que lo han hecho antes.",
"page-developers-meta-desc": "Documentación, tutoriales y herramientas para desarrolladores que crean con Ethereum.",
- "page-developers-mev-desc": "Introducción al valor máximo extraíble (MEV)",
- "page-developers-mev-link": "Valor máximo extraíble (MEV)",
- "page-developers-mining-desc": "Creación de nuevos bloques y obtención del consenso a través de la prueba de trabajo",
- "page-developers-mining-link": "Minería",
- "page-developers-mining-algorithms-desc": "Información sobre algoritmos de minería de Ethereum",
- "page-developers-mining-algorithms-link": "Algoritmos de minería",
- "page-developers-networks-desc": "Una visión general de la red principal y de las redes de prueba",
+ "page-developers-networks-desc": "Una visión general de Mainnet y las redes de prueba.",
"page-developers-networks-link": "Redes",
"page-developers-node-clients-desc": "Cómo se verifican los bloques y las transacciones en la red",
- "page-developers-node-clients-link": " Nodos y clientes",
- "page-developers-oracle-desc": "Pasar los datos fuera de cadena a sus contratos inteligentes",
- "page-developers-oracles-link": "Oráculos",
+ "page-developers-node-clients-link": "Nodos y clientes",
"page-developers-play-code": "Jugar con código",
+ "page-developers-quickstart-scaffold-subtext": "Compile su pila de aplicaciones de Ethereum en segundos.",
+ "page-developers-quickstart-scaffold-docs": "Lea Scaffold-ETH 2",
"page-developers-read-docs": "Leer la documentación",
- "page-developers-scaling-desc": "Soluciones para transacciones más rápidas",
- "page-developers-scaling-link": "Escalabilidad",
+ "page-developers-start-quest": "Iniciar la búsqueda",
+ "page-developers-resources": "Recursos",
"page-developers-smart-contract-security-desc": "Medidas de seguridad a considerar en el desarrollo de contratos inteligentes",
"page-developers-smart-contract-security-link": "Seguridad en contratos inteligentes",
- "page-developers-set-up": "Crear un entorno local",
- "page-developers-setup-desc": "Prepare su pila para el desarrollo configurando un entorno de desarrollo.",
"page-developers-smart-contracts-desc": "La lógica detrás de las DApps: acuerdos de autoejecución",
"page-developers-smart-contracts-link": "Contratos inteligentes",
+ "page-developers-solidity-docs": "Lea la documentación de Solidity",
"page-developers-speedrunethereum-title": "Aprenda todos los conceptos más importantes al construir en Ethereum",
+ "page-developers-speedrunethereum-description": "Reciba tutoría de otros y aprenda a colaborar con otros desarrolladores.",
"page-developers-speedrunethereum-link": "SpeedRun Ethereum",
"page-developers-stack": "La pila",
- "page-developers-start": "Empiece a experimentar",
- "page-developers-start-desc": "¿Quiere experimentar primero y hacer preguntas más tarde?",
+ "page-developers-start": "Retos y tutorías",
"page-developers-storage-desc": "Cómo gestionar el almacenamiento de DApp",
"page-developers-storage-link": "Almacenamiento",
- "page-developers-subtitle": "Un manual de creadores para Ethereum. De creadores para creadores.",
+ "page-developers-subtitle": "Un manual de constructores para Ethereum. Todo lo que necesita para construir y escalar su aplicación en cadena.",
"page-developers-title-1": "Ethereum",
"page-developers-title-2": "desarrollador",
"page-developers-title-3": "recursos",
- "page-developers-token-standards-desc": "Una visión general de los estándares aceptados de token",
- "page-developers-token-standards-link": "Estándares de tókenes",
"page-developers-transactions-desc": "Cómo cambia el estado de Ethereum",
"page-developers-transactions-link": "Transacciones",
"page-developers-web3-desc": "Cuáles son las diferencias del mundo de desarrollo web3",
@@ -95,5 +76,57 @@
"page-developers-data-structures-and-encoding-link": "Estructuras de datos y codificación",
"page-developers-data-structures-and-encoding-desc": "Introducción a las estructuras de datos y proyecto de codificación usado en la pila de Ethereum",
"alt-eth-blocks": "Ilustración de bloques organizados como un símbolo ETH",
- "page-assets-doge": "Doge usando dapps"
+ "page-assets-doge": "Doge usando dapps",
+ "page-developers-build-section-desc": "Todo lo que necesita para aprender y construir sus primeras aplicaciones en Ethereum",
+ "page-developers-resources-section-title": "Recursos útiles para desarrolladores",
+ "page-developers-get-help-title": "Obtener ayuda",
+ "page-developers-get-help-desc": "Si no puede avanzar o necesita ayuda para resolver problemas, no dude de pedir un poco de orientación.",
+ "page-developers-stack-exchange": "Intercambio de Estante",
+ "page-developers-ask-ai": "Preguntar a la IA",
+ "page-developers-resources-title": "Recursos",
+ "page-developers-resources-desc": "¿Quiere experimentar primero y hacer preguntas después? Compruebe las cajas de prueba, los cursos intensivos en línea, etc.",
+ "page-developers-tutorials-title": "Tutoriales",
+ "page-developers-tutorials-desc": "Aprenda a desarrollar en Ethereum paso a paso de la mano de creadores que lo han hecho antes.",
+ "page-developers-video-courses-title": "Cursos en vídeo",
+ "page-developers-video-courses-desc": "¿Quiere lanzar su carrera profesional en la cadena de bloque? Estos cursos le prepararán para que le contraten como desarrollador de la cadena de bloques.",
+ "page-developers-docs-section-desc": "Entienda los conceptos básicos de Ethereum y de las cadenas de bloque",
+ "page-developers-hackathons-title": "Participe en los hackatones",
+ "page-developers-hackathons-desc": "Los hackatones le brindan una excelente oportunidad de establecer contactos y aprender de los demás, así como de iniciar proyectos y ganar premios",
+ "page-developers-visit-ethglobal": "Visite EthGlobal",
+ "page-developers-founders-title": "¿Es usted emprendedor/a?",
+ "page-developers-founders-desc": "¿Ya tiene una idea de proyecto o está trabajando en un prototipo? Descubra cómo hacer que su proyecto avance. Podemos ponerle en contacto con organizaciones y expertos relevantes en el campo.",
+ "page-developers-get-in-touch": "Contáctenos",
+ "page-developers-see-grant-options": "Vea opciones de subvenciones",
+ "page-developers-speedrun-nft-alt": "Banner de tokenización Speedrun Ethereum",
+ "page-developers-speedrun-nft-title": "Tokenización",
+ "page-developers-speedrun-nft-desc": "Cree un token único para aprender los conceptos básicos de scaffold-eth.",
+ "page-developers-skill-beginner": "Principiante",
+ "page-developers-skill-intermediate": "Intermedio",
+ "page-developers-skill-advanced": "Avanzado",
+ "page-developers-speedrun-dex-alt": "Banner de DEX Speedrun Ethereum",
+ "page-developers-speedrun-dex-title": "DEX",
+ "page-developers-speedrun-dex-desc": "Cree un creador de mercado automatizado sencillo, proporcione liquidez e implemente intercambios de tokens.",
+ "page-developers-speedrun-stablecoins-alt": "Banner de stablecoins Speedrun Ethereum",
+ "page-developers-speedrun-stablecoins-title": "Monedas estables",
+ "page-developers-speedrun-stablecoins-desc": "Cree una stablecoin y aprenda sobre mecanismos de estabilidad y oráculos de precios.",
+ "page-developers-course-duration": "-curso de una hora",
+ "page-developers-course-blockchain-basics-title": "Conceptos básicos de las cadenas de bloque",
+ "page-developers-course-blockchain-basics-desc": "Aprenda cómo funcionan las cadenas de bloques y los contratos inteligentes, cree una cartera y firme su primera transacción.",
+ "page-developers-course-blockchain-basics-alt": "Banner del curso de conceptos básicos de cadena de bloque Cyfrin Updraft",
+ "page-developers-course-solidity-title": "Desarrollo de contratos inteligentes de Solidity",
+ "page-developers-course-solidity-desc": "Solidity Programming es su puerta de entrada al desarrollo Web3 en ecosistemas compatibles con Ethereum.",
+ "page-developers-course-solidity-alt": "Banner del curso de desarrollo de contratos inteligentes Cyfrin Updraft Solidity",
+ "page-developers-course-foundry-fundamentals-title": "Fundamentos de Foundry",
+ "page-developers-course-foundry-fundamentals-desc": "Mejore sus habilidades de desarrollo de Solidity con Foundry y conceptos y herramientas avanzadas de desarrollo en Web3.",
+ "page-developers-course-foundry-fundamentals-alt": "Banner del curso de fundamentos de Cyfrin Updraft Foundry",
+ "page-developers-course-advanced-foundry-title": "Foundry avanzado",
+ "page-developers-course-advanced-foundry-desc": "Domine las técnicas de desarrollo en Web3 con Foundry avanzado para el desarrollo de contratos inteligentes de Solidity.",
+ "page-developers-course-advanced-foundry-alt": "Banner del curso de Foundry Cyfrin Updraft avanzado",
+ "page-developers-course-security-title": "Seguridad de los contratos inteligentes",
+ "page-developers-course-security-desc": "¡Comience su carrera como investigador de seguridad de contratos inteligentes! Domine la auditoría de contratos inteligentes y las mejores prácticas.",
+ "page-developers-course-security-alt": "Banner del curso de conceptos básicos de cadena de bloque Cyfrin Updraft",
+ "page-developers-why-title": "Reciba un buen salario. Trabaje en remoto. Construya el futuro.",
+ "page-developers-why-subtitle": "Más de la mitad de las carreras en blockchain son presencial-primero, y algunas estimaciones sitúan este número en hasta el 70%.",
+ "page-developers-why-avg-salary-dev": "Salario promedio de desarrollador",
+ "page-developers-why-avg-salary-blockchain": "Salario promedio en la industria blockchain"
}
From 3b7c7eadd60bf85c60c5dd428c1d9966bae6520d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:17 -0300
Subject: [PATCH 026/589] update(i18n): src/intl/es/glossary-tooltip.json
---
src/intl/es/glossary-tooltip.json | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/intl/es/glossary-tooltip.json b/src/intl/es/glossary-tooltip.json
index d8960e9274c..b83b50e8155 100644
--- a/src/intl/es/glossary-tooltip.json
+++ b/src/intl/es/glossary-tooltip.json
@@ -32,7 +32,7 @@
"dao-term": "Organización autónoma descentralizada (o DAO)",
"dao-definition": "Una DAO es una organización digital dirigida por reglas codificadas en una cadena de bloques, donde las decisiones se toman a partir de los votos de los miembros, no con una autoridad central. Más información sobre las organizaciones autónomas descentralizadas (DAO).",
"dapp-term": "DApp",
- "dapp-definition": "Una dApp es una aplicación descentralizada que se ejecuta en una red de cadena de bloques, ofreciendo servicios sin una autoridad de control central. Más sobre aplicaciones descentralizadas.",
+ "dapp-definition": "Una DApp es una aplicación descentralizada que se ejecuta en una red de cadena de bloques y que ofrece servicios sin una autoridad de control central. Más información sobre las aplicaciones descentralizadas.",
"data-availability-term": "Disponibilidad de datos",
"data-availability-definition": "Cualquier nodo puede verificar de forma independiente las transacciones en una cadena de bloques para mantener la transparencia y la confianza en el sistema.",
"defi-term": "DeFi",
@@ -125,7 +125,7 @@
"quadratic-voting-definition": "Es un método de votación en el que los votantes expresan qué intensidad sienten respecto a determinados temas. Permite a los votantes mostrar no solo sus preferencias, sino también la intensidad de las mismas.",
"recovery-phrase-term": "Frase semilla/frase de recuperación",
"recovery-phrase-definition": "Una lista de palabras que recibe cuando crea una billetera digital. Actúa como una contraseña que puede ayudarle a recuperar su billetera en caso de perder el acceso a ella, asegurándose de que no pierda su dinero digital o sus tokens.",
- "rollups-term": "Rollups",
+ "rollups-term": "Agrupaciones",
"rollups-definition": "Un tipo de solución de escalabilidad de capa 2 que agrupa múltiples transacciones y las envía a la cadena principal de Ethereum en una única transacción. Esto permite reducir los costos de gas y aumentar los rendimientos de transacción. Existen rollups Optimistas y de Zero-knowledge (Conocimiento cero), los cuales utilizan diferentes métodos de seguridad para ofrecer estas ganancias de escalabilidad. Más información sobre los rollups.",
"rpc-term": "Llamada de procedimiento remoto (RPC)",
"rpc-definition": "Las RPC permiten a una computadora solicitar datos o acciones a otra a través de una red, es como pedir información con un control remoto.",
@@ -135,7 +135,7 @@
"smart-contract-definition": "Un contrato inteligente es un programa que ejecuta automáticamente acuerdos en una cadena de bloques, como un contrato digital de autoaplicación. Introducción a los contratos inteligentes.",
"stablecoin-term": "Moneda estable",
"stablecoin-definition": "Una moneda estable, o stablecoin, es un tipo de criptomoneda diseñada para tener un valor estable, a menudo vinculado a una moneda o commodity (como el dólar estadounidense), para minimizar la volatilidad de los precios. Más sobre monedas estables.",
- "staking-term": "Participar (apostar)",
+ "staking-term": "Staking (apostar)",
"staking-definition": "Depositar una cantidad de ether (su participación) para convertirse en un validador y asegurar la red. Un validador comprueba transacciones y propone bloques bajo un modelo de consenso de prueba de participación. La participación, o staking, le da un incentivo económico para actuar en el mejor interés de la red. Obtendrá recompensas por llevar a cabo sus deberes de validador, pero perderá diferentes cantidades de ETH si no lo hace. Más sobre el staking en Ethereum.",
"staking-pool-term": "Reserva de participación",
"staking-pool-definition": "El ETH combinado de más de un participante de Ethereum, utilizado para alcanzar los 32 ETH necesarios para activar un conjunto de claves de validación. Un operador de nodo utiliza estas claves para participar en el consenso, y las recompensas de bloque se dividen entre los stakers contribuyentes. Los grupos de staking o la delegación de participación no son nativos del protocolo Ethereum, pero la comunidad ha creado muchas soluciones. Más sobre la participación agrupada.",
@@ -155,7 +155,7 @@
"wallet-definition": "Una billetera es una herramienta digital para almacenar, enviar y recibir moneda digital, como un monedero virtual para su dinero en línea. Más sobre las billeteras de Ethereum.",
"web2-term": "Web 2.0",
"web2-definition": "Es el Internet actual, centrado en el contenido generado por el usuario y las redes sociales que están controladas por pocas empresas. Web3 es una creencia cripto de que son los usuarios quienes deben controlar sus datos y transacciones.",
- "web3-term": "Web 3.0",
+ "web3-term": "Web3",
"web3-definition": "Web3 es la nueva Internet con cadena de bloques, donde los usuarios controlan sus datos y transacciones, no las empresas. No es necesario compartir ninguna información personal. Más sobre Web3.",
"wei-term": "Wei",
"wei-definition": "La denominación más pequeña de ether. 1018 wei = 1 ether.",
From a605c480788e9172119b0dfa7823c3db140f0905 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:19 -0300
Subject: [PATCH 027/589] update(i18n):
src/intl/es/page-wallets-find-wallet.json
---
src/intl/es/page-wallets-find-wallet.json | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/intl/es/page-wallets-find-wallet.json b/src/intl/es/page-wallets-find-wallet.json
index bfeab794c32..b87d803c043 100644
--- a/src/intl/es/page-wallets-find-wallet.json
+++ b/src/intl/es/page-wallets-find-wallet.json
@@ -36,7 +36,7 @@
"page-find-wallet-token-importing-desc": "Importar cualquier token de ERC para usar en la cartera",
"page-find-wallet-buy-crypto": "Comprar cripto",
"page-find-wallet-buy-crypto-desc": "Comprar criptomonedas con dinero fiduciario directamente en la cartera\n *Nota: comprar criptomonedas puede ser específico para cada región",
- "page-find-wallet-sell-for-fiat": "Vender por fiat",
+ "page-find-wallet-sell-for-fiat": "Vender por efectivo",
"page-find-wallet-sell-for-fiat-desc": "Vender criptomonedas con dinero fiduciario directamente en la cartera\n *Nota: comprar criptomonedas puede ser específico para cada región",
"page-find-wallet-multisig": "Multifirma",
"page-find-wallet-multisig-desc": "Carteras que requieren múltiples firmas para autorizar una transacción",
@@ -48,7 +48,7 @@
"page-find-wallet-features": "Funciones",
"page-find-wallet-security": "Seguridad",
"page-find-wallet-smart-contract": "Contrato inteligente",
- "page-find-wallet-advanced": "Recursos avanzados",
+ "page-find-wallet-advanced": "Avanzado",
"page-find-wallet-check-out": "Eche un vistazo",
"page-find-wallet-info-updated-on": "información actualizada sobre",
"page-find-wallet-showing-all-wallets": "Mostrar todas las carteras",
@@ -84,5 +84,8 @@
"page-find-wallet-social-links": "Enlaces",
"page-find-wallet-empty-results-title": "Sin resultados",
"page-find-wallet-empty-results-desc": "No hay carteras que coincidan con sus criterios, intente eliminar algunos filtros.",
- "page-find-wallet-see-wallets": "Ver carteras"
+ "page-find-wallet-privacy": "Privacidad",
+ "page-find-wallet-privacy-desc": "Carteras que admiten transacciones privadas integradas",
+ "page-find-wallet-see-wallets": "Ver carteras",
+ "page-find-wallet-search-languages": "Buscar idiomas..."
}
From 27a4c4ae9452270946d5a2d91016c533949dc95c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:20 -0300
Subject: [PATCH 028/589] update(i18n):
src/intl/es/page-10-year-anniversary.json
---
src/intl/es/page-10-year-anniversary.json | 131 ++++++++++++++++++++++
1 file changed, 131 insertions(+)
create mode 100644 src/intl/es/page-10-year-anniversary.json
diff --git a/src/intl/es/page-10-year-anniversary.json b/src/intl/es/page-10-year-anniversary.json
new file mode 100644
index 00000000000..78c39ad4ee9
--- /dev/null
+++ b/src/intl/es/page-10-year-anniversary.json
@@ -0,0 +1,131 @@
+{
+ "page-10-year-anniversary-meta-title": "El 10.º aniversario",
+ "page-10-year-anniversary-meta-description": "Celebramos los 10 años de resistencia a la censura, 100 % de disponibilidad, descentralización, construcción de comunidad, crecimiento de desarrolladores, colaboración global, valores cypherpunk, hackatones, resistencia a la censura, finanzas sin permisos, neutralidad creíble, el jardín infinito, diversidad de clientes y mucho más.",
+ "page-10-year-censorship-resistance": "resistencia a la censura",
+ "page-10-year-uptime": "100 % de disponibilidad",
+ "page-10-year-decentralization": "descentralización",
+ "page-10-year-community-building": "creación de comunidad",
+ "page-10-year-developer-growth": "crecimiento del número de desarrolladores",
+ "page-10-year-global-collaboration": "colaboración mundial",
+ "page-10-year-cypherpunk-values": "valores cypherpunk",
+ "page-10-year-hackathons": "hackatones",
+ "page-10-year-permissionless-finance": "finanzas sin pedir permiso",
+ "page-10-year-credible-neutrality": "neutralidad fidedigna",
+ "page-10-year-infinite-garden": "el jardín infinito",
+ "page-10-year-client-diversity": "diversidad de clientes",
+ "page-10-year-celebrating": "Celebramos los 10 años de",
+ "page-10-year-hero-title": "Una decada de transformar el mundo, ladrillo a ladrillo",
+ "page-10-year-hero-description": "El 30 de julio de 2015 nació la cadena de bloques de Ethereum. Ese momento en el que se minó el bloque inicial inauguró un mundo de posibilidades para intenet y aportó cambios transformativos a las finanzas, la propiedad y la programabilidad.",
+ "page-10-year-hero-tagline": "Diez años cumplidos y toda una eternidad por delante.",
+ "page-10-year-join-party-title": "Únase a la celebración",
+ "page-10-year-join-party-description": "Celebre el 10.º aniversario de Ethereum con la comunidad global. Busque un evento local o realice su propia celebración.",
+ "page-10-year-events-description-1": "Únase a personas de todo el mundo para participar en charlas, ampliar contactos y celebrar con Ethereum su décimo aniversario.",
+ "page-10-year-events-description-2": "¿No puede participar presencialmente? Vea nuestra retransmisión en directo y manténgase actualizado sobre los eventos en todo el mundo, así todos celebraremos este hito en comunidad.",
+ "page-10-year-host-event-title": "Comparta su evento",
+ "page-10-year-host-event-description": "¿ Está organizando un evento? Escriba a continuación los detalles del evento para que aparezca en el mapa.",
+ "page-10-year-host-event-cta": "Compartir evento",
+ "page-10-year-innovation-title": "10 años de",
+ "page-10-year-innovation-subtitle": "Innovación",
+ "page-10-year-innovation-description-1": "Enthereum transformó la cadena de bloques al introducir los contratos inteligentes",
+ "page-10-year-innovation-description-2": "Con Ethereum, las cadenas de bloques cambiaron de libro mayor digital a plataforma programable, donde el código se ejecuta automáticamente siempre que se cumplan las condiciones.",
+ "page-10-year-innovation-description-3": "La innovación de Ethereum permitió industrias completamente nuevas como DeFi, NFT y DAO. Expandió la cadena de bloques más allá de la moneda digital y la convirtió en una plataforma que reinventó cómo creamos e intercambiamos valor.",
+ "page-10-year-adoption-title": "10 años de",
+ "page-10-year-adoption-subtitle": "Adopción",
+ "page-10-year-adoption-description-1": "De un documento técnico a más de 24 millones de transacciones diarias en el ecosistema de Ethereum",
+ "page-10-year-adoption-description-2": "Ethereum se ha convertido en una plataforma de computación global que mantiene miles de aplicaciones utilizadas por millones diarios. Abarca industrias y fronteras mientras continúa expandiendo sus casos de uso.",
+ "page-10-year-stories-title": "10 años de",
+ "page-10-year-stories-subtitle": "Historias",
+ "page-10-year-stories-description-1": "Una visión general de cómo Ethereum se usa en el día a día",
+ "page-10-year-stories-description-2": "Desde millones de carteras a cualquier rincón del mundo, la gente usa Ethereum de formas inspiradoras. Estas historias reales muestran la creatividad, libertad y conexión que permite Ethereum.",
+ "page-10-year-stories-cta": "Comparta su historia",
+ "page-10-year-ideas-title": "¿Tiene una idea de cómo puede celebrarlo la comunidad?",
+ "page-10-year-ideas-description": "Artefactos en cadena, un juego mundial tipo Trivial sobre Ethereum, ¡el cielo es el límite! Cuéntenos su idea aquí abajo.",
+ "page-10-year-ideas-cta": "Envíe su idea",
+ "page-10-year-event-link": "Ir al evento",
+ "page-10-year-countdown-expired": "¡Ethereum cumple 10 años! 🚀",
+ "page-10-year-countdown-day": "día",
+ "page-10-year-countdown-days": "días",
+ "page-10-year-countdown-hour": "hora",
+ "page-10-year-countdown-hours": "horas",
+ "page-10-year-countdown-minute": "minuto",
+ "page-10-year-countdown-minutes": "minutos",
+ "page-10-year-countdown-second": "segundo",
+ "page-10-year-countdown-seconds": "segundos",
+ "page-10-year-banner-header": "10 años de Ethereum",
+ "page-10-year-banner-launch-text": "El 30 de julio de 2015 a las 3:44 p.m. UTC nació el primer bloque de la cadena de bloques de Ethereum.",
+ "page-10-year-banner-tagline": "¡Diez años han pasado desde entonces, y todo lo que nos queda por recorrer! 🚀",
+ "page-10-year-banner-cta": "Únase a la celebración",
+ "page-10-year-stories-read-more": "Más información",
+ "page-10-year-stories-show-original": "Mostrar original",
+ "page-10-year-stories-show-english": "Mostrar en inglés",
+ "page-10-year-stories-original-language": "Idioma original",
+ "page-10-year-stories-english-translation": "Traducción al inglés",
+ "page-10-year-stories-show-more": "Mostrar más",
+ "page-10-year-globe-go-to-event": "Ir al evento",
+ "page-10-year-innovation-card-1-title": "Lanzamiento de Ethereum",
+ "page-10-year-innovation-card-1-date": "30 de julio de 2015",
+ "page-10-year-innovation-card-1-description-1": "El bloque inicial de Ethereum se puso en marcha, lanzando la red «Frontier». Esta sencilla publicación les dio a los desarrolladores su primera oportunidad de crear aplicaciones descentralizadas y experimentar con contratos inteligentes.",
+ "page-10-year-innovation-card-1-description-2": "La misión de Ethereum: un internet abierto donde los usuarios controlen sus datos, las aplicaciones se ejecutan sin vigilancia y el valor fluya libremente entre las personas.",
+ "page-10-year-innovation-card-2-title": "DAI: la criptomoneda estable pionera",
+ "page-10-year-innovation-card-2-date": "Diciembre de 2015",
+ "page-10-year-innovation-card-2-description-1": "Se lanzó la primera moneda estable descentralizada. DAI mantiene un vínculo flexible con el dólar estadounidense mediante garantías de criptomonedas bloqueadas en contratos inteligentes.",
+ "page-10-year-innovation-card-2-description-2": "A diferencia de las monedas estables centralizadas controladas por empresas, DAI es gestionada por una organización autónoma descentralizada, lo que hace que no requiera confianza y sea dirigida de forma comunitaria.",
+ "page-10-year-innovation-card-3-title": "CryptoKitties y la frontera de los NFT",
+ "page-10-year-innovation-card-3-date": "Noviembre de 2017",
+ "page-10-year-innovation-card-3-description-1": "CryptoKitties dio vida a la propiedad digital. Este adelantado juego NFT mostró cómo la cadena de bloques podía permitir nuevas formas de expresión, de coleccionismo y cultura en internet.",
+ "page-10-year-innovation-card-3-description-2": "Probó que Ethereum podía escalar más allá de las finanzas hacia juegos, arte e identidad digital, abriendo posibilidades creativas completamente nuevas.",
+ "page-10-year-innovation-card-4-title": "Verano DeFi",
+ "page-10-year-innovation-card-4-date": "Junio de 2020",
+ "page-10-year-innovation-card-4-description-1": "El crecimiento explosivo de las DeFi redefinió lo que el mundo piensa de las finanzas. Los protocolos para prestar, comerciar y generar rendimientos obtuvieron un impulso masivo, mostrando el poder de la infraestructura financiera abierta y componible.",
+ "page-10-year-innovation-card-4-description-2": "Este periodo trajo miles de millones en valores a la cadena de bloques y estableció Ethereum como el hogar de las finanzas descentralizadas.",
+ "page-10-year-innovation-card-5-title": "Actualización acerca de La fusión",
+ "page-10-year-innovation-card-5-date": "15 de septiembre de 2022",
+ "page-10-year-innovation-card-5-description-1": "La mayor transformación de Ethereum hasta ahora. La red cambió sin problemas de la prueba de trabajo de gran consumo energético a la prueba de participación. Con miles de millones de valor en Ethereum, el cambio fue descrito como cambiar el motor de una aeronave en pleno vuelo.",
+ "page-10-year-innovation-card-5-description-2": "La Fusión redujo el consumo energético de Ethereum en un 99,95 %, fortaleciendo la seguridad de la red, y estableció las bases para futuras actualizaciones de escalabilidad.",
+ "page-10-year-innovation-card-6-title": "ETFs de ETH al contado",
+ "page-10-year-innovation-card-6-date": "23 de mayo de 2024",
+ "page-10-year-innovation-card-6-description-1": "Wall Street abraza Ethereum. Se lanzan las ETF de ETH al contado, trayendo capital institucional y legitimidad regulatoria a la plataforma de contratos inteligentes líder en el mundo.",
+ "page-10-year-innovation-card-6-description-2": "La aprobación señaló una mayor aceptación de los activos del mundo real tokenizados, con las principales instituciones financieras ahora teniendo en cuenta a Ethereum para todo, desde bienes inmuebles a bonos soberanos, en cadena.",
+ "page-10-year-adoption-card-1-title": "Década de descentralización",
+ "page-10-year-adoption-card-1-description": "Lo que empezó como un ecosistema especializado ahora abarca más de 80 países con 870.000 validadores, 13.600 nodos físicos y millones de usuarios de todos los continentes.",
+ "page-10-year-adoption-card-1-link-text": "Consultar estadísticas de Ethereum",
+ "page-10-year-adoption-card-2-title": "10 años, 16 actualizaciones, 0 interrupciones",
+ "page-10-year-adoption-card-2-description": "Ethereum ha mantenido un funcionamiento ininterrumpido mientras ha evolucionado continuadamente. La cadena de bloques nunca ha dejado de funcionar.",
+ "page-10-year-adoption-card-2-link-text": "Ver la hoja de ruta",
+ "page-10-year-adoption-card-3-title": "123 mil millones de dólares en capitalización de mercado de monedas estables",
+ "page-10-year-adoption-card-3-description": "A fecha del segundo trimestre de 2025, la capa 1 de Ethereum salvaguarda más de 123.000 millones de dólares en criptomonedas estables, captando más del 50 % del mercado global de criptomonedas estables.",
+ "page-10-year-adoption-card-3-link-text": "Más sobre monedas estables",
+ "page-10-year-adoption-card-4-title": "75.000 millones de dólares salvaguardados en DeFi de Ethereum",
+ "page-10-year-adoption-card-4-description": "A fecha del segundo trimestre de 2025, Ethereum salvaguarda más de 75.000 millones de dólares en DeFi en todo su ecosistema.",
+ "page-10-year-adoption-card-4-link-text": "Más sobre DeFi",
+ "page-10-year-adoption-card-5-title": "0,01 TWh por año",
+ "page-10-year-adoption-card-5-description": "Después de la Fusión, el consumo energético de Ethereum se redujo espectacularmente a solo 0,01 TWh por año, desde su pico de 93,95 TWh.",
+ "page-10-year-adoption-card-5-link-text": "Más acerca del consumo energético de Ethereum",
+ "page-10-year-adoption-card-6-title": "Más de 250 TPS",
+ "page-10-year-adoption-card-6-description": "El rendimiento de Ethereum ha aumentado enormemente desde su lanzamiento, con el ecosistema de Ethereum procesando ahora más de 250 transacciones por segundo.",
+ "page-10-year-adoption-card-6-link-text": "Más información sobre la capa 2",
+ "page-10-year-torch-title": "Ethereum Torch",
+ "page-10-year-torch-description": "Un NFT único que celebra el décimo aniversario de Ethereum. Torch (la antorcha) pasa entre los miembros de la comunidad, representando el espíritu de colaboración y descentralización que define a Ethereum.",
+ "page-10-year-torch-current-holder": "Titular de Torch actual",
+ "page-10-year-torch-no-holder": "No hay titulares de Torch actuales",
+ "page-10-year-torch-history-title": "Historial de titulares de Torch",
+ "page-10-year-torch-no-history": "No hay historial de transferencias disponible",
+ "page-10-year-torch-from": "De",
+ "page-10-year-torch-to": "A",
+ "page-10-year-torch-view-tx": "Ver transacción",
+ "page-10-year-livestream-title": "Unirse a la transmisión en directo",
+ "page-10-year-livestream-video-title": "Transmisión en directo del 10.º aniversario de Ethereum",
+ "page-10-year-torch-nft-intro": "Para conmemorar este hito histórico, estamos introduciendo el Ethereum Torch NFT, un NFT que encarna el espíritu de descentralización y comunidad que ha definido la primera década de Ethereum.",
+ "page-10-year-torch-nft-description": "Como una llama ceremonial que viaja de comunidad en comunidad, la antorcha Ethereum Torch viajará a través del ecosistema global de Ethereum. Este NFT especial se transmitirá de cartera en cartera entre miembros de la comunidad, desarrolladores y constructores cuidadosamente seleccionados que han dado forma a la historia de Ethereum en los últimos 10 años.",
+ "page-10-year-torch-one-of-kind-title": "Único en su categoría:",
+ "page-10-year-torch-one-of-kind-description": "Solo existe un Torch NFT de Ethereum, lo que convierte a cada titular en un guardián temporal del legado de Ethereum",
+ "page-10-year-torch-time-limited-title": "Custodia por tiempo limitado:",
+ "page-10-year-torch-time-limited-description": "Cada titular guarda la antorcha durante 24 horas antes de pasarla al siguiente guardián. El 30 de julio se quemará este NFT para celebrar el aniversario.",
+ "page-10-year-mint-card-title": "Acuñe el momento",
+ "page-10-year-mint-card-description": "Celebre una década de descentralización con un NFT gratuito y por tiempo limitado del 10.º aniversario. Acuñe el suyo antes de que se acabe el tiempo.",
+ "page-10-year-mint-card-ended-title": "El período de reclamación ha terminado",
+ "page-10-year-mint-card-ended-description": "Gracias a todos por unirse a la celebración",
+ "page-10-year-video-aria-label": "Vídeo del décimo aniversario",
+ "page-10-year-nft-link-label": "Ver el NFT de 10 años de Ethereum en OpenSea",
+ "page-10-year-terms-and-conditions": "Términos y condiciones"
+}
From 7acf8dd6ce2a7f452cb0ebc6f5b3835259391428 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:24 -0300
Subject: [PATCH 029/589] update(i18n): src/intl/es/page-upgrades-index.json
---
src/intl/es/page-upgrades-index.json | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/intl/es/page-upgrades-index.json b/src/intl/es/page-upgrades-index.json
index 2cc607a7888..77d9f6c5c3c 100644
--- a/src/intl/es/page-upgrades-index.json
+++ b/src/intl/es/page-upgrades-index.json
@@ -13,7 +13,7 @@
"page-upgrades-answer-4": "La cadena de baliza se utilizó para desarrollar el consenso basado en una prueba de participación que Ethereum utiliza hoy en día. Se ejecutó por separado a la red principal de Ethereum, para que los desarrolladores pudieran observar el mecanismo de consenso de forma aislada antes de utilizarlo para coordinar la actividad real.",
"page-upgrade-article-author-status": "Estado",
"page-upgrade-article-author-ethmerge": "La Fusión de Ethereum",
- "page-upgrade-article-author-alchemy": "Alchemy",
+ "page-upgrade-article-author-alchemy": "Alquimia",
"page-upgrade-article-author-consensys": "Consensys",
"page-upgrade-article-author-delphi-digital": "Delphi Digital",
"page-upgrade-article-author-eip-4844": "Vitalik Buterin, Dankrad Feist, Diederik Loerakker, George Kadianakis, Matt Garnett, Mofi Taiwo",
@@ -47,7 +47,7 @@
"page-upgrades-dive-desc": "¿Cómo estamos consiguiendo que Ethereum sea más escalable, seguro y sostenible? Y todo ello manteniendo el espíritu central de la descentralización de Ethereum.",
"page-upgrades-docking": "La Fusión",
"page-upgrades-merge-answer-1": "Al materializarse La Fusión, Ethereum pasó al consenso de prueba de participación el 15 de septiembre de 2022. La cadena de baliza se fusionó con la red principal, oficialmente en desuso de la prueba de trabajo en Ethereum, reduciendo así el consumo de energía de Ethereum en un ~99,95%.",
- "page-upgrades-merge-btn": "Más sobre la fusión",
+ "page-upgrades-merge-btn": "Más información sobre La Fusión",
"page-upgrades-merge-desc": "La red principal de Ethereum se fusionó con la cadena de baliza de prueba de participación, lo que marcó el final de la minería con consumo energético intensivo.\n",
"page-upgrades-merge-estimate": "La Fusión ya se ha producido",
"page-upgrades-merge-mainnet": "¿Qué es la red principal?",
@@ -86,7 +86,7 @@
"page-upgrades-question-4-answer-1": "Cada vez que envía una transacción o usa una dapp en la actualidad, está usando la capa de ejecución, también conocida como red principal.",
"page-upgrades-question-4-answer-3": "Desde La Fusión, los validadores aseguran toda la red mediante prueba de participación.",
"page-upgrades-question-4-answer-6": "Cualquiera puede convertirse en validador si apuesta sus ETH.",
- "page-upgrades-question-4-answer-7": "Más información sobre las participaciones",
+ "page-upgrades-question-4-answer-7": "Más información acerca de cómo apostar",
"page-upgrades-question-4-title": "¿Qué es la capa de ejecución?",
"page-upgrades-question-4-desc": "Antes de La Fusión, la cadena de bloques de Ethereum a veces se denominaba «Eth1». Este término se eliminó gradualmente a favor de la «capa de ejecución».",
"page-upgrades-question-5-answer-1": "Para convertirse en un validador en la red, deberá apostar 32 ETH. Si no tiene tanto, o no está dispuesto a apostar tanto, puede unirse a grupos de participaciones. Estos grupos le permitirán apostar menos y ganar fracciones de las recompensas totales.",
@@ -200,7 +200,7 @@
"page-upgrades-whats-ethereum": "Un segundo, ¿pero qué es Ethereum?",
"page-upgrades-whats-new": "¿Y ahora qué pasará con Ethereum?",
"page-upgrades-security-link": "Más información acerca de la seguridad y prevención de fraudes",
- "page-staking-deposit-contract-staking-more-link": "Más información sobre las participaciones",
+ "page-staking-deposit-contract-staking-more-link": "Más información acerca de las apuestas (staking)",
"docs-nav-proof-of-stake": "Prueba de participación",
"docs-nav-proof-of-work": "Prueba de trabajo",
"page-upgrades-get-involved-ethresearch-1": "Fragmentación",
From dadd171d3d60de16289249dafd0c337f09c307c2 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:25 -0300
Subject: [PATCH 030/589] update(i18n):
src/intl/es/page-ethereum-vs-bitcoin.json
---
src/intl/es/page-ethereum-vs-bitcoin.json | 101 ++++++++++++++++++++++
1 file changed, 101 insertions(+)
create mode 100644 src/intl/es/page-ethereum-vs-bitcoin.json
diff --git a/src/intl/es/page-ethereum-vs-bitcoin.json b/src/intl/es/page-ethereum-vs-bitcoin.json
new file mode 100644
index 00000000000..723f4a5aab5
--- /dev/null
+++ b/src/intl/es/page-ethereum-vs-bitcoin.json
@@ -0,0 +1,101 @@
+{
+ "page-ethereum-vs-bitcoin-meta-title": "Ethereum vs Bitcoin: ¿cuál es la diferencia? | ethereum.org",
+ "page-ethereum-vs-bitcoin-meta-description": "Aprenda las diferencias entre Bitcoin y Ethereum, incluyendo casos de uso, rendimiento de la red, seguridad, economía de tokens, nivel de descentralización y más.",
+ "page-ethereum-vs-bitcoin-twitter-meta-description": "Conozca las diferencias entre Bitcoin y Ethereum, incluidos casos de uso, rendimiento de la red, economía de tokens y más.",
+ "page-ethereum-vs-bitcoin-title": "Ethereum vs Bitcoin: ¿cuál es la diferencia?",
+ "page-ethereum-vs-bitcoin-description-1": "Bitcoin y Ethereum son dos de las redes blockchain descentralizadas más conocidas, pero tienen fines muy distintos.",
+ "page-ethereum-vs-bitcoin-section-1": "Bitcoin (con B mayúscula) es una blockchain diseñada para una moneda digital llamada bitcoin (con b minúscula). Ethereum está diseñado para ser una plataforma descentralizada para aplicaciones y activos, impulsada por su criptomoneda nativa ether (ETH).",
+ "page-ethereum-vs-bitcoin-section-2": "Ambas usan tecnología blockchain, son de código abierto y están mantenidas por comunidades globales, pero sus objetivos y características son distintos. En esta guía, veremos qué es cada red, qué tienen en común y en qué difieren en áreas como tecnología, cultura y perspectivas futuras.",
+ "page-ethereum-vs-bitcoin-bitcoin-section-title": "Bitcoin—una introducción rápida",
+ "page-ethereum-vs-bitcoin-bitcoin-section-1": "Bitcoin es una red de moneda digital descentralizada. Fue creada en 2009 por una entidad anónima bajo el nombre Satoshi Nakamoto, poco después de la crisis financiera de 2008. La idea era que Bitcoin fuera un sistema de efectivo electrónico entre pares.",
+ "page-ethereum-vs-bitcoin-bitcoin-section-2": "Bitcoin permite que cualquier persona envíe y reciba bitcoin a través de Internet sin depender de una autoridad central como un banco. Todas las transacciones se registran en un libro contable público conocido como blockchain.",
+ "page-ethereum-vs-bitcoin-bitcoin-section-3": "Bitcoin utiliza prueba de trabajo (proof-of-work) para asegurar su red. Computadoras de todo el mundo compiten para resolver acertijos criptográficos que les permiten agregar nuevos bloques. Estas computadoras especializadas se llaman mineros y reciben bitcoin como recompensa de bloque por \"minar\" nuevos bloques.",
+ "page-ethereum-vs-bitcoin-bitcoin-section-4": "Bitcoin tiene un suministro máximo fijo de 21 millones de monedas. Esta decisión de diseño es una de las razones por las que a menudo se denomina a Bitcoin como oro digital.",
+ "page-ethereum-vs-bitcoin-ethereum-section-title": "Ethereum—una introducción rápida",
+ "page-ethereum-vs-bitcoin-ethereum-section-1": "Al igual que Bitcoin, Ethereum también es una red blockchain descentralizada, pero fue diseñada para hacer más que simplemente registrar pagos. Lanzada en 2015 por un desarrollador de software llamado Vitalik Buterin y sus cofundadores, Ethereum fue creada para ser una plataforma de smart contracts y aplicaciones descentralizadas.",
+ "page-ethereum-vs-bitcoin-ethereum-section-2": "Ethereum permite que cualquier persona envíe y reciba valor como Bitcoin, pero también funciona como una plataforma que cualquiera puede usar para aplicaciones. La red Ethereum funciona en miles de nodos y no está controlada por una sola entidad.",
+ "page-ethereum-vs-bitcoin-ethereum-section-3": "Cualquier persona puede crear y desplegar aplicaciones en Ethereum. Estos programas se conocen como smart contracts y son la innovación principal de Ethereum.",
+ "page-ethereum-vs-bitcoin-ethereum-section-4": "Una vez desplegado el smart contract, se ejecuta de forma determinista cuando es interactuado. Esto permite construir aplicaciones para cosas como préstamos, intercambio, juegos y coleccionables digitales que funcionan todos los días, a toda hora, para millones de personas en todo el mundo.",
+ "page-ethereum-vs-bitcoin-ethereum-section-5": "De la misma manera que bitcoin se usa para pagar tarifas de transacción en la red Bitcoin, la moneda nativa de Ethereum, ether, se usa para pagar comisiones de transacción, publicar y usar smart contracts, y asegurar la red. Ether actúa tanto como combustible para ejecutar programas como reserva de valor.",
+ "page-ethereum-vs-bitcoin-ethereum-section-6": "Conozca más sobre Ethereum y cómo funciona",
+ "page-ethereum-vs-bitcoin-differences-section-title": "Las diferencias clave",
+ "page-ethereum-vs-bitcoin-differences-section-1": "Bitcoin y Ethereum utilizan la tecnología blockchain para mantener redes descentralizadas, pero difieren en su diseño, objetivo y capacidades.",
+ "page-ethereum-vs-bitcoin-differences-table-area": "Área",
+ "page-ethereum-vs-bitcoin-differences-table-bitcoin": "Bitcoin",
+ "page-ethereum-vs-bitcoin-differences-table-ethereum": "Ethereum",
+ "page-ethereum-vs-bitcoin-differences-table-row-1-1": "Propósito principal",
+ "page-ethereum-vs-bitcoin-differences-table-row-1-2": "Moneda digital entre pares",
+ "page-ethereum-vs-bitcoin-differences-table-row-1-3": "Plataforma para aplicaciones y economías digitales",
+ "page-ethereum-vs-bitcoin-differences-table-row-2-1": "Contratos inteligentes",
+ "page-ethereum-vs-bitcoin-differences-table-row-2-2": "No soportado",
+ "page-ethereum-vs-bitcoin-differences-table-row-2-3": "Funcionalidad principal",
+ "page-ethereum-vs-bitcoin-differences-table-row-3-1": "Suministro",
+ "page-ethereum-vs-bitcoin-differences-table-row-3-2": "Bitcoin se emite en cada bloque a una tasa fija/predeterminada dictada por el protocolo original e inalterado, con un límite final fijo de 21 millones.",
+ "page-ethereum-vs-bitcoin-differences-table-row-3-3": "Ether se quema en cada bloque proporcional a la actividad/demanda, y se emite en cada época proporcional al total de ETH en staking. No hay un límite fijo, pero la tasa de emisión está limitada por el total de ETH en staking.",
+ "page-ethereum-vs-bitcoin-differences-table-row-4-1": "Mecanismo de consenso",
+ "page-ethereum-vs-bitcoin-differences-table-row-4-2": "Prueba de trabajo",
+ "page-ethereum-vs-bitcoin-differences-table-row-4-3": "Prueba de participación",
+ "page-ethereum-vs-bitcoin-differences-table-row-5-1": "Velocidad",
+ "page-ethereum-vs-bitcoin-differences-table-row-5-2": "Considerada por la mayoría irreversible después de seis bloques, en promedio 60 minutos",
+ "page-ethereum-vs-bitcoin-differences-table-row-5-3": "Aproximadamente 15 minutos hasta la finalidad",
+ "page-ethereum-vs-bitcoin-differences-table-row-6-1": "Consumo de energía",
+ "page-ethereum-vs-bitcoin-differences-table-row-6-2": "Alto",
+ "page-ethereum-vs-bitcoin-differences-table-row-6-3": "Baja",
+ "page-ethereum-vs-bitcoin-differences-table-row-7-1": "Gobernanza",
+ "page-ethereum-vs-bitcoin-differences-table-row-7-2": "Conservador, de movimiento lento",
+ "page-ethereum-vs-bitcoin-differences-table-row-7-3": "Flexible, impulsado por la comunidad",
+ "page-ethereum-vs-bitcoin-differences-table-row-8-1": "Ecosistema de desarrolladores",
+ "page-ethereum-vs-bitcoin-differences-table-row-8-2": "Más pequeño",
+ "page-ethereum-vs-bitcoin-differences-table-row-8-3": "Grande y activo",
+ "page-ethereum-vs-bitcoin-differences-table-row-9-1": "Actualizaciones",
+ "page-ethereum-vs-bitcoin-differences-table-row-9-2": "Raro",
+ "page-ethereum-vs-bitcoin-differences-table-row-9-3": "Frecuente e iterativo",
+ "page-ethereum-vs-bitcoin-purpose-title": "Propósito de Bitcoin vs Ethereum",
+ "page-ethereum-vs-bitcoin-purpose-1": "Bitcoin fue creado en 2009 tras la crisis financiera global. Su objetivo era ofrecer una forma de dinero entre pares que funcionara sin bancos ni gobiernos. Es simple por diseño. La red busca mover valor de una persona a otra sin intermediarios. Este enfoque limitado lo ha llevado a ser ampliamente conocido como una forma de oro digital, un almacén de valor escaso y durable que también puede usarse como medio de intercambio.",
+ "page-ethereum-vs-bitcoin-purpose-2": "Ethereum se lanzó en 2015 con una visión más amplia. Sus creadores querían tomar la seguridad y descentralización de blockchain y hacerla programable. En lugar de limitarse a los pagos, Ethereum permite que cualquiera escriba y publique programas autoejecutables llamados smart contracts. Esto abre la puerta a una categoría completamente nueva de aplicaciones, desde finanzas descentralizadas (DeFi) y stablecoins hasta tokens no fungibles (NFTs), juegos y redes sociales descentralizadas.",
+ "page-ethereum-vs-bitcoin-purpose-3": "El diseño técnico refleja estos propósitos. El lenguaje de scripts de Bitcoin es limitado, lo que reduce la complejidad y ayuda a mantener la red segura. El lenguaje de programación de Ethereum es más expresivo, lo que le permite almacenar y gestionar estados complejos e interacciones entre aplicaciones. Esta flexibilidad es una fortaleza, pero también significa que la red evoluciona más rápido, con actualizaciones periódicas y nuevas funciones.",
+ "page-ethereum-vs-bitcoin-purpose-4": "Ambas juegan papeles distintos en la economía digital más amplia. Bitcoin se enfoca en ser un almacén de valor estable y descentralizado. Ethereum apunta a ser una capa de liquidación global para aplicaciones descentralizadas y activos programables.",
+ "page-ethereum-vs-bitcoin-usecases-and-adoption-title": "Casos de uso y adopción",
+ "page-ethereum-vs-bitcoin-usecases-and-adoption-1": "Bitcoin se utiliza comúnmente como reserva de valor. Muchos inversores lo ven como una cobertura contra la inflación o la inestabilidad económica. En algunos países se usa como una moneda alternativa o como una forma de que las personas ahorren fuera del sistema bancario tradicional.",
+ "page-ethereum-vs-bitcoin-usecases-and-adoption-2": "Ether también funciona como reserva de valor, pero su principal función es impulsar un amplio ecosistema de aplicaciones y activos. Los desarrolladores pueden utilizar Ethereum para crear nuevos protocolos, lanzar tokens, gestionar intercambios descentralizados, acuñar NFTs, construir juegos y desarrollar plataformas sociales que funcionan sin control centralizado.",
+ "page-ethereum-vs-bitcoin-usecases-and-adoption-3": "Ethereum admite miles de aplicaciones descentralizadas para nuevas formas de finanzas, crowdfunding y propiedad digital. Incluso hay casos de uso que conectan ambas redes. Por ejemplo, Bitcoin puede ser \"envuelto\" y utilizado en Ethereum para actividades como préstamos, préstamos y operaciones en DeFi.",
+ "page-ethereum-vs-bitcoin-usecases-and-adoption-4": "La adopción institucional refleja estas diferencias. La criptomoneda Bitcoin se mantiene ampliamente como reserva de valor a largo plazo, mientras que Ethereum se considera infraestructura descentralizada. Su programabilidad atrae a plataformas fintech y proveedores de pagos.",
+ "page-ethereum-vs-bitcoin-usecases-and-adoption-5": "Lea más casos de uso de Ethereum",
+ "page-ethereum-vs-bitcoin-monetary-policy-title": "Política monetaria",
+ "page-ethereum-vs-bitcoin-monetary-policy-1": "El suministro de Bitcoin se limita a 21 millones de monedas. Este límite rígido es aplicado por el protocolo y es una de las razones por las que se compara Bitcoin con el oro. Los nuevos bitcoin entran en circulación a través de recompensas de minería, las cuales se reducen a la mitad cada 210 000 bloques, lo que lleva alrededor de 4 años minar, en un evento llamado la halving. La recompensa inició en 50 bitcoin por bloque en 2009, bajó a 25 en 2012, luego a 12,5 en 2016 y así sucesivamente. A este ritmo, se espera que el último bitcoin se mine alrededor del año 2140.",
+ "page-ethereum-vs-bitcoin-monetary-policy-2": "Las recompensas de minería y las comisiones por transacción de Bitcoin financian la red y contribuyen a su seguridad. Sin embargo, a medida que la recompensa por bloque se reduce a la mitad, la red depende más de las comisiones por transacción para sostenerse. Actualmente, las comisiones en la red constituyen una pequeña parte de sus ingresos, menos del 5 %, por lo que la seguridad a largo plazo de la red puede estar en riesgo a medida que la emisión de Bitcoin llegue a 0.",
+ "page-ethereum-vs-bitcoin-monetary-policy-3": "Ethereum no tiene un límite fijo de suministro. En su lugar, la emisión se determina por las normas del protocolo, y actualizaciones recientes han introducido mecanismos que pueden reducir la oferta con el tiempo. El más destacado es la actualización EIP-1559, que quema una parte de las comisiones de transacción. Cuando la actividad de la red es alta, se puede quemar más ETH del que se emite, haciendo que la oferta sea deflacionaria durante esos períodos.",
+ "page-ethereum-vs-bitcoin-monetary-policy-4": "El enfoque monetario de Ethereum garantiza un presupuesto de seguridad de manera indefinida, donde las comisiones y las recompensas de bloque aseguran el funcionamiento de la red.",
+ "page-ethereum-vs-bitcoin-developer-ecosystem-title": "Ecosistema de desarrolladores",
+ "page-ethereum-vs-bitcoin-developer-ecosystem-1": "Ethereum tiene una de las comunidades de desarrolladores de blockchain más grandes. Crear en Ethereum brinda acceso a una amplia variedad de herramientas, frameworks, fondos y hackathons. La Ethereum Virtual Machine (EVM) es el entorno de ejecución de Ethereum y se ha convertido en un estándar común, con muchas otras cadenas usándolo para asegurar compatibilidad.",
+ "page-ethereum-vs-bitcoin-developer-ecosystem-2": "Los estándares de tokens como ERC-20 y ERC-721 se han convertido en el fundamento de gran parte de la economía blockchain en general. Muchas redes de Capa 2 y otras blockchains utilizan la EVM para que las aplicaciones, wallets y código de smart contracts puedan usarse entre blockchains con mínimos cambios.",
+ "page-ethereum-vs-bitcoin-developer-ecosystem-3": "La comunidad de desarrolladores de Bitcoin es más pequeña y está más enfocada. La mayoría de la actividad se centra en mantener y mejorar el protocolo principal, además de desarrollar soluciones de Capa 2 como Lightning Network para pagos más rápidos y económicos.",
+ "page-ethereum-vs-bitcoin-developer-ecosystem-4": "Conozca más sobre los recursos para desarrolladores de Ethereum",
+ "page-ethereum-vs-bitcoin-security-and-consensus-title": "Seguridad y consenso",
+ "page-ethereum-vs-bitcoin-security-and-consensus-1": "Bitcoin y Ethereum están asegurados por grandes redes distribuidas de nodos independientes, pero emplean métodos diferentes para lograr consenso sobre el estado de la red.",
+ "page-ethereum-vs-bitcoin-security-and-consensus-2": "Bitcoin utiliza un sistema llamado prueba de trabajo (proof-of-work). Computadoras conocidas como mineros compiten para resolver acertijos criptográficos. El primero en resolver uno puede agregar el siguiente bloque de transacciones a la blockchain y recibe una recompensa en bitcoin. Este enfoque le brinda a Bitcoin lo que se conoce como finalidad probabilística, es decir, que una transacción se considera altamente segura solo después de que se agreguen varios bloques más encima. Para Bitcoin, esto suele suceder tras unas seis confirmaciones, o aproximadamente una hora.",
+ "page-ethereum-vs-bitcoin-security-and-consensus-3": "Ethereum utiliza prueba de participación (proof-of-stake). En este modelo, los validadores bloquean, o ponen en staking, ETH para tener la oportunidad de ser seleccionados y proponer o confirmar nuevos bloques. La selección es aleatoria, pero la probabilidad de ser elegido aumenta con la cantidad de ETH en staking. Los validadores que actúan de manera deshonesta arriesgan perder su stake. Esto permite que Ethereum logre finalidad económica, donde los bloques finalizados son extremadamente difíciles de revertir, a menudo en unos 15 minutos. Ethereum también utiliza puntos de control para marcar los bloques como irreversibles una vez que suficientes validadores están de acuerdo.",
+ "page-ethereum-vs-bitcoin-security-and-consensus-4": "Aprenda más sobre el mecanismo de consenso de Ethereum",
+ "page-ethereum-vs-bitcoin-underlying-technology-title": "Tecnología subyacente",
+ "page-ethereum-vs-bitcoin-underlying-technology-1": "Bitcoin utiliza lo que se conoce como el modelo de salida de transacción no gastada, o UTXO. En este sistema, la blockchain no rastrea los saldos de cuentas. En cambio, registra salidas de transacciones previas que aún no se han gastado. Cuando se gastan bitcoin, esas salidas se usan como entradas para una nueva transacción, creando nuevas salidas en el proceso.",
+ "page-ethereum-vs-bitcoin-underlying-technology-2": "Puede pensar en esto como el uso de efectivo. Si tiene dos billetes de cinco dólares y quiere gastar siete, entrega ambos billetes y recibe tres dólares de cambio. Bitcoin registra los billetes y el cambio, no su saldo total.",
+ "page-ethereum-vs-bitcoin-underlying-technology-3": "Ethereum utiliza un modelo basado en cuentas. En vez de rastrear salidas individuales, mantiene un registro de los saldos de cuentas, similar a cómo lo hace un banco. Este enfoque facilita la gestión de smart contracts y lógica compleja, ya que las cuentas pueden almacenar datos e interactuar entre sí como programas.",
+ "page-ethereum-vs-bitcoin-underlying-technology-4": "Cada modelo tiene ventajas y desventajas. Los UTXOs pueden ofrecer mayor privacidad y facilitan el seguimiento de monedas individuales. Los sistemas basados en cuentas son más sencillos para construir aplicaciones.",
+ "page-ethereum-vs-bitcoin-underlying-technology-5": "Lea más en la documentación para desarrolladores de Ethereum",
+ "page-ethereum-vs-bitcoin-decentralization-title": "Descentralización",
+ "page-ethereum-vs-bitcoin-decentralization-1": "Bitcoin y Ethereum fueron diseñados para ser descentralizados, pero miden y abordan la descentralización de maneras diferentes.",
+ "page-ethereum-vs-bitcoin-decentralization-2": "La descentralización de Bitcoin se apoya en su diseño técnico simple, estabilidad a largo plazo y amplia distribución de nodos. Sus bajos requerimientos de recursos facilitan que las personas ejecuten nodos completos en casa, lo que ayuda a preservar la independencia y resistencia a la censura de la red.",
+ "page-ethereum-vs-bitcoin-decentralization-3": "Ethereum también cuenta con una red de nodos grande y en crecimiento. Hace hincapié en la diversidad de clientes, lo que significa que varias versiones del software son mantenidas por equipos independientes. Esto reduce la dependencia de un solo cliente y ayuda a proteger contra errores o fallos que podrían afectar a la red.",
+ "page-ethereum-vs-bitcoin-decentralization-4": "Ethereum cuenta con un número más amplio de participantes involucrados en actividades como staking, actualizaciones y debates de gobernanza, pero ambas redes buscan seguir siendo abiertas y resilientes. Bitcoin mantiene requisitos de nodo sin cambios, dependiendo de menos clientes de software. Ethereum fomenta la diversidad de contribuyentes, cada uno aportando su perspectiva.",
+ "page-ethereum-vs-bitcoin-environmental-impact-title": "Impacto ambiental",
+ "page-ethereum-vs-bitcoin-environmental-impact-1": "Uno de los cambios más significativos en la historia de Ethereum fue su transición de proof-of-work a proof-of-stake en 2022. Conocido como The Merge, este cambio redujo en más de un 99 % el consumo de energía de la red.",
+ "page-ethereum-vs-bitcoin-environmental-impact-2": "Bajo proof-of-stake, Ethereum ya no depende de la minería intensiva en energía. En su lugar, los validadores se seleccionan al azar, con mayor probabilidad según la cantidad de ETH que hayan puesto en staking. Este cambio ha hecho de Ethereum una de las redes blockchain más eficientes energéticamente.",
+ "page-ethereum-vs-bitcoin-environmental-impact-3": "Bitcoin continúa utilizando proof-of-work, el cual requiere grandes cantidades de electricidad, ya que los mineros compiten para resolver acertijos criptográficos. Parte de esta energía proviene de fuentes renovables, y existen debates en la comunidad de Bitcoin sobre cómo mejorar la sostenibilidad.",
+ "page-ethereum-vs-bitcoin-environmental-impact-4": "La diferencia en el uso de energía se ha convertido en un punto importante de comparación entre ambas redes. La menor huella energética de Ethereum lo hace más atractivo donde el impacto ambiental es una prioridad.",
+ "page-ethereum-vs-bitcoin-environmental-impact-5": "Lea el informe completo sobre el uso de energía de Ethereum",
+ "page-ethereum-vs-bitcoin-future-outlook-title": "¿Cómo luce el futuro?",
+ "page-ethereum-vs-bitcoin-future-outlook-1": "Bitcoin está siendo adoptado cada vez más como reserva de valor y activo de reserva. Es poco probable que cambie significativamente, y esta estabilidad es parte de su atractivo.",
+ "page-ethereum-vs-bitcoin-future-outlook-2": "Ethereum se está posicionando como una plataforma de aplicaciones para la nueva economía digital. Con el crecimiento de redes de Capa 2 y actualizaciones continuas, busca soportar aplicaciones, infraestructura y activos a escala global.",
+ "page-ethereum-vs-bitcoin-future-outlook-3": "Para muchas personas, las dos redes no están en competencia directa. Cumplen propósitos distintos y pueden complementarse en una estrategia diversificada de activos digitales.",
+ "page-ethereum-vs-bitcoin-future-outlook-4": "Conozca más sobre la hoja de ruta de Ethereum"
+}
\ No newline at end of file
From 5f7caa3579bd23d067632ec8f1fecd9329c0dd52 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:27 -0300
Subject: [PATCH 031/589] update(i18n):
src/intl/es/page-upgrades-get-involved.json
---
src/intl/es/page-upgrades-get-involved.json | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/intl/es/page-upgrades-get-involved.json b/src/intl/es/page-upgrades-get-involved.json
index bef659989e9..d544c7dc706 100644
--- a/src/intl/es/page-upgrades-get-involved.json
+++ b/src/intl/es/page-upgrades-get-involved.json
@@ -1,6 +1,6 @@
{
"page-upgrades-get-involved-btn-1": "Ver clientes",
- "page-upgrades-get-involved-btn-2": "Más información sobre las participaciones",
+ "page-upgrades-get-involved-btn-2": "Más información acerca de las apuestas (o «staking»)",
"page-upgrades-get-involved-btn-3": "Encontrar errores",
"page-upgrades-get-involved-bug": "Un error podría ser:",
"page-upgrades-get-involved-bug-hunting": "Ir a la búsqueda de errores",
@@ -15,7 +15,7 @@
"page-upgrades-get-involved-ethresearch-1": "Fragmentación",
"page-upgrades-get-involved-ethresearch-2": "La Fusión",
"page-upgrades-get-involved-ethresearch-3": "Ejecución fragmentada",
- "page-upgrades-get-involved-ethresearch-4": "Todos los temas de investigación",
+ "page-upgrades-get-involved-ethresearch-4": "Todos los temas de búsqueda",
"page-upgrades-get-involved-how": "¿Cómo quiere participar?",
"page-upgrades-get-involved-how-desc": "Cuanta más gente ejecute clientes, apueste y busque errores, la comunidad de Ethereum siempre se beneficiará.",
"page-upgrades-get-involved-join": "Únase a la investigación",
@@ -28,12 +28,12 @@
"page-upgrades-get-involved-run-clients-execution-desc": "A estos clientes se les denominaba anteriormente clientes «Eth1», pero este término está siendo desbancado por clientes «en la capa de ejecución».",
"page-upgrades-get-involved-run-clients-consensus": "Clientes de la capa de consenso",
"page-upgrades-get-involved-run-clients-consensus-desc": "A estos clientes se les denominaba anteriormente clientes «Eth2», pero este término está siendo desbancado por clientes «en la capa de consenso».",
- "page-upgrades-get-involved-stake": "Ponga su ETH en participación",
+ "page-upgrades-get-involved-stake": "Apueste sus ETH",
"page-upgrades-get-involved-stake-desc": "Ahora puede apostar sus ETH para ayudar a proteger la cadena de baliza.",
"page-upgrades-get-involved-stake-eth": "Apostar ETH",
"page-upgrades-get-involved-subtitle": "He aquí un resumen de las maneras en las que puede contribuir con Ethereum y futuros intentos relacionados con actualizaciones.",
"page-upgrades-get-involved-title-1": "Ejecutar un cliente",
- "page-upgrades-get-involved-title-2": "Ponga su ETH en participación",
+ "page-upgrades-get-involved-title-2": "Apueste sus ETH",
"page-upgrades-get-involved-title-3": "Encontrar errores",
"page-upgrades-get-involved-written-c-sharp": "Escrito en C#",
"page-upgrades-get-involved-written-go": "Escrito en Go",
From e7c03ef527546fb50a360fdfd37b14dbe525c1ef Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:28 -0300
Subject: [PATCH 032/589] update(i18n): src/intl/es/page-staking.json
---
src/intl/es/page-staking.json | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/intl/es/page-staking.json b/src/intl/es/page-staking.json
index 654527cd6a4..f79e89ccafb 100644
--- a/src/intl/es/page-staking.json
+++ b/src/intl/es/page-staking.json
@@ -12,7 +12,7 @@
"comp-withdrawal-credentials-error": "¡Vaya! Vuelva a comprobar el número de índice del validador e inténtelo de nuevo.",
"comp-withdrawal-credentials-upgraded-1": "El índice de validador {validatorIndex} está listo para comenzar a recibir recompensas",
"comp-withdrawal-credentials-upgraded-2": "Credenciales de retirada vinculadas a la dirección de ejecución:",
- "comp-withdrawal-credentials-not-upgraded-1": "Este validador de {network} necesita ser actualizado.",
+ "comp-withdrawal-credentials-not-upgraded-1": "Este validador de {network} necesita una actualización.",
"comp-withdrawal-credentials-not-upgraded-2": "Las últimas instrucciones sobre cómo actualizar se pueden encontrar en Staking Launchpad",
"comp-withdrawal-credentials-verify": "Verificar en {network}",
"page-staking-withdrawals-when": "¡Enviado!",
@@ -28,7 +28,7 @@
"page-staking-hero-title": "Cómo participar con su ETH",
"page-staking-hero-header": "Gane recompensas mientras hace Ethereum más seguro",
"page-staking-hero-subtitle": "Cualquier usuario con cualquier cantidad de ETH puede ayudar a asegurar la red y ganar recompensas en el proceso.",
- "page-staking-dropdown-home": "Inicio de participaciones",
+ "page-staking-dropdown-home": "Página principal de staking",
"page-staking-dropdown-solo": "Participación desde casa",
"page-staking-more-on-solo": "Más sobre la participación desde casa",
"page-staking-learn-more-solo": "Amplíe conocimientos sobre la participación individual",
@@ -49,7 +49,7 @@
"page-staking-guide-title-somer-esat": "Somer Esat",
"page-staking-guide-title-rocket-pool": "Operadores del nodo Rocket Pool",
"page-staking-guide-title-stakewise": "Operadores de nodos StakeWise",
- "page-staking-guide-title-lido-csm":"Operadores de nodos Lido CSM",
+ "page-staking-guide-title-lido-csm": "Operadores de nodos de Lido CSM",
"page-staking-guide-description-linux": "Linux (interfaz de línea de comandos o CLI)",
"page-staking-guide-description-mac-linux": "Linux, macOS (ILC)",
"page-staking-guide-description-mac-linux-windows": "Linux, Windows, MacOS (CLI)",
@@ -151,10 +151,10 @@
"page-staking-how-solo-works-item-3": "Sincronice un cliente de capa de consenso",
"page-staking-how-solo-works-item-4": "Genera sus claves y cárguelas en su cliente validador",
"page-staking-how-solo-works-item-5": "Controle y mantenga su nodo",
- "page-staking-launchpad-widget-start": "Comience a participar en {network}",
"page-staking-launchpad-widget-mainnet-label": "Red principal",
+ "page-staking-launchpad-widget-start": "Empieza a hacer staking en {network}",
"page-staking-launchpad-widget-span": "Elegir red",
- "page-staking-launchpad-widget-p1": "Se espera que los validadores solitarios prueben su configuración y sus habilidades operativas en la red de pruebas Hoodi antes de arriesgar fondos. Recuerde que es importante elegir un cliente minoritario, ya que mejora la seguridad de la red y hay menor riesgo.",
+ "page-staking-launchpad-widget-p1": "Se espera que los validadores en solitario prueben su configuración y sus habilidades operativas en la red de prueba {{network}} antes de arriesgar fondos. Recuerda que es importante elegir un cliente minoritario, ya que mejora la seguridad de la red y limita tu riesgo.",
"page-staking-launchpad-widget-p2": "Si se siente familiarizado, puede configurar todo lo necesario desde la línea de comandos usando solamente el «Lanzador de participaciones».",
"page-staking-launchpad-widget-p3": "Para facilitar las cosas, puede consultar algunas de las herramientas y guías a continuación que pueden ayudarle junto al «Lanzador de participaciones» para configurar sus clientes con facilidad.",
"page-staking-launchpad-widget-link": "Herramientas de software y guía",
@@ -165,7 +165,7 @@
"page-staking-stats-box-metric-1": "Total de ETH apostados",
"page-staking-stats-box-metric-2": "Validadores totales",
"page-staking-stats-box-metric-3": "APR actual",
- "page-staking-stats-box-metric-1-tooltip": "Cantidad de ETH en juego en la cadena del faro, sin incluir saldos superiores a 32 ETH",
+ "page-staking-stats-box-metric-1-tooltip": "Suma de ETH elegibles en staking en la Cadena de Baliza",
"page-staking-stats-box-metric-2-tooltip": "Número de cuentas de validador activadas actualmente en la cadena de baliza",
"page-staking-stats-box-metric-3-tooltip": "Devolución anual media de fondos por validador en el último período de 24 horas",
"page-staking-section-comparison-subtitle": "No existe una solución única para la participación y cada una es única. Aquí compararemos algunos de los riesgos, recompensas y requisitos de las diferentes maneras en que puede realizar la participación.",
@@ -175,7 +175,7 @@
"page-staking-section-comparison-solo-rewards-li3": "Opción de acuñar un token de participación líquida vinculada a tu nodo de casa para usar en DeFi",
"page-staking-section-comparison-saas-rewards-li1": "Generalmente suele implicar recompensas completas del protocolo, menos la cuota mensual por operaciones de nodo",
"page-staking-section-comparison-saas-rewards-li2": "Suele haber paneles disponibles para rastrear fácilmente su cliente validador",
- "page-staking-section-comparison-pools-rewards-li1": "Los participantes agrupados acumulan recompensas de manera diferente, en función del método asociado seleccionado",
+ "page-staking-section-comparison-pools-rewards-li1": "Los participantes agrupados obtienen recompensas de manera diferente, según el método de staking agrupado que se elija",
"page-staking-section-comparison-pools-rewards-li2": "Muchos servicios de participación agrupada ofrecen uno o más tókenes de liquidez que representan su ETH participante, más su parte de las recompensas del validador.",
"page-staking-section-comparison-pools-rewards-li3": "Los tókenes de liquidez se pueden mantener en su propia cartera, usar en DeFi y venderse si decide salir.",
"page-staking-section-comparison-risks-title": "Riesgos",
@@ -190,7 +190,7 @@
"page-staking-section-comparison-requirements-title": "Requisitos",
"page-staking-section-comparison-solo-requirements-li1": "Debe depositar 32 ETH",
"page-staking-section-comparison-solo-requirements-li2": "Mantenga el hardware que ejecute tanto un cliente de ejecución como un cliente de consenso mientras esté conectado a Internet.",
- "page-staking-section-comparison-solo-requirements-li3": "La plataforma de lanzamiento de participación le guiará a través del proceso y los requisitos de hardware.",
+ "page-staking-section-comparison-solo-requirements-li3": "La Launchpad de staking te guiará a través del proceso y los requisitos de hardware",
"page-staking-section-comparison-saas-requirements-li1": "Deposite 32 ETH y genere sus llaves con asistencia",
"page-staking-section-comparison-saas-requirements-li2": "Almacene sus claves de forma segura",
"page-staking-section-comparison-saas-requirements-li3": "Del resto ya no tiene que preocuparse, aunque los servicios específicos variarán",
@@ -202,7 +202,7 @@
"page-staking-faq-2-answer": "Un validador tiene la habilidad de proponer y certificar bloques para la red. Para evitar un comportamiento deshonesto, los usuarios deben tener sus fondos mediante participación Esto permite al protocolo penalizar a participantes maliciosos. La participación es una forma de reafirmar su honestidad, dado que sus acciones tendrán consecuencias financieras.",
"page-staking-faq-3-question": "¿Puedo comprar «Eth2»?",
"page-staking-faq-3-answer-p1": "No hay un token «Eth2» nativo del protocolo, ya que el token nativo (ETH) no cambiará cuando Ethereum pase al mecanismo de prueba de participación.",
- "page-staking-faq-3-answer-p2": "Nota: hay tókenes/etiquetas derivados que pueden representar ETH apostados (p. ej., rETH de Rocket Pool, stETH de Lido, ETH2 de Coinbase). Amplíe conocimientos sobre grupos de participación",
+ "page-staking-faq-3-answer-p2": "Existen tókenes/tickers derivados que pueden representar ETH en staking (es decir, rETH de Rocket Pool, stETH de Lido, ETH2 de Coinbase). Obtén más información sobre los pools de staking",
"page-staking-faq-4-question": "¿Está en línea la participación?",
"page-staking-faq-4-answer-p1": "Sí, la prueba de participación ha estado en vivo desde el 1 de diciembre de 2020",
"page-staking-faq-4-answer-p2": "Esto significa que su participación está en línea para que los usuarios depositen su ETH, ejecuten un cliente validador y empiecen a ganar recompensas.",
@@ -232,9 +232,9 @@
"page-staking-meta-title": "Participación en Ethereum: ¿Cómo funciona?",
"page-staking-withdrawals-important-notices": "Avisos importantes",
"page-staking-withdrawals-important-notices-desc": "Las retiradas de fondos aún no están disponibles. Para más información, consulte Preguntas frecuentes sobre La Fusión ETh2 y sus efectos posteriores.",
- "page-upgrades-merge-btn": "Más sobre la fusión",
+ "page-upgrades-merge-btn": "Más información sobre La Fusión",
"subscribe-to-ef-blog": "Suscríbase al blog de EF para recibir notificaciones por correo electrónico de los últimos anuncios de protocolo.",
"page-staking-comparison-with-other-options": "Comparación con otras opciones",
"page-staking-any-amount": "Cualquier monto",
- "page-staking-network-testnet": "red de prueba {network}"
+ "page-staking-network-testnet": "Red de prueba {network}"
}
From f5d1d54e01fa2512b2a9f296f367c70b641b4019 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:29 -0300
Subject: [PATCH 033/589] update(i18n):
src/intl/es/page-ethereum-history-founder-and-ownership.json
---
...thereum-history-founder-and-ownership.json | 65 +++++++++++++++++++
1 file changed, 65 insertions(+)
create mode 100644 src/intl/es/page-ethereum-history-founder-and-ownership.json
diff --git a/src/intl/es/page-ethereum-history-founder-and-ownership.json b/src/intl/es/page-ethereum-history-founder-and-ownership.json
new file mode 100644
index 00000000000..a8bfbe99b2f
--- /dev/null
+++ b/src/intl/es/page-ethereum-history-founder-and-ownership.json
@@ -0,0 +1,65 @@
+{
+ "page-ethereum-history-founder-and-ownership-meta-title": "Historia de Ethereum: fundador, lanzamiento y propiedad | ethereum.org",
+ "page-ethereum-history-founder-and-ownership-meta-description": "Conozca la historia de Ethereum, incluyendo quién lo creó, cuándo se lanzó y quién lo controla en la actualidad.",
+ "page-ethereum-history-founder-and-ownership-twitter-meta-description": "Conozca las diferencias entre Bitcoin y Ethereum, incluidos casos de uso, rendimiento de la red, economía de tokens y más.",
+ "page-ethereum-history-founder-and-ownership-title": "Historia de Ethereum: fundador, lanzamiento y propiedad",
+ "page-ethereum-history-founder-and-ownership-description-1": "Ethereum fue fundado por Vitalik Buterin en 2013. Varios cofundadores se sumaron posteriormente, incluidos Gavin Wood y Joseph Lubin. La red de Ethereum se lanzó oficialmente el 30 de julio de 2015, con la minería del primer bloque (el bloque Génesis).",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-description-1": "A diferencia de las organizaciones tradicionales, Ethereum no tiene CEO, junta directiva ni una única parte controladora. Es una plataforma descentralizada gobernada por su comunidad, con el apoyo de la Fundación Ethereum, una organización sin fines de lucro.",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum": "¿Quién fundó o cofundó Ethereum?",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-1": "Ethereum fue fundado por Vitalik Buterin, quien concibió la idea a finales de 2013.",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-2": "Nacido en Rusia en 1994 y criado en Canadá, Buterin mostró un talento excepcional para las matemáticas desde una edad temprana.",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-3": "Descubrió Bitcoin en 2011 y comenzó a escribir artículos sobre Bitcoin, lo que lo llevó a cofundar Bitcoin Magazine en 2012. Esta fue una de las primeras publicaciones dedicadas a las criptomonedas. Al ser parte de la comunidad temprana de Bitcoin, presenció de primera mano tanto su potencial como sus limitaciones.",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-4": "En 2014, Vitalik publicó el Ethereum Whitepaper, en el que describía una plataforma que iría más allá de Bitcoin al crear una blockchain que pudiera hacer más que solo pagos.",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-5": "Ethereum amplía el enfoque de Bitcoin, diciendo básicamente que, en lugar de tener reglas diseñadas para soportar una sola aplicación, vamos a hacer algo de propósito más general donde las personas puedan crear sus propias aplicaciones y las reglas de lo que hayan creado se puedan ejecutar e implementar en la plataforma Ethereum.",
+ "page-ethereum-history-founder-and-ownership-when-ethereum-when-did-ethereum-launch": "¿Cuándo se lanzó Ethereum?",
+ "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now": "¿Quién es dueño y administra Ethereum ahora?",
+ "page-ethereum-history-founder-and-ownership-founder-of-ethereum": "Fundador de Ethereum",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-6": "Ethereum fue cofundado por 8 personas que ayudaron a darle vida.",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-vitalik-buterin": "Vitalik Buterin: Concibió Ethereum en 2013, escribió el whitepaper original y se convirtió en su principal visionario y defensor, articulando el concepto de una computadora mundial descentralizada y guiando la dirección técnica y filosófica del protocolo.",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-gavin-wood": "Gavin Wood: Desarrolló el lenguaje de programación Solidity y escribió el Ethereum Yellow Paper, la guía técnica de la Máquina Virtual de Ethereum (EVM).",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-joseph-lubin": "Joseph Lubin: Ayudó a financiar las primeras etapas de Ethereum y luego fundó ConsenSys, una empresa centrada en construir aplicaciones e infraestructura basadas en Ethereum.",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-jeffrey-wilcke": "Jeffrey Wilcke: Creó Geth, el cliente de ejecución de Ethereum original y más utilizado, responsable de ejecutar la EVM y almacenar los datos de la red Ethereum.",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-mihai-alisie": "Mihai Alisie: Cofundó Bitcoin Magazine junto a Vitalik Buterin y ayudó a establecer la Fundación Ethereum en Suiza, sirviendo como vicepresidente y creando el marco legal para la preventa de ether.",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-anthony-di-lorio": "Anthony Di Lorio",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-amir-chetrit": "Amir Chetrit",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-charles-hoskinson": "Charles Hoskinson",
+ "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-7": "Actualmente, Vitalik Buterin sigue participando activamente en el desarrollo de Ethereum. Joseph Lubin continúa liderando ConsenSys, cuya empresa desarrolla herramientas clave para el ecosistema Ethereum como MetaMask e Infura.",
+ "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-1": "El trayecto desde la idea inicial de Vitalik hasta el lanzamiento oficial de Ethereum tomó alrededor de 20 meses. Estos son los hitos clave:",
+ "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-2": "Noviembre de 2013: Vitalik Buterin comparte el whitepaper de Ethereum. En él describe su visión de una plataforma blockchain capaz de ejecutar contratos inteligentes.",
+ "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-3": "Enero de 2014: Vitalik anuncia públicamente el concepto de Ethereum en la Conferencia Norteamericana de Bitcoin en Miami.",
+ "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-4": "Julio–agosto de 2014: Para financiar el desarrollo de Ethereum, el equipo fundador realizó una campaña pública de recaudación de fondos. Recaudaron 31,000 BTC (unos 18 millones de dólares en ese momento) a cambio de ether (ETH).",
+ "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-5": "Abril de 2015: Vitalik y los cofundadores lanzan la red de pruebas Olympic de Ethereum. Esta fue la fase final de pruebas antes del lanzamiento de la red principal.",
+ "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-6": "30 de julio de 2015: El equipo fundador lanza oficialmente la red principal de Ethereum minando el bloque génesis. Esto marca el nacimiento de la red Ethereum.",
+ "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-7": "14 de marzo de 2016: La comunidad de Ethereum implementa \"Homestead\", la primera actualización planificada. Esto indica que Ethereum estaba listo para su adopción generalizada.",
+ "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-8": "Teníamos la noción en el proyecto Ethereum de que realmente sólo tendríamos una oportunidad, era realmente hacer todo bien a la primera, así que teníamos que hacerlo bien.",
+ "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-9": "Cofundador de Ethereum",
+ "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-10": "El lanzamiento de Ethereum marcó un hito importante en la tecnología blockchain. Introdujo los contratos inteligentes y creó una plataforma para aplicaciones descentralizadas.",
+ "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-11": "Puede ver siempre el bloque génesis de Ethereum y preservar el momento en que Ethereum cobró vida.",
+ "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-12": "Ver la lista completa de actualizaciones de Ethereum",
+ "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-13": "Consulte la hoja de ruta futura de Ethereum",
+ "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now-description-1": "Uno de los aspectos más singulares de Ethereum es su estructura de propiedad, o más bien, su ausencia de propiedad tradicional. A diferencia de una empresa convencional, Ethereum:",
+ "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now-description-2": "no tiene CEO ni autoridad central",
+ "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now-description-3": "no está controlado por ninguna entidad o organización única",
+ "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now-description-4": "no tiene accionistas en el sentido tradicional",
+ "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now-description-5": "En su lugar, Ethereum funciona como una red descentralizada. Está mantenido por miles de computadoras independientes (nodos) en todo el mundo. Este modelo descentralizado está en el núcleo del diseño y el valor de Ethereum.",
+ "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now-description-6": "Varios grupos clave colaboran en el desarrollo y la gobernanza continua de Ethereum:",
+ "page-ethereum-history-founder-and-ownership-ethereum-foundation": "1. La Fundación Ethereum",
+ "page-ethereum-history-founder-and-ownership-ethereum-foundation-description-1": "La Fundación Ethereum es una organización sin fines de lucro que apoya a Ethereum y tecnologías relacionadas. Aunque es importante, no controla la red. La fundación:",
+ "page-ethereum-history-founder-and-ownership-ethereum-foundation-description-2": "Gestiona fondos para apoyar el desarrollo de Ethereum",
+ "page-ethereum-history-founder-and-ownership-ethereum-foundation-description-3": "Otorga subvenciones a proyectos que se construyen sobre Ethereum",
+ "page-ethereum-history-founder-and-ownership-ethereum-foundation-description-4": "Organiza eventos comunitarios e iniciativas educativas",
+ "page-ethereum-history-founder-and-ownership-ethereum-foundation-description-5": "Coordina esfuerzos de investigación",
+ "page-ethereum-history-founder-and-ownership-core-developers": "2. Desarrolladores principales e investigadores",
+ "page-ethereum-history-founder-and-ownership-core-developers-description-1": "Una comunidad global de desarrolladores e investigadores contribuye al código y al diseño de Ethereum. Estos colaboradores proponen, discuten e implementan mejoras a través de un proceso público y abierto. Vitalik Buterin sigue siendo respetado en la comunidad; sin embargo, las decisiones se toman mediante consenso grupal en lugar de una sola persona.",
+ "page-ethereum-history-founder-and-ownership-eip": "3. Propuestas de Mejora de Ethereum (EIP)",
+ "page-ethereum-history-founder-and-ownership-eip-description-1": "La comunidad de Ethereum propone cambios en la red a través de Propuestas de Mejora de Ethereum (EIP). Este sistema abierto permite a cualquiera sugerir mejoras. Luego se discuten, refinan y potencialmente implementan estas ideas por la comunidad.",
+ "page-ethereum-history-founder-and-ownership-validators": "4. Operadores de nodos y validadores",
+ "page-ethereum-history-founder-and-ownership-validators-description-1": "Desde la transición de Ethereum a proof-of-stake en septiembre de 2022, la red es asegurada por validadores que bloquean (hacen staking) ETH y procesan transacciones. Hay un gran número de validadores repartidos por todo el mundo, lo que distribuye ampliamente el control de la red.",
+ "page-ethereum-history-founder-and-ownership-validators-description-2": "Este modelo descentralizado limita el control de cualquier entidad individual, haciendo que Ethereum sea resistente a la censura. Esto incluye a los propios fundadores originales. Ninguna persona u organización puede cambiar las reglas de Ethereum o apagar la red por sí sola.",
+ "page-ethereum-history-founder-and-ownership-validators-description-3": "La diferencia fundamental entre construir una aplicación en Ethereum y hacerlo en una plataforma centralizada tradicional es esta idea clave de que, una vez que usted crea su aplicación, no necesita depender de usted ni de ninguna otra persona para seguir existiendo. La aplicación está garantizada a seguir funcionando según las reglas que se especificaron.",
+ "page-ethereum-history-founder-and-ownership-conclusion": "Conclusión",
+ "page-ethereum-history-founder-and-ownership-conclusion-description-1": "Desde su creación por Vitalik Buterin en 2013, su lanzamiento en 2015 y su crecimiento actual, Ethereum se ha mantenido fiel a su visión fundacional. Sigue siendo una plataforma descentralizada y creíblemente neutral para aplicaciones que se ejecutan exactamente como fueron programadas. La red y las aplicaciones sobre ella funcionan sin tiempo de inactividad, censura, fraude ni interferencia de terceros.",
+ "page-ethereum-history-founder-and-ownership-conclusion-description-2": "La historia de Ethereum sigue desarrollándose con cada actualización e innovación. A medida que la red evoluciona, ejemplifica cómo la gobernanza descentralizada puede impulsar el progreso tecnológico sin estructuras empresariales tradicionales.",
+ "page-ethereum-history-founder-and-ownership-conclusion-description-3": "Ethereum se ha transformado de un whitepaper visionario a una capa de infraestructura global que impulsa miles de aplicaciones y miles de millones en valor. Esto demuestra que la colaboración abierta puede transformar no solo las finanzas, sino también los conceptos fundamentales de propiedad, gobernanza y confianza digital.",
+ "page-ethereum-history-founder-and-ownership-conclusion-description-4": "Aprenda más sobre el proceso de gobernanza de Ethereum"
+}
From 0e86d9f019bb17654c28b6d4da02c2d1fcde26a4 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:30 -0300
Subject: [PATCH 034/589] update(i18n):
src/intl/es/page-developers-learning-tools.json
---
src/intl/es/page-developers-learning-tools.json | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/intl/es/page-developers-learning-tools.json b/src/intl/es/page-developers-learning-tools.json
index f137326a979..fceb82f8fc8 100644
--- a/src/intl/es/page-developers-learning-tools.json
+++ b/src/intl/es/page-developers-learning-tools.json
@@ -2,7 +2,7 @@
"page-learning-tools-bloomtech-description": "El curso BloomTech Web3 te enseñará las habilidades que los empleadores buscan en los ingenieros.",
"page-learning-tools-bloomtech-logo-alt": "Logo de BloomTech",
"page-learning-tools-bootcamps": "Cursos intensivos para desarrolladores",
- "page-learning-tools-bootcamps-desc": "Cursos en línea pagados para ponerse al día rápidamente.",
+ "page-learning-tools-bootcamps-desc": "Cursos en línea gratuitos o de pago para que aprenda rápidamente.",
"page-learning-tools-browse-docs": "Examinar documentos",
"page-learning-tools-capture-the-ether-description": "Capture the Ether es un juego en el que puede hackear contratos inteligentes de Ethereum para aprender sobre seguridad.",
"page-learning-tools-capture-the-ether-logo-alt": "Logo de Capture the Ether",
@@ -31,7 +31,7 @@
"page-learning-tools-atlas-logo-alt": "Logo de Atlas",
"page-learning-tools-atlas-description": "Escriba, realice pruebas e implemente contratos inteligentes en minutos con Atlas IDE.",
"page-learning-tools-questbook-description": "Tutoriales para aprender sobre Web 3.0 construyendo",
- "page-learning-tools-questbook-logo-alt": "Logo de Questbook",
+ "page-learning-tools-questbook-logo-alt": "Logotipo de Questbook",
"page-learning-tools-remix-description": "Desarrolle, implemente y administre contratos inteligentes para Ethereum. Siga los tutoriales con el plugin (o complemento) de LearnEth.",
"page-learning-tools-remix-description-2": "Remix, Replit, ChainIDE y Atlas no son solo sandboxes; los desarrolladores pueden escribir, compilar e implementar contratos inteligentes utilizándolos.",
"page-learning-tools-replit-description": "Un entorno de desarrollo personalizable para Ethereum con recarga en caliente, verificación de errores y soporte para red de pruebas de primera clase.",
@@ -49,7 +49,7 @@
"page-learning-tools-vyperfun-description": "Conozca Vyper mediante la creación de su propio juego de Pokémon.",
"page-learning-tools-vyperfun-logo-alt": "Logo de Vyper.fun",
"page-learning-tools-nftschool-description": "Explore lo que está sucediendo con los tókenes no fungibles o NFT desde el punto de vista técnico.",
- "page-learning-tools-nftschool-logo-alt": "Logo de NFT school",
+ "page-learning-tools-nftschool-logo-alt": "Logotipo de NFT School",
"page-learning-tools-platzi-description": "Aprenda cómo construir DApps en Web3 y domine todas las habilidades necesarias para ser un desarrollador de la cadena de bloques.",
"page-learning-tools-platzi-logo-alt": "Logo de Platzi",
"page-learning-tools-alchemy-university-description": "Desarrolle su trayectoria en la Web3 a través de cursos, proyectos y códigos.",
@@ -58,5 +58,7 @@
"page-learning-tools-learnweb3-logo-alt": "Logo de LearnWeb3",
"page-learning-tools-cyfrin-updraft-description": "Aprenda sobre desarrollo de contratos inteligentes en todos los niveles de capacitación y auditorías de seguridad.",
"page-learning-tools-cyfrin-updraft-logo-alt": "Logo de Cyfrin Updraft",
+ "page-learning-tools-price-free": "Gratis",
+ "page-learning-tools-price-paid": "De pago",
"alt-eth-blocks": "Ilustración de bloques organizados como un símbolo ETH"
}
From 65b2498737c0caee9af6e8c441ee77ea57934187 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:32 -0300
Subject: [PATCH 035/589] update(i18n):
src/intl/es/page-developers-local-environment.json
---
src/intl/es/page-developers-local-environment.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/intl/es/page-developers-local-environment.json b/src/intl/es/page-developers-local-environment.json
index b5970ff0be6..a526adba645 100644
--- a/src/intl/es/page-developers-local-environment.json
+++ b/src/intl/es/page-developers-local-environment.json
@@ -28,6 +28,6 @@
"page-local-environment-setup-subtitle": "Si está listo para empezar a desarrollar, es hora de elegir su pila.",
"page-local-environment-setup-subtitle-2": "Aquí están las herramientas y marcos que puede usar para crear su aplicación Ethereum.",
"page-local-environment-setup-title": "Configure su entorno de desarrollo local",
- "page-local-environment-solidity-template-desc": "Una plantilla de GitHub para una configuración prediseñada para sus contratos inteligentes de Solidity. Incluye una red local de Hardhat, Waffle para pruebas, Ethers para implementación de carteras, y más.",
+ "page-local-environment-solidity-template-desc": "Una plantilla de GitHub con una configuración predefinida para sus contratos inteligentes en Solidity. Incluye una red local de Hardhat y Ethers para la implementación de carteras, entre otras funciones.",
"page-local-environment-solidity-template-logo-alt": "Logo de plantilla Solidity"
}
From c76779abda197abc63b3a85064bd071c9a64c979 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:33 -0300
Subject: [PATCH 036/589] update(i18n): src/intl/es/page-what-is-ethereum.json
---
src/intl/es/page-what-is-ethereum.json | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/intl/es/page-what-is-ethereum.json b/src/intl/es/page-what-is-ethereum.json
index 8e0fd345e34..ba36d72cc1a 100644
--- a/src/intl/es/page-what-is-ethereum.json
+++ b/src/intl/es/page-what-is-ethereum.json
@@ -38,10 +38,10 @@
"page-what-is-ethereum-ether-learn-more": "Conozca mejor los ether (ETH)",
"page-what-is-ethereum-how-title": "¿Cómo funciona Ethereum?",
"page-what-is-ethereum-how-intro-1": "Cuando Ethereum se lanzó en 2015, usaba un sistema llamado prueba de trabajo.",
- "page-what-is-ethereum-how-intro-2": "Este mecanismo, del que bitcoin fue pionero, era la forma en que todos los ordenadores se ponían de acuerdo sobre quién poseía qué. Los ordenadores usaban un montón de energía tratando de resolver un rompecabezas matemático complejo. El ganador acabaría proponiendo un bloque de nuevas transacciones y obteniendo nuevos ETH.",
+ "page-what-is-ethereum-how-intro-2": "Este mecanismo, que fue pionero en Bitcoin, es la forma en que todas las computadoras acuerdan quién posee qué. Las computadoras utilizan mucha energía tratando de resolver un complejo problema matemático. El ganador tiene la oportunidad de proponer un bloque de transacciones entrantes y ganar nuevos ETH.",
"page-what-is-ethereum-how-intro-3": "En 2022, Ethereum fue actualizado a un nuevo sistema llamado prueba de participaciónque es un 99 % más eficiente energéticamente. En vez de resolver rompecabezas matemáticos, los validadores bloquean sus ETH como depósito de seguridad para obtener el derecho a procesar transacciones.",
"page-what-is-ethereum-how-intro-4": "Si lo hacen correctamente, ganan ETH. Si hacen trampa, pierden una parte de su participación.",
- "page-what-is-ethereum-how-intro-5": "Aquí hay un ejemplo:",
+ "page-what-is-ethereum-how-intro-5": "Le mostramos un ejemplo:",
"page-what-is-ethereum-how-example-1-title": "Para mandar 10 $ en monedas estables a un amigo o una amiga en Ethereum:",
"page-what-is-ethereum-how-example-1-step-1": "abra su cartera, añada la dirección de la cuenta y la cantidad, luego haga clic en Enviar.",
"page-what-is-ethereum-how-example-1-step-2": "Su cartera firma el pago y lo difunde por la red.",
@@ -94,7 +94,7 @@
"page-what-is-ethereum-start-individuals-step-1": "Comprar una pequeña cantidad de ETH en una plataforma de intercambio o directamente dentro de algunas carteras",
"page-what-is-ethereum-start-individuals-step-2": "Pagar transacciones con esos ETH, así como enviar tókenes o coleccionar NFT",
"page-what-is-ethereum-start-individuals-step-3": "Para explorar DApps como Zora, Uniswap o Farcaster no se necesitan inicios de sesión ni autorizaciones",
- "page-what-is-ethereum-start-individuals-desc-4": "Estas prioridades ayudarán a garantizar que Ethereum sea seguro, escalable y fácil de usar a medida que cada día más personas confíen en la red.",
+ "page-what-is-ethereum-start-individuals-desc-4": "Estas prioridades ayudarán a garantizar que Ethereum sea seguro, escalable y fácil de usar a medida que más personas dependen de la red cada día.",
"page-what-is-ethereum-start-individuals-desc-5": "Estas DApps se ejecutan en su navegador y funcionan con su cartera instantáneamente. Puede empezar a usar Ethereum en cuestión de minutos.",
"page-what-is-ethereum-start-individuals-cta-1": "¡Vamos allá!",
"page-what-is-ethereum-start-individuals-cta-2": "Ver aplicaciones",
@@ -155,12 +155,12 @@
"page-what-is-ethereum-when-who-learn-more": "Conozca mejor la historia de Ethereum",
"page-what-is-ethereum-roadmap-title": "¿Cuál es la hoja de ruta de Ethereum para el 2025?",
"page-what-is-ethereum-roadmap-intro-1": "Ethereum no sigue una hoja de ruta fija. Sigue una visión compartida.",
- "page-what-is-ethereum-roadmap-intro-2": "Las actualizaciones de red se realizan mediante propuestas de mejora de las EIP y las desarrollan en público contribuidores de todo el mundo. No hay un equipo central que decida lo que sucede, simplemente personas que crean lo que consideran útil basándose en las necesidades de los usuarios.",
+ "page-what-is-ethereum-roadmap-intro-2": "Las mejoras de la red se realizan como EIPs y son desarrolladas públicamente por colaboradores de todo el mundo. No existe un equipo central que decida qué sucede, solo personas que construyen lo que consideran útil según las necesidades de los usuarios.",
"page-what-is-ethereum-roadmap-intro-3": "Pectra, publicada en mayo de 2025, es la actualización más reciente. Esta actualización mejoró las funcionalidades de carteras, les dio a los participantes una mayor flexibilidad y facilitó a las DApps la ejecución en capas L2. El objetivo era mejorar la usabilidad sin comprometer la seguridad o la descentralización.",
"page-what-is-ethereum-roadmap-priorities-intro": "De cara al futuro, las prioridades de Ethereum incluyen:",
"page-what-is-ethereum-roadmap-priority-1": "Hacer que el protocolo principal y sus capas secundarias sean más rápidas y baratas para todos",
"page-what-is-ethereum-roadmap-priority-2": "Mejorar la experiencia de los usuarios y desarrolladores",
- "page-what-is-ethereum-roadmap-outro-1": "Estas prioridades ayudarán a garantizar que Ethereum sea seguro, escalable y fácil de usar a medida que cada día más personas confíen en la red.",
+ "page-what-is-ethereum-roadmap-outro-1": "Estas prioridades ayudarán a garantizar que Ethereum sea seguro, escalable y fácil de usar a medida que más personas dependen de la red cada día.",
"page-what-is-ethereum-roadmap-outro-2": "Si quiere influir en la dirección de Ethereum, involúcrese. No necesita permiso, solo el deseo de marcar la diferencia en esta nueva economía digital.",
"page-what-is-ethereum-roadmap-learn-more": "Ver un resumen de la hoja de ruta de Ethereum",
"page-what-is-ethereum-further-reading-title": "Leer a continuación",
From 035b80f145b04841764806bf30749373aa8823eb Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:35 -0300
Subject: [PATCH 037/589] update(i18n): src/intl/es/glossary.json
---
src/intl/es/glossary.json | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/src/intl/es/glossary.json b/src/intl/es/glossary.json
index 56f8a556421..dd069ed626b 100644
--- a/src/intl/es/glossary.json
+++ b/src/intl/es/glossary.json
@@ -1,6 +1,6 @@
{
"51%-attack-term": "Ataque del 51 %",
- "51%-attack-definition": "Un tipo de ataque en el que un grupo toma control de la mayoría de los nodos. Esto les permitiría defraudar la cadena de bloques revirtiendo transacciones y gastando doblemente ether y otros tokens.
En la prueba de participación de Ethereum, esto se lograría acumulando más de la mitad del ether total en staking. Esto permitiría a un atacante decidir qué nuevos bloques se añaden a la cadena de bloques. Sin embargo, para revertir la cadena o gastar doblemente, un atacante necesitaría al menos el 66% del ether total en staking.",
+ "51%-attack-definition": "Un tipo de ataque en el que un grupo obtiene el control de la mayoría de los nodos. Esto les permitiría defraudar la cadena de bloques al revertir transacciones y hacer un doble gasto de ether y otros tokens.
En la prueba de participación de Ethereum esto se lograría acumulando más de la mitad del ether total en staking. Esto permitiría que un atacante decida qué bloques nuevos se añaden a la cadena de bloques. Sin embargo, para revertir la cadena o hacer un doble gasto, un atacante necesitaría al menos el 66 % del ether total en staking.",
"account-term": "Cuenta",
"account-definition": "Una cuenta de Ethereum es una identidad digital en la cadena de bloques de Ethereum que permite a los usuarios enviar y recibir Ether, así como interactuar con contratos inteligentes.
Técnico: Es un objeto que contiene una dirección, un saldo, nonce, y almacenamiento y código opcional. Una cuenta puede ser de tipo contrato o una cuenta de propiedad externa (EOA).",
"address-term": "Dirección",
@@ -88,13 +88,15 @@
"dag-term": "DAG",
"dag-definition": "DAG es el acrónico en inglés de Gráfico Acíclico Dirigido. Es una estructura de datos compuesta por nodos y enlaces entre ellos. Antes de La Fusión, Ethereum usaba un DAG en su algoritmo de prueba de trabajo, Ethash, pero ya no se utiliza en prueba de participación.",
"dapp-term": "DApp",
- "dapp-definition": "Una dApp es una aplicación descentralizada que se ejecuta en una red de cadena de bloques, ofreciendo servicios sin una autoridad de control central. Más sobre aplicaciones descentralizadas. Como mínimo, una dapp tiene un contrato inteligente conectado a una interfaz web. Además, muchas dapps incluyen almacenamiento descentralizado y/o un protocolo y una plataforma de mensajes.",
+ "dapp-definition": "Una DApp es una aplicación descentralizada que se ejecuta en una red de cadena de bloques, ofreciendo servicios sin una autoridad de control central. Más información sobre las aplicaciones descentralizadas. Como mínimo, una DApp tiene un contrato inteligente conectado a una interfaz web. Además, muchas DApps incluyen almacenamiento descentralizado y/o un protocolo y una plataforma de mensajes.",
"data-availability-term": "Disponibilidad de datos",
"data-availability-definition": "Cualquier nodo puede verificar de forma independiente las transacciones en una cadena de bloques para mantener la transparencia y la confianza en el sistema.",
"decentralization-term": "Descentralización",
"decentralization-definition": "El concepto de mover el control y la ejecución de procesos fuera de una entidad central.",
"dao-term": "Organización autónoma descentralizada (o DAO)",
"dao-definition": "Una DAO es una organización digital dirigida por medio de reglas codificadas en una cadena de bloques, donde las decisiones se toman a partir de los votos de los miembros, no con una autoridad central.Más información sobre las organizaciones autónomas descentralizadas (DAO). El poder de voto de cada miembro a menudo está vinculado al número de tokens que tiene. Las DAO tienen como objetivo democratizar la toma de decisiones y las operaciones, centrándose en la transparencia y la gobernanza comunitaria.",
+ "desci-term": "DeSci",
+ "desci-definition": "DeSci, o Ciencia Descentralizada, es un movimiento que aplica la tecnología de la cadena de bloques a la investigación científica. Aprovecha las DAO, los contratos inteligentes y los incentivos tokenizados para crear ecosistemas de financiación e investigación más transparentes, abiertos y colaborativos.",
"dex-term": "Exchange descentralizado (o DEX)",
"dex-definition": "Un tipo de aplicación de Ethereum que permite intercambiar tokens con pares de la red. Los DEX no están sujetos a restricciones geográficas como los exchanges centralizados: cualquiera puede participar.",
"deposit-contract-term": "Contrato de depósito",
@@ -112,7 +114,7 @@
"distributed-hash-table-term": "Tabla de Hash Distribuida (DHT)",
"distributed-hash-table-definition": "Una estructura de datos que contiene pares (clave, valor) utilizada por los nodos de Ethereum para identificar pares a los que conectarse y determinar qué protocolos utilizar para comunicarse.",
"double-spend-term": "Doble gasto",
- "double-spend-definition": "Una bifurcación deliberada de la cadena de bloques en la que un usuario con una cantidad suficientemente grande de potencia de minado/participación envía una transacción que mueve moneda fuera de la cadena (por ejemplo, sacando a dinero fiduiciario o realizando una compra fuera de la cadena) y posteriomente reorganiza la cadena de bloques para eliminar esa transacción. Un doble gasto bien hecho deja al atacante con sus activos tanto dentro como fuera de la cadena.",
+ "double-spend-definition": "Una bifurcación deliberada de la cadena de bloques, en la que un usuario con una cantidad suficientemente grande de poder de minado/participación envía una transacción que mueve alguna moneda fuera de la cadena (p. ej., convirtiéndola en dinero fiduciario o realizando una compra fuera de la cadena) y luego reorganiza la cadena de bloques para eliminar esa transacción. Un doble gasto exitoso deja al atacante con sus activos tanto dentro como fuera de la cadena.",
"ecdsa-term": "Algoritmo de Firma Digital de Curva Elíptica (ECDSA)",
"ecdsa-definition": "Un algoritmo criptográfico utilizado por Ethereum para garantizar que los fondos solo puedan ser gastados por sus propietarios. Es el método preferido para crear claves públicas y privadas. Relevante para la generación de direcciones de cuentas y la verificación de transacciones.",
"encryption-term": "Encriptación",
@@ -223,6 +225,8 @@
"liquidity-definition": "La liquidez es la rapidez y facilidad con la que se puede convertir un activo en efectivo u otro activo. Los exchanges descentralizados como Uniswap tienen múltiples grupos de liquidez donde los titulares de activos pueden depositar sus activos, donde los operadores pueden comprar y vender de una manera descentralizada a cambio de recompensas.",
"liquidity-tokens-term": "Tokens de liquidez",
"liquidity-tokens-definition": "Los tokens de liquidez (LST) son tokens digitales emitidos a los participantes que depositan activos en un fondo de liquidez, que es una colección de fondos bloqueados en un contrato inteligente y utilizados para facilitar las operaciones en un exchange descentralizado (DEX). Estos tokens representan la participación del participante en el grupo y se pueden canjear más tarde por el depósito inicial más una parte de las tarifas de trading generadas por la actividad del grupo. Esencialmente, los tokens de liquidez sirven como prueba de propiedad o participación en un fondo de liquidez, lo que permite a los titulares obtener recompensas al tiempo que proporcionan la liquidez necesaria para que otros operen diferentes pares de criptomonedas de manera eficiente.",
+ "liquid-staking-tokens-term": "Tókenes de participación líquida",
+ "liquid-staking-tokens-definition": "Un token derivado que representa la propiedad de la criptomoneda bloqueada que un usuario está apostando. Al participar con un activo, algunas plataformas permiten la acuñación de tókenes de participación líquida (LST), que representan una parte equivalente de los tókenes bloqueados. Estos LST se pueden negociar, vender o utilizar en otros protocolos DeFi, mejorando la eficiencia del capital para el participante al permitir el acceso a la liquidez de sus fondos, incluso mientras sus activos originales permanecen en participación.",
"lmd-ghost-term": "LMD-GHOST",
"lmd-ghost-definition": "El algoritmo de elección de bifurcación utilizado por los clientes de consenso de Ethereum para identificar la cabeza de la cadena. LMD-GHOST es el acrónimo de \"Latest Message Driven Greediest Heaviest Observed Subtree\", lo que significa que la cabeza de la cadena es el bloque con la mayor acumulación de atestaciones en su historia.",
"mainnet-term": "Red principal",
@@ -239,7 +243,7 @@
"message-call-definition": "El acto de pasar un mensaje de una cuenta a otra. Si la cuenta de destino está asociada con código de EVM, la VM se iniciará con el estado de ese objeto y se actuará sobre el mensaje.",
"mev-term": "Valor máximo extraíble (MEV)",
"mev-definition": "El valor máximo que se puede extraer de la producción de bloques que exceda la recompensa de bloque estándar y las tarifas de gas al incluir, excluir y cambiar el orden de las transacciones en un bloque. Más información sobre el valor máximo extraíble (MEV).",
- "mining-term": "Minería",
+ "mining-term": "Minado",
"mining-definition": "El proceso de hashear repetidamente un encabezado de bloque mientras se incrementa un nonce hasta que el resultado contenga un número arbitrario de ceros binarios iniciales. Este es el proceso por el cual se añaden nuevos bloques a una cadena de bloques de prueba de trabajo. Así fue como se aseguró Ethereum antes de que pasara a la prueba de participación.",
"miner-term": "Minero",
"miner-definition": "Un nodo de red que encuentra prueba de trabajo válida para nuevos bloques mediante hash de paso repetido (ver Ethash). Los mineros ya no forman parte de Ethereum: fueron reemplazados por validadores cuando Ethereum pasó a prueba de participación.",
@@ -270,7 +274,7 @@
"peer-term": "Par",
"peer-definition": "Ordenadores conectados que ejecutan software cliente de Ethereum que tienen copias idénticas de la cadena de bloques.",
"peer-to-peer-network-term": "Red entre pares (o peer-to-peer)",
- "peer-to-peer-network-definition": "Una red de computadoras (pares) que pueden realizar funcionalidades colectivamente sin la necesidad de servicios centralizados basados en servidores. Esta configuración se utiliza a menudo para compartir archivos (por ejemplo, Bit torrent), información o monedas digitales, lo que permite intercambios más directos y potencialmente más eficientes entre los usuarios.",
+ "peer-to-peer-network-definition": "Una red de ordenadores (pares) que, de forma colectiva, son capaces de realizar funcionalidades sin necesidad de servicios centralizados basados en servidor. Esta configuración se usa a menudo para compartir archivos (es decir, BitTorrent), información o monedas digitales, permitiendo intercambios más directos y potencialmente más eficientes entre usuarios.",
"permissionless-term": "No hay permisos",
"permissionless-definition": "Sin permisos o significa que cualquiera puede unirse y utilizar un sistema como Ethereum. Está abierto a participación de todo el mundo y no requiere ninguna aprobación.",
"plasma-term": "Plasma",
@@ -296,14 +300,14 @@
"receipt-term": "Recibo",
"receipt-definition": "Datos que devuelve un cliente de Ethereum para representar el resultado de una transacción particular, que incluyen un hash de la transacción, su número de bloque, la cantidad de gas utilizado y, en caso de implementación de un contrato inteligente, la dirección del contrato.",
"recovery-phrase-term": "Frase semilla/frase de recuperación",
- "recovery-phrase-definition": "Una lista de palabras que recibe cuando crea una billetera digital. Actúa como una contraseña que puede ayudarle a recuperar su billetera en caso de perder el acceso a ella, asegurándose de que no pierda su dinero digital o sus tokens.",
+ "recovery-phrase-definition": "Una lista de palabras que recibes al crear una billetera digital. Funciona como una contraseña que te ayuda a recuperar el acceso a tu billetera si lo pierdes, garantizando que no pierdas tu dinero digital ni tus tokens.",
"re-entrancy-attack-term": "Ataque de reentrada",
"re-entrancy-attack-definition": "Un ataque que consiste en que un contrato atacante llama a una función de un contrato víctima, de tal forma que durante la ejecución la víctima vuelve a llamar al contrato atacante, reiteradamente. Esto puede ocasionar, por ejemplo, en el robo de fondos al saltarse partes del contrato víctima que actualizan saldos o recuentan importes de retiradaRE-Fascinación. Más información acerca de la reentrada.",
"reward-term": "Recompensa",
"reward-definition": "Una cantidad de ether otorgada a los validadores que realizan determinadas funciones, incluyendo proponer un bloque o participar en un comité de sincronización, en cada ranura.",
"rlp-term": "Prefijo de longitud recursiva (o PRL)",
"rlp-definition": "Un estándar de codificación diseñado por los desarrolladores de Ethereum para codificar y serializar objetos (estructura de datos) de complejidad y longitud arbitrarias.",
- "rollups-term": "Rollups",
+ "rollups-term": "Agrupaciones",
"rollups-definition": "Un tipo de solución de escalabilidad de capa 2 que agrupa múltiples transacciones y las envía a la cadena principal de Ethereum en una única transacción. Esto permite reducir los costos de gas y aumentar los rendimientos de transacción. Existen rollups Optimistas y de Zero-knowledge (Conocimiento cero), los cuales utilizan diferentes métodos de seguridad para ofrecer estas ganancias de escalabilidad. Más información sobre los rollups.",
"rpc-term": "Llamada de procedimiento remoto (RPC)",
"rpc-definition": "Las RPC permiten a una computadora solicitar datos o acciones a otra a través de una red, es como pedir información con un control remoto.",
@@ -331,13 +335,13 @@
"snark-definition": "Abreviatua de \"argumento sucinto no interactivo del conocimiento\", un SNARK es un tipo de prueba de conocimiento cero. Más sobre los rollups de conocimiento cero.",
"soft-fork-term": "Bifurcación suave",
"soft-fork-definition": "Una divergencia en una cadena de bloques que se produce cuando cambian las reglas de consenso. A diferencia de una bifurcación dura (o hard fork), una soft fork es compatible con versiones anteriores; los nodos actualizados pueden validar los bloques creados por nodos no actualizados, siempre y cuando sigan las nuevas reglas de consenso.",
- "solidity-term": "Solidity",
+ "solidity-term": "Solidez",
"solidity-definition": "Un lenguaje de programación procedimental (imperativo) con una sintaxis similar a JavaScript, C++ o Java. El lenguaje más popular y utilizado para contratos inteligentes de Ethereum. Creado por Gavin Wood. Más sobre Solidity.",
"solidity-inline-assembly-term": "Ensamblador en línea Solidity",
"solidity-inline-assembly-definition": "Lenguaje de ensamblado de la EVM en un programa de Solidity. El soporte de Solidity para el ensamblado en línea hace que sea más fácil escribir ciertas operaciones.",
"stablecoin-term": "Moneda estable",
"stablecoin-definition": "Una moneda estable, o stablecoin, es un tipo de criptomoneda diseñada para tener un valor estable, a menudo vinculado a una moneda o commodity (como el dólar estadounidense), para minimizar la volatilidad de los precios. Más sobre monedas estables.",
- "staking-term": "Participar (apostar)",
+ "staking-term": "Staking (apostar)",
"staking-definition": "Depositar una cantidad de ether (su participación) para convertirse en un validador y asegurar la red. Un validador comprueba transacciones y propone bloques bajo un modelo de consenso de prueba de participación. La participación, o staking, le da un incentivo económico para actuar en el mejor interés de la red. Obtendrá recompensas por llevar a cabo sus deberes de validador, pero perderá diferentes cantidades de ETH si no lo hace. Más sobre el staking en Ethereum.",
"staking-pool-term": "Reserva de participación",
"staking-pool-definition": "El ETH combinado de más de un participante de Ethereum, utilizado para alcanzar los 32 ETH necesarios para activar un conjunto de claves de validación. Un operador de nodo utiliza estas claves para participar en el consenso, y las recompensas de bloque se dividen entre los stakers contribuyentes. Los grupos de staking o la delegación de participación no son nativos del protocolo Ethereum, pero la comunidad ha creado muchas soluciones. Más sobre la participación agrupada.",
@@ -363,6 +367,8 @@
"testnet-definition": "Abreviatura de \"red de prueba\"; red utilizada para simular el comportamiento de la red principal de Ethereum.",
"token-term": "Token",
"token-definition": "Un bien virtual negociable definido en contratos inteligentes en la cadena de bloques Ethereum.",
+ "token-factory-term": "Fábrica de tokens",
+ "token-factory-definition": "Una fábrica de tokens es un smart contract que facilita la creación de tokens bajo un estándar específico, como ERC-20, ERC-721 o ERC-1155. El smart contract actúa como una plantilla, permitiendo a los usuarios desplegar nuevos tokens con parámetros personalizados como el nombre, símbolo, suministro y funcionalidades adicionales, sin necesidad de crear un nuevo smart contract desde cero.",
"transaction-term": "Transacción",
"transaction-definition": "Datos registrados a la cadena de bloques de Ethereum firmados por una cuenta de origen, dirigidos a una dirección específica. La transacción contiene metadatos como el límite de gas para esa transacción. Más sobre las transacciones.",
"transaction-fee-term": "Comisión de la transacción",
@@ -387,10 +393,12 @@
"wallet-definition": "Una billetera es una herramienta digital para almacenar, enviar y recibir moneda digital, como un monedero virtual para su dinero en línea. Más sobre las billeteras de Ethereum.",
"web2-term": "Web 2.0",
"web2-definition": "Es el Internet actual, centrado en el contenido generado por el usuario y las redes sociales que están controladas por pocas empresas. Web3 es una creencia cripto de que son los usuarios quienes deben controlar sus datos y transacciones.",
- "web3-term": "Web 3.0",
+ "web3-term": "Web3",
"web3-definition": "Web3 es la nueva Internet con cadena de bloques, donde los usuarios controlan sus datos y transacciones, no las empresas. No es necesario compartir ninguna información personal. Más sobre Web3.",
"wei-term": "Wei",
"wei-definition": "La denominación más pequeña de ether. 1018 wei = 1 ether.",
+ "wrapped-token-term": "Token envuelto",
+ "wrapped-token-definition": "Un token basado en una cadena de bloques que representa otra criptomoneda o activo en una red diferente. Por ejemplo, Wrapped Ether (WETH) representa Ether (ETH) en un formato que cumple con el estándar de tókenes ERC-20 de Ethereum. El activo original está bloqueado de forma segura por un contrato inteligente, y se emite un token envuelto equivalente. Este mecanismo permite la interoperabilidad entre y dentro de cadenas de bloques, permitiendo que activos como ETH pueden ser usados sin problema en aplicaciones descentralizadas a la vez que conservan su valor.",
"zero-address-term": "Dirección cero",
"zero-address-definition": "Una dirección de Ethereum, compuesta enteramente de ceros, que se utiliza con frecuencia como dirección para eliminar los tokens de la circulación de propiedad. Se hace una distinción entre los tokens eliminados formalmente del índice de un contrato inteligente a través del método burn() y los enviados a esta dirección.",
"zk-proof-term": "Prueba de conocimiento cero",
From 29ea210b3f36d49ee80c6119b55b2318e2122000 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:37 -0300
Subject: [PATCH 038/589] update(i18n): src/intl/es/learn-quizzes.json
---
src/intl/es/learn-quizzes.json | 533 ++++++++++++++++++++++-----------
1 file changed, 352 insertions(+), 181 deletions(-)
diff --git a/src/intl/es/learn-quizzes.json b/src/intl/es/learn-quizzes.json
index 40e77c5c89b..d85ba4338a4 100644
--- a/src/intl/es/learn-quizzes.json
+++ b/src/intl/es/learn-quizzes.json
@@ -11,7 +11,7 @@
"next-question": "Siguiente pregunta",
"next-quiz": "Siguiente cuestionario",
"question-number": "Pregunta número {{number}}:",
- "page-assets-merge": "La Fusión",
+ "page-assets-merge": "La fusión",
"passed": "¡Ha superado el cuestionario!",
"questions": "Preguntas",
"questions-answered": "Preguntas contestadas:",
@@ -29,11 +29,11 @@
"want-more-quizzes": "¿Quiere ver más cuestionarios aquí?",
"your-results": "Sus resultados",
"your-total": "Su puntuación total",
- "what-is-ethereum-1-prompt": "La gran diferencia entre Ethereum y Bitcoin es:",
- "what-is-ethereum-1-a-label": "Ethereum no le permite realizar pagos a otras personas",
- "what-is-ethereum-1-a-explanation": "Tanto Bitcoin como Ethereum le permiten realizar pagos a otras personas.",
+ "what-is-ethereum-1-prompt": "La mayor diferencia entre Ethereum y Bitcoin reside en que:",
+ "what-is-ethereum-1-a-label": "Ethereum no permite realizar pagos a otras personas",
+ "what-is-ethereum-1-a-explanation": "Tanto Bitcoin como Ethereum permiten realizar pagos a otras personas.",
"what-is-ethereum-1-b-label": "Puede ejecutar programas informáticos en Ethereum",
- "what-is-ethereum-1-b-explanation": "Ethereum es programable. Esto significa que puede establecer cualquier programa informático en la cadena de bloques Ethereum.",
+ "what-is-ethereum-1-b-explanation": "Ethereum es programable. Esto significa que puede ejecutar cualquier programa en la cadena de bloques Ethereum.",
"what-is-ethereum-1-c-label": "Puede ejecutar programas informáticos en Bitcoin",
"what-is-ethereum-1-c-explanation": "A diferencia de Ethereum, Bitcoin no es programable y tampoco puede ejecutar programas informáticos arbitrarios.",
"what-is-ethereum-1-d-label": "Tienen diferentes logotipos",
@@ -46,43 +46,43 @@
"what-is-ethereum-2-c-label": "Ethercoin",
"what-is-ethereum-2-c-explanation": "A diferencia de muchas otras criptomonedas, la criptomoneda nativa de Ethereum no contiene la palabra «coin».",
"what-is-ethereum-2-d-label": "Bitcoin",
- "what-is-ethereum-2-d-explanation": "Bitcoin (B mayúscula) fue la primera cadea de bloques creada, bitcoin (B minúscula) es su criptomoneda nativa.",
+ "what-is-ethereum-2-d-explanation": "Bitcoin (B mayúscula) fue la primera cadena de bloques creada, bitcoin (B minúscula) es su criptomoneda nativa.",
"what-is-ethereum-3-prompt": "¿Quién dirige Ethereum?",
"what-is-ethereum-3-a-label": "Desarrolladores",
"what-is-ethereum-3-a-explanation": "Los desarrolladores son cruciales para construir y mejorar Ethereum, aunque ellos no son el grupo que mantiene a Ethereum en marcha.",
"what-is-ethereum-3-b-label": "Mineros",
- "what-is-ethereum-3-b-explanation": "Desde que se produjo La Fusión, ya no se ha podido minar. Ya no hay «mineros» en Ethereum.",
+ "what-is-ethereum-3-b-explanation": "Desde que se produjo la Fusión, ya no se ha podido minar. Ya no hay «mineros» en Ethereum.",
"what-is-ethereum-3-c-label": "Ethereum Foundation",
"what-is-ethereum-3-c-explanation": "Ethereum Foundation no desempeña ningún papel significativo en el funcionamiento cotidiano de los nodos Ethereum.",
"what-is-ethereum-3-d-label": "Cualquiera que ejecute un nodo",
- "what-is-ethereum-3-d-explanation": "Cualquiera que ejecute un nodo es una parte crucial de la infraestructura de Ethereum. Si aún no lo ha hecho, considere ejecutar un nodo Ethereum.",
+ "what-is-ethereum-3-d-explanation": "Cualquiera que ejecute un nodo es una parte crucial de la infraestructura de Ethereum. Si aún no lo ha hecho, piense en ejecutar un nodo Ethereum.",
"what-is-ethereum-4-prompt": "Desde el lanzamiento de Ethereum, ¿cuántas veces ha estado la red fuera de línea?",
"what-is-ethereum-4-a-label": "Nunca",
+ "what-is-ethereum-4-a-explanation": "Ethereum nunca ha desaparecido completamente fuera de línea (dejó de producir bloques) desde su lanzamiento.",
"what-is-ethereum-4-b-label": "Una vez",
"what-is-ethereum-4-c-label": "Cuatro veces",
"what-is-ethereum-4-d-label": "Más de diez veces",
- "what-is-ethereum-4-explanation": "Ethereum nunca ha desaparecido completamente fuera de línea (dejó de producir bloques) desde su lanzamiento.",
"what-is-ethereum-5-prompt": "Ethereum consume más electricidad que:",
"what-is-ethereum-5-a-label": "Minería de oro",
- "what-is-ethereum-5-a-explanation": "La minería de oro utiliza ~131 teravarios/hora al año. Ethereum utiliza aproximadamente 0,0026 teravatios/hora al año.",
+ "what-is-ethereum-5-a-explanation": "La minería de oro utiliza ~131 teravatios-hora al año. Ethereum utiliza aproximadamente 0,0026 teravatios-hora al año.",
"what-is-ethereum-5-b-label": "Netflix",
- "what-is-ethereum-5-b-explanation": "Netflix utiliza ~0,451 teravarios/hora al año. Ethereum utiliza aproximadamente 0,0026 teravatios/hora al año.",
+ "what-is-ethereum-5-b-explanation": "Netflix utiliza ~0,451 teravatios-hora al año. Ethereum utiliza aproximadamente 0,0026 teravatios-hora al año.",
"what-is-ethereum-5-c-label": "PayPal",
- "what-is-ethereum-5-c-explanation": "Paypal utiliza ~0,26 teravarios/hora al año. Ethereum utiliza aproximadamente 0,0026 teravatios/hora al año.",
+ "what-is-ethereum-5-c-explanation": "PayPal utiliza ~0,26 teravatios-hora al año. Ethereum utiliza aproximadamente 0,0026 teravatios-hora al año.",
"what-is-ethereum-5-d-label": "Ninguna de las anteriores",
- "what-is-ethereum-5-d-explanation": "Ethereum utiliza aproximadamente 0,0026 teravatios/hora al año, menos que la minería de oro (~131 TWh/año), Netflix (~0,451 TWh/año) y Paypal (~0,26 TWh/año).",
- "what-is-ether-1-prompt": "El Ether también es conocido como:",
+ "what-is-ethereum-5-d-explanation": "Ethereum utiliza aproximadamente 0,0026 teravatios-hora al año. Menos que la minería de oro (~131 TWh/año), Netflix (~0,451 TWh/año) y PayPal (~0,26 TWh/año).",
+ "what-is-ether-1-prompt": "Al Ether también se le denomina:",
"what-is-ether-1-a-label": "ETC",
"what-is-ether-1-a-explanation": "ETC es el ticker de Ethereum Classic.",
"what-is-ether-1-b-label": "ETR",
- "what-is-ether-1-b-explanation": "ETR no es un ticker para ether o cualquier criptomoneda significativa.",
+ "what-is-ether-1-b-explanation": "ETR no es un indicador de ether o de cualquier criptomoneda significativa.",
"what-is-ether-1-c-label": "ETH",
- "what-is-ether-1-c-explanation": "ETH es el ticker para ether en Ethereum.",
+ "what-is-ether-1-c-explanation": "ETH es el indicador de ether en Ethereum.",
"what-is-ether-1-d-label": "BTC",
- "what-is-ether-1-d-explanation": "BTC es el ticker de bitcoin en la red Bitcoin.",
+ "what-is-ether-1-d-explanation": "BTC es el indicador de bitcoin en la red Bitcoin.",
"what-is-ether-2-prompt": "En Ethereum, las tarifas de red se pagan en:",
- "what-is-ether-2-a-label": "Bitcoin",
- "what-is-ether-2-a-explanation": "«bitcoin» en minúsculas es la criptomoneda nativa de la red Bitcoin.",
+ "what-is-ether-2-a-label": "bitcoin",
+ "what-is-ether-2-a-explanation": "El «bitcoin» en minúsculas es la criptomoneda nativa de la red Bitcoin.",
"what-is-ether-2-b-label": "ETH",
"what-is-ether-2-b-explanation": "Ether (ETH) es la criptomoneda nativa de Ethereum. Todas las tarifas de red en Ethereum se pagan en ETH.",
"what-is-ether-2-c-label": "USD",
@@ -90,18 +90,18 @@
"what-is-ether-2-d-label": "Ethereum",
"what-is-ether-2-d-explanation": "Ethereum es la red, pero las tarifas de la red de Ethereum se pagan en ETH.",
"what-is-ether-3-prompt": "Apostar en Ethereum ayuda a proteger la red, porque:",
- "what-is-ether-3-a-label": "Los participantes pueden prohibir a las personas si no les gusta lo que están haciendo",
+ "what-is-ether-3-a-label": "Los participantes pueden prohibir a las personas si no les gusta lo que están haciendo.",
"what-is-ether-3-a-explanation": "Los participantes no pueden censurar arbitrariamente a los usuarios.",
- "what-is-ether-3-b-label": "Si un participante intenta engañar a la red, corre el riesgo de perder su ETH",
+ "what-is-ether-3-b-label": "Si un participante intenta engañar a la red, corre el riesgo de perder su ETH.",
"what-is-ether-3-b-explanation": "Los participantes corren el riesgo de perder una cantidad significativa de sus ETH si se demuestra que se comportan malintencionadamente contra la red. Esto se conoce como un recorte.",
"what-is-ether-3-c-label": "Los participantes trabajan con potentes ordenadores para demostrar la prueba de trabajo.",
- "what-is-ether-3-c-explanation": "Los participantes no necesitan tener un hardware potente para apostar sus ETH. Ethereum dejó de usar la prueba de trabajo al producirse La Fusión.",
+ "what-is-ether-3-c-explanation": "Los participantes no necesitan tener un hardware potente para apostar sus ETH. Ethereum dejó de usar la prueba de trabajo al producirse la Fusión.",
"what-is-ether-3-d-label": "Los participantes se someten a KYC antes de ser aceptados como validadores",
"what-is-ether-3-d-explanation": "Apostar en Ethereum no tiene permisos y no requiere KYC.",
"what-is-ether-4-prompt": "ETH se puede utilizar para:",
- "what-is-ether-4-a-label": "Pago de tarifas de transacción en Ethereum",
+ "what-is-ether-4-a-label": "Pago de comisiones por transacción en Ethereum",
"what-is-ether-4-a-explanation": "Esta respuesta es parcialmente correcta, pero es solo una de las muchas cosas para las que se puede usar ETH.",
- "what-is-ether-4-b-label": "Pagos peer-to-peer no censurables",
+ "what-is-ether-4-b-label": "Pagos entre iguales no censurables",
"what-is-ether-4-b-explanation": "Esta respuesta es parcialmente correcta, pero es solo una de las muchas cosas para las que se puede usar ETH.",
"what-is-ether-4-c-label": "Garantía para préstamos criptográficos",
"what-is-ether-4-c-explanation": "Esta respuesta es parcialmente correcta, pero es solo una de las muchas cosas para las que se puede usar ETH.",
@@ -109,23 +109,23 @@
"what-is-ether-4-d-explanation": "Las transacciones de Ethereum no se pueden censurar, se necesitan ETH para realizar cualquier transacción en Ethereum, y son cruciales para la estabilidad del ecosistema DeFi.",
"web3-1-prompt": "Web3 permite a los usuarios poseer activos digitales a través de:",
"web3-1-a-label": "Tokens",
- "web3-1-a-explanation": "Los tokens proporcionan una forma de representar unidades de valor que son intercambiables entre sí, propiedad de una cuenta de Ethereum. Si bien representan la propiedad, hay más formas de poseer activos digitales en Ethereum.",
+ "web3-1-a-explanation": "Los tókenes proporcionan una forma de representar unidades de valor que son intercambiables entre sí, propiedad de una cuenta de Ethereum. Si bien representan la propiedad, hay más formas de poseer activos digitales en Ethereum.",
"web3-1-b-label": "NFT",
- "web3-1-b-explanation": "Los NFT (tokens no fungibles) proporcionan una forma de representar cualquier cosa única como un activo basado en Ethereum. Si bien representan la propiedad, hay más formas de poseer activos digitales en Ethereum.",
+ "web3-1-b-explanation": "Los NFT (tókenes no fungibles) proporcionan una forma de representar cualquier cosa única como un activo basado en Ethereum. Si bien representan la propiedad, hay más formas de poseer activos digitales en Ethereum.",
"web3-1-c-label": "ENS",
"web3-1-c-explanation": "ENS (Ethereum Name Service) es un servicio de nomenclatura descentralizado para la cadena de bloques de Ethereum. Si bien representan la propiedad, hay más formas de poseer activos digitales en Ethereum.",
"web3-1-d-label": "Todo lo anterior",
- "web3-1-d-explanation": "Todas las opciones proporcionan formas de poseer activos digitales en Ethereum. Tokens, NFT y ENS son formas de representar la propiedad de los activos digitales.",
- "web3-2-prompt": "Web1 era sólo de lectura, Web2 es de lectura y escritura, Web3 se ha descrito como:",
+ "web3-1-d-explanation": "Todas las opciones proporcionan formas de poseer activos digitales en Ethereum. Los tókenes, NFT y ENS son formas de representar la propiedad de los activos digitales.",
+ "web3-2-prompt": "Web1 era solo de lectura, Web2 es de lectura y escritura, Web3 se ha descrito como:",
"web3-2-a-label": "lectura-escritura-venta",
"web3-2-a-explanation": "Web3 no se ha descrito de esta manera.",
- "web3-2-b-label": "lectura-escritura-tienda",
+ "web3-2-b-label": "lectura-escritura-almacenamiento",
"web3-2-b-explanation": "Web3 no se ha descrito de esta manera.",
"web3-2-c-label": "lectura-escritura-propiedad",
- "web3-2-c-explanation": "Web3 permite a los usuarios poseer sus propios datos y, por lo tanto, se ha descrito como «lectura-escritura-propiedad», cualquier mejora en Web2, que es sólo «lectura de escritura».",
+ "web3-2-c-explanation": "La Web3 permite a los usuarios poseer sus propios datos y, por lo tanto, se ha descrito como «lectura-escritura-propiedad», lo que supone una mejora de Web2, que es solo «lectura-escritura».",
"web3-2-d-label": "lectura-escritura-compra",
"web3-2-d-explanation": "Web3 no se ha descrito de esta manera.",
- "web3-3-prompt": "¿Qué iteración de la web no depende de proveedores de pagos de terceros?",
+ "web3-3-prompt": "¿Qué versión de la web no depende de proveedores de pagos de terceros?",
"web3-3-a-label": "Web1",
"web3-3-a-explanation": "Web1 no tenía pagos nativos integrados.",
"web3-3-b-label": "Web 2.0",
@@ -136,49 +136,49 @@
"web3-3-d-explanation": "Web1 y Web2 no tienen pagos nativos integrados.",
"web3-4-prompt": "El término «Web3» fue acuñado por:",
"web3-4-a-label": "Gavin Wood",
- "web3-4-a-explanation": "Gavin Wood, cofundador de Ethereum, tiene el mérito de acuñar el término Web3 poco después del lanzamiento de Ethereum en 2015.",
+ "web3-4-a-explanation": "Gavin Wood, cofundador de Ethereum, tiene el mérito de haber acuñado el término Web3 poco después del lanzamiento de Ethereum en 2015.",
"web3-4-b-label": "Steve Jobs",
- "web3-4-b-explanation": "Steve Jobs no acuñó la frase «Web3».",
+ "web3-4-b-explanation": "Steve Jobs no acuñó el concepto «Web3».",
"web3-4-c-label": "Vitalik Buterin",
- "web3-4-c-explanation": "Vitalik Buterin, aunque el fundador original de Ethereum, no acuñó la frase «Web3».",
+ "web3-4-c-explanation": "Vitalik Buterin, aunque es el fundador original de Ethereum, no acuñó el término «Web3».",
"web3-4-d-label": "Elon Musk",
- "web3-4-d-explanation": "Elon Musk no acuñó la frase «Web3».",
- "web3-5-prompt": "Puede tener un único inicio de sesión resistente a la censura en toda la web a través del uso de:",
+ "web3-4-d-explanation": "Elon Musk no acuñó el término «Web3».",
+ "web3-5-prompt": "Puede tener un único inicio de sesión que sortee la censura en toda la web a través del uso de:",
"web3-5-a-label": "Iniciar sesión a través de Facebook",
- "web3-5-a-explanation": "Iniciar sesión con Facebook no es resistente a la censura.",
+ "web3-5-a-explanation": "Iniciar sesión con Facebook no sortea la censura.",
"web3-5-b-label": "Iniciar sesión con Google",
- "web3-5-b-explanation": "Iniciar sesión con Google no es resistente a la censura.",
+ "web3-5-b-explanation": "Iniciar sesión con Google no sortea la censura.",
"web3-5-c-label": "Iniciar sesión con Ethereum",
- "web3-5-c-explanation": "Iniciar sesión con Ethereum es la única opción resistente a la censura y utilizable en cualquier aplicación web.",
- "web3-5-d-label": "Iniciar sesión a través de Twitter",
- "web3-5-d-explanation": "Iniciar sesión con Twitter no es resistente a la censura.",
+ "web3-5-c-explanation": "Iniciar sesión con Ethereum es la única opción que sortea la censura y que se puede utilizar en cualquier aplicación web.",
+ "web3-5-d-label": "Iniciar sesión con Twitter",
+ "web3-5-d-explanation": "Iniciar sesión con Twitter no sortea la censura.",
"wallets-1-prompt": "El tipo de cartera más seguro es:",
"wallets-1-a-label": "Una cartera móvil",
"wallets-1-a-explanation": "Las carteras móviles mantienen claves privadas en un dispositivo móvil, que suele tener conexión a Internet y pueden verse comprometidas por otro software.",
"wallets-1-b-label": "Una cartera de hardware",
- "wallets-1-b-explanation": "Las claves privadas de una cartera de hardware se almacenan en un dispositivo dedicado que se puede mantener fuera de Internet y aisladas de otras aplicaciones de sus dispositivos.",
+ "wallets-1-b-explanation": "Las claves privadas de una cartera de hardware se almacenan en un dispositivo dedicado que se puede mantener fuera de internet y aislado de otras aplicaciones de sus dispositivos.",
"wallets-1-c-label": "Una cartera web",
- "wallets-1-c-explanation": "Las carteras web tienen menos seguridad que las carteras de hardware, porque las claves privadas se almacenan en un dispositivo conectado a Internet.",
+ "wallets-1-c-explanation": "Las carteras web tienen menos seguridad que las carteras de hardware, porque las claves privadas se almacenan en un dispositivo conectado a internet.",
"wallets-1-d-label": "Una cartera de escritorio",
- "wallets-1-d-explanation": "Las carteras de escritorio tienen claves privadas en el disco duro de un ordenador, que suele tener conexiones a Internet y se pueden ver comprometidas por otro software.",
- "wallets-2-prompt": "¿Cómo debería almacenar su frase semilla?",
+ "wallets-1-d-explanation": "Las carteras de escritorio tienen claves privadas en el disco duro de un ordenador, que suele tener conexiones a internet y se pueden ver comprometidas por otro software.",
+ "wallets-2-prompt": "¿Cómo debería almacenar su frase semilla (de recuperación)?",
"wallets-2-a-label": "En una foto en su teléfono",
"wallets-2-a-explanation": "Esta no es la opción más segura. Si esta foto se carga a un almacenamiento en la nube y un hacker la obtiene tendrá acceso a su cuenta.",
"wallets-2-b-label": "En un archivo en su ordenador",
- "wallets-2-b-explanation": "Esta no es la opción más segura, los hackers cada vez están más activos en la búsqueda de información relacionada con criptomonedas en dispositivos de destino. Si un hacker accede al archivo con su frase semilla, obtendrá acceso a su cuenta.",
+ "wallets-2-b-explanation": "Esta no es la opción más segura, los hackers cada vez están más activos en la búsqueda de información relacionada con criptomonedas en dispositivos de destino. Si un hacker accede al archivo con su frase semilla, tendrá acceso a su cuenta.",
"wallets-2-c-label": "En un mensaje de texto para un familiar de confianza",
"wallets-2-c-explanation": "Nunca debe enviar su frase de semilla a nadie. El mensaje podría ser interceptado por un tercero, e incluso si usted confía en esta persona absolutamente, no sabe quién podría acceder a su teléfono.",
"wallets-2-d-label": "Ninguna de las anteriores",
"wallets-2-d-explanation": "Su frase semilla debe almacenarse de manera segura, idealmente sin conexión. A menudo se recomienda escribirla en papel por esta razón, pero los administradores de contraseñas seguras son una buena alternativa.",
"wallets-3-prompt": "¿A quién debe dar su frase semilla / claves privadas?",
- "wallets-3-a-label": "Alguien a quien esté pagando",
+ "wallets-3-a-label": "A alguien a quien esté pagando",
"wallets-3-a-explanation": "Nunca debería dar su frase semilla o claves privadas a nadie. En su lugar, envíe tókenes a su dirección de cartera a través de una transacción.",
"wallets-3-b-label": "Para iniciar sesión en una DApp o cartera",
"wallets-3-b-explanation": "Nunca debe dar su frase semilla / claves privadas para iniciar sesión en su cartera o DApp.",
- "wallets-3-c-label": "Personal de apoyo",
+ "wallets-3-c-label": "Personal técnico",
"wallets-3-c-explanation": "Nunca debe dar su frase semilla / claves privadas a nadie que afirme ser personal de apoyo. Cualquiera que le pida o le pregunte por esto es un estafador.",
"wallets-3-d-label": "A nadie",
- "wallets-3-d-explanation": "Idóneamente, nunca debe dar su frase semilla o claves privadas a nadie. Si usted confía completamente en alguien con acceso absoluto a sus fondos (como un cónyuge), entonces usted puede optar por compartir esta información con ellos.",
+ "wallets-3-d-explanation": "Nunca debería dar su frase semilla o claves privadas a nadie. Si usted confía ciegamente en alguien con acceso absoluto a sus fondos (como un cónyuge), entonces puede optar por compartir esta información con ellos.",
"wallets-4-prompt": "Una cartera y una cuenta en Ethereum son lo mismo.",
"wallets-4-a-label": "Verdadero",
"wallets-4-a-explanation": "Una cartera es una interfaz visual usada para interactuar con una cuenta de Ethereum.",
@@ -193,7 +193,7 @@
"security-1-c-explanation": "Esta respuesta es correcta, pero también hay otras respuestas correctas.",
"security-1-d-label": "Todo lo anterior",
"security-1-d-explanation": "Todas las respuestas son correctas. Utilizar contraseñas únicas es la mejor manera de evitar que cualquier otra persona acceda a su cuenta.",
- "security-2-prompt": "Tras La Fusión, ETH debe actualizarse a ETH2.",
+ "security-2-prompt": "Tras la Fusión, ETH debe actualizarse a ETH2.",
"security-2-a-label": "Verdadero",
"security-2-a-explanation": "No necesita actualizar su ETH a ETH2. No hay ETH2 y este es un argumento que suelen utilizar los estafadores.",
"security-2-b-label": "Falso",
@@ -201,10 +201,10 @@
"security-3-prompt": "Las recompensas de ETH son:",
"security-3-a-label": "Una buena manera de conseguir más ETH",
"security-3-a-explanation": "Las recompensas de ETH son estafas diseñadas para robar sus ETH y otros tókenes. Nunca son una buena manera de obtener más ETH.",
- "security-3-b-label": "Siempre auténtico",
+ "security-3-b-label": "Siempre auténticas",
"security-3-b-explanation": "Las recompensas de ETH nunca son auténticas.",
- "security-3-c-label": "Comúnmente realizado por destacados miembros de la comunidad",
- "security-3-c-explanation": "Los miembros prominentes de la comunidad no dan recompensas de ETH. Los estafadores fingen ser individuos bien conocidos, como Elon Musk, y hacen regalos para darle a la estafa una sensación de legitimidad.",
+ "security-3-c-label": "Suelen darlas destacados miembros de la comunidad",
+ "security-3-c-explanation": "Los miembros destacados de la comunidad no dan recompensas de ETH. Los estafadores fingen ser individuos bien conocidos, como Elon Musk, y hacen regalos para darle a la estafa una sensación de legitimidad.",
"security-3-d-label": "Es muy probable que sea una estafa",
"security-3-d-explanation": "Las recompensas de ETH siempre son estafas. Informar e ignorar a los estafadores es lo mejor.",
"security-4-prompt": "Las transacciones en Ethereum son reversibles.",
@@ -212,13 +212,13 @@
"security-4-a-explanation": "Las transacciones en Ethereum no pueden revertirse. Cualquiera que le diga lo contrario puede estar intentando estafarle.",
"security-4-b-label": "Falso",
"security-4-b-explanation": "Las transacciones en Ethereum no pueden revertirse. Cualquiera que le diga lo contrario puede estar intentando estafarle.",
- "nfts-1-prompt": "Los NFT se definidos más ampliamente como:",
+ "nfts-1-prompt": "Los NFT se definen en sentido más amplio como:",
"nfts-1-a-label": "activos digitales únicos",
"nfts-1-a-explanation": "Los NFT representan un activo digital único.",
"nfts-1-b-label": "arte digital",
- "nfts-1-b-explanation": "Los NFT representan un activo digital único, este es comúnmente obra de arte digital, pero no se limita al arte.",
- "nfts-1-c-label": "entradas para eventos exclusivos",
- "nfts-1-c-explanation": "Los NFT representan un activo digital único, este podría ser un sistema de venta de entradas pero no se limita a las entradas.",
+ "nfts-1-b-explanation": "Los NFT representan un activo digital único, que suele ser una obra de arte digital, pero no se limita al arte.",
+ "nfts-1-c-label": "entradas a eventos exclusivos",
+ "nfts-1-c-explanation": "Los NFT representan un activo digital único, este podría ser un sistema de venta de entradas, pero no se limita a las entradas.",
"nfts-1-d-label": "contratos legalmente vinculantes",
"nfts-1-d-explanation": "Aunque un contrato legal podría estar representado como un NFT, los NFT no son exclusivos de contratos legalmente vinculantes.",
"nfts-2-prompt": "Dos NFT que representan la misma obra son la misma cosa.",
@@ -230,39 +230,39 @@
"nfts-3-a-label": "La contraseña de su cartera",
"nfts-3-a-explanation": "Se trata de un riesgo para la seguridad y, en general, una mala idea.",
"nfts-3-b-label": "Propiedad de un elemento digital único",
- "nfts-3-b-explanation": "Los NFT comúnmente representan la propiedad de un elemento digital único.",
+ "nfts-3-b-explanation": "Los NFT suelen representar la propiedad de un elemento digital único.",
"nfts-3-c-label": "Su saldo actual de ETH",
- "nfts-3-c-explanation": "Los NFT no pueden representar su balance ETH arbitrariamente.",
+ "nfts-3-c-explanation": "Los NFT no pueden representar su saldo de ETH arbitrariamente.",
"nfts-3-d-label": "Todo lo anterior",
- "nfts-3-d-explanation": "Los NFT comúnmente representan la propiedad de un elemento digital único, no los saldos de ETH o contraseñas de cartera.",
+ "nfts-3-d-explanation": "Los NFT suelen representar la propiedad de un elemento digital único, no los saldos de ETH o contraseñas de cartera.",
"nfts-4-prompt": "Los NFT han ayudado a crear una nueva:",
- "nfts-4-a-label": "economía del curador",
- "nfts-4-a-explanation": "Los NFT ayudaron a crear una nueva economía para los creadores, no para los curadores.",
+ "nfts-4-a-label": "economía del selector",
+ "nfts-4-a-explanation": "Los NFT ayudaron a crear una nueva economía para los creadores, no para los selectores.",
"nfts-4-b-label": "ahorro de carbono",
"nfts-4-b-explanation": "Los NFT ayudaron a generar un nuevo ahorro para los creadores, no para el carbono.",
"nfts-4-c-label": "ahorro del creador",
"nfts-4-c-explanation": "Los NFT ayudaron a generar ahorro para el creador.",
"nfts-4-d-label": "ahorro del doge",
- "nfts-4-d-explanation": "Los NFT ayudaron a generar un ahorro para los creadores, no doges🐶.",
- "nfts-5-prompt": "Los NFT en Ethereum son perjudiciales para el medio ambiente",
+ "nfts-4-d-explanation": "Los NFT ayudaron a generar un ahorro para los creadores, no para los doges🐶.",
+ "nfts-5-prompt": "Los NFT en Ethereum son perjudiciales para el medioambiente",
"nfts-5-a-label": "Verdadero",
- "nfts-5-a-explanation": "Desde La Fusión (transición para prueba de participación), cualquier transacción ha sido un impacto desmesurado en el medio ambiente.",
+ "nfts-5-a-explanation": "Desde la Fusión (transición para prueba de participación), cualquier transacción ha tenido un impacto desmesurado en el medioambiente.",
"nfts-5-b-label": "Falso",
- "nfts-5-b-explanation": "Desde La Fusión (transición para prueba de participación), cualquier transacción ha sido un impacto desmesurado en el medio ambiente.",
+ "nfts-5-b-explanation": "Desde la Fusión (transición para prueba de participación), cualquier transacción ha tenido un impacto desmesurado en el medioambiente.",
"rollups-1-prompt": "Las redes de cadena de bloques de capa 2 son para:",
"rollups-1-a-label": "Escalar en Ethereum",
- "rollups-1-a-explanation": "El propósito principal de las acumulaciones y otras soluciones de capa 2 es para proporcionar escalabilidad en Ethereum.",
+ "rollups-1-a-explanation": "El propósito principal de los rollups y de otras soluciones de capa 2 es proporcionar escalabilidad en Ethereum.",
"rollups-1-b-label": "Hacer pagos",
- "rollups-1-b-explanation": "El propósito principal de las acumulaciones y otras soluciones de capa 2 es para proporcionar escalabilidad en Ethereum.",
+ "rollups-1-b-explanation": "El propósito principal de los rollups y de otras soluciones de capa 2 es proporcionar escalabilidad en Ethereum.",
"rollups-1-c-label": "Comprar NFT",
- "rollups-1-c-explanation": "El propósito principal de las acumulaciones y otras soluciones de capa 2 es para proporcionar escalabilidad en Ethereum.",
+ "rollups-1-c-explanation": "El propósito principal de los rollups y de otras soluciones de capa 2 es proporcionar escalabilidad en Ethereum.",
"rollups-1-d-label": "Descentralizar Ethereum",
- "rollups-1-d-explanation": "El propósito principal de las acumulaciones y otras soluciones de capa 2 es para proporcionar escalabilidad en Ethereum.",
- "rollups-2-prompt": "Para escalar, la mayoría de las redes de capa 1 alternativas han sacrificado primordialmente en:",
+ "rollups-1-d-explanation": "El propósito principal de los rollups y de otras soluciones de capa 2 es proporcionar escalabilidad en Ethereum.",
+ "rollups-2-prompt": "Para escalar, la mayoría de las redes de capa 1 alternativas han sacrificado principalmente:",
"rollups-2-a-label": "Seguridad",
- "rollups-2-a-explanation": "Con la finalidad de escalar, la mayoría de las redes alternativas de capa 1 sacrifican en seguridad y algo más.",
+ "rollups-2-a-explanation": "Con la finalidad de escalar, la mayoría de las redes alternativas de capa 1 sacrifican la seguridad, entre otras cosas.",
"rollups-2-b-label": "Descentralización",
- "rollups-2-b-explanation": "Con la finalidad de escalar, la mayoría de las redes alternativas de capa 1 sacrifican la descentralización y algo más.",
+ "rollups-2-b-explanation": "Con la finalidad de escalar, la mayoría de las redes alternativas de capa 1 sacrifican la descentralización, entre otras cosas.",
"rollups-2-c-label": "Precio del token",
"rollups-2-c-explanation": "El precio del token no tiene ningún impacto en la capacidad de escalabilidad.",
"rollups-2-d-label": "Seguridad y descentralización",
@@ -270,24 +270,24 @@
"rollups-3-prompt": "¿Cuál de las siguientes opciones no se consideran capa 2?",
"rollups-3-a-label": "Validiums",
"rollups-3-a-explanation": "Los validiums no se consideran soluciones de capa 2, ya que no derivan la seguridad o la disponibilidad de datos de Ethereum. Esta no es la única respuesta correcta.",
- "rollups-3-b-label": "Cadenas laterales",
+ "rollups-3-b-label": "Sidechains",
"rollups-3-b-explanation": "Las cadenas laterales no se consideran soluciones de capa 2, ya que no derivan la seguridad o la disponibilidad de datos de Ethereum. Esta no es la única respuesta correcta.",
- "rollups-3-c-label": "Las cadenas alternativas de bloques de capa 1",
- "rollups-3-c-explanation": "Las cadenas de bloques alternativas de capa 1 no se consideran soluciones de capa 2. Esta no es la única respuesta correcta.",
+ "rollups-3-c-label": "Las cadenas de bloques de capa 1 alternativas",
+ "rollups-3-c-explanation": "Las cadenas de bloques de capa 1 alternativas no se consideran soluciones de capa 2. Esta no es la única respuesta correcta.",
"rollups-3-d-label": "Todo lo anterior",
- "rollups-3-d-explanation": "Los Validium, las cadenas laterales y las cadenas de bloques de capa 1 alternativas no se consideran soluciones de capa 2 ya que no derivan de la seguridad o disponibilidad de datos de Ethereum.",
+ "rollups-3-d-explanation": "Los validiums, las cadenas laterales y las cadenas de bloques de capa 1 alternativas no se consideran soluciones de capa 2 ya que no derivan de la seguridad o disponibilidad de datos de Ethereum.",
"rollups-4-prompt": "¿Por qué Ethereum no tiene una capa 2 «oficial»?",
"rollups-4-a-label": "Los desarrolladores principales están demasiado ocupados trabajando en Ethereum",
"rollups-4-a-explanation": "No hay planes para una capa 2 «oficial» en Ethereum, ya que nos beneficiaremos de una amplia variedad de enfoques para diseñar soluciones de capa 2.",
- "rollups-4-b-label": "Como un L1, Ethereum eventualmente alcanzará una escalabilidad masiva por su cuenta.",
+ "rollups-4-b-label": "Como L1, Ethereum eventualmente alcanzará una escalabilidad masiva por su cuenta",
"rollups-4-b-explanation": "No hay planes para una capa 2 «oficial» en Ethereum, ya que nos beneficiaremos de una amplia variedad de enfoques para diseñar soluciones de capa 2.",
- "rollups-4-c-label": "Los desarrolladores principales todavía están debatiendo entre los programas optimistas y acumulaciones-zk",
+ "rollups-4-c-label": "Los desarrolladores principales todavía están debatiendo entre los programas optimistas y los rollups-zk",
"rollups-4-c-explanation": "No hay planes para una capa 2 «oficial» en Ethereum, ya que nos beneficiaremos de una amplia variedad de enfoques para diseñar soluciones de capa 2.",
"rollups-4-d-label": "Ethereum se beneficiará de una amplia variedad de enfoques para diseñar un L2",
"rollups-4-d-explanation": "No hay planes para una capa 2 «oficial» en Ethereum, ya que nos beneficiaremos de una amplia variedad de enfoques para diseñar soluciones de capa 2.",
"merge-1-prompt": "La Fusión trasladó a Ethereum ¿a qué mecanismo de consenso?",
"merge-1-a-label": "Prueba de trabajo",
- "merge-1-a-explanation": "La prueba de trabajo fue el mecanismo de consenso utilizado antes de La Fusión.",
+ "merge-1-a-explanation": "La prueba de trabajo era el mecanismo de consenso que se utilizabaantes de la Fusión.",
"merge-1-b-label": "Prueba de participación",
"merge-1-b-explanation": "¡Correcto! La Fusión tralsado a Ethereum a la prueba de participación.",
"merge-1-c-label": "Prueba de autoridad",
@@ -303,34 +303,79 @@
"merge-2-c-explanation": "El consumo de energía de Ethereum se redujo un 99,95 % después de que La Fusión permitiera la transición de la prueba de trabajo a la prueba de participación.",
"merge-2-d-label": "99,95 %",
"merge-2-d-explanation": "El consumo de energía de Ethereum se redujo un 99,95 % después de que La Fusión permitiera la transición de la prueba de trabajo a la prueba de participación.",
- "merge-3-prompt": "¿Cuándo se produjo La Fusión?",
+ "merge-3-prompt": "¿Cuándo se produjo la Fusión?",
"merge-3-a-label": "15 de septiembre de 2022",
"merge-3-a-explanation": "La Fusión se produjo el 15 de septiembre de 2022 a las 06:42:42 AM (UTC).",
"merge-3-b-label": "1 de diciembre de 2020",
- "merge-3-b-explanation": "La Fusión se produjo más tarde. El 1 de diciembre de 2020 fue cuando se lanzó la Cadena de Baliza.",
+ "merge-3-b-explanation": "La Fusión se produjo más tarde. El 1 de diciembre de 2020 fue cuando se lanzó la cadena de baliza.",
"merge-3-c-label": "27 de noviembre de 2013",
"merge-3-c-explanation": "La Fusión se produjo más tarde, el 27 de noviembre de 2013 fue cuando se lanzó el informe de Ethereum.",
"merge-3-d-label": "31 de octubre de 2008",
"merge-3-d-explanation": "La Fusión se produjo más tarde. El 31 de octubre es el día en que se lanzó el informe de Bitcoin.",
"merge-4-prompt": "La Fusión significó que los usuarios tuvieron que cambiar su ETH por ETH2:",
"merge-4-a-label": "Verdadero",
- "merge-4-a-explanation": "ETH no cambió en ningún momento antes, durante o después de La Fusión. La idea de «mejorar» a ETH a ETH2 era una táctica común de actores maliciosos para estafar a los usuarios.",
+ "merge-4-a-explanation": "ETH no cambió en ningún momento antes, durante o después de la Fusión. La idea de «mejorar» a ETH a ETH2 era una táctica común de actores maliciosos para estafar a los usuarios.",
"merge-4-b-label": "Falso",
- "merge-4-b-explanation": "ETH no cambió en ningún momento antes, durante o después de La Fusión. La idea de «mejorar» a ETH a ETH2 era una táctica común de actores maliciosos para estafar a los usuarios.",
+ "merge-4-b-explanation": "ETH no cambió en ningún momento antes, durante o después de la Fusión. La idea de «mejorar» a ETH a ETH2 era una táctica común de actores maliciosos para estafar a los usuarios.",
"merge-5-prompt": "La capa de consenso de Ethereum era antes conocida como:",
"merge-5-a-label": "Prueba de trabajo",
- "merge-5-a-explanation": "La prueba de trabajo fue el mecanismo de consenso utilizado antes de La Fusión.",
+ "merge-5-a-explanation": "La prueba de trabajo era el mecanismo de consenso que se utilizabaantes de la Fusión.",
"merge-5-b-label": "Eth2",
"merge-5-b-explanation": "Antes de recibir otro nombre, la capa de consenso originariamente se llamaba «Eth2».",
"merge-5-c-label": "Eth1",
"merge-5-c-explanation": "Eth1 era el nombre original dado a la capa de ejecución, no a la capa de consenso.",
"merge-5-d-label": "Participar (apostar)",
"merge-5-d-explanation": "Apostar es depositar ETH en un contrato inteligente para ayudar a proteger la cadena.",
+ "gas-1-prompt": "¿Qué son las tarifas de gas?",
+ "gas-1-a-label": "Una tarifa asociada con transacciones y operaciones de contratos inteligentes",
+ "gas-1-a-explanation": "Parcialmente correcto, las tarifas de gas representan el coste de transacciones y operaciones de contratos inteligentes.",
+ "gas-1-b-label": "La cantidad de gas usada para realizar una operación, multiplicada por el coste por unidad de gas",
+ "gas-1-b-explanation": "Parcialmente correcto. Aunque es cierto, no es la mejor respuesta de las opciones disponibles.",
+ "gas-1-c-label": "Un pago que incluye una tarifa de prioridad para potencialmente acelerar el procesamiento de la transacción",
+ "gas-1-c-explanation": "Parcialmente correcto, el total de tarifas de gas incluye una tarifa base y una tarifa de prioridad que puede influir en la velocidad de procesamiento de la transacción.",
+ "gas-1-d-label": "Todo lo anterior",
+ "gas-1-d-explanation": "Las tarifas de gas abarcan todos estos aspectos: retribuyen el coste computacional, son aplicadas tanto en transacciones como en contratos inteligentes y pueden incluir tarifas de prioridad para una inclusión más rápida.",
+ "gas-2-prompt": "¿Cuál de las siguientes es la estrategia MENOS efectiva para reducir el coste de gas?",
+ "gas-2-a-label": "Ejecutar transacciones durante periodos de poca congestión.",
+ "gas-2-a-explanation": "Realizar las transacciones en las horas de menor actividad puede reducir los costes de gas.",
+ "gas-2-b-label": "Esperar a que los precios de gas bajen",
+ "gas-2-b-explanation": "Esperar a que los precios de gas bajen es una estrategia válida, pues el gas fluctúa según la congestión.",
+ "gas-2-c-label": "Usar cadenas de capa 2 para pagar tarifas más bajas",
+ "gas-2-c-explanation": "Las soluciones de capa 2 reducen las tarifas y son una forma eficaz de gastar menos gas.",
+ "gas-2-d-label": "Usar una lógica compleja de contratos inteligentes que aumente los requisitos computacionales",
+ "gas-2-d-explanation": "Una lógica de contratos inteligentes compleja aumenta los costes de gas al requerir una mayor computación. Un diseño eficiente minimiza los pasos, el almacenamiento y las operaciones redundantes para reducir las tarifas.",
+ "gas-3-prompt": "¿Qué hace que las tarifas de gas sean altas?",
+ "gas-3-a-label": "La computación de la red que excede un umbral específico",
+ "gas-3-a-explanation": "Cuando la computación en Ethereum excede un límite, las tarifas de gas aumentan, especialmente durante periodos de gran actividad como DApps o distribuciones de NFT.",
+ "gas-3-b-label": "Validadores que aumentan la tarifa base manualmente",
+ "gas-3-b-explanation": "Los validadores no fijan manualmente la tarifas base; las ajusta el protocolo según la demanda en el bloque anterior.",
+ "gas-3-c-label": "Contratos inteligentes bien escritos y optimizados",
+ "gas-3-c-explanation": "Una lógica de contratos inteligentes bien programada como el uso eficiente de almacenamiento y bucles puede resultar en un menor consumo de gas.",
+ "gas-3-d-label": "Una falta de ETH disponible en la red",
+ "gas-3-d-explanation": "Las tarifas de gas no se ven afectadas por la cantidad de ETH disponible en la red.",
+ "gas-4-prompt": "¿Cómo las tarifas de gas ayudan a mantener Ethereum seguro?",
+ "gas-4-a-label": "Al incentivar a los validadores a actuar con honestidad",
+ "gas-4-a-explanation": "Los validadores se recompensan de varias maneras, pero las tarifas de gas principalmente evitan el contenido basura y el uso excesivo de recursos.",
+ "gas-4-b-label": "Al evitar el contenido basura y las actividades maliciosas mediante costes financieros",
+ "gas-4-b-explanation": "Las tarifas de gas hacen que el contenido basura y las actividades maliciosas sean caras, lo que evita el abuso y ayuda a mantener la estabilidad de la red.",
+ "gas-4-c-label": "Al garantizar que las transacciones se procesen en orden de prioridad",
+ "gas-4-c-explanation": "La prioridad se puede determinan por la propina, no por las tarifas de gas en sí.",
+ "gas-4-d-label": "Al aumentar la cantidad total de ETH en circulación",
+ "gas-4-d-explanation": "La tarifa base (parte de la tarifa de gas total) se quema, lo que reduce el ETH en circulación, no lo aumenta",
+ "gas-5-prompt": "¿Cómo se calculan las tarifas de gas?",
+ "gas-5-a-label": "Precio de gas x tamaño de transacción",
+ "gas-5-a-explanation": "Las tarifas de gas se basan en la computación, no en el tamaño de transacción.",
+ "gas-5-b-label": "Unidades de gas usadas x (tarifa base + tarifa de prioridad)",
+ "gas-5-b-explanation": "Las tarifas de gas se determinan usando la siguiente fórmula: unidades de gas utilizadas x (tarifa base + tarifa de prioridad).",
+ "gas-5-c-label": "Tamaño de bloque x límite de propina del validador",
+ "gas-5-c-explanation": "El tamaño de bloque no afecta directamente a esta fórmula.",
+ "gas-5-d-label": "Tarifa base + tarifa de prioridad + propina",
+ "gas-5-d-explanation": "La tarifa base y la tarifa de prioridad forman parte de la fórmula; la propina es la tarifa de prioridad.",
"daos-1-prompt": "¿Qué afirmaciones son ciertas sobre las DAO?",
- "daos-1-a-label": "Los DAO son de propiedad colectiva a través de tokens de gobernanza.",
- "daos-1-a-explanation": "Los DAO son de propiedad colectiva, pero esa no es la única declaración correcta.",
- "daos-1-b-label": "Son gobernadas por sus miembros.",
- "daos-1-b-explanation": "Las DAO están gobernadas por sus miembros, pero esa no es la única afirmación correcta.",
+ "daos-1-a-label": "Las DAO son de propiedad colectiva a través de tókenes de gobernanza.",
+ "daos-1-a-explanation": "Las DAO son de propiedad colectiva, pero esa no es la única declaración correcta.",
+ "daos-1-b-label": "Las gobiernan sus miembros.",
+ "daos-1-b-explanation": "Las DAO las gobiernan sus miembros, pero esa no es la única afirmación correcta.",
"daos-1-c-label": "Trabajan para lograr una misión compartida.",
"daos-1-c-explanation": "Las DAO trabajan para lograr una misión compartida, pero esa no es la única afirmación correcta.",
"daos-1-d-label": "Todo lo anterior",
@@ -339,23 +384,23 @@
"daos-2-a-label": "Protocolos descentralizados, los miembros votan sobre los asuntos del protocolo o cómo desarrollar el producto",
"daos-2-a-explanation": "Las DAO de protocolo son un ejemplo, pero las DAO no se limitan a eso.",
"daos-2-b-label": "Propiedad colectiva, por ejemplo, para NFT o activos físicos",
- "daos-2-b-explanation": "Las DAO de coleccionista son un ejemplo, pero las DAO no se limitan a eso.",
+ "daos-2-b-explanation": "Las DAO de coleccionista son un ejemplo, aunque las DAO no se limitan exclusivamente a eso.",
"daos-2-c-label": "Emprendimientos y subvenciones, juntar capital y votar sobre proyectos para financiar",
- "daos-2-c-explanation": "Las DAO de emprendimientos o subvenciones son un ejemplo, pero las DAO no se limitan a eso.",
+ "daos-2-c-explanation": "Las DAO de emprendimientos o subvenciones son un ejemplo, aunque las DAO no se limitan exclusivamente a eso.",
"daos-2-d-label": "Todo lo anterior",
- "daos-2-d-explanation": "Una DAO puede tener varias \"misiones\".",
+ "daos-2-d-explanation": "Una DAO puede tener varias «misiones».",
"daos-3-prompt": "A diferencia de las organizaciones tradicionales, las DAO son…",
"daos-3-a-label": "Por lo general, jerárquicas",
"daos-3-a-explanation": "Las DAO suelen ser planas y están totalmente democratizadas.",
- "daos-3-b-label": "Transparentes y totalmente públicas acerca de sus actividades",
+ "daos-3-b-label": "Son transparentes y totalmente públicas acerca de sus actividades",
"daos-3-b-explanation": "Gracias a la votación en cadena, las decisiones son transparentes en la cadena de bloques. Los debates y otros elementos del proceso de toma de decisiones están abiertos a todos los miembros.",
"daos-3-c-label": "Controladas por una entidad central",
"daos-3-c-explanation": "Los cambios requieren el voto de los miembros. Los servicios ofrecidos se gestionan automáticamente de forma descentralizada.",
"daos-3-d-label": "Restringidas en cuanto a quién puede sugerir cambios",
"daos-3-d-explanation": "Normalmente, todos los miembros de la DAO pueden sugerir cambios.",
"daos-4-prompt": "¿Qué es lo esencial acerca de los contratos inteligentes para las DAO?",
- "daos-4-a-label": "El código del contrato inteligente puede ser modificado",
- "daos-4-a-explanation": "Una vez que el contrato está activo en Ethereum, nadie puede cambiar las reglas excepto por votación. Esto permite a la DAO funcionar según las reglas con las que fue programada.",
+ "daos-4-a-label": "El código del contrato inteligente puede modificarse",
+ "daos-4-a-explanation": "Una vez que el contrato está activo en Ethereum, nadie puede cambiar las reglas excepto por votación. Esto permite a la DAO funcionar según las reglas para las que ha sido programada.",
"daos-4-b-label": "Tiene un propietario individual quien conserva la autoridad para hacer cambios y enviar desde la tesorería.",
"daos-4-b-explanation": "La tesorería está definida por el contrato inteligente. Para gastar dinero, se necesita la aprobación del grupo.",
"daos-4-c-label": "Confiar en el consenso distribuido de la cadena de bloques subyacente",
@@ -364,113 +409,113 @@
"daos-4-d-explanation": "La columna vertebral de una DAO son los contratos inteligentes, que definen las reglas de la organización y la forma de administrar los activos del grupo.",
"daos-5-prompt": "¿Cuál no es un mecanismo para gobiernar una DAO?",
"daos-5-a-label": "Membresía basada en tokens",
- "daos-5-a-explanation": "La gobernanza basada en tokens es ampliamente utilizada. Suele ser del todo sin restricciones y, en general, se usa para gobernar protocolos descentralizados y/o los propios tokens.",
+ "daos-5-a-explanation": "La gobernanza basada en tokens es ampliamente utilizada. Suele ser sin permiso y, en general, se usa para gobernar protocolos descentralizados y/o los propios tókenes.",
"daos-5-b-label": "Membresía basada en participación",
- "daos-5-b-explanation": "Las DAO basadas en participación hacen más uso de los permisos, pero siguen siendo bastante abiertas. Cualquier posible miembro puede presentar una propuesta para unirse a la DAO, por lo general ofreciendo un tributo de algún valor en forma de tokens o trabajo.",
+ "daos-5-b-explanation": "Las DAO basadas en la participación hacen más uso de los permisos, pero siguen siendo bastante abiertas. Cualquier posible miembro puede presentar una propuesta para unirse a la DAO, por lo general ofreciendo un tributo de algún valor en forma de tókenes o trabajo.",
"daos-5-c-label": "Membresía basada en la reputación",
- "daos-5-c-explanation": "A diferencia de la membresía basada en tokens o participación, las DAO basadas en la reputación no transfieren la propiedad a los contribuyentes. Los miembros de la DAO deben ganarse la reputación a través de la participación.",
+ "daos-5-c-explanation": "A diferencia de la inscripción basada en tólenes o participación, las DAO basadas en la reputación no transfieren la propiedad a los contribuyentes. Los miembros de la DAO deben ganarse la reputación a través de la participación.",
"daos-5-d-label": "Junta ejecutiva y gestión de tesorería fuera de la cadena",
"daos-5-d-explanation": "Este enfoque utiliza mecanismos de gobierno altamente centralizados y poco transparentes. Por el contrario, las DAO utilizan mecanismos de votación verificables y la gestión de la tesorería en cadena para garantizar la transparencia y la rendición de cuentas.",
- "staking-solo-1-prompt": "¿Qué es verdadero acerca del slashing?",
+ "staking-solo-1-prompt": "¿Qué es verdadero acerca de los recortes?",
"staking-solo-1-a-label": "Sanción por estar desconectado, las recompensas se reanudan al volver a conectarse",
- "staking-solo-1-a-explanation": "Estar fuera de línea NO da lugar a slashing. Se incurre en pequeñas sanciones por estar fuera de línea, y las recompensas se reanudan cuando el validador vuelve a conectarse y reanuda las atestaciones.",
+ "staking-solo-1-a-explanation": "Estar fuera de línea NO da lugar a recortes. Se incurre en pequeñas sanciones por estar fuera de línea, y las recompensas se reanudan cuando el validador vuelve a conectarse y reanuda las certficaciones.",
"staking-solo-1-b-label": "Sanción por estar fuera de línea, al validador se le prohíbe inmediatamente certificar de nuevo",
- "staking-solo-1-b-explanation": "Estar fuera de línea NO da lugar al slashing. Si bien el slashing dará lugar a que al validador se le prohíba certificar de nuevo y, en última instancia, es expulsado a la fuerza, estar fuera de línea NO resultará en la expulsión de la red.",
- "staking-solo-1-c-label": "Sanción por romper reglas de consenso específicas, las recompensas se reanudan después del slashing",
- "staking-solo-1-c-explanation": "Slashing (o recorte) es una penalización grave por romper reglas de consenso específicas que representan una amenaza para la red. Como tal, una vez que se slashea a un validador, se le prohíbe inmediatamente continuar certificando y en última instancia es expulsado a la fuerza de la red y el ETH restante se envía al propietario.",
+ "staking-solo-1-b-explanation": "Estar fuera de línea NO da lugar a recortes. Si bien el recorte dará lugar a que al validador se le prohíba certificar de nuevo y, en última instancia, es expulsado a la fuerza, estar fuera de línea NO resultará en la expulsión de la red.",
+ "staking-solo-1-c-label": "Sanción por romper reglas de consenso específicas, las recompensas se reanudan después del recorte",
+ "staking-solo-1-c-explanation": "Slashing (o recorte) es una penalización grave por romper reglas de consenso específicas que representan una amenaza para la red. Como tal, una vez que se recorta a un validador, se le prohíbe inmediatamente continuar certificando y en última instancia se le expulsa a la fuerza de la red y el ETH restante se envía al propietario.",
"staking-solo-1-d-label": "Sanción por infringir reglas de consenso específicas, al validador se le prohíbe inmediatamente certificar de nuevo",
- "staking-solo-1-d-explanation": "Slashing (o recorte) es una penalización grave por romper reglas de consenso específicas que representan una amenaza para la red. Como tal, una vez que se slashea a un validador, se le prohíbe inmediatamente continuar certificando y en última instancia es expulsado a la fuerza de la red y el ETH restante se envía al propietario.",
+ "staking-solo-1-d-explanation": "Slashing (o recorte) es una penalización grave por romper reglas de consenso específicas que representan una amenaza para la red. Como tal, una vez que se recorta a un validador, se le prohíbe inmediatamente continuar certificando y en última instancia se le expulsa a la fuerza de la red y el ETH restante se envía al propietario.",
"staking-solo-2-prompt": "¿Qué sucede si un validador se desconecta?",
"staking-solo-2-a-label": "No afecta a las recompensas",
- "staking-solo-2-a-explanation": "Se incurre en sanciones cuando un validador no está disponible para certificar el estado de la cadena para una época determinada. El tamaño de estas sanciones es aproximadamente igual al 75 % de lo que habría sido la recompensa por una atestación adecuada. Las recompensas se reanudan cuando el validador vuelve a estar en línea, y NO se produce slashing.",
+ "staking-solo-2-a-explanation": "Se incurre en sanciones cuando un validador no está disponible para certificar el estado de la cadena para una época determinada. El tamaño de estas sanciones es aproximadamente igual al 75 % de lo que habría sido la recompensa por una certificación adecuada. Las recompensas se reanudan cuando el validador vuelve a estar en línea, y NO se producen recortes.",
"staking-solo-2-b-label": "Solo se incurre en sanciones por inactividad cuando no se está disponible",
- "staking-solo-2-b-explanation": "Mientras no esté disponible, un validador incurrirá en pequeñas sanciones por inactividad, aproximadamente iguales al 75 % de lo que habría sido la recompensa por una atestación adecuada. En casos raros/extremos en los que la red no se está finalizando (es decir, más de 1/3 de la red también está fuera de línea), estas sanciones son significativamente mayores. Las recompensas se reanudan cuando el validador vuelve a estar en línea, y no se produce slashing.",
- "staking-solo-2-c-label": "Slashing inmediato y eliminación de la red",
- "staking-solo-2-c-explanation": "Esta es una idea errónea común, ¡pero desconectarse NO resulta en slashing! El slashing es un tipo específico de penalización por faltas más graves, con penas más grandes y también resulta en la eliminación del conjunto de validadores.",
- "staking-solo-2-d-label": "Una semana de retraso antes del slashing y la expulsión",
- "staking-solo-2-d-explanation": "Estar fuera de línea NO resulta en slashing, incluso después de un período prolongado de tiempo. En teoría, un validador podría estar fuera de línea durante años sin ser slasheado, aunque las sanciones por inactividad aumentarían si el validador no sale.",
+ "staking-solo-2-b-explanation": "Mientras no esté disponible, un validador incurrirá en pequeñas sanciones por inactividad, aproximadamente equivalentes al 75 % de lo que habría sido la recompensa por una atestación adecuada. En casos raros/extremos en los que la red no se está finalizando (es decir, más de 1/3 de la red también está fuera de línea), estas sanciones son significativamente mayores. Las recompensas se reanudan cuando el validador vuelve a estar en línea, y no se producen recortes.",
+ "staking-solo-2-c-label": "Recortes de inmediato y eliminación de la red",
+ "staking-solo-2-c-explanation": "Esta es una idea errónea común, ¡pero desconectarse NO acarrea recortes! El slashing es un tipo específico de penalización por faltas más graves, con penas más grandes y también resulta en la eliminación del conjunto de validadores.",
+ "staking-solo-2-d-label": "Una semana de retraso antes del recorte y la expulsión",
+ "staking-solo-2-d-explanation": "Estar fuera de línea NO acarrea recortes, incluso después de un período prolongado de tiempo. En teoría, un validador podría estar fuera de línea durante años sin sufrir recortes, aunque las sanciones por inactividad aumentarían si el validador no sale.",
"staking-solo-3-prompt": "¿Cuál es el saldo efectivo máximo de un validador?",
"staking-solo-3-a-label": "16",
- "staking-solo-3-a-explanation": "Los validadores que caen a un saldo efectivo de 16 ETH salen automáticamente de la Cadena de baliza.",
+ "staking-solo-3-a-explanation": "Los validadores que descienden a un saldo efectivo de 16 ETH salen automáticamente de la cadena de baliza.",
"staking-solo-3-b-label": "32",
- "staking-solo-3-b-explanation": "32 ETH es tanto el ETH mínimo requerido para activar un nuevo validador, como el \"saldo efectivo\" máximo (peso de voto) para ese validador. Se pueden acumular recompensas superiores a 32, pero este saldo no contribuye al peso de voto de los validadores, y las recompensas no aumentan.",
+ "staking-solo-3-b-explanation": "32 ETH es tanto el ETH mínimo requerido para activar un nuevo validador, como el «saldo efectivo» máximo (peso de voto) para ese validador. Se pueden acumular recompensas superiores a 32, pero este saldo no contribuye al peso de voto de los validadores, y las recompensas no aumentan.",
"staking-solo-3-c-label": "Variable dependiendo del operador",
"staking-solo-3-c-explanation": "Las reglas de consenso se aplican a todas las cuentas de validador por igual y no dependen de la persona que opere el nodo. El saldo efectivo máximo de todos los validadores es de 32 ETH.",
"staking-solo-3-d-label": "Sin límite",
- "staking-solo-3-d-explanation": "Cada cuenta de validador está limitada a un saldo efectivo de 32 ETH, lo que limita el poder general de cualquier validador en la red. Esto también limita la cantidad de ETH que se puede participar o no en un período de tiempo determinado, ya que las activaciones y salidas del validador se procesan a través de una fila de tasa limitada.",
+ "staking-solo-3-d-explanation": "Cada cuenta de validador se limita a un saldo efectivo de 32 ETH, lo que reduce el poder general de cualquier validador en la red. Esto también limita la cantidad de ETH que se puede participar o no en un período de tiempo determinado, ya que las activaciones y salidas del validador se procesan a través de una fila de tasa limitada.",
"staking-solo-4-prompt": "¿Cuál NO es una recompensa recibida como validador?",
"staking-solo-4-a-label": "Recompensa de bloque",
- "staking-solo-4-a-explanation": "Los validadores reciben recompensas en forma de nueva emisión de ETH por proponer un bloque válido cuando son seleccionados al azar por el protocolo. Estas recompensas son aparte de las tarifas y el MEV que también se obtienen al proponer bloques.",
+ "staking-solo-4-a-explanation": "Los validadores reciben recompensas en forma de nueva emisión de ETH por proponer un bloque válido cuando el protocolo los selecciona al azar. Estas recompensas son aparte de las tarifas y el MEV, que también se obtienen al proponer bloques.",
"staking-solo-4-b-label": "Propinas de tarifa / MEV",
- "staking-solo-4-b-explanation": "Las propinas de tarifas (parte no quemada de las tarifas) y las ganancias de MEV se distribuyen al proponente de bloque (staker/validador) a través de la dirección del destinatario de la tarifa proporcionada por ese validador. Estas recompensas están separadas de la recompensa de bloque que también se obtiene al proponer bloques.",
- "staking-solo-4-c-label": "Recompensa de atestación del jefe de cadena",
+ "staking-solo-4-b-explanation": "Las propinas de tarifas (parte no quemada de las tarifas) y las ganancias de MEV se distribuyen al proponente de bloque (participante/validador) a través de la dirección del destinatario de la tarifa proporcionada por ese validador. Estas recompensas están separadas de la recompensa de bloque que también se obtiene al proponer bloques.",
+ "staking-solo-4-c-label": "Recompensa de certificación de cabeza de la cadena",
"staking-solo-4-c-explanation": "Los validadores reciben recompensas en forma de nueva emisión de ETH por dar fe correcta y rápidamente al jefe de la cadena, al actual jefe de época justificado y al actual jefe de época finalizado.",
- "staking-solo-4-d-label": "Tarifas de trading de Uniswap",
- "staking-solo-4-d-explanation": "Los validadores de Ethereum no reciben tarifas de trading generadas por las plataformas de trading y los exchanges.",
+ "staking-solo-4-d-label": "Tarifas de transacciones de Uniswap",
+ "staking-solo-4-d-explanation": "Los validadores de Ethereum no reciben tarifas de transacciones generadas por las plataformas de transacciones y los intercambios.",
"staking-solo-5-prompt": "¿Qué tiempo de actividad se requiere para que un validador sea rentable?",
- "staking-solo-5-a-label": "100%",
- "staking-solo-5-a-explanation": "Aunque es un objetivo ideal, lograr un tiempo de actividad del 100% no es el requisito mínimo para que un validador siga siendo rentable.",
- "staking-solo-5-b-label": "~99%",
- "staking-solo-5-b-explanation": "Aunque es un objetivo excelente, lograr un 99% de tiempo de actividad no es el requisito mínimo para que un validador siga siendo rentable.",
- "staking-solo-5-c-label": "~50%",
- "staking-solo-5-c-explanation": "Los validadores son sancionados por aproximadamente el 75% de lo que habrían recibido por atestar correcta y rápidamente el estado de la cadena. Esto significa que durante un período de tiempo determinado, estar fuera de línea el 50% de ese tiempo seguirá siendo rentable en términos netos, aunque menos rentable que un validador disponible de forma más fiable.",
- "staking-solo-5-d-label": "~25%",
- "staking-solo-5-d-explanation": "Un validador con solo un 25% de tiempo de actividad incurrirá en sanciones durante el otro 75% del tiempo. Dado el tamaño similar de las recompensas y sanciones, estar fuera de línea durante 3 veces la cantidad de tiempo en línea resultará en una pérdida neta de ETH durante ese período de tiempo.",
- "staking-solo-6-prompt": "¿Cuál de las siguientes NO es una falta sujeta a slashing?",
+ "staking-solo-5-a-label": "100 %",
+ "staking-solo-5-a-explanation": "Aunque es un objetivo deseable, lograr el 100 % del tiempo de actividad no es el requisito mínimo para que un validador siga siendo rentable.",
+ "staking-solo-5-b-label": "~99 %",
+ "staking-solo-5-b-explanation": "Aunque es un objetivo excelente, lograr un 99 % de tiempo de actividad no es el requisito mínimo para que un validador siga siendo rentable.",
+ "staking-solo-5-c-label": "~50 %",
+ "staking-solo-5-c-explanation": "Se sanciona a los validadores por aproximadamente el 75 % de lo que habrían recibido por certificar correcta y rápidamente el estado de la cadena. Esto significa que durante un período de tiempo determinado, estar fuera de línea el 50 % de ese tiempo seguirá siendo rentable en términos netos, aunque menos rentable que un validador disponible de forma más fiable.",
+ "staking-solo-5-d-label": "~25 %",
+ "staking-solo-5-d-explanation": "Un validador con solo un 25 % de tiempo de actividad incurrirá en sanciones durante el 75 % restante del tiempo. Dado el tamaño similar de las recompensas y sanciones, estar fuera de línea durante 3 veces la cantidad de tiempo en línea resultará en una pérdida neta de ETH durante ese período de tiempo.",
+ "staking-solo-6-prompt": "¿Cuál de las siguientes NO es una falta sujeta a recortes?",
"staking-solo-6-a-label": "Estar fuera de línea",
- "staking-solo-6-a-explanation": "El simple hecho de estar fuera de línea o desconectado no resulta en slashing. Resultará en pequeñas sanciones por inactividad mientras esté fuera de línea, pero se reanudará la atestación cuando el usuario vuelva a estar en línea.",
+ "staking-solo-6-a-explanation": "El simple hecho de estar fuera de línea o desconectado no acarrea recortes. Resultará en pequeñas sanciones por inactividad mientras esté fuera de línea, pero se reanudará la certificación cuando el usuario vuelva a estar en línea.",
"staking-solo-6-b-label": "Proponer y firmar dos bloques diferentes para la misma ranura",
- "staking-solo-6-b-explanation": "Esto amenaza la integridad de la red y dará lugar a slashing y expulsión de la red.",
- "staking-solo-6-c-label": "Atestar un bloque que \"rodee\" otro (cambiando efectivamente el historial)",
- "staking-solo-6-d-label": "\"Doble votación\" atestando dos candidatos para el mismo bloque",
- "staking-solo-7-prompt": "¿Cuál NO es una forma de proteger/evitar que su validador sea slasheado?",
+ "staking-solo-6-b-explanation": "Esto amenaza la integridad de la red y dará lugar a recortes y a la expulsión de la red.",
+ "staking-solo-6-c-label": "Certificar un bloque que «rodee» otro (cambiando efectivamente el historial)",
+ "staking-solo-6-d-label": "«Doble votación» certificando dos candidatos para el mismo bloque",
+ "staking-solo-7-prompt": "¿Cuál NO es una forma de proteger/evitar que su validador sea recortado?",
"staking-solo-7-a-label": "Evitar configuraciones demasiado redundantes y solo almacenar sus claves con un cliente validador a la vez",
- "staking-solo-7-a-explanation": "La mayoría de los slashings hasta la fecha son de operadores que almacenan sus claves de firma en más de una máquina como una copia de seguridad redundante. Esto es muy riesgoso, ya que cualquier mal funcionamiento puede resultar en doble votación y slashing.",
+ "staking-solo-7-a-explanation": "La mayoría de los recortes hasta la fecha son de operadores que almacenan sus claves de firma en más de una máquina como una copia de seguridad redundante. Esto es muy arriesgado, ya que cualquier mal funcionamiento puede resultar en doble votación y recortes.",
"staking-solo-7-b-label": "Ejecutar software de cliente tal como está sin alterar el código usted mismo",
- "staking-solo-7-b-explanation": "El software cliente se escribe y prueba para protegerlo contra la realización de acciones sujetas a slashing. Para ejecutar una acción sujeta a slashing, esto normalmente requeriría alterar el código del cliente usted mismo de una manera maliciosa.",
- "staking-solo-7-c-label": "Ejecutar un cliente que está siendo utilizado por la mayoría de otros validadores",
- "staking-solo-7-c-explanation": "El uso del mismo cliente que la mayoría del resto de la red lo pone en riesgo de ser slasheado en caso de un error de software en ese cliente. Ejecutar un cliente minoritario protege contra esto.",
- "staking-solo-7-d-label": "Desactivar el validador durante 2-4 épocas antes de migrar las claves a una nueva máquina",
- "staking-solo-7-d-explanation": "Esto da tiempo para permitir que la cadena finalice mientras su nodo está fuera de línea, para minimizar cualquier riesgo de doble votación accidental y slashing durante la migración de claves.",
- "staking-solo-8-prompt": "¿Qué NO es necesario para recibir pagos de recompensa/retiros parciales?",
- "staking-solo-8-a-label": "Proporcionar una dirección de retiro de ejecución una vez",
- "staking-solo-8-a-explanation": "Esto se requiere una vez para que el proceso de retiro sepa adónde enviar cualquier fondo de la capa de consenso",
+ "staking-solo-7-b-explanation": "El software cliente se escribe y prueba para protegerlo frente a la realización de acciones sujetas a recortes. Para ejecutar una acción sujeta a recortes, esto normalmente requeriría alterar el código del cliente usted mismo de una manera maliciosa.",
+ "staking-solo-7-c-label": "Ejecutar un cliente que están utilizando la mayoría de validadores",
+ "staking-solo-7-c-explanation": "El uso del mismo cliente que la mayoría del resto de la red le pone en riesgo de sufrir recortes en caso de un error de software en ese cliente. Ejecutar un cliente minoritario protege contra esto.",
+ "staking-solo-7-d-label": "Desactive el validador durante 2-4 épocas antes de migrar las claves a una nueva máquina",
+ "staking-solo-7-d-explanation": "Esto da tiempo para permitir que la cadena finalice mientras su nodo está fuera de línea, para minimizar cualquier riesgo de doble votación accidental y recortes durante la migración de claves.",
+ "staking-solo-8-prompt": "¿Qué NO es necesario para recibir pagos de recompensa / retiradas parciales?",
+ "staking-solo-8-a-label": "Proporcionar una dirección de retirada de ejecución una vez",
+ "staking-solo-8-a-explanation": "Esto se requiere una vez para que el proceso de retirada sepa dónde enviar cualquier fondo de la capa de consenso",
"staking-solo-8-b-label": "Tener un saldo efectivo de 32 ETH",
- "staking-solo-8-b-explanation": "Su saldo efectivo debe estar al máximo de 32 ETH antes de que se active cualquier retiro parcial.",
+ "staking-solo-8-b-explanation": "Su saldo efectivo debe alcanzar el máximo de 32 ETH antes de que se active cualquier retirada parcial.",
"staking-solo-8-c-label": "Tener un saldo total mayor a 32 ETH",
- "staking-solo-8-c-explanation": "Su balance total debe tener recompensas superiores a 32 ETH para que se active un retiro parcial.",
- "staking-solo-8-d-label": "Enviar la cantidad de retiro solicitada junto con el pago del gas",
- "staking-solo-8-d-explanation": "Una vez alcanzados los otros criterios, los pagos de recompensas son automáticos. Los destinatarios no necesitan realizar una transacción o pagar gas. La cantidad del retiro es equivalente al excedente de 32 en el saldo validador. No pueden solicitarse cantidades personalizadas.",
+ "staking-solo-8-c-explanation": "Su saldo total debe tener recompensas superiores a 32 ETH para que se active una retirada parcial.",
+ "staking-solo-8-d-label": "Enviar la cantidad de retirada solicitada junto con el pago del gas",
+ "staking-solo-8-d-explanation": "Una vez alcanzados los otros criterios, los pagos de recompensas son automáticos. Los destinatarios no necesitan realizar una transacción o pagar gas. La cantidad del retirada es equivalente al excedente de 32 en el saldo validador. No pueden solicitarse cantidades personalizadas.",
"scaling-1-prompt": "¿Cúal de los siguientes está usando Ethereum para lograr escalabilidad?",
"scaling-1-a-label": "Rollups de capa 2",
- "scaling-1-a-explanation": "Estos ayudan a Ethereum a escalar agrupando transacciones, ejecutándolas y luego colocando los resultados en Ethereum para validarlos y asegurarlos. Ejemplos o Rollups incluyen Arbitrum u Optimism. Esta no es la única manera en que Ethereum está escalando.",
+ "scaling-1-a-explanation": "Estos ayudan a Ethereum a escalar agrupando transacciones, ejecutándolas y luego colocando los resultados en Ethereum para validarlos y asegurarlos. Los ejemplos o rollups incluyen Arbitrum u Optimism. Esta no es la única manera en que Ethereum está escalando.",
"scaling-1-b-label": "ProtoDanksharding",
- "scaling-1-b-explanation": "Esto proporciona una opción de almacenamiento temporario y sin costo para guardar datos de rollups en la red principal, lo cual significa aproximadamente el 90% del costo que un usuario encuentra en un rollup. Esta no es la única manera en que Ethereum está escalando.",
+ "scaling-1-b-explanation": "Esto proporciona una opción de almacenamiento temporal y económico para guardar datos de rollups en la red principal, lo que significa aproximadamente el 90 % del coste que un usuario encuentra en un rollup. Esta no es la única manera en que Ethereum está escalando.",
"scaling-1-c-label": "Danksharding",
- "scaling-1-c-explanation": "Esto quita la necesidad de que todos los validadores y nodos deban almacenar el 100% de los datos para todos los rollups, reduciendo los requerimientos de hardware para los operadores de los nodos. Esta no es la unica manera en que Ethereum esta escalando.",
+ "scaling-1-c-explanation": "Esto elimina la necesidad de que todos los validadores y nodos deban almacenar el 100 % de los datos para todos los rollups, reduciendo los requerimientos de hardware para los operadores de los nodos. Esta no es la unica manera en que Ethereum está escalando.",
"scaling-1-d-label": "Todo lo anterior",
- "scaling-1-d-explanation": "Los rollups de capa 2 agrupan transacciones, el Proto-Danksharding crea almacenamiento temporal económico para estos datos y el Danksharding reparte la carga de almacenamiento entre todos los validadores, todo ello ayudando a Ethereum a escalar.",
- "scaling-2-prompt": "Luego de agrupar transacciones y ejecutarlas, ¿qué hacen los rollups de capa 2?",
+ "scaling-1-d-explanation": "Los rollups de capa 2 agrupan transacciones, el Proto-Danksharding crea almacenamiento temporal económico para estos datos y el Danksharding reparte la carga de almacenamiento entre todos los validadores, ayudando con todo ello a Ethereum a escalar.",
+ "scaling-2-prompt": "Después de agrupar transacciones y ejecutarlas, ¿qué hacen los rollups de capa 2?",
"scaling-2-a-label": "Almacenar los datos en un servidor privado",
- "scaling-2-a-explanation": "Los resultados se publican en la red principal por transparencia y disponibilidad al público, no dependen de servidores privados.",
+ "scaling-2-a-explanation": "Los resultados se publican en la red principal por transparencia y disponibilidad al público, y no dependen de servidores privados.",
"scaling-2-b-label": "Enviar la prueba al usuario para almacenarla",
- "scaling-2-b-explanation": "No se espera que los usuarios mantengan los resultados de su transacción. Esta información es agregada a la red principal.",
+ "scaling-2-b-explanation": "No se espera que los usuarios mantengan los resultados de su transacción. Esta información se añade a la red principal.",
"scaling-2-c-label": "Enviar los resultados a Ethereum",
"scaling-2-c-explanation": "Los rollups de capa 2 publican los resultados de la ejecución de su transacción en la red principal, asegurándola en el historial de Ethereum.",
"scaling-2-d-label": "Eliminar el resultado para reducir los costos",
- "scaling-2-d-explanation": "Los rollups de capa 2 publican los resultados de la ejecución de transacciones en la red principal. El ahorro de costos logrado con este enfoque se consigue agrupando y comprimiendo los datos de las transacciones, y finalmente guardándolos en un almacenaje económico que expira una vez se se ponen a disposición de los interesados.",
- "scaling-3-prompt": "¿Cómo reduce Proto-Danksharding el costo de transacción de los rollups?",
+ "scaling-2-d-explanation": "Los rollups de capa 2 publican los resultados de la ejecución de transacciones en la red principal. El ahorro de costes logrado con este enfoque se consigue agrupando y comprimiendo los datos de las transacciones y, en última instancia, guardándolos en un almacenamiento económico que expira una vez se se ponen a disposición de los interesados.",
+ "scaling-3-prompt": "¿Cómo reduce Proto-Danksharding los costes de transacción de los rollups?",
"scaling-3-a-label": "Incrementando directamente el tamaño del bloque",
"scaling-3-a-explanation": "Proto-Danksharding no aumenta directamente el límite de gas, pero sí abarata el almacenamiento de datos del rollup poniendo a disposición almacenamiento temporal.",
"scaling-3-b-label": "Separando qué validadores son necesarios para almacenar los datos",
"scaling-3-b-explanation": "Aunque se espera que el Danksharding completo reduzca la necesidad de que todos los validadores almacenen todos los datos, este viene precedido por el Proto-Danksharding, que consituye una opción de almacenamiento temporal menos costosa para los datos producidos por los rollups.",
- "scaling-3-c-label": "Incrementando significativamente los requerimientos de hardware para los operadores de nodos",
- "scaling-3-c-explanation": "En general, esto no se considera una opción aceptable para escalar Ethereum. Se hacen grandes esfuerzos para minimizar los requisitos de hardware para operar un nodo y mantenerlo lo más accesible posible.",
- "scaling-3-d-label": "Almacenando sus datos en \"blobs\" temporales más baratos",
+ "scaling-3-c-label": "Incrementando considerablemente los requisitos de hardware para los operadores de nodos.",
+ "scaling-3-c-explanation": "En general, esto no se considera una opción aceptable para escalar Ethereum. Se hacen esfuerzos considerables para minimizar los requisitos de hardware para operar un nodo y mantenerlo lo más accesible posible.",
+ "scaling-3-d-label": "Almacenando datos en «blobs» temporales más baratos",
"scaling-3-d-explanation": "Proto-Danksharding introduce una opción de almacenamiento temporal de datos para los rollups que les permite enviar sus resultados a la red principal de forma más barata.",
"scaling-4-prompt": "¿Cuál es el siguiente paso fundamental para que los rollups escalen Ethereum?",
"scaling-4-a-label": "Incentivar a las entidades con potentes ordenadores para que se encarguen de toda la secuencia",
- "scaling-4-a-explanation": "Uno de los problemas de los rollups es el carácter centralizado de quienes ejecutan los secuenciadores (quienes deciden la inclusión y el orden de las transacciones dentro de un rollup). El objetivo es que cualqiuera pueda participar y no depender en modo alguno de un único grupo o entidad.",
+ "scaling-4-a-explanation": "Uno de los problemas de los rollups actuales es el carácter centralizado de quienes ejecutan los secuenciadores (quienes deciden la inclusión y el orden de las transacciones dentro de un rollup). El objetivo es que cualquiera pueda participar y no depender en modo alguno de un único grupo o entidad.",
"scaling-4-b-label": "Distribuir la responsabilidad del funcionamiento de secuenciadores y comprobadores entre más personas",
"scaling-4-b-explanation": "El control de un rollup suele empezar centralizado, lo que ayuda a poner las cosas en marcha, pero deja la red expuesta a la censura. Descentralizar el proceso de inclusión de transacciones para que cualquiera pueda participar es esencial para evitar la posibilidad de que la red se vea comprometida.",
"scaling-4-c-label": "Hacer que todos los rollups se ajusten al mismo método de seguridad",
@@ -478,28 +523,28 @@
"scaling-4-d-label": "Oráculos de datos para confirmar el almacenamiento de datos de transacciones en servidores privados",
"scaling-4-d-explanation": "Los datos de rollups se almacenan en Ethereum y no dependen de servidores o bases de datos privados.",
"run-a-node-1-prompt": "¿Qué se necesita para hacer funcionar un nodo?",
- "run-a-node-1-a-label": "Ejecutar software cliente con hardware modesto sin dejar de estar en línea",
+ "run-a-node-1-a-label": "Ejecutar software de cliente con hardware modesto sin dejar de estar en línea.",
"run-a-node-1-a-explanation": "Ejecutar un nodo consiste en ejecutar un software que se comunique mediante el lenguaje del protocolo de Ethereum con otros ordenadores que hacen lo mismo. Este software descarga una copia de la cadena de bloques de Ethereum, verifica la validez de cada bloque, luego la mantiene actualizada con nuevos bloques y transacciones, mientras ayuda a otros a descargar y actualizar sus propias copias.",
"run-a-node-1-b-label": "Depositar 32 ETH para ganar recompensas",
- "run-a-node-1-b-explanation": "Este es un requisito para el staking, el proceso de convertirse en un participante activo en el consenso de la red. No es necesario para ejecutar una copia soberana de la cadena de bloques, que NO requiere ETH.",
+ "run-a-node-1-b-explanation": "Este es un requisito para laparticipación, el proceso de convertirse en un participante activo en el consenso de la red. No es necesario para ejecutar una copia soberana de la cadena de bloques, que NO requiere ETH.",
"run-a-node-1-c-label": "Operar potentes máquinas de minería ASIC para alcanzar el consenso de la red",
- "run-a-node-1-c-explanation": "Aunque anteriormente Ethereum utilizaba la minería con potentes ordenadores para llegar al consenso, este proceso ha sido interamente reemplazado por el staking. Ni la minería en el pasado ni el staking en la actualidad son necesarios para simplemente hacer funcionar una copia soberana de la cadena de bloques.",
+ "run-a-node-1-c-explanation": "Aunque Ethereum utilizaba anteriormente la minería con potentes ordenadores para llegar al consenso, la participación ha sustituido por completo a este proceso. Ni la minería en el pasado ni la participación en la actualidad son necesarias para simplemente hacer funcionar una copia soberana de la cadena de bloques.",
"run-a-node-1-d-label": "Trabajar a tiempo completo en infraestructura de cadena de bloques",
- "run-a-node-1-d-explanation": "Las herramientas de software no han dejado de mejorar con el tiempo, lo que ha hecho más accesible la gestión de un nodo desde casa para principiantes. Trabajar a tiempo completo en la infraestructura de cadena de bloques no es en absoluto un requisito para participar.",
+ "run-a-node-1-d-explanation": "Las herramientas de software han ido mejorando constantemente, lo que ha hecho más accesible la gestión de un nodo desde casa para principiantes. Trabajar a tiempo completo en la infraestructura de cadena de bloques no es en absoluto un requisito para participar.",
"run-a-node-2-prompt": "¿Cuántos ETH necesita apostar para ejecutar un nodo?",
"run-a-node-2-a-label": "0",
- "run-a-node-2-a-explanation": "Ejecutar un nodo de Ethereum no requiere ETH. A diferencia de operar con un validador de staking como parte de la configuración de un nodo, cualquiera es libre de ejecutar software cliente y sincronizar su propia copia soberana de la cadena de bloques, sin necesidad de ETH.",
+ "run-a-node-2-a-explanation": "Ejecutar un nodo de Ethereum no requiere ETH. A diferencia de operar con un validador de participación como parte de la configuración de un nodo, cualquiera es libre de ejecutar un software de cliente y sincronizar su propia copia soberana de la cadena de bloques, sin necesidad de ETH.",
"run-a-node-2-b-label": "8",
"run-a-node-2-c-label": "16",
"run-a-node-2-d-label": "32",
- "run-a-node-2-d-explanation": "Ejecutar un nodo de Ethereum no requiere ETH. A diferencia de los 32 ETH necesarios para activar un validador de staking que participe directamente en el consenso de la red, cualquiera es libre de ejecutar software cliente y sincronizar su propia copia soberana de la cadena de bloques, sin necesidad de ETH.",
- "run-a-node-3-prompt": "¿Qué ventajas se obtienen en ejecutar su propio nodo?",
+ "run-a-node-2-d-explanation": "Ejecutar un nodo de Ethereum no requiere ETH. A diferencia de los 32 ETH necesarios para activar un validador de participación que participe directamente en el consenso de la red, cualquiera es libre de ejecutar software de cliente y sincronizar su propia copia soberana de la cadena de bloques, sin necesidad de ETH.",
+ "run-a-node-3-prompt": "¿Qué ventajas se obtienen con la ejecución de su propio nodo?",
"run-a-node-3-a-label": "Resistencia a la censura",
"run-a-node-3-a-explanation": "Esta es una ventaja para los usuarios, pero no es la única. Al ejecutar software de nodo que se comunique directamente con otros pares en la red, sus transacciones se mezclan con todas las demás transacciones que su nodo esté propagando. Por lo tanto, es casi imposible diferenciar y censurar una transacción válida que su nodo haya compartido.",
"run-a-node-3-b-label": "Soberanía",
"run-a-node-3-b-explanation": "Esta es una ventaja para los usuarios, pero no es la única. Al tener su propia copia de la cadena de bloques de Ethereum, ya no depende de ninguna parte externa para interactuar con la red. Nunca tiene que pedir permiso para consultar su saldo, ni ejecutar una transacción, y todas las transacciones se verifican mediante el software que usted mismo está ejecutando. Cuando se producen actualizaciones de la red, usted decide si apoyar la actualización o no.",
"run-a-node-3-c-label": "Privacidad",
- "run-a-node-3-c-explanation": "Esta es una ventaja para los usuarios, pero no es la única. Sin un nodo propio, simplemente consultar el saldo de sus cuentas suele requerir el envío de una lista de sus cuentas desde su billetera, asociada a una dirección IP, a un proveedor externo en quien confíe para que le proporcione la información correcta.",
+ "run-a-node-3-c-explanation": "Esta es una ventaja para los usuarios, pero no es la única. Sin un nodo propio, simplemente consultar el saldo de sus cuentas suele requerir el envío de una lista de sus cuentas desde su cartera, asociada a una dirección IP, a un proveedor externo en quien confiar para que le proporcione la información correcta.",
"run-a-node-3-d-label": "Todo lo anterior",
"run-a-node-3-d-explanation": "Ejecutar un nodo le otorga el pleno control y soberanía sobre los datos en los que confía, permitiéndole visualizar y verificar de forma privada el contenido de la cadena y garantizar efectivamente que cualquier transacción válida no sea censurada.",
"run-a-node-4-prompt": "¿Qué capacidad de almacenamiento en disco duro necesita un nodo de Ethereum?",
@@ -508,20 +553,146 @@
"run-a-node-4-b-label": "2 TB giratorio",
"run-a-node-4-b-explanation": "En general, los discos duros giratorios no soportan las velocidades de lectura/escritura necesarias para seguir el ritmo de los requisitos de procesamiento de un nodo de Ethereum, por lo que se recomienda una unidad SSD.",
"run-a-node-4-c-label": "SSD de 2 TB",
- "run-a-node-4-c-explanation": "Al momento de escribir esto, una unidad SSD de 2 TB debería satisfacer los requisitos de almacenamiento y velocidad de lectura/escritura de un nodo completo de Ethereum.",
+ "run-a-node-4-c-explanation": "Al cierre de edición, una unidad SSD de 2 TB debería satisfacer los requisitos de almacenamiento y velocidad de lectura / escritura de un nodo completo de Ethereum.",
"run-a-node-4-d-label": "8 TB SSD",
- "run-a-node-4-d-explanation": "Al momento de escribir esto, una unidad SSD de 2 TB debería satisfacer los requisitos de almacenamiento y velocidad de lectura/escritura de un nodo de Ethereum completo. Un SSD de 8 TB permitiría una mayor seguridad de cara al futuro y la capacidad de sincronizar también cadenas de capa 2, pero actualmente no es un requisito para la red principal.",
- "scaling-5-prompt": "¿Qué pasa si su nodo se desconecta?",
- "scaling-5-a-label": "Su nodo deja de estar sincronizado con el estado actual de la red",
- "scaling-5-a-explanation": "Cuando su nodo no está disponible online, no puede recibir nuevas transacciones y bloques de pares y, por tanto, queda desincronizado con el estado actual de la cadena. Si vuelve a estar en línea, el software de nodo se sincronizará y volverá a ser totalmente funcional.",
- "scaling-5-b-label": "El ETH de su almacenamiento en frío se slashea",
- "scaling-5-b-explanation": "El ETH en su almacenamiento en frío no tiene nada a que ver con que su nodo esté conectado o no. Si su nodo está offline, no podrá utilizarlo para consultar el saldo más reciente de sus cuentas, pero estar offline no pone en riesgo sus fondos asegurados. Si también está ejecutando software validador con su nodo como staker, incurrirá en pequeñas sanciones en este saldo validador mientras no esté disponible para la red.",
- "scaling-5-c-label": "Se desperdicia la energía empleada para la prueba de trabajo",
- "scaling-5-c-explanation": "Ethereum ya no utiliza la prueba de trabajo (proof-of-work), y esto nunca fue un requisito para todos los operadores de nodos. Estar sin conexión simplemente significa que su nodo ya no está sincronizado con los últimos cambios en la red, y puede volver a sincronizarse una vez en línea.",
- "scaling-5-d-label": "Se eliminan los datos de la cadena, y es necesario volver a sincronizarlos desde cero",
- "scaling-5-d-explanation": "La simple desconexión no suele eliminar los datos guardados en la cadena. Conectarse de nuevo a Internet permitirá al software reanudar la operación donde la dejó para sincronizarse con las últimas transacciones.",
- "scaling-6-prompt": "Ejecutar un nodo da recompensas de red",
- "scaling-6-a-label": "Verdadero",
- "scaling-6-a-explanation": "El mero hecho de ejecutar software cliente no hace ganar recompensas. Para ganar recompensas, también debe hacer staking.",
- "scaling-6-b-label": "Falso"
+ "run-a-node-4-d-explanation": "Al cierre de edición, una unidad SSD de 2 TB debería satisfacer los requisitos de almacenamiento y velocidad de lectura/escritura de un nodo de Ethereum completo. Un SSD de 8 TB permitiría una mayor seguridad de cara al futuro y la capacidad de sincronizar también cadenas de capa 2, pero actualmente no es un requisito para la red principal.",
+ "run-a-node-5-prompt": "¿Qué pasa si su nodo se desconecta?",
+ "run-a-node-5-a-label": "Su nodo deja de estar sincronizado con el estado actual de la red",
+ "run-a-node-5-a-explanation": "Cuando su nodo deja de estar disponible en línea, no puede recibir nuevas transacciones y bloques de iguales y, por tanto, queda desincronizado con el estado actual de la cadena. Cuando vuelva a estar en línea, el software de nodo se sincronizará y volverá a ser totalmente funcional.",
+ "run-a-node-5-b-label": "El ETH de su almacenamiento en frío se recorta",
+ "run-a-node-5-b-explanation": "El ETH en su almacenamiento en frío no tiene nada a que ver con que su nodo esté conectado o no. Si su nodo está fuera de línea, no podrá utilizarlo para consultar el saldo más reciente de sus cuentas, pero estar fuera de línea no pone en riesgo sus fondos asegurados. Si también está ejecutando un software validador con su nodo como participante, incurrirá en pequeñas sanciones en este saldo validador mientras no esté disponible para la red.",
+ "run-a-node-5-c-label": "Se desperdicia la energía empleada para la prueba de trabajo",
+ "run-a-node-5-c-explanation": "Ethereum ya no utiliza la prueba de trabajo, y esto nunca fue un requisito para todos los operadores de nodos. Estar sin conexión simplemente significa que su nodo ya no está sincronizado con los últimos cambios en la red, y puede volver a sincronizarse cuando vuelva a estar en línea.",
+ "run-a-node-5-d-label": "Se eliminan los datos de la cadena, y es necesario volver a sincronizarlos desde cero",
+ "run-a-node-5-d-explanation": "La simple desconexión no suele eliminar los datos guardados en la cadena. Conectarse de nuevo a Internet permitirá al software reanudar la operación donde la dejó para sincronizarse con las últimas transacciones.",
+ "run-a-node-6-prompt": "Ejecutar un nodo da recompensas de red",
+ "run-a-node-6-a-label": "Verdadero",
+ "run-a-node-6-a-explanation": "El mero hecho de ejecutar su software de cliente no le hace ganar recompensas. Para ganar recompensas, también debe participar.",
+ "run-a-node-6-b-label": "Falso",
+ "stablecoins-1-prompt": "¿Qué son las monedas estables?",
+ "stablecoins-1-a-label": "Criptomonedas con baja volatilidad de precio, cuyo valor es estable y similar al de las monedas tradicionales",
+ "stablecoins-1-a-explanation": "¡Exacto! Las stablecoins están diseñadas para resolver el problema de la volatilidad, algo común en muchas criptomonedas.",
+ "stablecoins-1-b-label": "Representaciones digitales de oro",
+ "stablecoins-1-b-explanation": "Esto es incorrecto. Si bien algunas monedas estables pueden estar respaldadas por metales preciosos, también pueden estar respaldadas por moneda fiduciaria u otras criptomonedas.",
+ "stablecoins-1-c-label": "Un nuevo tipo de tarjeta de crédito",
+ "stablecoins-1-c-explanation": "Esto es incorrecto. Las monedas estables son un tipo de criptomoneda, no una tarjeta de crédito.",
+ "stablecoins-1-d-label": "Un reemplazo para ether",
+ "stablecoins-1-d-explanation": "Esto es incorrecto. Las monedas estables no están diseñadas para reemplazar ether (ETH). Son otro tipo de token en la red de Ethereum, que están diseñadas para mantener un valor estable a lo largo del tiempo.",
+ "stablecoins-2-prompt": "¿Cuál de las siguientes es una moneda estable?",
+ "stablecoins-2-a-label": "Dólar estadounidense",
+ "stablecoins-2-a-explanation": "Esto es incorrecto. Las monedas estables pueden representar al dólar estadounidense, pero el dólar estadounidense no es una criptomoneda.",
+ "stablecoins-2-b-label": "AAVE token",
+ "stablecoins-2-b-explanation": "Esto es incorrecto. AAVE es un token de gobernanza para el protocolo Aave, que ofrece mercados para monedas estables, pero AAVE en sí no es una moneda estable.",
+ "stablecoins-2-c-label": "Dai",
+ "stablecoins-2-c-explanation": "¡Correcto! Dai es probablemente la moneda estable descentralizada más famosa y su valor es de aproximadamente 1 dólar estadounidense.",
+ "stablecoins-2-d-label": "Ether",
+ "stablecoins-2-d-explanation": "Esto es incorrecto. Ether es la moneda nativa de la red Ethereum, pero no está pensada para ser estable.",
+ "stablecoins-3-prompt": "¿Para qué se pueden utilizar las monedas estables?",
+ "stablecoins-3-a-label": "Para protejer los usarios de cambios volátiles en los precios",
+ "stablecoins-3-a-explanation": "No es del todo correcto, ya que este es tan solo uno de los muchos fines para los que se puede utilizar las monedas estables.",
+ "stablecoins-3-b-label": "Para comprar cosas por internet desde cualquier lugar del mundo",
+ "stablecoins-3-b-explanation": "No es del todo correcto, ya que este es tan solo uno de los muchos fines para los que se puede utilizar las monedas estables.",
+ "stablecoins-3-c-label": "Para ganar dinero a través de préstamos a otros",
+ "stablecoins-3-c-explanation": "No es del todo correcto, ya que este es tan solo uno de los muchos fines para los que se puede utilizar las monedas estables.",
+ "stablecoins-3-d-label": "Todo lo anterior",
+ "stablecoins-3-d-explanation": "¡Correcto! Las monedas estables se pueden usar para almacenar criptomonedas con menor volatilidad, realizar transacciones globales en internet y ganar intereses cuando se prestan.",
+ "stablecoins-4-prompt": "¿Que hace única a una moneda estable?",
+ "stablecoins-4-a-label": "Es un token vinculado a un activo en el mundo real",
+ "stablecoins-4-a-explanation": "Esto es incorrecto. Si bien muchas monedas estables están vinculadas a activos del mundo real, esta característica no es exclusiva de las monedas estables (por ejemplo, los tókenes respaldados por ETH).",
+ "stablecoins-4-b-label": "Es un token de criptomoneda diseñado específicamente para mantener su valor estable",
+ "stablecoins-4-b-explanation": "¡Correcto! Las monedas estables están diseñadas para mantener su valor relativamente estable, generalmente vinculado a activos como monedas (por ejemplo, 1 USDC = 1 dólar estadounidense), pero no todas las monedas estables siguen este modelo (por ejemplo, RAI).",
+ "stablecoins-4-c-label": "Es capaz de enviarse a través de Internet",
+ "stablecoins-4-c-explanation": "Esto es incorrecto. Si bien se trata de una capacidad, no es exclusiva de las monedas estables.",
+ "stablecoins-4-d-label": "Se puede usar en la red de Ethereum.",
+ "stablecoins-4-d-explanation": "Esto es incorrecto. Muchos otros tókenes de criptomonedas se pueden usar en la red de Ethereum.",
+ "stablecoins-5-prompt": "¿Cúal NO es un a forma de conseguir monedas estables?",
+ "stablecoins-5-a-label": "Intercambiarlas con otros tókenes",
+ "stablecoins-5-a-explanation": "Incorrecto, esta es la forma de conseguir monedas estables. Una de las formas más comúnes para conseguir moneda estable es intercambiando criptomonedas existentes por moneda estable.",
+ "stablecoins-5-b-label": "Pedirlas prestado",
+ "stablecoins-5-b-explanation": "Incorrecto, esta es la forma de conseguir monedas estables. Puede pedir prestada moneda estable usando criptomoneda existente, como el ether, como garantía. Tiene que devolver la moneda estable prestada para reclamar su garantía bloqueada.",
+ "stablecoins-5-c-label": "Comprarla en un intercambio",
+ "stablecoins-5-c-explanation": "No es correcto, esta es una forma de conseguir moneda estable. Muchos intercambios y carteras le permiten comprar moneda estable directamente. Restricciones geográficas pueden aplicarse en caso de intercambios centralizados.",
+ "stablecoins-5-d-label": "Mina los",
+ "stablecoins-5-d-explanation": "¡Correcto! A diferencia del bitcoin, no es posible minar monedas estables.",
+ "defi-1-prompt": "¿Qué significa DeFi?",
+ "defi-1-a-label": "Es el acrónimo en inglés de Finanzas Descentralizadas",
+ "defi-1-a-explanation": "¡Correcto! DeFi se refiere a finanzas descentralizadas, un sistema financiero creado sobre Ethereum que opera sin intermediarios como bancos o instituciones financieras.\nDefi-1- explicación",
+ "defi-1-b-label": "Finanzas Digitales",
+ "defi-1-b-explanation": "¡Esto es incorrecto! Las Finanzas Digitales se refieren a los servicios que se brindan a través de plataformas digitales, pero no implican específicamente la descentralización.",
+ "defi-1-c-label": "Finanzas Distribuidas",
+ "defi-1-c-explanation": "Esto no es correcto. Si bien «distribuido» podría implicar descentralización, el término que se utiliza en la industria es «finanza descentralizada», no finanza distribuida.",
+ "defi-1-d-label": "Finanzas para el Desarrollo",
+ "defi-1-d-explanation": "Esto es incorrecto. Las Finanzas para el Desarrollo suelen referirse al apoyo financiero brindado a proyectos destinados al desarrollo económico, a menudo en países en vías de desarrollo, y no está relacionado con la cadena de bloques o DeFi.",
+ "defi-2-prompt": "¿Qué no se puede hacer con DeFi?",
+ "defi-2-a-label": "Enviar dinero a cualquier parte del mundo.",
+ "defi-2-a-explanation": "Esto es incorrecto. Con DeFi, se puede enviar valor a cualquier persona en cualquier parte del mundo, sin límites.",
+ "defi-2-b-label": "Pedirle al servicio de Atención al cliente que corrija sus errores.",
+ "defi-2-b-explanation": "¡Correcto! En DeFi, las transacciones son definitivas y están controladas mediante código, no por una empresa. Si ocurre un error, como enviar fondos a una dirección incorrecta, no hay servicio de Atención al cliente que ayude a solucionarlo. Debe tener mucho cuidado.",
+ "defi-2-c-label": "Pedir préstamos a fondos con garantía.",
+ "defi-2-c-explanation": "Esto es incorrecto. Con DeFi, puede pedir prestado dinero al instante y evitar el proceso de aprobación que lleva días en los bancos tradicionales.",
+ "defi-2-d-label": "Hacer transacciones con sus tókenes 24 horas al día, 7 días por semana.",
+ "defi-2-d-explanation": "Esto es incorrecto. DeFi le permite hacer transacciones con tókenes las 24 horas del día, los 7 días de la semana. Los mercados siempre están abiertos y puede intercambiar su ETH por USDT o cualquier otra moneda en cualquier momento.",
+ "defi-3-prompt": "¿Qué plataforma DeFi es famosa por permitir a los usuarios intercambiar tókenes directamente por otros?",
+ "defi-3-a-label": "Uniswap",
+ "defi-3-a-explanation": "¡Correcto! Uniswap es un intercambio descentralizado que permite a los usuarios intercambiar tókenes directamente entre sí utilizando mecanismos de creación de mercado automatizados.",
+ "defi-3-b-label": "Aave",
+ "defi-3-b-explanation": "Esto es incorrecto. Aave es un protocolo DeFi enfocado a dar y pedir préstamos, no a intercambiar tókenes.",
+ "defi-3-c-label": "PoolTogether",
+ "defi-3-c-explanation": "Esto es incorrecto. PoolTogether organiza loterías sin pérdidas que ofrecen una forma innovadora de ahorrar dinero.",
+ "defi-3-d-label": "MakerDao",
+ "defi-3-d-explanation": "Esto es incorrecto. MakerDAO es una plataforma descentralizada que permite a los usuarios emitir y gestionar la moneda estable DAI, pero no se enfoca a intercambios de tókenes.",
+ "defi-4-prompt": "Cuando utiliza una aplicación DeFi y realiza una transacción ¿Donde se guarda la información de la transacción?",
+ "defi-4-a-label": "ETH",
+ "defi-4-a-explanation": "Esto es incorrecto. La información no se guarda en Ether (ETH). ETH es el activo nativo de la cadena de bloques de Ethereum.",
+ "defi-4-b-label": "Mi cartera",
+ "defi-4-b-explanation": "Esto es incorrecto. Una cartera es una aplicación que gestiona su cuenta de Ethereum al conectarse a la cadena de bloques de Ethereum. No almacena ningún dato sobre su historial de transacciones.",
+ "defi-4-c-label": "Applicaciones DeFI",
+ "defi-4-c-explanation": "Esto es incorrecto. Las aplicaciones DeFi no almacenan su historial de transacciones directamente. En su lugar, los detalles de su transacción se registran en la cadena de bloques de Ethereum.",
+ "defi-4-d-label": "Cadena de bloques de Ethereum",
+ "defi-4-d-explanation": "¡Correcto! Ethereum es una cadena de bloques que almacena toda la información realizada por sus usuarios y aplicaciones. Esto permite a los validadores el mantenimiento del mismo estado a través de la red P2P.",
+ "defi-5-prompt": "¿Qué es lo que hace posible las Finanzas decentralizadas (DeFi) en Ethereum?",
+ "defi-5-a-label": "Contratos inteligentes",
+ "defi-5-a-explanation": "¡Correcto! Los contratos inteligentes son como declaraciones digitales de tipo condicionante escritas en Ethereum. Reemplazan a los contratos tradicionales y a los intermediarios, ejecutando transacciones automáticamente si se cumplen ciertas condiciones.",
+ "defi-5-b-label": "Intermediarios",
+ "defi-5-b-explanation": "Esto es incorrecto. Ethereum no necesita intermediarios para que se realicen las transacciones. Todo se ejecuta en la cadena a través de contratos inteligentes.",
+ "defi-5-c-label": "Bitcoin",
+ "defi-5-c-explanation": "Esto es incorrecto. Bitcoin es una red simple para almacenar valor, no para ejecutar programas avanzados. La DeFi necesita un sistema más flexible, como Ethereum, que pueda ejecutar programas complejos para manejar préstamos y transacciones.",
+ "defi-5-d-label": "Instituciones financieras tradicionales",
+ "defi-5-d-explanation": "Esto es incorrecto. Las aplicaciones DeFi no necesitan instituciones financieras tradicionales. Utilizan programas de cadena de bloques llamados contratos inteligentes para gestionar las transacciones de forma automática.",
+ "smart-contracts-1-prompt": "¿En qué se caracterizan los contratos inteligentes?",
+ "smart-contracts-1-a-label": "Los contratos inteligentes son como contratos legales, pero almacenados digitalmente en la cadena de bloques para guardar su contenido de forma segura.",
+ "smart-contracts-1-a-explanation": "Los contratos inteligentes usan una lógica similar a los contratos tradicionales, pero en los demás aspectos, tienen muy poco en común.",
+ "smart-contracts-1-b-label": "Vinculados a sistemas de IA autónomos que ejecutan las transacciones",
+ "smart-contracts-1-b-explanation": "Los contratos inteligentes ejecutan las transacciones de acuerdo a la lógica condicionante «si esto...., entonces aquello», prescrita en el código. No usan IA.",
+ "smart-contracts-1-c-label": "Programas en cadena siguen la lógica condicionante de «si esto..., entonces aquello...», garantizando así su ejecución de acuerdo a sus propias reglas",
+ "smart-contracts-1-c-explanation": "Un contrato inteligente es una cuenta de Ethereum desplegada con un código inmutable que determina su funcionalidad.",
+ "smart-contracts-1-d-label": "Hay reglas detrás de la cadena de bloques de Ethereum, desarrolladas en conjunto con abogados para asegurar el cumplimiento legal.",
+ "smart-contracts-1-d-explanation": "Los contratos inteligentes son piezas de código que pueden crear desarrolladores y desplegar en una cadena de bloques.",
+ "smart-contracts-2-prompt": "¿Qué metáfora hace más referencia al funcionamiento de los contratos inteligentes?",
+ "smart-contracts-2-a-label": "Un banco",
+ "smart-contracts-2-a-explanation": "Los bancos requieren de ejecución manual y están estructurados de forma jerárquica, mientras que los contratos inteligentes los ejecutan ordenadores de forma predecible con reglas inmutables.",
+ "smart-contracts-2-b-label": "Una máquina expendedora digital",
+ "smart-contracts-2-b-explanation": "Una máquina expendedora solo dispensará el producto deseado despúes de que todos los requisitos se cumplan: entradas específicas garantizan determinadas salidas. Esta lógica es similar a la de los contratos inteligentes.",
+ "smart-contracts-2-c-label": "Una calculadora",
+ "smart-contracts-2-c-explanation": "El código de los contratos inteligentes puede utilizarse para cálculos, pero no solo eso. Los contratos inteligentes son más bien programas basados en la cadena de bloques que siguen la lógica condicionante de «si esto..., entonces aquello».",
+ "smart-contracts-2-d-label": "Un sitio web",
+ "smart-contracts-2-d-explanation": "Un sitio web es la interfaz que captura las instrucciones del usuario. Un contrato inteligente es la lógica donde se ejecutan estas instrucciones y el resultado puede plasmarse.",
+ "smart-contracts-3-prompt": "¿Cúal NO es una característica principal de los contratos inteligentes?",
+ "smart-contracts-3-a-label": "Ejecución determinista",
+ "smart-contracts-3-a-explanation": "El principal beneficio de un contrato inteligente es que ejecuta de manera determinista un código inequívoco, sin interpretación humana ni prejuicios.",
+ "smart-contracts-3-b-label": "Registro público",
+ "smart-contracts-3-b-explanation": "Con los contratos inteligentes en una cadena de bloques pública, cualquiera puede rastrear de forma instantánea las transferencias de activos y otro tipo de información relacionada.",
+ "smart-contracts-3-c-label": "Protección de la privacidad",
+ "smart-contracts-3-c-explanation": "Como las cadenas de bloques son redes seudónimas, las transacciones están vinculadas públicamente a una direccion criptográfica única, no a una identidad.",
+ "smart-contracts-3-d-label": "Capacidad de cambiar",
+ "smart-contracts-3-d-explanation": "Un contrato inteligente no puede cambiarse una vez creado, está garantizado para ejecutarse de acuerdo a las reglas definidas previamente en su código.",
+ "smart-contracts-4-prompt": "¿Cúal NO es una aplicación para los contratos inteligentes?",
+ "smart-contracts-4-a-label": "Monedas estables",
+ "smart-contracts-4-a-explanation": "Las monedas estables son tókenes que se definen y rastrean usando contratos inteligentes.",
+ "smart-contracts-4-b-label": "Cambios de protocolo",
+ "smart-contracts-4-b-explanation": "Mientras que los cambios en el protocolo pueden llevarse a cabo usando contratos inteligentes, su creación y definición se proponen a través de foros en línea transparentes y se implementan en el software de cliente.",
+ "smart-contracts-4-c-label": "Tókenes No Fungibles (NFT)",
+ "smart-contracts-4-c-explanation": "Los contratos inteligentes sirven para definir una amplia gama de NFT, desde arte digítal, hasta activos que representan un certificado de propiedad.",
+ "smart-contracts-4-d-label": "Intercambio abierto de monedas",
+ "smart-contracts-4-d-explanation": "Los intercambios descentralizados (DEX) se basan en contratos inteligentes para operar sin un control centralizado."
}
From b3743bfa67bf45b50b073a07431b5e829415dd0d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:38 -0300
Subject: [PATCH 039/589] update(i18n):
src/intl/es/page-contributing-translation-program-acknowledgements.json
---
.../page-contributing-translation-program-acknowledgements.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/intl/es/page-contributing-translation-program-acknowledgements.json b/src/intl/es/page-contributing-translation-program-acknowledgements.json
index c15f305e1d0..b5bb8cc889f 100644
--- a/src/intl/es/page-contributing-translation-program-acknowledgements.json
+++ b/src/intl/es/page-contributing-translation-program-acknowledgements.json
@@ -7,7 +7,7 @@
"page-contributing-translation-program-acknowledgements-acknowledgement-page-4": "Los traductores más activos en un período determinado también ocuparán un lugar destacado en la Tabla de clasificación.",
"page-contributing-translation-program-acknowledgements-acknowledgement-page-5": "Traductores profesionales o en ciernes, así como estudiantes de traducción y especialistas en idiomas que quieran añadir un nuevo campo de experiencia pueden solicitar su Certificado de traductor, para certificar su colaboración al sitio web.",
"page-contributing-translation-program-acknowledgements-cert-title": "Certificado",
- "page-contributing-translation-program-acknowledgements-cert-1": "Queremos reconocer la labor de nuestros traductores y apoyar su carrera. Con esto en mente, hemos diseñado el Certificado de traductor de ethereum.org.",
+ "page-contributing-translation-program-acknowledgements-cert-1": "Queremos reconocer a nuestros traductores y apoyarles en sus carreras. Con esto en mente, hemos diseñado el certificado de traductor de ethereum.org.",
"page-contributing-translation-program-acknowledgements-cert-2": "El certificado está destinado a traductores profesionales y en ciernes que quieran utilizarlo como referencia; demostrar su experiencia en la traducción del contenido técnico; o simplemente mostrar su dedicación a Ethereum.",
"page-contributing-translation-program-acknowledgements-cert-3": "Si ha colaborado con el Programa de traducción y ha traducido más de 5.000 palabras, puede solicitar su Certificado de traductor escribiéndonos a translations@ethereum.org. Su mensaje debe incluir un enlace a su cuenta de Crowdin y su nombre completo (o seudónimo, si lo prefiere), que añadiremos al certificado.",
"page-contributing-translation-program-acknowledgements-hero-image-alt": "Imagen del Programa de traducción hero shiba",
From 7fee5c104931cc820e54e6516f56300afe5962bc Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:39 -0300
Subject: [PATCH 040/589] update(i18n):
src/intl/es/page-trillion-dollar-security.json
---
.../es/page-trillion-dollar-security.json | 196 ++++++++++++++++++
1 file changed, 196 insertions(+)
create mode 100644 src/intl/es/page-trillion-dollar-security.json
diff --git a/src/intl/es/page-trillion-dollar-security.json b/src/intl/es/page-trillion-dollar-security.json
new file mode 100644
index 00000000000..05904db322e
--- /dev/null
+++ b/src/intl/es/page-trillion-dollar-security.json
@@ -0,0 +1,196 @@
+{
+ "page-trillion-dollar-security-meta-title": "Proyecto de seguridad del billón de dólares: informe general de retos de seguridad",
+ "page-trillion-dollar-security-meta-description": "El proyecto 1TS es un esfuerzo a nivel de todo el ecosistema para mejorar la seguridad de Ethereum. Este informe examina los desafíos de seguridad existentes a los que se enfrenta el ecosistema.",
+ "page-trillion-dollar-security-subtitle": "Proyecto de seguridad del billón de dólares",
+ "page-trillion-dollar-security-title": "Descripción general de los desafíos de seguridad",
+ "page-trillion-dollar-security-hero-paragraph-1": "Ethereum es el ecosistema de cadena de bloques más seguro, resiliente y de confianza. Durante los últimos 10 años, el ecosistema de Ethereum ha desarrollado la tecnología, los estándares y el conocimiento que hoy sustentan un ecosistema utilizado por millones de personas y que alberga más de 600.000 millones de dólares en capital.",
+ "page-trillion-dollar-security-hero-paragraph-2": "Pero para que Ethereum tenga éxito en la próxima fase de adopción global, aún deben realizarse muchas mejoras. Para alcanzar las ambiciones de nuestra comunidad, Ethereum debe convertirse en un ecosistema donde:",
+ "page-trillion-dollar-security-hero-paragraph-3": "Miles de millones de personas se sientan cómodas teniendo cada una más de Usd 1000 en cadena, sumando colectivamente billones de dólares asegurados en Ethereum.",
+ "page-trillion-dollar-security-hero-paragraph-4": "Empresas, instituciones y gobiernos se sienten cómodos almacenando más de 1 billón de dólares de valor dentro de un solo contrato o aplicación, y se sienten cómodos realizando transacciones por montantes similares.",
+ "page-trillion-dollar-security-hero-paragraph-5": "El projecto de seguridad de un billón de dólares (1TS) es un esfuerzo de todo el ecosistema para mejorar la seguridad de Ethereum. Este informe es la primera entrega del proyecto 1TS. Durante el último mes, hemos recopilado comentarios de los usuarios, desarrolladores, expertos en seguridad e instituciones acerca de dónde ven los mayores desafíos y áreas por mejorar.",
+ "page-trillion-dollar-security-hero-paragraph-6": "Este informe resume nuestros hallazgos, cubriendo 6 áreas distintas:",
+ "page-trillion-dollar-security-report-card-title": "Informe general de seguridad del ecosistmea de Ethereum",
+ "page-trillion-dollar-security-download-report": "Descargar PDF",
+ "page-trillion-dollar-security-divider-heading": "Informe general de seguridad del ecosistmea de Ethereum",
+ "page-trillion-dollar-security-sticky-info": "Esta es información fija para la sección {section}. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque euismod, urna eu tincidunt consectetur.",
+ "page-trillion-dollar-security-content-overview-title": "Resumen",
+ "page-trillion-dollar-security-user-experience-title": "Experiencia de usuario (UX)",
+ "page-trillion-dollar-security-user-experience-description": "Problemas que afectan a la capacidad del usuario de administrar claves privadas de forma segura, interactuar con aplicaciones en cadena y firmar transacciones.",
+ "page-trillion-dollar-security-smart-contract-title": "Seguridad en contratos inteligentes",
+ "page-trillion-dollar-security-smart-contract-description": "La seguridad en los componentes de los contratos inteligentes de las aplicaciones de Ethereum y el ciclo de vida en la producción del software que les da forma.",
+ "page-trillion-dollar-security-infrastructure-title": "Infraestructura y seguridad en la nube",
+ "page-trillion-dollar-security-infrastructure-description": "Problemas con la infraestructura (tanto como la cripto como la hereditaria) de la que dependen las aplicaciones de Ethereum, como redes de capa (L2), RPC, servicios de alojamiento en la nube y más.",
+ "page-trillion-dollar-security-consensus-title": "Protocolo de consenso",
+ "page-trillion-dollar-security-consensus-description": "Las propiedades de seguridad del núcleo del protocolo en si, las cuales protegen a la cadena de bloques de Ethereum de ataques o manupulaciones.",
+ "page-trillion-dollar-security-incident-title": "Monitoreo, respuesta a incidentes y mitigación",
+ "page-trillion-dollar-security-incident-description": "Los desafíos que afrontan tanto usuarios como empresas en respuesta a violaciones de seguridad, particularmente en la recuperación de fondos o en el manejo de las secuelas.",
+ "page-trillion-dollar-security-social-title": "Capa social y de gobernanza",
+ "page-trillion-dollar-security-social-description": "Gobernanza de código abierto, comunidad y ecosistema de empresas de Ethereum.",
+ "page-trillion-dollar-security-hero-closing-paragraph-1": "El primer informe se centra en identificar y delimitar los problemas y desafíos que aún existen. El siguiente paso será elegir los problemas de mayor prioridad, identificar soluciones y trabajar con el ecosistema para abordarlos.",
+ "page-trillion-dollar-security-hero-closing-paragraph-2": "Debido a que el ecosistema Ethereum es descentralizado, la seguridad de Ethereum no es algo que una única entidad pueda garantizar. La pila tecnológica de Ethereum está construida y mantenida por empresas independientes de todo el mundo, que abarcan desde carteras a infraestructuras pasando por herramientas para desarrolladores. Si bien el proyecto 1TS lo coordina Ethereum Foundation, necesitamos su ayuda para garantizar la seguridad de Ethereum.",
+ "page-trillion-dollar-security-hero-closing-paragraph-3": "Usted puede contribuir al projecto de seguridad 1TS compartiendo sus comentarios e ideas:",
+ "page-trillion-dollar-security-feedback-question-1": "¿Hay problemas de seguridad en Ethereum que vea y que no estén incluidos en este informe?",
+ "page-trillion-dollar-security-feedback-question-2": "¿Cuáles cree que son las máximas prioridades de los problemas estudiados a continuación?",
+ "page-trillion-dollar-security-feedback-question-3": "¿Qué ideas o soluciones se le ocurren para resolverlos?",
+ "page-trillion-dollar-security-contact-paragraph": "Estamos deseosos de saber de usted en trilliondollarsecurity@ethereum.org.",
+ "page-trillion-dollar-security-section-1-intro": "La seguridad comienza con la interfaz que la gente utiliza para interactuar con Ethereum. Este límite entre los usuarios y la cadena de bloques en sí misma es una fuente constante de desafíos de seguridad.",
+ "page-trillion-dollar-security-section-1-paragraph-1": "Una característica determinante de las cadenas de bloques es la naturaleza atómica de las transacciones: una vez que se registra una actualización en la cadena de bloques, no hay posibilidad de intervención ni reversión. Esto proporciona garantías sólidas de consistencia y seguridad a nivel de protocolo, pero expone a los usuarios a un mayor riesgo operativo: un solo error, una clave comprometida o una aprobación precipitada pueden provocar pérdidas irreversibles.",
+ "page-trillion-dollar-security-section-1-paragraph-2": "Como resultado, el usuario debe asumir una responsabilidad considerable en cuanto a la seguridad. Para utilizar Ethereum de forma segura, los particulares y las organizaciones deben conservar y gestionar las claves de forma segura, interactuar con aplicaciones en cadena y utilizar sus claves para firmar transacciones con el fin de transferir activos o actualizar el estado de Ethereum.",
+ "page-trillion-dollar-security-section-1-paragraph-3": "Cada uno de estos requisitos conlleva riesgos como el comprometimiento o la pérdida de claves, aprobaciones precipitadas o desinformadas, o el compromiso del software de la cartera en el que los usuarios se basan para informarse y guiarse en su interacción con Ethereum.",
+ "page-trillion-dollar-security-section-1-1-title": "1.1. Gestión de claves",
+ "page-trillion-dollar-security-section-1-1-paragraph-1": "Muchos usarios no estan equipados para gestionar de manera segura las claves criptográficas.",
+ "page-trillion-dollar-security-section-1-1-paragraph-2": "Las carteras de software más utilizadas dependen de que los usuarios almacenen de forma segura las frases semilla (de recuperación) que constituyen su clave privada criptográfica subyacente; lo que a menudo les lleva a utilizar soluciones poco seguras, como almacenar las frases semilla en texto no cifrado, en servicios en la nube o anotarlas en papel.",
+ "page-trillion-dollar-security-section-1-1-paragraph-3": "Las carteras de hardware son una alternativa que permite a los usuarios gestionar una clave criptográfica almacenada en un dispositivo físico de uso específico. Sin embargo, las carteras de hardware tienen sus propios defectos y superficie de ataque. Las carteras de hardware pueden extraviarse, dañarse o robarse. Muchas carteras de hardware no son de código abierto ni pueden tener cadenas de suministro opacas, aumentando el riesgo de un ataque a la cadena de suministro en la que se comercializan dispositivos comprometidos en el mercado.",
+ "page-trillion-dollar-security-section-1-1-paragraph-4": "Ya se administren las claves en una cartera de software o de hardware, muchos usuarios están razonablemente nerviosos acerca de la autocustodia, cuando puede comprometerse a través del robo físico o el asalto.",
+ "page-trillion-dollar-security-section-1-1-paragraph-5": "Los usuarios empresariales e institucionales se enfrentan a desafíos adicionales en la gestión de claves. Si los colaboradores disponen de claves (por ejemplo, como parte de una cartera multisig), la organización debe ser capaz de reemplazarlas y crear nuevas claves, debido a los cambios de personal a lo largo del tiempo. Los requisitos de cumplimiento normativo en diferentes sectores y jurisdicciones pueden exigir flujos de trabajo personalizados o registros de auditoría que no son compatibles con el software de cartera existente. En algunos casos, los usuarios empresariales recurren a terceros para la custodia de activos digitales, lo que puede introducir otra capa de riesgos de seguridad a tener en cuenta.",
+ "page-trillion-dollar-security-section-1-2-title": "1.2 Firma a ciegas e incertidunmbre en las transacciones",
+ "page-trillion-dollar-security-section-1-2-paragraph": "Los usuarios suelen aprobar transacciones «a ciegas», sin comprender lo que están haciendo. Las careteras a menudo muestran datos hexadecimales brutos, direcciones de contrato truncadas u otra información que no es suficiente para que el usuario comprenda las consecuencias de una transacción en particular. Esto expone a todo tipo de usuarios a contratos inteligentes maliciosos, phishing, estafas, interfaces falsas, vulnerabilidades en la interfaz de usuario y errores de usuario básicos.",
+ "page-trillion-dollar-security-section-1-3-title": "1.3 Administración de aprobaciones y permisos",
+ "page-trillion-dollar-security-section-1-3-paragraph-1": "En muchas aplicaciones de Ethereum, es común que los usuarios concedan ciertos permisos a la aplicación subyacente como parte del uso normal. Por ejemplo, un usuario podría conceder permiso a una plataforma de intercambio descentralizada como Uniswap para mover sus tókenes con el fin de intercambiarlos por ETH.",
+ "page-trillion-dollar-security-section-1-3-paragraph-2": "Estas aprobaciones pueden tener límites en cuanto a la cantidad, pero muchas carteras conceden por defecto aprobaciones ilimitadas sin fecha de caducidad. Los usuarios no tienen forma de gestionar o revisar sus aprobaciones pendientes en la mayoría de las carteras.",
+ "page-trillion-dollar-security-section-1-3-paragraph-3": "Esto puede exponer a los usuarios a aplicaciones maliciosas o frontends comprometidos, porque el patrón predeterminado para muchos usuarios es otorgar aprobaciones ilimitadas que pueden usarse para drenar sus fondos. Incluso si un usuario otorga una aprobación a un contrato inteligente legítimo, si ese contrato se comprometió más tarde mientras la aprobación permanece en su lugar, el contrato comprometido podría agotar los fondos del usuario.",
+ "page-trillion-dollar-security-section-1-3-paragraph-4": "Esto también supone un riesgo para los usuarios de la empresa. Por ejemplo, una empresa podría optar por otorgar una asignación de USDC ilimitada de router DEX para conveniencia operativa, que luego los expone a riesgos si se actualiza el contrato del enrutador.",
+ "page-trillion-dollar-security-section-1-4-title": "1.4 Interfaces web comprometidas",
+ "page-trillion-dollar-security-section-1-4-paragraph-1": "La mayoría de los usuarios no interactúan directamente con un contrato inteligente, sino a través de una interfaz web a través de su dispositivo móvil o navegador web.",
+ "page-trillion-dollar-security-section-1-4-paragraph-2": "Estos frontends pueden ser vulnerables a atacar a través de medios familiares como secuestro de DNS, inyección de JavaScript maliciosa, alojamiento inseguro o varias dependencias de terceros. Una aplicación comprometida UX puede redirigir a los usuarios de todo tipo a contratos inteligentes maliciosos o llevarlos a firmar transacciones engañosas.",
+ "page-trillion-dollar-security-section-1-5-title": "1.5 Privacidad",
+ "page-trillion-dollar-security-section-1-5-paragraph-1": "La privicidad puede mitigar a magnificar los riesgos de seguridad para usarios de todo tipo.",
+ "page-trillion-dollar-security-section-1-5-paragraph-2": "Las protecciones de privacidad más débiles exponen a los usuarios individuales a una variedad de amenazas específicas como phishing, explotación, estafas o ataques físicos. Muchos patrones comunes de UX exponen a los usuarios, por ejemplo, reutilización de direcciones, datos de KYC y otras filtraciones de metadatos.",
+ "page-trillion-dollar-security-section-1-5-paragraph-3": "Para las instituciones y empresas, la privacidad es a menudo un requisito comercial fundamental por razones de cumplimiento o ciertos casos de uso. Además de esos problemas, puede crear exposición a riesgos de seguridad específicos. Por ejemplo, un usuario de un sistema de cadena de suministro construido en Ethereum puede requerir fuertes garantías de privacidad para proteger los activos de propiedad intelectual que podrían verse comprometidos si el sistema fuera transparente.",
+ "page-trillion-dollar-security-section-1-6-title": "1.6 Fragmentación",
+ "page-trillion-dollar-security-section-1-6-paragraph-1": "Hay una falta de consistencia en cómo las diferentes carteras manejan comportamientos centrales como mostrar transacciones, manejar aprobaciones o etiquetar contratos. Esta fragmentación de la experiencia del usuario agrega fricción a la capacidad del usuario para aprender a usar carteras de forma segura y aumenta los riesgos.",
+ "page-trillion-dollar-security-section-1-6-paragraph-2": "Por ejemplo, los usuarios no pueden confiar en señales de UX consistentes para protegerse del phishing y de la suplantación, ya que difieren por las carteras. Los usuarios no pueden formar expectativas fiables sobre cómo funciona Ethereum si cada herramienta funciona de manera diferente.",
+ "page-trillion-dollar-security-section-2-intro": "Los contratos inteligentes son los componentes de la cadena de las aplicaciones Ethereum: el código que posee fondos, define los controles de acceso y hace cumplir la lógica comercial de la aplicación. Debido a que los contratos inteligentes suelen ser transparentes y accesibles para cualquier persona, son una superficie de ataque crítico cuando se consideran la seguridad en el ecosistema de Ethereum.",
+ "page-trillion-dollar-security-section-2-paragraph-1": "La seguridad del contrato inteligente ha mejorado radicalmente sobre la historia de Ethereum. Los primeros incidentes de seguridad como el DAO Hack motivaron el ecosistema para profesionalizar y mejorar las salvaguardas en todo el ciclo de vida del software que lleva al código que se implementa en la cadena. Los avances clave incluyen:",
+ "page-trillion-dollar-security-section-2-list-1": "La auditoría de seguridad se convirtió en una práctica estándar, con varias firmas de seguridad introducidas en el ecosistema y desarrollando experiencias.",
+ "page-trillion-dollar-security-section-2-list-2": "Las herramientas, pruebas y sistemas de análisis estáticos maduraron y se convirtieron en práctica estándar.",
+ "page-trillion-dollar-security-section-2-list-3": "Las bibliotecas de componentes comunes preauditados proporcionaron a los desarrolladores bloques de construcción predeterminados seguros.",
+ "page-trillion-dollar-security-section-2-list-4": "Se adoptaron técnicas de verificación formales, especialmente para puentes, sistemas de participación y contratos de alto valor.",
+ "page-trillion-dollar-security-section-2-list-5": "La cultura de seguridad y las prácticas aconsejadas del ecosistema mejoraron.",
+ "page-trillion-dollar-security-section-2-list-6": "La creación de programas de recompensas significativos que endurecieron la capa de la aplicación.",
+ "page-trillion-dollar-security-section-2-paragraph-2": "Sin embargo, sigue habiendo debilidades y áreas de mejora en este campo.",
+ "page-trillion-dollar-security-section-2-1-title": "2.1 Vulnerabilidades de contratos",
+ "page-trillion-dollar-security-section-2-1-paragraph": "A pesar de los avances en la seguridad de los contratos inteligentes, todavía hay vulnerabilidades que pueden conducir a importantes problemas de seguridad, incluyendo:",
+ "page-trillion-dollar-security-section-2-1-list-title-1": "El riesgo de mejora del contrato",
+ "page-trillion-dollar-security-section-2-1-list-desc-1": "Algunos contratos están diseñados para poder modificarse después de la implementación y así permitir que un equipo de desarrollo continúe actualizando y mejorando la aplicación. Sin embargo, esto no está exento de riesgos: las actualizaciones podrían producir nuevas vulnerabilidades o la pérdida total de fondos del usuario en el caso de una actualización maliciosa.",
+ "page-trillion-dollar-security-section-2-1-list-title-2": "Reingreso",
+ "page-trillion-dollar-security-section-2-1-list-desc-2": "cuando el contrato A invoca a un contrato externo B antes de actualizar su propio estado interno, y el contrato B vuelve al contrato original A antes de que finalice la primera invocación.",
+ "page-trillion-dollar-security-section-2-1-list-title-3": "Uso inseguro de bibliotecas externas",
+ "page-trillion-dollar-security-section-2-1-list-desc-3": "donde un contrato invoca a una biblioteca externa que puede ser no auditada, maliciosa o actualizable.",
+ "page-trillion-dollar-security-section-2-1-list-title-4": "Componentes no auditados",
+ "page-trillion-dollar-security-section-2-1-list-desc-4": "Mientras que la auditoría y el uso de bibliotecas estándar han mejorado, los desarrolladores a veces dependen de componentes no auditados en sus aplicaciones.",
+ "page-trillion-dollar-security-section-2-1-list-title-5": "Fallos en el control de accesos",
+ "page-trillion-dollar-security-section-2-1-list-desc-5": "donde los permisos se configuran incorrectamente o se definen de manera demasiado amplia, lo que permite a los atacantes realizar acciones maliciosas.",
+ "page-trillion-dollar-security-section-2-1-list-title-6": "Acceso no autorizado",
+ "page-trillion-dollar-security-section-2-1-list-desc-6": "cuando un actor malicioso obtiene una clave privada que puede controlar el contrato.",
+ "page-trillion-dollar-security-section-2-1-list-title-7": "Puentes e interacciones entre cadenas",
+ "page-trillion-dollar-security-section-2-1-list-desc-7": "Los puentes y los protocolos de cadenas cruzadas introducen una complejidad adicional, y los atacantes pueden explotar las debilidades en la forma en que se pasan o validan los mensajes de cadena cruzada.",
+ "page-trillion-dollar-security-section-2-1-list-title-8": "Delegación de cuenta de propiedad externa (EOA) o uso indebido de la firma",
+ "page-trillion-dollar-security-section-2-1-list-desc-8": "Las aplicaciones maliciosas pueden engañar a los usuarios para que inicien sesión en la delegación completa de su cuenta a otra parte, lo que permite el robo. Las aplicaciones maliciosas también pueden usar mensajes firmados del usuario de maneras inesperadas, por ejemplo, en un ataque de repetición.",
+ "page-trillion-dollar-security-section-2-1-list-title-9": "Riesgo emergente de errores introducidos por la generación de código de IA o herramientas automatizadas de refactorización",
+ "page-trillion-dollar-security-section-2-2-title": "2.2 Experiencia del desarrollador, herramientas y lenguajes de programación",
+ "page-trillion-dollar-security-section-2-2-paragraph": "Las vulnerabilidades terminan en el código implementado como resultado de un error del desarrollador. La mejora de las herramientas para desarrolladores ha facilitado significativamente la implementación de contratos inteligentes seguros. Sin embargo, los problemas persisten.",
+ "page-trillion-dollar-security-section-2-2-list-title-1": "Falta de valores predeterminados seguros en los marcos populares",
+ "page-trillion-dollar-security-section-2-2-list-desc-1": "Algunas herramientas priorizan la flexibilidad o la velocidad sobre la seguridad, estableciendo valores predeterminados inseguros como aprobaciones de tókenes ilimitadas en la función approve(), o el no incluir patrones de control de acceso por defecto.",
+ "page-trillion-dollar-security-section-2-2-list-title-2": "Código personalizado para controles operativos avanzados",
+ "page-trillion-dollar-security-section-2-2-list-desc-2": "Los usuarios institucionales con requisitos operativos complejos a menudo deben crear las características requeridas desde cero, lo que aumenta el riesgo de vulnerabilidades. Hay una falta de componentes o marcos seguros estandarizados para flujos de trabajo de seguridad avanzados.",
+ "page-trillion-dollar-security-section-2-2-list-title-3": "Cobertura de pruebas inconsistentes",
+ "page-trillion-dollar-security-section-2-2-list-desc-3": "a través de las pilas de herramientas, así como la falta de normas en torno al uso de técnicas probadas como la técnica del «fuzzing» o el control de invariante.",
+ "page-trillion-dollar-security-section-2-2-list-title-4": "Baja adopción de métodos de verificación formal",
+ "page-trillion-dollar-security-section-2-2-list-desc-4": "Las técnicas de verificación formal son potentes, a la par que complejas, costosas, requieren experiencia especializada en el dominio y no están bien integradas en los flujos de trabajo estándar del desarrollador, donde podrían usarse mucho antes en la producción de software para verificar la seguridad en la etapa de especificación.",
+ "page-trillion-dollar-security-section-2-2-list-title-5": "Problemas relacionados con la verificación del contrato",
+ "page-trillion-dollar-security-section-2-2-list-desc-5": "Los usuarios y desarrolladores no pueden evaluar fácilmente la fiabilidad de los contratos implementados, el alcance de su validación de seguridad (por ejemplo, auditorías de código), o la presencia de riesgos latentes. Si bien existen soluciones para este propósito, quedan muchos problemas. Las herramientas que abordan estos problemas no se adoptan ampliamente, los estándares que unificarían los enfoques siguen siendo fragmentados y algunos de los servicios existentes son en sí mismos dependencias centralizadas.",
+ "page-trillion-dollar-security-section-2-2-list-title-6": "Riesgos del compilador",
+ "page-trillion-dollar-security-section-2-2-list-desc-6": "Los compiladores (el software que convierte el código legible por humanos como Solidity en el código de bytes utilizado por la propia EVM) pueden tener defectos que introducen errores en los contratos inteligentes antes de que se implementen. El ecosistema Ethereum hoy en día depende principalmente del compilador solc, lo que significa que un error podría tener efectos generalizados.",
+ "page-trillion-dollar-security-section-2-2-list-title-7": "Diversidad y profundidad del lenguaje de programación",
+ "page-trillion-dollar-security-section-2-2-list-desc-7": "Si bien Solidity tiene un profundo ecosistema de herramientas construido sobre él, algunos desarrolladores quieren características de seguridad más modernas que se encuentran en otros lenguajes de programación, como la seguridad de la memoria.",
+ "page-trillion-dollar-security-section-2-3-title": "2.3 Evaluación de riesgos del código en cadena",
+ "page-trillion-dollar-security-section-2-3-paragraph": "Las instituciones y empresas tienen procesos, estándares y requisitos existentes para evaluar la seguridad de la tecnología y los sistemas de los que dependen. Sin embargo, los marcos existentes a menudo no se asignan de forma limpia a los contratos inteligentes, generalmente asumiendo un código mutable, un control de cambio centralizado y líneas claras de asunción o responsabilidad legal. Los sistemas construidos sobre contratos inteligentes a veces pueden romper esas suposiciones, lo que dificulta que las organizaciones adopten Ethereum y gestionen el riesgo de manera adecuada.",
+ "page-trillion-dollar-security-section-3-intro": "Muchos usos de Ethereum dependen de una variedad de proveedores de infraestructura, incluida la infraestructura específica de las criptomonedas (por ejemplo, cadenas de capa 2, proveedores de RPC) y la infraestructura tradicional de nube e internet (por ejemplo, AWS, CDN, DNS).",
+ "page-trillion-dollar-security-section-3-paragraph-1": "Estos sistemas son una superficie de ataque tanto para la cartera como para la capa de aplicación (por ejemplo, puntos finales RPC para carteras) como para el propio protocolo Ethereum (por ejemplo, muchos validadores están alojados en infraestructura en la nube). El compromiso de la clave privada, el phishing y la falta de controles de acceso granulares pueden provocar interrupciones a gran escala, robos o cambios no autorizados, incluso si el protocolo de cadena de bloques subyacente sigue siendo seguro.",
+ "page-trillion-dollar-security-section-3-1-title": "3.1 Cadenas de capa 2",
+ "page-trillion-dollar-security-section-3-1-paragraph": "Las cadenas de capa 2 (L2) sirven como extensiones para Ethereum, lo que permite entornos de tarifas más rápidos y de menor frecuencia, al tiempo que conservan algunas de las garantías de seguridad características de la red principal de Ethereum (dependiendo de su diseño específico). Sin embargo, también tienen sus propias superficies de ataque distintas, incluyendo:",
+ "page-trillion-dollar-security-section-3-1-list-title-1": "Complejidad de activos puenteados de múltiples saltos",
+ "page-trillion-dollar-security-section-3-1-list-desc-1": "Cuando los activos viajan entre L1 y múltiples L2, están expuestos a múltiples conjuntos de contratos, que deben ser seguros todos ellos. La contabilidad que no cuadra o las interrupciones en las cadenas L2 pueden introducir vulnerabilidades a merced de los atacantes.",
+ "page-trillion-dollar-security-section-3-1-list-title-2": "Los rollup L2 dependen de sistemas de prueba para asegurar la exactitud de las actualizaciones de estado",
+ "page-trillion-dollar-security-section-3-1-list-desc-2": "Los errores o configuraciones erróneas en estos sistemas pueden detener o impedir la finalización, o permitir la finalización de actualizaciones de estado falsas que conducen a la pérdida de fondos de usuario.",
+ "page-trillion-dollar-security-section-3-1-list-title-3": "Los consejos de seguridad son grupos de titulares de claves que sirven como un mecanismo de «respaldo» para actualizar el software L2 o responder a ciertas emergencias",
+ "page-trillion-dollar-security-section-3-1-list-desc-3": "Los propios consejos de seguridad plantean riesgos, ya que el compromiso o la colusión entre los miembros podrían poner en riesgo los fondos de los usuarios o congelar los activos.",
+ "page-trillion-dollar-security-section-3-1-paragraph-2": "Consulte L2Beat para obtener un marco detallado y un panel de control que evalúa y compara el rendimiento y la seguridad de L2.",
+ "page-trillion-dollar-security-section-3-2-title": "3.2 RPC e infraestructura de nodos",
+ "page-trillion-dollar-security-section-3-2-paragraph-1": "Las aplicaciones de Ethereum dependen de un pequeño número de proveedores de infraestructura para el acceso a RPC, API y servicios de nodos. Esto incluye proveedores de infraestructura específicos de criptomonedas, así como servicios en la nube tradicionales que se utilizan comúnmente para alojar nodos (por ejemplo, AWS, Cloudflare, Hetzner).",
+ "page-trillion-dollar-security-section-3-2-paragraph-2": "Si estos proveedores de infraestructura se desconectaran o intentaran censurar o acelerar el acceso, a muchos usuarios se les podría impedir acceder a Ethereum a través de su cartera o aplicación, hasta que pudieran migrar a un nuevo RPC u otro proveedor de infraestructura. Algunos de estos proveedores han suspendido o cerrado previamente cuentas asociadas con la actividad de una cadena de bloques, lo que cuestiona su fiabilidad a largo plazo para aplicaciones descentralizadas.",
+ "page-trillion-dollar-security-section-3-3-title": "3.3 Vulnerabilidades dentro de DNS",
+ "page-trillion-dollar-security-section-3-3-paragraph": "El Sistema de nombres de dominio (DNS, en inglés) es una capa fundamental de internet, pero también está centralizado y puede verse comprometido. Muchos usuarios acceden a las aplicaciones a través de dominios web, que son susceptibles de:",
+ "page-trillion-dollar-security-section-3-3-list-1": "Secuestro de DNS donde un atacante inserta una interfaz falsa maliciosa.",
+ "page-trillion-dollar-security-section-3-3-list-2": "Apoderación de dominios, donde un gobierno o registrador puede incautar dominios.",
+ "page-trillion-dollar-security-section-3-3-list-3": "Phishing a través de dominios similares, donde los atacantes se registran cerca de nombres idénticos para confundir a los usuarios.",
+ "page-trillion-dollar-security-section-3-4-title": "3.4 Cadena de suministro de software y bibliotecas",
+ "page-trillion-dollar-security-section-3-4-paragraph": "Los desarrolladores de Ethereum confían en bibliotecas de código abierto, a menudo extraídas directamente de servicios como npm, crates.io o GitHub. Si estas bibliotecas se ven comprometidas, pueden ser un vector para ataques como:",
+ "page-trillion-dollar-security-section-3-4-list-title-1": "Inyección de paquete malicioso",
+ "page-trillion-dollar-security-section-3-4-list-desc-1": "cuando los atacantes comprometen un paquete ampliamente utilizado o publican uno con un nombre similar",
+ "page-trillion-dollar-security-section-3-4-list-title-2": "Dependencias secuestradas",
+ "page-trillion-dollar-security-section-3-4-list-desc-2": "cuando los encargados pierden el control de un proyecto y un actor malicioso introduce código dañino",
+ "page-trillion-dollar-security-section-3-4-list-title-3": "Compromiso del desarrollador",
+ "page-trillion-dollar-security-section-3-4-list-desc-3": "cuando los paquetes instalados contienen código que le da al atacante control sobre el ordenador del desarrollador.",
+ "page-trillion-dollar-security-section-3-5-title": "3.5 Servicios de entrega de frontend y riesgos relacionados",
+ "page-trillion-dollar-security-section-3-5-paragraph": "Muchas aplicaciones Ethereum sirven sus frontends a través de una red de entrega de contenido (CDN) o una plataforma de alojamiento basada en la nube (por ejemplo, Vercel, Netlify, CloudFlare). Si estos servicios se ven comprometidos, pueden ser un vector para ataques como la inyección de JavaScript maliciosa, donde los atacantes sirven una interfaz alterada a los usuarios.",
+ "page-trillion-dollar-security-section-3-6-title": "3.6 Censura dentro de los proveedores de servicios de internet",
+ "page-trillion-dollar-security-section-3-6-paragraph-1": "Los proveedores de servicios de Nternet (ISP) o los Estados nacionales pueden controlar la infraestructura de internet subyacente para censurar el acceso a Ethereum. Por ejemplo, estos ataques podrían incluir:",
+ "page-trillion-dollar-security-section-3-6-list-1": "Bloqueo o tráfico de embotellamiento a los puertos de Ethereum comunes",
+ "page-trillion-dollar-security-section-3-6-list-2": "Filtrando las solicitudes de DNS que resuelven a los servicios relacionados con Ethereum",
+ "page-trillion-dollar-security-section-3-6-list-3": "Prohibiciones de geofencing (o acotamiento virtual) o IP contra nodos Ethereum conocidos",
+ "page-trillion-dollar-security-section-3-6-list-4": "Inspección profunda de paquetes para identificar y censurar el tráfico relacionado con el protocolo de Ethereum",
+ "page-trillion-dollar-security-section-3-6-paragraph-2": "Muchas de estas técnicas básicas ya las están utilizando gobiernos autoritarios de todo el mundo para suprimir el acceso a la información, las herramientas de protesta o las criptomonedas hoy en día.",
+ "page-trillion-dollar-security-section-4-intro": "El protocolo de consenso de Ethereum define cómo la red actualiza el estado de la cadena de bloques de Ethereum y llega a un acuerdo. Este protocolo se encuentra en la base de lo que hace de Ethereum una plataforma fiable para el dinero, las finanzas, la identidad, la gobernanza y los activos del mundo real, entre otros aspectos.",
+ "page-trillion-dollar-security-section-4-paragraph-1": "El protocolo de consenso de Ethereum ha demostrado ser robusto en la práctica, con cero tiempo de inactividad desde el primer lanzamiento en 2015 y en varias actualizaciones. Sin embargo, quedan áreas a largo plazo por mejorar para que el sistema sea más resistente y seguro.",
+ "page-trillion-dollar-security-section-4-1-title": "4.1 Consenso de fragilidad y riesgos de recuperación",
+ "page-trillion-dollar-security-section-4-1-paragraph": "La elección de bifurcación de Ethereum y las normas de finalidad son resilientes, pero no vulnerables. En determinados casos extremos (como un desacuerdo prolongado con el validador, errores del cliente o particiones de la red) el consenso podría estancarse y divergir. En condiciones extremas, esto podría conllevar la difusión de penalizaciones de validador a través de fugas de inactividad o recortes, que por su parte pueden mermar la huida del capital de los validadores.",
+ "page-trillion-dollar-security-section-4-2-title": "4.2. Diversidad de clientes",
+ "page-trillion-dollar-security-section-4-2-paragraph": "La diversidad de clientes líderes en la industria de Ethereum protege la red de errores en cualquier cliente único. Sin embargo, la diversidad de los clientes aún podría mejorarse con una mayor adopción de clientes minoritarios para reducir aún más estos riesgos.",
+ "page-trillion-dollar-security-section-4-3-title": "4.3 Centralization de las participaciones y dominio de las reservas",
+ "page-trillion-dollar-security-section-4-3-paragraph": "Se concentra una cantidad significativa de peso de validador en protocolos de participaciones líquidas, servicios de custodia y grandes operadores de nodos. Esta concentración puede conducir a riesgos como:",
+ "page-trillion-dollar-security-section-4-3-list-1": "Captura o influencia de gobernanza. Si las entidades que controlan grandes cantidades de participación (o entidades con poder legal para influir en esas entidades) se coordinan juntas, podrían haber superado la influencia sobre la cual los bloques se proponen y atestiguan, censurando potencialmente a los usuarios o influyendo en las actualizaciones del protocolo.",
+ "page-trillion-dollar-security-section-4-3-list-2": "La homogeneidad en la elección del cliente y la configuración de la infraestructura, que puede aumentar los riesgos de fallo correlacionado.",
+ "page-trillion-dollar-security-section-4-4-title": "4.4 Recortes sociales indefinidos y brechas de coordinación",
+ "page-trillion-dollar-security-section-4-4-paragraph": "En algunos casos de fallo extremo, Ethereum recurriría al «slashing» o recorte social para penalizar a los validadores que actuaran maliciosamente para atacar la red (véase la sección 6.1). Sin embargo, la infraestructura, las normas y los procesos previstos para este tipo de slashing están poco desarrollados. No existe un mecanismo establecido que la comunidad pueda utilizar para participar en este proceso.",
+ "page-trillion-dollar-security-section-4-5-title": "4.5 Vectores de ataque económicos y de teoría de juegos",
+ "page-trillion-dollar-security-section-4-5-paragraph": "Muchos vectores potenciales de ataque económico siguen siendo poco estudiados, incluyendo:",
+ "page-trillion-dollar-security-section-4-5-list-1": "Ataques de griefing (o sabotaje) o recorte por sabotaje. Los validadores pueden incurrir en costes o reducir las sanciones no debido a sus propios fallos, sino a un comportamiento no deseado, destinado únicamente a dañar a otros a un coste neto para el atacante.",
+ "page-trillion-dollar-security-section-4-5-list-2": "Salidas estratégicas o inactividad programada . Los validadores podrían desconectarse intencionadamente o salir en momentos críticos para maximizar las ganancias o interrumpir el consenso con sanciones mínimas.",
+ "page-trillion-dollar-security-section-4-5-list-3": "Confabulación entre validadores o relés. El comportamiento coordinado entre los validadores o entre relés y validadores podría reducir la descentralización o extraer MEV.",
+ "page-trillion-dollar-security-section-4-5-list-4": "Explotación de incentivos de casos de borde en MEV, separación proponedor-constructor o diseño de participación líquida. Los actores pueden manipular condiciones de protocolo raras para obtener recompensas desproporcionadas.",
+ "page-trillion-dollar-security-section-4-6-title": "4.6 Riesgo cuántico",
+ "page-trillion-dollar-security-section-4-6-paragraph-1": "La criptografía principal de Ethereum (por ejemplo, firmas de curvas elípticas como secp256k1) podrían algún día romperla los ordenadores cuánticos. Si bien esto no es un riesgo inminente, una amenaza creíble podría hacer que las carteras, los contratos y las claves de participación existentes sean vulnerables al instante. Este desafío futuro debilita las garantías a largo plazo de Ethereum para los usuarios.",
+ "page-trillion-dollar-security-section-4-6-paragraph-2": "Las rutas de migración a la criptografía resistente a la cuántica (por ejemplo, a través de esquemas de firma poscuántica) deben diseñarse, probarse y posiblemente integrarse en el protocolo años antes de que sean necesarias. Las organizaciones de todo el ecosistema Ethereum, incluida Ethereum Foundation, están explorando activamente estas opciones y monitoreando los riesgos.",
+ "page-trillion-dollar-security-section-5-paragraph-1": "Incluso un ecosistema de cadena de bloque idealizado tendrá riesgos, ataques y vulnerabilidades. Cuando las cosas van mal, debe haber sistemas efectivos para mitigar, detectar y responder. Los desafíos aquí incluyen:",
+ "page-trillion-dollar-security-section-5-list-title-1": "Llegar al equipo afectado",
+ "page-trillion-dollar-security-section-5-list-desc-1": "Puede ser difícil ponerse en contacto con el equipo cuya aplicación se ha visto comprometida. Esto puede llevar a horas de retrasos, limitando la capacidad de los socorristas para recuperar fondos.",
+ "page-trillion-dollar-security-section-5-list-title-2": "Problemas de escalada en organizaciones relacionadas",
+ "page-trillion-dollar-security-section-5-list-desc-2": "Cuando el problema involucra una plataforma (como una red social o un intercambio centralizado), puede ser difícil que los participantes escalen el problema si no tienen un contacto preexistente.",
+ "page-trillion-dollar-security-section-5-list-title-3": "Coordinación de respuesta",
+ "page-trillion-dollar-security-section-5-list-desc-3": "A menudo no está claro cuántos equipos de respuesta a incidentes están ayudando a la aplicación afectada, lo que lleva a una falta de comunicación o a un esfuerzo desperdiciado cuando un esfuerzo grupal puede haber sido más efectivo.",
+ "page-trillion-dollar-security-section-5-list-title-4": "Falta de capacidades de control",
+ "page-trillion-dollar-security-section-5-list-desc-4": "Puede ser difícil monitorear los problemas en la cadena y fuera de la cadena, lo que proporcionaría una alerta temprana y garantizaría una respuesta rápida a las amenazas.",
+ "page-trillion-dollar-security-section-5-list-title-5": "Acceso al seguro",
+ "page-trillion-dollar-security-section-5-list-desc-5": "El seguro es una herramienta esencial para mitigar las pérdidas en la mayoría de los sistemas tradicionales que se ocupan del dinero, los sistemas financieros, la identidad y otra información valiosa. Sin embargo, hoy en día hay pocas opciones de seguro disponibles de los servicios financieros tradicionales para el ecosistema criptográfico.",
+ "page-trillion-dollar-security-section-6-intro": "La «capa social» de Ethereum se refiere al conjunto de personas, organizaciones, empresas, procesos de gobernanza y normas culturales que influyen en cómo se comporta el ecosistema Ethereum. Esta capa social es en sí misma vulnerable a ciertos ataques o riesgos, que luego pueden influir en la seguridad y fiabilidad de Ethereum.",
+ "page-trillion-dollar-security-section-6-paragraph-1": "Estos riesgos tienden a estar más orientados a largo plazo y conciernen a Ethereum en su conjunto más que a la seguridad de usuarios o aplicaciones individuales.",
+ "page-trillion-dollar-security-section-6-1-title": "6.1 Centralización de la participación",
+ "page-trillion-dollar-security-section-6-1-paragraph-1": "La centralización de grandes cantidades de participación puede plantear riesgos para Ethereum en su conjunto si las entidades que controlan esa participación deciden conspirar.",
+ "page-trillion-dollar-security-section-6-1-paragraph-2": "Esta centralización económica crea el potencial para la captura de la gobernanza social. Si un pequeño grupo de validadores controla una supermayoría de participación, podrían:",
+ "page-trillion-dollar-security-section-6-1-list-1": "Coordinar o resistir las bifuraciones.",
+ "page-trillion-dollar-security-section-6-1-list-2": "Censurar ciertas transacciones o contratos.",
+ "page-trillion-dollar-security-section-6-1-list-3": "Socorrar el consenso de la comunidad amenazando con la salida u oposición.",
+ "page-trillion-dollar-security-section-6-1-paragraph-3": "Si se diera este caso extremo, la comunidad de Ethereum ha sugerido que el recorte social podría ser la respuesta. Recorte social es el uso del consenso social fuera de la cadena para decidir recortar a los validadores que se comportan mal, como una comprobación de su poder. Pero no existen normas, procedimientos o herramientas claras para promulgar tales medidas (véase la sección 4.4).",
+ "page-trillion-dollar-security-section-6-2-title": "6.2 Centralización de activos fuera de la cadena",
+ "page-trillion-dollar-security-section-6-2-paragraph-1": "Ethereum alberga cantidades significativas de activos del mundo real, donde los activos se mantienen fuera de la cadena en cuentas bancarias u otros depósitos, que luego se negocian en cadena a través de tókenes que representan una reclamación sobre los activos fuera de la cadena. Por ejemplo, muchas monedas estables grandes funcionan de esta manera.",
+ "page-trillion-dollar-security-section-6-2-paragraph-2": "Las instituciones que tienen los depósitos fuera de la cadena pueden tener influencia sobre el ecosistema Ethereum. Por ejemplo, durante un escenario extremo en el que hay una bifurcación polémica o una actualización de la red, los grandes depositantes pueden influir en qué cadena se acepta ampliamente al elegir solo reconocer los tokens en una cadena u otra.",
+ "page-trillion-dollar-security-section-6-3-title": "6.3 Ataque o presión regulatoria",
+ "page-trillion-dollar-security-section-6-3-paragraph": "Los gobiernos y los reguladores podrían presionar a varias entidades que controlan componentes importantes de la pila de Ethereum para que censuren o interfieran de otra manera con el protocolo Ethereum. Los usuarios institucionales de Ethereum también podrían verse afectados por estas presiones, lo que tendría consecuencias adicionales para sus usuarios (por ejemplo, un banco que ya no puede ofrecer ciertos productos criptográficos debido a las prohibiciones reglamentarias).",
+ "page-trillion-dollar-security-section-6-4-title": "6.4 Captura organizativa de la gobernanza",
+ "page-trillion-dollar-security-section-6-4-paragraph-1": "Los procesos de gobernanza y desarrollo de código abierto de Ethereum están impulsados por un conjunto diverso y global de equipos y empresas que mantienen el software, la infraestructura y las herramientas principales del cliente.",
+ "page-trillion-dollar-security-section-6-4-paragraph-2": "Varias formas de influencia (adquisiciones corporativas, dependencias de financiación, empleo de contribuyentes clave, conflictos de intereses dentro de las empresas existentes) podrían cambiar gradualmente la cultura y las prioridades de la gobernanza de Ethereum. Esto puede conducir a una alineación con intereses comerciales o externos específicos que divergen del espíritu impulsado por la comunidad y la hoja de ruta establecida, debilitando potencialmente la neutralidad y la resistencia de Ethereum con el tiempo.",
+ "page-trillion-dollar-security-image-alt-hero": "Una visión futurista que muestra nodos de cadena de bloques interconectados y elementos de seguridad, que representan una seguridad de billones de dólares en el espacio de activos digitales",
+ "page-trillion-dollar-security-image-alt-report": "Imagen de portada del informe Trillion Dollar Security que muestra una moderna visualización de seguridad digital con elementos de cadena de bloques y conexiones de red"
+}
From 51f7101a90eaba1eba7b94e85d735cc16afa66f7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:41 -0300
Subject: [PATCH 041/589] update(i18n): src/intl/es/page-history.json
---
src/intl/es/page-history.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/intl/es/page-history.json b/src/intl/es/page-history.json
index f69f0a81da7..5696f8bd8af 100644
--- a/src/intl/es/page-history.json
+++ b/src/intl/es/page-history.json
@@ -2,6 +2,6 @@
"page-history-slot-number": "Número de ranura",
"page-history-block-number": "Número de bloque",
"page-history-epoch-number": "Número de época",
- "page-history-ethereum-org-wayback": "ethereum.org on waybackmachine",
- "page-history-eth-price": "Precio del ETH"
+ "page-history-ethereum-org-wayback": "ethereum.org en waybackmachine",
+ "page-history-eth-price": "Precio de ETH"
}
From f1d696d1808f5581f6b4c3ac8ae29ddfe81d729e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:43 -0300
Subject: [PATCH 042/589] update(i18n):
public/content/translations/es/developers/tutorials/ethereum-for-web2-auth/index.md
---
.../tutorials/ethereum-for-web2-auth/index.md | 886 ++++++++++++++++++
1 file changed, 886 insertions(+)
create mode 100644 public/content/translations/es/developers/tutorials/ethereum-for-web2-auth/index.md
diff --git a/public/content/translations/es/developers/tutorials/ethereum-for-web2-auth/index.md b/public/content/translations/es/developers/tutorials/ethereum-for-web2-auth/index.md
new file mode 100644
index 00000000000..106fe82d2c8
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/ethereum-for-web2-auth/index.md
@@ -0,0 +1,886 @@
+---
+title: Uso de Ethereum para autenticación web2
+description: Después de leer este tutorial, un desarrollador será capaz de integrar el inicio de sesión con Ethereum (web3) con el inicio de sesión SAML, un estándar utilizado en web2 para proporcionar inicio de sesión único (SSO) y otros servicios relacionados. Esto permite que el acceso a los recursos de web2 sea autenticado mediante firmas de Ethereum, con los atributos del usuario procedentes de atestaciones.
+author: Ori Pomerantz
+tags: [ "web 2.0", "autenticación", "eas" ]
+skill: beginner
+lang: es
+published: 30-04-2025
+---
+
+## Introducción
+
+[SAML](https://www.onelogin.com/learn/saml) es un estándar utilizado en web2 que permite a un [proveedor de identidad (IdP)](https://es.wikipedia.org/wiki/Identity_provider#SAML_identity_provider) proporcionar información de usuario a [proveedores de servicios (SP)](https://es.wikipedia.org/wiki/Service_provider_\(SAML\)).
+
+En este tutorial aprenderá cómo integrar firmas de Ethereum con SAML para permitir a los usuarios utilizar sus wallets de Ethereum para autenticarse en servicios web2 que aún no soportan Ethereum de forma nativa.
+
+Tenga en cuenta que este tutorial está escrito para dos públicos separados:
+
+- Personas del entorno Ethereum que entienden Ethereum y necesitan aprender sobre SAML
+- Personas de web2 que entienden SAML y autenticación web2 y necesitan aprender sobre Ethereum
+
+Como resultado, va a contener mucho material introductorio que usted ya conoce. Si lo desea, puede saltarse esas partes.
+
+### SAML para personas de Ethereum
+
+SAML es un protocolo centralizado. Un proveedor de servicios (SP) solo acepta aseveraciones (como "este es mi usuario John, debe tener permisos para hacer A, B y C") de un proveedor de identidad (IdP) si existe una relación de confianza previa ya sea con él, o con la [autoridad de certificación](https://www.ssl.com/article/what-is-a-certificate-authority-ca/) que firmó el certificado de ese IdP.
+
+Por ejemplo, el SP puede ser una agencia de viajes que proporciona servicios de viaje a empresas y el IdP puede ser el sitio web interno de una empresa. Cuando los empleados necesitan reservar viajes de negocios, la agencia de viajes los redirige para autenticarse con la empresa antes de permitirles reservar el viaje.
+
+
+
+Así es como las tres entidades, el navegador, el SP y el IdP, negocian el acceso. El SP no necesita saber nada sobre el usuario que utiliza el navegador de antemano, solo debe confiar en el IdP.
+
+### Ethereum para personas de SAML
+
+Ethereum es un sistema descentralizado.
+
+
+
+Los usuarios tienen una clave privada (normalmente guardada en una extensión del navegador). A partir de la clave privada se puede derivar una clave pública, y de esta una dirección de 20 bytes. Cuando los usuarios necesitan iniciar sesión en un sistema, se les solicita firmar un mensaje con un nonce (un valor de un solo uso). El servidor puede verificar que la firma fue creada por esa dirección.
+
+
+
+La firma solo verifica la dirección de Ethereum. Para obtener otros atributos del usuario, normalmente se utilizan [atestaciones](https://attest.org/). Una atestación normalmente tiene estos campos:
+
+- **Atestador**, la dirección que realizó la atestación
+- **Destinatario**, la dirección a la que se aplica la atestación
+- **Datos**, los datos que se atestiguan, como nombre, permisos, etc.
+- **Esquema**, el ID del esquema empleado para interpretar los datos.
+
+Debido a la naturaleza descentralizada de Ethereum, cualquier usuario puede realizar atestaciones. La identidad del atestador es importante para identificar qué atestaciones consideramos confiables.
+
+## Configuración
+
+El primer paso es disponer de un SP SAML y un IdP SAML que se comuniquen entre sí.
+
+1. Descargue el software. El software de ejemplo para este artículo está [en github](https://github.com/qbzzt/250420-saml-ethereum). Las distintas etapas están almacenadas en diferentes ramas; para esta etapa debe usar `saml-only`
+
+ ```sh
+ git clone https://github.com/qbzzt/250420-saml-ethereum -b saml-only
+ cd 250420-saml-ethereum
+ pnpm install
+ ```
+
+2. Cree claves con certificados autofirmados. Esto significa que la clave es su propia autoridad de certificación y debe importarse manualmente en el proveedor de servicios. Consulte [la documentación de OpenSSL](https://docs.openssl.org/master/man1/openssl-req/) para más información.
+
+ ```sh
+ mkdir keys
+ cd keys
+ openssl req -new -x509 -days 365 -nodes -sha256 -out saml-sp.crt -keyout saml-sp.pem -subj /CN=sp/
+ openssl req -new -x509 -days 365 -nodes -sha256 -out saml-idp.crt -keyout saml-idp.pem -subj /CN=idp/
+ cd ..
+ ```
+
+3. Inicie los servidores (tanto SP como IdP)
+
+ ```sh
+ pnpm start
+ ```
+
+4. Navegue al SP en la URL [http://localhost:3000/](http://localhost:3000/) y haga clic en el botón para ser redirigido al IdP (puerto 3001).
+
+5. Proporcione al IdP su dirección de correo electrónico y haga clic en **Iniciar sesión en el proveedor de servicios**. Verá que es redirigido de vuelta al proveedor de servicios (puerto 3000) y que este lo reconoce por su dirección de correo electrónico.
+
+### Explicación detallada
+
+Esto es lo que sucede, paso a paso:
+
+
+
+#### src/config.mts
+
+Este archivo contiene la configuración tanto para el Proveedor de Identidad como para el Proveedor de Servicios. Normalmente serían dos entidades diferentes, pero aquí podemos compartir el código por simplicidad.
+
+```typescript
+const fs = await import("fs")
+
+const protocol="http"
+```
+
+Por ahora solo estamos probando, así que está bien usar HTTP.
+
+```typescript
+export const spCert = fs.readFileSync("keys/saml-sp.crt").toString()
+export const idpCert = fs.readFileSync("keys/saml-idp.crt").toString()
+```
+
+Lea las claves públicas, que normalmente están disponibles para ambos componentes (y se confía en ellas directamente, o son firmadas por una autoridad de certificación confiable).
+
+```typescript
+export const spPort = 3000
+export const spHostname = "localhost"
+export const spDir = "sp"
+
+export const idpPort = 3001
+export const idpHostname = "localhost"
+export const idpDir = "idp"
+
+export const spUrl = `${protocol}://${spHostname}:${spPort}/${spDir}`
+export const idpUrl = `${protocol}://${idpHostname}:${idpPort}/${idpDir}`
+```
+
+Las URL de ambos componentes.
+
+```typescript
+export const spPublicData = {
+```
+
+Los datos públicos para el proveedor de servicios.
+
+```typescript
+ entityID: `${spUrl}/metadata`,
+```
+
+Por convención, en SAML el `entityID` es la URL donde la metadata de la entidad está disponible. Estos metadatos corresponden a los datos públicos aquí, excepto que están en formato XML.
+
+```typescript
+ wantAssertionsSigned: true,
+ authnRequestsSigned: false,
+ signingCert: spCert,
+ allowCreate: true,
+ assertionConsumerService: [{
+ Binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
+ Location: `${spUrl}/assertion`,
+ }]
+ }
+```
+
+La definición más importante para nuestros propósitos es `assertionConsumerServer`. Significa que para hacer una afirmación (por ejemplo, "el usuario que le envía esta información es somebody@example.com") al proveedor de servicios necesitamos usar [HTTP POST](https://www.w3schools.com/tags/ref_httpmethods.asp) a la URL `http://localhost:3000/sp/assertion`.
+
+```typescript
+export const idpPublicData = {
+ entityID: `${idpUrl}/metadata`,
+ signingCert: idpCert,
+ wantAuthnRequestsSigned: false,
+ singleSignOnService: [{
+ Binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST",
+ Location: `${idpUrl}/login`
+ }],
+ singleLogoutService: [{
+ Binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST",
+ Location: `${idpUrl}/logout`
+ }],
+ }
+```
+
+Los datos públicos para el proveedor de identidad son similares. Especifica que, para iniciar sesión, debe hacer POST a `http://localhost:3001/idp/login` y para cerrar sesión debe hacer POST a `http://localhost:3001/idp/logout`.
+
+#### src/sp.mts
+
+Este es el código que implementa un proveedor de servicios.
+
+```typescript
+import * as config from "./config.mts"
+const fs = await import("fs")
+const saml = await import("samlify")
+```
+
+Utilizamos la biblioteca [`samlify`](https://www.npmjs.com/package/samlify) para implementar SAML.
+
+```typescript
+import * as validator from "@authenio/samlify-node-xmllint"
+saml.setSchemaValidator(validator)
+```
+
+La biblioteca `samlify` espera tener un paquete que valide que el XML es correcto, firmado con la clave pública esperada, etc. Usamos [`@authenio/samlify-node-xmllint`](https://www.npmjs.com/package/@authenio/samlify-node-xmllint) para este propósito.
+
+```typescript
+const express = (await import("express")).default
+const spRouter = express.Router()
+const app = express()
+```
+
+Un [`Router`](https://expressjs.com/en/5x/api.html#router) de [`express`](https://expressjs.com/) es un "mini sitio web" que puede montarse dentro de un sitio web. En este caso, lo usamos para agrupar todas las definiciones del proveedor de servicios.
+
+```typescript
+const spPrivateKey = fs.readFileSync("keys/saml-sp.pem").toString()
+
+const sp = saml.ServiceProvider({
+ privateKey: spPrivateKey,
+ ...config.spPublicData
+})
+```
+
+La propia representación del proveedor de servicios consiste en todos los datos públicos y la clave privada que utiliza para firmar información.
+
+```typescript
+const idp = saml.IdentityProvider(config.idpPublicData);
+```
+
+Los datos públicos contienen todo lo que el proveedor de servicios necesita saber sobre el proveedor de identidad.
+
+```typescript
+spRouter.get(`/metadata`,
+ (req, res) => res.header("Content-Type", "text/xml").send(sp.getMetadata())
+)
+```
+
+Para facilitar la interoperabilidad con otros componentes SAML, los proveedores de servicios e identidad deben tener sus datos públicos (llamados metadatos) disponibles en formato XML en `/metadata`.
+
+```typescript
+spRouter.post(`/assertion`,
+```
+
+Esta es la página a la que accede el navegador para identificarse. La afirmación incluye el identificador del usuario (aquí usamos dirección de correo electrónico), y puede incluir atributos adicionales. Este es el manejador para el paso 7 en el diagrama de secuencia anterior.
+
+```typescript
+ async (req, res) => {
+ // console.log(`SAML response:\n${Buffer.from(req.body.SAMLResponse, 'base64').toString('utf-8')}`)
+```
+
+Puede usar el comando comentado para ver los datos XML proveídos en la afirmación. Está [codificado en base64](https://es.wikipedia.org/wiki/Base64).
+
+```typescript
+ try {
+ const loginResponse = await sp.parseLoginResponse(idp, 'post', req);
+```
+
+Analice la solicitud de inicio de sesión desde el servidor de identidad.
+
+```typescript
+ res.send(`
+
+
+
Hola ${loginResponse.extract.nameID}
+
+
+ `)
+ res.send();
+```
+
+Envíe una respuesta HTML, solo para mostrar al usuario que se recibió el inicio de sesión.
+
+```typescript
+ } catch (err) {
+ console.error('Error processing SAML response:', err);
+ res.status(400).send('SAML authentication failed');
+ }
+ }
+)
+```
+
+Informe al usuario en caso de fallo.
+
+```typescript
+spRouter.get('/login',
+```
+
+Cree una solicitud de inicio de sesión cuando el navegador intente acceder a esta página. Este es el manejador para el paso 1 en el diagrama de secuencia anterior.
+
+```typescript
+ async (req, res) => {
+ const loginRequest = await sp.createLoginRequest(idp, "post")
+```
+
+Obtenga la información para enviar una solicitud de inicio de sesión.
+
+```typescript
+ res.send(`
+
+
+
+```
+
+Esta página envía el formulario automáticamente (ver abajo). Así, el usuario no tiene que hacer nada para ser redirigido. Este es el paso 2 en el diagrama de secuencia anterior.
+
+```typescript
+
+
+
+ `)
+ }
+)
+
+app.use(express.urlencoded({extended: true}))
+```
+
+[Este middleware](https://expressjs.com/en/5x/api.html#express.urlencoded) lee el cuerpo de la [solicitud HTTP](https://www.tutorialspoint.com/http/http_requests.htm). Por defecto, express lo ignora porque la mayoría de las solicitudes no lo requieren. Lo necesitamos porque POST sí utiliza el cuerpo.
+
+```typescript
+app.use(`/${config.spDir}`, spRouter)
+```
+
+Monte el router en el directorio del proveedor de servicios (`/sp`).
+
+```typescript
+app.get("/", (req, res) => {
+ res.send(`
+
+
+
+
+
+ `)
+})
+```
+
+Si un navegador intenta acceder al directorio raíz, proporcione un enlace a la página de inicio de sesión.
+
+```typescript
+app.listen(config.spPort, () => {
+ console.log(`service provider is running on http://${config.spHostname}:${config.spPort}`)
+})
+```
+
+Escuche en el `spPort` con esta aplicación express.
+
+#### src/idp.mts
+
+Este es el proveedor de identidad. Es muy similar al proveedor de servicios; las explicaciones a continuación son para las partes que difieren.
+
+```typescript
+const xmlParser = new (await import("fast-xml-parser")).XMLParser(
+ {
+ ignoreAttributes: false, // Preserve attributes
+ attributeNamePrefix: "@_", // Prefix for attributes
+ }
+)
+```
+
+Necesitamos leer y comprender la solicitud XML que recibimos del proveedor de servicios.
+
+```typescript
+const getLoginPage = requestId => `
+```
+
+Esta función crea la página con el formulario enviado automáticamente que se devuelve en el paso 4 del diagrama de secuencia anterior.
+
+```typescript
+
+
+ Página de inicio de sesión
+
+
+
Página de inicio de sesión
+
+
+
+
+const idpRouter = express.Router()
+
+idpRouter.post("/loginSubmitted", async (req, res) => {
+ const loginResponse = await idp.createLoginResponse,
+```
+
+Este es el manejador para el paso 5 en el diagrama de secuencia anterior. [`idp.createLoginResponse`](https://github.com/tngan/samlify/blob/master/src/entity-idp.ts#L73-L125) crea la respuesta de inicio de sesión.
+
+```typescript
+ sp,
+ {
+ authnContextClassRef: 'urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport',
+ audience: sp.entityID,
+```
+
+La audiencia es el proveedor de servicios.
+
+```typescript
+ extract: {
+ request: {
+ id: req.body.requestId
+ }
+ },
+```
+
+Información extraída de la solicitud. El único parámetro que nos importa en la solicitud es el requestId, que permite al proveedor de servicios emparejar solicitudes y sus respuestas.
+
+```typescript
+ signingKey: { privateKey: idpPrivateKey, publicKey: config.idpCert } // Ensure signing
+```
+
+Necesitamos que `signingKey` tenga los datos para firmar la respuesta. El proveedor de servicios no confía en solicitudes no firmadas.
+
+```typescript
+ },
+ "post",
+ {
+ email: req.body.email
+```
+
+Este es el campo con la información del usuario que devolvemos al proveedor de servicios.
+
+```typescript
+ }
+ );
+
+ res.send(`
+
+
+
+
+
+
+
+ `)
+})
+```
+
+Nuevamente, use un formulario que se envía automáticamente. Este es el paso 6 del diagrama de secuencia anterior.
+
+```typescript
+
+// Punto final de IdP para solicitudes de inicio de sesión
+idpRouter.post(`/login`,
+```
+
+Este es el punto final que recibe una solicitud de inicio de sesión del proveedor de servicios. Este es el manejador del paso 3 del diagrama de secuencia anterior.
+
+```typescript
+ async (req, res) => {
+ try {
+ // Solución alternativa porque no pude hacer funcionar parseLoginRequest.
+ // const loginRequest = await idp.parseLoginRequest(sp, 'post', req)
+ const samlRequest = xmlParser.parse(Buffer.from(req.body.SAMLRequest, 'base64').toString('utf-8'))
+ res.send(getLoginPage(samlRequest["samlp:AuthnRequest"]["@_ID"]))
+```
+
+Deberíamos poder usar [`idp.parseLoginRequest`](https://github.com/tngan/samlify/blob/master/src/entity-idp.ts#L127-L144) para leer el ID de la solicitud de autenticación. Sin embargo, no pude lograr que funcionara y no valía la pena invertir mucho tiempo en ello, así que utilizo un [analizador XML de propósito general](https://www.npmjs.com/package/fast-xml-parser). La información que necesitamos es el atributo `ID` dentro de la etiqueta ``, que se encuentra al nivel superior del XML.
+
+## Usando firmas de Ethereum
+
+Ahora que podemos enviar una identidad de usuario al proveedor de servicios, el siguiente paso es obtener la identidad del usuario de manera confiable. Viem nos permite simplemente solicitar la dirección del usuario a la billetera, pero esto implica pedirle esa información al navegador. No controlamos el navegador, por lo que no podemos confiar automáticamente en la respuesta que recibimos de él.
+
+En su lugar, el IdP va a enviar al navegador una cadena para que la firme. Si la billetera en el navegador firma esta cadena, significa que realmente es esa dirección (es decir, conoce la clave privada que corresponde a la dirección).
+
+Para ver esto en funcionamiento, detén el IdP y SP existentes y ejecuta estos comandos:
+
+```sh
+git checkout eth-signatures
+pnpm install
+pnpm start
+```
+
+Luego navegue [al SP](http://localhost:3000) y siga las instrucciones.
+
+Tenga en cuenta que en este punto no sabemos cómo obtener la dirección de correo electrónico a partir de la dirección de Ethereum, por lo que en su lugar reportamos `@bad.email.address` al SP.
+
+### Explicación detallada
+
+Los cambios se encuentran en los pasos 4 y 5 del diagrama anterior.
+
+
+
+El único archivo que cambiamos es `idp.mts`. Aquí están las partes que cambiaron.
+
+```typescript
+import { v4 as uuidv4 } from 'uuid'
+import { verifyMessage } from 'viem'
+```
+
+Necesitamos estas dos librerías adicionales. Usamos [`uuid`](https://www.npmjs.com/package/uuid) para crear el valor [nonce](https://es.wikipedia.org/wiki/Nonce_\(criptograf%C3%ADa\)). El valor en sí no importa, solo el hecho de que solo se utilice una vez.
+
+La librería [`viem`](https://viem.sh/) nos permite usar definiciones de Ethereum. Aquí la necesitamos para verificar que la firma sea realmente válida.
+
+```typescript
+const loginPrompt = "To access the service provider, sign this nonce: "
+```
+
+La billetera le pide permiso al usuario para firmar el mensaje. Un mensaje que solo es un nonce podría confundir a los usuarios, por eso incluimos este mensaje.
+
+```typescript
+// Mantener los requestIDs aquí
+let nonces = {}
+```
+
+Necesitamos la información de la solicitud para poder responderla. Podríamos enviarla con la solicitud (paso 4), y recibirla de vuelta (paso 5). Sin embargo, no podemos confiar en la información que recibimos del navegador, que está bajo el control de un usuario potencialmente hostil. Por lo tanto, es mejor almacenarla aquí, usando el nonce como clave.
+
+Tenga en cuenta que aquí lo hacemos como una variable por simplicidad. Sin embargo, esto tiene varias desventajas:
+
+- Somos vulnerables a un ataque de denegación de servicio. Un usuario malicioso podría intentar iniciar sesión múltiples veces, llenando nuestra memoria.
+- Si el proceso IdP necesita reiniciarse, se perderían los valores existentes.
+- No podemos balancear carga entre varios procesos, porque cada uno tendría su propia variable.
+
+En un sistema de producción usaríamos una base de datos e implementaríamos algún mecanismo de expiración.
+
+```typescript
+const getSignaturePage = requestId => {
+ const nonce = uuidv4()
+ nonces[nonce] = requestId
+```
+
+Cree un nonce y guarde el `requestId` para su uso futuro.
+
+```typescript
+ return `
+
+
+
+
+
+
Por favor firme
+
+
+
+
+
+`
+}
+```
+
+El resto es simplemente HTML estándar.
+
+```typescript
+idpRouter.get("/signature/:nonce/:account/:signature", async (req, res) => {
+```
+
+Este es el manejador para el paso 5 en el diagrama de secuencia.
+
+```typescript
+ const requestId = nonces[req.params.nonce]
+ if (requestId === undefined) {
+ res.send("Bad nonce")
+ return ;
+ }
+
+ nonces[req.params.nonce] = undefined
+```
+
+Obtenga el ID de la solicitud y borre el nonce de `nonces` para asegurarse de que no pueda reutilizarse.
+
+```typescript
+ try {
+```
+
+Como hay muchas maneras en que la firma puede ser inválida, envolvemos esto en un bloque `try ... catch` para capturar cualquier error lanzado.
+
+```typescript
+ const validSignature = await verifyMessage({
+ address: req.params.account,
+ message: `${loginPrompt}${req.params.nonce}`,
+ signature: req.params.signature
+ })
+```
+
+Use [`verifyMessage`](https://viem.sh/docs/actions/public/verifyMessage#verifymessage) para implementar el paso 5.5 en el diagrama de secuencia.
+
+```typescript
+ if (!validSignature)
+ throw("Bad signature")
+ } catch (err) {
+ res.send("Error:" + err)
+ return ;
+ }
+```
+
+El resto del manejador es equivalente a lo que hicimos en el manejador `/loginSubmitted` previamente, salvo por un pequeño cambio.
+
+```typescript
+ const loginResponse = await idp.createLoginResponse(
+ .
+ .
+ .
+ {
+ email: req.params.account + "@bad.email.address"
+ }
+ );
+```
+
+No tenemos la dirección de correo electrónico real (la obtendremos en la siguiente sección), así que por ahora devolvemos la dirección de Ethereum y la marcamos claramente como que no es una dirección de correo válida.
+
+```typescript
+// Punto final de IdP para solicitudes de inicio de sesión
+idpRouter.post(`/login`,
+ async (req, res) => {
+ try {
+ // Solución alternativa porque no pude hacer funcionar parseLoginRequest.
+ // const loginRequest = await idp.parseLoginRequest(sp, 'post', req)
+ const samlRequest = xmlParser.parse(Buffer.from(req.body.SAMLRequest, 'base64').toString('utf-8'))
+ res.send(getSignaturePage(samlRequest["samlp:AuthnRequest"]["@_ID"]))
+ } catch (err) {
+ console.error('Error processing SAML response:', err);
+ res.status(400).send('SAML authentication failed');
+ }
+ }
+)
+```
+
+En lugar de `getLoginPage`, ahora use `getSignaturePage` en el manejador del paso 3.
+
+## Obteniendo la dirección de correo electrónico
+
+El siguiente paso es obtener la dirección de correo electrónico, el identificador solicitado por el proveedor de servicios. Para ello, usamos el [Ethereum Attestation Service (EAS)](https://attest.org/).
+
+La manera más sencilla de obtener atestaciones es usar la [API GraphQL](https://docs.attest.org/docs/developer-tools/api). Usamos esta consulta:
+
+```
+query GetAttestationsByRecipient {
+ attestations(
+ where: {
+ recipient: { equals: "${getAddress(ethAddr)}" }
+ schemaId: { equals: "0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977" }
+ }
+ take: 1
+ ) {
+ data
+ id
+ attester
+ }
+}
+```
+
+Este [`schemaId`](https://optimism.easscan.org/schema/view/0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977) incluye solo una dirección de correo electrónico. Esta consulta solicita las atestaciones de este esquema. El sujeto de la atestación se llama `recipient`. Siempre es una dirección de Ethereum.
+
+Advertencia: la forma en que estamos obteniendo atestaciones aquí tiene dos problemas de seguridad.
+
+- Estamos accediendo al punto final de la API, `https://optimism.easscan.org/graphql`, que es un componente centralizado. Podemos obtener el atributo `id` y luego hacer una consulta on-chain para comprobar que la atestación es real, pero el punto final de la API aún puede censurar atestaciones al no informarnos sobre ellas.
+
+ Este problema no es imposible de resolver, podríamos ejecutar nuestro propio punto final GraphQL y obtener las atestaciones de los registros de la cadena, pero eso es excesivo para nuestros fines.
+
+- No revisamos la identidad del attester. Cualquiera puede enviarnos información falsa. En una implementación real, tendríamos un conjunto de attesters de confianza y solo consideraríamos sus atestaciones.
+
+Para ver esto en funcionamiento, detén el IdP y SP existentes y ejecuta estos comandos:
+
+```sh
+git checkout email-address
+pnpm install
+pnpm start
+```
+
+Luego proporcione su dirección de correo electrónico. Tiene dos maneras de hacerlo:
+
+- Importe una billetera usando una clave privada y use la clave privada de prueba `0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80`.
+
+- Agregue una atestación para su propia dirección de correo electrónico:
+
+ 1. Vaya al [esquema en el explorador de atestaciones](https://optimism.easscan.org/schema/view/0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977).
+
+ 2. Haga clic en **Attest with Schema**.
+
+ 3. Ingrese su dirección de Ethereum como receptor, su correo electrónico como dirección de correo, y seleccione **Onchain**. Luego haga clic en **Make Attestation**.
+
+ 4. Acepte la transacción en su billetera. Necesitará algo de ETH en [la cadena de bloques Optimism](https://app.optimism.io/bridge/deposit) para pagar el gas.
+
+De cualquier manera, después de hacer esto, navegue a [http://localhost:3000](http://localhost:3000) y siga las instrucciones. Si importó la clave privada de prueba, el correo que recibirá es `test_addr_0@example.com`. Si usó su propia dirección, debería ser la que usted haya atestiguado.
+
+### Explicación detallada
+
+
+
+Los nuevos pasos son la comunicación GraphQL, pasos 5.6 y 5.7.
+
+Nuevamente, aquí están las partes modificadas de `idp.mts`.
+
+```typescript
+import { GraphQLClient } from 'graphql-request'
+import { SchemaEncoder } from '@ethereum-attestation-service/eas-sdk'
+```
+
+Importe las librerías que necesitamos.
+
+```typescript
+const graphqlEndpointUrl = "https://optimism.easscan.org/graphql"
+```
+
+Hay [un punto final separado para cada blockchain](https://docs.attest.org/docs/developer-tools/api).
+
+```typescript
+const graphqlClient = new GraphQLClient(graphqlEndpointUrl, { fetch })
+```
+
+Cree un nuevo cliente `GraphQLClient` que podamos usar para consultar el punto final.
+
+```typescript
+const graphqlSchema = 'string emailAddress'
+const graphqlEncoder = new SchemaEncoder(graphqlSchema)
+```
+
+GraphQL solo nos da un objeto de datos opaco con bytes. Para interpretarlo necesitamos el esquema.
+
+```typescript
+const ethereumAddressToEmail = async ethAddr => {
+```
+
+Una función para obtener una dirección de correo electrónico a partir de una dirección de Ethereum.
+
+```typescript
+ const query = `
+ query GetAttestationsByRecipient {
+```
+
+Esta es una consulta GraphQL.
+
+```typescript
+ Certificaciones(
+```
+
+Estamos buscando atestaciones.
+
+```typescript
+ where: {
+ recipient: { equals: "${getAddress(ethAddr)}" }
+ schemaId: { equals: "0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977" }
+ }
+```
+
+Las atestaciones que queremos son las de nuestro esquema, donde el receptor es `getAddress(ethAddr)`. La función [`getAddress`](https://viem.sh/docs/utilities/getAddress#getaddress) se asegura de que nuestra dirección tenga la [suma de comprobación](https://github.com/ethereum/ercs/blob/master/ERCS/erc-55.md) correcta. Esto es necesario ya que en GraphQL se diferencia entre mayúsculas y minúsculas. "0xBAD060A7", "0xBad060A7" y "0xbad060a7" son valores diferentes.
+
+```typescript
+ take: 1
+```
+
+Sin importar cuántas atestaciones encontremos, solo queremos la primera.
+
+```typescript
+ ) {
+ data
+ id
+ attester
+ }
+ }`
+```
+
+Los campos que deseamos recibir.
+
+- `attester`: La dirección que envió la atestación. Normalmente esto se utiliza para decidir si confiar o no en la atestación.
+- `id`: El ID de la atestación. Puede usar este valor para [leer la atestación en la cadena](https://optimism.blockscout.com/address/0x4200000000000000000000000000000000000021?tab=read_proxy&source_address=0x4E0275Ea5a89e7a3c1B58411379D1a0eDdc5b088#0xa3112a64) y verificar que la información en la consulta de GraphQL sea correcta.
+- `data`: Los datos del esquema (en este caso, la dirección de correo electrónico).
+
+```typescript
+ const queryResult = await graphqlClient.request(query)
+
+ if (queryResult.attestations.length == 0)
+ return "no_address@available.is"
+```
+
+Si no hay ninguna atestación, devuelva un valor obviamente incorrecto, pero que parecería válido para el proveedor de servicios.
+
+```typescript
+ const attestationDataFields = graphqlEncoder.decodeData(queryResult.attestations[0].data)
+ return attestationDataFields[0].value.value
+}
+```
+
+Si hay un valor, use `decodeData` para decodificar los datos. No necesitamos los metadatos que proporciona, solo el valor en sí.
+
+```typescript
+ const loginResponse = await idp.createLoginResponse(
+ sp,
+ {
+ .
+ .
+ .
+ },
+ "post",
+ {
+ email: await ethereumAddressToEmail(req.params.account)
+ }
+ );
+```
+
+Use la nueva función para obtener la dirección de correo electrónico.
+
+## ¿Qué hay de la descentralización?
+
+En esta configuración, los usuarios no pueden hacerse pasar por alguien que no son, siempre y cuando confiemos en atestadores de confianza para el mapeo de la dirección de Ethereum a la dirección de correo electrónico. Sin embargo, nuestro proveedor de identidad sigue siendo un componente centralizado. Quien tenga la clave privada del proveedor de identidad puede enviar información falsa al proveedor de servicios.
+
+Puede haber una solución usando [cómputo multipartito seguro (MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation). Espero poder escribir sobre esto en un futuro tutorial.
+
+## Conclusión
+
+La adopción de un estándar de inicio de sesión, como las firmas de Ethereum, enfrenta el problema del huevo y la gallina. Los proveedores de servicios quieren captar el mercado más amplio posible. Los usuarios quieren poder acceder a los servicios sin tener que preocuparse por si se admite su estándar de inicio de sesión.
+Crear adaptadores, como un IdP de Ethereum, puede ayudarnos a superar este obstáculo.
+
+[Vea aquí más de mi trabajo](https://cryptodocguy.pro/).
From c1ff7c17426b8dc4744dc730a436852a43049c7c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:44 -0300
Subject: [PATCH 043/589] update(i18n):
public/content/translations/es/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
---
.../index.md | 66 ++++++++++---------
1 file changed, 35 insertions(+), 31 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md b/public/content/translations/es/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
index c0b55391e78..33d001da2a2 100644
--- a/public/content/translations/es/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
+++ b/public/content/translations/es/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
@@ -1,43 +1,42 @@
---
title: Pruebas de Merkle para la integridad de los datos fuera de línea
-description: Asegurar la integridad de los datos en la cadena para los datos que se almacenan, sobre todo, fuera de la cadena.
+description: Garantizando la integridad de los datos on-chain para información que se almacena, principalmente, off-chain.
author: Ori Pomerantz
-tags:
- - "almacenamiento"
+tags: [ "almacenamiento" ]
skill: advanced
lang: es
-published: 2021-12-30
+published: 30-12-2021
---
## Introducción {#introduction}
Idóneamente, nos gustaría guardar todo en el almacenamiento de Ethereum, el cual se guarda en miles de computadoras y tiene una disponibilidad extremadamente alta (los datos no pueden ser censurados) e integridad (los datos no pueden ser modificados de una manera no autorizada), sin embargo almacenar una palabra de 32 bytes suele costar 20.000 gas. En el momento de redactar este artículo, el coste actual es de 6,60 $. A 21 centavos por byte esto es demasiado costoso para muchos usos.
-Para resolver este problema, el ecosistema de Ethereum desarrolló [muchas formas alteranativas de almacenar datos de una manera decentralizada](/developers/docs/storage/). Usualmente involucran compensar entre disponibilidad y precio. Sin embargo, normalmente se asegura la integridad.
+Para resolver este problema, el ecosistema de Ethereum desarrolló [muchas maneras alternativas de almacenar datos de forma descentralizada](/developers/docs/storage/). Usualmente involucran compensar entre disponibilidad y precio. Sin embargo, normalmente se asegura la integridad.
-En este artículo, descubrirá **cómo** asegurar la integridad de los datos sin almacenar los datos en la cadena de bloques, usando [Pruebas de Merkle](https://computersciencewiki.org/index.php/Merkle_proof).
+En este artículo aprenderá **cómo** garantizar la integridad de los datos sin almacenarlos en la blockchain, utilizando [pruebas de Merkle](https://computersciencewiki.org/index.php/Merkle_proof).
## ¿Cómo funciona? {#how-does-it-work}
-En teoría podríamos almacenar el hash de los datos en cadena y enviar todos los datos en transacciones que lo requieran. No obstante, sigue siendo demasiado caro. Un byte de data a una transacción cuesta alrededor de 16 gas, actualmente cerca de medio centavo, o aproximadamente 5 dólares por kilobyte. A 5.000 $ por megabyte, esto sigue siendo demasiado caro para muchos usos, incluso sin el coste añadido de acelerar los datos.
+En teoría, podríamos almacenar simplemente el hash de los datos on-chain y enviar todos los datos en las transacciones que lo requieran. No obstante, sigue siendo demasiado caro. Un byte de data a una transacción cuesta alrededor de 16 gas, actualmente cerca de medio centavo, o aproximadamente 5 dólares por kilobyte. A 5.000 $ por megabyte, esto sigue siendo demasiado caro para muchos usos, incluso sin el coste añadido de acelerar los datos.
La solución consiste en acelerar repetidamente diferentes subconjuntos de los datos, de forma que para los datos que no necesite enviar, pueda simplemente enviar un hash. Esto se hace utilizando un árbol Merkle, una estructura de datos en arbol donde cada nodo es un hash de los nodos debajo:

-El hash en la raíz es la única parte que necesita almacenarse en cadena. Para demostrar un determinado valor, proporcione todos los hash que necesitan combinarse con él para obtener la raíz. Por ejemplo, para probar `C` proporcionas `D`, `H(A-B)`y `H(E-H)`.
+El hash raíz es la única parte que necesita almacenarse en la cadena. Para demostrar un determinado valor, proporcione todos los hash que necesitan combinarse con él para obtener la raíz. Por ejemplo, para probar `C` proporcione `D`, `H(A-B)` y `H(E-H)`.

## Implementación {#implementation}
-[El código de muestra se proporciona aquí](https://github.com/qbzzt/merkle-proofs-for-offline-data-integrity).
+[El código de ejemplo se proporciona aquí](https://github.com/qbzzt/merkle-proofs-for-offline-data-integrity).
-### Código fuera de la cadena {#off-chain-code}
+### Código off-chain {#offchain-code}
-En este artículo, utilizamos JavaScript para los cálculos fuera de la cadena. La mayoría de las aplicaciones descentralizadas tienen su componente fuera de la cadena en JavaScript.
+En este artículo usamos JavaScript para los cálculos fuera de la cadena. La mayoría de las aplicaciones descentralizadas tienen su componente off-chain en JavaScript.
-#### Crear la raíz de Merkle {#creating-the-merkle-root}
+#### Creando la raíz de Merkle {#creating-the-merkle-root}
Primero necesitamos proporcionar la raíz de Merkle a la cadena.
@@ -45,7 +44,7 @@ Primero necesitamos proporcionar la raíz de Merkle a la cadena.
const ethers = require("ethers")
```
-[Utilizamos la función hash del paquete ethers](https://docs.ethers.io/v5/api/utils/hashing/#utils-keccak256).
+[Usamos la función hash del paquete ethers](https://docs.ethers.io/v5/api/utils/hashing/#utils-keccak256).
```javascript
// The raw data whose integrity we have to verify. The first two bytes a
@@ -57,7 +56,7 @@ const dataArray = [
]
```
-Codificar cada entrada en un único entero de 256 bits resulta en un código menos legible que el de JSON, por ejemplo. Sin embargo, esto significa un procesamiento significativamente menor para recuperar los datos en el contrato, unos costes de gas mucho menores. [Puede leer JSON en la cadena](https://github.com/chrisdotn/jsmnSol), aunque no es muy aconsejable, si se puede evitar.
+Codificar cada entrada en un único entero de 256 bits resulta en un código menos legible que el de JSON, por ejemplo. Sin embargo, esto significa un procesamiento significativamente menor para recuperar los datos en el contrato, unos costes de gas mucho menores. [Se puede leer JSON on-chain](https://github.com/chrisdotn/jsmnSol), pero es una mala idea si se puede evitar.
```javascript
// The array of hash values, as BigInts
@@ -73,16 +72,19 @@ const hash = (x) =>
BigInt(ethers.utils.keccak256("0x" + x.toString(16).padStart(64, 0)))
```
-La función hash de ethers espera obtener una cadena de JavaScript con un número hexadecimal, como `0x60A7`, y responde con otra cadena con la misma estructura. Sin embargo, para el resto de código es más fácil usar `BigInt`, para convertir a una cadena hexadecimal y viceversa.
+La función hash de ethers espera recibir una cadena en formato hexadecimal, por ejemplo `0x60A7`, y responde con otra cadena con la misma estructura. Sin embargo, para el resto del código es más fácil usar `BigInt`, por lo que convertimos entre una cadena hexadecimal y viceversa.
```javascript
// Symmetrical hash of a pair so we won't care if the order is reversed.
const pairHash = (a, b) => hash(hash(a) ^ hash(b))
```
-Esta función es simétrica (hash de un [xor](https://en.wikipedia.org/wiki/Exclusive_or) b). Esto significa que cuando revisamos la prueba de Merkle no debemos preocuparnos sobre si el valor de la prueba debe ser colocado antes o después del valor calculado. La revisión de la prueba de Merkle se realiza en la cadena, así que cuanto menos necesitemos hacer, mejor.
+Esta función es simétrica (hash de un [xor](https://en.wikipedia.org/wiki/Exclusive_or) b). Esto significa que cuando revisamos la prueba de Merkle no debemos preocuparnos sobre si el valor de la prueba debe ser colocado antes o después del valor calculado. La verificación de pruebas de Merkle se realiza on-chain, así que mientras menos operaciones sean necesarias allí, mejor.
-Advertencia: la criptografía es más complicada de lo que parece. La versión inicial de este artículo tuvo la función de hash `hash(a^b)`. Y no muy nada **atinado**, porque esto significaba que si conocía los valores legítimos de `a` y `b`, podría usar `b' = a^b^a'` para probar cualquier valor deseado de `a'`. Con esta función tendrías que calcular `b'` tal que `hash(a') ^hash(b')` es igual a un valor conocido (la siguiente rama en el camino a la raíz), lo que es más difícil.
+Advertencia: la criptografía es más complicada de lo que parece.
+La versión inicial de este artículo tenía la función hash `hash(a^b)`.
+Eso era una **mala** idea porque significaba que, si conocías los valores legítimos de `a` y `b`, podrías usar `b' = a^b^a'` para probar cualquier valor `a'` que quisieras.
+Con esta función, tendría que calcular `b'` de modo que `hash(a') ^ hash(b')` sea igual a un valor conocido (la siguiente rama hacia la raíz), lo cual es mucho más difícil.
```javascript
// The value to denote that a certain branch is empty, doesn't
@@ -92,7 +94,7 @@ const empty = 0n
Cuando el número de valores no es un entero potencia de dos, necesitamos manejar ramas vacías. La manera en que este programa lo hace es colocando cero como marcador de posición.
-
+
```javascript
// Calculate one level up the tree of a hash array by taking the hash of
@@ -110,7 +112,7 @@ const oneLevelUp = (inputArray) => {
} // oneLevelUp
```
-La función «escala» un nivel en el árbol Merkle al hacer hash de los pares de valores en la capa actual. Observe que esta no es la implementación más eficiente, porque podríamos haber evitado copiar el resultado y solo añadir `hashEmpty` cuando sea apropiado en el bucle, pero este código está optimizado para una mejor lectura.
+La función «escala» un nivel en el árbol Merkle al hacer hash de los pares de valores en la capa actual. Tenga en cuenta que esta no es la implementación más eficiente; pudimos haber evitado copiar el input y solo añadir `hashEmpty` cuando corresponda en el ciclo, pero este código está optimizado para la legibilidad.
```javascript
const getMerkleRoot = (inputArray) => {
@@ -126,7 +128,7 @@ const getMerkleRoot = (inputArray) => {
Para obtener la raíz, escalamos hasta que solo quede un valor.
-#### Cómo crear una prueba de Merkle {#creating-a-merkle-proof}
+#### Creando una prueba de Merkle {#creating-a-merkle-proof}
Una prueba de Merkle son los valores que se mezclan junto con el valor que se demuestra para recuperar la raíz de Merkle. Por lo general, el valor para probar está disponible a partir de otros datos, por eso prefiero proporcionarlo de manera separada, en vez de como una parte del código.
@@ -151,7 +153,7 @@ const getMerkleProof = (inputArray, n) => {
```
-Unimos `(v[0],v[1])`, `(v[2],v[3])`, etc. Encontes, para valores pares necesitamos el siguiente, y para valores impares, el anterior.
+Hasheamos `(v[0],v[1])`, `(v[2],v[3])`, etc. Encontes, para valores pares necesitamos el siguiente, y para valores impares, el anterior.
```javascript
// Move to the next layer up
@@ -163,9 +165,9 @@ Unimos `(v[0],v[1])`, `(v[2],v[3])`, etc. Encontes, para valores pares necesitam
} // getMerkleProof
```
-### Código en la cadena {#on-chain-code}
+### Código on-chain {#onchain-code}
-Por último, tenemos el código que comprueba la prueba. El código en la cadena se escribe en [Solidity](https://docs.soliditylang.org/en/v0.8.11/). La optimización es más importante aquí porque el gas es relativamente caro.
+Por último, tenemos el código que comprueba la prueba. El código on-chain está escrito en [Solidity](https://docs.soliditylang.org/en/v0.8.11/). La optimización es más importante aquí porque el gas es relativamente caro.
```solidity
//SPDX-License-Identifier: Public Domain
@@ -174,7 +176,7 @@ pragma solidity ^0.8.0;
import "hardhat/console.sol";
```
-Escribí esto usando el [entorno de desarrollo Hardhat](https://hardhat.org/), que nos permite tener [resultados de la consola desde Solidity](https://hardhat.org/tutorial/debugging-with-hardhat-network.html) mientras desarrollamos.
+Escribí esto usando el [entorno de desarrollo Hardhat](https://hardhat.org/), que nos permite tener [salidas en consola desde Solidity](https://hardhat.org/tutorial/debugging-with-hardhat-network.html) durante el desarrollo.
```solidity
@@ -193,7 +195,7 @@ contract MerkleProof {
} // setRoot
```
-Establecer y obtener funciones para la raíz de Merkle. Permitir que cualquiera actualice la raíz de Merkle es una _idea totalmente desaconsejable_ en un sistema de producción. Aquí lo hago con el objetivo de la simplicidad en el código de ejemplo. **No lo haga en un sistema donde la integridad de los datos realmente importe**.
+Establecer y obtener funciones para la raíz de Merkle. Permitir que cualquier persona actualice la raíz de Merkle es una _muy mala idea_ en un sistema en producción. Aquí lo hago con el objetivo de la simplicidad en el código de ejemplo. **No lo haga en un sistema donde la integridad de los datos realmente importe**.
```solidity
function hash(uint _a) internal pure returns(uint) {
@@ -205,9 +207,9 @@ Establecer y obtener funciones para la raíz de Merkle. Permitir que cualquiera
}
```
-Esta función genera un par hash. Solo es la traducción de Solidity del código de JavaScript para `hash` y `pairHash`.
+Esta función genera un par hash. Es simplemente la traducción a Solidity del código JavaScript para `hash` y `pairHash`.
-**Nota**: Este es otro caso de optimización para la lectura. Basado en la [definición de función](https://www.tutorialspoint.com/solidity/solidity_cryptographic_functions.htm), es posible almacenar los datos como un valor [`bytes32`](https://docs.soliditylang.org/en/v0.5.3/types.html#fixed-size-byte-arrays) y evitar las conversiones.
+**Nota:** Este es otro caso donde se priorizó la legibilidad sobre la eficiencia. Según [la definición de la función](https://www.tutorialspoint.com/solidity/solidity_cryptographic_functions.htm), podría ser posible almacenar los datos como un valor [`bytes32`](https://docs.soliditylang.org/en/v0.5.3/types.html#fixed-size-byte-arrays) y evitar conversiones.
```solidity
// Verify a Merkle proof
@@ -226,16 +228,18 @@ Esta función genera un par hash. Solo es la traducción de Solidity del código
} // MarkleProof
```
-En notación matemática, la verificación de prueba de Merkle dice así: `H(proof_n, H(proof_n-1, H(proof_n-2, ... H(proof_1, H(proof_0, value))...)))`. Este código lo implementa.
+En notación matemática, la verificación de pruebas de Merkle se ve así: `H(proof_n, H(proof_n-1, H(proof_n-2, ... H(proof_1, H(proof_0, value))...)))`. Este código lo implementa.
## Las pruebas de Merkle y los rollups no se mezclan {#merkle-proofs-and-rollups}
-Las pruebas de Merkle no funcionan bien con las acumulaciones o [rollups](/developers/docs/scaling/#rollups). La razón es que los rollups escriben todos los datos de la transacción en L1, pero los procesa en L2. El costo de enviar una prueba de Merkle con una transacción se promedia en 638 de gas por capa (actualmente, un byte en un llamado de datos cuesta 16 de gas si es diferente a cero y 4 si es cero). Si tenemos 1024 palabras de datos, una prueba de Merkle requiere diez capas o un total de 6380 de gas.
+Las pruebas de Merkle no funcionan bien con los [rollups](/developers/docs/scaling/#rollups). La razón es que los rollups escriben todos los datos de la transacción en L1, pero los procesa en L2. El costo de enviar una prueba de Merkle con una transacción se promedia en 638 de gas por capa (actualmente, un byte en un llamado de datos cuesta 16 de gas si es diferente a cero y 4 si es cero). Si tenemos 1024 palabras de datos, una prueba de Merkle requiere diez capas o un total de 6380 de gas.
-Veamos como ejemplo a [Optimism](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m), escribir L1 cuesta alrededor de 100 gwei en gas y L2 cuesta 0,001 gwei en gas (ese es un precio normal, puede aumentar con la congestión). Entonces para el coste de un gas L1 podemos gastar mil de gas en L2. Asumiendo que no hemos sobrescrito el almacenamiento, esto significa que podemos escribir alrededor de cinco palabras en el almacenamiento en L2 para el precio de un gas L1. Para una única prueba de Merkle podemos escribir el total de 1.024 palabras en el almacenamiento (asimiendo que se pueden calcular en la cadena para empezar, en vez de proporcionarlas en la transacción) y todavía tenemos la mayoría del gas restante.
+Por ejemplo, mirando [Optimism](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m), el gas en L1 cuesta unos 100 gwei, mientras que el gas en L2 cuesta 0.001 gwei (ese es el precio normal, aunque puede subir con congestión). Entonces para el coste de un gas L1 podemos gastar mil de gas en L2. Asumiendo que no hemos sobrescrito el almacenamiento, esto significa que podemos escribir alrededor de cinco palabras en el almacenamiento en L2 para el precio de un gas L1. Para una sola prueba de Merkle, podemos escribir todas las 1024 palabras en almacenamiento (suponiendo que pueden calcularse on-chain en vez de ser enviadas en una transacción) y aún nos sobra la mayor parte del gas.
## Conclusión {#conclusion}
En la vida real puede que nunca implemente árboles de Merkle por su cuenta. Hay bibliotecas bien conocidas y auditadas que puede utilizar y, por lo general, es mejor no implementar criptográficos primitivos por su cuenta. Pero espero que ahora comprenda mejor las pruebas de Merkle y pueda decidir cuándo es mejor usarlas.
-Note que mientras las pruebas de Merkle preservan la _integridad_, no preservan la _disponibilidad_. Saber que nadie puede adueñarse de sus activos es una pequeña consolación si el almacenamiento de datos decide desactivar el acceso y no puede construir un árbol de Merkle para acceder a estos. Por tanto, es mejor usar los árboles de Merkle con algún tipo de almacenamiento descentralizado, como IPFS.
+Tenga en cuenta que, si bien las pruebas de Merkle preservan la _integridad_, no preservan la _disponibilidad_. Saber que nadie puede adueñarse de sus activos es una pequeña consolación si el almacenamiento de datos decide desactivar el acceso y no puede construir un árbol de Merkle para acceder a estos. Por tanto, es mejor usar los árboles de Merkle con algún tipo de almacenamiento descentralizado, como IPFS.
+
+[Vea aquí más de mi trabajo](https://cryptodocguy.pro/).
From 6eb4276c7dbcdbb1227a919c91b54c5cda19bd33 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:46 -0300
Subject: [PATCH 044/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
---
.../index.md | 34 ++++++++++---------
1 file changed, 18 insertions(+), 16 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md b/public/content/translations/es/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
index 167a7850224..2e5c8f9cb58 100644
--- a/public/content/translations/es/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
@@ -1,30 +1,32 @@
---
title: Cómo simular contratos inteligentes de Solidity para probarlos
-description: '¿Por qué debería burlarse de sus contratos al probarlos?'
+description: ¿Por qué debería burlarse de sus contratos al probarlos?
author: Markus Waas
lang: es
tags:
- - "solidity"
- - "contratos inteligentes"
- - "pruebas"
- - "simular"
+ [
+ "Solidity",
+ "contratos Inteligentes",
+ "pruebas",
+ "simular"
+ ]
skill: intermediate
-published: 2020-05-02
+published: 02-05-2020
source: soliditydeveloper.com
sourceUrl: https://soliditydeveloper.com/mocking-contracts
---
-[Los objetos simulados](https://wikipedia.org/wiki/Mock_object) son un patrón de diseño común en la programación orientada a objetos. Viene de la antigua palabra francesa «mocquer» con el significado de «reírse de algo» y evolucionó a «imitar a algo real» que es, en realidad, lo que hacemos en programación. Por tanto, ríase todo lo que quiera de sus contratos inteligentes si quieres, pero simúlelos siempre que pueda. ¡Le simplifica la vida!
+Los [objetos simulados](https://wikipedia.org/wiki/Mock_object) son un patrón de diseño común en la programación orientada a objetos. Viene de la antigua palabra francesa «mocquer» con el significado de «reírse de algo» y evolucionó a «imitar a algo real» que es, en realidad, lo que hacemos en programación. Por tanto, ríase todo lo que quiera de sus contratos inteligentes si quieres, pero simúlelos siempre que pueda. ¡Le simplifica la vida!
## Pruebas unitarias de contratos con simulaciones {#unit-testing-contracts-with-mocks}
-Simular un contrato significa básicamente crear una segunda versión del contrato que se comporta de manera muy similar al original, pero de una forma que el desarrollador puede controlar fácilmente. A menudo suele uno acabar con contratos complejos cuando lo único que quiere es [ hacer pruebas unitarias en partes pequeñas del contrato.](/developers/docs/smart-contracts/testing/). El problema es: ¿qué sucedería si esta pequeña parte requiere un estado de contrato muy específico que es complicado para comenzar?
+Simular un contrato significa básicamente crear una segunda versión del contrato que se comporta de manera muy similar al original, pero de una forma que el desarrollador puede controlar fácilmente. A menudo acaba con contratos complejos donde solo desea [probar unidades pequeñas del contrato](/developers/docs/smart-contracts/testing/). El problema es: ¿qué sucedería si esta pequeña parte requiere un estado de contrato muy específico que es complicado para comenzar?
Puede escribir una lógica de configuración de prueba compleja cada vez que el contrato se encuentre en el estado requerido, o escriba una simulación. Simular un contrato es fácil con herencia. Simplemente crea un segundo contrato simulado que hereda del original. Ahora puede sobrescribir funciones a su imitación. Veámoslo mejor poniendo un ejemplo.
## Ejemplo: ERC20 privado {#example-private-erc20}
-Usamos el ejemplo de un contrato ERC-20 que tiene un tiempo inicial privado. El propietario puede administrar usuarios privados y solo ellos estarán autorizados a recibir tókenes al principio. Una vez transcurrido un periodo específico, cualquiera podrá usar los tókenes. Si le pica la curiosidad, estamos usando el gancho [`_beforeTokenTransfer`](https://docs.openzeppelin.com/contracts/5.x/extending-contracts#using-hooks) de los nuevos contratos v3 de OpenZeppelin.
+Usamos el ejemplo de un contrato ERC-20 que tiene un tiempo inicial privado. El propietario puede administrar usuarios privados y solo ellos estarán autorizados a recibir tókenes al principio. Una vez transcurrido un periodo específico, cualquiera podrá usar los tókenes. Si tiene curiosidad, estamos usando el hook [`_beforeTokenTransfer`](https://docs.openzeppelin.com/contracts/5.x/extending-contracts#using-hooks) de los nuevos contratos OpenZeppelin v3.
```solidity
pragma solidity ^0.6.0;
@@ -88,19 +90,19 @@ contract PrivateERC20Mock is PrivateERC20 {
Recibirás uno de los siguientes mensajes de error:
- `PrivateERC20Mock.sol: TypeError: Overriding function is missing "override" specifier.`
-- `PrivateERC20.sol: TypeError: Trying to override non-virtual function. Did you forget to add "virtual"?.`
+- `PrivateERC20.sol: TypeError: Trying to override non-virtual function. ¿Olvidó añadir "virtual"?.`
-Ya que estamos usando la nueva versión 0.6 de Solidity, tenemos que añadir la palabra clave `virtual` para funciones que puedan ser sobrescritas y sobrescribir para la función de sobrescribir. Entonces, añadámoslas a ambas funciones `isPublic`.
+Como estamos usando la nueva versión 0.6 de Solidity, debemos añadir la palabra clave `virtual` a las funciones que pueden ser sobrescritas y `override` en la función que sobrescribe. Así que añadamos esos modificadores a ambas funciones `isPublic`.
-Ahora, en sus pruebas unitarias, puede usar `PrivateERC20Mock` en su lugar. Cuando quiera probar el comportamiento durante un tiempo privado de uso, utilice `setIsPublic(false)` al igual que `setIsPublic(true)` para probar el tiempo público de uso. Por supuesto, en nuestro ejemplo también podemos usar únicamente [ayudas de tiempo](https://docs.openzeppelin.com/test-helpers/0.5/api#increase) para cambiar los tiempos según corresponda. Esperamos que la idea de simular le haya quedado ahora clara y puede imaginar situaciones en las que todo no es tan sencillo como simplemente hacer avanzar el tiempo.
+Ahora en sus pruebas unitarias, puede usar `PrivateERC20Mock` en su lugar. Cuando desee probar el comportamiento durante el tiempo de uso privado, use `setIsPublic(false)` y de igual manera `setIsPublic(true)` para probar el tiempo de uso público. Por supuesto, en nuestro ejemplo, también podríamos usar [time helpers](https://docs.openzeppelin.com/test-helpers/0.5/api#increase) para ajustar los tiempos según corresponda. Esperamos que la idea de simular le haya quedado ahora clara y puede imaginar situaciones en las que todo no es tan sencillo como simplemente hacer avanzar el tiempo.
-## Simular varios contratos {#mocking-many-contracts}
+## Simulando muchos contratos {#mocking-many-contracts}
-Puede volverse un tanto caótico si tiene que crear otro contrato para cada imitación única. Si esto le preocupa, puede revisar la biblioteca [MockContract](https://github.com/gnosis/mock-contract). Le permite sobrescribir y cambiar los comportamientos de los contratos sobre la marcha. Sin embargo, esto solo funciona para simular la activación de otro contrato, por lo que no funcionará para nuestro ejemplo.
+Puede volverse un tanto caótico si tiene que crear otro contrato para cada imitación única. Si esto le incomoda, puede consultar la biblioteca [MockContract](https://github.com/gnosis/mock-contract). Le permite sobrescribir y cambiar los comportamientos de los contratos sobre la marcha. Sin embargo, esto solo funciona para simular la activación de otro contrato, por lo que no funcionará para nuestro ejemplo.
-## Simular puede ser aún más eficaz {#mocking-can-be-even-more-powerful}
+## La simulación puede ser aún más potente {#mocking-can-be-even-more-powerful}
Los poderes de la simulación no terminan aquí.
-- Añadir funciones: no solo sobrescribir una función específica es útil, también lo es añadir funciones adicionales. Un buen ejemplo para los tókenes es contar con una función adicional `mint` para permitir a cualquier usuario consiga los nuevos tókenes sin coste.
+- Añadir funciones: no solo sobrescribir una función específica es útil, también lo es añadir funciones adicionales. Un buen ejemplo para los tokens es añadir una función `mint` adicional que permita a cualquier usuario obtener nuevos tokens de forma gratuita.
- Uso en redes de prueba: cuando implemente y pruebe sus contratos en redes de pruebas junto con su DApp, considere el usar una versión simulada. Evita el tener que sobreescribir las funciones, a menos que sea realmente necesario. Al fin y al cabo, se trata de probar la lógica real. Pero agregar, por ejemplo, una función de reinicio puede ser útil para simplemente restablecer el contrato a su estado inicial, sin requerir un nuevo despliegue. Obviamente, no haría eso en un contrato de red principal.
From 61198202cc42f312d007fa0380917c1097b39fe2 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:48 -0300
Subject: [PATCH 045/589] update(i18n):
public/content/translations/es/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md
---
.../index.md | 592 ++++++++++++++++++
1 file changed, 592 insertions(+)
create mode 100644 public/content/translations/es/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md
diff --git a/public/content/translations/es/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md b/public/content/translations/es/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md
new file mode 100644
index 00000000000..852af8d25ce
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md
@@ -0,0 +1,592 @@
+---
+title: "Crear una interfaz de usuario para su contrato inteligente."
+description: Utilizando componentes modernos como TypeScript, React, Vite y Wagmi, revisaremos una interfaz de usuario moderna pero minimalista y aprenderemos cómo conectar una wallet a la interfaz de usuario, llamar a un smart contract para leer información, enviar una transacción a un smart contract y monitorear eventos de un smart contract para identificar cambios.
+author: Ori Pomerantz
+tags:
+ [
+ "typescript",
+ "reaccionar",
+ "vite",
+ "wagmi",
+ "frontend"
+ ]
+skill: beginner
+published: 01-11-2023
+lang: es
+sidebarDepth: 3
+---
+
+Ha encontrado una funcionalidad que necesitamos en el ecosistema Ethereum. Escribió los smart contracts para implementarla, y quizás incluso algo de código relacionado que se ejecuta fuera de la cadena (offchain). ¡Esto es genial! Desafortunadamente, sin una interfaz de usuario no tendrá usuarios, y la última vez que creó un sitio web las personas usaban módems de acceso telefónico y JavaScript era nuevo.
+
+Este artículo es para usted. Supongo que sabe programar, y quizá algo de JavaScript y HTML, pero sus habilidades en interfaces de usuario están algo oxidadas y desactualizadas. Juntos revisaremos una aplicación sencilla y moderna para que vea cómo se hace hoy en día.
+
+## ¿Por qué es esto importante? {#why-important}
+
+En teoría, usted podría simplemente hacer que las personas usen [Etherscan](https://holesky.etherscan.io/address/0x432d810484add7454ddb3b5311f0ac2e95cecea8#writeContract) o [Blockscout](https://eth-holesky.blockscout.com/address/0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8?tab=write_contract) para interactuar con sus contratos. Eso será excelente para los usuarios experimentados de Ethereum. Pero intentamos servir a [otro mil millones de personas](https://blog.ethereum.org/2021/05/07/ethereum-for-the-next-billion). Esto no sucederá sin una excelente experiencia de usuario, y una interfaz de usuario amigable es una parte fundamental de ello.
+
+## Aplicación Greeter {#greeter-app}
+
+Existe mucha teoría detrás de cómo funciona una interfaz de usuario moderna, y [muchos buenos sitios](https://react.dev/learn/thinking-in-react) [que lo explican](https://wagmi.sh/core/getting-started). En vez de repetir el excelente trabajo de esos sitios, asumiré que prefiere aprender haciendo y empezaré con una aplicación que puede probar. Aun así necesita la teoría para realizar las tareas, y la abordaremos: simplemente revisaremos archivo por archivo y discutiremos los temas a medida que los vayamos encontrando.
+
+### Instalación {#installation}
+
+1. Si es necesario, agregue [la blockchain Holesky](https://chainlist.org/?search=holesky&testnets=true) a su wallet y [obtenga ETH de prueba](https://www.holeskyfaucet.io/).
+
+2. Clone el repositorio de github.
+
+ ```sh
+ git clone https://github.com/qbzzt/20230801-modern-ui.git
+ ```
+
+3. Instale los paquetes necesarios.
+
+ ```sh
+ cd 20230801-modern-ui
+ pnpm install
+ ```
+
+4. Inicie la aplicación.
+
+ ```sh
+ pnpm dev
+ ```
+
+5. Vaya a la URL mostrada por la aplicación. En la mayoría de los casos, es [http://localhost:5173/](http://localhost:5173/).
+
+6. Puede ver el código fuente del contrato, una versión ligeramente modificada del Greeter de Hardhat, [en un explorador de blockchain](https://eth-holesky.blockscout.com/address/0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8?tab=contract).
+
+### Recorrido por los archivos {#file-walk-through}
+
+#### `index.html` {#index-html}
+
+Este archivo es un archivo HTML estándar de inicio, excepto por esta línea, que importa el archivo de script.
+
+```html
+
+```
+
+#### `src/main.tsx` {#main-tsx}
+
+La extensión del archivo nos indica que este archivo es un [componente de React](https://www.w3schools.com/react/react_components.asp) escrito en [TypeScript](https://www.typescriptlang.org/), una extensión de JavaScript que soporta [verificación de tipos](https://en.wikipedia.org/wiki/Type_system#Type_checking). TypeScript se compila en JavaScript, por lo que podemos usarlo para ejecución en el lado del cliente.
+
+```tsx
+import '@rainbow-me/rainbowkit/styles.css'
+import { RainbowKitProvider } from '@rainbow-me/rainbowkit'
+import * as React from 'react'
+import * as ReactDOM from 'react-dom/client'
+import { WagmiConfig } from 'wagmi'
+import { chains, config } from './wagmi'
+```
+
+Importe el código de las librerías que necesitamos.
+
+```tsx
+import { App } from './App'
+```
+
+Importe el componente de React que implementa la aplicación (ver más abajo).
+
+```tsx
+ReactDOM.createRoot(document.getElementById('root')!).render(
+```
+
+Cree el componente raíz de React. El parámetro de `render` es [JSX](https://www.w3schools.com/react/react_jsx.asp), un lenguaje de extensión que utiliza tanto HTML como JavaScript/TypeScript. El signo de exclamación aquí le indica al componente TypeScript: "no sabe que `document.getElementById('root')` será un parámetro válido para `ReactDOM.createRoot`, pero no se preocupe: soy el desarrollador y le digo que lo será".
+
+```tsx
+
+```
+
+La aplicación irá dentro de [un componente `React.StrictMode`](https://react.dev/reference/react/StrictMode). Este componente indica a la librería de React que inserte comprobaciones de depuración adicionales, lo cual es útil durante el desarrollo.
+
+```tsx
+
+```
+
+La aplicación también está dentro de [un componente `WagmiConfig`](https://wagmi.sh/react/api/WagmiProvider). [La librería wagmi (we are going to make it)](https://wagmi.sh/) conecta las definiciones de la interfaz de React con [la librería viem](https://viem.sh/) para escribir una aplicación descentralizada de Ethereum.
+
+```tsx
+
+```
+
+Y finalmente, [un componente `RainbowKitProvider`](https://www.rainbowkit.com/). Este componente gestiona el inicio de sesión y la comunicación entre la wallet y la aplicación.
+
+```tsx
+
+```
+
+Ahora podemos tener el componente para la aplicación, que realmente implementa la interfaz de usuario. El `/>` al final del componente le indica a React que este componente no tiene otras definiciones dentro, según el estándar XML.
+
+```tsx
+
+
+ ,
+)
+```
+
+Por supuesto, tenemos que cerrar los demás componentes.
+
+#### `src/App.tsx` {#app-tsx}
+
+```tsx
+import { ConnectButton } from '@rainbow-me/rainbowkit'
+import { useAccount } from 'wagmi'
+import { Greeter } from './components/Greeter'
+
+export function App() {
+```
+
+Esta es la manera estándar de crear un componente de React: definir una función que se llama cada vez que necesita renderizarse. Esta función normalmente incluye algo de código TypeScript o JavaScript en la parte superior, seguido de una declaración `return` que regresa el código JSX.
+
+```tsx
+ const { isConnected } = useAccount()
+```
+
+Aquí utilizamos [`useAccount`](https://wagmi.sh/react/api/hooks/useAccount) para comprobar si estamos conectados a una blockchain mediante una wallet o no.
+
+Por convención, en React las funciones llamadas `use...` son [hooks](https://www.w3schools.com/react/react_hooks.asp) que devuelven algún tipo de dato. Cuando se utilizan estos hooks, el componente obtiene los datos y, cuando esa información cambia, el componente se vuelve a renderizar con la información actualizada.
+
+```tsx
+ return (
+ <>
+```
+
+El JSX de un componente React _debe_ regresar un solo componente. Cuando tenemos varios componentes y no hay uno que los envuelva de forma "natural", utilizamos un componente vacío (`<> ... >`) para agruparlos en un solo componente.
+
+```tsx
+
Greeter
+
+```
+
+Obtenemos [el componente `ConnectButton`](https://www.rainbowkit.com/docs/connect-button) de RainbowKit. Cuando no estamos conectados, nos muestra un botón `Connect Wallet` que abre un modal donde se explica qué son las wallets y permite elegir cuál usar. Cuando estamos conectados, muestra la blockchain que usamos, nuestra dirección de cuenta y el saldo de ETH. Podemos utilizar estas vistas para cambiar de red o desconectarnos.
+
+```tsx
+ {isConnected && (
+```
+
+Cuando necesitamos insertar JavaScript real (o TypeScript que será compilado a JavaScript) dentro de JSX, utilizamos llaves (`{}`).
+
+La sintaxis `a && b` es una forma abreviada de [`a ? b : a`](https://www.w3schools.com/react/react_es6_ternary.asp). Es decir, si `a` es verdadero, evalúa a `b` y, en caso contrario, evalúa a `a` (que puede ser `false`, `0`, etc.). Esta es una forma sencilla de indicarle a React que un componente solo debe mostrarse si se cumple determinada condición.
+
+En este caso, solo queremos mostrarle al usuario `Greeter` si está conectado a una blockchain.
+
+```tsx
+
+ )}
+ >
+ )
+}
+```
+
+#### `src/components/Greeter.tsx` {#greeter-tsx}
+
+Este archivo contiene la mayoría de la funcionalidad de la interfaz de usuario. Incluye definiciones que normalmente estarían en varios archivos, pero como esto es un tutorial, el programa está optimizado para que sea fácil de entender la primera vez, en vez de priorizar el rendimiento o la facilidad de mantenimiento.
+
+```tsx
+import { useState, ChangeEventHandler } from 'react'
+import { useNetwork,
+ useReadContract,
+ usePrepareContractWrite,
+ useContractWrite,
+ useContractEvent
+ } from 'wagmi'
+```
+
+Utilizamos estas funciones de la biblioteca. Nuevamente, se explican más abajo donde se usan.
+
+```tsx
+import { AddressType } from 'abitype'
+```
+
+[La biblioteca `abitype`](https://abitype.dev/) nos proporciona definiciones TypeScript para varios tipos de datos de Ethereum, como [`AddressType`](https://abitype.dev/config#addresstype).
+
+```tsx
+let greeterABI = [
+ .
+ .
+ .
+] as const // greeterABI
+```
+
+El ABI para el contrato `Greeter`.
+Si está desarrollando los contratos y la interfaz a la vez, normalmente los pondría en el mismo repositorio y usaría el ABI generado por el compilador de Solidity como un archivo en la aplicación. Sin embargo, esto no es necesario aquí porque el contrato ya está desarrollado y no va a cambiar.
+
+```tsx
+type AddressPerBlockchainType = {
+ [key: number]: AddressType
+}
+```
+
+TypeScript es fuertemente tipado. Utilizamos esta definición para especificar la dirección donde el contrato `Greeter` está desplegado en diferentes cadenas. La clave es un número (el chainId), y el valor es un `AddressType` (una dirección).
+
+```tsx
+const contractAddrs: AddressPerBlockchainType = {
+ // Holesky
+ 17000: '0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8',
+
+ // Sepolia
+ 11155111: '0x7143d5c190F048C8d19fe325b748b081903E3BF0'
+}
+```
+
+La dirección del contrato en las dos redes soportadas: [Holesky](https://eth-holesky.blockscout.com/address/0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8?tab=contact_code) y [Sepolia](https://eth-sepolia.blockscout.com/address/0x7143d5c190F048C8d19fe325b748b081903E3BF0?tab=contact_code).
+
+Nota: En realidad existe una tercera definición, para Redstone Holesky, lo explicaremos más abajo.
+
+```tsx
+type ShowObjectAttrsType = {
+ name: string,
+ object: any
+}
+```
+
+Este tipo se utiliza como parámetro del componente `ShowObject` (explicado más adelante). Incluye el nombre del objeto y su valor, que se muestran con fines de depuración.
+
+```tsx
+type ShowGreetingAttrsType = {
+ greeting: string | undefined
+}
+```
+
+En cualquier momento podemos saber cuál es el saludo (greeting), porque lo leímos de la blockchain, o no saberlo (porque aún no lo hemos recibido). Por lo tanto, es útil tener un tipo que pueda ser una cadena o que no tenga valor.
+
+##### Componente `Greeter` {#greeter-component}
+
+```tsx
+const Greeter = () => {
+```
+
+Por fin, definimos el componente.
+
+```tsx
+ const { chain } = useNetwork()
+```
+
+Información sobre la cadena que estamos usando, cortesía de [wagmi](https://wagmi.sh/react/hooks/useNetwork).
+Como esto es un hook (`use...`), cada vez que esta información cambia el componente se vuelve a renderizar.
+
+```tsx
+ const greeterAddr = chain && contractAddrs[chain.id]
+```
+
+La dirección del contrato Greeter, que varía según la cadena (y que es `undefined` si no hay información de la cadena o si estamos en una cadena sin ese contrato).
+
+```tsx
+ const readResults = useReadContract({
+ address: greeterAddr,
+ abi: greeterABI,
+ functionName: "greet" , // No arguments
+ watch: true
+ })
+```
+
+[El hook `useReadContract`](https://wagmi.sh/react/api/hooks/useReadContract) lee información de un contrato. Puede ver exactamente qué información devuelve expandiendo `readResults` en la interfaz de usuario. En este caso queremos que siga monitoreando, para que se nos notifique cuando cambie el saludo.
+
+**Nota:** Podríamos escuchar [eventos `setGreeting`](https://eth-holesky.blockscout.com/address/0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8?tab=logs) para saber cuándo cambia el saludo y actualizar de esa manera. Sin embargo, aunque pueda ser más eficiente, no será aplicable en todos los casos. Cuando el usuario cambia a otra cadena, el saludo también cambia, pero ese cambio no viene acompañado de un evento. Podríamos tener una parte del código escuchando eventos y otra para identificar cambios en la cadena, pero eso sería más complicado que simplemente establecer [el parámetro `watch`](https://wagmi.sh/react/api/hooks/useReadContract#watch-optional).
+
+```tsx
+ const [ newGreeting, setNewGreeting ] = useState("")
+```
+
+El [hook `useState` de React](https://www.w3schools.com/react/react_usestate.asp) nos permite especificar una variable de estado, cuyo valor persiste entre renderizaciones del componente. El valor inicial es el parámetro, en este caso la cadena vacía.
+
+El hook `useState` devuelve una lista con dos valores:
+
+1. El valor actual de la variable de estado.
+2. Una función para modificar la variable de estado cuando sea necesario. Como esto es un hook, cada vez que se llama el componente se vuelve a renderizar.
+
+En este caso, utilizamos una variable de estado para el nuevo saludo que el usuario desea establecer.
+
+```tsx
+ const greetingChange : ChangeEventHandler = (evt) =>
+ setNewGreeting(evt.target.value)
+```
+
+Este es el evento manejador para cuando cambia el campo de entrada del nuevo saludo. El tipo, [`ChangeEventHandler`](https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/forms_and_events/), especifica que este es un manejador para un cambio de valor de un elemento de entrada HTML. La parte `` se utiliza porque es un [tipo genérico](https://www.w3schools.com/typescript/typescript_basic_generics.php).
+
+```tsx
+ const preparedTx = usePrepareContractWrite({
+ address: greeterAddr,
+ abi: greeterABI,
+ functionName: 'setGreeting',
+ args: [ newGreeting ]
+ })
+ const workingTx = useContractWrite(preparedTx.config)
+```
+
+Este es el proceso para enviar una transacción a la blockchain desde el lado del cliente:
+
+1. Enviar la transacción a un nodo de la blockchain usando [`eth_estimateGas`](https://docs.alchemy.com/reference/eth-estimategas).
+2. Esperar una respuesta del nodo.
+3. Cuando se recibe la respuesta, pedir al usuario que firme la transacción a través de la wallet. Este paso _debe_ suceder después de recibir la respuesta del nodo porque al usuario se le muestra el coste de gas de la transacción antes de firmarla.
+4. Esperar la aprobación del usuario.
+5. Enviar la transacción de nuevo, esta vez usando [`eth_sendRawTransaction`](https://docs.alchemy.com/reference/eth-sendrawtransaction).
+
+El paso 2 probablemente tomará un tiempo perceptible, durante el cual los usuarios se preguntarán si su orden fue realmente recibida por la interfaz y por qué aún no se les pide firmar la transacción. Eso genera una mala experiencia de usuario (UX).
+
+La solución es usar [prepare hooks](https://wagmi.sh/react/prepare-hooks). Cada vez que un parámetro cambia, envíe inmediatamente la solicitud `eth_estimateGas` al nodo. Luego, cuando el usuario finalmente desea enviar la transacción (en este caso al presionar **Update greeting**), el coste de gas ya es conocido y la pantalla de la wallet puede aparecer de inmediato.
+
+```tsx
+ return (
+```
+
+Ahora por fin podemos crear el HTML real que se devolverá.
+
+```tsx
+ <>
+
Greeter
+ {
+ !readResults.isError && !readResults.isLoading &&
+
+ }
+
+```
+
+Cree un componente `ShowGreeting` (explicado más adelante), pero solo si el saludo fue leído correctamente de la blockchain.
+
+```tsx
+
+```
+
+Este es el campo de texto donde el usuario puede establecer un nuevo saludo. Cada vez que el usuario presiona una tecla, se llama a `greetingChange`, que a su vez llama a `setNewGreeting`. Como `setNewGreeting` proviene del hook `useState`, provoca que el componente `Greeter` se renderice de nuevo. Esto significa que:
+
+- Necesitamos especificar `value` para mantener el valor del nuevo saludo, ya que de lo contrario volvería al valor por defecto, la cadena vacía.
+- `usePrepareContractWrite` se llama cada vez que cambia `newGreeting`, lo que significa que siempre tendrá el valor más reciente en la transacción preparada.
+
+```tsx
+
+```
+
+Si no existe `workingTx.write`, aún estamos esperando la información necesaria para enviar la actualización del saludo, así que el botón se desactiva. Si existe un valor para `workingTx.write`, esa es la función que debe llamarse para enviar la transacción.
+
+```tsx
+
+
+
+
+ >
+ )
+}
+```
+
+Por último, para ayudarle a ver qué estamos haciendo, mostramos los tres objetos que usamos:
+
+- `readResults`
+- `preparedTx`
+- `workingTx`
+
+##### Componente `ShowGreeting` {#showgreeting-component}
+
+Este componente muestra
+
+```tsx
+const ShowGreeting = (attrs : ShowGreetingAttrsType) => {
+```
+
+Una función de componente recibe un parámetro con todos los atributos del componente.
+
+```tsx
+ return {attrs.greeting}
+}
+```
+
+##### Componente `ShowObject` {#showobject-component}
+
+Con fines informativos, usamos el componente `ShowObject` para mostrar los objetos importantes (`readResults` para leer el saludo y `preparedTx` y `workingTx` para las transacciones que creamos).
+
+```tsx
+const ShowObject = (attrs: ShowObjectAttrsType ) => {
+ const keys = Object.keys(attrs.object)
+ const funs = keys.filter(k => typeof attrs.object[k] == "function")
+ return <>
+
+```
+
+No queremos saturar la interfaz con toda la información, así que, para poder verla o cerrarla, usamos una etiqueta [`details`](https://www.w3schools.com/tags/tag_details.asp).
+
+```tsx
+ {attrs.name}
+
+ {JSON.stringify(attrs.object, null, 2)}
+```
+
+La mayoría de los campos se muestran con [`JSON.stringify`](https://www.w3schools.com/js/js_json_stringify.asp).
+
+```tsx
+
+ { funs.length > 0 &&
+ <>
+ Functions:
+
+```
+
+La excepción son las funciones, que no forman parte del [estándar JSON](https://www.json.org/json-en.html), así que deben mostrarse por separado.
+
+```tsx
+ {funs.map((f, i) =>
+```
+
+Dentro de JSX, el código dentro de `{` llaves `}` se interpreta como JavaScript. A continuación, el código dentro de los paréntesis `()` se interpreta de nuevo como JSX.
+
+```tsx
+ (
{f}
)
+ )}
+```
+
+React requiere que las etiquetas en el [árbol DOM](https://www.w3schools.com/js/js_htmldom.asp) tengan identificadores únicos. Esto significa que los hijos de la misma etiqueta (en este caso, [la lista desordenada](https://www.w3schools.com/tags/tag_ul.asp)), necesitan diferentes atributos `key`.
+
+```tsx
+
+ >
+ }
+
+ >
+}
+```
+
+Cierre las diversas etiquetas HTML.
+
+##### El `export` final {#the-final-export}
+
+```tsx
+export { Greeter }
+```
+
+El componente `Greeter` es el que debemos exportar para la aplicación.
+
+#### `src/wagmi.ts` {#wagmi-ts}
+
+Finalmente, varias definiciones relacionadas con WAGMI se encuentran en `src/wagmi.ts`. No voy a explicar todo aquí, porque la mayoría es código base (boilerplate) que probablemente no necesitará cambiar.
+
+El código aquí no es exactamente igual al que está [en github](https://github.com/qbzzt/20230801-modern-ui/blob/main/src/wagmi.ts) porque más adelante en el artículo agregamos otra cadena ([Redstone Holesky](https://redstone.xyz/docs/network-info)).
+
+```ts
+import { getDefaultWallets } from '@rainbow-me/rainbowkit'
+import { configureChains, createConfig } from 'wagmi'
+import { holesky, sepolia } from 'wagmi/chains'
+```
+
+Importe las blockchains que soporta la aplicación. Puede ver la lista de cadenas soportadas [en el github de viem](https://github.com/wagmi-dev/viem/tree/main/src/chains/definitions).
+
+```ts
+import { publicProvider } from 'wagmi/providers/public'
+
+const walletConnectProjectId = 'c96e690bb92b6311e8e9b2a6a22df575'
+```
+
+Para poder utilizar [WalletConnect](https://walletconnect.com/) necesita un project ID para su aplicación. Puede obtenerlo en [cloud.walletconnect.com](https://cloud.walletconnect.com/sign-in).
+
+```ts
+const { chains, publicClient, webSocketPublicClient } = configureChains(
+ [ holesky, sepolia ],
+ [
+ publicProvider(),
+ ],
+)
+
+const { connectors } = getDefaultWallets({
+ appName: 'My wagmi + RainbowKit App',
+ chains,
+ projectId: walletConnectProjectId,
+})
+
+export const config = createConfig({
+ autoConnect: true,
+ connectors,
+ publicClient,
+ webSocketPublicClient,
+})
+
+export { chains }
+```
+
+### Agregar otra blockchain {#add-blockchain}
+
+Hoy en día existen muchas [soluciones de escalado L2](/layer-2/), y es posible que quiera soportar algunas que viem aún no soporta. Para hacerlo, modifique `src/wagmi.ts`. Estas instrucciones explican cómo agregar [Redstone Holesky](https://redstone.xyz/docs/network-info).
+
+1. Importe el tipo `defineChain` desde viem.
+
+ ```ts
+ import { defineChain } from 'viem'
+ ```
+
+2. Agregue la definición de la red.
+
+ ```ts
+ const redstoneHolesky = defineChain({
+ id: 17_001,
+ name: 'Redstone Holesky',
+ network: 'redstone-holesky',
+ nativeCurrency: {
+ decimals: 18,
+ name: 'Ether',
+ symbol: 'ETH',
+ },
+ rpcUrls: {
+ default: {
+ http: ['https://rpc.holesky.redstone.xyz'],
+ webSocket: ['wss://rpc.holesky.redstone.xyz/ws'],
+ },
+ public: {
+ http: ['https://rpc.holesky.redstone.xyz'],
+ webSocket: ['wss://rpc.holesky.redstone.xyz/ws'],
+ },
+ },
+ blockExplorers: {
+ default: { name: 'Explorer', url: 'https://explorer.holesky.redstone.xyz' },
+ },
+ })
+ ```
+
+3. Agregue la nueva cadena a la llamada de `configureChains`.
+
+ ```ts
+ const { chains, publicClient, webSocketPublicClient } = configureChains(
+ [ holesky, sepolia, redstoneHolesky ],
+ [ publicProvider(), ],
+ )
+ ```
+
+4. Asegúrese de que la aplicación conozca la dirección de sus contratos en la nueva red. En este caso, se modifica `src/components/Greeter.tsx`:
+
+ ```ts
+ const contractAddrs : AddressPerBlockchainType = {
+ // Holesky
+ 17000: '0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8',
+
+ // Redstone Holesky
+ 17001: '0x4919517f82a1B89a32392E1BF72ec827ba9986D3',
+
+ // Sepolia
+ 11155111: '0x7143d5c190F048C8d19fe325b748b081903E3BF0'
+ }
+ ```
+
+## Conclusión {#conclusion}
+
+Por supuesto, realmente no le interesa crear una interfaz de usuario para `Greeter`. Usted quiere crear una interfaz de usuario para sus propios contratos. Para crear su propia aplicación, siga estos pasos:
+
+1. Indique que quiere crear una aplicación wagmi.
+
+ ```sh copy
+ pnpm create wagmi
+ ```
+
+2. Nombre la aplicación.
+
+3. Seleccione el framework **React**.
+
+4. Seleccione la variante **Vite**.
+
+5. Puede [agregar Rainbow kit](https://www.rainbowkit.com/docs/installation#manual-setup).
+
+Ahora haga que sus contratos sean utilizables para el mundo entero.
+
+[Vea aquí más de mi trabajo](https://cryptodocguy.pro/).
+
From 9d8a2df6cb6d4c5c1094a266b8c5501b04d30c92 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:50 -0300
Subject: [PATCH 046/589] update(i18n):
public/content/translations/es/dao/index.md
---
public/content/translations/es/dao/index.md | 108 ++++++++++----------
1 file changed, 55 insertions(+), 53 deletions(-)
diff --git a/public/content/translations/es/dao/index.md b/public/content/translations/es/dao/index.md
index b9802d2eaff..3da8b5c2172 100644
--- a/public/content/translations/es/dao/index.md
+++ b/public/content/translations/es/dao/index.md
@@ -1,6 +1,6 @@
---
-title: '¿Qué es una DAO?'
-metaTitle: '¿Qué es una DAO? | Organizaciones Autónomas Descentralizadas'
+title: ¿Qué es una DAO?
+metaTitle: ¿Qué es una DAO? | Organizaciones Autónomas Descentralizadas
description: Una visión general de las DAO en Ethereum
lang: es
template: use-cases
@@ -19,7 +19,7 @@ Una DAO (Decentralized Autonomous Organization) es una organización de propieda
Las DAO nos permiten trabajar con personas de ideas afines a nosotros en todo el mundo sin tener que confiar en un líder benévolo para que administre los fondos u operaciones. No existe ningún director ejecutivo que pueda gastar los fondos a su antojo, ni ningún director financiero que pueda manipular la contabilidad. En lugar de eso, las reglas basadas en la cadena de bloques e integradas en el código son las que definen cómo funciona la organización y cómo se gastan los fondos.
-Han incorporado tesoros a los que nadie tiene autoridad para acceder sin la aprobación del grupo. Las decisiones se rigen por propuestas y votos para asegurar que todos los miembros de la organización tengan voz y que todo sea transparente [en la cadena de bloques](/glossary/#on-chain).
+Han incorporado tesoros a los que nadie tiene autoridad para acceder sin la aprobación del grupo. Las decisiones se rigen por propuestas y votaciones para asegurar que todas las personas en la organización tengan voz, y todo ocurre de manera transparente [onchain](/glossary/#onchain).
## ¿Por qué necesitamos DAO? {#why-dao}
@@ -29,27 +29,27 @@ Así se abren nuevas oportunidades para la colaboración y coordinación globale
### Una comparación {#dao-comparison}
-| DAO | Una organización tradicional |
-| ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
-| Suele ser plana y totalmente democratizada. | Suele ser jerárquica. |
-| Los miembros votan previamente cualquier cambio que quieran emprender. | Dependiendo de la estructura, se pueden exigir cambios a un único grupo o se puede ofrecer la posibilidad de votarlos. |
-| Los votos cuentan y los resultados se implementan automáticamente sin intermediarios de confianza. | Si se permite la votación, los votos se contabilizan internamente y el resultado de la votación debe ser tramitado manualmente. |
+| DAO | Una organización tradicional |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
+| Suele ser plana y totalmente democratizada. | Suele ser jerárquica. |
+| Los miembros votan previamente cualquier cambio que quieran emprender. | Dependiendo de la estructura, se pueden exigir cambios a un único grupo o se puede ofrecer la posibilidad de votarlos. |
+| Los votos cuentan y los resultados se implementan automáticamente sin intermediarios de confianza. | Si se permite la votación, los votos se contabilizan internamente y el resultado de la votación debe ser tramitado manualmente. |
| Los servicios ofrecidos se gestionan automáticamente de forma descentralizada (por ejemplo, la distribución de fondos filantrópicos). | Requiere tramitación humana o centralización, propensa a la manipulación. |
-| Toda la actividad es transparente y totalmente pública. | La actividad es normalmente privada y limitada al público. |
+| Toda la actividad es transparente y totalmente pública. | La actividad es normalmente privada y limitada al público. |
### Ejemplos de DAO {#dao-examples}
Para ayudar a que esto tenga más sentido, aquí hay algunos ejemplos de cómo se podría usar una DAO:
-- **Una organización benéfica:** Podría aceptar donaciones de cualquier persona en el mundo y votar sobre qué causas financiar.
-- **Propiedad colectiva:** Podría comprar activos físicos o digitales, y los miembros pueden votar sobre cómo usarlos.
-- **Emprendimientos y subvenciones:** Podría crear un fondo de inversión que agrupe capital y permita votar sobre los emprendimientos que respaldará. El dinero reembolsado podría redistribuirse posteriormente entre los miembros de la DAO.
+- **Una organización benéfica** – puedes aceptar donaciones de cualquier parte del mundo y votar sobre las causas que financiar.
+- **Propiedad colectiva** – puedes adquirir activos físicos o digitales y los miembros pueden votar sobre cómo usarlos.
+- **Proyectos y subvenciones** – puedes crear un fondo de inversión colectiva que agrupe capital y vote sobre los proyectos a respaldar. El dinero reembolsado podría redistribuirse posteriormente entre los miembros de la DAO.
## ¿Cómo funcionan las DAO? {#how-daos-work}
-La columna vertebral de una DAO es su [contrato inteligente](/glossary/#smart-contract), el cual define las reglas de la organización y custodia el tesoro del grupo. Una vez que el contrato está activo en Ethereum, nadie puede cambiar las reglas excepto con una votación. Si alguien intenta hacer algo que no está cubierto por las reglas y la lógica del código, no podrá hacerlo. Y dado que el tesoro está definido también por el contrato inteligente, nadie puede gastar el dinero sin la aprobación del grupo. Esto significa que las DAO no necesitan una autoridad central. En vez de ello, el grupo toma las decisiones colectivamente y los pagos se autorizan automáticamente cuando se aprueben los votos suficientes.
+La columna vertebral de una DAO es su [smart contract](/glossary/#smart-contract), que define las reglas de la organización y resguarda el tesoro del grupo. Una vez que el contrato está activo en Ethereum, nadie puede cambiar las reglas excepto con una votación. Si alguien intenta hacer algo que no está cubierto por las reglas y la lógica del código, no podrá hacerlo. Y dado que el tesoro está definido también por el contrato inteligente, nadie puede gastar el dinero sin la aprobación del grupo. Esto significa que las DAO no necesitan una autoridad central. En vez de ello, el grupo toma las decisiones colectivamente y los pagos se autorizan automáticamente cuando se aprueben los votos suficientes.
Esto se consigue gracias a que los contratos inteligentes son a prueba de manipulación una vez que conectan con Ethereum. No puede editar el código (las reglas de la DAO) sin que la gente se dé cuenta, ya que todo es público.
@@ -62,7 +62,7 @@ Ethereum es la base perfecta para las DAO por varias razones:
- Los contratos inteligentes pueden enviar/recibir fondos. Sin esto necesitará un intermediario de confianza para administrar los fondos del grupo.
- La comunidad Ethereum ha demostrado ser más colaborativa que competitiva, permitiendo que emerjan rápidamente las mejores prácticas y sistemas de apoyo.
-## Gobernanza de las DAO {#dao-governance}
+## Gobernanza en las DAO {#dao-governance}
Muchas consideraciones entran en juego a la hora de gobernar una DAO, como la manera en que funcionan los votos y las propuestas.
@@ -70,94 +70,96 @@ Muchas consideraciones entran en juego a la hora de gobernar una DAO, como la ma
La delegación es la versión DAO de la democracia representativa. Los poseedores de los tokens delegan votos a los usuarios quienes se nominan a sí mismos y se comprometen a administrar el protocolo y mantenerse informados.
-#### Un conocido ejemplo {#governance-example}
+#### Un ejemplo famoso {#governance-example}
-[ENS:](https://claim.ens.domains/delegate-ranking) Los titulares de ENS pueden delegar sus votos a miembros comprometidos de la comunidad para representarlos.
+[ENS](https://claim.ens.domains/delegate-ranking) – Los titulares de ENS pueden delegar sus votos a miembros activos de la comunidad para que los representen.
### Gobernanza de transacciones automáticas {#governance-example}
En muchas DAO, las transacciones se ejecutarán automáticamente si el quórum de miembros vota afirmativamente.
-#### Un conocido ejemplo {#governance-example}
+#### Un ejemplo famoso {#governance-example}
-[Nouns:](https://nouns.wtf) En Nouns DAO, una transacción se ejecuta automáticamente si se cumple un quórum de votos y la mayoría voto afirmativamente, siempre y cuando no reciba el veto de los fundadores.
+[Nouns](https://nouns.wtf) – En Nouns DAO, una transacción se ejecuta automáticamente si se alcanza el quórum de votos y la mayoría vota afirmativamente, siempre que no sea vetada por los fundadores.
-### Gobernanza multifirma {#governance-example}
+### Gobernanza multisig {#governance-example}
-Mientras que las DAO pueden tener miles de miembros votantes, los fondos pueden residir en una [billetera](/glossary/#wallet) compartida por 5-20 miembros activos de la comunidad que suelen ser de confianza y generalmente doxados (identidades públicas conocidas por la comunidad). Después de una votación, los firmantes [multifirma](/glossary/#multisig) ejecutan la voluntad de la comunidad.
+Aunque las DAO pueden tener miles de miembros votantes, los fondos pueden residir en una [wallet](/glossary/#wallet) compartida por 5-20 miembros activos de la comunidad que son de confianza y, por lo general, tienen identidad pública (doxxeados ante la comunidad). Después de una votación, los firmantes del [multisig](/glossary/#multisig) ejecutan la voluntad de la comunidad.
-## Leyes de una DAO {#dao-laws}
+## Leyes de las DAO {#dao-laws}
En 1977, Wyoming inventó la LLC, la cual protege a los empresarios y limita su responsabilidad. Más recientemente, fueron pioneros en la ley DAO que establece el estatus legal de las DAO. Actualmente Wyoming, Vermont y las Islas Vírgenes tienen alguna legislación que regula las DAO.
-### Un conocido ejemplo {#law-example}
+### Un ejemplo famoso {#law-example}
-[CityDAO:](https://citizen.citydao.io/) CityDAO utilizó la ley de las DAO de Wyoming para comprar 40 hectáreas de tierra cerca del Parque Nacional de Yellowstone.
+[CityDAO](https://citizen.citydao.io/) – CityDAO utilizó la ley de DAO de Wyoming para comprar 40 acres de terreno cerca del Parque Nacional Yellowstone.
-## Membresía de las DAO {#dao-membership}
+## Membresía en DAO {#dao-membership}
Existen diferentes modelos de afiliación a una DAO. La membresía puede determinar cómo funciona la votación y otras partes clave de la DAO.
### Membresía basada en tokens {#token-based-membership}
-Normalmente, no necesita de [permisos](/glossary/#permissionless), dependiendo del token utilizado. En su mayoría, estos tokens de gobernanza pueden comercializarse decentralizadamente en un [exchange descentralizado](/glossary/#dex). Otros deben ganarse proporcionando liquidez o alguna otra "prueba de trabajo". En cualquier caso, simplemente poseer el token otorga acceso a las votaciones.
+Por lo general, completamente [permissionless](/glossary/#permissionless), dependiendo del token utilizado. En su mayoría, estos tokens de gobernanza pueden intercambiarse sin permiso en un [exchange descentralizado](/glossary/#dex). Otros deben ganarse proporcionando liquidez o alguna otra "prueba de trabajo". En cualquier caso, simplemente poseer el token otorga acceso a las votaciones.
_Típicamente se usa para gobernar protocolos descentralizados amplios o tokens en sí mismos._
-#### Un conocido ejemplo {#token-example}
+#### Un ejemplo famoso {#token-example}
-[MakerDAO:](https://makerdao.com) MKR, el token de MakerDAO, está ampliamente disponible en plataformas de intercambio descentralizadas, y cualquiera puede comprarlo para obtener un voto en el futuro del protocolo Maker.
+[MakerDAO](https://makerdao.com) – El token MKR de MakerDAO está ampliamente disponible en exchanges descentralizados y cualquier persona puede adquirir poder de voto sobre el futuro del protocolo Maker.
-### Membresía basada en participación {#share-based-membership}
+### Membresía basada en participaciones {#share-based-membership}
Las DAO basadas en participación dependen más de los permisos, pero siguen siendo bastante abiertas. Cualquier miembro potencial puede presentar una propuesta para unirse a la DAO, generalmente ofreciendo un tributo de algún valor en forma de tokens o trabajo. La participación representa poder de voto y propiedad directos. Los miembros pueden salir en cualquier momento con su parte proporcional del tesoro.
_Normalmente se utiliza para organizaciones más unidas, centradas en el ser humano, como organizaciones benéficas, sindicatos y clubes de inversión. También se pueden gobernar protocolos y tokens._
-#### Un conocido ejemplo {#share-example}
+#### Un ejemplo famoso {#share-example}
-[MolochDAO:](http://molochdao.com/) MolochDAO se centra en la financiación de proyectos Ethereum. Requieren una propuesta para la membresía, de modo que el grupo pueda evaluar si tiene la experiencia y el capital necesarios para emitir juicios informados sobre los potenciales beneficiarios. No se puede simplemente comprar acceso a la DAO en el mercado abierto.
+[MolochDAO](http://molochdao.com/) – MolochDAO se enfoca en financiar proyectos de Ethereum. Requieren una propuesta para la membresía, de modo que el grupo pueda evaluar si tiene la experiencia y el capital necesarios para emitir juicios informados sobre los potenciales beneficiarios. No se puede simplemente comprar acceso a la DAO en el mercado abierto.
-### Membresía basada en la reputación {#reputation-based-membership}
+### Membresía basada en reputación {#reputation-based-membership}
-La reputación representa una prueba de participación y otorga poder de voto en la DAO. A diferencia de la adhesión de miembros basada en tokens o en la participación, las DAO basadas en la reputación no transfieren la propiedad a los colaboradores. La reputación no puede comprarse, transferirse ni delegarse; los miembros de la DAO deben ganarse la reputación mediante la participación. La votación en cadena se realiza sin permiso, y los potenciales miembros pueden presentar propuestas libremente para unirse a la DAO y solicitar reputación y tokens como recompensa a cambio de su contribución.
+La reputación representa una prueba de participación y otorga poder de voto en la DAO. A diferencia de la adhesión de miembros basada en tokens o en la participación, las DAO basadas en la reputación no transfieren la propiedad a los colaboradores. La reputación no puede comprarse, transferirse ni delegarse; los miembros de la DAO deben ganarse la reputación mediante la participación. La votación en cadena se realiza sin permiso, y los potenciales miembros pueden presentar propuestas libremente para unirse a la DAO y solicitar reputación y tókenes como recompensa a cambio de su contribución.
-_Normalmente se utiliza para el desarrollo descentralizado y la gobernanza de protocolos y [dapps](/glossary/#dapp), pero también se adapta bien a un conjunto diverso de organizaciones como organizaciones benéficas, sindicatos, clubes de inversión, etc._
+_Normalmente utilizada para el desarrollo descentralizado y la gobernanza de protocolos y [dapps](/glossary/#dapp), pero también adecuada para una amplia variedad de organizaciones como organizaciones benéficas, colectivos de trabajadores, clubes de inversión, etc._
-#### Un conocido ejemplo {#reputation-example}
+#### Un ejemplo famoso {#reputation-example}
-[DXdao:](https://DXdao.eth.limo) DXdao era un colectivo soberano global que construía y gobernaba protocolos y aplicaciones descentralizados desde 2019. Aprovechaba la gobernanza basada en la reputación y el [consenso holográfico](/glossary/#holographic-consensus) para coordinar y gestionar los fondos, lo que significa que nadie podía comprar su forma de influir en su futuro o gobernanza.
+[DXdao](https://DXdao.eth.limo) – DXdao fue un colectivo soberano global que construía y gobernaba protocolos y aplicaciones descentralizados desde 2019. Aprovechó la gobernanza basada en reputación y el [consenso holográfico](/glossary/#holographic-consensus) para coordinar y gestionar fondos, lo que significa que nadie podía comprar participación para influir en su futuro o en su gobernanza.
-## Crear/unirse a una DAO {#join-start-a-dao}
+## Unirse o crear una DAO {#join-start-a-dao}
-### Únase a una DAO {#join-a-dao}
+### Unirse a una DAO {#join-a-dao}
-- [Comunidad Ethereum y DAO](/community/get-involved/#decentralized-autonomous-organizations-daos)
-- [Lista de DAOHaus de las DAO](https://app.daohaus.club/explore)
-- [Lista Tally.xyz de DAO](https://www.tally.xyz)
+- [DAOs de la comunidad Ethereum](/community/get-involved/#decentralized-autonomous-organizations-daos)
+- [Lista de DAOs en DAOHaus](https://app.daohaus.club/explore)
+- [Lista de DAO de Tally.xyz](https://www.tally.xyz/explore)
+- [Lista de DAOs en DeGov.AI](https://apps.degov.ai/)
### Crear una DAO {#start-a-dao}
-- [Crear una DAO con DAOHaus](https://app.daohaus.club/summon)
-- [Iniciar un gobernador DAO con Tally](https://www.tally.xyz/add-a-dao)
-- [Crear una DAO impulsada por Aragon](https://aragon.org/product)
-- [Empezar una colonia](https://colony.io/)
-- [Crear una DAO con el consenso holográfico de DAOstack](https://alchemy.daostack.io/daos/create)
+- [Invoca una DAO con DAOhaus](https://app.daohaus.club/summon)
+- [Inicie una DAO de gobernador con Tally](https://www.tally.xyz/get-started)
+- [Crea una DAO impulsada por Aragon](https://aragon.org/product)
+- [Crea una colonia](https://colony.io/)
+- [Crea una DAO con el consenso holográfico de DAOstack](https://alchemy.daostack.io/daos/create)
+- [Lanza una DAO con DeGov Launcher](https://docs.degov.ai/integration/deploy)
-## Para profundizar sobre el tema {#further-reading}
+## Lecturas adicionales {#further-reading}
-### Artículos acerca de las DAO {#dao-articles}
+### Artículos sobre DAO {#dao-articles}
- [¿Qué es una DAO?](https://aragon.org/dao) – [Aragon](https://aragon.org/)
-- [La casa de las DAO](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/)
+- [House of DAOs](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/)
- [¿Qué es una DAO y para qué sirve?](https://daohaus.substack.com/p/-what-is-a-dao-and-what-is-it-for) – [DAOhaus](https://daohaus.club/)
-- [Cómo empezar una comunidad digital con una DAO](https://daohaus.substack.com/p/four-and-a-half-steps-to-start-a) – [DAOhaus](https://daohaus.club/)
+- [Cómo iniciar una comunidad digital impulsada por DAO](https://daohaus.substack.com/p/four-and-a-half-steps-to-start-a) – [DAOhaus](https://daohaus.club/)
- [¿Qué es una DAO?](https://coinmarketcap.com/alexandria/article/what-is-a-dao) – [Coinmarketcap](https://coinmarketcap.com)
-- [¿Qué es el consenso holográfico?](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c) - [DAOstack](https://daostack.io/)
-- [Las DAO no son corporaciones: donde la descentralización en organizaciones autónomas importa, por Vitalik](https://vitalik.eth.limo/general/2022/09/20/daos.html)
-- [DAO, DAC, DA y más: una guía de terminología incompleta](https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide) - [Blog de Ethereum](https://blog.ethereum.org)
+- [¿Qué es el Consenso Holográfico?](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c) - [DAOstack](https://daostack.io/)
+- [Las DAO no son corporaciones: dónde importa la descentralización en las organizaciones autónomas, por Vitalik](https://vitalik.eth.limo/general/2022/09/20/daos.html)
+- [DAOs, DACs, DAs y más: Una guía incompleta de terminología](https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide) - [Ethereum Blog](https://blog.ethereum.org)
-### Vídeos {#videos}
+### Videos {#videos}
- [¿Qué es una DAO en cripto?](https://youtu.be/KHm0uUPqmVE)
- [¿Puede una DAO construir una ciudad?](https://www.ted.com/talks/scott_fitsimones_could_a_dao_build_the_next_great_city) – [TED](https://www.ted.com/)
From d1f38bd152291a6f42e9cfcf3320e5bab933a7c0 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:51 -0300
Subject: [PATCH 047/589] update(i18n):
public/content/translations/es/nft/index.md
---
public/content/translations/es/nft/index.md | 65 +++++++++++----------
1 file changed, 34 insertions(+), 31 deletions(-)
diff --git a/public/content/translations/es/nft/index.md b/public/content/translations/es/nft/index.md
index 5927a96fd25..deb8a7cccc4 100644
--- a/public/content/translations/es/nft/index.md
+++ b/public/content/translations/es/nft/index.md
@@ -1,6 +1,6 @@
---
title: Tókenes no fungibles (NFT)
-metaTitle: '¿Qué son los NFT? | Beneficios y uso'
+metaTitle: ¿Qué son los NFT? | Beneficios y uso
description: Una visión general de los NFT en Ethereum
lang: es
template: use-cases
@@ -15,28 +15,30 @@ summaryPoint3: Impulsados por contratos inteligentes en la cadena de bloques de
## ¿Qué son los NFT? {#what-are-nfts}
-Los NFT son tókenes **únicos individualmente**. Cada NFT tiene diferentes propiedades (no fungibles) y es probable que no abunde. Son diferentes de tókenes como [ETH](/glossary/#ether) u otros tókenes basados en Ethereum, como USDC, donde cada token es idéntico y tiene las mismas propiedades (o «fungible», en inglés). No importa el billete (o ETH) que tenga en su cartera, porque todos son idénticos y tienen el mismo valor. Pero, _sí_ le importaría saber qué NFT en concreto posee, porque cada uno tiene propiedades individuales que lo distinguen de los demás («no fungibles»).
+Los NFT son tokens que son **individualmente únicos**. Cada NFT tiene diferentes propiedades (no fungibles) y es probable que no abunde. Esto es diferente de tokens como [ETH](/glossary/#ether) u otros tokens basados en Ethereum como USDC, donde cada token es idéntico y tiene las mismas propiedades ('fungibles'). No importa el billete (o ETH) que tenga en su cartera, porque todos son idénticos y tienen el mismo valor. Sin embargo, sí importa qué NFT específico posee, porque todos tienen propiedades individuales que los distinguen de los demás ('no fungibles').
-El carácter único de cada NFT permite la tokenización de cosas como arte, bienes coleccionables, o incluso bienes raíces, donde cada NFT específico es único y representa algo específico que es único en el mundo real o digital. La propiedad de un activo se puede verificar en la [cadena de bloques](/glossary/#blockchain) de Ethereum.
+El carácter único de cada NFT permite la tokenización de cosas como arte,
+bienes coleccionables, o incluso bienes raíces, donde cada NFT específico es
+único y representa algo específico que es único en el mundo real o digital. La propiedad de un activo es verificable públicamente en la [blockchain](/glossary/#blockchain) de Ethereum.
-## El Internet de los activos {#internet-of-assets}
+## La internet de los activos {#internet-of-assets}
-Los NFT y Ethereum solucionan algunos de los problemas que existen hoy en día en Internet. A medida que todo se vuelve cada vez más digital, existe la necesidad de duplicar las propiedades de los elementos físicos como la escasez, la singularidad y la prueba de propiedad, de tal manera que no esté controlado por una organización central. Por ejemplo, con los NFT, puede ser el dueño de un archivo de audio mp3 a través de las aplicaciones basadas en Ethereum y no estar limitado a la aplicación de música de una compañía en concreto, como Spotify o Apple Music. Se puede ser titular de una cuenta en las redes sociales donde vender o intercambiar, pero **no se puede ser eliminado arbitrariamente ** por el proveedor de la plataforma.
+Los NFT y Ethereum solucionan algunos de los problemas que existen hoy en día en Internet. A medida que todo se vuelve cada vez más digital, existe la necesidad de duplicar las propiedades de los elementos físicos como la escasez, la singularidad y la prueba de propiedad, de tal manera que no esté controlado por una organización central. Por ejemplo, con los NFT, puede ser el dueño de un archivo de audio mp3 a través de las aplicaciones basadas en Ethereum y no estar limitado a la aplicación de música de una compañía en concreto, como Spotify o Apple Music. Puede poseer un identificador de red social que puede vender o intercambiar, pero **no puede ser retirado arbitrariamente por un proveedor de plataforma**.
Así es cómo el internet de los NFT comparado con el internet que la mayoría de nosotros conocemos hoy en día se ve...
### Una comparación {#nft-comparison}
-| Internet con NFT | Internet actual |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **¡Usted es el dueño de sus activos!** Solo usted puede venderlos o intercambiarlos. | **Puede alquilar un activo** de alguna organización y se lo pueden quitar. |
-| Los NFT son**digitalmente únicos**, no hay dos NFT iguales. | **Una copia a menudo no puede distinguirse** del original. |
-| La propiedad de un NFT se almacena en la cadena de bloques para que cualquiera pueda **verificarla públicamente**. | El acceso a los registros de propiedad está **controlado por las insituciones**; hay que fiarse de su palabra. |
-| Los NFT son [contratos inteligentes](/glossary/#smart-contract) en Ethereum. ¡Esto significa que **pueden utilizarse fácilmente en otros contratos inteligentes** y aplicaciones en Ethereum! | Las empresas con activos digitales suelen **necesitar su propia infraestructura de «jardín amurallado»**. |
-| Los **creadores de contenido pueden vender su trabajo en cualquier lugar** y acceder a un mercado global. | Los creadores dependen de la infraestructura y la distribución de las plataformas que usan. A menudo suelen estar sujetos a condiciones de uso y **restricciones geográficas**. |
-| Los creadores de NFT **pueden conservar los derechos de propiedad** sobre sus propio trabajo, y programar regalías directamente en el contrato del NFT. | Las plataformas, como los servicios de **streaming de música, se quedan con la mayor parte de los beneficios de las ventas**. |
+| Internet con NFT | Internet actual |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **¡Usted es el dueño de sus activos!** Solo usted puede venderlos o intercambiarlos. | **Usted alquila un activo** a una organización y puede ser retirado de su posesión. |
+| Los NFT son **digitalmente únicos**, no hay dos NFT iguales. | **A menudo una copia no se puede distinguir** del original. |
+| La propiedad de un NFT se almacena en la blockchain para que cualquiera pueda **verificarla públicamente**. | El acceso a los registros de propiedad de artículos digitales está **controlado por instituciones** – debe confiar en su palabra. |
+| Los NFT son [smart contracts](/glossary/#smart-contract) en Ethereum. Esto significa que **pueden usarse fácilmente en otros smart contracts** y aplicaciones en Ethereum. | Las empresas con artículos digitales usualmente **requieren su propia infraestructura de "jardín amurallado"**. |
+| Los **creadores de contenido pueden vender su trabajo en cualquier lugar** y acceder a un mercado global. | Los creadores dependen de la infraestructura y la distribución de las plataformas que usan. Estos a menudo están sujetos a términos de uso y **restricciones geográficas**. |
+| Los creadores de NFT **pueden retener los derechos de propiedad** sobre su propio trabajo, y programar regalías directamente en el contrato NFT. | Las plataformas, como los servicios de **streaming musical, retienen la mayor parte de las ganancias por las ventas**. |
## ¿Para qué se usan los NFT? {#nft-use-cases}
@@ -51,49 +53,49 @@ Los NFT se usan para muchas cosas, como por ejemplo:
- limitar el acceso a contenido
- venta de entradas
- crear nombres de dominio de Internet descentralizados
-- garantías en [finanzas descentralizadas](/glossary/#defi)
+- colateral en [finanzas descentralizadas](/glossary/#defi)
-Tal vez sea usted un artista que quiere compartir su arte a través de los NFT, sin perder el control de su propiedad intelectual ni sacrificar sus ganancias, dándoselas a intermediarios. Puede crear un nuevo contrato que especifique el número de NFT, sus propiedades y añadir un enlace a la obra de arte específica. Como artista, **puede programar las regalías dentro del contrato inteligente** que se le deben pagar (p. ej., transferir el 5 % del precio de venta al propietario del contrato cada vez que un NFT se transfiera). Además, siempre podrá demostrar que creó los NFT, porque es el propietario de la [cartera](/glossary/#wallet) asociada al contrato. Sus compradores pueden comprobar fácilmente que poseen un **NFT auténtico** de su collección, porque su cartera[dirección](/glossary/#address) está asociada a un token en su contrato inteligente. Los pueden usar a través del ecosistema de Ethereum, confiando en su autenticidad.
+Tal vez sea usted un artista que quiere compartir su arte a través de los NFT, sin perder el control de su propiedad intelectual ni sacrificar sus ganancias, dándoselas a intermediarios. Puede crear un nuevo contrato que especifique el número de NFT, sus propiedades y añadir un enlace a la obra de arte específica. Como artista, **puede programar en el smart contract las regalías** que debe recibir (por ejemplo, transferir el 5 % del precio de venta al propietario del contrato cada vez que un NFT sea transferido). También siempre puede probar que usted creó los NFT porque posee la [wallet](/glossary/#wallet) que desplegó el contrato. Sus compradores pueden probar fácilmente que poseen un **NFT auténtico** de su colección porque su [dirección](/glossary/#address) de wallet está asociada con un token en su smart contract. Los pueden usar a través del ecosistema de Ethereum, confiando en su autenticidad.
Explore, compre o cree sus propios NFT de arte/coleccionables...
- Explore arte en NFT
+ Explorar arte NFT
-O pongamos, por ejemplo, una entrada a un evento deportivo. Al igual que un **organizador de un evento puede elegir cuántas entradas vender**, el creador de un NFT puede decidir cuántas replicas existen. En algunos casos las copias son idénticas, como 5.000 entradas de admisión general. Algunas veces muchas copias acuñadas son muy similares, pero cada una difiere ligeramente, como una entrada con un asiento asignado. Estas se pueden comprar y vender entre pares directamente, sin tener que pasar por promotores o intermediarios de venta, porque pueden asegurarse de la autenticidad de la entrada revisando la dirección del contrato donde se crearon.
+O pongamos, por ejemplo, una entrada a un evento deportivo. Así como un **organizador de eventos puede elegir cuántas entradas vender**, el creador de un NFT puede decidir cuántas réplicas existen. En algunos casos las copias son idénticas, como 5.000 entradas de admisión general. Algunas veces muchas copias acuñadas son muy similares, pero cada una difiere ligeramente, como una entrada con un asiento asignado. Estas se pueden comprar y vender entre pares directamente, sin tener que pasar por promotores o intermediarios de venta, porque pueden asegurarse de la autenticidad de la entrada revisando la dirección del contrato donde se crearon.
-En ethereum.org, **los NFT se usan para demostrar que la gente ha contribuito de forma significativa** a nuestro repositorio Github (programado la web, escrito o modificado un artículo...), traducido nuestro contenido, o asistido a nuestras convocatorias comunitarias, e incluso tenemos nuestro propio nombre del dominio del NFT. Si constribuyes a ethereum.org, puedes reclamar un [POAP](/glossary/#poap) NFT. Algunos eventos y encuentros de criptomonedas utilizan POAP (protocolos de prueba de asistencia) para sus entradas. [Más información sobre cómo contribuir](/contributing/#poap).
+En ethereum.org, **los NFT se usan para demostrar que las personas han contribuido de manera significativa** a nuestro repositorio de Github (programando el sitio web, escribiendo o modificando un artículo...), traduciendo nuestro contenido, o asistiendo a nuestras llamadas comunitarias, e incluso tenemos nuestro propio dominio NFT. Si contribuye a ethereum.org, puede reclamar un NFT [POAP](/glossary/#poap). Algunos eventos y encuentros de criptomonedas utilizan POAP (protocolos de prueba de asistencia) para sus entradas. [Más información sobre cómo contribuir](/contributing/#poap).
-
+
-El nombre de dominio alternativo de esta página web también funciona a través de NFT, **ethereum.eth**. Nuestra dirección `.org` está gestionada por un proveedor de sistemas de nombres de dominio (DNS), mientras que ethereum`.eth` está registrado en Ethereum a través del servicio de nombres de Ethereum (ENS). Este último es de nuestra propiedad y lo administramos nosotros mismos. [Échele un vistazo a nuestro registro de ENS](https://app.ens.domains/name/ethereum.eth)
+Este sitio web también tiene un dominio alternativo impulsado por NFTs, **ethereum.eth**. Nuestra dirección `.org` está gestionada de manera centralizada por un proveedor de sistema de nombres de dominio (DNS), mientras que ethereum`.eth` está registrada en Ethereum mediante el Ethereum Name Service (ENS). Este último es de nuestra propiedad y lo administramos nosotros mismos. [Consulte nuestro registro ENS](https://app.ens.domains/name/ethereum.eth)
-[Más información sobre ENS](https://app.ens.domains)
+[Más sobre ENS](https://app.ens.domains)
## ¿Cómo funcionan los NFT? {#how-nfts-work}
-Los NFT, como cualquier objeto digital en la cadena de bloques de Ethereum, se crean a través de un programa especial de computación llamado "contrato inteligente". Estos contratos siguen ciertas reglas, como los estándares[ERC-721](/glossary/#erc-721) o [ERC-1155](/glossary/#erc-1155), que determinan qué puede hacer un contrato.
+Los NFT, como cualquier objeto digital en la cadena de bloques de Ethereum, se crean a través de un programa especial de computación llamado <>. Estos contratos siguen ciertas reglas, como los estándares [ERC-721](/glossary/#erc-721) o [ERC-1155](/glossary/#erc-1155), que determinan lo que el contrato puede hacer.
Los contratos inteligentes de NFT pueden hacer algunas cosas importantes:
-- **Crear NFT:** pueden crear nuevos NFT.
-- **Asignar la propiedad:** Pueden realizar un seguimiento de quién es el dueño de algunos NFTs, al enlazarlos a una dirección en específico de Ethereum.
-- **Otorgar un identificador a cada NFT:** cada NFT tiene un número que lo hace único. Además, por lo general, hay algunos datos (metadatos) adjuntos a este, que describen lo que representa.
+- **Crear NFTs:** Puede crear nuevos NFTs.
+- **Asignar propiedad:** Mantiene un registro de quién posee cuáles NFTs asociándolos a direcciones específicas de Ethereum.
+- **Asignar un ID a cada NFT:** Cada NFT tiene un número que lo hace único. Además, por lo general, hay algunos datos (metadatos) adjuntos a este, que describen lo que representa.
Cuando alguien "crea" o "mintea" un NFT, básicamente le está diciendo al contrato inteligente que le brinde la propiedad de un NFT en particular. Esta información se almacena de manera segura y pública en la cadena de bloques.
-Además, el creador del contrato puede añadir reglas adicionales. Estas pueden limitar la cantidad a crear de ciertos NFT o decidir que pueden obtener una comisión de las regalías cuando el NFT cambie de dueño.
+Además, el creador del contrato puede añadir reglas adicionales. Pueden limitar cuántos de cierto NFT se pueden crear o decidir que deberían obtener una pequeña comisión de regalía cada vez que el NFT cambie de manos.
### Seguridad de los NFT {#nft-security}
-La seguridad de Ethereum viene de la [prueba de participación](/glossary/#pos). El sistema está diseñado para desincentivar económicamente acciones maliciosas, haciendo que Ethereum sea a prueba de manipulación y fraude. Esto es lo que hace que los NFT sean posibles. Una vez que el [bloque](/glossary/#block) que contiene su transacción NFT, se convierte en [finalizado](/glossary/#finality), a un atacante le costaría millones de ETH cambiarlo. Cualquiera que ejecute el software Ethereum podría detectar inmediatamente una manipulación deshonesta con un NFT, y el causante recibiría una penalización económica y se le expulsaría.
+La seguridad de Ethereum proviene de [proof-of-stake](/glossary/#pos). El sistema está diseñado para desincentivar económicamente acciones maliciosas, haciendo que Ethereum sea a prueba de manipulación y fraude. Esto es lo que hace que los NFT sean posibles. Una vez que el [bloque](/glossary/#block) que contiene su transacción NFT es [finalizado](/glossary/#finality), le costaría millones de ETH a un atacante cambiarlo. Cualquiera que ejecute el software Ethereum podría detectar inmediatamente una manipulación deshonesta con un NFT, y el causante recibiría una penalización económica y se le expulsaría.
Las cuestiones de seguridad relativas a los NFT están casi siempre relacionadas con estafas de phishing, puntos flacos en los contratos inteligentes o errores de usuario (como exponer sus claves privadas sin darse cuenta), haciendo que la adopción de óptimas medidas de seguridad y la gestión de la cartera sean dos criterios fundamentales para los propietarios de NFT.
@@ -101,13 +103,14 @@ Las cuestiones de seguridad relativas a los NFT están casi siempre relacionadas
Más sobre seguridad
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Guía sobre NFT para principiantes](https://linda.mirror.xyz/df649d61efb92c910464a4e74ae213c4cab150b9cbcc4b7fb6090fc77881a95d), _Linda Xie, enero del 2020_
-- [Rastreador EtherscanNFT](https://etherscan.io/nft-top-contracts)
+- [Una guía para principiantes sobre NFT](https://linda.mirror.xyz/df649d61efb92c910464a4e74ae213c4cab150b9cbcc4b7fb6090fc77881a95d) – _Linda Xie, enero de 2020_
+- [Rastreador de NFT en Etherscan](https://etherscan.io/nft-top-contracts)
+- [Rastreador de NFT en Blockscout](https://eth.blockscout.com/tokens?type=ERC-721,ERC-1155,ERC-404)
- [Estándar de token ERC-721](/developers/docs/standards/tokens/erc-721/)
- [Estándar de token ERC-1155](/developers/docs/standards/tokens/erc-1155/)
-- [Aplicaciones y herramientas NFT populares](https://www.ethereum-ecosystem.com/blockchains/ethereum/nfts)
+- [Aplicaciones y herramientas populares de NFT](https://www.ethereum-ecosystem.com/blockchains/ethereum/nfts)
## Otros recursos {#other-resources}
From 3562d578f6c604a7fabec72696e6efe92a515999 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:52 -0300
Subject: [PATCH 048/589] update(i18n): src/intl/es/table.json
---
src/intl/es/table.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/intl/es/table.json b/src/intl/es/table.json
index bb17d7d98ee..69550580083 100644
--- a/src/intl/es/table.json
+++ b/src/intl/es/table.json
@@ -1,7 +1,7 @@
{
"table-active": "activos",
"table-filters": "Filtros",
- "table-showing": "Exhibición ",
+ "table-showing": "Mostrando",
"table-reset-filters": "Restaurar",
"table-what-are-you-looking-for": "¿Qué está buscando?"
}
\ No newline at end of file
From a73922c9a13e970156ad616feba2c5e20039ad61 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:54 -0300
Subject: [PATCH 049/589] update(i18n):
public/content/translations/es/social-networks/index.md
---
.../translations/es/social-networks/index.md | 104 ++++++++++++------
1 file changed, 69 insertions(+), 35 deletions(-)
diff --git a/public/content/translations/es/social-networks/index.md b/public/content/translations/es/social-networks/index.md
index ee8a244aec4..fb8ea9ef5f3 100644
--- a/public/content/translations/es/social-networks/index.md
+++ b/public/content/translations/es/social-networks/index.md
@@ -15,7 +15,7 @@ Las redes sociales juegan un enorme papel en nuestras comunicaciones e interacci
## ¿Qué son las redes sociales descentralizadas? {#what-are-decentralized-social-networks}
-Las redes sociales descentralizadas son plataformas [basadas en cadenas de bloques](/glossary/#blockchain) que permiten a los usuarios intercambiar información, así como publicar y distribuir contenidos a sus audiencias. Dado que estas aplicaciones se ejecutan en la cadena de bloques, son capaces de ser descentralizadas y resistentes a la censura y al control indebido.
+Las redes sociales descentralizadas son plataformas basadas en [blockchain](/glossary/#blockchain) que permiten a los usuarios intercambiar información, así como publicar y distribuir contenido a audiencias. Dado que estas aplicaciones se ejecutan en la cadena de bloques, son capaces de ser descentralizadas y resistentes a la censura y al control indebido.
Muchas redes sociales descentralizadas existen como alternativa a los servicios de redes sociales establecidas como Facebook, LinkedIn, Twitter, y Medium. No obstante, las redes sociales impulsadas por la cadena de bloques tienen una serie de características que les confieren ventajas sobre las plataformas sociales tradicionales.
@@ -23,29 +23,29 @@ Muchas redes sociales descentralizadas existen como alternativa a los servicios
### ¿Cómo funcionan las redes sociales descentralizadas? {#decentralized-social-networks-overview}
-Las redes sociales descentralizadas son una clase de [aplicaciones descentralizadas (dApps)](/apps/), aplicaciones que funcionan con [contratos inteligentes](/glossary/#smart-contract) implementados en la cadena de bloques. El código del contrato sirve como el backend para estas aplicaciones y define su lógica de negocio.
+Las redes sociales descentralizadas son una clase de [aplicaciones descentralizadas (dapps)](/apps/): aplicaciones impulsadas por [smart contracts](/glossary/#smart-contract) desplegados en la blockchain. El código del contrato sirve como el backend para estas aplicaciones y define su lógica de negocio.
-Las plataformas tradicionales de redes sociales se basan en bases de datos para almacenar información del usuario, el código del programa y otras formas de datos. Pero esto crea puntos únicos de falla y supone un riesgo significativo. Por ejemplo, los servidores de Facebook infamemente [se desconectaron durante horas](https://www.npr.org/2021/10/05/1043211171/facebook-instagram-whatsapp-outage-business-impact) en octubre de 2021, dejando a los usuarios sin acceso a la plataforma.
+Las plataformas tradicionales de redes sociales se basan en bases de datos para almacenar información del usuario, el código del programa y otras formas de datos. Pero esto crea puntos únicos de falla y supone un riesgo significativo. Por ejemplo, los servidores de Facebook se volvieron famosos cuando [se desconectaron durante horas](https://www.npr.org/2021/10/05/1043211171/facebook-instagram-whatsapp-outage-business-impact) en octubre de 2021, dejando a los usuarios sin acceso a la plataforma.
-Las redes sociales descentralizadas existen sobre [redes peer-to-peer](/glossary/#peer-to-peer-network) formadas por miles de nodos en todo el mundo. Incluso si algunos nodos fallan, la red se ejecutará sin interrupción, haciendo que las aplicaciones sean resistentes a fallas, cortes o apagones.
+Las redes sociales descentralizadas existen en una [red peer-to-peer](/glossary/#peer-to-peer-network) compuesta por miles de nodos en todo el mundo. Incluso si algunos nodos fallan, la red se ejecutará sin interrupción, haciendo que las aplicaciones sean resistentes a fallas, cortes o apagones.
-Utilizando sistemas de almacenamiento descentralizados como el [InterPlanetary File System (IPFS)](https://ipfs.io/), las redes sociales construidas sobre Ethereum pueden proteger la información del usuario de la explotación y el uso malicioso. Nadie venderá su información personal a los anunciantes, ni los hackers podrán robar sus datos confidenciales.
+Usando sistemas de almacenamiento descentralizados como [InterPlanetary File System (IPFS)](https://ipfs.io/), las redes sociales construidas sobre Ethereum pueden proteger la información de los usuarios contra la explotación y el uso malicioso. Nadie venderá su información personal a los anunciantes, ni los hackers podrán robar sus datos confidenciales.
Muchas plataformas de redes sociales basadas en cadena de bloques tienen tokens nativos que permiten la monetización a falta de ingresos publicitarios. Los usuarios pueden comprar esos tokens para acceder a ciertas características, completar compras en la aplicación o dar propinas a sus creadores de contenido favoritos.
## Beneficios de las redes sociales descentralizadas {#benefits}
-1. Las redes sociales descentralizadas son resistentes a la censura y están abiertas a todos. Esto significa que **los usuarios no pueden ser prohibidos**, desplazados de la plataforma ni restringidos arbitrariamente.
+1. Las redes sociales descentralizadas son resistentes a la censura y están abiertas a todos. Esto significa que **los usuarios no pueden ser expulsados**, deshabilitados o restringidos de manera arbitraria.
2. Las redes sociales descentralizadas **se basan en ideales de código abierto** y ponen el código fuente de las aplicaciones a disposición del público para su inspección. Al eliminar la implementación de algoritmos opacos, comunes en las redes sociales tradicionales, las redes sociales basadas en la cadena de bloques alinean los intereses de los usuarios y creadores en la plataforma.
-3. Las redes sociales descentralizadas eliminan al intermediario. Los **creadores de contenido tienen la propiedad directa de sus contenidos** y se relacionan directamente con sus seguidores, fans, compradores y otras partes, sin nada más que un contrato inteligente de por medio.
+3. Las redes sociales descentralizadas eliminan al intermediario. Los **creadores de contenido tienen propiedad directa sobre su contenido**, y se relacionan directamente con seguidores, fans, compradores y otras partes, teniendo únicamente un smart contract como intermediario.
-4. Como aplicaciones descentralizadas ejecutadas en la red de Ethereum, la cual es sostenida por una red global de nodos peer-to-peer, las redes sociales son **menos susceptibles a caídas de servidor** y apagones.
+4. Como dapps que funcionan en la red de Ethereum, la cual es sostenida por una red global peer-to-peer de nodos, las redes sociales descentralizadas son **menos susceptibles a caídas de servidores** y cortes de servicio.
-5. Las plataformas de redes sociales descentralizadas ofrecen un marco de **monetización mejorada** para los creadores de contenido a través de [tokens no fungibles (NFT)](/glossary/#nft), pagos criptográficos dentro de la aplicación y mucho más.
+5. Las plataformas sociales descentralizadas ofrecen un marco de **monetización mejorado** para los creadores de contenido mediante [tokens no fungibles (NFTs)](/glossary/#nft), pagos en cripto dentro de la aplicación y más.
-6. Las redes sociales descentralizadas ofrecen a los usuarios **un alto nivel de privacidad y anonimato**. Por ejemplo, un individuo puede iniciar sesión en una red social basada en Ethereum usando un perfil o [billetera](/glossary/#wallet) de [ENS](/glossary/#ens), sin tener que compartir información de identificación personal (PII), como nombres, correo electrónico, direcciones ni otros datos personales.
+6. Las redes sociales descentralizadas brindan a los usuarios **un alto nivel de privacidad y anonimato**. Por ejemplo, una persona puede iniciar sesión en una red social basada en Ethereum usando un perfil de [ENS](/glossary/#ens) o [wallet](/glossary/#wallet), sin tener que compartir información personal identificable (PII), como nombres, direcciones de correo electrónico, etc.
7. Las redes sociales descentralizadas se basan en el almacenamiento descentralizado, no en bases de datos centralizadas, que son considerablemente mejores para salvaguardar los datos del usuario.
@@ -55,52 +55,86 @@ La red de Ethereum se ha convertido en la herramienta preferida por los desarrol
### Mirror {#mirror}
-[Mirror](https://mirror.xyz/) es una plataforma de escritura con soporte web 3 con el propósito de ser descentralizada y que el usuario sea el propietario de su contenido. Los usuarios pueden leer y escribir gratis en Mirror simplemente conectando sus carteras. Los usuarios también pueden recopilar escritos y suscribirse a sus escritores favoritos.
+[Mirror](https://mirror.xyz/) es una plataforma de escritura habilitada para web3 que busca ser descentralizada y propiedad de sus usuarios. Los usuarios pueden leer y escribir gratis en Mirror simplemente conectando sus carteras. Los usuarios también pueden recopilar escritos y suscribirse a sus escritores favoritos.
-Las entradas publicadas en Mirror se almacenan permanentemente en Arwaeve, una plataforma de almacenamiento descentralizada, y puede ser acuñado como [tokens no fungibles (NFT)](/nft/) coleccionables, conocidos como NFT de escritura. La creación de NFT es completamente gratuita para los escritores y la recaudación tiene lugar en una Ethereum [L2](/glossary/#layer-2), lo que hace que las transacciones sean baratas, rápidas y respetuosas con el medio ambiente.
+Las publicaciones en Mirror se almacenan permanentemente en Arweave, una plataforma de almacenamiento descentralizada, y pueden acuñarse como [tokens no fungibles (NFTs)](/nft/) coleccionables conocidos como Writing NFTs. Los Writing NFTs son totalmente gratuitos para que los escritores los creen, y la colección se realiza en un [L2](/glossary/#layer-2) de Ethereum, lo que hace que las transacciones sean económicas, rápidas y respetuosas con el medio ambiente.
### MINDS {#minds}
[MINDS](https://www.minds.com/) es una de las redes sociales descentralizadas más utilizadas. Funciona como Facebook y ya ha acumulado millones de usuarios.
-Los usuarios utilizan el token nativo de [ERC-20](/glossary/#erc-20) de la plataforma $MIND para pagar los artículos. Los usuarios también pueden ganar tokens $MIND publicando contenido popular, contribuyendo al ecosistema y recomendado la plataforma a otros.
+Las personas usuarias emplean el token nativo de la plataforma, [ERC-20](/glossary/#erc-20) $MIND, para pagar productos. Los usuarios también pueden ganar tokens $MIND publicando contenido popular, contribuyendo al ecosistema y recomendado la plataforma a otros.
-## Redes sociales descentralizadas en uso {#use-decentralized-social-networks}
+### Farcaster {#farcaster}
-- **[Status.im](https://status.im/)** - _Status es una aplicación de mensajería segura que utiliza código abierto, protocolo entre pares y cifrado de extremo a extremo para proteger sus mensajes de terceros._
-- **[Mirror.xyz](https://mirror.xyz/)** - _Mirror es plataforma de publicación descentralizada con la propiedad asignada a los usuarios. Creada sobre Ethereum, los usuarios puedan financiar ideas, monetizar contenido y construir comunidades de alto valor._
-- **[Lens Protocol](https://lens.xyz/)** - _Lens Protocol es una red social de gráficos, compuesto y descentralizado, que ayuda a los creadores a tomar posesión de su contenido dondequiera que vayan en el jardín digital del Internet descentralizado._
-- **[Farcaster](https://farcaster.xyz/)**: _Farcaster es una red social suficientemente descentralizada. Es un protocolo abierto que puede soportar muchos clientes, al igual que el correo electrónico._
+[Farcaster](https://farcaster.xyz/) es una red social "suficientemente descentralizada" similar a X y Reddit que permite a los usuarios compartir y descubrir "casts". Está construida sobre la red Optimism L2 para mantener las transacciones relativamente económicas.
+
+## Usar redes sociales descentralizadas {#use-decentralized-social-networks}
+
+- **[Status.app](https://status.app/)** - _Status es una aplicación de mensajería segura que utiliza un protocolo de código abierto entre pares y cifrado de extremo a extremo para proteger sus mensajes de terceros._
+- **[Mirror.xyz](https://mirror.xyz/)** - _Mirror es una plataforma de publicación descentralizada y propiedad de sus usuarios construida sobre Ethereum para que los usuarios financien ideas colectivamente, moneticen contenido y creen comunidades de alto valor._
+- **[Lens Protocol](https://lens.xyz/)** - _Lens Protocol es un grafo social componible y descentralizado que ayuda a los creadores a tener propiedad de su contenido dondequiera que vayan en el jardín digital de internet descentralizada._
+- **[Farcaster](https://farcaster.xyz/)** - _Farcaster es una red social suficientemente descentralizada._ Es un protocolo abierto que puede soportar muchos clientes, al igual que el correo electrónico._
+- **[Ethereum Follow Protocol](https://efp.app/)** - _Ethereum Follow Protocol es un grafo social completamente descentralizado en cadena para cuentas de Ethereum, avanzando la visión de una identidad modular en Ethereum, complementando ENS y SIWE._
+- **[Ethereum Comments Protocol](https://www.ethcomments.xyz/)** - _Un nuevo primitivo de contenido social programable en Ethereum para poner sus pensamientos en la cadena._
## Redes sociales Web2 en Ethereum {#web2-social-networks-and-ethereum}
-Las plataformas de redes sociales nativas [Web3](/glossary/#web3) no son las únicas que intentan incorporar la tecnología de cadena de bloques a las redes sociales. Muchas plataformas centralizadas también están planeando integrar Ethereum en su infraestructura:
+Las plataformas sociales nativas [Web3](/glossary/#web3) no son las únicas que intentan incorporar la tecnología blockchain en las redes sociales. Muchas plataformas centralizadas también están contemplando integrar a Ethereum en su infraestructura o ya han experimentado con ello:
+
+### Navegador Brave {#brave}
+
+- Brave ha integrado el **[Basic Attention Token (BAT)](https://basicattentiontoken.org/)**, un token ERC-20 creado en Ethereum, en el ecosistema de su navegador para revolucionar la publicidad digital y el apoyo a los creadores de contenido.
+
+- El **[programa Brave Rewards](https://brave.com/brave-rewards/)** permite a los usuarios ganar BAT viendo anuncios que respetan la privacidad y luego contribuir automáticamente a los sitios web y a los creadores de contenido en diversas plataformas como YouTube, Twitter y GitHub en función del tiempo de atención.
+
+- Los creadores de contenido pueden registrarse como **[creadores verificados de Brave](https://creators.brave.com/)** para recibir estas contribuciones directamente en sus billeteras de Ethereum, creando un puente entre las plataformas web tradicionales y la monetización basada en la cadena de bloques.
+
+- Los tokens BAT existen de forma independiente en la cadena de bloques de Ethereum, lo que permite a los usuarios transferirlos a billeteras personales o intercambios una vez ganados.
+
+### Plataforma de música Audius {#audius}
+
+- **[Audius](https://audius.co/)** es una plataforma de transmisión de música que utiliza la tecnología de la cadena de bloques de Ethereum para conectar a los artistas directamente con sus fans.
+
+- La plataforma presenta una arquitectura híbrida descentralizada donde el contenido se almacena en IPFS, mientras que utiliza la cadena de bloques para los derechos de propiedad y el **[token AUDIO](https://eth.blockscout.com/token/0x18aaa7115705e8be94bffebde57af9bfc265b998)**.
+
+- Audius ha establecido una **[asociación con TikTok](https://audius.co/tiktok)**, llevando la funcionalidad de la Web3 a un público masivo y permitiendo a los artistas monetizar su contenido a través de la tecnología de la cadena de bloques.
+
+- Los detalles técnicos de la plataforma están disponibles en su **[informe técnico](https://whitepaper.audius.co/)**, que muestra cómo se han basado en la infraestructura de Ethereum.
+
+### Deportes de fantasía de Sorare {#sorare}
+
+- **[Sorare](https://sorare.com/)** es una **[plataforma de deportes de fantasía creada en Ethereum](https://sorare.com/help/a/4402888626577/what-is-a-sorare-wallet)** que permite a los usuarios coleccionar, intercambiar y jugar con las tarjetas de jugador NFT oficiales.
+
+- Las tarjetas de jugador son NFT verificables en la cadena de bloques de Ethereum, y los contratos inteligentes de la plataforma se pueden ver en **[Etherscan](https://eth.blockscout.com/address/0x629a673a8242c2ac4b7b8c5d8735fbeac21a6205?tab=contract)**.
+
+- Sorare combina la jugabilidad tradicional de los deportes de fantasía con la propiedad de activos digitales en la cadena de bloques, llevando la funcionalidad de **[financiar con Ethereum](https://sorare.com/help/a/10969733392797/what-network-should-i-use-to-fund-my-eth-wallet)** a los aficionados a los deportes.
-### Reddit {#reddit}
+### Twitter/X (propinas con criptomonedas) {#twitter}
-Reddit ha [promocionado los Community Points](https://cointelegraph.com/news/reddit-to-reportedly-tokenize-karma-points-and-onboard-500m-new-users), que son tokens ERC-20 que los usuarios pueden obtener publicando contenidos de calidad y contribuyendo a las comunidades en línea (subreddits). Puede canjear estos tokens dentro de un subreddit para conseguir privilegios y ventajas exclusivos. Para este proyecto, Reddit está trabajando con Arbitrum, una red de [capa 2](/glossary/#layer-2) diseñada para escalar las transacciones de Ethereum.
+**[Twitter](https://x.com)** (ahora X) ha incorporado la tecnología de la cadena de bloques de múltiples maneras para mejorar la monetización de los creadores y la verificación de la identidad digital:
-El programa ya está activo, con el subreddit r/CryptoCurrency [ejecutando su versión de puntos de comunidad llamada "Moons"](https://www.reddit.com/r/CryptoCurrency/wiki/moons_wiki). Según la descripción oficial, los Moons "recompensan a los publicadores, comentaristas y moderadores por sus contribuciones al subreddit". Debido a que estos tokens están en la cadena de bloques (los usuarios los reciben en carteras), estos son independientes de Reddit y no se pueden quitar.
+- **Propinas con criptomonedas**: la plataforma ha integrado las **[propinas con Ethereum](https://help.x.com/en/using-x/tips)**, permitiendo a los usuarios enviar pagos a través de billeteras basadas en Ethereum como Strike.
-Además de usar puntos comunitarios para desbloquear funciones especiales, los usuarios también pueden cambiarlos por moneda fiduciaria en plataformas de intercambio. Además, la cantidad de puntos de la comunidad que posee un usuario determina su influencia en el proceso de toma de decisiones dentro de la comunidad.
+Al integrar las características de la cadena de bloques, X está tendiendo un puente entre las experiencias sociales de la Web2 y la propiedad digital descentralizada.
-## Para profundizar sobre el tema {#further-reading}
+## Lecturas adicionales {#further-reading}
### Artículos {#articles}
-- [Descentralizar las redes sociales: una guía para el apilamiento social de web3](https://www.coinbase.com/blog/decentralizing-social-media-a-guide-to-the-web3-social-stack) - _Coinbase Ventures_
-- [Las redes sociales son la gran oportunidad futura de descentralización](https://www.coindesk.com/tech/2021/01/22/social-networks-are-the-next-big-decentralization-opportunity/) — _Ben Goertzel_
-- [Web3 contiene la promesa de redes sociales descentralizadas y alimentadas por la comunidad](https://venturebeat.com/2022/02/26/web3-holds-the-promise-of-decentralized-community-powered-social-networks/) — _Sumit Ghosh_
-- [Un vistazo al panorama de las redes sociales en la cadena de bloques](https://www.gemini.com/cryptopedia/blockchain-social-media-decentralized-social-media) — _Gemini Cryptopedia_
-- [Cómo la cadena de bloques puede resolver la privacidad de las redes sociales](https://www.investopedia.com/news/ethereum-blockchain-social-media-privacy-problem-linkedin-indorse/) — _Prableen Bajpai_
-- [Descentralización suficiente para las redes sociales](https://www.varunsrinivasan.com/2022/01/11/sufficient-decentralization-for-social-networks): _Varun Srinivasan_
+- [Descentralizando las redes sociales: una guía sobre la pila social web3](https://www.coinbase.com/blog/decentralizing-social-media-a-guide-to-the-web3-social-stack) - _Coinbase Ventures_
+- [Las redes sociales son la próxima gran oportunidad de descentralización](https://www.coindesk.com/tech/2021/01/22/social-networks-are-the-next-big-decentralization-opportunity/) — _Ben Goertzel_
+- [Web3 sostiene la promesa de redes sociales descentralizadas y impulsadas por la comunidad](https://venturebeat.com/2022/02/26/web3-holds-the-promise-of-decentralized-community-powered-social-networks/) — _Sumit Ghosh_
+- [Resumen del panorama de redes sociales en blockchain](https://www.gemini.com/cryptopedia/blockchain-social-media-decentralized-social-media) — _Gemini Cryptopedia_
+- [Cómo blockchain puede resolver la privacidad en redes sociales](https://www.investopedia.com/news/ethereum-blockchain-social-media-privacy-problem-linkedin-indorse/) — _Prableen Bajpai_
+- [Descentralización suficiente para redes sociales](https://www.varunsrinivasan.com/2022/01/11/sufficient-decentralization-for-social-networks) — _Varun Srinivasan_
-### Vídeos {#videos}
+### Videos {#videos}
-- [Explicación sobre las redes sociales descentralizadas](https://www.youtube.com/watch?v=UdT2lpcGvcQ) — _Coinmarketcap_
-- [La cadena de bloques DeSo quiere descentralizar las redes sociales](https://www.youtube.com/watch?v=SG2HUiVp0rE) — _Bloomberg Technology_
-- [El futuro de las redes sociales descentralizadas con Balaji, Vitalik Buterin, Juan Benet](https://www.youtube.com/watch?v=DTxE9KV3YrE) — _ETHGlobal_
+- [Redes sociales descentralizadas explicadas](https://www.youtube.com/watch?v=UdT2lpcGvcQ) — _Coinmarketcap_
+- [DeSo Blockchain quiere descentralizar las redes sociales](https://www.youtube.com/watch?v=SG2HUiVp0rE) — _Bloomberg Technology_
+- [El futuro de las redes sociales descentralizadas con Balaji Srinivasan, Vitalik Buterin, Juan Benet](https://www.youtube.com/watch?v=DTxE9KV3YrE) — _ETHGlobal_
### Comunidades {#communities}
-- [Subreddit r/Cryptocurrency](https://www.reddit.com/r/CryptoCurrency/)
+- [Subreddit r/CryptoCurrency](https://www.reddit.com/r/CryptoCurrency/)
From 39246e666d333d1bfa0615b23a68f8fd01d8a408 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:56 -0300
Subject: [PATCH 050/589] update(i18n):
public/content/translations/es/refi/index.md
---
public/content/translations/es/refi/index.md | 41 ++++++++++----------
1 file changed, 21 insertions(+), 20 deletions(-)
diff --git a/public/content/translations/es/refi/index.md b/public/content/translations/es/refi/index.md
index 78956bdaae9..a44310bc966 100644
--- a/public/content/translations/es/refi/index.md
+++ b/public/content/translations/es/refi/index.md
@@ -9,30 +9,31 @@ image: /images/future_transparent.png
alt: ""
summaryPoint1: Un sistema económico alternativo construido con principios regenerativos
summaryPoint2: Un intento de utilizar Ethereum para solucionar crisis de coordinación a escala global, como el cambio climático.
-summaryPoint3: Una herramienta para escalar drásticamente activos de beneficio ecológico como créditos de carbon verificados.
+summaryPoint3: Una herramienta para escalar drásticamente activos de beneficio ecológico como los créditos de carbono verificados.
---
## ¿Qué son las ReFi? {#what-is-refi}
-**Finanzas regenerativas (ReFi)** es un conjunto de herramientas e ideas basadas en [cadenas de bloques](/glossary/#blockchain) que tienen como objetivo crear economías que sean regenerativas, en lugar de extractivas o explotadoras. A la larga, los sistemas extractivos agotan los recursos disponibles y colapsan sin mecanismos regenerativos, carecen de resiliencia. ReFi opera con la creencia de que la creación de valor monetario debe separarse de la insostenible extracción de recursos de nuestro planeta y de nuestras comunidades.
+**La financiación regenerativa (ReFi)** es un conjunto de herramientas e ideas construidas sobre [blockchains](/glossary/#blockchain), que buscan crear economías que sean regenerativas, en lugar de extractivas o explotadoras. A la larga, los sistemas extractivos agotan los recursos disponibles y colapsan sin mecanismos regenerativos, carecen de resiliencia. ReFi opera con la creencia de que la creación de valor monetario debe separarse de la insostenible extracción de recursos de nuestro planeta y de nuestras comunidades.
En cambio, el objetivo de las ReFi es solucionar problemas ambientales, comunales o sociales a través de la creación de ciclos regenerativos. Estos sistemas crean valor para los participantes, mientras que benefician simultáneamente a los ecosistemas y a las comunidades.
-Uno de los fundamentos de ReFi es el concepto de economías regenerativas, liderado por John Fullerton del Instituto de Capital. Él propuso [ocho principios interconectados](https://capitalinstitute.org/8-principles-regenerative-economy/) subyacentes a la salud sistémica:
+Uno de los fundamentos de ReFi es el concepto de economías regenerativas, liderado por John Fullerton del Instituto de Capital. Propuso [ocho principios interconectados](https://capitalinstitute.org/8-principles-regenerative-economy/) que sustentan la salud sistémica:

-Los proyectos de ReFi adoptan estos principios usando [contratos inteligentes](/glossary/#smart-contract) y aplicaciones de [finanzas descentralizadas (DeFi)](/glossary/#defi) que incentivan comportamientos regenerativos, como, por ejemplo, la restauración de ecosistemas degradados, facilitan una colaboración a gran escala en temas globales, como el cambio climático y la pérdida de la biodiversidad.
+Los proyectos ReFi aplican estos principios mediante [smart contracts](/glossary/#smart-contract) y aplicaciones de [finanzas descentralizadas (DeFi)](/glossary/#defi) para incentivar comportamientos regenerativos, como la restauración de ecosistemas degradados, y facilitar la colaboración a gran escala en problemas globales como el cambio climático y la pérdida de biodiversidad.
-ReFi también se solapa con el movimiento de [Ciencia descentralizada (DeSci)](/desci/), que usa a Ethereum como a una plataforma para financiar, crear, revisar, acreditar, guardar y diseminar conocimiento científico. Las herramientas DeSci pueden ser útiles para desarrollar estándares y prácticas verificables y así implementar y supervisar actividades regenerativas como plantar árboles, extraer plástico del mar o restaurar un ecosistema degradado.
+ReFi también se relaciona con el movimiento de [ciencia descentralizada (DeSci)](/desci/), que utiliza Ethereum como plataforma para financiar, crear, revisar, acreditar, almacenar y difundir el conocimiento científico. Las herramientas DeSci pueden ser útiles para desarrollar estándares y prácticas verificables y así implementar y supervisar actividades regenerativas como plantar árboles, extraer plástico del mar o restaurar un ecosistema degradado.
## Tokenización de créditos de carbono {#tokenization-of-carbon-credits}
-El **[mercado voluntario de carbono (VCM)](https://climatefocus.com/so-what-voluntary-carbon-market-exactly/)** es un mecanismo de financiación de proyectos que tengan un impacto positivo y verificado en la emisión del carbono, ya sea a través de la reducción de las emisiones actuales o de la eliminación de gases de efecto invernadero que ya se hayan emitido desde la atmósfera. Estos proyectos reciben un activo llamado "crédito de carbono" después de que hayan sido verificados, el cual pueden vender a personas y a organizaciones que quieran apoyar la causa climática.
+El **[mercado voluntario de carbono (VCM)](https://climatefocus.com/so-what-voluntary-carbon-market-exactly/)** es un mecanismo para financiar proyectos que generan un impacto positivo verificado en las emisiones de carbono, ya sea reduciendo las emisiones en curso o eliminando gases de efecto invernadero ya emitidos a la atmósfera. Estos proyectos reciben un activo llamado "crédito de carbono" después de que hayan sido verificados, el cual pueden vender a personas y a organizaciones que quieran apoyar la causa climática.
-Además del VCM, también hay varios mercados de carbono de mandato gubernamental (mercados de cumplimiento) que pretenden establecer un precio del carbono a través de leyes y normativas dentro de una jurisdicción local (p. ej., país o región), controlando la asignación de permisos que se distribuirán. Los mercados de cumplimiento incentivan a los contaminadores dentro de su jurisdicción a reducir las emisiones, pero no son capaces de eliminar los gases de efecto invernadero que ya hayan sido emitidos.
+Además del VCM, existen varios mercados de carbono establecidos por gobiernos («mercados de cumplimiento») que buscan establecer un precio al carbono a través de leyes o regulaciones dentro de una jurisdicción específica (por ejemplo, país o región), controlando la cantidad de permisos que se distribuyen. Los mercados de cumplimiento incentivan a los contaminadores
+dentro de su jurisdicción a reducir las emisiones, pero no son capaces de eliminar los gases de efecto invernadero que ya hayan sido emitidos.
A pesar de su desarrollo en las recientes décadas, el VCM continúa padeciendo una variedad de problemas:
@@ -42,40 +43,40 @@ A pesar de su desarrollo en las recientes décadas, el VCM continúa padeciendo
4. Velocidad de comercio muy lenta
5. Falta de escalabilidad
-Pasar del VCM al nuevo **mercado digital de carbono (DCM)** basado en cadenas de bloques puede ser una oportunidad para actualizar la tecnología existente y así validar, transaccionar y consumir créditos de carbono. Las cadenas de bloques permiten comprobar públicamente la información, acceso a un amplio número de usuarios y mayor liquidez.
+La transición del VCM al nuevo **mercado digital de carbono (DCM)** basado en blockchain puede ser una oportunidad para mejorar la tecnología existente para validar, transaccionar y consumir créditos de carbono. Las cadenas de bloques permiten comprobar públicamente la información, acceso a un amplio número de usuarios y mayor liquidez.
Los proyectos de ReFi emplean tecnología de cadena de bloques para aliviar los numerosos problemas del mercado tradicional:
-- ** La liquidez se concentra en un número pequeño de reservas (fondos) de liquidez** que cualquiera puede comercializar libremente. Corporaciones, así como también usuarios individuales pueden usar estas reservas sin un manual de búsqueda para vendedores/compradores, comisiones de participación o registro previo.
+- **La liquidez se concentra en un pequeño número de pools de liquidez** que pueden ser negociados libremente por cualquier persona. Corporaciones, así como también usuarios individuales pueden usar estas reservas sin un manual de búsqueda para vendedores/compradores, comisiones de participación o registro previo.
- **Todas las transacciones se registran en cadenas de bloques públicas**. La ruta que cada crédito de carbono toma debido a la actividad comercial tiene trazabilidad desde el momento en que se pone a disposición en el DCM.
- **La velocidad de transacción es casi instantánea**. Asegurar grandes cantidades de créditos de carbono a través mercados tradicionales puede llevar días, si no semanas, sin embargo esto se puede lograr en unos segundos en el DCM.
-- **Actividad de comercialización ocurre sin ningún intermediario**, que cobra tarifas altas. Los créditos digitales de carbono representan una reducción significativa de los costos en comparación con los créditos tradicionales.
-- **El DCM es escalable** y puede cumplir las demandas de los individuos y empresas multinacionales por igual.
+- **La actividad de negociación ocurre sin intermediarios**, los cuales suelen cobrar altas comisiones. Los créditos digitales de carbono representan una reducción significativa de los costos en comparación con los créditos tradicionales.
+- **El DCM es escalable** y puede satisfacer las demandas tanto de individuos como de corporaciones multinacionales.
### Componentes clave del DCM {#key-components-dcm}
Los cuatro componentes principales que conforman el panorama actual del DCM son:
-1. Registros como [Verra](https://verra.org/project/vcs-program/registry-system/) y [ Gold Standard](https://www.goldstandard.org/) se aseguran de que los proyectos que crean créditos de carbono sean fiables. Estos también operan las bases de datos en las que se originan los créditos digitales de carbono y donde estos pueden transferirse o utilizarse (retirarse).
+1. Registros como [Verra](https://verra.org/project/vcs-program/registry-system/) y [Gold Standard](https://www.goldstandard.org/) garantizan que los proyectos que generan créditos de carbono sean confiables. Estos también operan las bases de datos en las que se originan los créditos digitales de carbono y donde estos pueden transferirse o utilizarse (retirarse).
Hay una nueva ola de proyectos innovadores basados en cadenas de bloques que buscan desafiar a los actores dominantes en este sector.
-2. También conocidos como puentes de carbono, los tokenizadores, proporcionan la tecnología que representa o transfiere los créditos de carbono de registros tradicionales al DCM. Ejemplos notables incluyen [Protocolo de Toucan](https://toucan.earth/),[C3](https://c3.app/), y [Moss.Earth](https://moss.earth/).
+2. También conocidos como puentes de carbono, los tokenizadores, proporcionan la tecnología que representa o transfiere los créditos de carbono de registros tradicionales al DCM. Ejemplos notables incluyen [Toucan Protocol](https://toucan.earth/), [C3](https://c3.app/) y [Moss.Earth](https://moss.earth/).
3. Servicios integrados a favor del medio ambiente ofrecen créditos de anulación y/o eliminación de emisiones de carbono a los consumidores, para que ellos puedan reclamar los beneficios ambientales de un crédito y así apoyar la causa climática con el resto del mundo.
-Algunos como [Klima Infinity](https://www.klimadao.finance/infinity) y [Senken](https://senken.io/) ofrecen una amplia variedad de proyectos desarrollados por terceras personas y emitidos bajo estándares ya establecidos como Verra; otros como [Nori](https://nori.com/) solo ofrecen proyectos específicos bajo su propio estándar de créditos de carbono, los que ellos mismos emiten y para los que tienen un mercado dedicado propio.
+Algunos, como [Klima Infinity](https://www.klimadao.finance/infinity) y [Senken](https://senken.io/), ofrecen una amplia variedad de proyectos desarrollados por terceros y emitidos bajo estándares establecidos como Verra; otros, como [Nori](https://nori.com/), solo ofrecen proyectos específicos desarrollados bajo su propio estándar de crédito de carbono, que ellos mismos emiten y para los cuales disponen de su propio mercado dedicado.
-4. La infraestructura y los cauces subyacentes que facilitan la escalabilidad del impacto y la eficiencia de toda la cadena de suministros del mercado de carbono. [KlimaDAO](http://klimadao.finance/) suministra liquidez como bien público (permitiendo que cualquier persona pueda comprar o vender créditos de carbono a un precio transparente), incentiva el crecimiento del rendimiento de los mercados de carbono y retiradas con recompensas, y ofrece herramientas fáciles de usar e interoperables para que el usuario pueda acceder a datos relacionados, así como adquirir y retirar una gran variedad de créditos de carbono tokenizados.
+4. La infraestructura y los cauces subyacentes que facilitan la escalabilidad del impacto y la eficiencia de toda la cadena de suministros del mercado de carbono. [KlimaDAO](http://klimadao.finance/) provee liquidez como un bien público (permitiendo que cualquier persona compre o venda créditos de carbono a un precio transparente), incentiva un mayor volumen del mercado de carbono y de retiros con recompensas, y ofrece herramientas interoperables y fáciles de usar para acceder a datos, así como para adquirir y retirar una gran variedad de créditos de carbono tokenizados.
## ReFi más allá de los mercados de carbono {#refi-beyond}
-Aunque hay actualmente un gran énfasis en los mercados de carbono en general y en pasar del VCM al DCM en particular dentro del espacio, el término "ReFi" no está estrictamente limitado al carbono. Se pueden desarrollar y tokenizar otros activos ambientales más alla de los créditos de carbono, lo que significaría que a otras consecuencias negativas también se les podría poner un precio dentro de las capas bases de futuros sistemas económicos. Aún más, el aspecto regenerativo de este modelo económico puede aplicarse a otras áreas, como a la financiación de bienes públicos a través de plataformas de financiación cuadrática como [Gitcoin](https://gitcoin.co/). Las organizaciones que se sustentan en la idea de participación abierta y distribución equitativa de recursos permiten a todos a canalizar dinero hacia proyectos de software de código abierto, así también como hacia proyectos de enfoque educacional, ambiental y comunitario.
+Aunque hay actualmente un gran énfasis en los mercados de carbono en general y en pasar del VCM al DCM en particular dentro del espacio, el término "ReFi" no está estrictamente limitado al carbono. Se pueden desarrollar y tokenizar otros activos ambientales más alla de los créditos de carbono, lo que significaría que a otras consecuencias negativas también se les podría poner un precio dentro de las capas bases de futuros sistemas económicos. Además, el aspecto regenerativo de este modelo económico puede aplicarse a otras áreas, como la financiación de bienes públicos mediante plataformas de financiación cuadrática como [Gitcoin](https://gitcoin.co/). Las organizaciones que se sustentan en la idea de participación abierta y distribución equitativa de recursos permiten a todos a canalizar dinero hacia proyectos de software de código abierto, así también como hacia proyectos de enfoque educacional, ambiental y comunitario.
Al cambiar el rumbo del capital de las prácticas extractivas hacia un flujo regenerativo, los proyectos y empresas que proporcionan beneficios sociales, ambientales y comunales ―y que podrían no obtener fondos a través de finanzas tradicionales― pueden despegar y generar consecuencias positivas para la sociedad mucho más rápida y fácilmente. Pasar a este modelo de financiación también abre la puerta a sistemas económicos mucho más inclusivos, donde personas de todas las áreas demográficas pueden ser participantes activos en lugar de ser solo meros observadores pasivos. ReFi ofrece una visión de Ethereum como mecanismo para la acción coordinada en contra de los desafíos existenciales a los que se enfrenta nuestra especie y toda vida en nuestro planeta, como la capa base de un nuevo paradigma económico, permitiendo un futuro más inclusivo y sostenible por los siglos venideros.
## Bibliografía para saber más sobre las ReFi
-- [Un panorama general detallado de las monedas y activos de carbono y su lugar en la economía](https://www.klimadao.finance/blog/the-vision-of-a-carbon-currency)
-- [«El ministerio del futuro», una novela que muestra el papel de una moneda respaldada por carbono en su lucha contra el cambio climático.](https://en.wikipedia.org/wiki/The_Ministry_for_the_Future)
-- [Un informe detallado por el grupo de trabajo sobre la optimización de los mercados voluntarios de carbono (VCM).](https://www.iif.com/Portals/1/Files/TSVCM_Report.pdf)
-- [Entrada sobre las ReFi en el glosario de CoinMarketCap de Kevin Owocki y Evan Miyazono](https://coinmarketcap.com/alexandria/glossary/regenerative-finance-refi)
+- [Una visión general sobre las monedas de carbono y su lugar en la economía](https://www.klimadao.finance/resources/the-vision-of-a-carbon-currency)
+- [The Ministry for the Future, una novela que describe el papel de una moneda respaldada por carbono en la lucha contra el cambio climático](https://en.wikipedia.org/wiki/The_Ministry_for_the_Future)
+- [Un informe detallado del Taskforce for Scaling Voluntary Carbon Markets](https://www.iif.com/Portals/1/Files/TSVCM_Report.pdf)
+- [Entrada de glosario de CoinMarketCap sobre ReFi por Kevin Owocki y Evan Miyazono](https://coinmarketcap.com/academy/glossary/regenerative-finance-refi)
From 30ec63fb6b21f3d6e98af2e12e9fd0b12237d629 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:58 -0300
Subject: [PATCH 051/589] update(i18n):
public/content/translations/es/web3/index.md
---
public/content/translations/es/web3/index.md | 82 ++++++++++----------
1 file changed, 42 insertions(+), 40 deletions(-)
diff --git a/public/content/translations/es/web3/index.md b/public/content/translations/es/web3/index.md
index 6a9f6f8b4e1..7232905f351 100644
--- a/public/content/translations/es/web3/index.md
+++ b/public/content/translations/es/web3/index.md
@@ -1,5 +1,5 @@
---
-title: '¿Qué es Web3 y por qué es importante?'
+title: ¿Qué es Web3 y por qué es importante?
description: Una introducción a la Web3 —la próxima evolución de Internet— y por qué importa.
lang: es
---
@@ -12,48 +12,49 @@ lang: es
La centralización ha ayudado a miles de millones de personas a conectarse a Internet y ha creado la infraestructura sólida y estable en la que vive. Al mismo tiempo, un grupúsculo de entidades centralizadas mantienen un férreo control de grandes extensiones de Internet, decidiendo unilateralmente qué se debe y qué no se debe permitir.
-Web3 es la respuesta a este dilema. En vez de tener una Web monopolizada por las grandes compañías de tecnología, la Web3 adopta la descentralización y se construye, opera y permanece en propiedad de sus usuarios. Web3 pone el poder en manos de los usuarios y no de las grandes empresas. Antes de hablar de Web3, vamos a explorar cómo hemos llegado aquí.
+Web3 es la respuesta a este dilema. En vez de tener una Web monopolizada por las grandes compañías de tecnología, la Web3 adopta la descentralización y se construye, opera y permanece en propiedad de sus usuarios. Web3 pone el poder en manos de los usuarios y no de las grandes empresas.
+Antes de hablar de Web3, vamos a explorar cómo hemos llegado aquí.
-## La Web en sus comienzos {#early-internet}
+## La Web temprana {#early-internet}
La mayoría de las personas concibe la Web como un pilar continuo de vida moderna, que fue inventado y ha existido desde entonces. Sin embargo, la Web que la mayoría de nosotros conocemos hoy en día es bastante diferente de la imaginada originalmente. Para comprender mejor esto, es útil dividir la breve historia de la Web en periodos: Web 1.0 y Web 2.0.
-### Web 1.0: Solo Lectura (1990-2004) {#web1}
+### Web 1.0: Solo lectura (1990-2004) {#web1}
En 1989, en el CERN (en Ginebra, Suiza), Tim Berners-Lee estaba ocupado desarrollando los protocolos que se convertirían en el Internet de hoy en día. ¿Su idea? Hemos llegado aquí para crear protocolos abiertos y descentralizados que permitieran compartir información desde cualquier lugar de la Tierra.
La primera versión de Internet, ahora conocida como «Web 1.0», ocurrió aproximadamente entre 1990 y 2004. La Web 1.0 constaba principalmente de sitios web estáticos propiedad de empresas, y no había apenas interacción entre los usuarios —los individuos rara vez producían contenido— lo que llevó a que se la conociera como la web de solo lectura.
-
+
-### Web 2.0: Lectura-Escritura (2004-actualidad) {#web2}
+### Web 2.0: Lectura y escritura (2004-presente) {#web2}
El período de la Web 2.0 comenzó en 2004 con la aparición de las plataformas de redes sociales. En lugar de ser solo de lectura, la web evolucionó para ser de lectura y escritura. En lugar de que las empresas proporcionen contenido a los usuarios, también comenzaron a proporcionar plataformas para compartir contenido generado por el usuario y participar en interacciones de usuario a usuario. A medida que más personas se conectaron, un puñado de las principales empresas comenzó a controlar una cantidad desproporcionada del tráfico y el valor generado en la Web. Web 2.0 también dio origen al modelo de ingresos impulsado por la publicidad. Si bien los usuarios podían crear contenido, no lo poseían ni se beneficiaban de su monetización.
-
+
-## Web 3.0: Lectura-Escritura-Propiedad {#web3}
+## Web 3.0: Lectura, escritura y propiedad {#web3}
-La premisa de Web 3.0 fue acuñada por el cofundador de [Ethereum](/what-is-ethereum/), Gavin Wood poco después de que Ethereum se lanzara en 2014. Gavin verbalizó una solución para un problema que muchos de los primeros usuarios de criptomonedas sintieron: la Web requería demasiada confianza. Es decir, que la mayor parte de la Web que la gente conoce y utiliza hoy en día se basa en confiar a un puñado de empresas privadas que actúen en beneficio del público.
+La premisa de 'Web 3.0' fue acuñada por el cofundador de [Ethereum](/what-is-ethereum/), Gavin Wood, poco después del lanzamiento de Ethereum en 2014. Gavin verbalizó una solución para un problema que muchos de los primeros usuarios de criptomonedas sintieron: la Web requería demasiada confianza. Es decir, que la mayor parte de la Web que la gente conoce y utiliza hoy en día se basa en confiar a un puñado de empresas privadas que actúen en beneficio del público.
-
+
### ¿Qué es la Web3? {#what-is-web3}
-La Web3 se ha convertido en un término general para la visión de un Internet nuevo y mejor. En esencia, Web3 utiliza cadenas de bloques, criptomonedas y NFT para devolver el poder a los usuarios en forma de propiedad. [Una publicación de 2020 en Twitter](https://twitter.com/himgajria/status/1266415636789334016) captó mejor la esencia: Web 1.0 fue de solo lectura, Web 2.0 es de lectura-escritura, Web3 será de lectura-escritura-propiedad.
+La Web3 se ha convertido en un término general para la visión de un Internet nuevo y mejor. En esencia, Web3 utiliza cadenas de bloques, criptomonedas y NFT para devolver el poder a los usuarios en forma de propiedad. [Una publicación de 2020 en Twitter](https://twitter.com/himgajria/status/1266415636789334016) lo resumió perfectamente: Web1 era solo lectura, Web2 es lectura y escritura, Web3 será lectura, escritura y propiedad.
-#### Ideas centrales de la Web3 {#core-ideas}
+#### Ideas fundamentales de Web3 {#core-ideas}
Aunque es difícil proporcionar una definición estática de lo que es la Web3, algunos principios básicos guían su creación.
-- **Web3 está descentralizada:** en lugar de grandes extensiones de Internet controladas y apropiadas por entidades centralizadas, la propiedad se distribuye entre sus constructores y usuarios.
-- **Web3 no tiene permisos:** todos tienen el mismo acceso para participar en la Web3, y nadie queda excluido.
-- **Web3 tiene pagos nativos:** utiliza criptomonedas para gastar y enviar dinero en línea en lugar de depender de la infraestructura obsoleta de los bancos y procesadores de pagos.
-- **Web3 no depende de la confianza:** opera utilizando incentivos y mecanismos económicos en lugar de depender de terceros de confianza.
+- **Web3 es descentralizado:** en vez de que grandes sectores de internet estén controlados y poseídos por entidades centralizadas, la propiedad se distribuye entre sus creadores y usuarios.
+- **Web3 no requiere permisos:** todos tienen igual acceso para participar en Web3 y nadie se excluye.
+- **Web3 tiene pagos nativos:** utiliza criptomonedas para gastar y enviar dinero en línea en lugar de depender de la infraestructura obsoleta de bancos y procesadores de pago.
+- **Web3 es sin confianza:** funciona utilizando incentivos y mecanismos económicos en vez de depender de terceros de confianza.
### ¿Por qué es importante Web3? {#why-is-web3-important}
@@ -63,14 +64,14 @@ Aunque las características destacadas de Web3 no están aisladas y no encajan e
La Web3 le otorga la propiedad de sus activos digitales de una manera sin precedentes. Por ejemplo, supongamos que está jugando a un juego en Web2. Si compra un elemento del juego, se vinculará directamente a su cuenta. Si los creadores del juego eliminan su cuenta, perderá estos elementos. O, que si deja de jugar, pierde el valor que invirtió en los objetos del juego.
-Web3 permite la propiedad directa a través de [tokens no fungibles (NFT)](/glossary/#nft). Nadie, ni siquiera los creadores del juego, tienen el poder de quitarle la propiedad. Y, si deja de jugar, puede vender o intercambiar sus objetos del juego en mercados abiertos y recuperar su valor.
+Web3 permite la propiedad directa a través de [tokens no fungibles (NFTs)](/glossary/#nft). Nadie, ni siquiera los creadores del juego, tienen el poder de quitarle la propiedad. Y, si deja de jugar, puede vender o intercambiar sus objetos del juego en mercados abiertos y recuperar su valor. Explora los [juegos en cadena](/gaming/) para ver esto en acción.
Saber más sobre NFT
- Más información sobre NFT
+ Más sobre los NFTs
@@ -85,11 +86,11 @@ En la Web3, sus datos viven en la cadena de bloques. Cuando decide abandonar una
Web 2.0 requiere que los creadores de contenido confíen en las plataformas para no cambiar las reglas, pero la resistencia a la censura es una característica nativa de una plataforma Web3.
-#### Organizaciones Autónomas Descentralizadas (DAO) {#daos}
+#### Organizaciones Autónomas Descentralizadas (DAOs) {#daos}
Así como el conservar la propiedad de sus datos en la Web3, también puede ser propietario/a de la plataforma como parte de un colectivo, usando tokens que actuán como acciones en una empresa. Las DAO le permiten coordinar la posesión descentralizada de una plataforma y hacer decisiones sobre su futuro.
-La definición técnica de DAO consiste en [contratos inteligentes](/glossary/#smart-contract) acordados que automatizan la toma de decisiones descentralizada sobre un conjunto de recursos (tokens). Los usuarios con tokens votan respecto a cómo se gastan los recursos, y el código calcula automáticamente los resultados de las votaciones.
+Las DAOs se definen técnicamente como [smart contracts](/glossary/#smart-contract) acordados que automatizan la toma de decisiones descentralizada sobre un conjunto de recursos (tokens). Los usuarios con tokens votan respecto a cómo se gastan los recursos, y el código calcula automáticamente los resultados de las votaciones.
Sin embargo, las personas definen muchas comunidades Web3 como si fueran DAO. Todas estas comunidades tienen diferentes niveles de descentralización y automatización mediante código. En la actualidad, estamos explorando qué son las DAO y cómo podrían evolucionar en el futuro.
@@ -98,7 +99,7 @@ Sin embargo, las personas definen muchas comunidades Web3 como si fueran DAO. To
Más información sobre las DAO
- Claves sobre las DAO
+ Más sobre las DAOs
@@ -111,29 +112,30 @@ Web3 resuelve estos problemas permitiéndole controlar su identidad digital con
### Pagos nativos {#native-payments}
-La infraestructura de pago de la Web 2 se basa en bancos y procesadores de pagos, excluyendo a las personas sin cuentas bancarias o a las que viven dentro de las fronteras del país equivocado. Web3 utiliza tokens como [ETH](/glossary/#ether) para enviar dinero directamente en el navegador y no requiere de terceros de confianza.
+La infraestructura de pago de la Web 2 se basa en bancos y procesadores de pagos, excluyendo a las personas sin cuentas bancarias o a las que viven dentro de las fronteras del país equivocado.
+Web3 utiliza tokens como [ETH](/glossary/#ether) para enviar dinero directamente desde el navegador y no requiere terceros de confianza.
Más sobre ETH
-## Limitaciones de la Web3 {#web3-limitations}
+## Limitaciones de Web3 {#web3-limitations}
A pesar de los numerosos beneficios de Web3 en su forma actual, todavía hay muchas limitaciones que el ecosistema debe abordar para que florezca.
### Accesibilidad {#accessibility}
-Las características importantes de la Web 3, como el inicio de sesión con Ethereum, ya están disponibles para que cualquiera las use sin costo alguno. Pero, el coste relativo de las transacciones sigue siendo prohibitivo para muchos. Es menos probable que Web3 se utilice en países menos ricos, o en vías de desarrollo debido a las altas comisiones de las transacciones. En Ethereum, estos desafíos están siendo resueltos a través de la [hoja de ruta](/roadmap/) y las [soluciones de escalamiento de capa 2](/glossary/#layer-2). La tecnología está lista, pero necesitamos niveles más altos de adopción en la capa 2 para que Web3 sea accesible para todos.
+Las características importantes de la Web 3, como el inicio de sesión con Ethereum, ya están disponibles para que cualquiera las use sin costo alguno. Pero, el coste relativo de las transacciones sigue siendo prohibitivo para muchos. Es menos probable que Web3 se utilice en países menos ricos, o en vías de desarrollo debido a las altas comisiones de las transacciones. En Ethereum, estos desafíos se están resolviendo a través de [la hoja de ruta](/roadmap/) y [soluciones de escalado de capa 2](/glossary/#layer-2). La tecnología está lista, pero necesitamos niveles más altos de adopción en la capa 2 para que Web3 sea accesible para todos.
### Experiencia de usuario {#user-experience}
-La barrera técnica para iniciar el uso de Web3 es actualmente demasiado alta. Los usuarios deben solucionar los problemas de seguridad, desgranar la documentación técnica compleja y navegar por interfaces de usuario poco intuitivas. Los [proveedores de monederos](/wallets/find-wallet/), en particular, están trabajando para resolver esto, pero se necesita más progreso antes de que la Web3 sea adoptada en masa.
+La barrera técnica para iniciar el uso de Web3 es actualmente demasiado alta. Los usuarios deben solucionar los problemas de seguridad, desgranar la documentación técnica compleja y navegar por interfaces de usuario poco intuitivas. [Los proveedores de billeteras](/wallets/find-wallet/), en particular, están trabajando para resolver esto, pero aún se requiere más avance antes de que Web3 sea adoptado masivamente.
### Educación {#education}
-Web3 introduce nuevos paradigmas que requieren aprender modelos mentales diferentes a los utilizados en Web 2.0. Un impulso educativo similar ocurrió cuando Web 1.0 estaba ganando popularidad a finales de la década de 1990; los defensores de la World Wide Web utilizaron una gran cantidad de técnicas educativas para educar al público, desde metáforas sencillas (la autopista de la información, exploradores, navegación por Internet) a [cadenas de televisión](https://www.youtube.com/watch?v=SzQLI7BxfYI). Web3 no es difícil, aunque sí es diferente. Las iniciativas educativas que informan a los usuarios de la Web2 de estos paradigmas de la Web 3 son vitales para su éxito.
+Web3 introduce nuevos paradigmas que requieren aprender modelos mentales diferentes a los utilizados en Web 2.0. Un esfuerzo educativo similar ocurrió mientras Web1.0 ganaba popularidad a finales de los años 1990; los defensores de la web usaron variados métodos educativos para informar al público, desde metáforas sencillas (la autopista de la información, los navegadores, navegar por la web) hasta [transmisiones por televisión](https://www.youtube.com/watch?v=SzQLI7BxfYI). Web3 no es difícil, aunque sí es diferente. Las iniciativas educativas que informan a los usuarios de la Web2 de estos paradigmas de la Web 3 son vitales para su éxito.
-Ethereum.org contribuye a la educación de Web3 a través de nuestro [Programa de traducción](/contributing/translation-program/), con el objetivo de traducir contenido importante de Ethereum a tantos idiomas como sea posible.
+Ethereum.org contribuye a la educación sobre Web3 a través de nuestro [Programa de Traducción](/contributing/translation-program/), buscando traducir contenido importante de Ethereum a tantos idiomas como sea posible.
### Infraestructura centralizada {#centralized-infrastructure}
@@ -145,23 +147,23 @@ Web3 es un ecosistema joven y en evolución. Gavin Wood acuñó el término en 2
Esto es solo el comienzo para crear un mejor Internet con Web3, y a medida que seguimos mejorando la infraestructura en la que se basará, el futuro de la Web parece prometedor.
-## Cómo participar {#get-involved}
+## ¿Cómo puedo participar? {#get-involved}
-- [Obtener un monedero](/wallets/)
-- [Encontrar una comunidad](/community/)
-- [Explorar aplicaciones Web3](/apps/)
-- [Unirse a una DAO](/dao/)
-- [Construir sobre Web3](/developers/)
+- [Obtenga una billetera](/wallets/)
+- [Encuentre una comunidad](/community/)
+- [Explore aplicaciones Web3](/apps/)
+- [Únase a una DAO](/dao/)
+- [Desarrolle en Web3](/developers/)
-## Para profundizar sobre el tema {#further-reading}
+## Lecturas adicionales {#further-reading}
Web3 no está definida rígidamente. Varios participantes de la comunidad tienen diferentes opiniones al respecto. He aquí algunas de ellas:
-- [¿Qué es la Web3? El Internet descentralizado del futuro explicado](https://www.freecodecamp.org/news/what-is-web3) – _Nader Dabit_
-- [Dar sentido a la Web3](https://medium.com/l4-media/making-sense-of-web-3-c1a9e74dcae) – _Josh Stark_
-- [¿Por qué es Importante Web3?](https://future.a16z.com/why-web3-matters/) — _Chris Dixon_
-- [¿Por qué es importante la Descentralización?](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) - _Chris Dixon_
-- [El paisaje de la Web3](https://a16z.com/wp-content/uploads/2021/10/The-web3-Readlng-List.pdf) – _a16z_
-- [El debate de Web3](https://www.notboring.co/p/the-web3-debate) – _Packy McCormick_
+- [¿Qué es Web3? La Internet descentralizada del futuro explicada](https://www.freecodecamp.org/news/what-is-web3) – _Nader Dabit_
+- [Entendiendo Web 3](https://medium.com/l4-media/making-sense-of-web-3-c1a9e74dcae) – _Josh Stark_
+- [Por qué importa la Web3](https://a16zcrypto.com/posts/article/why-web3-matters/) — _Chris Dixon_
+- [Por qué importa la descentralización](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) - _Chris Dixon_
+- [El panorama de Web3](https://a16z.com/wp-content/uploads/2021/10/The-web3-Readlng-List.pdf) – _a16z_
+- [El debate sobre Web3](https://www.notboring.co/p/the-web3-debate) – _Packy McCormick_
From 514462320fffb7a21efdfb41c7ca2415d9d4fb30 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:46:59 -0300
Subject: [PATCH 052/589] update(i18n):
public/content/translations/es/eips/index.md
---
public/content/translations/es/eips/index.md | 39 ++++++++++----------
1 file changed, 19 insertions(+), 20 deletions(-)
diff --git a/public/content/translations/es/eips/index.md b/public/content/translations/es/eips/index.md
index 020b61ea4b7..beac5951457 100644
--- a/public/content/translations/es/eips/index.md
+++ b/public/content/translations/es/eips/index.md
@@ -4,25 +4,25 @@ description: La información básica que necesita para entender las EIP
lang: es
---
-# Introducción a las propuestas de mejora de Ethereum (EIP) {#introduction-to-ethereum-improvement-proposals}
+# Introducción a las Propuestas de Mejora de Ethereum (EIPs) {#introduction-to-ethereum-improvement-proposals}
## ¿Qué son las EIP? {#what-are-eips}
-[Las propuestas de mejora de Ethereum (EIP, por sus siglas en inglés)](https://eips.ethereum.org/) son estándares que especifican nuevas características o procesos potenciales para Ethereum. Las EIP contienen especificaciones técnicas para los cambios propuestos y actúan como «fuente fidedigna» para la comunidad. Las actualizaciones de la red y los estándares de aplicación para Ethereum se debaten y desarrollan a través del proceso de las EIP.
+[Las Propuestas de Mejora de Ethereum (EIPs)](https://eips.ethereum.org/) son estándares que especifican posibles nuevas características o procesos para Ethereum. Las EIP contienen especificaciones técnicas para los cambios propuestos y actúan como «fuente fidedigna» para la comunidad. Las actualizaciones de la red y los estándares de aplicación para Ethereum se debaten y desarrollan a través del proceso de las EIP.
-Cualquier persona dentro de la comunidad Ethereum tiene la capacidad de crear una EIP. Las directrices para escribir EIP se incluyen en [EIP-1](https://eips.ethereum.org/EIPS/eip-1). Una EIP debe proporcionar principalmente una especificación técnica concisa con alguna motivación. El autor de EIP es responsable de llegar a un consenso dentro de la comunidad y documentar opiniones alternativas. Dada la gran barrera técnica existente para enviar una EIP correctamente formulada, históricamente la mayoría de los autores de EIP suelen ser desarrolladores de aplicaciones o protocolos.
+Cualquier persona dentro de la comunidad Ethereum tiene la capacidad de crear una EIP. Las directrices para redactar EIPs están incluidas en [EIP-1](https://eips.ethereum.org/EIPS/eip-1). Una EIP debe proporcionar principalmente una especificación técnica concisa con alguna motivación. El autor de EIP es responsable de llegar a un consenso dentro de la comunidad y documentar opiniones alternativas. Dada la gran barrera técnica existente para enviar una EIP correctamente formulada, históricamente la mayoría de los autores de EIP suelen ser desarrolladores de aplicaciones o protocolos.
## ¿Por qué importan las EIP? {#why-do-eips-matter}
-Las EIP desempeñan un papel importante en la forma en que ocurren los cambios y se documentan en Ethereum. Son la forma de que la gente proponga, debata y adopte cambios. Existen [diferentes tipos de EIP](https://eips.ethereum.org/EIPS/eip-1#eip-types), incluidas las EIP centrales para cambios de protocolo de bajo nivel que afectan al consenso y requieren una actualización de la red, así como [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) y ERC para estándares de la aplicación como [EIP-20](https://eips.ethereum.org/EIPS/eip-20) y [EIP-721](https://eips.ethereum.org/EIPS/eip-721).
+Las EIP desempeñan un papel importante en la forma en que ocurren los cambios y se documentan en Ethereum. Son la vía para que las personas propongan, debatan y adopten cambios. Existen [diferentes tipos de EIPs](https://eips.ethereum.org/EIPS/eip-1#eip-types), incluyendo EIPs principales para cambios de bajo nivel en el protocolo que afectan al consenso y requieren una actualización de red como [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), y ERCs para estándares de aplicaciones como [EIP-20](https://eips.ethereum.org/EIPS/eip-20) y [EIP-721](https://eips.ethereum.org/EIPS/eip-721).
-Cada actualización de red consta de un conjunto de EIP que debe implementar cada [cliente de Ethereum](/learn/#clients-and-nodes) en la red. Esto implica que para mantener el consenso con otros clientes en la red principal de Ethereum, los desarrolladores de clientes deben asegurarse de que todos hayan implementado las EIP necesarias.
+Cada actualización de red consiste en un conjunto de EIPs que deben ser implementados por cada [cliente de Ethereum](/learn/#clients-and-nodes) en la red. Esto implica que para mantener el consenso con otros clientes en la red principal de Ethereum, los desarrolladores de clientes deben asegurarse de que todos hayan implementado las EIP necesarias.
Además de proporcionar una especificación técnica para los cambios, las EIP son la unidad alrededor de la cual ocurre la gobernanza en Ethereum: cualquiera es libre de proponer una y, a continuación, varias partes interesadas en la comunidad debatirán para determinar si debe adoptarse como estándar o incluirse en una actualización de la red. Debido a que no todas las aplicaciones tiene que adoptar las EIP no centralizadas (por ejemplo, es posible crear un token fungible que no implemente EIP-20), pero las EIP centrales sí que deben adoptarse ampliamente (ya que todos los nodos deben actualizarse para seguir formando parte de la misma red), las EIP centrales requieren un consenso más amplio dentro de la comunidad que las EIP no centrales.
-## Historia de las EIP {#history-of-eips}
+## Historia de las EIPs {#history-of-eips}
-El [repositorio de Github de propuestas de mejora de Ethereum (EIP)](https://github.com/ethereum/EIPs) se creó en octubre de 2015. El proceso de EIP se basa en el proceso de [propuestas de mejora de Bitcoin (BIP)](https://github.com/bitcoin/bips), que a su vez se basa en el [proceso de propuestas de mejora de Python (PEP)](https://www.python.org/dev/peps/).
+El [repositorio de GitHub de las Propuestas de Mejora de Ethereum (EIPs)](https://github.com/ethereum/EIPs) fue creado en octubre de 2015. El proceso EIP está basado en el proceso de [Propuestas de Mejora de Bitcoin (BIPs)](https://github.com/bitcoin/bips), que a su vez se basa en el proceso de [Propuestas de Mejora de Python (PEPs)](https://www.python.org/dev/peps/).
Los editores de EIP se encargan de revisar las EIP para verificar su solidez técnica, así como su correcta ortografía, gramática y estilo de código. Martin Becze, Vitalik Buterin y Gavin Wood, entre otros, fueron los editores originales de EIP desde 2015 hasta finales de 2016.
@@ -44,31 +44,30 @@ Los editores de EIP retirados son:
- Nick Savers (@nicksavers)
- Vitalik Buterin (@vbuterin)
-Si deseas convertirte en un editor de EIP, por favor revisa [EIP-5069](https://eips.ethereum.org/EIPS/eip-5069).
+Si desea convertirse en editor de EIPs, por favor consulte [EIP-5069](https://eips.ethereum.org/EIPS/eip-5069).
-Los editores EIP deciden cuándo una propuesta está ya madura para convertirse en una EIP, y ayudan a los autores de EIP a sacar adelante sus propuestas. [Los Ethereum Cat Herders](https://www.ethereumcatherders.com/) ayudan a organizar reuniones entre los editores de EIP y la comunidad (ver [EIPIP](https://github.com/ethereum-cat-herders/EIPIP)).
+Los editores EIP deciden cuándo una propuesta está ya madura para convertirse en una EIP, y ayudan a los autores de EIP a sacar adelante sus propuestas. [Ethereum Cat Herders](https://www.ethereumcatherders.com/) ayudan a organizar reuniones entre los editores de EIP y la comunidad (ver [EIPIP](https://github.com/ethereum-cat-herders/EIPIP)).
-El proceso de normalización completo junto con el gráfico correspondiente se describe en [EIP-1](https://eips.ethereum.org/EIPS/eip-1)
+El proceso completo de estandarización junto con el diagrama se describe en [EIP-1](https://eips.ethereum.org/EIPS/eip-1)
## Más información {#learn-more}
-Si quiere profundizar más sobre las EIP, consulte el [sitio web de EIP](https://eips.ethereum.org/) y [EIP-1](https://eips.ethereum.org/EIPS/eip-1). He aquí algunos enlaces útiles:
+Si está interesado en leer más sobre las EIPs, visite el [sitio web de EIPs](https://eips.ethereum.org/) y [EIP-1](https://eips.ethereum.org/EIPS/eip-1). He aquí algunos enlaces útiles:
-- [Una lista de cada Propuesta de Mejora de Ethereum](https://eips.ethereum.org/all)
+- [Una lista de todas las Propuestas de Mejora de Ethereum](https://eips.ethereum.org/all)
- [Una descripción de todos los tipos de EIP](https://eips.ethereum.org/EIPS/eip-1#eip-types)
-- [Una descripción de todos los estados de EIP](https://eips.ethereum.org/EIPS/eip-1#eip-process)
+- [Una descripción de todos los estados de las EIP](https://eips.ethereum.org/EIPS/eip-1#eip-process)
-### Proyectos de educación comunitaria {#community-projects}
+### Proyectos educativos de la comunidad {#community-projects}
-- [PEEPanEIP](https://www.youtube.com/playlist?list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F): *PEEPanEIP es una serie de videos educativos que analiza propuestas de mejora de Ethereum (EIP) y las características clave de las próximas actualizaciones.*
-- [EIPs For Nerds](https://ethereum2077.substack.com/t/eip-research): *EIPs For Nerds proporciona una visión general completa al estilo ELI5 de varias propuestas de mejora de Ethereum (EIP), incluidas EIP básicas y EIP de capa de aplicación/infraestructura (ERC), para educar a los lectores y dar forma al consenso en torno a los cambios propuestos al protocolo de Ethereum.*
-- [EIPs.wtf](https://www.eips.wtf/): *EIPs.wtf proporciona información adicional para las Propuestas de Mejora de Ethereum (EIP), incluyendo su estado, detalles de implementación, solicitudes pull relacionadas y comentarios de la comunidad.*
-- [EIP.Fun](https://eipfun.substack.com/): *EIP.Fun proporciona las últimas noticias sobre las propuestas de mejora de Ethereum (EIP), novedades sobre reuniones de EIP y más.*
-- [EIPs Insight](https://eipsinsight.com/): *EIPs Insight brinda una representación de estado del proceso y estadísticas de las Propuestas de Mejora de Ethereum (EIP) según información recopilada de diferentes recursos.*
+- [PEEPanEIP](https://www.youtube.com/playlist?list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F) — _PEEPanEIP es una serie educativa de videos que discute las Propuestas de Mejora de Ethereum (EIPs) y las características clave de las próximas actualizaciones._
+- [EIPs.wtf](https://www.eips.wtf/) — _EIPs.wtf proporciona información adicional sobre las Propuestas de Mejora de Ethereum (EIPs), incluyendo su estado, detalles de implementación, pull requests relacionadas y comentarios de la comunidad._
+- [EIP.Fun](https://eipfun.substack.com/) — _EIP.Fun ofrece las últimas noticias sobre las Propuestas de Mejora de Ethereum (EIPs), actualizaciones sobre reuniones de EIP y más._
+- [EIPs Insight](https://eipsinsight.com/) — _EIPs Insight es una representación del estado del proceso y estadísticas de las Propuestas de Mejora de Ethereum (EIPs) según la información recopilada de diferentes recursos._
## Participar {#participate}
-Cualquiera puede crear un EIP. Antes de enviar una propuesta, se debe leer [EIP-1](https://eips.ethereum.org/EIPS/eip-1) que describe el proceso de la EIP y cómo escribir una EIP y solicitar comentarios sobre [Ethereum Magicians](https://ethereum-magicians.org/), donde las propuestas se debaten primero dentro de la comunidad antes de enviar un borrador.
+Cualquiera puede crear un EIP. Antes de enviar una propuesta, se debe leer [EIP-1](https://eips.ethereum.org/EIPS/eip-1), que describe el proceso EIP y cómo redactar un EIP, y solicitar comentarios en [Ethereum Magicians](https://ethereum-magicians.org/), donde las propuestas se discuten primero con la comunidad antes de que se envíe un borrador.
## Referencias {#references}
From 0976d74f91fe3f42b81ba30ce7ad45225399d12a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:01 -0300
Subject: [PATCH 053/589] update(i18n):
public/content/translations/es/community/support/index.md
---
.../es/community/support/index.md | 43 ++++++++++---------
1 file changed, 22 insertions(+), 21 deletions(-)
diff --git a/public/content/translations/es/community/support/index.md b/public/content/translations/es/community/support/index.md
index 6984461cb23..5d875ea916b 100644
--- a/public/content/translations/es/community/support/index.md
+++ b/public/content/translations/es/community/support/index.md
@@ -4,27 +4,27 @@ description: Explicación de cómo obtener soporte técnico en el ecosistema Eth
lang: es
---
-# Soporte técnico de Ethereum {#support}
+# Soporte de Ethereum {#support}
## Soporte oficial de Ethereum {#official-support}
¿Está buscando el soporte técnico oficial de Ethereum? Lo primero que debe saber es que Ethereum está descentralizado. Eso significa que carece de organización centra y que ninguna entidad ni persona es dueña de Ethereum. Por lo tanto, no existen canales de soporte oficiales.
-Comprender la naturaleza descentralizada de Ethereum es vital, ya que todo aquel que afirme ser el soporte técnico oficial de Ethereum probablemente esté tratando de estafarle. La mejor manera de protegerse contra estafadores es enterarse bien y tomarse la seguridad en serio.
+Comprender la naturaleza descentralizada de Ethereum es vital porque **¡cualquiera que afirme ser soporte oficial de Ethereum probablemente intenta estafarle!** La mejor protección contra estafadores es informarse y tomar la seguridad en serio.
- Seguridad en Ethereum y prevención de fraudes
+ Seguridad en Ethereum y prevención de estafas
- Aprenda los fundamentos de Ethereum.
+ Aprenda los fundamentos de Ethereum
-A pesar de la falta de apoyo oficial, muchos grupos, comunidades y proyectos en todo el ecosistema Ethereum están deseosos de ayudar, y puede encontrar mucha información y recursos útiles en esta página. ¿Todavía le surgen algunas preguntas? Entonces, únase al chat [Discord de Ethereum.org](https://discord.gg/ethereum-org) e intentaremos ayudarle.
+A pesar de la falta de apoyo oficial, muchos grupos, comunidades y proyectos en todo el ecosistema Ethereum están deseosos de ayudar, y puede encontrar mucha información y recursos útiles en esta página. ¿Todavía le surgen algunas preguntas? Únase al [Discord de ethereum.org](https://discord.gg/ethereum-org), e intentaremos ayudarle.
-## Preguntas más frecuentes {#faq}
+## Preguntas frecuentes {#faq}
-### Envié ETH a una billetera equivocada {#wrong-wallet}
+### He enviado ETH a la billetera equivocada {#wrong-wallet}
Una transacción enviada en Ethereum es irreversible. Desafortunadamente, si ha enviado ETH a la cartera equivocada, no hay forma de recuperar esos fondos. Debido a que no existe organización central, ni ninguna entidad ni persona al frente de Ethereum, nadie puede revertir las transacciones. Por lo tanto, es vital comprobar siempre sus transacciones antes de enviarlas.
@@ -32,35 +32,35 @@ Una transacción enviada en Ethereum es irreversible. Desafortunadamente, si ha
Los regalos de Ethereum son estafas diseñadas para robarle ETH. No se deje tentar por ofertas que parezcan demasiado buenas para ser verdad, si envía ETH a una dirección de regalo, no recibirá ningún ningún regalo, ni tampoco podrá recuperar sus fondos.
-[Más información acerca de la prevención de fraudes.](/security/#common-scams)
+[Más sobre prevención de estafas](/security/#common-scams)
-### Mi transacción está estancada {#stuck-transaction}
+### Mi transacción está atascada {#stuck-transaction}
Debido a la demanda de la red, las transacciones en Ethereum pueden a veces estancarse si ha pagado una comisión de la transacción inferior a la requerida. Muchas carteras proporcionan una opción para volver a enviar la misma transacción con una comisión de transacción más elevada y así poder procesar la transacción. Otra alternativa es cancelar una transacción pendiente enviando una transacción a su propia dirección y utilizando el mismo nonce que la transacción pendiente.
-[Cómo acelerar o cancelar una transacción pendiente en MetaMask.](https://metamask.zendesk.com/hc/en-us/articles/360015489251-How-to-speed-up-or-cancel-a-pending-transaction)
+[Cómo acelerar o cancelar una transacción pendiente en MetaMask](https://metamask.zendesk.com/hc/en-us/articles/360015489251-How-to-speed-up-or-cancel-a-pending-transaction)
-[Cómo cancelar las transacciones pendientes de Ethereum.](https://info.etherscan.com/how-to-cancel-ethereum-pending-transactions/)
+[Cómo cancelar transacciones pendientes de Ethereum](https://info.etherscan.com/how-to-cancel-ethereum-pending-transactions/)
### ¿Cómo puedo minar Ethereum? {#mining-ethereum}
-Ya no se puede minar en Ethereum. La minería se desactivó cuando Ethereum pasó de [prueba de trabajo](/glossary/#pow) a [prueba de participación](/glossary/#pos). Ahora, en lugar de mineros, Ethereum tiene validadores. Cualquiera puede [hacer staking](/glossary/#staking) de ETH y recibir recompensas de staking por ejecutar el software de validación para asegurar la red.
+Ya no se puede minar en Ethereum. La minería se desactivó cuando Ethereum pasó de [proof-of-work](/glossary/#pow) a [proof-of-stake](/glossary/#pos). Ahora, en lugar de mineros, Ethereum tiene validadores. Cualquier persona puede [hacer staking](/glossary/#staking) de ETH y recibir recompensas por staking al ejecutar software validador para asegurar la red.
### ¿Cómo me convierto en staker/ejecuto un validador? {#how-to-stake}
-Para convertirse en validador, debe apostar 32 ETH en el contrato de depósito de Ethereum y configurar un nodo de validación. Hay más información disponible en nuestras [páginas de participación](/staking) y en [la plataforma de lanzamiento de participación](https://launchpad.ethereum.org/).
+Para convertirse en validador, debe apostar 32 ETH en el contrato de depósito de Ethereum y configurar un nodo de validación. Hay más información disponible en nuestras [páginas de staking](/staking) y en [el staking launchpad](https://launchpad.ethereum.org/).
-## Creación de DApps {#building-support}
+## Construyendo dapps {#building-support}
Crear puede ser difícil. A continuación, le indicamos algunos espacios centrados en el desarrollo con experimentados desarrolladores de Ethereum que estarán dispuestos a ayudarle.
- [Alchemy University](https://university.alchemy.com/#starter_code)
-- [Discord de CryptoDevs](https://discord.com/invite/5W5tVb3)
-- [Ethereum Stackexchange](https://ethereum.stackexchange.com/)
+- [CryptoDevs discord](https://discord.com/invite/5W5tVb3)
+- [Ethereum StackExchange](https://ethereum.stackexchange.com/)
- [Web3 University](https://www.web3.university/)
- [LearnWeb3](https://discord.com/invite/learnweb3)
-También puede encontrar documentación y guías de desarrollo en nuestra sección de recursos para desarrolladores de [Ethereum](/developers/).
+También puede encontrar documentación y guías de desarrollo en nuestra sección de [recursos para desarrolladores de Ethereum](/developers/).
### Herramientas {#dapp-tooling}
@@ -75,12 +75,12 @@ He aquí algunos ejemplos:
- [Alchemy](http://alchemy.com/discord)
- [Tenderly](https://discord.gg/fBvDJYR)
-## Ejecución de un nodo {#node-support}
+## Ejecutar un nodo {#node-support}
Si está ejecutando un nodo o validador, estas son algunas comunidades dedicadas a ayudar a los usuarios en sus comienzos.
-- [Discord de EthStaker](https://discord.gg/ethstaker)
-- [Reddit de EthStaker](https://www.reddit.com/r/ethstaker)
+- [EthStaker discord](https://discord.gg/ethstaker)
+- [EthStaker reddit](https://www.reddit.com/r/ethstaker)
La mayoría de los equipos que se encargan de la creación de clientes de Ethereum también cuentan con espacios especializados, orientados al público, en los que se puede obtener ayuda y hacer preguntas.
@@ -99,5 +99,6 @@ La mayoría de los equipos que se encargan de la creación de clientes de Ethere
- [Lighthouse](https://discord.gg/cyAszAh)
- [Teku](https://discord.gg/7hPv2T6)
- [Lodestar](https://discord.gg/aMxzVcr)
+- [Grandine](https://discord.gg/H9XCdUSyZd)
-También puede [aprender aquí a ejecutar su propio nodo](/developers/docs/nodes-and-clients/run-a-node/).
+También puede [aprender cómo ejecutar un nodo aquí](/developers/docs/nodes-and-clients/run-a-node/).
From 5ff0673f9b9813869ab9164e8dc0923d6cdb2fa5 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:02 -0300
Subject: [PATCH 054/589] update(i18n):
public/content/translations/es/about/index.md
---
public/content/translations/es/about/index.md | 65 ++++++++++---------
1 file changed, 36 insertions(+), 29 deletions(-)
diff --git a/public/content/translations/es/about/index.md b/public/content/translations/es/about/index.md
index 0420c4e11c6..8615b204831 100644
--- a/public/content/translations/es/about/index.md
+++ b/public/content/translations/es/about/index.md
@@ -8,7 +8,9 @@ lang: es
ethereum.org es un recurso público de código abierto para la comunidad Ethereum al que cualquiera puede contribuir. Tenemos un pequeño equipo central dedicado a mantener y desarrollar el sitio con contribuciones de miles de miembros de la comunidad en todo el mundo.
-## Un apunte sobre los nombres {#a-note-on-names}
+**Ningún miembro de ethereum.org se pondrá en contacto con usted. No responda.**
+
+## Una nota sobre los nombres {#a-note-on-names}
Es común que la gente confunda los nombres dentro del panorama de Ethereum, lo que puede producir modelos mentales deficientes sobre cómo funciona Ethereum. He aquí una explicación rápida para aclarar las cosas:
@@ -16,23 +18,23 @@ Es común que la gente confunda los nombres dentro del panorama de Ethereum, lo
Ethereum es una red pública, una cadena de bloques y un protocolo de código abierto, operado, gobernado, administrado y propiedad de una comunidad global de decenas de miles de desarrolladores, operadores de nodos, titulares de ETH y usuarios.
-[Más información sobre Ethereum](/what-is-ethereum/)
+[Más sobre Ethereum](/what-is-ethereum/)
-[Más acerca de la gobernanza de Ethereum](/governance/)
+[Más información sobre la gobernanza de Ethereum](/gobernanza/)
### Ether (ETH) {#ether-or-eth}
El ether (también conocido por su indicador ETH) es la moneda nativa que se intercambia en Ethereum. Se necesitan ETH para pagar el uso de la red Ethereum (en forma de comisiones de transacción). El ETH también se utiliza para asegurar la red con participaciones. Cuando la gente habla del precio de Ethereum, se refieren a los activos en ETH.
-[Más información acerca de ETH](/what-is-ether/)
+[Más sobre ETH](/what-is-ether/)
-[Más información acerca de la participación de ETH](/staking/)
+[Más sobre el staking de ETH](/staking/)
-### Ethereum Foundation {#ethereum-foundation}
+### Fundación Ethereum {#ethereum-foundation}
Una organización sin ánimo de lucro, financiada inicialmente por la venta colectiva de ETH, dedicada al apoyo de la red y del ecosistema de Ethereum.
-[Más información acerca de la Ethereum Foundation](/foundation/)
+[Más sobre la Fundación Ethereum](/foundation/)
### ethereum.org {#ethereum-org}
@@ -42,7 +44,7 @@ En esta página encontrará más información sobre ethereum.org.
## Nuestra misión {#our-mission}
-**La misión de ethereum.org es ser el mejor portal para la creciente comunidad de Ethereum.**
+**La misión de ethereum.org es ser el mejor portal para la creciente comunidad de Ethereum**
Nos esforzamos por construir un recurso educativo fácil de entender para todos los temas relacionados con Ethereum, diseñado para ayudar a nuevos usuarios a familiarizarse con Ethereum y sus conceptos clave. Queremos:
@@ -55,14 +57,14 @@ Nos esforzamos por construir un recurso educativo fácil de entender para todos
Para lograr esta misión, nuestro equipo se centra en dos objetivos principales en ethereum.org:
-### 1. Mejorar la experiencia de los usuarios que visiten ethereum.org. {#visitors}
+### 1. Mejorar la experiencia de usuario para los visitantes de ethereum.org {#visitors}
- Ampliar, mejorar y mantener el contenido actualizado.
- Mejorar la usabilidad y la accesibilidad a través de las mejores prácticas de localización y desarrollo web.
- Aumentar la participación de los usuarios a través de funciones como encuestas, cuestionarios e integraciones en Web3.
- Mantener un sitio web que resulte liviano a la par que eficiente.
-### 2. Crecer, fortalecer y empoderar a nuestra comunidad de colaboradores. {#community}
+### 2. Hacer crecer, fortalecer y empoderar nuestra comunidad de colaboradores {#community}
- Aumentar el número total de contribuyentes al sitio web.
- Mejorar la retención de los contribuyentes a través del compromiso, los reconocimientos y las recompensas.
@@ -70,31 +72,36 @@ Para lograr esta misión, nuestro equipo se centra en dos objetivos principales
- Facilitar una mayor diversidad de contribuciones: código, contenido, diseño, traducción, moderación.
- Mantener la base de código moderna, limpia y bien documentada.
-## Principios básicos {#core-principles}
+## Principios fundamentales {#core-principles}
Tenemos algunos principios básicos que nos ayudan a cumplir nuestra misión.
-### 1. Ethereum.org es un portal que lleva al universo Ethereum 🌏 {#core-principles-1}
+### 1. ethereum.org es un portal hacia Ethereum 🌏 {#core-principles-1}
-Queremos que nuestros usuarios muestren su interés y que se responda a sus preguntas. Por lo tanto, nuestro portal necesita combinar información, «momentos mágicos» y enlaces a los brillantes recursos de la comunidad que ahí existen. El propósito de nuestro contenido es ser un «portal de incorporación» y no un sustituto de los extensos recursos que ya existen. Estamos ansiosos por ofrecer soporte e integrarnos con los recursos creados por la comunidad, para darles más visibilidad y hacerlos más reconocibles. [La comunidad de Ethereum](/community/) está en el centro de esto: necesitamos no solo servir a la comunidad, sino trabajar con ella e incorporar sus opiniones. El sitio web no es solamente para la comunidad que tenemos actualmente, sino para la comunidad en la que deseamos desarrollarnos. Debemos recordar que nuestra comunidad es global y alberga personas con muchos idiomas, de muchas regiones y de diversas culturas.
+Queremos que nuestros usuarios muestren su interés y que se responda a sus preguntas. Por lo tanto, nuestro portal necesita combinar información, «momentos mágicos» y enlaces a los brillantes recursos de la comunidad que ahí existen. El propósito de nuestro contenido es ser un «portal de incorporación» y no un sustituto de los extensos recursos que ya existen. Estamos ansiosos por ofrecer soporte e integrarnos con los recursos creados por la comunidad, para darles más visibilidad y hacerlos más reconocibles.
+[La comunidad de Ethereum](/community/) está en el corazón de esto: no solo debemos servir a la comunidad, sino también trabajar con ella e incorporar sus comentarios. El sitio web no es solamente para la comunidad que tenemos actualmente, sino para la comunidad en la que deseamos desarrollarnos. Debemos recordar que nuestra comunidad es global y alberga personas con muchos idiomas, de muchas regiones y de diversas culturas.
-### 2. Ethereum.org está siempre evolucionando 🛠 {#core-principles-2}
+### 2. ethereum.org siempre está evolucionando 🛠 {#core-principles-2}
-Ethereum y la comunidad están siempre evolucionando, por tanto ethereum.org también lo hace. Por eso, nuestro sitio tiene un sistema de diseño simple y una estructura modular. Hacemos cambios iterativos a medida que aprendemos más sobre cómo las personas usan el sitio y lo que la comunidad quiere de él. Trabajamos con código abierto y con una comunidad de colaboradores, por lo tanto estamos abiertos a recibir propuestas de cambio y ayuda. [Entérese de cómo puede contribuir](/contributing/)
+Ethereum y la comunidad están siempre evolucionando, por tanto ethereum.org también lo hace. Por eso el sitio cuenta con un sistema de diseño simple y una estructura modular. Hacemos cambios iterativos a medida que aprendemos más sobre cómo las personas usan el sitio y lo que la comunidad quiere de él.
+Trabajamos con código abierto y con una comunidad de colaboradores, por lo tanto estamos abiertos a recibir propuestas de cambio y ayuda.
+[Conozca más sobre cómo contribuir](/contributing/)
-### 3. ethereum.org no es un típico sitio web de productos 🦄 {#core-principles-3}
+### 3. ethereum.org no es un sitio web de producto típico 🦄 {#core-principles-3}
-Ethereum es algo mucho más grande: incluye una comunidad, una tecnología que lo sustenta y un conjunto de ideas e ideologías, entre otras cosas. Esto significa que el sitio web necesita manejar muchos viajes de usuario diferentes, desde «un desarrollador que quiere una herramienta específica» y «un recién llegado que acaba de comprar unos cuantos ETH y no sabe lo que es una cartera». «¿Cuál es el mejor sitio web para una plataforma de cadena de bloques?» Esta sigue siendo una pregunta abierta: somos pioneros. Construir esto requiere experimentar.
+Ethereum es algo mucho más grande: incluye una comunidad, una tecnología que lo sustenta y un conjunto de ideas e ideologías, entre otras cosas.
+Esto significa que el sitio web necesita manejar muchos viajes de usuario diferentes, desde «un desarrollador que quiere una herramienta específica» y «un recién llegado que acaba de comprar unos cuantos ETH y no sabe lo que es una cartera».
+«¿Cuál es el mejor sitio web para una plataforma de cadena de bloques?» Esta sigue siendo una pregunta abierta: somos pioneros. Construir esto requiere experimentar.
## Hoja de ruta del producto {#roadmap}
-Para hacer que nuestro trabajo sea más accesible y fomentar una mayor colaboración comunitaria, el equipo central de ethereum.org publica una descripción general de nuestros objetivos de hoja de ruta trimestral.
+Para hacer nuestro trabajo más accesible y fomentar la colaboración comunitaria, el equipo central de ethereum.org publica una visión general de los objetivos de nuestra hoja de ruta en el [ciclo shape up](https://www.productplan.com/glossary/shape-up-method/).
-[Vea nuestra hoja de ruta de productos del tercer trimestre de 2024](https://github.com/ethereum/ethereum-org-website/issues/13399)
+[Vea la hoja de ruta del producto para el Ciclo 1 de 2025](https://github.com/ethereum/ethereum-org-website/issues/14726)
-**¿Qué le parece? ** Siempre apreciamos los comentarios sobre nuestra hoja de ruta. Si hay algo en lo que cree que deberíamos trabajar, ¡por favor, díganoslo! Damos la bienvenida a ideas y relaciones públicas de cualquier persona de la comunidad.
+**¿Qué le parece?** Siempre agradecemos sus comentarios sobre nuestra hoja de ruta; si cree que deberíamos trabajar en algo, ¡háganoslo saber! Damos la bienvenida a ideas y relaciones públicas de cualquier persona de la comunidad.
-**¿Quiere involucrarse? ** [Obtenga más información sobre cómo contribuir](/contributing/), [contáctenos en Twitter](https://twitter.com/ethdotorg), o únase a las conversaciones de la comunidad en [nuestro servidor de Discord](https://discord.gg/ethereum-org).
+**¿Quiere participar?** [Conozca más sobre cómo contribuir](/contributing/), [escríbanos en Twitter](https://x.com/ethdotorg), o únase a las discusiones en la comunidad en [nuestro servidor de Discord](https://discord.gg/ethereum-org).
## Principios de diseño {#design-principles}
@@ -102,26 +109,26 @@ Utilizamos un conjunto de [principios de diseño](/contributing/design-principle
## Sistema de diseño {#design-system}
-Construimos y lanzamos un [sistema de diseño](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System?node-id=0%3A1&t=QBt9RkhpPqzE3Aa6-1) para enviar las características más rápidamente y permitir que los miembros de la comunidad participaran en el diseño abierto de ethereum.org.
+Creamos y publicamos un [sistema de diseño](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System?node-id=0%3A1&t=QBt9RkhpPqzE3Aa6-1) para lanzar funciones más rápido y permitir que los miembros de la comunidad participen en el diseño abierto de ethereum.org.
-¿Quiere involucrarse?[Siga en Figma](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System), la cuestión de [GitHub](https://github.com/ethereum/ethereum-org-website/issues/6284)y únase a la conversación en nuestro canal[#design Discord](https://discord.gg/ethereum-org).
+¿Quiere participar?[Únase en Figma](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System), en la [issue de GitHub](https://github.com/ethereum/ethereum-org-website/issues/6284) y únase a la conversación en nuestro [#design canal de Discord](https://discord.gg/ethereum-org).
## Guía de estilo {#style-guide}
-Tenemos una [guía de estilo](/contributing/style-guide/) para unificar ciertos aspectos de la escritura de contenidos, y así lograr un proceso de contribución más fluido.
+Disponemos de una [guía de estilo](/contributing/style-guide/) para estandarizar ciertos aspectos de la redacción de contenido y facilitar el proceso de contribución.
-Asegúrese de leer [nuestros principios](/contributing/design-principles/) y [nuestra guía de estilo](/contributing/style-guide/) si quiere [contribuir con el sitio](/contributing/).
+Asegúrese de leer [nuestros principios](/contributing/design-principles/) y [nuestra guía de estilo](/contributing/style-guide/) si desea [contribuir al sitio](/contributing/).
Agradecemos los comentarios sobre nuestros principios de diseño, el sistema de diseño y la guía de estilo. Recuerde: ethereum.org existe por y para la comunidad.
## Licencia {#license}
-El sitio web ethereum.org es de código abierto y está construido bajo una [Licencia MIT](https://github.com/ethereum/ethereum-org-website/blob/dev/LICENSE), a menos que se especifique lo contrario. Consulte más información sobre los [términos de uso](/terms-of-use/) de ethereum.org.
+El sitio web ethereum.org es open source y está construido bajo una [Licencia MIT](https://github.com/ethereum/ethereum-org-website/blob/dev/LICENSE) a menos que se especifique lo contrario. Más información sobre los [términos de uso](/terms-of-use/) de ethereum.org.
-## Ofertas de trabajo disponibles {#open-jobs}
+## Ofertas de trabajo abiertas {#open-jobs}
Aunque este sitio web es de código abierto, y cualquiera puede trabajar en él, tenemos un equipo dedicado a ethereum.org y a otros proyectos web de Ethereum Foundation.
-Publicaremos aquí las ofertas de empleo. Si no ve un puesto aquí para usted, diríjase a [nuestro servidor de Discord](https://discord.gg/ethereum-org) y ¡díganos cómo le gustaría trabajar con nosotros!
+Publicaremos aquí las ofertas de empleo. Si no ve un puesto para usted aquí, diríjase a [nuestro servidor de Discord](https://discord.gg/ethereum-org) y díganos cómo le gustaría trabajar con nosotros.
-¿Busca algo distinto del equipo de ethereum.org? [Consulte otras vacantes relacionadas con Ethereum](/community/get-involved/#ethereum-jobs/).
+¿Busca algo distinto del equipo de ethereum.org? [Consulte otros empleos relacionados con Ethereum](/community/get-involved/#ethereum-jobs/).
From 49bca68b9391fe9355a66283c66744f050958c7f Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:04 -0300
Subject: [PATCH 055/589] update(i18n):
public/content/translations/es/desci/index.md
---
public/content/translations/es/desci/index.md | 130 +++++++++---------
1 file changed, 66 insertions(+), 64 deletions(-)
diff --git a/public/content/translations/es/desci/index.md b/public/content/translations/es/desci/index.md
index 4cbfe1f8110..5e67dd39306 100644
--- a/public/content/translations/es/desci/index.md
+++ b/public/content/translations/es/desci/index.md
@@ -3,7 +3,7 @@ title: Ciencia descentralizada (DeSci)
description: Un vistazo a la ciencia descentralizada en Ethereum
lang: es
template: use-cases
-emoji: ":microscope:"
+emoji: ":microscopio:"
sidebarDepth: 2
image: /images/future_transparent.png
alt: ""
@@ -14,11 +14,11 @@ summaryPoint3: Se basa en el movimiento de la ciencia abierta.
## ¿Qué es la ciencia descentralizada (DeSci)? {#what-is-desci}
-La ciencia descentralizada (DeSci) es un movimiento cuyo objetivo es construir una infraestructura pública para financiar, crear, revisar, acreditar, almacenar y difundir el conocimiento científico de forma justa y equitativa usando la pila de [Web3](/glossary/#web3).
+La ciencia descentralizada (DeSci) es un movimiento que busca construir infraestructura pública para financiar, crear, revisar, acreditar, almacenar y divulgar el conocimiento científico de manera justa y equitativa utilizando la pila tecnológica de [Web3](/glossary/#web3).
DeSci pretende crear un ecosistema en el que se incentive a los científicos a compartir abiertamente sus investigaciones y recibir reconocimiento por su trabajo, al tiempo que se le permita a cualquiera acceder a la investigación y contribuir a ella con facilidad. DeSci se basa en la idea de que el conocimiento científico debe ser accesible para todos y que el proceso de investigación científica debe ser transparente. DeSci está creando un modelo de investigación científica más descentralizado y distribuido, haciéndolo más resistente a la censura y al control por parte de las autoridades centrales. DeSci espera crear un entorno en el que puedan florecer ideas nuevas y no convencionales, descentralizando el acceso a la financiación, a herramientas científicas y canales de comunicación.
-La ciencia descentralizada permite contar con fuentes de financiamiento más variadas (desde [DAO](/glossary/#dao) o [donaciones cuadráticas](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) hasta crowdfunding y otras), datos y métodos más accesibles, e incentivando la reproducibilidad.
+La ciencia descentralizada permite fuentes de financiación más diversas (desde [DAOs](/glossary/#dao), [donaciones cuadráticas](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531), hasta crowdfunding y más), datos y métodos más accesibles, y proporciona incentivos para la reproducibilidad.
### Juan Benet, el movimiento de DeSci
@@ -28,16 +28,16 @@ La ciencia descentralizada permite contar con fuentes de financiamiento más var
Una lista parcial de problemas clave en la ciencia y cómo la ciencia descentralizada puede ayudar a abordar estos problemas
-| **Ciencia descentralizada** | **Ciencia tradicional** |
-| -------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
-| La distribuición de fondos es **determinada por el público** mediante mecanismos como las donaciones cuadráticas o las DAO. | Grupos pequeños, cerrados y **centralizados** controlan la distribución de fondos. |
-| Colabora con pares de **todo el mundo** en equipos dinámicos. | Las organizaciones de financiamiento y las instituciones de origen **limitan** las colaboraciones. |
-| Las decisiones de financiación se toman en línea y **de forma transparente**. Se exploran nuevos mecanismos de financiación. | Las decisiones de financiación se toman con mucho tiempo y **transparencia limitada**. Existen mecanismos limitados de financiación. |
-| Compartir servicios de laboratorio es más fácil y transparente gracias a la tecnología [Web3](/glossary/#web3). | Compartir recursos de laboratorio suele ser a menudo **lento y poco transparente**. |
-| Se pueden desarrollar **nuevos modelos de publicación** que utilicen primitivos de Web3 para la confianza, la transparencia y el acceso universal. | Se publica a través de vías establecidas frecuentemente reconocidas como **ineficaces, sesgadas y explotadoras**. |
-| Se puede **ganar tokens y reputación por revisar trabajos de otros**. | El **trabajo de revisión por pares no es remunerado**, lo que beneficia a editores que tienen fines de lucro. |
-| **Usted es dueño de la propiedad intelectual (PI)** que genera y la distribuye según términos transparentes. | ** La institución a la que pertenece es dueña de la propiedad intelectual (PI)** que genera. El acceso a la propiedad intelectual no es transparente. |
-| **Se comparte toda la investigación**, incluyendo los datos de los esfuerzos no exitosos, al tener todos los pasos en la cadena de bloques. | **El sesgo de publicación** implica que los investigadores tienen más probabilidad de compartir experimentos que tuvieron resultados exitosos. |
+| **Ciencia descentralizada** | **Ciencia tradicional** |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| La **distribución de fondos la determina el público** usando mecanismos como donaciones cuadráticas o DAOs. | Pequeños y cerrados **grupos centralizados** controlan la distribución de fondos. |
+| Colabora con colegas de **todo el mundo** en equipos dinámicos. | Las organizaciones financiadoras y las instituciones de origen **limitan** sus colaboraciones. |
+| Las decisiones de financiación se toman en línea y de forma **transparente**. Se exploran nuevos mecanismos de financiación. | Las decisiones de financiación se toman con mucho tiempo de espera y **transparencia limitada**. Existen mecanismos limitados de financiación. |
+| El uso de la tecnología [Web3](/glossary/#web3) facilita y hace más transparente el compartir servicios de laboratorio. | El intercambio de recursos de laboratorio suele ser **lento y opaco**. |
+| Se pueden desarrollar **nuevos modelos de publicación** que utilicen elementos básicos de Web3 para la confianza, la transparencia y el acceso universal. | Publica a través de vías ya establecidas que con frecuencia se reconocen como **ineficientes, sesgadas y explotadoras**. |
+| Puede **ganar tokens y reputación por revisar trabajos de pares**. | Su **trabajo de revisión por pares no es remunerado** y beneficia a editoriales con fines de lucro. |
+| **Es propietario de la propiedad intelectual (IP)** que genera y la distribuye bajo términos transparentes. | **Su institución de origen es propietaria de la IP** que genera. El acceso a la propiedad intelectual no es transparente. |
+| **Comparte toda la investigación**, incluidos los datos de intentos no exitosos, al tener todos los pasos en la cadena. | El **sesgo de publicación** significa que los investigadores tienden a compartir más los experimentos con resultados exitosos. |
## Ethereum y DeSci {#ethereum-and-desci}
@@ -49,9 +49,9 @@ La DeSci está desarrollando el conjunto de herramientas científicas para incor
### Publicación {#publishing}
-La publicación científica es problemática porque se gestiona mediante la publicación de editoriales que emplean la labor sin ánimo de lucro de científicos, correctores y editores para generar las publicaciones por las que después cobran honorarios de publicación exorbitantes. El público, que generalmente ha pagado indirectamente por el trabajo y los costes de publicación a través de sus impuestos, a menudo no puede acceder a ese mismo trabajo sin pagar de nuevo al editor. Las tarifas totales por publicar artículos científicos individuales suelen ser a menudo de cinco cifras ($USD), lo que compromete el concepto de conocimiento científico como un [bien público](/glossary/#public-goods) mientras genera enormes ganancias para un pequeño grupo de editores.
+La publicación científica es problemática porque se gestiona mediante la publicación de editoriales que emplean la labor sin ánimo de lucro de científicos, correctores y editores para generar las publicaciones por las que después cobran honorarios de publicación exorbitantes. El público, que generalmente ha pagado indirectamente por el trabajo y los costes de publicación a través de sus impuestos, a menudo no puede acceder a ese mismo trabajo sin pagar de nuevo al editor. Las tarifas totales por publicar artículos científicos individuales suelen alcanzar cinco cifras ($USD), lo que socava todo el concepto del conocimiento científico como un [bien público](/glossary/#public-goods) y genera enormes beneficios para un pequeño grupo de editores.
-Existen plataformas gratuitas y de acceso abierto en forma de servidores de pre-impresión, [como ArXiv](https://arxiv.org/). Sin embargo, estas plataformas carecen de control de calidad, [mecanismos anti-Sybil](/glossary/#anti-sybil)y generalmente no rastrean métricas relacionadas con el artículo, lo que significa que generalmente solo se utilizan para dar a conocer el trabajo antes de entregarlo a un editor tradicional. SciHub también hace que los documentos publicados sean de acceso gratuito, pero no legalmente, y sólo después de que los editores ya hayan realizado su pago y protegido el trabajo en estricta legislación sobre derechos de autor. Esto deja una brecha crítica para los documentos científicos y los datos accesibles con un mecanismo de legitimidad integrado y un modelo de incentivos. Las herramientas para construir un sistema de este tipo existen en Web3.
+Existen plataformas gratuitas de acceso abierto en forma de servidores de preimpresión, [como ArXiv](https://arxiv.org/). Sin embargo, estas plataformas carecen de control de calidad, [mecanismos anti-sybil](/glossary/#anti-sybil) y, en general, no realizan un seguimiento de métricas a nivel de artículo, lo que implica que normalmente solo se usan para dar a conocer trabajos antes de enviarlos a un editor tradicional. SciHub también hace que los documentos publicados sean de acceso gratuito, pero no legalmente, y sólo después de que los editores ya hayan realizado su pago y protegido el trabajo en estricta legislación sobre derechos de autor. Esto deja una brecha crítica para los documentos científicos y los datos accesibles con un mecanismo de legitimidad integrado y un modelo de incentivos. Las herramientas para construir un sistema de este tipo existen en Web3.
### Reproducibilidad y replicabilidad {#reproducibility-and-replicability}
@@ -60,78 +60,80 @@ La reproducibilidad y la replicabilidad son los fundamentos de un descubrimiento
- Un mismo equipo puede alcanzar los resultados reproducibles varias veces seguidas utilizando la misma metodología.
- Un grupo diferente puede alcanzar los resultados replicables usando la misma configuración experimental.
-Las nuevas herramientas nativas de Web3 pueden asegurar que la reproducibilidad y la replicabilidad sean la base del descubrimiento. Podemos aportar ciencia de calidad al tejido tecnológico de la academia. Web3 ofrece la posibilidad de crear [pruebas](/glossary/#attestation) para cada componente del análisis: los datos brutos, el motor de cálculo y el resultado de la aplicación. La belleza de los sistemas de consenso es que cuando se crea una red de confianza para mantener estos componentes, cada participante de la red puede ser responsable de reproducir el cálculo y validar cada resultado.
+Las nuevas herramientas nativas de Web3 pueden asegurar que la reproducibilidad y la replicabilidad sean la base del descubrimiento. Podemos aportar ciencia de calidad al tejido tecnológico de la academia. Web3 ofrece la capacidad de crear [atestaciones](/glossary/#attestation) para cada componente de un análisis: los datos en bruto, el motor computacional y el resultado de la aplicación. La belleza de los sistemas de consenso es que cuando se crea una red de confianza para mantener estos componentes, cada participante de la red puede ser responsable de reproducir el cálculo y validar cada resultado.
-### Financiación {#funding}
+### Financiamiento {#funding}
-El modelo estándar actual para la financiación de la ciencia es que los individuos o grupos de científicos presenten solicitudes por escrito a una agencia de financiación. Un pequeño panel de personas de confianza anota las solicitudes y luego entrevista a los candidatos antes de otorgar fondos a una pequeña parte de los solicitantes. Además de crear cuellos de botella que provocan a veces **años de espera** entre la solicitud y la recepción de una subvención, se sabe que este modelo es muy **vulnerable a los sesgos, los intereses propios y la política** del panel de revisión.
+El modelo estándar actual para la financiación de la ciencia es que los individuos o grupos de científicos presenten solicitudes por escrito a una agencia de financiación. Un pequeño panel de personas de confianza anota las solicitudes y luego entrevista a los candidatos antes de otorgar fondos a una pequeña parte de los solicitantes. Además de crear cuellos de botella que llevan a esperar en ocasiones **años** entre la solicitud y la recepción de una subvención, este modelo es conocido por ser altamente **vulnerable a los sesgos, intereses personales y política** del comité evaluador.
Los estudios han demostrado que los paneles de revisión de subvenciones hacen un mal trabajo al seleccionar propuestas de alta calidad, ya que las mismas propuestas entregadas a diferentes paneles tienen resultados muy diferentes. A medida que la financiación se ha vuelto más escasa, se ha concentrado en un grupo más pequeño de investigadores más experimentados con proyectos intelectualmente más conservadores. El efecto ha creado un panorama de financiación altamente competitivo, enquistando incentivos perversos y ahogando la innovación.
-Web3 tiene el potencial de interrumpir este modelo de financiación roto al experimentar con diferentes modelos de incentivos desarrollados por DAO y Web3 en general. [Financiación retroactiva de bienes públicos](https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c), [financiamiento cuadrático](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531), [Gobernanza DAO](https://www.antler.co/blog/daos-and-web3-governance-the-promise-implications-and-challenges-ahead) y [estructuras de incentivos tokenizados](https://cdixon.org/2017/05/27/crypto-tokens-a-breakthrough-in-open-network-design) son algunas de las herramientas de Web3 que podrían revolucionar la financiación científica.
+Web3 tiene el potencial de interrumpir este modelo de financiación roto al experimentar con diferentes modelos de incentivos desarrollados por DAO y Web3 en general. El [financiamiento retroactivo para bienes públicos](https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c), el [financiamiento cuadrático](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531), la [gobernanza DAO](https://www.antler.co/blog/daos-and-web3-governance-the-promise-implications-and-challenges-ahead) y las [estructuras de incentivos tokenizados](https://cdixon.org/2017/05/27/crypto-tokens-a-breakthrough-in-open-network-design) son algunas de las herramientas Web3 que podrían revolucionar la financiación científica.
-### Tenencia y desarrollo de la propiedad intelectual {#ip-ownership}
+### Propiedad intelectual y desarrollo {#ip-ownership}
-La propiedad intelectual (PI) es un gran problema en la ciencia tradicional: desde estar atrapada en universidades o biotecnologías sin uso, hasta ser notoriamente difícil de valorar. Sin embargo, la propiedad de activos digitales (como los datos o los artículos científicos) es algo que Web3 hace excepcionalmente bien usando [tokens no fungibles (NFT)](/glossary/#nft).
+La propiedad intelectual (PI) es un gran problema en la ciencia tradicional: desde estar atrapada en universidades o biotecnologías sin uso, hasta ser notoriamente difícil de valorar. Sin embargo, la propiedad de activos digitales (como datos científicos o artículos) es algo que Web3 maneja excepcionalmente bien usando [tokens no fungibles (NFTs)](/glossary/#nft).
De la misma manera que los NFT pueden transferir ingresos de vuelta al creador original, puede establecer cadenas transparentes de atribución de valor para recompensar a investigadores, organismos gubernamentales (como DAO), o incluso a los sujetos cuyos datos se recolectan.
-Los [IP-NFT](https://medium.com/molecule-blog/ip-nfts-for-researchers-a-new-biomedical-funding-paradigm-91312d8d92e6) también pueden servir como una llave para acceder a un repositorio descentralizado de datos de experimentos de investigación y conectarse con la financiación de NFT y [DeFi](/glossary/#defi) (desde el fraccionamiento hasta los pools de préstamos y la valoración). También permite a entidades nativas en cadena como las DAO similares a [VitaDAO](https://www.vitadao.com/) realizar investigaciones directamente en cadena. La llegada de los tokens [ "AlmaDestinados" no transferibles](https://vitalik.eth.limo/general/2022/01/26/soulbound.html) también puede desempeñar un papel importante en DeSci al permitir a las personas demostrar su experiencia y credenciales vinculadas a su dirección de Ethereum.
+Los [IP-NFTs](https://medium.com/molecule-blog/ip-nfts-for-researchers-a-new-biomedical-funding-paradigm-91312d8d92e6) también pueden funcionar como llave para un repositorio de datos descentralizado de experimentos de investigación en curso, y conectarse con la financiarización NFT y [DeFi](/glossary/#defi) (desde la fraccionalización hasta fondos de préstamos y valoración). Esto también permite que entidades nativamente en cadena como DAOs como [VitaDAO](https://www.vitadao.com/) lleven a cabo investigaciones directamente en la blockchain.
+La llegada de tokens no transferibles ["soulbound"](https://vitalik.eth.limo/general/2022/01/26/soulbound.html) también puede desempeñar un papel importante en DeSci al permitir que las personas demuestren su experiencia y credenciales vinculadas a su dirección de Ethereum.
-### Almacenamiento de datos, acceso y arquitectura {#data-storage}
+### Almacenamiento, acceso y arquitectura de datos {#data-storage}
Los datos científicos pueden ser mucho más accesibles usando patrones Web3, y el almacenamiento distribuido permite que la investigación sobreviva a eventos cataclísmicos.
-El punto de partida debe ser un sistema accesible por cualquier identidad descentralizada que posea las credenciales verificables adecuadas. Esto permite que partes de confianza repliquen los datos sensibles de forma segura, sumando mayor resistencia a la redundancia y a la censura, una reproducción de resultados, e incluso la posibilidad de que múltiples partes colaboren y añadan nuevos datos al conjunto de datos. Métodos de computación confidenciales como [computo-a-datos](https://7wdata.be/predictive-analytics/compute-to-data-using-blockchain-to-decentralize-data-science-and-ai-with-the-ocean-protocol) proporcionan mecanismos alternativos de acceso para replicación de datos sin procesar, creando "entornos de investigación de confianza" para los datos más sensibles. [La NHS](https://medium.com/weavechain/whats-in-store-for-the-future-of-healthcare-data-b6398745fbbb) considera a los "entornos de investigación de confianza" como una solución de cara al futuro para la privacidad de datos y la colaboración mediante la creación de un ecosistema donde los investigadores pueden trabajar de forma segura con datos in situ utilizando entornos estandarizados para compartir código y prácticas.
+El punto de partida debe ser un sistema accesible por cualquier identidad descentralizada que posea las credenciales verificables adecuadas. Esto permite que partes de confianza repliquen los datos sensibles de forma segura, sumando mayor resistencia a la redundancia y a la censura, una reproducción de resultados, e incluso la posibilidad de que múltiples partes colaboren y añadan nuevos datos al conjunto de datos. Métodos de computación confidencial como [compute-to-data](https://7wdata.be/predictive-analytics/compute-to-data-using-blockchain-to-decentralize-data-science-and-ai-with-the-ocean-protocol) proporcionan mecanismos alternativos de acceso en lugar de la replicación de datos en bruto, creando Entornos de Investigación Confiables para los datos más sensibles. Los Entornos de Investigación Confiables han sido [citados por el NHS](https://medium.com/weavechain/whats-in-store-for-the-future-of-healthcare-data-b6398745fbbb) como una solución orientada al futuro en privacidad de datos y colaboración, al crear un ecosistema en el que los investigadores pueden trabajar de forma segura con los datos in situ usando entornos estandarizados para compartir código y prácticas.
Las soluciones de datos de Web3 flexibles soportan los escenarios anteriores y proporcionan la base para una ciencia verdaderamente abierta, donde los investigadores pueden crear bienes públicos sin permisos de acceso o tasas. Las soluciones de datos públicos Web3 como IPFS, Arweave y Filecoin están optimizadas para la descentralización. dClimate, por ejemplo, proporciona acceso universal a los datos climáticos y meteorológicos, incluso de estaciones meteorológicas y modelos climáticos predecibles.
-## Participar {#get-involved}
+## Cómo participar {#get-involved}
Explore proyectos y únase a la comunidad DeSci.
-- [DeSci.Global: calendario global de eventos y encuentros](https://desci.global)
-- [Cadena de bloques para Science Telegram](https://t.me/BlockchainForScience)
-- [Molecule: financie y reciba fondos para sus proyectos de investigación](https://www.molecule.xyz/)
-- [VitaDAO: recibe financiación a través de acuerdos de investigación patrocinados para la investigación de la longevidad](https://www.vitadao.com/)
-- [ResearchHub: publique un resultado científico y participe en conversaciones con pares](https://www.researchhub.com/)
-- [dClimate API: consulta datos climáticos recopilados por una comunidad descentralizada](https://www.dclimate.net/)
-- [DeSci Foundation: creador de herramientas de publicación DeSci](https://descifoundation.org/)
-- [DeSci.World: ventanilla única para que los usuarios vean e interactúen con la ciencia descentralizada](https://desci.world)
-- [OceanDAO: financiación regida por una DAO para la ciencia relacionada con datos](https://oceanprotocol.com/)
-- [Opscientia: flujos de trabajo científicos descentralizados y abiertos](https://opsci.io/research/)
-- [Bio.xyz: consiga financiación para su DAO biotecnológico o su proyecto científico descentralizado](https://www.bio.xyz/)
-- [Protocolo Fleming: economía de datos de código abierto que fomenta el descubrimiento biomédico colaborativo](http://flemingprotocol.io/)
+- [DeSci.Global: calendario global de eventos y reuniones](https://desci.global)
+- [Blockchain for Science Telegram](https://t.me/BlockchainForScience)
+- [Molecule: financia y recibe financiación para tus proyectos de investigación](https://www.molecule.xyz/)
+- [VitaDAO: recibe financiamiento a través de acuerdos de investigación patrocinados para investigación en longevidad](https://www.vitadao.com/)
+- [ResearchHub: publica un resultado científico y dialoga con colegas](https://www.researchhub.com/)
+- [dClimate API: consulta datos climáticos recogidos por una comunidad descentralizada](https://www.dclimate.net/)
+- [DeSci Foundation: creador de herramientas para publicación en DeSci](https://descifoundation.org/)
+- [DeSci.World: plataforma integral para ver y participar en ciencia descentralizada](https://desci.world)
+- [OceanDAO: financiación para ciencia de datos gestionada por DAO](https://oceanprotocol.com/)
+- [Opscientia: flujos de trabajo abiertos de ciencia descentralizada](https://opsci.io/research/)
+- [Bio.xyz: recibe financiación para tu DAO de biotecnología o proyecto DeSci](https://www.bio.xyz/)
+- [Fleming Protocol: economía de datos de código abierto que impulsa el descubrimiento biomédico colaborativo](http://flemingprotocol.io/)
- [Active Inference Institute](https://www.activeinference.org/)
-- [IdeaMarkets: permite la credibilidad científica descentralizada](https://ideamarket.io/)
+- [IdeaMarkets: permitiendo la credibilidad científica descentralizada](https://ideamarket.io/)
- [DeSci Labs](https://www.desci.com/)
-- [ValleyDAO: una comunidad abierta y global que ofrece financiación y apoyo traslacional para la investigación de la biología sintética](https://www.valleydao.bio)
-- [Cerebrum DAO: soluciones de abastecimiento y nutrición para mejorar la salud cerebral y prevenir la neurodegeneración](https://www.cerebrumdao.com/)
-- [CryoDAO: financiación de investigaciones de alto potencial en el campo de la criopreservación](https://www.cryodao.org)
-
-Estamos abiertos a recibir sugerencias sobre nuevos proyectos por incluir, por favor, ¡consulte nuestra [política de inclusión](/contributing/adding-desci-projects/) para empezar!
-
-## Para mayor información {#further-reading}
-
-- [DeSci Wiki por Jocelynn Pearl y Ultrarare](https://docs.google.com/document/d/1aQC6zn-eXflSmpts0XGE7CawbUEHwnL6o-OFXO52PTc/edit#)
-- [Una guía para descentralizar la biotecnología de Jocelynn Pearl para el futuro de 16z](https://future.a16z.com/a-guide-to-decentralized-biotech/)
-- [La oportunidad para la DeSci](https://gitcoin.co/blog/desci-the-case-for-decentralised-science/)
-- [Guía de DeSci](https://future.com/what-is-decentralized-science-aka-desci/)
-- [Recursos de ciencia descentralizados](https://www.vincentweisser.com/desci)
-- [Los IP-NFT de la molécula Biopharma: una descripción técnica](https://www.molecule.xyz/blog/molecules-biopharma-ip-nfts-a-technical-description)
-- [Construyendo sistemas sin confianza de la ciencia por Jon Starr](https://medium.com/@jringo/building-systems-of-trustless-science-1cd2d072f673)
-- [Paul Kohlhaas - DeSci: El futuro de la ciencia descentralizada (pódcast)](https://anchor.fm/andrew-steinwold/episodes/Paul-Kohlhaas---DeSci-The-Future-of-Decentralized-Science---Zima-Red-ep-117-e1h683a)
-- [Una ontología de la inferencia activa para la ciencia descentralizada: de la obtención del sentido en contexto a las comunidades epistémicas](https://zenodo.org/record/6320575)
+- [ValleyDAO: una comunidad abierta y global que ofrece financiamiento y apoyo traslacional para investigación en biología sintética](https://www.valleydao.bio)
+- [Cerebrum DAO: identifica y fomenta soluciones para mejorar la salud cerebral y prevenir la neurodegeneración](https://www.cerebrumdao.com/)
+- [CryoDAO: financia investigación revolucionaria en criopreservación](https://www.cryodao.org)
+- [Elata: participe en el futuro de la medicina psiquiátrica](https://www.elata.bio/)
+
+¡Agradecemos sugerencias de nuevos proyectos para listar! Consulta nuestra [política de listado](/contributing/adding-desci-projects/) para comenzar.
+
+## Lecturas adicionales {#further-reading}
+
+- [DeSci Wiki de Jocelynn Pearl y Ultrarare](https://docs.google.com/document/d/1aQC6zn-eXflSmpts0XGE7CawbUEHwnL6o-OFXO52PTc/edit#)
+- [Guía sobre biotecnología descentralizada de Jocelynn Pearl para a16z future](https://future.a16z.com/a-guide-to-decentralized-biotech/)
+- [El caso de DeSci](https://gitcoin.co/blog/desci-the-case-for-decentralised-science/)
+- [Guía sobre DeSci](https://future.com/what-is-decentralized-science-aka-desci/)
+- [Recursos de ciencia descentralizada](https://www.vincentweisser.com/desci)
+- [IP-NFTs de Molecule para biopharma - Descripción técnica](https://www.molecule.xyz/blog/molecules-biopharma-ip-nfts-a-technical-description)
+- [Construyendo Sistemas sin Confianza para la Ciencia por Jon Starr](https://medium.com/@jringo/building-systems-of-trustless-science-1cd2d072f673)
+- [Paul Kohlhaas - DeSci: El Futuro de la Ciencia Descentralizada (podcast)](https://anchor.fm/andrew-steinwold/episodes/Paul-Kohlhaas---DeSci-The-Future-of-Decentralized-Science---Zima-Red-ep-117-e1h683a)
+- [Una ontología de inferencia activa para DeSci: Del sentido situado al bien epistemológico común](https://zenodo.org/record/6320575)
- [DeSci: El futuro de la investigación por Samuel Akinosho](https://lucidsamuel.medium.com/desci-the-future-of-research-b76cfc88c8ec)
-- [La fundación científica (epílogo: DeSci y las nuevas primitivas cripto) por Nadia](https://nadia.xyz/science-funding)
-- [La descentralización está provocando una disrupción en el desarrollo de fármacos](https://medium.com/id-theory/decentralisation-is-disrupting-drug-development-28b5ba5d447f)
-- [¿Qué es DeSci: Ciencia Descentralizada?](https://usadailytimes.com/2022/09/12/what-is-desci-decentralized-science/)
+- [Financiación científica (Epílogo: DeSci y nuevos primitivos criptográficos) por Nadia](https://nadia.xyz/science-funding)
+- [La descentralización está revolucionando el desarrollo farmacéutico](https://medium.com/id-theory/decentralisation-is-disrupting-drug-development-28b5ba5d447f)
+- [¿Qué es DeSci – Ciencia Descentralizada?](https://usadailytimes.com/2022/09/12/what-is-desci-decentralized-science/)
### Videos {#videos}
-- [¿Qué es la ciencia descentralizada?](https://www.youtube.com/watch?v=-DeMklVWNdA)
-- [Conversación entre Vitalik Buterin y el científico Aubrey de Grey sobre la intersección de la investigación de la longevidad y las criptomonedas](https://www.youtube.com/watch?v=x9TSJK1widA)
-- [La publicación científica está interrumpida. ¿Puede Web3 darle continuidad?](https://www.youtube.com/watch?v=WkvzYgCvWj8)
-- [Juan Benet, DeSci, Laboratorios Independientes, & Ciencias de datos de gran escala](https://www.youtube.com/watch?v=zkXM9H90g_E)
-- [Brunemeier: Cómo la ciencia descentralizada puede transformar la investigación biomédica y el capital de riesgo](https://www.youtube.com/watch?v=qB4Tc3FcVbM)
-- [Paige Donner: Herramientas de Ciencia Abierta conWeb3 & La cadena de bloques](https://www.youtube.com/watch?v=nC-2QWQ-lgw&t=17s)
+- [¿Qué es la Ciencia Descentralizada?](https://www.youtube.com/watch?v=-DeMklVWNdA)
+- [Conversación entre Vitalik Buterin y el científico Aubrey de Grey sobre la intersección entre investigación en longevidad y cripto](https://www.youtube.com/watch?v=x9TSJK1widA)
+- [La publicación científica está interrumpida. ¿Puede Web3 arreglarlo?](https://www.youtube.com/watch?v=WkvzYgCvWj8)
+- [Juan Benet - DeSci, laboratorios independientes y ciencia de datos a gran escala](https://www.youtube.com/watch?v=zkXM9H90g_E)
+- [Sebastian Brunemeier - Cómo DeSci puede transformar la investigación biomédica y el capital de riesgo](https://www.youtube.com/watch?v=qB4Tc3FcVbM)
+- [Paige Donner - Herramientas para ciencia abierta con Web3 y blockchain](https://www.youtube.com/watch?v=nC-2QWQ-lgw&t=17s)
From 12ef4e8f44d0cdf10fc7a7f561f72d3f0cede010 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:05 -0300
Subject: [PATCH 056/589] update(i18n):
public/content/translations/es/real-world-assets/index.md
---
.../es/real-world-assets/index.md | 95 +++++++++++++++++++
1 file changed, 95 insertions(+)
create mode 100644 public/content/translations/es/real-world-assets/index.md
diff --git a/public/content/translations/es/real-world-assets/index.md b/public/content/translations/es/real-world-assets/index.md
new file mode 100644
index 00000000000..28b548b3061
--- /dev/null
+++ b/public/content/translations/es/real-world-assets/index.md
@@ -0,0 +1,95 @@
+---
+title: Activos del mundo real (RWA)
+metaTitle: ¿Qué son los activos del mundo real (RWA)? | Beneficios y uso de activos del mundo real
+description: Visión general de los activos del mundo real en Ethereum
+lang: es
+template: use-cases
+emoji: ":house_buildings:"
+image: /images/man-and-dog-playing.png
+alt: Hombre y perro jugando.
+sidebarDepth: 2
+summaryPoint1: Un método para convertir valiosos productos básicos en tókenes digitales.
+summaryPoint2: Ahora puede poseer partes de activos u objetos de la vida real, en vez de tener que comprar una propiedad o un objeto en su totalidad.
+summaryPoint3: Conecta las finanzas tradicionales con el ecosistema de la cadena de bloques.
+---
+
+Los activos del mundo real (RWA) son tókenes que representan formas existentes de riqueza, como bienes inmuebles, oro, acciones, arte, maquinarias o coleccionables. La tokenización de estos objetos los transforma en digitales, lo que permite dividirlos entre varios propietarios y facilita su comercialización.
+
+## ¿Qué son los activos del mundo real (RWA)? {#what-are-rwas}
+
+Algunos RWAs son tangibles, es decir, son objetos que se pueden ver y tocar, como lingotes de oro o edificios empresariales. Otros son intangibles, como la deuda pública, la propiedad intelectual o el capital de una empresa.
+
+Al ser tokenizados, estos activos se convierten en unidades de valor. El oro tokenizado es un buen ejemplo de cómo esto funciona. La empresa [Paxos](https://www.paxos.com/) convierte lingotes de oro de 400 onzas en 400 tókenes en la red de bloques Ethereum, cada uno de ellos respaldado por una onza de oro. Los titulares de tókenes pueden canjearlos por oro en cualquier momento. Esto también se aplica a los tókenes adquiridos de otra empresa de activos del mundo real, [Tether Gold](https://gold.tether.to/).
+
+Cada token puede dividirse en fracciones aún más pequeñas. Por ejemplo, los tókenes de Tether Gold pueden fraccionarse en partes tan pequeñas como 0,000001.
+
+Los tókenes RWA no tienen un valor intrínseco. Por el contrario, reflejan el valor del objeto que representan, por eso el valor del token fluctúa en función del valor del objeto.
+
+## ¿Qué beneficios presentan los RWA? {#rwas-benefits}
+
+
+
+
+
+
+
+
+
+
+## ¿Cómo funcionan los RWAs? {#how-rwas-work}
+
+Observemos algunos ejemplos en todo el ecosistema de los activos del mundo real: el sector inmobiliario, los productos financieros tradicionales y las bellas artes.
+
+### Invertir en el sector inmobiliario {#investing-in-real-estate}
+
+Imaginemos que le gustaría invertir en bienes inmuebles, pero la compra de una propiedad entera está fuera de su alcance. En su lugar, podría comprar RWAs a través de un proyecto como [RealT](https://realt.co/). Sus tókenes representan acciones en una sociedad de responsabilidad limitada (SRL) creada para custodiar los títulos de una propiedad. Los titulares de tókenes reciben ingresos por alquiler en forma de monedas estables de acuerdo con la fracción que poseen; RealT afirma que, hasta ahora, ha devuelto 15 millones de $ en ingresos netos por alquiler a los inversionistas.
+
+Otro proyecto similar, [LABS Group](https://x.com/labsgroupio), permite a las personas comprar bienes inmuebles tokenizados por cuantías de tan solo 100 $.
+
+### Invertir en productos financieros {#investing-in-financial-products}
+
+Diversos proyectos unen el mundo de las finanzas tradicionales y las finanzas descentralizadas (DeFi) trasladando valores, acciones, bonos y otros instrumentos financieros a la cadena de bloques.
+
+Por ejemplo, la empresa basada en Ethereum [Securitize](https://securitize.io/) se especializa en tokenizar productos financieros tradicionales. En 2024, se asoció a BlackRock para lanzar un fondo de activos del mundo real. BlackRock asegura que planea tokenizar 10 billones de sus activos en dólares estadounidenses. Su CEO, Larry Fink, calificó la tokenización como «la próxima generación para los mercados».
+
+### Invertir en bellas artes {#investing-in-fine-art}
+
+Existe una pequeña variedad de mecanismos para invertir en bellas artes. [Masterworks](https://www.masterworks.com/) compra obras de arte, titulariza cada pieza y vende participaciones en forma de tókenes. Posteriormente, planea la venta de las obras de arte y la distribución de los beneficios entre los titulares de los tókenes.
+
+Los propietarios de obras de arte que buscan capitalizar su colección pueden vender hasta el 49 % del valor de una obra en la plataforma [Maecenas](https://www.maecenas.co/), siempre que esta esté valorada en más de 1 millón de $.
+
+En ambos casos, los titulares de los tókenes no controlan el almacenamiento ni la futura venta de las obras de arte. En su lugar, ellos deciden cuánto tiempo conservan sus tókenes, qué suben y qué bajan junto con el valor de la obra de arte.
+
+Por su parte, el registro digital de arte basado en la cadena de bloques [Artory](https://www.artory.com/) verifica la autenticidad de las obras y registra la titularidad anterior.
+
+### Invertir en objetos coleccionables {#investing-in-collectibles}
+
+Hasta ahora la mayoría de los ejemplos citados demuestran cómo la tokenización permite la propiedad parcial de diversos tipos de riqueza. Pero otra ventaja de la tokenización es que permite el comercio de objetos valiosos, como los objetos coleccionables, en el mercado mundial.
+
+Un ejemplo de lo anterior es [Courtyard](https://courtyard.io/), que convierte en tókenes las tarjetas coleccionables, ya sean de béisbol, fútbol o de Pokemon. Los dueños de las tarjetas las envían a un almacén seguro en Estados Unidos. Las tarjetas se acuñan como tókenes digitales y se añaden a las carteras de los dueños para intercambiarlas en el marketplace de Courtyard. Courtyard solo acepta tarjetas calificadas; es decir, cuando un tercero certifica la autenticidad de una tarjeta y le otorga una puntuación en función de su estado de conservación, ya esté tocado o sea impecable.
+
+Courtyard también ofrece una especie de sistema de regalías. Cada vez que una tarjeta se vende, la persona que la tokenizó recibe el 1 % de los ingresos. Únicamente los emisores de tarjetas reciben recompensa de esta forma. En cualquier momento, el dueño puede intercambiar sus tarjetas digitales por tarjetas físicas, sin importar en qué parte del mundo se encuentre.
+
+## ¿Qué limitaciones tienen los RWA? {#rwas-limitations}
+
+Uno de los retos de los activos del mundo real, en esta fase inicial, consiste en garantizar la conexión entre los objetos de la vida real y sus representaciones digitales.
+
+Una señal positiva se produce cuando los proyectos de RWA proporcionan a los inversionistas una prueba de reservas; o sea, la garantía de que son los propietarios jurídicos de los objetos físicos que respaldan los tókenes digitales. Piense en Paxos, Tether Gold o Courtyard, mencionados anteriormente. Todos ellos mantienen sus activos en un almacenamiento seguro y ofrecen a los propietarios la opción de intercambiar un token por su equivalente físico en cualquier momento.
+
+Otra limitación consiste en saber si los sistemas jurídicos de todo el mundo reconocen la propiedad de los tókenes. En otras palabras, ¿los contratos inteligentes son ejecutables ante un tribunal, o el titular de un token RWA puede reclamar la propiedad del objeto real?
+
+Algunos de los pioneros en términos de establecimiento de marcos legales específicamente para reconocer la tokenización son Singapur, Emiratos Árabes Unidos, Hong Kong y Suiza, países que en 2021 introdujeron una legislación apodada «Ley Blockchain» para regular tecnologías como la tokenización. La Unión Europea ha comenzado el proceso de regulación de los RWA, mientras que en Estados Unidos se espera que la Comisión de Bolsa y Valores (SEC) emita una orientación sobre los RWA en algún momento.
+
+## Más información {#learn-more}
+
+Conozca los [contratos inteligentes](/smart-contracts/) o infórmese sobre otro tipo de tókenes, los [tókenes no fungibles (NFT)](/nft/).
+
+## Lecturas adicionales {#further-reading}
+
+- [¿Qué es la tokenización de activos?](https://www.britannica.com/money/real-world-asset-tokenization) en Britannica
+- [Cómo la tokenización está transformando las finanzas e inversiones en el mundo](https://www.weforum.org/stories/2024/12/tokenization-blockchain-assets-finance/) en el Foro Económico Mundial
+- [Lo que los inversores en criptomoneda deben saber sobre la tokenización de activos del mundo real](https://www.forbes.com/sites/irinaheaver/2024/03/14/what-crypto-investors-need-to-know-about-tokenizing-real-world-assets/) en Forbes
+- [Cómo funcionan los contratos inteligentes con cadenas de bloques](https://www.britannica.com/money/how-smart-contracts-work) en Britannica
+- [Cómo los activos del mundo real tokenizados están transformando las DeFi](https://medium.com/coinmonks/how-tokenized-real-world-assets-are-transforming-defi-4e040f28732a) en Medium
+- [¿Qué son los RWA en criptografía? Su papel en la cadena de bloques explicado](https://www.bitdegree.org/crypto/tutorials/what-is-rwa-in-crypto) en BitDegree
+- Principales monedas de activos del mundo real (RWA) por capitalización bursátil en la actualidad](https://www.forbes.com/digital-assets/categories/real-world-assets-rwa/) en Forbes
From 4f8c147ffcaa88177a83aaf743b0734a7e8d8b56 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:07 -0300
Subject: [PATCH 057/589] update(i18n):
public/content/translations/es/gaming/index.md
---
.../content/translations/es/gaming/index.md | 70 +++++++++++++++++++
1 file changed, 70 insertions(+)
create mode 100644 public/content/translations/es/gaming/index.md
diff --git a/public/content/translations/es/gaming/index.md b/public/content/translations/es/gaming/index.md
new file mode 100644
index 00000000000..220835a601d
--- /dev/null
+++ b/public/content/translations/es/gaming/index.md
@@ -0,0 +1,70 @@
+---
+title: Juegos en cadena (Onchain Gaming)
+lang: es
+template: use-cases
+image: /images/robot-help-bar.png
+sidebarDepth: 2
+summaryPoint1: Las reglas y el estado del juego pueden ser aplicados por la blockchain, no por los servidores de un estudio.
+summaryPoint2: Cualquiera puede crear modificaciones, bots o juegos completamente nuevos que se integren en los mismos datos en cadena.
+summaryPoint3: Las L2 diseñadas específicamente, como Redstone, y frameworks como MUD, reducen los costos lo suficiente como para permitir la jugabilidad en tiempo real.
+buttons:
+ - content: Más información
+ toId: como-funciona-el-juego-en-ethereum
+ - content: Explorar las aplicaciones
+ toId: juegos-populares-creados-en-ethereum
+ isSecondary: false
+---
+
+## Cómo funciona el gaming en Ethereum {#how-gaming-on-ethereum-works}
+
+Los juegos en Ethereum adoptan varias formas, desde juegos que integran la blockchain para funciones específicas hasta aquellos en los que todo el mundo de juego existe en cadena. Muchos juegos utilizan Ethereum para gestionar los activos dentro del juego como NFTs (Tokens No Fungibles). Esto permite que los jugadores sean verdaderos dueños de artículos digitales únicos, que pueden ser intercambiados, vendidos o regalados libremente fuera del ecosistema de un único desarrollador. Aunque estos activos ofrecen nuevas formas de agencia para los jugadores, la lógica central del juego suele permanecer en servidores centralizados.
+
+Los juegos completamente en cadena son aquellos donde las mecánicas fundamentales, y a menudo todo el mundo del juego, están gobernados directamente por smart contracts en la blockchain de Ethereum (o sus Layer 2s). Esto asegura una transparencia sin precedentes. Sin servidores centrales, sin intermediarios, solo experiencias y economías transparentes dirigidas por los jugadores.
+
+- Los jugadores poseen sus activos como NFTs.
+- Los objetos pueden intercambiarse, regalarse o venderse libremente.
+- La blockchain garantiza que los activos permanezcan accesibles para siempre.
+
+## El estado actual del gaming {#the-current-state-of-gaming}
+
+- **Cierres frecuentes de juegos:** Sólo en 2023, [más de 60 juegos fueron cerrados](https://tech4gamers.com/game-studios-shut-down-2023/) y 11 estudios de videojuegos cerraron completamente, dejando a los jugadores sin nada que mostrar por su inversión dentro del juego. Los juegos en cadena, con su lógica y activos en una red descentralizada, pueden persistir mientras exista la blockchain, ofreciendo un mayor grado de permanencia.
+- **Frustración por activos bloqueados:** [El 51% de los jugadores se siente frustrado](https://www.starknet.io/blog/blockchain-gaming/) de no poder regalar o revender los objetos que compran en los juegos, y el 23% se irrita por la dificultad de recuperar dinero de las compras dentro del juego. Los jugadores invierten una cantidad significativa de tiempo y dinero para adquirir objetos dentro del juego, solo para descubrir que no son realmente dueños de ellos. El estándar NFT de Ethereum proporciona propiedad digital verificable, asegurando que los jugadores tengan control sobre sus activos.
+- **Gastos elevados sin retorno:** [Los jugadores gastan un promedio de \$6,425](https://www.starknet.io/blog/blockchain-gaming/) en objetos virtuales a lo largo de su vida, con \$8.74 al mes o \$104 al año. La propiedad en cadena transforma ese gasto de un coste hundido a una inversión en un activo digital que puede venderse, intercambiarse o regalarse, como sucede con los objetos de colección físicos.
+
+## Juegos populares creados en Ethereum {#popular-games-built-on-ethereum}
+
+Los desarrolladores están explorando nuevas formas de hacer los juegos más atractivos e ir más allá de simples mecánicas de recompensas, profundizando en la jugabilidad basada en habilidades.
+
+
+
+## Play-to-earn (P2E) {#play-to-earn-p2e}
+
+Con los juegos Play-to-Earn (P2E), puedes ganar activos dentro del juego con valor en el mundo real. A diferencia de los primeros modelos P2E que se basaban en recompensas insostenibles, los juegos más recientes se centran en el valor a largo plazo. Por ejemplo, [Wolf Game](https://gam3s.gg/wolf-game/) combina jugabilidad estratégica con la verdadera propiedad de activos digitales. Los jugadores gestionan ovejas y lobos virtuales, ganando la moneda del juego WOOL, que puede intercambiarse o venderse.
+
+
+
+## Interoperabilidad y juego entre cadenas {#interoperability-and-cross-chain-play}
+
+Una de las características más potentes de Ethereum para el gaming es su soporte nativo para interoperabilidad y composabilidad. Los juegos tradicionales operan en "jardines amurallados", bloqueando los activos y el progreso dentro de un solo título. Los activos dentro del juego, e incluso la lógica principal, construidos sobre Ethereum pueden interactuar potencialmente entre diferentes aplicaciones y cadenas, sin sacrificar la seguridad. Aunque este ecosistema aún está en desarrollo, algunas redes de juegos basadas en Ethereum ya permiten la interoperabilidad y que los objetos del juego (NFTs) se usen en múltiples juegos.
+
+Por ejemplo, en Illuvium, [los jugadores pueden coleccionar criaturas llamadas Illuvials](https://gam3s.gg/news/illuvium-three-web3-games/), que son NFTs. Estos Illuvials pueden usarse en varios juegos dentro del universo Illuvium. Un Illuvial capturado en Illuvium Overworld también puede usarse en Illuvium Arena para batallas.
+
+Otro ejemplo es Galaxy Fight Club. En este juego, [los jugadores pueden usar diferentes colecciones de NFT](https://gam3s.gg/galaxy-fight-club/) para participar en batallas, lo que significa que los NFTs de diversos proyectos pueden usarse dentro del juego.
+
+## Escalabilidad y mejoras en las tarifas de gas {#scalability-and-gas-fee-improvements}
+
+Una crítica habitual al gaming en cadena era que las blockchains son demasiado complejas y lentas para ofrecer a los jugadores la experiencia que esperan. Pero a medida que Ethereum ha madurado, han surgido soluciones para reducir significativamente los costos y mejorar el rendimiento del gaming en cadena, haciendo viables experiencias interactivas y de ritmo rápido.
+
+Estos avances se logran principalmente a través de:
+
+- **Transacciones sin gas:** Algunas plataformas y protocolos, incluidas aquellas que aprovechan Immutable X, ofrecen la capacidad de realizar transacciones como el intercambio o la creación (minting) de NFTs sin tarifas para el usuario, optimizando aún más la experiencia del jugador.
+- **Soluciones de escalabilidad:** Las L2 de Ethereum, como Arbitrum, zkSync y Starknet, fomentan activamente ecosistemas para juegos en cadena gracias a su alto rendimiento y bajo costo.
+- **[Ecosistema MUD](https://mud.dev/):** MUD optimiza los kits de herramientas de desarrollo de aplicaciones basadas en Ethereum para el desarrollo de juegos en cadena, proporcionando una gestión de estado más eficiente para lógicas de juego complejas.
+
+## Empezar con el gaming en Ethereum {#get-started-with-ethereum-gaming}
+
+Comenzar en el gaming de Ethereum es más fácil de lo que podría pensar. Con solo unos pasos, puede empezar a jugar y disfrutar de su progreso:
+
+1. **Configurar una wallet cripto:** Necesitará una wallet para gestionar sus activos digitales e interactuar con aplicaciones descentralizadas. [Elegir una wallet](/wallets/find-wallet/)
+2. **Financiar su wallet:** Adquiera algo de Ether (ETH) o los tokens relevantes para la red de Layer 2 que planea utilizar.
+3. **Explorar juegos:** Descubra juegos en plataformas como [Orden](https://orden.gg/), [ChainPlay](https://chainplay.gg/chain/ethereum/), [Gam3s.GG](https://gam3s.gg/), [DappRadar](https://dappradar.com/rankings/protocol/ethereum/category/games), [OpenSea](https://opensea.io/) y [PlayToEarn.net](https://playtoearn.com/blockchaingames).
From 22692ff8249f6df09be66a61bb014f8767d21382 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:09 -0300
Subject: [PATCH 058/589] update(i18n):
public/content/translations/es/bridges/index.md
---
.../content/translations/es/bridges/index.md | 75 ++++++++++---------
1 file changed, 39 insertions(+), 36 deletions(-)
diff --git a/public/content/translations/es/bridges/index.md b/public/content/translations/es/bridges/index.md
index bb2537f1a3c..7e51e975284 100644
--- a/public/content/translations/es/bridges/index.md
+++ b/public/content/translations/es/bridges/index.md
@@ -4,9 +4,9 @@ description: Los puentes permiten a los usuarios, mover sus fondos a través de
lang: es
---
-# Puentes en el blockchain {#prerequisites}
+# Puentes blockchain {#prerequisites}
-_La Web3 ha evolucionado a un ecosistema de cadenas de bloques L1 y soluciones de escalado L2, cada uno diseñado con capacidades y compensaciones particulares. A medida que el número de protocolos de cadena de bloques aumenta, también aumenta la demanda de mover activos a través de las cadenas. Para satisfacer esta demanda, necesitamos puentes (bridges)._
+_La Web3 ha evolucionado a un ecosistema de cadenas de bloques L1 y soluciones de escalado L2, cada uno diseñado con capacidades y compensaciones particulares. A medida que el número de protocolos de cadena de bloques aumenta, también aumenta la demanda de mover activos a través de las cadenas.Para satisfacer esta demanda, necesitamos puentes._
@@ -18,72 +18,72 @@ Veamos un ejemplo:
Usted es de los Estados Unidos y está planeando un viaje a Europa. Tiene dólares, pero necesita euros. Para cambiar sus dólares por euros, puede utilizar un cambio de divisa por una pequeña comisión.
-Pero, ¿qué puede hacer si quiere realizar un intercambio similar para usar una [cadena de bloques](/glossary/#blockchain) diferente? Digamos que usted quiere cambiar [ETH](/glossary/#ether) en la red principal de Ethereum por ETH en [Arbitrum](https://arbitrum.io/). Al igual que el cambio de divisas que hicimos para obtener euros, necesitamos un mecanismo para mover nuestro ETH de Ethereum a Arbitrum. Los puentes hacen posible tal transacción. En este caso, [Arbitrum tiene un puente nativo](https://bridge.arbitrum.io/) que puede transferir ETH de la Red principal a Arbitrum.
+Pero, ¿qué hacer si quiere hacer un intercambio similar para usar otra [blockchain](/glossary/#blockchain)? Supongamos que desea intercambiar [ETH](/glossary/#ether) en Ethereum Mainnet por ETH en [Arbitrum](https://arbitrum.io/). Al igual que el cambio de divisas que hicimos para obtener euros, necesitamos un mecanismo para mover nuestro ETH de Ethereum a Arbitrum. Los puentes hacen posible tal transacción. En este caso, [Arbitrum tiene un puente nativo](https://portal.arbitrum.io/bridge) que puede transferir ETH de Mainnet a Arbitrum.
## ¿Por qué necesitamos puentes? {#why-do-we-need-bridges}
-Todas las cadenas de bloques tienen sus limitaciones. Para que Ethereum escale y siga el ritmo de la demanda, ha requerido el uso de [rollups](/glossary/#rollups). Alternativamente, los L1 como Solana y Avalanche están diseñados de forma diferente para permitir una mayor velocidad en las transacciones, pero a costa de la descentralización.
+Todas las cadenas de bloques tienen sus limitaciones. Para que Ethereum escale y mantenga el ritmo de la demanda, ha requerido [rollups](/glossary/#rollups). Alternativamente, los L1 como Solana y Avalanche están diseñados de forma diferente para permitir una mayor velocidad en las transacciones, pero a costa de la descentralización.
-Sin embargo, todas las cadenas de bloques se desarrollan en un entorno aislado y tienen diferentes reglas y mecanismos de [consenso](/glossary/#consensus). Esto significa que no pueden comunicarse de forma nativa, y los tokens no pueden moverse libremente entre cadenas de bloques.
+Sin embargo, todas las blockchains se desarrollan en entornos aislados y cuentan con diferentes reglas y mecanismos de [consenso](/glossary/#consensus). Esto significa que no pueden comunicarse de forma nativa, y los tokens no pueden moverse libremente entre cadenas de bloques.
Los puentes existen para conectar cadenas de bloques, permitiendo la transferencia de información y tokens entre ellas.
**Los puentes permiten**:
- la transferencia de activos e información entre cadenas
-- que las [dapps](/glossary/#dapp) se beneficien de las fortalezas de varias cadenas de bloques, mejorando así sus capacidades (ya que los protocolos ahora tienen más espacio para la innovación)
+- [dapps](/glossary/#dapp) para acceder a las fortalezas de varias blockchains, mejorando así sus capacidades (ya que ahora los protocolos tienen más espacio de diseño para la innovación).
- el acceso a nuevas plataformas y el aprovechamiento de los beneficios de las diferentes cadenas
- que los desarrolladores de diferentes ecosistemas de cadenas de bloques colaboren y creen nuevas plataformas para los usuarios
-[Cómo pasar los tókenes a la capa 2](/guides/how-to-use-a-bridge/)
+[Cómo puentear tokens a layer 2](/guides/how-to-use-a-bridge/)
-## Casos de uso de los puentes {#bridge-use-cases}
+## Casos de uso de puentes {#bridge-use-cases}
Los siguientes son algunos escenarios donde puede usar un puente:
-### Menores comisiones por transacción {#transaction-fees}
+### Comisiones de transacción más bajas {#transaction-fees}
Digamos que tiene ETH en la Red principal de Ethereum y quiere comisiones de transacción más bajas para explorar diferentes DApps. Utilizando un puente para llevar su ETH de la Red principal de Ethereum a un roll-up L2 de Ethereum, podrá disfrutar de comisiones de transacción más bajas.
-### DApps en otras cadenas de bloques {#dapps-other-chains}
+### Dapps en otras blockchains {#dapps-other-chains}
-Si ha estado usando Aave en la Red principal de Ethereum para prestar USDT, pero la tasa de interés para prestarlos usando Aave en Polygon es más alta.
+Si ha estado utilizando Aave en la Red principal de Ethereum para suministrar USDT, pero la tasa de interés que puede recibir por suministrar USDT usando Aave en Polygon es mayor.
-### Explorar ecosistemas de cadenas de bloques {#explore-ecosystems}
+### Explorar ecosistemas blockchain {#explore-ecosystems}
Si tiene ETH en la Red principal de Ethereum y quiere explorar una alternativa L1 para probar sus DApps nativas, puede utilizar un puente para transferir su ETH de la Red principal de Ethereum a la L1 alternativa.
-### Tener activos crypto nativos {#own-native}
+### Poseer criptoactivos nativos {#own-native}
-Digamos que quiere tener Bitcoin (BTC), pero solo tiene fondos en la Red principal de Ethereum. Para obtener exposición a BTC en Ethereum, puede comprar Wrapped Bitcoin (WBTC). Sin embargo, WBTC es un token [ERC-20](/glossary/#erc-20) nativo de la red de Ethereum, lo que significa que es una versión de Ethereum de Bitcoin y no el activo original en la cadena de bloques de Bitcoin. Para tener BTC nativo, usted tendría que trasladar sus activos de Ethereum a Bitcoin usando un puente. Esto trasladará entre redes su WBTC y lo convertirá en BTC nativo. De forma alternativa, podría tener BTC y querer usarlo en protocolos [DeFi](/glossary/#defi) de Ethereum. Esto requeriría un puente pero al revés, desde el BTC hasta WBTC, que luego puede ser utilizado como un activo en Ethereum.
+Digamos que quiere tener Bitcoin (BTC), pero solo tiene fondos en la Red principal de Ethereum. Para obtener exposición a BTC en Ethereum, puede comprar Wrapped Bitcoin (WBTC). Sin embargo, WBTC es un token [ERC-20](/glossary/#erc-20) nativo de la red Ethereum, lo que significa que es una versión de Bitcoin para Ethereum y no el activo original en la blockchain de Bitcoin. Para tener BTC nativo, usted tendría que trasladar sus activos de Ethereum a Bitcoin usando un puente. Esto trasladará entre redes su WBTC y lo convertirá en BTC nativo. Alternativamente, podría poseer BTC y querer usarlo en protocolos de Ethereum [DeFi](/glossary/#defi). Esto requeriría un puente pero al revés, desde el BTC hasta WBTC, que luego puede ser utilizado como un activo en Ethereum.
- También puede hacer todo lo anterior usando un [exchange centralizado](/get-eth/). Sin embargo, a menos que sus fondos ya estén en un exchange, esto implicaría varios pasos y probablemente sería mejor usar un puente.
+ También puede hacer todo lo anterior usando una [plataforma de intercambio centralizada](/get-eth). Sin embargo, a menos que sus fondos ya estén en un exchange, esto implicaría varios pasos y probablemente sería mejor usar un puente.
-## Tipos de puente {#types-of-bridge}
+## Tipos de puentes {#types-of-bridge}
Los puentes tienen muchos tipos de diseños y complejidades. Generalmente encontramos dos categorías: puentes de confianza (trusted) y puentes sin confianza o que no la necesitan (trustless).
-| Puentes de confianza | Puentes sin confianza |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Los puentes de confianza dependen de una entidad o sistema central para sus operaciones. | Los puentes sin confianza operan usando contratos inteligentes y algoritmos. |
-| Se asume que son confiables con respecto a la custodia de los fondos y la seguridad del puente. Los usuarios confían mayormente en la reputación del operador del puente. | No es necesario que los usuarios confíen en ellos: la seguridad del puente es la misma que la de la cadena de bloques subyacente. |
-| Los usuarios deben renunciar al control de sus activos crypto. | A través de [contratos inteligentes](/glossary/#smart-contract), los puentes "sin confianza" permiten a los usuarios seguir en control de sus fondos. |
+| Puentes de confianza | Puentes sin confianza |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Los puentes de confianza dependen de una entidad o sistema central para sus operaciones. | Los puentes sin confianza operan usando contratos inteligentes y algoritmos. |
+| Se asume que son confiables con respecto a la custodia de los fondos y la seguridad del puente. Los usuarios confían mayormente en la reputación del operador del puente. | No es necesario que los usuarios confíen en ellos: la seguridad del puente es la misma que la de la cadena de bloques subyacente. |
+| Los usuarios deben renunciar al control de sus activos crypto. | A través de [smart contracts](/glossary/#smart-contract), los puentes sin confianza permiten a los usuarios mantener el control de sus fondos. |
En pocas palabras, podemos decir que los puentes de confianza tienen acuerdos basados en la confianza, o hay presunciones de confianza, mientras que los puentes que no precisan confianza minimizan esta cuestión y se apoyan en la confianza que aportan los automatismos y procesos preestablecidos en los dominios subyacentes. Así es como se pueden describir estos términos:
-- **Trustless (no precisan confianza)**: tener una seguridad equivalente a los dominios subyacentes. Como describe [Arjun Bhuptani en este artículo](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17).
-- **Presunciones de confianza:** alejarse de la seguridad de los dominios subyacentes agregando verificadores externos en el sistema, haciéndolo menos seguro desde el punto de vista criptoeconómico.
+- **Sin confianza**: ofrece una seguridad equivalente a la de los dominios subyacentes. Como lo describe [Arjun Bhuptani en este artículo.](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17)
+- **Supuestos de confianza:** alejarse de la seguridad de los dominios subyacentes al añadir verificadores externos al sistema, lo que lo hace menos seguro desde el punto de vista criptoeconómico.
Para desarrollar una mejor comprensión de las diferencias clave entre ambos enfoques, pongamos un ejemplo:
@@ -104,22 +104,22 @@ Muchas soluciones de puente adoptan modelos entre estos dos extremos con diferen
Usar puentes le permite mover sus activos a través de diferentes cadenas de bloques. He aquí algunos recursos que le pueden ayudar a encontrar y usar puentes:
-- **[Resumen de los puentes L2BEAT ](https://l2beat.com/bridges/summary) & [Análisis de riesgo de puentes L2BEAT](https://l2beat.com/bridges/summary)**: Un resumen que comprende varios puentes, incluyendo detalles sobre la cuota de mercado, el tipo de puente y las cadenas de destino. L2BEAT también tiene análisis de riesgo de puentes, ayudando a los usuarios a tomar decisiones informadas a lo largo del proceso de elección de un puente.
-- **[Resumen de los puentes DefiLlama](https://defillama.com/bridges/Ethereum)**: Un resumen de los volúmenes de puentes a lo largo de la red de Ethereum.
+- **[L2BEAT Bridges Summary](https://l2beat.com/bridges/summary) & [L2BEAT Bridges Risk Analysis](https://l2beat.com/bridges/summary)**: Un resumen completo de varios puentes, incluyendo detalles sobre cuota de mercado, tipo de puente y cadenas de destino. L2BEAT también tiene análisis de riesgo de puentes, ayudando a los usuarios a tomar decisiones informadas a lo largo del proceso de elección de un puente.
+- **[DefiLlama Bridge Summary](https://defillama.com/bridges/Ethereum)**: Un resumen de los volúmenes de puentes a través de las redes de Ethereum.
-## Riesgo al utilizar puentes {#bridge-risk}
+## Riesgos de usar puentes {#bridge-risk}
Los puentes se encuentran en las primeras etapas de desarrollo. Es probable que todavía no se haya descubierto el diseño óptimo de estos. Interactuar con cualquier tipo de puente conlleva riesgos:
-- **Riesgo del contrato inteligente:** el riesgo de un error o bug en el código que pueda causar la pérdida de fondos del usuario.
-- **Riesgo de tecnología:** falla de software, código con errores, error humano, spam y ataques maliciosos pueden afectar las operaciones del usuario.
+- **Riesgo de smart contract —** el riesgo de que un error en el código pueda causar la pérdida de fondos de los usuarios
+- **Riesgo tecnológico —** fallos de software, código con errores, errores humanos, spam y ataques maliciosos pueden interrumpir las operaciones de los usuarios
Además, dado que los puentes de confianza añaden presunciones de confianza, conllevan riesgos adicionales como:
-- **Riesgo de censura: **los operadores del puente pueden impedir teóricamente que los usuarios transfieran sus activos usando el puente.
-- **Riesgo de custodia:** los operadores del puente pueden ponerse de acuerdo para robar los fondos de los usuarios.
+- **Riesgo de censura —** los operadores del puente pueden, en teoría, impedir que los usuarios transfieran sus activos usando el puente
+- **Riesgo de custodia —** los operadores del puente pueden coludirse para robar los fondos de los usuarios
Los fondos del usuario están en riesgo cuando:
@@ -129,14 +129,17 @@ Los fondos del usuario están en riesgo cuando:
- los operadores del puente tienen intenciones maliciosas en un puente de confianza
- el puente es hackeado
-Un hackeo reciente ocurrió en el puente de Solana Wormhole, [donde se robaron durante el ataque 120.000 wETH ($325 millones de USD)](https://rekt.news/wormhole-rekt/). Muchos de los [principales hackeos en las cadenas de bloques involucraron puentes](https://rekt.news/leaderboard/).
+Un hackeo reciente fue el del puente Wormhole de Solana, [donde se robaron 120.000 wETH (325 millones de dólares estadounidenses) durante el ataque](https://rekt.news/wormhole-rekt/). Muchos de los [mayores hackeos en blockchains involucraron puentes](https://rekt.news/leaderboard/).
-Los puentes son cruciales para incorporar a los usuarios a las L2 de Ethereum e incluso para los usuarios que quieren explorar diferentes ecosistemas. Sin embargo, dados los riesgos que implica la interacción con los puentes, los usuarios deben entender las implicancias. Estas son algunas [estrategias para la seguridad entre cadenas](https://blog.debridge.finance/10-strategies-for-cross-chain-security-8ed5f5879946).
+Los puentes son cruciales para incorporar a los usuarios a las L2 de Ethereum e incluso para los usuarios que quieren explorar diferentes ecosistemas. Sin embargo, dados los riesgos que implica la interacción con los puentes, los usuarios deben entender las implicancias. Estas son algunas [estrategias para la seguridad cross-chain](https://debridge.com/learn/blog/10-strategies-for-cross-chain-security/).
-## Para seguir leyendo {#further-reading}
+## Lecturas adicionales {#further-reading}
+
+- [EIP-5164: Cross-Chain Execution](https://ethereum-magicians.org/t/eip-5164-cross-chain-execution/9658) - _18 de junio de 2022 - Brendan Asselstine_
+- [L2Bridge Risk Framework](https://gov.l2beat.com/t/l2bridge-risk-framework/31) - _5 de julio de 2022 - Bartek Kiepuszewski_
+- ["Por qué el futuro será multichain, pero no cross-chain."](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) - _8 de enero de 2022 - Vitalik Buterin_
+- [Aprovechando la seguridad compartida para una interoperabilidad cross-chain segura: Lagrange State Committees y más allá](https://web.archive.org/web/20250125035123/https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - _12 de junio de 2024 - Emmanuel Awosika_
+- [El estado de las soluciones de interoperabilidad de rollups](https://web.archive.org/web/20250428015516/https://research.2077.xyz/the-state-of-rollup-interoperability) - _20 de junio de 2024 - Alex Hook_
-- [EIP-5164: Ejecución entre cadenas (cross-chain)](https://ethereum-magicians.org/t/eip-5164-cross-chain-execution/9658) _18 de junio de 2022 - Brendan Asselstine_
-- [Marco de riesgos L2Bridge](https://gov.l2beat.com/t/l2bridge-risk-framework/31) _5 de julio de 2022 - Bartek Kiepuszewski_
-- ["Por qué el futuro será multicadena, pero no entre cadenas"](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) _8 de enero de 2022 - Vitalik Buterin_
From 1b1e3cd917c76e2331ae573b16505b7cb03f80c7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:10 -0300
Subject: [PATCH 059/589] update(i18n):
public/content/translations/es/privacy/index.md
---
.../content/translations/es/privacy/index.md | 97 +++++++++++++++++++
1 file changed, 97 insertions(+)
create mode 100644 public/content/translations/es/privacy/index.md
diff --git a/public/content/translations/es/privacy/index.md b/public/content/translations/es/privacy/index.md
new file mode 100644
index 00000000000..4c393cdf454
--- /dev/null
+++ b/public/content/translations/es/privacy/index.md
@@ -0,0 +1,97 @@
+---
+title: Privacidad en Ethereum
+description: Herramientas y técnicas para proteger su privacidad en Ethereum
+lang: es
+---
+
+# Privacidad en Ethereum {#introduction}
+
+La privacidad no solo es esencial para la seguridad personal, es una piedra angular de la libertad y un [garante clave para la descentralización](https://vitalik.eth.limo/general/2025/04/14/privacy.html). La privacidad da a las personas la capacidad de expresarse, transaccionar con otros y organizar comunidades libremente. Pero, como todas las blockchains, el libro mayor público de Ethereum hace que la privacidad sea un desafío.
+
+Ethereum es transparente por diseño. Cada acción en la cadena es visible para cualquier persona que la observe. Si bien Ethereum ofrece seudonimato al vincular su actividad a una [clave pública](/decentralized-identity/#public-key-cryptography) en lugar de una identidad del mundo real, los patrones de actividad pueden analizarse para revelar información sensible e identificar a los usuarios.
+
+Integrar herramientas que preserven la privacidad en Ethereum puede ayudar a personas, organizaciones e instituciones a interactuar de manera segura, limitando la exposición innecesaria. Esto hace que el ecosistema sea más seguro y práctico para una mayor variedad de casos de uso.
+
+## Privacidad en las escrituras {#privacy-of-writes}
+
+Por defecto, cada transacción escrita en Ethereum es pública y permanente. Esto incluye no solo enviar ETH, sino también registrar nombres ENS, coleccionar POAP o intercambiar NFT. Acciones cotidianas como pagos, votaciones o verificaciones de identidad pueden revelar su información a partes no deseadas. Hay varias herramientas y técnicas que pueden ayudar a hacer que estas acciones sean más privadas:
+
+### Protocolos de mezcla (o "mixers") {#mixing-protocols}
+
+Los mezcladores rompen el vínculo entre emisores y destinatarios al poner las transacciones de muchos usuarios en un "pool" compartido, y luego permitir retiros a una dirección nueva. Dado que los depósitos y retiros se mezclan, es mucho más difícil para los observadores conectarlos.
+
+_Ejemplos: [PrivacyPools](https://docs.privacypools.com/), [Tornado Cash](https://tornado.cash/)_
+
+### Pools protegidos {#shielded-pools}
+
+Los pools protegidos son similares a los mixers pero permiten a los usuarios mantener y transferir fondos de forma privada dentro del propio pool. En vez de solo ocultar el vínculo entre depósito y retiro, los pools protegidos mantienen un estado privado permanente, a menudo asegurado con pruebas de conocimiento cero. Esto hace posible construir transferencias privadas, balances privados y más.
+
+_Ejemplos: [Railgun](https://www.railgun.org/), [Aztec](https://aztec.network/), Nightfall_
+
+### Direcciones sigilosas {#stealth-addresses}
+
+Una [dirección sigilosa](https://vitalik.eth.limo/general/2023/01/20/stealth.html) es como dar a cada remitente un casillero postal único y de un solo uso. que solo usted puede abrir. Cada vez que alguien le envía criptomonedas, estas llegan a una dirección nueva, de modo que nadie más puede ver que todos esos pagos le pertenecen. Esto mantiene su historial de pagos privado y más difícil de rastrear.
+
+_Ejemplos: [UmbraCash](https://app.umbra.cash/faq), [FluidKey](https://www.fluidkey.com/)_
+
+### Otros casos de uso {#other-use-cases}
+
+Otros proyectos que exploran escrituras privadas incluyen [PlasmaFold](https://pse.dev/projects/plasma-fold) (pagos privados) y sistemas como [MACI](https://pse.dev/projects/maci) y [Semaphore](https://pse.dev/projects/semaphore) (votaciones privadas).
+
+Estas herramientas amplían las opciones para escribir de forma privada en Ethereum, pero cada una implica ciertas compensaciones. Algunos enfoques aún son experimentales, otros aumentan los costos o la complejidad, y herramientas como mixers pueden enfrentar escrutinio legal o regulatorio según cómo se usen.
+
+## Privacidad en las lecturas {#privacy-of-reads}
+
+Leer o consultar cualquier información en Ethereum (por ejemplo, el saldo de su cartera) normalmente se realiza a través de un servicio como el proveedor de su cartera, un proveedor de nodos o un explorador de bloques. Como depende de ellos para leer la blockchain por usted, también pueden ver sus solicitudes junto con metadatos como su dirección IP o ubicación. Si consulta la misma cuenta con frecuencia, esta información puede ser rastreada para vincular su identidad con su actividad.
+
+Ejecutar su propio nodo de Ethereum evitaría esto, pero almacenar y sincronizar la blockchain completa sigue siendo costoso e impracticable para la mayoría de los usuarios, especialmente en dispositivos móviles.
+
+Algunos proyectos que exploran lecturas privadas incluyen [Private Information Retrieval](https://hackmd.io/@brech1/ethereum-privacy-pir?utm_source=preview-mode&utm_medium=rec) (PIR, obtener datos sin revelar lo que se consulta), [zkID](https://hackmd.io/@brech1/ethereum-privacy-pir?utm_source=preview-mode&utm_medium=rec) (verificaciones privadas de identidad usando pruebas de conocimiento cero), [vOPRF](https://pse.dev/projects/voprf) (usar cuentas Web2 como seudónimas en Web3), [vFHE](https://pse.dev/blog/zero-to-start-applied-fully-homomorphic-encryption-fhe-part-1) (cálculo sobre datos cifrados) y [MachinaIO](https://pse.dev/projects/machina-io) (ocultar detalles de programas manteniendo la funcionalidad).
+
+## Privacidad en la prueba {#privacy-of-proving}
+
+Las pruebas que preservan la privacidad son herramientas que puede usar en Ethereum para demostrar que algo es cierto sin revelar detalles innecesarios. Por ejemplo, podría:
+
+- Demostrar que es mayor de 18 años sin compartir su fecha de nacimiento completa
+- Demostrar la propiedad de un NFT o token sin revelar toda su cartera
+- Demostrar elegibilidad para una membresía, recompensa o voto sin exponer otros datos personales
+
+La mayoría de estas herramientas se basan en técnicas criptográficas como las pruebas de conocimiento cero, pero el reto es hacerlas lo suficientemente eficientes para funcionar en dispositivos cotidianos, ser portables en cualquier plataforma y seguras.
+
+Algunos proyectos que exploran privacidad en la prueba incluyen [Client Side Proving](https://pse.dev/projects/client-side-proving) (sistemas de pruebas ZK), [TLSNotary](https://tlsnotary.org/) (pruebas de autenticidad de cualquier dato en la web), [Mopro](https://pse.dev/projects/mopro) (pruebas cliente móvil), [Private Proof Delegation](https://pse.dev/projects/private-proof-delegation) (marcos de delegación que evitan suposiciones de confianza) y [Noir](https://noir-lang.org/) (lenguaje para computación privada y verificable).
+
+## Glosario de privacidad {#privacy-glossary}
+
+**Anónimo**: Interactuar eliminando permanentemente todos los identificadores de sus datos, haciendo imposible rastrear la información hacia un individuo.
+
+**Cifrado**: Proceso que codifica los datos para que solo alguien con la clave correcta pueda leerlos.
+
+**[Cifrado Homomórfico Completo](https://pse.dev/blog/zero-to-start-applied-fully-homomorphic-encryption-fhe-part-1) (FHE)**: Método que permite realizar cálculos directamente sobre datos cifrados, sin necesidad de descifrarlos.
+
+**[Ofuscación Indistinguible](https://pse.dev/projects/machina-io) (iO)**: Técnicas de privacidad que hacen que los programas o datos sean ininteligibles pero sigan siendo utilizables.
+
+**[Cómputo Multiparte Seguro](https://pse.dev/blog/secure-multi-party-computation) (MPC)**: Métodos que permiten a varias partes calcular un resultado juntas sin exponer sus entradas privadas.
+
+**Criptografía Programable**: Criptografía flexible, basada en reglas, que puede personalizarse mediante software para controlar cómo y cuándo se comparte, verifica o revela información.
+
+**Seudónimo**: Uso de códigos o números únicos (como una dirección de Ethereum) en lugar de identificadores personales.
+
+**Revelación selectiva**: Capacidad de compartir solo lo necesario (por ejemplo, demostrar que posee un NFT sin revelar todo el historial de su cartera).
+
+**No vinculabilidad**: Garantizar que acciones separadas en la blockchain no puedan relacionarse con una misma dirección.
+
+**Verificabilidad**: Garantizar que otros puedan confirmar que una afirmación es verdadera, como validar una transacción o una prueba en Ethereum.
+
+**Delegación verificable**: Asignar una tarea—como generar una prueba—a otra parte (por ejemplo, una cartera móvil que usa un servidor para cálculos criptográficos complejos) asegurando que pueda verificarse que se realizó correctamente.
+
+**[Pruebas de conocimiento cero](/zero-knowledge-proofs/#why-zero-knowledge-proofs-are-important) (ZKP)**: Protocolos criptográficos que permiten demostrar que una información es verdadera sin revelar los datos subyacentes.
+
+**ZK Rollup**: Sistema de escalabilidad que agrupa transacciones fuera de la cadena y presenta una prueba de validez en la cadena. No es privado por defecto, pero permite sistemas de privacidad eficientes (como pools protegidos) al reducir costos.
+
+## Recursos {#resources}
+
+- [Privacy Stewards of Ethereum](https://pse.dev/) (PSE), un laboratorio de investigación y desarrollo de la Fundación Ethereum centrado en la privacidad para el ecosistema.
+- [Web3PrivacyNow](https://web3privacy.info/), una red de personas, proyectos y organizaciones afines que protegen y promueven los derechos humanos en línea.
+- [WalletBeat](https://beta.walletbeat.eth.limo/wallet/summary/), un sitio de valoración de carteras Ethereum que busca proporcionar una lista completa de carteras, su funcionalidad, prácticas y soporte para ciertos estándares.
+- [Zk-kit](https://zkkit.pse.dev/): Un conjunto de bibliotecas (algoritmos, funciones utilitarias y estructuras de datos) que se pueden reutilizar en diferentes proyectos y protocolos de conocimiento cero.
+- [Privacy Apps](/apps/categories/privacy/) - Descubra una lista de aplicaciones de privacidad seleccionadas que funcionan en Ethereum.
From e7a3953f7ba97befea02d71a360e87c95ad8720e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:12 -0300
Subject: [PATCH 060/589] update(i18n): src/intl/es/page-apps.json
---
src/intl/es/page-apps.json | 340 +++++++------------------------------
1 file changed, 64 insertions(+), 276 deletions(-)
diff --git a/src/intl/es/page-apps.json b/src/intl/es/page-apps.json
index 3b0f33ceafe..3a5d7fe64c7 100644
--- a/src/intl/es/page-apps.json
+++ b/src/intl/es/page-apps.json
@@ -1,284 +1,72 @@
{
- "page-apps-1inch-logo-alt": "Logo de 1 pulgada",
- "page-apps-aave-logo-alt": "Logo de Aave",
- "page-apps-add-button": "Sugerir DApp",
- "page-apps-add-title": "Añadir DApp",
- "page-apps-ankr-logo-alt": "Logotipo de Ankr",
- "page-apps-api3-logo-alt": "Logotipo de API3",
- "page-apps-arweave-logo-alt": "Logotipo de ARweave",
- "page-apps-audius-logo-alt": "Logo de Audius",
- "page-apps-axie-infinity-logo-alt": "Logo de Axie Infinity",
- "page-apps-balancer-logo-alt": "Logo de Balancer",
- "page-apps-brave-logo-alt": "Logo de Brave",
- "page-apps-beginner-friendly-description": "Algunas DApps son buenas para principiantes. Explore más DApps a continuación.",
- "page-apps-beginner-friendly-header": "Aptas para principiantes",
- "page-apps-category-arts": "Arte y moda",
- "page-apps-category-browsers": "Buscadores",
- "page-apps-category-code-marketplaces": "Plataformas de código",
- "page-apps-category-collectibles": "Coleccionables digitales",
- "page-apps-category-competitive": "Juegos Web3",
- "page-apps-category-computing": "Herramientas para desarrolladores",
- "page-apps-category-dex": "Intercambios",
- "page-apps-category-investments": "Fondos de inversión",
- "page-apps-category-lending": "Prestar y pedir prestado",
- "page-apps-category-lottery": "Micromecenazgo",
- "page-apps-category-marketplaces": "Mercados",
- "page-apps-category-music": "Música",
- "page-apps-category-payments": "Pagos",
- "page-apps-category-insurance": "Seguros",
- "page-apps-category-portfolios": "Administración de portafolio",
- "page-apps-category-trading": "Predicción de mercados",
- "page-apps-category-utilities": "Utilidades",
- "page-apps-category-worlds": "Mundos virtuales",
- "page-apps-category-demand-aggregator": "Agregadores de demanda",
- "page-apps-category-derivatives": "Derivados",
- "page-apps-category-liquid-staking": "Participación de liquidez",
- "page-apps-category-bridges": "Puentes",
- "page-apps-category-experiences": "Experiencias compartidas",
- "page-apps-category-guilds": "Gremios de rendimiento",
- "page-apps-category-avatar": "Avatares",
- "page-apps-choose-category": "Elegir categoría",
- "page-apps-category-social": "Redes sociales",
- "page-apps-category-content": "Contenido",
- "page-apps-category-community": "Comunidad",
- "page-apps-category-messaging": "Mensajería",
- "page-apps-category-identity": "Identidad",
- "page-apps-collectibles-benefits-1-description": "Cuando el arte se tokeniza en Ethereum, puede demostrarse la titularidad para que todo el mundo la vea. Puede rastrear el viaje de la obra de arte desde su creación hasta su titular actual. Esto evita las falsificaciones.",
- "page-apps-collectibles-benefits-1-title": "La titularidad es demostrable",
- "page-apps-collectibles-benefits-2-description": "Pagar para transmitir música o comprar obras de arte es mucho más justo para los artistas. Con Ethereum hay menos necesidad de intermediarios. Y si se necesitan intermediarios, sus costes no son tan altos, porque las plataformas no necesitan pagar por la infraestructura de la red.",
- "page-apps-collectibles-benefits-2-title": "Más justo para los creadores",
- "page-apps-collectibles-benefits-3-description": "Las colecciones «tokenizadas» están vinculadas a su dirección de Ethereum, no a la plataforma. Por tanto, puede vender artículos de juego en cualquier mercado de Ethereum, no solo dentro del juego.",
- "page-apps-collectibles-benefits-3-title": "Los coleccionables le acompañan",
- "page-apps-collectibles-benefits-4-description": "Ya existen herramientas y productos que te permiten «tokenizar» tu arte y venderlo. Y tus tókenes puedan venderse en cualquier plataforma de colecciones de Ethereum.",
- "page-apps-collectibles-benefits-4-title": "Infraestructura ya en marcha",
- "page-apps-collectibles-benefits-description": "Estas son aplicaciones que se centran en la titularidad digital, incrementando el potencial de ingresos para los creadores e inventando nuevas formas de invertir en sus creadores preferidos y su trabajo.",
- "page-apps-collectibles-benefits-title": "coleccionables y streaming descentralizados",
- "page-apps-collectibles-button": "Arte y coleccionables",
- "page-apps-collectibles-description": "Estas son aplicaciones que se centran en la titularidad digital, incrementando el potencial de ingresos para los creadores e inventando nuevas formas de invertir en sus creadores preferidos y su trabajo.",
- "page-apps-collectibles-title": "Arte y coleccionables descentralizados",
- "page-apps-compound-logo-alt": "Logo de Compound",
- "page-apps-convex-logo-alt": "Logo de Convex",
- "page-apps-cryptopunks-logo-alt": "Logo de CryptoPunks",
- "page-apps-cryptovoxels-logo-alt": "Logo de Cryptovoxels",
- "page-apps-cyberconnect-logo-alt": "Logotipo de CyberConnect",
- "page-apps-dapp-description-1inch": "Le ayuda a evitar el elevado desfase de precios mediante la agregación de los mejores precios.",
- "page-apps-dapp-description-aave": "Preste sus tókenes para ganar intereses y retírelos en cualquier momento.",
- "page-apps-dapp-description-ankr": "Conjunto de diferentes productos de infraestructura Web3 para construir, ganar dinero, jugar y más, todo en la cadena de bloques.",
- "page-apps-dapp-description-api3": "Fuentes propias con referencias de precios que permiten las DApps en 10 redes (y sumando) para conectar en tiempo real la información de precios de los activos, incluyendo precios de criptomonedas y mercados de divisas.",
- "page-apps-dapp-description-arweave": "Almacenar datos permanentemente de manera sostenible con una única comisión principal.",
- "page-apps-dapp-description-async-art": "Crea, colecciona y comercializa #ProgrammableArt, pinturas digitales divididas en «capas» que se pueden utilizar para afectar la imagen general. Cada maestro y capa es un token ERC721.",
- "page-apps-dapp-description-audius": "Plataforma de streaming descentralizada. Escuchas = dinero para creadores, no etiquetas.",
- "page-apps-dapp-description-axie-infinity": "Comercie con criaturas de combate llamadas «Axies». Y gane mientras juega (disponible en móviles)",
- "page-apps-dapp-description-balancer": "Balancer es una plataforma automatizada de operaciones y gestión de carteras.",
- "page-apps-dapp-description-brave": "Gane tókenes por navegar y apoyar a sus creadores favoritos con ellos.",
+ "page-apps-all-apps": "Todas las aplicaciones",
"page-apps-dapp-description-cent": "Una red social donde puede ganar dinero publicando NFT.",
- "page-apps-dapp-description-compound": "Preste sus tókenes para ganar intereses y retírelos en cualquier momento.",
- "page-apps-dapp-description-convex": "Convex permite a los proveedores de liquidez Curve, recibir cuotas de intercambio y reclamar CRV incrementado sin tener que bloquear su CRV.",
- "page-apps-dapp-description-cryptopunks": "Compre, puje y ofrezca Punks a la venta: uno de los primeros tókenes coleccionables en Ethereum.",
- "page-apps-dapp-description-cryptovoxels": "Cree galerías de arte, construya tiendas y compre tierras: un mundo virtual de Ethereum.",
- "page-apps-dapp-description-cyberconnect": "Protocolo de gráfico social descentralizado que ayuda a la red de DApps a efectuar y construir experiencias sociales personalizadas",
- "page-apps-dapp-description-dark-forest": "Conquiste planetas en un universo infinito, generado por procedimientos y especificado criptográficamente.",
"page-apps-dapp-description-decentraland": "Coleccione, comercie con tierras virtuales en un mundo virtual que puede explorar.",
"page-apps-dapp-description-ens": "Nombres fáciles de usar para las direcciones de Ethereum y los sitios descentralizados.",
- "page-apps-dapp-description-foundation": "Invierta en ediciones únicas de obras de arte digitales y piezas comerciales con otros compradores.",
"page-apps-dapp-description-gitcoin": "Gane criptomonedas trabajando en software de código abierto.",
- "page-apps-dapp-description-gitcoin-grants": "Micromecenazgo para proyectos de la comunidad Ethereum con contribuciones ampliadas",
- "page-apps-dapp-description-gm": "Plataforma todo en uno para mensajería, foros y voz, que actualmente comparte las ganancias con los creadores",
"page-apps-dapp-description-gods-unchained": "Juego de cartas estratégicas. Jugando ganará cartas que puede vender en la vida real.",
- "page-apps-dapp-description-golem": "Acceda a la potencia informática compartida o alquile sus propios recursos.",
- "page-apps-dapp-description-graph": "Un protocolo de indexación para realizar consultas en redes como Ethereum e IPFS.",
- "page-apps-dapp-description-ipfs": "Un protocolo hipermedia entre pares, diseñado para preservar y aumentar el conocimiento de la humanidad al hacer la web mejorable, resilente y más abierta.",
- "page-apps-dapp-description-radicle": "Asegurar la colaboración entre pares sin intermediarios.",
- "page-apps-dapp-description-kiwinews": "Encuentre noticias, artículos y productos interesantes sobre Ethereum, seleccionados por y para desarrolladores. Discútalos con otros desarrolladores, fundadores e inversores.",
- "page-apps-dapp-description-lido": "Staking simplificado y seguro para activos digitales.",
- "page-apps-dapp-description-marble-cards": "Cree e intercambie tarjetas digitales únicas basadas en URL.",
- "page-apps-dapp-description-matcha": "Busque múltiples intercambios para encontrar los mejores precios.",
- "page-apps-dapp-description-meeds": "Centros para la comunidad Web3 para la era del trabajo descentralizado. Recompensar de manera justa y transparente las contribuciones que importan.",
- "page-apps-dapp-description-mirror": "Construida en Web3 y para Web3, la plataforma de publicación de Mirror supera los límites de la escritura en línea",
- "page-apps-dapp-description-multichain": "El router definitivo para Web3. Es una infraestructura desarrollada por interacciones arbitrarias a través de cadenas.",
- "page-apps-dapp-description-nifty-gateway": "Compre obras en cadena a artistas, atletas, marcas y creadores de primer nivel.",
- "page-apps-dapp-description-summerfi": "Comercie, pida prestado y ahorre con Dai, una moneda estable de Ethereum.",
- "page-apps-dapp-description-opensea": "Compre, venda, descubra e intercambie bienes de edición limitada.",
- "page-apps-dapp-description-opera": "Envíe criptografía desde su navegador a comerciantes, otros usuarios y aplicaciones.",
- "page-apps-dapp-description-osuvox": "Avatares 3D viviendo en la cadena de bloques",
- "page-apps-dapp-description-poap": "Obtenga NFT probando que estuvo en diferentes eventos virtuales o en persona. Úselos para participar en rifas, votar, colaborar o simplemente para presumir.",
- "page-apps-dapp-description-polymarket": "Apueste por los resultados. Comercie en mercados de información.",
- "page-apps-dapp-description-pooltogether": "Una lotería que no puede perder. Premios cada semana.",
- "page-apps-dapp-description-index-coop": "Un índice de fondos de criptomonedas que le da a su porfolio exposición a los tókenes de DeFi más importantes.",
- "page-apps-dapp-description-nexus-mutual": "Cobertura sin compañía de seguros. Protéjase contra errores en contratos inteligentes y hacks.",
- "page-apps-dapp-description-etherisc": "Una plantilla de seguro descentralizada que cualquiera puede utilizar para crear su propia cobertura de seguro.",
- "page-apps-dapp-description-zapper": "Haga un seguimiento de su porfolio y utilice diferentes productos DeFi desde una sola interfaz.",
- "page-apps-dapp-description-zerion": "Administre su porfolio y evalúe cada activo DeFi en el mercado.",
- "page-apps-dapp-description-rotki": "Herramienta de código abierto para realizar seguimientos de porfolios, análisis, contabilidad e informes de impuestos que respeta tu privacidad.",
- "page-apps-dapp-description-krystal": "Una plataforma integral para acceder a todos sus servicios DeFi favoritos.",
- "page-apps-dapp-description-rarible": "Cree, venda y compre coleccionables tokenizados.",
- "page-apps-dapp-description-request-finance": "Un conjunto de herramientas financieras para facturas criptográficas, nóminas y gastos.",
- "page-apps-dapp-description-sablier": "Envíe dinero en tiempo real.",
- "page-apps-dapp-description-spatial": "Cree su propio avatar y sus mundos 3D",
- "page-apps-dapp-description-spruce": "Apilar el código abierto para dejar el control de la identidad y los datos donde debería estar: con los usuarios.",
- "page-apps-dapp-description-status": "Diseñado para permitir el flujo libre de información, proteger el derecho a la privacidad, conversaciones seguras y promover la soberanía de los individuos.",
- "page-apps-dapp-description-superrare": "Compre obras de arte digitales directamente de artistas o en mercados secundarios.",
- "page-apps-dapp-description-synthetix": "Synthetix es un protocolo para emitir y comercializar activos sintéticos.",
- "page-apps-dapp-description-uniswap": "Intercambie tókenes simplemente o proporcione tókenes por un porcentaje de recompensas.",
- "page-apps-dapp-description-xmtp": "Envíe mensajes entre cuentas de la cadena de bloques, incluyendo mensajes privados, alertas, anuncios y más.",
- "page-apps-dapp-description-yearn": "Yearn Finance es un agregador de rendimiento, que otorga a particulares, DAO y otros protocolos una forma de depositar activos financieros y recibir rendimiento.",
- "page-apps-docklink-dapps": "Introducción a las dapps",
- "page-apps-docklink-smart-contracts": "Contratos inteligentes",
- "page-apps-dark-forest-logo-alt": "Logo de Dark Forest",
- "page-apps-decentraland-logo-alt": "Logo de Decentraland",
- "page-apps-index-coop-logo-alt": "Log de Index Coop",
- "page-apps-nexus-mutual-logo-alt": "Logo de Nexus Mutual",
- "page-apps-etherisc-logo-alt": "Logo de Etherisc",
- "page-apps-zapper-logo-alt": "Logo de Zapper",
- "page-apps-zerion-logo-alt": "Logo de Zerion",
- "page-apps-rotki-logo-alt": "Logo de Rotki",
- "page-apps-krystal-logo-alt": "Logotipo de Kristal",
- "page-apps-synthetix-logo-alt": "Logo de Synthetix",
- "page-apps-desc": "Encuentre una aplicación de Ethereum para probar.",
- "page-apps-doge-img-alt": "Ilustración de un doge usando un ordenador",
- "page-apps-editors-choice-dark-forest": "Juegue contra otros para conquistar planetas y probar la tecnología de escalado y privacidad de Ethereum de vanguardia. Tal vez uno para aquellos que ya están familiarizados con Ethereum.",
- "page-apps-editors-choice-foundation": "Invierta en cultura. Compre, comercie y venda obras de arte digitales exclusivas y moda de artistas, músicos y marcas increíbles.",
- "page-apps-editors-choice-pooltogether": "Compre un boleto para la lotería sin pérdidas. Cada semana, el interés generado por todos los boletos juntos se envía a un afortunado ganador. Obtenga su dinero cuando quiera.",
- "page-apps-editors-choice-uniswap": "Intercambie sus tókenes con facilidad. Un favorito de la comunidad que le permite intercambiar tókenes con gente a través de la red.",
- "page-apps-ens-logo-alt": "Logo de Servicio Ethereum Name",
- "page-apps-explore-dapps-description": "Muchas dApps siguen siendo experimentales y exploran las posibilidades que ofrecen las redes descentralizadas. Ha habido algunos casos de éxito en los ámbitos de tecnología, finanzas, juegos y coleccionables.",
- "page-apps-explore-dapps-title": "Explorar dapps",
- "page-apps-features-1-description": "Una vez instalado en Ethereum, el código DApp no se puede eliminar. Y cualquiera puede usar las características de la DApp. Incluso aunque el equipo detrás de la dapp se disolviera, podría usarla. Una vez en Ethereum, se queda ahí.",
- "page-apps-features-1-title": "Sin propietarios",
- "page-apps-features-2-description": "No se puede bloquear el uso de una DApp ni el envío de transacciones. Por ejemplo, si Twitter estuviera en Ethereum, nadie podría bloquear su cuenta ni impedir que tuiteara.",
- "page-apps-features-2-title": "Sin censura",
- "page-apps-features-3-description": "Puesto que Ethereum tiene ETH, los pagos son nativos de Ethereum. Los desarrolladores no necesitan pasar tiempo integrándose con proveedores de pagos de terceros.",
- "page-apps-features-3-title": "Pagos integrados",
- "page-apps-features-4-description": "El código DApp está a menudo abierto y es compatible por defecto. Los equipos construyen con frecuencia usando el trabajo de otros equipos. Si quiere permitir que los usuarios intercambien tókenes en su DApp, puede simplemente conectar el código de otra DApp.",
- "page-apps-features-4-title": "Conectar y a jugar",
- "page-apps-features-5-description": "Con la mayoría de las Aplicaciones Descentralizadas (DApps) no necesita compartir su identidad real. Su cuenta de Ethereum es su inicio de sesión y solo necesita una cartera.",
- "page-apps-features-5-title": "Un inicio de sesión anónimo",
- "page-apps-features-6-description": "La criptografía garantiza que los atacantes no puedan forjar transacciones e interacciones con DApp en su nombre. Autoriza acciones DApp con su cuenta de Ethereum, normalmente a través de su cartera, así que mantenga sus credenciales a salvo.",
- "page-apps-features-6-title": "Respaldado por criptografía",
- "page-apps-features-7-description": "Una vez que la DApp esté activa en Ethereum, solo se desactivará si Ethereum mismo se cae. Las redes del tamaño de Ethereum son tremendamente difíciles de atacar.",
- "page-apps-features-7-title": "Sin tiempo de inactividad",
- "page-apps-finance-benefits-1-description": "Los servicios financieros que funcionan en Ethereum no tienen requisitos de registro. Si tiene fondos y una conexión a Internet, ya puede ponerse en marcha.",
- "page-apps-finance-benefits-1-title": "Acceso abierto",
- "page-apps-finance-benefits-2-description": "Hay todo un mundo de tókenes con los que puede interactuar a través de estos productos financieros. La gente está construyendo nuevos tókenes sobre Ethereum todo el tiempo.",
- "page-apps-finance-benefits-2-title": "Una nueva economía de tókenes",
- "page-apps-finance-benefits-3-description": "Los equipos han creado monedas estables: una criptomoneda menos volátil. Estas le permiten experimentar y usar cripto sin riesgos ni incertidumbre.",
- "page-apps-finance-benefits-3-title": "Monedas estables",
- "page-apps-finance-benefits-4-description": "Los productos financieros en el espacio Ethereum son todos modulares y compatibles entre sí. Al mercado llegan continuamente nuevas configuraciones de estos módulos, lo que aumenta lo que puede hacer con sus criptomonedas.",
- "page-apps-finance-benefits-4-title": "Servicios financieros interconectados",
- "page-apps-finance-benefits-description": "¿Cómo es que Ethereum permite que las aplicaciones financieras descentralizadas crezcan?",
- "page-apps-finance-benefits-title": "finanzas descentralizadas",
- "page-apps-finance-button": "Finanzas",
- "page-apps-finance-description": "Estas son aplicaciones que se centran en la creación de servicios financieros utilizando criptomonedas. Ofrecen la posibilidad de prestar dinero, pedir prestado, obtener intereses y realizar pagos privados, sin necesidad de datos personales.",
- "page-apps-finance-title": "Finanzas descentralizadas",
- "page-apps-foundation-logo-alt": "Logo de la fundación",
- "page-apps-gaming-benefits-1-description": "Ya se trate de terrenos virtuales o cartas, sus objetos son intercambiables en mercados coleccionables. Sus objetos dentro del juego tienen valor real.",
- "page-apps-gaming-benefits-1-title": "Los objetos del juego se duplican como tókenes",
- "page-apps-gaming-benefits-2-description": "Usted mismo posee sus objetos, y en algunos casos su progreso, no las empresas de juegos, así que no perderá nada si la compañía tras el juego es atacada, sufre un mal funcionamiento del servidor o se disuelve.",
- "page-apps-gaming-benefits-2-title": "Sus ahorros están seguros",
- "page-apps-gaming-benefits-3-description": "De la misma manera que los pagos de Ethereum están disponibles para que cualquiera los verifique, los juegos pueden usar esta calidad para garantizar la equidad. En teoría, todo es verificable, desde el número de golpes críticos hasta el tamaño del cofre de guerra de un oponente.",
- "page-apps-gaming-benefits-3-title": "Equidad demostrable",
- "page-apps-gaming-benefits-description": "¿Cómo es que Ethereum permite que el juego descentralizado crezca?",
- "page-apps-gaming-benefits-title": "juegos descentralizados",
- "page-apps-gaming-button": "Juegos",
- "page-apps-gaming-description": "Estas son aplicaciones que se centran en la creación de mundos virtuales y luchan contra otros jugadores usando coleccionables que tienen valor real.",
- "page-apps-gaming-title": "Juegos descentralizados",
- "page-apps-get-some-eth-description": "Las acciones DApp tienen un cargo de transacción",
- "page-apps-get-started-subtitle": "Para probar una DApp, necesita una cartera y algunos ETH. Una cartera le permitirá conectarse o iniciar sesión. También necesitará ETH para pagar cualquier tarifa de transacción.",
- "page-apps-get-started-title": "Comenzar",
- "page-apps-gitcoin-grants-logo-alt": "Logo de Gitcoin Grants",
- "page-apps-gitcoin-logo-alt": "Logo de Gitcoin",
- "page-apps-gm-logo-alt": "Logotipo de gm.xyz",
- "page-apps-gods-unchained-logo-alt": "Logo de Gods Unchained",
- "page-apps-golem-logo-alt": "Logo de Golem",
- "page-apps-graph-logo-alt": "Logotipo de Graph",
- "page-apps-radicle-logo-alt": "Logo de Radicle",
- "page-apps-hero-header": "Herramientas y servicios basados en Ethereum",
- "page-apps-hero-subtitle": "Las DApps son un movimiento creciente de aplicaciones que utilizan Ethereum para interrumpir modelos de negocio o inventar otros nuevos.",
- "page-apps-how-dapps-work-p1": "Las DApps tienen su propio código de backend (contratos inteligentes) que se ejecuta en una red descentralizada y no en un servidor centralizado. Estas usan la cadena de bloques de Ethereum para el almacenamiento de datos y los contratos inteligentes para la lógica de la aplicación.",
- "page-apps-how-dapps-work-p2": "Un contrato inteligente es como un conjunto de normas encadenadas para que todos las vean y las acaten. Imagínese una máquina expendedora: si le proporciona suficientes fondos y el surtido de productos correcto, obtendrá el artículo que desea. Pues, al igual que las máquinas expendedoras, los contratos inteligentes pueden almacenar fondos de forma similar a su cuenta de Ethereum. Esto permite que el código medie acuerdos y transacciones.",
- "page-apps-how-dapps-work-p3": "Una vez que las DApps están desplegadas en la red Ethereum, no puede cambiarlas. Las DApps pueden descentralizarse porque están controladas por la lógica escrita en el contrato, no por un individuo o por una empresa.",
- "page-apps-how-dapps-work-title": "Cómo funcionan las DApps",
- "page-apps-ipfs-logo-alt": "Logotipo de IPFS",
- "page-apps-learn-callout-button": "Comenzar a crear",
- "page-apps-learn-callout-description": "Nuestro portal de desarrolladores de la comunidad tiene documentos, herramientas y marcos para ayudarle a comenzar a crear una DApp.",
- "page-apps-learn-callout-image-alt": "Imagen de una mano construyendo un símbolo ETH con ladrillos de Lego.",
- "page-apps-learn-callout-title": "Aprenda a crear una DApp",
- "page-apps-lido-logo-alt": "Logotipo de Lido",
- "page-apps-magic-behind-dapps-description": "Las DApps pueden parecer aplicaciones normales. Pero entre bastidores tienen algunas cualidades especiales, dado que heredan todos los superpoderes de Ethereum. Esto es lo que hace que las DApps sean diferentes de las aplicaciones.",
- "page-apps-magic-behind-dapps-link": "¿Qué hace que Ethereum sea genial?",
- "page-apps-magic-behind-dapps-title": "La magia detrás de las DApps",
- "page-apps-magic-title-1": "La magia",
- "page-apps-magic-title-2": "detrás",
- "page-apps-magician-img-alt": "Ilustración de magos",
- "page-apps-marble-cards-logo-alt": "Logo de marble.cards",
- "page-apps-async-logo-alt": "Logo Async",
- "page-apps-matcha-logo-alt": "Logo de Matcha",
- "page-apps-meeds-logo-alt": "Logo de \"Meeds\"",
- "page-apps-metaverse-benefits-title": "metaverso",
- "page-apps-metaverse-benefits-description": "¿Qué hay en Ethereum que le permite prosperar al metaverso?",
- "page-apps-metaverse-benefits-1-title": "NFT",
- "page-apps-metaverse-benefits-1-description": "Los objetos únicos dentro de los juegos son propios de los usuarios e interoperables a través de mundos virtuales y plataformas que admiten los mismos estándares.",
- "page-apps-metaverse-benefits-2-title": "Comunidades propias del usuario",
- "page-apps-metaverse-benefits-2-description": "Las identidades son propias de los usuarios con oportunidades sin límites para explorar y crear redes sociales a través de múltiples mundos virtuales.",
- "page-apps-metaverse-button": "Metaverso",
- "page-apps-metaverse-title": "Metaverso",
- "page-apps-metaverse-description": "Hay aplicaciones que le permiten a los usuarios participar libremente en mundos virtuales. Los usuarios pueden formar redes personales y ser los propietarios de activos digitales",
- "page-apps-mirror-logo-alt": "Logotipo de Mirror",
- "page-apps-mobile-options-header": "Buscar otra categoría",
- "page-apps-multichain-logo-alt": "Logotipo de Multichain",
- "page-apps-nifty-gateway-logo-alt": "Logo de Nifty Gateway",
- "page-apps-summerfi-logo-alt": "Logo de Summer.fi",
- "page-apps-opensea-logo-alt": "Logo de OpenSea",
- "page-apps-opera-logo-alt": "Logo de Opera",
- "page-apps-osuvox-logo-alt": "Logotipo de OSUVOX",
- "page-apps-polymarket-logo-alt": "Logo de Polymarket",
- "page-apps-poap-logo-alt": "Logo de Proof of Attendance Protocol",
- "page-apps-pooltogether-logo-alt": "Logo de PoolTogether",
- "page-apps-rarible-logo-alt": "Logo de Rarible",
- "page-apps-ready-button": "Ir",
- "page-apps-ready-description": "Elija una DApp para probar",
- "page-apps-ready-title": "¿Listo?",
- "page-apps-request-finance-logo-alt": "Logo de Request Finance",
- "page-apps-sablier-logo-alt": "Logo de Sablier",
- "page-apps-set-up-a-wallet-button": "Encontrar cartera",
- "page-apps-set-up-a-wallet-description": "Una cartera es su inicio de sesión para una DApp",
- "page-apps-set-up-a-wallet-title": "Configurar una cartera",
- "page-apps-social-button": "Social",
- "page-apps-social-description": "Estas son aplicaciones que se centran en crear redes sociales descentralizadas utilizando tecnologías de identidad también descentralizadas donde las identidades digitales y las huellas sociales son propiedad de los usuarios.",
- "page-apps-social-title": "Social",
- "page-apps-spatial-logo-alt": "Logotipo de Spatial",
- "page-apps-spruce-logo-alt": "Logotipo de Spruce",
- "page-apps-status-logo-alt": "Logotipo de Status",
- "page-apps-superrare-logo-alt": "Logo de SuperRare",
- "page-apps-technology-button": "Tecnología",
- "page-apps-technology-description": "Estas son aplicaciones que se centran en descentralizar las herramientas de los desarrolladores, incorporar sistemas criptoeconómicos a la tecnología existente y crear mercados para el trabajo de desarrollo de código abierto.",
- "page-apps-technology-title": "Tecnología descentralizada",
- "page-apps-uniswap-logo-alt": "Logo de Uniswap",
- "page-apps-wallet-callout-button": "Encontrar cartera",
- "page-apps-wallet-callout-description": "Las carteras también son DApps. Encuentre una basada en las características que le convengan.",
- "page-apps-wallet-callout-image-alt": "Imagen de un robot.",
- "page-apps-wallet-callout-title": "Ver carteras",
- "page-apps-warning-header": "Investigue siempre por su cuenta",
- "page-apps-warning-message": "Ethereum es una nueva tecnología y la mayoría de las aplicaciones son nuevas. Antes de depositar grandes cantidades de dinero, asegúrese de entender los riesgos.",
- "page-apps-what-are-dapps": "¿Qué son las DApps?",
- "page-apps-more-on-defi-button": "Más sobre finanzas descentralizadas",
- "page-apps-more-on-nft-button": "Más sobre coleccionables tokenizados",
- "page-apps-more-on-nft-gaming-button": "Más sobre objetos de juegos tokenizados",
- "page-apps-dapp-description-pwn": "Préstamos fáciles respaldados por cualquier token o NFT en Ethereum.",
- "page-apps-pwn-image-alt": "Logo de PWN",
- "page-apps-xmtp-logo-alt": "Logotipo de XMTP",
- "opage-apps-yearn-logo-alt": "Logo de Yearn",
- "page-apps-yearn-image-alt": "Logo de Yearn",
- "page-apps-convex-image-alt": "Logo de Convex",
+ "page-apps-dapp-description-augur": "Apueste por los resultados. Comercie en mercados de información.",
+ "page-apps-ready-button": "Go",
"foundation": "Foundation",
"page-wallets-get-some": "Obtener ETH",
- "page-apps-dapp-description-curve": "Curvees un intercambio descentralizado (DEX) enfocado en las monedas estables",
- "page-apps-curve-image-alt": "Logotipo de Curve",
- "page-apps-dapp-description-artblocks": "Art Blocks se dedica a dar vida a fascinantes obras de arte generativo contemporáneo",
- "page-apps-artblocks-image-alt": "Logotipo de Art Blocks",
- "page-apps-explore-title": "¿Quiere explorar más apps?",
- "page-apps-explore": "Revise cientos de dapps",
- "page-apps-dapp-description-across": "Across es un puente multicadena que permite a los usuarios transferir activos entre distintas cadenas.",
- "page-apps-dapp-description-hop": "Hop es un puente multicadena que permite a los usuarios transferir activos entre distintas cadenas.",
- "page-apps-dapp-description-stargate": "Stargate es un puente multicadena que permite a los usuarios transferir activos entre distintas cadenas."
-}
+ "page-apps-title": "Aplicaciones",
+ "page-apps-subtitle": "Descubra una lista de aplicaciones seleccionadas que se ejecutan en Ethereum y en redes de capa 2",
+ "page-apps-learn-button": "Conozca mejor las aplicaciones",
+ "page-apps-highlights-title": "Aspectos relevantes",
+ "page-apps-discover-title": "Descubra",
+ "page-apps-applications-title": "Aplicaciones",
+ "page-apps-categories-title": "Categorías de aplicaciones",
+ "page-apps-community-picks-title": "Lo que ha seleccionado la comunidad",
+ "page-apps-meta-title": "Las mejores aplicaciones de criptografía en Ethereum",
+ "page-apps-meta-description": "Descubra aplicaciones criptográficas en Ethereum: explore aplicaciones descentralizadas de DeFi, NFT, sociales, videojuegos, puentes, privacidad, productividad y DAO. Encuentre aplicaciones en cadena de confianza para hacer transacciones, ganar e interactuar.",
+ "page-apps-category-defi-name": "DeFi",
+ "page-apps-category-defi-description": "DeFi es una categoría de aplicaciones descentralizadas que permite a los usuarios prestar, solicitar, operar y ganar intereses sobre sus activos criptográficos.",
+ "page-apps-category-defi-meta-title": "Una lista de aplicaciones DeFI: prestar, pedir prestado y obtener rendimiento",
+ "page-apps-category-defi-meta-description": "Explore las mejores aplicaciones DeFi en Ethereum para financiación, préstamos, emisión de monedas estables, crédito y comercio descentralizado en cadena.",
+ "page-apps-category-collectibles-name": "Coleccionables",
+ "page-apps-category-collectibles-description": "Los artículos coleccionables son activos digitales únicos que no se pueden replicar.",
+ "page-apps-category-collectibles-meta-title": "Una lista de las mejores aplicaciones de NTF en Ethereum",
+ "page-apps-category-collectibles-meta-description": "Explore las mejores aplicaciones de NFT para comprar objetos de colección, intercambiar aspectos de personajes en videojuegos y descubrir nuevos activos digitales en los principales mercados de Etereum.",
+ "page-apps-category-social-name": "Social",
+ "page-apps-category-social-description": "Social es una categoría de aplicaciones descentralizadas que permite a los usuarios comunicarse entre sí y compartir contenido.",
+ "page-apps-category-social-meta-title": "Aplicaciones sociales en Ethereum: Farcaster, Zora y muchas más",
+ "page-apps-category-social-meta-description": "Explore las mejores aplicaciones sociales y de mensajería en Ethereum.",
+ "page-apps-category-gaming-name": "Juegos",
+ "page-apps-category-gaming-description": "Videojuegos es una categoría de aplicaciones descentralizadas que permite a los usuarios jugar y obtener recompensas.",
+ "page-apps-category-gaming-meta-title": "Una lista de juegos NFT y de criptomonedas en Ethereum",
+ "page-apps-category-gaming-meta-description": "Descubra los mejores juegos de cadena de bloques que son amenos. MMORPG, juegos de cartas, IA, RPG y otros juegos desenfadados",
+ "page-apps-category-bridge-name": "Puenteo",
+ "page-apps-category-bridge-description": "Un puente es una categoría de aplicaciones descentralizadas que permite a los usuarios vincular sus activos entre diferentes redes.",
+ "page-apps-category-bridge-meta-title": "Una lista de puentes de Ethereum a otras redes",
+ "page-apps-category-bridge-meta-description": "Descubra las mejores aplicaciones para mover sus activos entre las diferentes redes y capa 2.",
+ "page-apps-category-productivity-name": "Productividad",
+ "page-apps-category-productivity-description": "Productividad es una categoría dentro de las aplicaciones descentralizadas que permite a los usuarios ser productivos.",
+ "page-apps-category-productivity-meta-title": "Aplicaciones de productividad e identidad descentralizadas",
+ "page-apps-category-productivity-meta-description": "Explore las mejores aplicaciones en Ethereum de identidad descentralizada, almacenamiento, DNS y computación de vídeos. Aumente su productividad en cadena con herramientas de infraestructuras de confianza.",
+ "page-apps-category-privacy-name": "Privacidad",
+ "page-apps-category-privacy-description": "La privacidad es una categoría dentro de las aplicaciones descentralizadas que le permite a los usuarios mantener su privacidad.",
+ "page-apps-category-privacy-meta-title": "Aplicaciones en Ethereum para conservar su privacidad: Tornado cash y muchas otras",
+ "page-apps-category-privacy-meta-description": "Explore las aplicaciones de Ethereum centradas en la privacidad como Tornado Cash y otras que protegen el anonimato del usuario, permiten transacciones privadas y mejoran la confidencialidad en cadena.",
+ "page-apps-category-dao-name": "DAO",
+ "page-apps-category-dao-description": "DAO es una categoría de las aplicaciones descentralizadas que le permiten a los usuarios gobernar y crear organizaciones autónomas descentralizadas.",
+ "page-apps-category-dao-meta-title": "Una lista de herramientas para DAO en Ethereum",
+ "page-apps-category-dao-meta-description": "Descubra las mejores herramientas DAO en Ethereum para la gobernanza, gestión de tesorería, votación y coordinación de contribuyentes. Inicie, administre y haga crecer su organización descentralizada.",
+ "page-apps-see-all": "Ver todo",
+ "page-apps-suggest-an-app-title": "Sugerir una aplicación",
+ "page-apps-suggest-an-app-description": "Siempre estamos buscando nuevas aplicaciones para añadir a nuestra lista. Si conoce una aplicación que cree que debería estar en la lista, comuníquenoslo.",
+ "page-apps-suggest-an-app-button": "Sugerir una aplicación",
+ "page-apps-filter-by": "Filtrar por",
+ "page-apps-filter-all": "Todo",
+ "page-apps-showing": "Mostrando",
+ "page-apps-visit-app": "Visite {appName}",
+ "page-apps-see-next": "Ver siguiente",
+ "page-apps-info-title": "Información",
+ "page-apps-info-founded": "Fundado",
+ "page-apps-info-creator": "Creador",
+ "page-apps-info-last-updated": "Última actualización",
+ "page-apps-gallery-title": "Galería",
+ "page-apps-more-apps-like-this": "Más aplicaciones similares a esta",
+ "page-apps-today": "Hoy",
+ "page-apps-one-day-ago": "Hace 1 día",
+ "page-apps-days-ago": "hace {days} días"
+}
\ No newline at end of file
From 800dd5e5d9defbbc77a3e98a62f2dfde38ca3f60 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:14 -0300
Subject: [PATCH 061/589] update(i18n):
public/content/translations/es/payments/index.md
---
.../content/translations/es/payments/index.md | 189 ++++++++++++++++++
1 file changed, 189 insertions(+)
create mode 100644 public/content/translations/es/payments/index.md
diff --git a/public/content/translations/es/payments/index.md b/public/content/translations/es/payments/index.md
new file mode 100644
index 00000000000..ca7b50b8e9b
--- /dev/null
+++ b/public/content/translations/es/payments/index.md
@@ -0,0 +1,189 @@
+---
+title: Pagos con Ethereum
+metaTitle: Pagos en Ethereum
+description: Los pagos en Ethereum de un vistazo
+lang: es
+template: use-cases
+emoji: ":frame_with_picture:"
+sidebarDepth: 2
+image: /images/impact_transparent.png
+alt: Un logo de Ethereum aparece junto a manos extendidas.
+summaryPoint1: Un mundo en que el dinero se mueve tan libremente como la información
+summaryPoint2: Abierto y global, permite a cualquier persona realizar transacciones sin fronteras
+summaryPoint3: Pagos recibidos en un minuto
+---
+
+A diario son millones las personas que encaran el mismo desafío: transferir dinero entre países es lento, caro y, a menudo, frustrante. Un freelancer en Bali espera días para recibir el pago de su cliente desde Nueva York. Esto afecta sobre todo a personas de regiones con una infraestructura bancaria limitada, dificultando su participación en la economía mundial.
+
+Esto no es un sueño lejano: está sucediendo hoy en Ethereum. Si bien las instituciones financieras tradicionales han construido sistemas de pago sólidos durante décadas, a menudo continúan limitados por las fronteras, los horarios de trabajo y la infraestructura heredada. Ethereum ofrece un nuevo paradigma: una plataforma financiera global que funciona las 24 horas del día, 7 días por semana y que permite realizar transacciones casi instantáneas y programables a cualquier persona con acceso a internet.
+
+
+
+
+
+
+
+## Remesas: transferencias internacionales más baratas {#remittances}
+
+Para millones de personas que trabajan en el extranjero, enviar dinero a casa es una necesidad habitual. Los servicios tradicionales de envío de remesas suelen cobrar comisiones elevadas y procesar estas transferencias con lentitud. Ethereum ofrece una alternativa atractiva.
+
+
+
+
+
+
+
+## Acceso a monedas globales {#access-to-global-currencies}
+
+La inflación es una fuerte preocupación en muchos países, a menudo asociada a un acceso limitado a las divisas extranjeras. Las personas en estas situaciones luchan por preservar su riqueza, ya que se ven obligadas a mantener ahorros que se deprecian rápidamente.
+
+La comunidad de Ethereum ha creado **un sistema financiero alternativo sólido** que no depende de las políticas ni del control monetario de las naciones.
+
+Los usuarios de Ethereum pueden utilizar **monedas estables, es decir, tókenes vinculados a monedas fuertes como el dólar estadounidense**. Al ganar y ahorrar en criptomonedas, las personas pueden protegerse de la alta inflación en su país, lo que contribuye a preservar o incluso aumentar su poder adquisitivo. Esto también facilita los pagos de bienes y servicios, tanto a escala local como global.
+
+
+ Para conocer más a fondo las monedas estables
+
+## Compra de bienes y pago de servicios {#buying-goods-and-payment-for-services}
+
+Muchas empresas están empezando a aceptar Ether (ETH) y otras criptomonedas como forma de pago. Por ejemplo:
+
+- **Newegg.**: el popular minorista de productos electrónicos acepta Ethereum como forma de pago en algunos países.
+- **Travala.com:** esta plataforma de reservas de viajes permite a los usuarios pagar hoteles y vuelos usando Ethereum.
+- **Shopify:** esta reconocida plataforma de comercio electrónico que sirve para alojar negocios también acepta pagos de bienes y servicios mediante Ethereum.
+- **Sotheby's:** Esta organización comercia arte fino y decorativo, joyas y objetos de colección, y permite pagos usando Ethereum y otras criptomonedas.
+
+Países como El Salvador y la República Centroafricana incluso han adoptado las criptomonedas como moneda de curso legal, abriendo el camino para una aceptación más amplia de los pagos con Ethereum en las transacciones cotidianas.
+
+En países cuyos medios de pago están desconectados del resto del mundo, las soluciones de pago integradas con criptomonedas han sido un gran alivio. Los pagos de suscripciones a plataformas como Netflix, Spotify y cursos educativos son ahora más sencillos gracias a plataformas de pagos con criptomonedas como Gnosis Pay y Paypal.
+
+
+
+
+
Cree su cuenta de Ethereum con una aplicación de cartera hoy.
+
+Comenzar
+
+
+
+## Pague con tarjetas cripto de autocustodia {#pay-with-self-custodial-crypto-cards}
+
+Las tarjetas cripto de autocustodia funcionan como usar su propia mochila en lugar de guardar su dinero en la bóveda de otra persona. Con una tarjeta tradicional, un banco o custodio mantiene sus fondos y los libera cuando usted gasta. Con las tarjetas de autocustodia, usted mantiene el control de sus activos en todo momento—sin intermediarios—a la vez que puede pagar con un toque o deslizamiento por café, víveres o incluso un vuelo.
+
+Estas tarjetas se vinculan directamente a billeteras no custodiadas o cuentas de smart contract, permitiendo a los usuarios gastar ETH y stablecoins en situaciones cotidianas sin perder la propiedad. A diferencia de las tarjetas custodiadas, que requieren que los usuarios depositen fondos en un tercero, las tarjetas de autocustodia permiten pagos en el mundo real, como Visa y Mastercard, mientras se conserva el control onchain.
+
+### Ejemplos {#crypto-cards-examples}
+
+- **MetaMask Card:** Vinculada a la billetera MetaMask, esta tarjeta de débito Mastercard permite a los usuarios gastar ETH, stablecoins y otros tokens compatibles. Es compatible con Apple Pay y Google Pay, incluye recompensas de cashback en cripto y ofrece opciones para generar rendimientos.
+
+- **Tuyo Card:** Una tarjeta Visa basada en smart contract que convierte automáticamente cripto a USDC para gastar en cualquier lugar donde se acepte Visa. Los usuarios mantienen la custodia de sus activos, con acceso a rendimientos, funciones de trading y de gasto.
+
+- **Gnosis Pay:** La primera tarjeta Visa de autocustodia vinculada a una cuenta inteligente Gnosis Safe. Los usuarios gastan cripto directamente desde su billetera sin tarifas de gas, FX o de salida a dinero fiduciario. La personalización de la tarjeta mediante Ethereum Name Service (ENS) también está disponible.
+
+- **Ether.Fi Cash card:** Integrada con el protocolo de staking de ether.fi, esta tarjeta permite a los usuarios gastar mientras su ETH permanece en staking. Los pagos se procesan mediante smart contracts, manteniendo la autocustodia incluso mientras se gasta.
+
+### Comparativa de tarjetas cripto de autocustodia {#crypto-card-custody-comparison}
+
+| **Tarjeta cripto** | **Autocustodia** | **Sin custodia** | **Notas clave** |
+| ----------------------------- | :--------------: | :--------------: | ------------------------------------------------------------------------------------------- |
+| MetaMask Card | ✅ | ✅ | La billetera permanece en MetaMask; conversión instantánea al pagar |
+| Tuyo Card | ✅ | ✅ | La billetera inteligente convierte a USDC; el usuario mantiene el control |
+| Gnosis Pay | ✅ | ✅ | Vinculada al Gnosis Safe del usuario; no cambia la custodia durante el uso |
+| Ether.Fi Cash | ✅ | ✅ | El ETH permanece en staking; el smart contract controla el acceso al gasto. |
+
+> **Nota:** “Autocustodia” se refiere a billeteras controladas por el usuario, donde la persona tiene acceso y control total sobre sus fondos.
+> “No custodiada” se refiere a billeteras donde los fondos se gestionan sin la custodia de un tercero, a menudo mediante smart contracts.
+> Si bien todas las tarjetas de autocustodia son no custodiadas, no todas las tarjetas no custodiadas son de autocustodia.
+
+## Pagos de salario {#salary-payments}
+
+Muchas empresas con visión de futuro están ofreciendo a sus colaboradores la opción de recibir el pago de su salario, o una parte de él, en criptomonedas como el Ether (ETH):
+
+- **Gipsybee:** es una organización que se dedica a la electrónica, robótica, creación de juegos y otros servicios. Ofrece a sus colaboradores la opción de ser remunerados en Ethereum.
+- **SC5:** esta empresa finlandesa fue una de las primeras en ofrecer salarios en bitcoin, abriendo camino a acuerdos de pago similares con Ethereum.
+- **Empresas emergentes de cadena de bloques**: muchas empresas del sector de la cadena de bloques ofrecen, libremente, el cobro del salario en criptomonedas a sus empleados.
+- DAO: debido a la singularidad y diversidad de sus participantes, la mayoría de las contribuciones y salarios se recompensa en criptomonedas.
+
+Esta tendencia resulta especialmente atractiva para los trabajadores a distancia y los nómadas digitales, que pueden beneficiarse de pagos transfronterizos y tipos de cambio potencialmente favorables.
+
+
+
+## Esfuerzos globales de ayuda {#global-relief-efforts}
+
+En febrero de 2023, cuando terremotos devastadores sacudieron Turquía y Siria, la comunidad mundial de cripto se movilizó. Se pusieron en marcha varias campañas para recaudar fondos destinados a iniciativas de de socorro, mostrando el poder de Ethereum en tiempos de crisis. Pese a que las criptomonedas [no son una forma de pago reconocida en Turquía](https://www.reuters.com/technology/no-more-kebabs-bitcoins-turkeys-crypto-payment-ban-looms-2021-04-28/), las autoridades hicieron [excepciones](https://x.com/haluklevent/status/1622913175409623041) para que determinadas organizaciones recaudaran donativos. Algunos ejemplos son:
+
+- [Refik Anadol](https://x.com/refikanadol/status/1622623521104089090): es un conocido artista digital que inició una campaña de recaudación de fondos.
+- Poder DAO: [Anka Relief DAO](https://ankarelief.org/) y [Bankless DAO](https://x.com/banklessDAO) unieron fuerzas con [Giveth](https://x.com/Giveth/status/1623493672149843969) para recaudar fondos.
+- [Pak](https://cause.quest/), un prominente artista de NFT, también contribuyó a la causa.
+- El propio cofundador de Ethereum [Vitalik Buterin](https://cointelegraph.com/news/vitalik-buterin-donates-227k-to-help-earthquake-victims-in-turkey-syria) efectuó donaciones particulares a múltiples campañas.
+
+¿Y cuál fue el resultado? Se recaudaron más de 6 millones de dólares en cuestión de días, según el panel de [Dune](https://dune.com/davy42/turkiye-earthquake-donations) Analytics.
+
+También se registró una respuesta similar ante las tragedias ocurridas en India y Ucrania. Esta rápida reacción evidencia una ventaja clave de los pagos con Ethereum: la capacidad de movilizar con rapidez el apoyo mundial sin los obstáculos de la conversión de divisas, las transferencias bancarias lentas o las comisiones exorbitantes.
+
+
+
+
+
+
+
+## Ethereum o fiat {#ethereum-vs-fiat}
+
+Para realmente comprender el impacto de los pagos con Ethereum, es útil compararlos con las monedas fiduciarias tradicionales:
+
+| | **Ethereum** | **Bancos tradicionales** |
+| ------------------------------ | --------------------------------------------------- | --------------------------------------------------------------------- |
+| **Velocidad de procesamiento** | De segundos a minutos | De horas a días |
+| **Alcance global** | Sin fronteras, 24 horas del día / 7 días por semana | Sujeto a restricciones bancarias internacionales y horarios laborales |
+| **Transparencia** | Totalmente transparente | Varía según la institución |
+| **Programabilidad** | Contratos inteligentes habilitados | Limitada a transacciones básicas |
+| **Control de la inflación** | Emisión predecible | Sujeto a políticas de banco central |
+| **Accesibilidad** | Toda persona con internet | Sujeto a restricciones nacionales e internacionales |
+
+En esencia, Ethereum es una plataforma descentralizada que permite realizar transacciones seguras, rápidas y transparentes. Sin embargo, muchos componentes la diferencian de los métodos de pago tradicionales. Analicemos las ventajas que hacen que los pagos con Ethereum revolucionen las reglas del juego:
+
+### Programabilidad {#programmability}
+
+Una de las características únicas de Ethereum es su capacidad para admitir contratos inteligentes. Los contratos inteligentes son acuerdos autoejecutables cuyos términos se escriben directamente en el código. Esto abre un mundo de posibilidades para los pagos automatizados, basados en condiciones y que pueden mejorar en gran medida las transacciones como:
+
+- Servicios de custodia
+- Pagos recurrentes
+- Compensación basada en el desempeño
+
+### Velocidad de procesamiento {#speed}
+
+¿Recuerda la última vez que esperó días para que se procesara una transferencia bancaria internacional? ¿La fila interminable? ¿Y los múltiples formularios que tuvo que completar? Con Ethereum, eso ya es historia. Las transacciones en la red Ethereum se realizan en minutos, sin importar dónde se encuentren el remitente y el destinatario. Dado que Ethereum no requiere permisos, no existe burocracia reguladora a la hora de enviar dinero. Esta rapidez es crucial en situaciones de críticas, como las campañas de ayuda ante emergencias.
+
+### Comisiones más bajas {#lower-fees}
+
+Las tradicionales comisiones de transferencia internacional de dinero a veces absorben una parte significativa del montante enviado, especialmente si se trata de transacciones de cientos de dólares. Aunque las transacciones con Ethereum no son gratuitas, suelen tener unas comisiones más bajas. Esto significa que una mayor parte de su dinero llega a destino, en lugar de llenar los bolsillos de los intermediarios del envio.
+
+### Transparencia {#transparency}
+
+Cada transacción en la cadena de bloques de Ethereum se registra en un libro mayor público. Esto significa que cualquier persona puede verificar el movimiento de fondos, lo que la convierte en una excelente herramienta para:
+
+- Las organizaciones benéficas que quieran demostrar el uso que dan a las donaciones.
+- Las empresas que comprueban los pagos a proveedores o empleados.
+- Particulares que controlan sus actividades financieras.
+
+Con Ethereum, cualquier persona puede ver cómo se mueve el dinero y cómo se aplican los costes, a diferencia de lo que ocurre en los mecanismos tradicionales, donde la mayor parte de estos datos permanecen ocultos.
+
+
+
+
+
+
+
+Aunque las monedas fiduciarias tienen la ventaja de su amplia aceptación y estabilidad, Ethereum ofrece ventajas únicas que la convierten en una opción atractiva para determinados tipos de transacciones.
+
+Desde facilitar la ayuda rápida en desastres hasta empoderar a trabajadores en todo el mundo, los pagos con Ethereum están escribiendo un nuevo capítulo en la extensa historia del dinero. Aunque siguen existiendo desafíos, las ventajas únicas que ofrece esta tecnología la convierten en una opción atractiva para una amplia gama de casos de uso.
+
+
+
+
+
Es hora de crear su propia cuenta en Ethereum.
+
+ ¡Comience ya!
+
+
+
\ No newline at end of file
From 0d8276a7bab96b6e1505c3112e3138c98ddf90d0 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:15 -0300
Subject: [PATCH 062/589] update(i18n):
public/content/translations/es/security/index.md
---
.../content/translations/es/security/index.md | 145 +++++++++---------
1 file changed, 73 insertions(+), 72 deletions(-)
diff --git a/public/content/translations/es/security/index.md b/public/content/translations/es/security/index.md
index c002ac7668e..ead7f6172ef 100644
--- a/public/content/translations/es/security/index.md
+++ b/public/content/translations/es/security/index.md
@@ -4,7 +4,7 @@ description: Actuar con seguridad en Ethereum
lang: es
---
-# Seguridad en Ethereum y la prevención de fraude {#introduction}
+# Seguridad en Ethereum y prevención de estafas {#introduction}
El creciente interés en criptomonedas trae consigo un aumento de riesgo a causa de estafadores y hackers. Este artículo establece algunas de las mejores prácticas para mitigar estos riesgos.
@@ -12,9 +12,9 @@ El creciente interés en criptomonedas trae consigo un aumento de riesgo a causa
-## Seguridad de criptomonedas 101 {#crypto-security}
+## Seguridad en cripto 101 {#crypto-security}
-### Amplíe sus conocimientos {#level-up-your-knowledge}
+### Mejore su conocimiento {#level-up-your-knowledge}
Los malentendidos sobre cómo funcionan las criptomonedas pueden conducir a errores muy costosos. Por ejemplo, si alguien pretende ser un agente de servicio al cliente que ofrece recuperar ETH perdido a cambio de sus claves privadas, está pretendiendo aprovecharse de gente que no entiende que Ethereum es una red descentralizada carente de este tipo de funcionalidad. Vale la pena dedicar tiempo a conocer el funcionamiento de Ethereum.
@@ -23,15 +23,15 @@ Los malentendidos sobre cómo funcionan las criptomonedas pueden conducir a erro
- ¿Qué es el ether?
+ ¿Qué es ether?
-## Seguridad de la billetera {#wallet-security}
+## Seguridad de la cartera {#wallet-security}
-### No entregue sus claves privadas {#protect-private-keys}
+### No comparta sus claves privadas {#protect-private-keys}
-**¡Nunca, por ningún motivo, comparta sus claves privadas!**
+**¡Nunca, bajo ninguna circunstancia, comparta sus claves privadas!**
La clave privada de su billetera digital es la contraseña para acceder a su billetera de Ethereum. ¡Es lo único que impide que alguien que conozca la dirección de su billetera saque todos los activos de su cuenta!
@@ -43,30 +43,31 @@ La clave privada de su billetera digital es la contraseña para acceder a su bil
Hacer capturas de pantalla de sus frases semilla o claves privadas podría sincronizarlas con un proveedor de datos en la nube, lo cual podría hacerlas accesibles a los hackers. Obtener claves privadas de la nube es un vector de ataque común para los hackers.
-### Use una billetera de hardware {#use-hardware-wallet}
+### Utilice una cartera hardware {#use-hardware-wallet}
Una billetera de hardware proporciona almacenamiento sin conexión para claves privadas. Son considerados la opción de billetera más segura para almacenar sus claves privadas: su clave privada nunca toca Internet y permanece completamente local en su dispositivo.
Mantener las claves privadas sin conexión reduce altamente el riesgo de se pirateen, incluso si un hacker llega a controlar su computadora.
-#### Pruebe una billetera de hardware: {#try-hardware-wallet}
+#### Pruebe una cartera hardware: {#try-hardware-wallet}
- [Ledger](https://www.ledger.com/)
- [Trezor](https://trezor.io/)
-### Compruebe las transacciones antes de enviarlas {#double-check-transactions}
+### Verifique dos veces las transacciones antes de enviar {#double-check-transactions}
-El envío accidental de criptomonedas a una dirección de cartera errónea suele ocurrir frecuentemente. **Una transacción enviada en Ethereum es irreversible.** A menos que conozca al propietario de la dirección y pueda convencerlo de regresarle sus fondos, no le será posible recuperarlos.
+El envío accidental de criptomonedas a una dirección de cartera errónea suele ocurrir frecuentemente. **Una transacción enviada en Ethereum es irreversible.** A menos que conozca al propietario de la dirección y pueda convencerle de devolverle sus fondos, no podrá recuperarlos.
-Asegúrese siempre de que la dirección a la que está enviando los fondos sea exactamente igual que la dirección deseada del destinatario antes de enviar una transacción. Es una buena práctica cuando interactúa con un contrato inteligente leer el mensaje de la transacción antes de firmarla.
+Asegúrese siempre de que la dirección a la que está enviando los fondos sea exactamente igual que la dirección deseada del destinatario antes de enviar una transacción.
+Es una buena práctica cuando interactúa con un contrato inteligente leer el mensaje de la transacción antes de firmarla.
-### Establezca límites de gasto de contratos inteligentes {#spend-limits}
+### Establezca límites de gasto en contratos inteligentes {#spend-limits}
Cuando firme contratos inteligentes, no permita un techo ilimitado de gasto. Un gasto ilimitado podría permitir que el contrato inteligente vaciara su cartera. En cambio, fije límites de gasto a tan solo la cantidad necesaria para la transacción.
Muchas carteras de Ethereum ofrecen una protección de límites para evitar que las cuentas se vacíen.
-[Cómo revocar el acceso al contrato inteligente a sus fondos en criptomonedas](/guides/how-to-revoke-token-access/)
+[Cómo revocar el acceso de los contratos inteligentes a sus fondos cripto](/guides/how-to-revoke-token-access/)
@@ -78,19 +79,19 @@ Es imposible parar a los estafadores completamente, pero podemos hacerlos menos
- nadie le va a dar ETH gratis o con descuento
- nadie necesita tener acceso a sus claves privadas o su información personal.
-### Phising publicitario en Twitter {#ad-phishing}
+### Phishing en anuncios de Twitter {#ad-phishing}
-
+
-Existe un método para falsificar la función de vista previa de enlaces (desplegable) de Twitter (también conocida como X) para potencialmente engañar a los usuarios haciéndoles creer que están visitando un sitio web legítimo. Esta técnica explota el mecanismo de Twitter para generar vistas previas de URL compartidas en los tuits y muestra _de ethereum.org_ por ejemplo (mostrado arriba), cuando en realidad están siendo redirigidos a un sitio malicioso.
+Existe un método para falsificar la función de vista previa de enlaces (desplegable) de Twitter (también conocida como X) para potencialmente engañar a los usuarios haciéndoles creer que están visitando un sitio web legítimo. Esta técnica explota el mecanismo de Twitter para generar vistas previas de URLs compartidas en tweets, y muestra _de ethereum.org_ por ejemplo (como se muestra arriba), cuando en realidad están redirigiendo a un sitio malicioso.
Verifique siempre que está en el dominio correcto, especialmente después de hacer clic en un enlace.
[Más información aquí](https://harrydenley.com/faking-twitter-unfurling).
-### La estafa de los regalos {#giveaway}
+### Estafa de sorteos {#giveaway}
-Una de las estafas más comunes en torno a las criptomonedas es la de ofrecer regalos. La estafa de los regalos engañosos puede tomar muchas formas, pero la idea general es que, si usted envía ETH a la dirección de la billetera digital proporcionada, recibirá su ETH de vuelta pero duplicado. *Por esta razón, también se la conoce como estafa del 2 por 1.*
+Una de las estafas más comunes en torno a las criptomonedas es la de ofrecer regalos. La estafa de los regalos engañosos puede tomar muchas formas, pero la idea general es que, si usted envía ETH a la dirección de la billetera digital proporcionada, recibirá su ETH de vuelta pero duplicado._Por esta razón, también se la conoce como estafa del 2 por 1._
Estas estafas usualmente estipulan un límite de tiempo de oportunidad para reclamar el regalo para crear una falsa sensación de urgencia.
@@ -98,17 +99,17 @@ Estas estafas usualmente estipulan un límite de tiempo de oportunidad para recl
Un ejemplo concreto de esto a gran escala ocurrió en julio de 2020 cuando cuentas de Twitter de celebridades y organizaciones destacadas fueron hackeadas. El hacker publicó simultáneamente una oferta de regalar Bitcoin en las diferentes cuentas hackeadas. Aunque los tweets engañosos se detectaron y eliminaron rápidamente, los hackers lograron igualmente hacerse con 11 bitcoins (o $500.000 en septiembre de 2021).
-
+
-### Regalo de celebridades {#celebrity-giveaway}
+### Sorteo de celebridades {#celebrity-giveaway}
-Que las celebridades hagan un regalo suele ser otra estafa común. Los estafadores toman una entrevista de video grabada o charla de una conferencia que haya realizado alguien famoso y la retransmiten en directo en YouTube, haciendo que aparezca como si la persona famosa estuviera haciendo una entrevista de video en directo apoyando una oferta de criptomonedas como regalo.
+Que las celebridades hagan un regalo suele ser otra estafa común. Los estafadores toman una entrevista grabada o una charla en conferencia dada por una celebridad y la transmiten en vivo en YouTube, haciendo parecer que la celebridad está dando una entrevista en vivo respaldando un sorteo de criptomonedas.
-Para este tipo de estafa, se suele elegir a Vitalik Buterin, aunque tales tentativas también utilizan la imagen de muchas otras personas prominentes involucradas en las criptomonedas (como Elon Musk o Charles Hoskinson). Incluir a una persona conocida da a los estafadores sentido de legitimidad (la situación parece sospechosa, pero, si Vitalik, ¡debe ser real!).
+Para este tipo de estafa, se suele elegir a Vitalik Buterin, aunque tales tentativas también utilizan la imagen de muchas otras personas prominentes involucradas en las criptomonedas (p. ej., Elon Musk o Charles Hoskinson). Incluir a una persona conocida da a los estafadores sentido de legitimidad (la situación parece sospechosa, pero, si Vitalik, ¡debe ser real!).
**Los regalos son siempre estafas. Si envía sus fondos a estas cuentas, los perderá para siempre.**
-
+
### Estafas de soporte {#support-scams}
@@ -116,7 +117,7 @@ Las criptomonedas son una tecnología relativamente nueva y mal entendida. Un fr
Gran parte del debate sobre Ethereum tiene lugar en Discord. Los estafadores que ofrecen soporte técnico generalmente encontrarán a sus víctimas buscando preguntas de soporte en canales de Discord públicos y luego enviando al solicitante un mensaje privado para ofrecer soporte. Al ganarse su confianza, los estafadores de soporte técnico intentarán engañarlo para que revele sus claves privadas o les envíe fondos a sus billeteras.
-
+
Como norma general, el personal nunca se comunicará con usted a través de canales privados no oficiales. He aquí algunas cosas sencillas que debe tener en cuenta cuando trate con Soporte:
@@ -133,15 +134,15 @@ Como norma general, el personal nunca se comunicará con usted a través de cana
-### Estafa del token Eth2 {#eth2-token-scam}
+### Estafa del token 'Eth2' {#eth2-token-scam}
-En el período previo a [La Fusión](/roadmap/merge/), los estafadores se aprovechaban de la confusión en torno al término "Eth2" para intentar que los usuarios canjearan su ETH por un token "ETH2". No existe el "ETH2", y no se introdujo ningún otro token legítimo con La Fusión. El ETH que usted poseía antes de La Fusión es el mismo ETH ahora. No hay **necesidad de realizar ninguna acción relacionada con su ETH para el cambio de prueba de trabajo a prueba de participación**.
+En la antesala de [The Merge](/roadmap/merge/), los estafadores se aprovecharon de la confusión en torno al término 'Eth2' para intentar que los usuarios canjearan su ETH por un token 'ETH2'. No existe el "ETH2", y no se introdujo ningún otro token legítimo con La Fusión. El ETH que usted poseía antes de La Fusión es el mismo ETH ahora. **No es necesario realizar ninguna acción con respecto a su ETH para la transición de proof-of-work a proof-of-stake**.
-Los estafadores pueden presentarse como personal de "soporte", diciéndole que, si deposita ETH, recibirá de vuelta "ETH2". No hay [soporte oficial de Ethereum](/community/support/), y tampoco hay tokens nuevos. Nunca comparta la frase semilla de su billetera con nadie.
+Los estafadores pueden presentarse como personal de "soporte", diciéndole que, si deposita ETH, recibirá de vuelta "ETH2". No existe [soporte oficial de Ethereum](/community/support/), ni tampoco un nuevo token. Nunca comparta la frase semilla de su billetera con nadie.
-_Nota: Hay etiquetas/tokens derivados que pueden representar ETH apostado (p. ej., rETH de Rocket Pool, stETH de Lido, ETH2 de Coinbase), pero son algo a lo que deba "migrar"._
+_Nota: Hay tokens/tickers derivados que pueden representar el ETH en staking (es decir, rETH de Rocket Pool, stETH de Lido, ETH2 de Coinbase), pero no son algo a lo que necesite "migrar"._
-### Estafas de suplantación de identidad {#phishing-scams}
+### Estafas de phishing {#phishing-scams}
Las estafas de suplantación de identidad (o phishing) son otra forma común que los estafadores usarán para intentar robarle los fondos de su billetera.
@@ -153,9 +154,9 @@ Si recibe un correo electrónico de un remitente desconocido, recuerde:
- No facilite nunca su información personal o contraseñas a nadie.
- Elimine correos de remitentes desconocidos.
-[Más información sobre cómo evitar las estafas de suplantación de identidad.](https://support.mycrypto.com/staying-safe/mycrypto-protips-how-not-to-get-scammed-during-ico)
+[Más sobre cómo evitar estafas de phishing](https://support.mycrypto.com/staying-safe/mycrypto-protips-how-not-to-get-scammed-during-ico)
-### Estafas de brokers de trading de criptomonedas {#broker-scams}
+### Estafas de brokers en trading cripto {#broker-scams}
Los operadores del mercado de criptomonedas estafadores pretenden ser intermediarios especialistas que ofrecen tomar su dinero e invertirlo en su nombre. Después de que el estafador recibe sus fondos, podría inducirlo a que envíe más para que no se pierda más posibles ganancias o desaparecer por completo.
@@ -163,9 +164,9 @@ Estos estafadores a menudo buscan sus objetivos usando cuentas falsas en YouTube
**No confíe en extraños de Internet para que inviertan en su nombre. Perderá sus criptomonedas.**
-
+
-### Estafas de fondos de minado de criptomonedas {#mining-pool-scams}
+### Estafas de pools de minería cripto {#mining-pool-scams}
Desde septiembre de 2022, el minado en Ethereum ya no es posible. Sin embargo, las estafas basadas en fondos de minado siguen existiendo. Las estafas de fondos de minado de criptomonedas implican a personas que se ponen en contacto con usted sin haberlo solicitado y que afirman que podría obtener grandes beneficios si se une a un fondo de Ethereum. El estafador le pedirá dinero y permanecerá en contacto con usted todo el tiempo que sea necesario. Esencialmete, el estafador tratará de convencerlo de que, cuando se una a un grupo o fondo de minado, sus criptomonedas se usarán para crear ETH y así se le pagarán dividendos en forma de ETH. Luego usted verá que sus criptomonedas están generando pequeños retornos. Esto es simplemente un anzuelo para que invierta más. Eventualmente, todos sus fondos serán enviados a una dirección desconocida, y el estafador desaparecerá o, en algunos casos, seguirá en contacto como ha ocurrido en un caso reciente.
@@ -177,44 +178,44 @@ He aquí un compendio de puntos para recordar:
- Indague sobre staking, fondos de liquidez u otras formas de invertir sus criptomonedas.
- Rara vez son legítimos esos planes, si es que alguna vez lo son. Y si lo fueran, probablemente serían de dominio público y ya habría oído hablar de ellos.
-[Un hombre pierde $200.000 en una estafa de un fondo de minado](https://www.reddit.com/r/CoinBase/comments/r0qe0e/scam_or_possible_incredible_payout/)
+[Hombre pierde $200,000 en estafa de pool de minería](https://www.reddit.com/r/CoinBase/comments/r0qe0e/scam_or_possible_incredible_payout/)
-### Estafas de distribución de criptomonedas (airdropping) {#airdrop-scams}
+### Estafas de airdrop {#airdrop-scams}
Las estafas de distribución de criptomonedas, o airdropping, implican una tentativa de estafa en el que un proyecto falso distribuye un activo (NFT, token) en su billetera para lo cual deben enviarlo a un un sitio web fraudulento a fin de reclamar el activo distribuido. Se le pedirá que inicie sesión con su billetera de Ethereum y que "apruebe" una transacción al intentar reclamar el activo. Esta transacción compromete su cuenta enviando sus claves públicas y privadas al estafador. Otra forma de esta estafa consiste en pedirle que confirme una transacción en la que se envían fondos a la cuenta del estafador.
-[Más información sobre las estafas de airdropping](https://www.youtube.com/watch?v=LLL_nQp1lGk)
+[Más sobre estafas de airdrop](https://www.youtube.com/watch?v=LLL_nQp1lGk)
-## Seguridad en la Web 101 {#web-security}
+## Seguridad web 101 {#web-security}
-### Utilice contraseñas seguras {#use-strong-passwords}
+### Use contraseñas seguras {#use-strong-passwords}
-[Más del 80% de los ataques a cuentas se producen a causa de contraseñas débiles o robadas](https://cloudnine.com/ediscoverydaily/electronic-discovery/80-percent-hacking-related-breaches-related-password-issues-cybersecurity-trends/). Una gran combinacion de carácteres, números y símbolos ayudará a mantener sus cuentas seguras.
+[Más del 80% de los hackeos de cuentas se deben a contraseñas débiles o robadas](https://cloudnine.com/ediscoverydaily/electronic-discovery/80-percent-hacking-related-breaches-related-password-issues-cybersecurity-trends/). Una gran combinacion de carácteres, números y símbolos ayudará a mantener sus cuentas seguras.
Un error común es usar una combinación de palabras comunmente ralcionadas. Contraseñas como estas son inseguras, ya que son propensas a una técnida de hackeo llamada ataque de diccionario.
```md
-Ejemplo de una contraseña débil: CuteFluffyKittens!
+Ejemplo de contraseña débil: CuteFluffyKittens!
-Ejemplo de una contraseña fuerte: ymv\*azu.EAC8eyp8umf
+Ejemplo de contraseña fuerte: ymv\*azu.EAC8eyp8umf
```
-Otro error común es el uso de contraseñas que se pueden adivinar fácilmente o descubrir a través de [ingeniería social](https://wikipedia.org/wiki/Social_engineering_(security)). Incluir el nombre de soltera de su madre, los nombres de sus hijos o mascotas, o fechas de cumpleaños en su contraseña incrementará el riesgo de ser hackeada.
+Otro error común es usar contraseñas que pueden adivinarse fácilmente o descubrirse mediante [ingeniería social](https://wikipedia.org/wiki/Social_engineering_\(security\)). Incluir el nombre de soltera de su madre, los nombres de sus hijos o mascotas, o fechas de cumpleaños en su contraseña incrementará el riesgo de ser hackeada.
-#### Buenas prácticas de contraseña: {#good-password-practices}
+#### Buenas prácticas para contraseñas: {#good-password-practices}
- Crear las contraseñas más largas que permita su generador de contraseñas o el formulario que está rellenando.
- Usar una mezcla de mayúsculas, minúsculas, números y símbolos.
- No utilizar datos personales, tales como apellidos, en su contraseña.
- Evitar palabras comunes.
-[Más información sobre la creación de contraseñas fuertes.](https://terranovasecurity.com/how-to-create-a-strong-password-in-7-easy-steps/)
+[Más sobre cómo crear contraseñas seguras](https://terranovasecurity.com/how-to-create-a-strong-password-in-7-easy-steps/)
### Use contraseñas únicas para todo {#use-unique-passwords}
-Una contraseña segura que ha sido revelada en una violación de datos deja de ser una contraseña segura. La página web [Have I Been Pwned](https://haveibeenpwned.com) le permite revisar si sus cuentas se han visto involucradas en alguna filtración de datos pública. Si lo han sido, **cambie esas contraseñas inmediatamente**. Usar contraseñas únicas para cada cuenta disminuye el riesgo de que los hackers accedan a todas sus cuentas si una de sus contraseñas ya está comprometida.
+Una contraseña segura que ha sido revelada en una violación de datos deja de ser una contraseña segura. El sitio web [Have I Been Pwned](https://haveibeenpwned.com) le permite comprobar si sus cuentas han estado involucradas en alguna filtración pública de datos. Si es así, **cambie esas contraseñas de inmediato**. Usar contraseñas únicas para cada cuenta disminuye el riesgo de que los hackers accedan a todas sus cuentas si una de sus contraseñas ya está comprometida.
### Use un gestor de contraseñas {#use-password-manager}
@@ -222,7 +223,7 @@ Una contraseña segura que ha sido revelada en una violación de datos deja de s
- Un gestor de contraseñas se encarga de crear contraseñas seguras, únicas y recordarlas. Le aconsejamos vivamente que utilice uno, ¡y la mayoría de ellos son gratis!
+ Un gestor de contraseñas se encarga de crear contraseñas seguras y únicas, ¡y de recordarlas! Le aconsejamos vivamente que utilice uno, ¡y la mayoría de ellos son gratis!
@@ -231,22 +232,22 @@ Recordar contraseñas seguras y únicas para cada cuenta que tenga no es la solu

-#### Pruebe a usar un gestor de contraseñas: {#try-password-manager}
+#### Pruebe un gestor de contraseñas: {#try-password-manager}
- [Bitwarden](https://bitwarden.com/)
- [KeePass](https://keepass.info/)
- [1Password](https://1password.com/)
-- O revise otros [gestores de contraseñas recomendados](https://www.privacytools.io/secure-password-manager)
+- O consulte otros [gestores de contraseñas recomendados](https://www.privacytools.io/secure-password-manager)
-### Use la autenticación de dos factores {#two-factor-authentication}
+### Utilice autenticación de dos factores {#two-factor-authentication}
-En ocasiones le pueden pedir que autentifique su identidad a través de pruebas únicas. Estas son conocidas como **factores**. Los tres factores principales son:
+En ocasiones le pueden pedir que autentifique su identidad a través de pruebas únicas. Estos se conocen como **factores**. Los tres factores principales son:
- Algo que usted sepa (como una contraseña o una pregunta de seguridad).
- Algún rasgo distintivo suyo (como una huella dactilar o un escáner de iris/facial).
- Algo que tenga (una clave de seguridad o una aplicación de autenticación en su teléfono).
-Usar un **Factor de Doble Autenticación (2FA)** provee un *factor de seguridad* adicional para sus cuentas en línea. 2FA asegura que no sea posible acceder a su cuenta con solo tener su contraseña. Lo más común es que el segundo factor sea un código aleatorio de 6 dígitos, conocido como una **contraseña de una sola vez basada en (TOTP)**, que puede acceder a través de una aplicación de autenticación, como Google Authenticator o Authy. Estos funcionan como un factor de «algo que usted posee», porque la semilla que genera el código temporizado se almacena en su dispositivo.
+Usar **autenticación de dos factores (2FA)** proporciona un _factor de seguridad_ adicional para sus cuentas en línea. 2FA asegura que no sea posible acceder a su cuenta con solo tener su contraseña. Por lo general, el segundo factor es un código aleatorio de 6 dígitos, conocido como **contraseña de un solo uso basada en el tiempo (TOTP)**, al que puede acceder mediante una app de autenticador como Google Authenticator o Authy. Estos funcionan como un factor de «algo que usted posee», porque la semilla que genera el código temporizado se almacena en su dispositivo.
@@ -257,48 +258,48 @@ Usar un **Factor de Doble Autenticación (2FA)** provee un *factor de segurid
-#### Herramientas de seguridad {#security-keys}
+#### Llaves de seguridad {#security-keys}
-Una llave de seguridad es un tipo más avanzado y seguro de 2FA. Las llaves de seguridad son dispositivos físicos de autenticación de hardware que funcionan de la misma manera que las aplicaciones de autenticación. Usar una clave de seguridad es la manera más segura de llegar a 2FA. Muchas de estas claves utilizan el estándar universal de segundo factor U2F. [Más información sobre FIDO U2F](https://www.yubico.com/authentication-standards/fido-u2f/).
+Una llave de seguridad es un tipo más avanzado y seguro de 2FA. Las llaves de seguridad son dispositivos físicos de autenticación de hardware que funcionan de la misma manera que las aplicaciones de autenticación. Usar una clave de seguridad es la manera más segura de llegar a 2FA. Muchas de estas claves utilizan el estándar universal de segundo factor U2F. [Más información sobre FIDO U2F](https://www.yubico.com/resources/glossary/fido-u2f/).
Ver más sobre 2FA:
-### Desinstale extensiones del navegador {#uninstall-browser-extensions}
+### Desinstale las extensiones del navegador {#uninstall-browser-extensions}
Las extensiones del navegador, como las extensiones de Chrome o los complementos para Firefox, pueden mejorar la funcionalidad del navegador y la experiencia del usuario, pero no están exentas de riesgos. De forma predeterminada, la mayoría de las extensiones del navegador piden acceso a «leer y cambiar datos del sitio», permitiéndoles hacer casi cualquier cosa con sus datos. Las extensiones de Chrome siempre se actualizan automáticamente, por lo que una extensión previamente segura puede actualizarse más tarde e incluir código malicioso. La mayoría de las extensiones del navegador no intentan robar sus datos, no obstante debe ser consciente de que pueden hacerlo.
-#### Haga lo siguiente para mantenerse seguro: {#browser-extension-safety}
+#### Manténgase seguro: {#browser-extension-safety}
- Instale solo las extensiones del navegador desde fuentes de confianza.
- Elimine extensiones no utilizadas del navegador.
- Instale las extensiones de Chrome localmente para detener la actualización automática (avanzado).
-[Más sobre los riesgos de las extensiones del navegador](https://www.kaspersky.co.uk/blog/browser-extensions-security/12750/)
+[Más sobre los riesgos de las extensiones de navegador](https://www.kaspersky.co.uk/blog/browser-extensions-security/12750/)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-### Seguridad de la Web {#reading-web-security}
+### Seguridad web {#reading-web-security}
-- [Hasta 3 millones de dispositivos infectados por complementos Chrome y Edge enlazados con malware](https://arstechnica.com/information-technology/2020/12/up-to-3-million-devices-infected-by-malware-laced-chrome-and-edge-add-ons/), _Dan Goodin_
-- [Cómo crear una contraseña segura que no olvide](https://www.avg.com/en/signal/how-to-create-a-strong-password-that-you-wont-forget), _AVG_
-- [¿Qué es una clave de seguridad?](https://help.coinbase.com/en/coinbase/getting-started/verify-my-account/security-keys-faq), _Coinbase_
+- [Hasta 3 millones de dispositivos infectados por complementos de Chrome y Edge con malware](https://arstechnica.com/information-technology/2020/12/up-to-3-million-devices-infected-by-malware-laced-chrome-and-edge-add-ons/) - _Dan Goodin_
+- [Cómo crear una contraseña segura — que no olvidará](https://www.avg.com/en/signal/how-to-create-a-strong-password-that-you-wont-forget) - _AVG_
+- [¿Qué es una llave de seguridad?](https://help.coinbase.com/en/coinbase/getting-started/verify-my-account/security-keys-faq) - _Coinbase_
-### Seguridad en las criptomonedas {#reading-crypto-security}
+### Seguridad en cripto {#reading-crypto-security}
-- [Protección para usted y sus fondos](https://support.mycrypto.com/staying-safe/protecting-yourself-and-your-funds) _MyCrypto_
-- [Problemas de seguridad comunes en programas cripto de comunicación](https://docs.salusec.io/untitled/web3-penetration-test/risks-in-social-media), _Salus_
-- [Guía de Seguridad para torpes y para listos también](https://medium.com/mycrypto/mycryptos-security-guide-for-dummies-and-smart-people-too-ab178299c82e) - _MyCrypto_
-- [Seguridad en las criptomonedas: contraseñas y autenticación](https://www.youtube.com/watch?v=m8jlnZuV1i4) - _Andreas M. ispoulos_
+- [Protegiéndose y protegiendo sus fondos](https://support.mycrypto.com/staying-safe/protecting-yourself-and-your-funds) - _MyCrypto_
+- [Problemas de seguridad en aplicaciones de comunicación cripto comunes](https://docs.salusec.io/untitled/web3-penetration-test/risks-in-social-media) - _Salus_
+- [Guía de seguridad para principiantes y personas expertas también](https://medium.com/mycrypto/mycryptos-security-guide-for-dummies-and-smart-people-too-ab178299c82e) - _MyCrypto_
+- [Seguridad cripto: Contraseñas y autenticación](https://www.youtube.com/watch?v=m8jlnZuV1i4) - _Andreas M. Antonopoulos_
-### Recursos para evitar estafas {#reading-scam-education}
+### Educación sobre estafas {#reading-scam-education}
-- [Guía: cómo identificar tókenes fraudulentos](/guides/how-to-id-scam-tokens/)
-- [Operar con seguridad: estafas comunes](https://support.mycrypto.com/staying-safe/common-scams) - _MyCrypto_
-- [Evitar estafas](https://bitcoin.org/en/scams), _Bitcoin.org_
-- [Hilo de Twitter sobre correos electrónicos y mensajes comunes de phishing de criptomonedas](https://twitter.com/tayvano_/status/1516225457640787969) - _Taylor Monahan_
+- [Guía: Cómo identificar tokens estafas](/guides/how-to-id-scam-tokens/)
+- [Manteniéndose seguro: Estafas comunes](https://support.mycrypto.com/staying-safe/common-scams) - _MyCrypto_
+- [Evitando estafas](https://bitcoin.org/en/scams) - _Bitcoin.org_
+- [Hilo de Twitter sobre correos y mensajes de phishing comunes en cripto](https://twitter.com/tayvano_/status/1516225457640787969) - _Taylor Monahan_
From 17da5626b13514fd29c8699c881dee5b47f89390 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:17 -0300
Subject: [PATCH 063/589] update(i18n): src/intl/es/page-about.json
---
src/intl/es/page-about.json | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/intl/es/page-about.json b/src/intl/es/page-about.json
index 24f320a6558..2689e718ad7 100644
--- a/src/intl/es/page-about.json
+++ b/src/intl/es/page-about.json
@@ -9,17 +9,17 @@
"page-about-li-4": "implementado",
"page-about-link-1": "El código fuente de este repositorio está bajo la licencia MIT",
"page-about-link-2": "GitHub",
- "page-about-link-3": "Ver la lista completa de tareas en curso en Github",
- "page-about-link-4": "Únase a nuestro servidor Discord",
+ "page-about-link-3": "Ver la lista completa de tareas en curso en GitHub",
+ "page-about-link-4": "Únase a nuestro servidor de Discord",
"page-about-link-5": "Contacte con nosotros en Twitter",
- "page-about-link-6": "Ver la lista completa de tareas implementadas en Github",
- "page-about-link-7": "Crear un asunto en Github",
+ "page-about-link-6": "Ver la lista completa de tareas implementadas en GitHub",
+ "page-about-link-7": "Crear una incidencia en GitHub",
"page-about-p-1": "Desde el lanzamiento de ethereum.org, nos esforzamos por ser transparentes sobre cómo funcionamos. Este es uno de nuestros valores fundamentales, porque creemos que la transparencia es crucial para el éxito de Ethereum.",
"page-about-p-2": "Usamos",
- "page-about-p-3": "como herramienta principal de gestión de proyectos. Organizamos nuestras tareas en 3 categorías:",
- "page-about-p-4": " Hacemos todo lo posible para mantener a la comunidad informada sobre el estado de una tarea específica.",
+ "page-about-p-3": "como nuestra principal herramienta de gestión de proyectos. Organizamos nuestras tareas en 3 categorías:",
+ "page-about-p-4": "Hacemos todo lo posible para mantener a la comunidad informada sobre el estado de una tarea específica.",
"page-about-p-5": "Tareas que estamos implementando.",
- "page-about-p-6": "Tareas que hemos puesto en cola para implementar después.",
+ "page-about-p-6": "Tareas que hemos puesto en cola para implementar a continuación.",
"page-about-p-7": "Tareas completadas recientemente.",
"page-about-p-8": "¿Tiene una idea de cómo mejorar ethereum.org? ¡Nos encantaría colaborar con usted!",
"page-what-is-ethereum-energy-consumption-chart-legend": "Consumo energético anual en TW/año",
From 5f83a8a790a266b735027ffd14257c501ae0b237 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:18 -0300
Subject: [PATCH 064/589] update(i18n):
public/content/translations/es/restaking/index.md
---
.../translations/es/restaking/index.md | 188 ++++++++++++++++++
1 file changed, 188 insertions(+)
create mode 100644 public/content/translations/es/restaking/index.md
diff --git a/public/content/translations/es/restaking/index.md b/public/content/translations/es/restaking/index.md
new file mode 100644
index 00000000000..2c7468e8e6d
--- /dev/null
+++ b/public/content/translations/es/restaking/index.md
@@ -0,0 +1,188 @@
+---
+title: Restaking
+metaTitle: ¿Qué es el restaking? | Beneficios y uso del restaking
+description: Utilice ETH en staking para asegurar otros servicios descentralizados y obtenga recompensas adicionales.
+lang: es
+template: use-cases
+emoji: ":recycle:"
+image: /images/use-cases/restaking.png
+alt: Una representación visual del restaking en Ethereum.
+sidebarDepth: 2
+summaryPoint1: Utilice ETH en staking para asegurar otros servicios descentralizados y obtenga recompensas adicionales.
+buttons:
+ - content: ¿Qué es el restaking?
+ toId: que-es-el-restaking
+ - content: ¿Cómo funciona?
+ toId: como-funciona-el-restaking
+ isSecondary: false
+---
+
+La red de Ethereum protege miles de millones de dólares en valor las 24 horas del día, los 365 días del año. ¿Cómo?
+
+Personas de todo el mundo bloquean (o "hacen staking" de) [ether (ETH)](/eth/) en contratos inteligentes para ejecutar el software que procesa las transacciones de Ethereum y protege la red de Ethereum. A cambio, son recompensados con más ETH.
+
+Restaking es una tecnología creada para que los [stakers](/staking/) extiendan esta seguridad a otros servicios, aplicaciones o redes. A cambio, obtienen recompensas adicionales de restaking. Sin embargo, también exponen su ETH en staking a un mayor riesgo.
+
+**Restaking explicado en 18 minutos**
+
+
+
+## ¿Qué es el restaking? {#what-is-restaking}
+
+El restaking es cuando los stakers usan su ETH ya en staking para asegurar otros servicios descentralizados. A cambio, los restakers pueden obtener recompensas adicionales de esos otros servicios además de sus recompensas normales por staking de ETH.
+
+Los servicios descentralizados asegurados mediante restaking se conocen como "Servicios Validados Activamente" (AVS, por sus siglas en inglés).
+De la misma manera que muchos stakers de ETH ejecutan el software de validación de Ethereum, muchos restakers ejecutan un software AVS especializado.
+
+
+
+
+
+
+
Para tener en cuenta
+
Si bien "Servicios Validados Activamente" (AVS) es el nombre más común, diferentes plataformas de restaking pueden usar otros nombres para los servicios descentralizados que ayudan a asegurar, como "Servicios Validados Autonómamente", "Servicios de Seguridad Distribuida" o "Redes".
+
+
+
+
+## Staking vs restaking {#staking-vs-restaking}
+
+| Staking (apostar) | Restaking |
+| -------------------------------------- | ------------------------------------------------------------------ |
+| Obtenga recompensas en ETH | Obtenga recompensas en ETH + recompensas de AVS |
+| Asegura la red de Ethereum | Asegura la red de Ethereum + AVSs |
+| Sin mínimo de ETH | Sin mínimo de ETH |
+| Nivel de riesgo bajo | Nivel de riesgo de bajo a alto |
+| El tiempo de retiro depende de la cola | El tiempo de retiro depende de la cola + período de desvinculación |
+
+## ¿Por qué necesitamos el restaking? {#why-do-we-need-restaking}
+
+Imagine dos mundos: uno con restaking y otro sin él.
+
+
+
+En este mundo con restaking, tanto el AVS como el staker se benefician al poder encontrarse y negociar seguridad a cambio de recompensas adicionales.
+
+
+
+
+
+
+
+
Beneficio adicional del restaking
+
Los AVS pueden dedicar todos sus recursos a desarrollar y comercializar sus servicios, en vez de distraerse con la descentralización y la seguridad.
+
+
+
+
+## ¿Cómo funciona el restaking? {#how-does-restaking-work}
+
+Hay varias entidades involucradas en el restaking: cada una cumple un papel importante.
+
+| **Término** | **Descripción** |
+| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **Plataformas de restaking** | Una plataforma de restaking es un servicio que conecta AVSs, stakers de ETH y operadores. Construyen aplicaciones descentralizadas para que los stakers hagan restaking de su ETH, y marketplaces donde stakers, AVSs y operadores pueden encontrarse. |
+| **Restakers nativos** | Las personas que hacen staking de su ETH ejecutando sus propios validadores de Ethereum pueden conectar su ETH en staking a una plataforma de restaking, incluyendo EigenLayer y otras, para ganar recompensas de restaking además de las recompensas de su validador de ETH. |
+| | |
+| **Restakers líquidos** | Las personas que hacen staking de su ETH a través de un proveedor de staking líquido de terceros, como Lido o Rocket Pool, reciben Tokens de Staking Líquidos (LST) que representan su ETH en staking. Pueden hacer restaking con estos LST para obtener recompensas de restaking mientras mantienen su ETH original en staking. |
+| | |
+| **Operadores** | Los operadores ejecutan el software de restaking de los AVSs, realizando las tareas de validación que cada AVS requiere. Los operadores normalmente son proveedores de servicios profesionales que garantizan aspectos como la disponibilidad y el rendimiento. Al igual que los restakers que no son operadores, los operadores usan ETH en staking para asegurar AVSs, pero además reciben recompensas adicionales a cambio de su trabajo. |
+| | |
+| **AVSs** | Estos son los servicios descentralizados —como oráculos de precios, puentes de tokens y sistemas de datos— que reciben seguridad de los restakers y ofrecen recompensas en tokens a cambio. |
+
+
+
+
+
+
+
+
Para tener en cuenta
+
Los restakers nativos y líquidos suelen delegar su ETH en staking a un operador, en vez de ejecutar ellos mismos el software para asegurar AVSs.
+
De esta manera, no tienen que preocuparse por los requisitos técnicos complejos de los AVSs, aunque reciben una tasa de recompensa menor que los operadores.
+
+
+
+
+## ¿Cuáles son algunos ejemplos de restaking? {#what-are-some-examples-of-restaking}
+
+Aunque es una idea novedosa, han surgido algunos proyectos que exploran las posibilidades del restaking.
+
+
+
+
+
+
+
+
+
+
Alerta de término incorrecto
+
Algunas personas confunden "restaking" con prestar y pedir prestados LSTs en DeFi. Ambos ponen a trabajar el ETH en staking, pero el restaking significa asegurar AVSs, no solo obtener rendimiento sobre los LSTs.
+
+
+
+
+## ¿Cuánto puedo ganar con el restaking? {#how-much-can-i-make-from-restaking}
+
+Aunque los AVS ofrecen diferentes tasas, los Tokens Líquidos de Restaking (LRT) como eETH le dan una idea de cuánto puede ganar. De la misma forma en que recibe LST como stETH por hacer staking de su ETH, puede recibir LRT como eETH por hacer restaking de stETH. Estos tokens generan recompensas tanto por staking de ETH como por restaking.
+
+**Es importante tener en cuenta los riesgos del restaking. Las recompensas potenciales pueden ser atractivas, pero no están libres de riesgo.**
+
+## ¿Cuáles son los riesgos del restaking? {#what-are-the-risks-of-restaking}
+
+| **Riesgos** | **Descripción** |
+| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| **Penalizaciones (o "slashing")** | Al igual que en el staking de ETH, si los restakers/operadores se desconectan, censuran mensajes o intentan corromper la red, su stake puede ser penalizado (quemado) total o parcialmente. |
+| **Centralización** | Si pocos operadores dominan la mayor parte del restaking, podrían tener una gran influencia sobre los restakers, los AVSs e incluso las plataformas de restaking. |
+| **Reacciones en cadena** | Si un restaker es penalizado mientras asegura múltiples AVSs, esto podría reducir la seguridad de los demás AVSs, haciéndolos vulnerables. |
+| **Acceso inmediato a los fondos** | Existe un tiempo de espera (o "período de desvinculación") para retirar el ETH restaurado, por lo que no siempre podrá acceder de inmediato. |
+
+
+
+
+
+
+
+
El cofundador de Ethereum está escribiendo…
+
+ Vitalik, el cofundador de Ethereum, advirtió sobre los riesgos potenciales del restaking en una publicación del blog de 2021 llamada Don't Overload Consensus.
+
+
+
+
+
+## ¿Cómo empezar con el restaking? {#how-to-get-started-with-restaking}
+
+| 🫡 Principiantes | 🤓 Usuarios avanzados |
+| ------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |
+| 1. Haga staking de ETH en plataformas como Lido o Rocket Pool para obtener LSTs. | 1. Haga staking de su ETH como validador en Ethereum. |
+| 2. Utilice esos LSTs para comenzar a hacer restaking en un servicio de restaking. | 2. Compare servicios de restaking como EigenLayer, Symbiotic y otros. |
+| | 3. Siga las instrucciones para conectar su validador al smart contract de restaking. |
+
+
+
+
+
+
+
+
Staking en Ethereum : ¿Cómo funciona?
+
+ Más información
+
+
+
+
+
+## Avanzado {#advanced}
+
+
+
+## Lecturas adicionales {#further-reading}
+
+1. [ethereum.org - Guía de stake de ETH](https://ethereum.org/en/staking/)
+2. [Ledger Academy - ¿Qué es el restaking en Ethereum?](https://www.ledger.com/academy/what-is-ethereum-restaking)
+3. [Consensys - EigenLayer: Protocolo de restaking descentralizado de Ethereum explicado](https://consensys.io/blog/eigenlayer-decentralized-ethereum-restaking-protocol-explained)
+4. [Vitalik Buterin - No sobrecargues el consenso de Ethereum](https://vitalik.eth.limo/general/2023/05/21/dont_overload.html)
+5. [Cointelegraph - ¿Qué es EigenLayer? El protocolo de restaking de Ethereum explicado](https://cointelegraph.com/explained/what-is-eigenlayer-ethereums-restaking-protocol-explained)
+6. [a16z crypto research - EigenLayer: Permiso para añadir funciones a Ethereum con Sreeram Kannan](https://www.youtube.com/watch?v=-V-fG4J1N_M)
+7. [Junion - EigenLayer Explicado: ¿Qué es el restaking?](https://www.youtube.com/watch?v=5r0SooSQFJg)
+8. [The Block - Restaking Data Dash](https://www.theblock.co/data/decentralized-finance/restaking)
From 0832d2eeb9dff6e9e8889988247e099f433c7a2a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:20 -0300
Subject: [PATCH 065/589] update(i18n):
public/content/translations/es/ai-agents/index.md
---
.../translations/es/ai-agents/index.md | 99 +++++++++++++++++++
1 file changed, 99 insertions(+)
create mode 100644 public/content/translations/es/ai-agents/index.md
diff --git a/public/content/translations/es/ai-agents/index.md b/public/content/translations/es/ai-agents/index.md
new file mode 100644
index 00000000000..2c2c4b52313
--- /dev/null
+++ b/public/content/translations/es/ai-agents/index.md
@@ -0,0 +1,99 @@
+---
+title: Agentes de IA
+metaTitle: Agentes de IA | Agentes de IA en Ethereum
+description: Una visión general de los agentes de IA en Ethereum
+lang: es
+template: use-cases
+emoji: ":robot:"
+sidebarDepth: 2
+image: /images/ai-agents/hero-image.png
+alt: Personas reunidas alrededor de una mesa con gráficos virtuales.
+summaryPoint1: IA que interactúa con la cadena de bloques y realiza operaciones de forma independiente
+summaryPoint2: Controla carteras y fondos en la cadena de bloques
+summaryPoint3: Selecciona a personas u otros agentes para realizar tareas
+buttons:
+ - content: ¿Qué son los agentes de IA?
+ toId: what-are-ai-agents
+ - content: Explorar agentes
+ toId: ai-agents-on-ethereum
+ isSecondary: false
+---
+
+Imagínese que navega por Ethereum con un asistente de IA que analiza las tendencias de mercado en cadena de bloques constantemente, que responde a sus preguntas e incluso que ejecuta transacciones por usted. Bienvenido al mundo de los agentes de IA: sistemas inteligentes diseñados para simplificar su vida digital.
+
+En Ethereum, nos encontramos con innovaciones de agentes de IA que van desde influencers virtuales y creadores de contenido autónomos, a plataformas de análisis de mercado en tiempo real, empoderando a los usuarios a través de información, entretenimiento y eficiencia operativa.
+
+## ¿Qué son los agentes de IA? {#what-are-ai-agents}
+
+Los agentes de IA son programas de software que utilizan la inteligencia artificial para ejecutar tareas o tomar decisiones de forma autónoma. Estos agentes aprenden a partir de datos, se adaptan a los cambios y realizan tareas complejas. Operan sin interrupción y pueden detectar oportunidades al instante.
+
+### Cómo funcionan los agentes de IA con la cadena de bloques {#how-ai-agents-work-with-blockchains}
+
+En las finanzas tradicionales, los agentes de IA suelen operar en entornos centralizados, con una entrada de datos limitada. Esto dificulta su capacidad de aprendizaje o de gestión de activos de forma autónoma.
+
+En cambio, el ecosistema descentralizado de Ethereum ofrece diversas ventajas esenciales:
+
+- Datos transparentes: acceso a información de la cadena de bloques en tiempo real.
+- Propiedad real de activos: los activos digitales son de entera propiedad de los agentes de IA.
+- Funcionalidad sólida en la cadena: permite que los agentes de IA ejecuten transacciones, interactúen con contratos inteligentes, proporcionen liquidez y colaboren entre distintos protocolos.
+
+Estos factores transforman a los agentes de IA de meros bots en sistemas dinámicos y autoevolutivos que ofrecen un valor significativo en múltiples sectores:
+
+
+
+
+
+
+
+## Agentes de la IA en Ethereum {#ai-agents-on-ethereum}
+
+Estamos comenzando a explorar todo el potencial de los agentes de la IA; ya existen proyectos que aprovechan la sinergia entre la IA y la cadena de bloques, especialmente en las áreas de transparencia y monetización.
+
+
+
+Primera aparición de Luna como invitada en un pódcast
+
+
+
+## Carteras controladas por agentes {#agent-controlled-wallets}
+
+Agentes como Luna o AIXBT controlan su propia cartera en la cadena de bloques ([billetera de AIXBT](https://clusters.xyz/aixbt), [cartera de Luna](https://zapper.xyz/account/0x0d177181e3763b20d47dc3a72dd584368bd8bf43)), lo cual les permite dar propinas a los fans y participar en actividades económicas.
+
+Durante la campaña de Luna #LunaMuralChallenge en la red social X, Luna seleccionó y recompensó a los ganadores a través de su cartera Base, convirtiéndose en el primer caso en el que una IA contrata a humanos para otorgarles recompensas con criptomonedas.
+
+
+
+
+
Para tener en cuenta
+
Los agentes de IA y las herramientas relacionadas aún están en fase inicial de desarrollo y son experimentales; deben utilizarse con prudencia.
+
+
+
+## Controle su cartera usando los comandos de chat {#control-your-wallet-using-chat-commands}
+
+Puede evitar las complicadas interfaces de DeFi y gestionar sus criptomonedas con sencillos comandos de chat.
+
+Este enfoque intuitivo hace que las transacciones sean más rápidas, fáciles y menos propensas a errores como enviar fondos a la dirección equivocada o pagar comisiones de más.
+
+
+
+## Agentes de la IA y los bots de la IA {#ai-agents-vs-ai-bots}
+
+La diferenciación entre agentes de IA y bots de IA a veces puede resultar confusa, ya que ambos realizan acciones automatizadas basadas en entradas de datos.
+
+- Los bots de IA son asistentes automatizados: siguen instrucciones específicas y preprogramadas para realizar tareas rutinarias.
+- Los agentes de IA son más bien compañeros inteligentes: aprenden de la experiencia, se adaptan a información nueva y toman decisiones por sí solos.
+
+| | Agentes de IA | Bots de IA |
+| ----------------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
+| **Interacciones** | Complejas, adaptables, autónomas | Sencillas, de alcance predefinido, codificadas |
+| **Aprendizaje** | Aprende de forma continua, puede experimentar y adaptarse a datos nuevos en tiempo real. | Opera con datos preentrenados o reglas fijas. |
+| **Ejecución de tareas** | Busca lograr objetivos más amplios | Se centra en tareas específicas |
+
+## Para profundizar más {#dive-deeper}
+
+
+
+## Puede crear su propio agente de IA {#you-can-build-your-own-ai-agent}
+
+
\ No newline at end of file
From 17c2243de39f7a78022c126d6419002a51c3a688 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:21 -0300
Subject: [PATCH 066/589] update(i18n): src/intl/es/page-assets.json
From dc205f080f4718856daeb1493d0e156b70990d64 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:22 -0300
Subject: [PATCH 067/589] update(i18n):
public/content/translations/es/eth/supply/index.md
---
.../translations/es/eth/supply/index.md | 80 +++++++++++++++++++
1 file changed, 80 insertions(+)
create mode 100644 public/content/translations/es/eth/supply/index.md
diff --git a/public/content/translations/es/eth/supply/index.md b/public/content/translations/es/eth/supply/index.md
new file mode 100644
index 00000000000..7a2dc94ab01
--- /dev/null
+++ b/public/content/translations/es/eth/supply/index.md
@@ -0,0 +1,80 @@
+---
+title: Comprender el suministro y la emisión de ETH
+description: "Una guía para principiantes sobre el suministro y emisión de ETH, que cubre conceptos clave como: EIP, PoS y EIP-1559."
+lang: es
+---
+
+# Suministro y emisión de ETH {#eth-supply-and-issuance}
+
+## Requisitos previos {#prerequisites}
+
+Este artículo está escrito para principiantes, sin conocimientos previos. No obstante, para poder entender completamente este tema, es aconsejable asimilar algunos conceptos básicos como: [Propuestas de mejora de Ethereum (EIPs)](/eips/#introduction-to-ethereum-improvement-proposals), [prueba de trabajo (PoW)](/developers/docs/consensus-mechanisms/pow/), [prueba de participación (PoS)](/developers/docs/consensus-mechanisms/pos/) y [la actualización Londres](/ethereum-forks/#london).
+
+## ¿Cuántos tókenes de ETH hay en la actualidad? {#current-eth-supply}
+
+El suministro total de ETH es dinámico y cambia de forma constante debido a dos factores principales:
+
+1. **Emisión por prueba de participación (PoS)**: se crean nuevos ETH para recompensar a los validadores que aseguran la red
+2. **Quema EIP-1559**: una porción de las comisiones por tarifas de transacción se sacan permanentemente de circulación
+
+Puede realizar un seguimiento del suministro actual y estos cambios en tiempo real en plataformas como [Ultrasound Money](https://ultrasound.money).
+
+El suministro y emisión de Ethereum son métricas esenciales para comprender la salud y el futuro de la red. ¿Pero qué significa exactamente la emisión de ETH? Vamos a desglosarlo.
+
+## ¿Por qué importa el suministro y la emisión de ETH? {#why-eth-supply-matters}
+
+En las finanzas tradicionales, los bancos centrales controlan el suministro del dinero, a menudo estos imprimen más dinero para estimular las economías. Por otra parte, Ethereum opera en un sistema transparente y precedible regido por su código. Saber cuántos ETH existen y lo rápido que se emiten nuevos ETH ayuda a:
+
+- **Generar confianza**: la comunidad de Ethereum puede verificar los datos del suministro y emisión de ETH directamente desde la cadena de bloques.
+- **Entender el valor**: la relación entre emisión y quema de ETH impacta en la fluctuación de ETH y en su valor a la larga.
+- **Seguimiento del estado de la red**: los cambios en las tasas de emisión y quema reflejan la actividad y seguridad de la red.
+
+## ¿Qué es la emisión de ETH? {#eth-issuance}
+
+Por emisión de ETH se refiere al proceso de creación de nuevos ETH como recompensas para los validadores que aseguran la red de Ethereum. Va separado del suministro total, el cual se refiere a la cantidad total de ETH que hay en circulación.
+
+### En términos sencillos:
+
+- La **emisión** añade nuevos ETH a la red.
+- **Quema** (introducida por la EIP-1559) elimina ETH de la red mediante la destruccion de una parte de la comisión de la transacción.
+
+Estas dos fuerzas determinan si el suministro de Ethereum crece (inflación) o decrece (deflación) a la larga.
+
+## El suministro y la emisión de ETH hoy en día {#eth-supply-today}
+
+El sistema de prueba de participación (PoS) de Ethereum ha reducido de forma drástica la emisión de ETH en comparación con su modelo anterior, la prueba de trabajo (PoW). Validadores —los que bloquean sus ETH para asegurar a la red— ganan ETH como recompensa. Puede ver la tasa actual de emisión en [Ultrasound Money](https://ultrasound.money).
+
+No obstante, este número es dinámico. Gracias a EIP-1559, cuando la red cuenta con gran actividad, la tasa de quema de ETH sobrepasa la tasa de emisión, creando asi un efecto deflacionario. Por ejemplo, durante periodos de alta demanda, como lanzamientos de NFT o actividad DeFi, más ETH del que se emite puede llegar a ser quemado.
+
+### Herramientas para seguir el suministro y emisión de ETH:
+
+- [Ultrasound Money](https://ultrasound.money): seguimiento en tiempo real de las tasas de suministro, emisión y quema
+- [Etherscan](https://etherscan.io): explorador de bloque con métricas de suministro
+
+## Factores que influyen en el suministro y en la emisión futura de ETH {#future-eth-supply}
+
+El suministro futuro de Ethereum no es fijo, depende de varias variables:
+
+1. **Cuota de participación**:
+ - Cuantos más validadores se unan a la red, más ETH se distribuirán en forma de recompensa.
+ - Si participan pocos validadores, puede que la emisión disminuya.
+ - Aprende más sobre [staking](/staking/).
+
+2. **Actividad de la red**:
+ - Un alto volumen de transacciones hará que se quemen más ETH, comprensando o excediento potencialmente la emisión.
+ - Lee sobre las [comisiones de gas](/developers/docs/gas/) y cómo afectan a la quema.
+
+3. **Actualizaciones del protocolo**:
+ - Futuras modificaciones en el código de Ethereum podrían ajustar la recompensa de participación o a los mecanismos de quema, lo cual afectaría a la dinámica del suministro actual.
+ - Manténgase actualizado con la [hoja de ruta de Ethereum](/roadmap/).
+
+## Recapitulación: suministro, emision de ETH y siguientes pasos {#recap}
+
+He aquí un resumen rápido de lo que necesita saber acerca el suministro y la emisión de ETH:
+
+- **Suministro de ETH**: Dinámico y en constante cambio, rastreable en tiempo real a través de herramientas como: [Ultrasound Money](https://ultrasound.money)
+- **Emisión bajo PoS**: reducida de forma considerable en comparación a la PoW, cuyas recompensas van hacía los validadores. Revise las comisiones actuales en [Ultrasound Money](https://ultrasound.money)
+- **Papel de la EIP-1559**: la quema de ETH puede hacer que la red se vuelva deflacionaria durante altos periodos de actividad
+- **Tendencias futuras**: cuota de participacion, demanda de la red y actualizaciones del protocolo que impactarán en el suministro de ETH
+
+Comprender la emisión de ETH ayuda a desmitificar el valor de Ethereum y su potencial como un activo deflacionario y descentralizado. Para obtener información detallada acerca del cómo la Fusión impactó en el suministro de ETH, revise nuestro [desglose detallado](/roadmap/merge/issuance/). ¿Le pica la curiosidad acerca el futuro de ETH? Profundice en el manejo de herramientas como [Ultrasound Money](https://ultrasound.money) o explore nuestra [guías de participación](/staking/).
\ No newline at end of file
From 03ee8fe3918543c32fe58ec3847a94057c3d2f39 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:24 -0300
Subject: [PATCH 068/589] update(i18n):
public/content/translations/es/foundation/index.md
---
.../translations/es/foundation/index.md | 28 +++++++++----------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/public/content/translations/es/foundation/index.md b/public/content/translations/es/foundation/index.md
index c3732d8c40e..7d615b1a371 100644
--- a/public/content/translations/es/foundation/index.md
+++ b/public/content/translations/es/foundation/index.md
@@ -1,40 +1,40 @@
---
-title: Fundación Ethereum
+title: Ethereum Foundation
description: Obtén más información acerca de la Fundación Ethereum (EF), una organización sin ánimo de lucro dedicada a dar soporte a Ethereum y a otras tecnologías similares.
hideEditButton: true
lang: es
---
-# Acerca de Ethereum Foundation {#about-the-ethereum-foundation}
+# Acerca de la Fundación Ethereum {#about-the-ethereum-foundation}
-[Ethereum Foundation](http://ethereum.foundation/) (EF) es una organización sin ánimo de lucro dedicada a ofrecer apoyo a [Ethereum](/what-is-ethereum/) y a tecnologías relacionadas.
+La [Fundación Ethereum](http://ethereum.foundation/) (EF) es una organización sin fines de lucro dedicada a apoyar a [Ethereum](/what-is-ethereum/) y las tecnologías relacionadas.
-La EF no es una empresa, ni siquiera una organización sin ánimo de lucro tradicional. Su función no es controlar o liderar a Ethereum, ni ser la única organización que financia el desarrollo crítico de tecnologías relacionadas con Ethereum. EF forma parte de un [ecosistema](/community/) mucho más grande.
+La EF no es una empresa, ni siquiera una organización sin ánimo de lucro tradicional. Su función no es controlar o liderar a Ethereum, ni ser la única organización que financia el desarrollo crítico de tecnologías relacionadas con Ethereum. La EF es solo una parte de un [ecosistema](/community/) mucho más amplio.
-## Iniciativas de la Fundación de Ethereum {#ethereum-foundation-initiatives}
+## Iniciativas de la Fundación Ethereum {#ethereum-foundation-initiatives}
-### Programa de apoyo del ecosistema {#ecosystem-support-program}
+### Programa de Apoyo al Ecosistema {#ecosystem-support-program}
-El [Programa de apoyo al ecosistema](https://esp.ethereum.foundation/) existe para proporcionar apoyo financiero y no financiero a proyectos y entidades dentro de la gran comunidad de Ethereum, con el fin de acelerar la crecimiento del ecosistema. El Programa de apoyo al ecosistema es una expansión del Programa original de subvenciones de Ethereum, que se centró principalmente en el apoyo financiero.
+El [Programa de Apoyo al Ecosistema](https://esp.ethereum.foundation/) existe para proporcionar apoyo tanto financiero como no financiero a proyectos y entidades dentro de la comunidad de Ethereum en general, con el fin de acelerar el crecimiento del ecosistema. El Programa de apoyo al ecosistema es una expansión del Programa original de subvenciones de Ethereum, que se centró principalmente en el apoyo financiero.
-Obtén más información sobre el Programa de apoyo al ecosistema, los beneficiarios de subvenciones anteriores y el proceso de solicitud de subvenciones en el [sitio oficial del Programa](https://esp.ethereum.foundation/). También puede visitar el [blog del Programa de apoyo al ecosistema](https://blog.ethereum.org/category/ecosystem-support-program/) o seguir [@EF_ESP](https://twitter.com/EF_ESP) para conocer sus últimas noticias y anuncios.
+Obtenga más información sobre el Programa de Apoyo al Ecosistema, los beneficiarios de subvenciones anteriores y el proceso de solicitud de subvenciones en [esp.ethereum.foundation](https://esp.ethereum.foundation/). También puede consultar el [Blog del Programa de Apoyo al Ecosistema](https://blog.ethereum.org/category/ecosystem-support-program/) o seguir a [@EF_ESP](https://twitter.com/EF_ESP) para conocer sus últimas noticias y anuncios.
### Devcon {#devcon}
Desde 2014, Ethereum Foundation ha organizado Devcon, la conferencia anual para todos los desarrolladores, investigadores, pensadores y creadores de Ethereum.
-Puede acceder al contenido en vídeo de las presentaciones de la conferencia para cada año desde su inicio en el sitio [archive.devcon.org](https://archive.devcon.org/).
+Puede acceder al contenido en video de las presentaciones de la conferencia de cada año desde su inicio en [archive.devcon.org](https://archive.devcon.org/).
-Obtenga más información en [devcon.org](https://devcon.org/), eche un vistazo al [Blog de Devcon](https://devcon.org/en/blogs/), o siga [@efdevcon](https://twitter.com/EFDevcon) para ver las últimas notificaciones.
+Infórmese más en [devcon.org](https://devcon.org/), consulte el [Blog de Devcon](https://devcon.org/en/blogs/) o siga a [@efdevcon](https://twitter.com/EFDevcon) para los anuncios más recientes.
-### Programa de becas {#fellowship-program}
+### Programa de Becas {#fellowship-program}
-El programa [Ethereum Foundation Fellowship](https://fellowship.ethereum.foundation/) es una iniciativa para ayudar a abordar las brechas existentes en la representación ente culturas, nacionalidades y clases económicas. El Programa de Becas tiene como objetivo cerrar estas brechas identificando y apoyando a personas únicas y talentosas que ayuden a hacer posible la relevancia de Ethereum y rompan las barreras de entrada para aquellas personas y comunidades subrepresentadas que convertirán el futuro de Web3.
+El [Programa de Becas de la Fundación Ethereum](https://fellowship.ethereum.foundation/) es una iniciativa para ayudar a abordar las brechas de representación entre culturas, nacionalidades y clases económicas. El Programa de Becas tiene como objetivo cerrar estas brechas identificando y apoyando a personas únicas y talentosas que ayuden a hacer posible la relevancia de Ethereum y rompan las barreras de entrada para aquellas personas y comunidades subrepresentadas que convertirán el futuro de Web3.
-[Más información en fellowship.ethereum.foundation](https://fellowship.ethereum.foundation/).
+[Obtenga más información en fellowship.ethereum.foundation](https://fellowship.ethereum.foundation/).
-Si quiere conocer más de cerca la fundación y su labor, visite [Fundación Ethereum](http://ethereum.foundation/), o consulte el [blog de Ethereum Foundation](https://blog.ethereum.org/) para enterarse de las novedades y anuncios de Ethereum Foundation.
+Para obtener más información sobre la Fundación y su trabajo, visite [ethereum.foundation](http://ethereum.foundation/) o consulte el [Blog de la Fundación Ethereum](https://blog.ethereum.org/) para las noticias y anuncios más recientes de la EF.
From e08884dd3e19c9381ac3b8944681f59b57bbeb15 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:26 -0300
Subject: [PATCH 069/589] update(i18n):
public/content/translations/es/governance/index.md
---
.../translations/es/governance/index.md | 108 +++++++++---------
1 file changed, 55 insertions(+), 53 deletions(-)
diff --git a/public/content/translations/es/governance/index.md b/public/content/translations/es/governance/index.md
index 514dbdf903c..fb9a362581d 100644
--- a/public/content/translations/es/governance/index.md
+++ b/public/content/translations/es/governance/index.md
@@ -20,57 +20,57 @@ Ninguna persona controla el protocolo de Ethereum; sin embargo, eso no quita que
## Gobernanza de Ethereum {#ethereum-governance}
-La gobernanza de Ethereum es el proceso mediante el cual se realizan cambios en el protocolo. Es importante señalar que este proceso no está relacionado con el uso que la gente y las aplicaciones hacen del protocolo: Ethereum es una red pública. Cualquier individuo, independientemente de su procedencia, puede participar en actividades desarrolladas en la cadena de bloques. No hay reglas establecidas con respecto a quién puede o no puede crear una aplicación o realizar una transacción. Sin embargo, existe un proceso para proponer cambios en el protocolo central, sobre el que se ejecutan las aplicaciones descentralizadas. Puesto que tanta gente depende de la estabilidad de Ethereum, existen unos estrictos criterios de coordinación aplicables a los cambios fundamentales, que incluyen procesos sociales y técnicos. El objetivo es garantizar que cualquier cambio en Ethereum sea seguro y cuente con el respaldo unánime de la comunidad.
+La gobernanza de Ethereum es el proceso mediante el cual se realizan cambios en el protocolo. Es importante señalar que este proceso no está relacionado con el uso que la gente y las aplicaciones hacen del protocolo: Ethereum es una red pública. Cualquier persona de cualquier parte del mundo puede participar en actividades en cadena. No hay reglas establecidas con respecto a quién puede o no puede crear una aplicación o realizar una transacción. Sin embargo, existe un proceso para proponer cambios en el protocolo central, sobre el que se ejecutan las aplicaciones descentralizadas. Puesto que tanta gente depende de la estabilidad de Ethereum, existen unos estrictos criterios de coordinación aplicables a los cambios fundamentales, que incluyen procesos sociales y técnicos. El objetivo es garantizar que cualquier cambio en Ethereum sea seguro y cuente con el respaldo unánime de la comunidad.
-### Gobernanza «on-chain» frente a gobernanza «off-chain» {#on-chain-vs-off-chain}
+### Gobernanza dentro de la cadena vs. fuera de la cadena {#onchain-vs-offchain}
-La tecnología de cadenas de bloques abre la posibilidad a nuevas opciones de gobernanza, conocidas como gobernanza «on-chain» o dentro de la cadena. La gobernanza dentro de la cadena se da cuando las propuestas de cambios en el protocolo se deciden mediante los votos de las partes interesadas. Por lo general, estos actores son los tenedores de un token de gobernanza y la votación ocurre en la cadena de bloques. En algunas formas de gobernanza en cadena, los cambios de protocolo propuestos ya están escritos en código y se implementan automáticamente si las partes interesadas aprueban los cambios.
+La tecnología de cadena de bloques permite nuevas posibilidades de gobernanza, lo que se conoce como gobernanza en cadena. La gobernanza en cadena ocurre cuando propuestas de cambios en el protocolo se deciden por una votación de las partes interesadas, normalmente tenedores de un token de gobernanza, y la votación ocurre en la cadena de bloques. En algunas formas de gobernanza en cadena, los cambios de protocolo propuestos ya están escritos en código y se implementan automáticamente si las partes interesadas aprueban los cambios firmando una transacción.
-El enfoque opuesto, la gobernanza «off-chain» o externa a la cadena, consiste en que cualquier decisión de modificación del protocolo se produce a través de un proceso informal de debate social que, de aprobarse, se aplicaría en código.
+El enfoque opuesto, la gobernanza fuera de cadena, es cuando cualquier decisión de modificación del protocolo se produce a través de un proceso informal de debate social, que, de aprobarse, se implementaría en el código.
-**La gobernanza de Ethereum ocurre externa a la cadena** y una amplia variedad de actores intervienen en el proceso.
+**La gobernanza de Ethereum ocurre fuera de la cadena**, con una amplia variedad de partes interesadas involucradas en el proceso.
-_A pesar de que siguiendo el protocolo, la gobernanza de Ethereum se desarrolla externa a la cadena de bloques, muchos casos de uso que se ejecutan sobre la red Ethereum, como las DAO, se sirven de la gobernanza dentro de la cadena._
+_A pesar de que a nivel de protocolo la gobernanza de Ethereum se realiza fuera de cadena, muchos casos de uso construidos sobre Ethereum, como las DAO, se sirven de la gobernanza en cadena._
- Más información acerca de las DAO
+ Más sobre DAOs
-## ¿Quiénes son los participantes? {#who-is-involved}
+## ¿Quién participa en este proceso? {#who-is-involved}
-En la [comunidad Ethereum](/community/), hay diversos actores y cada uno cumple una función en el proceso de gobernanza. Desde los actores más desvinculados del protocolo hasta los que exhiben un mayor nivel de participación, encontramos los siguientes:
+Existen varios actores en la [comunidad de Ethereum](/community/), cada uno desempeñando un papel en el proceso de gobernanza. Desde los actores más desvinculados del protocolo hasta los que exhiben un mayor nivel de participación, encontramos los siguientes:
-- **Tenedores de ether**: personas que tienen una cantidad arbitraria de ETH. [Más información sobre ETH](/what-is-ether/).
-- **Usuarios de aplicaciones**: estas personas interactúan con aplicaciones en la cadena de bloques de Ethereum.
-- **Desarrolladores de aplicaciones o herramientas**: estas personas programan aplicaciones que se ejecutan en la cadena de bloques de Ethereum (p. ej., DeFi, NFT, etc.) o diseñan herramientas para interactuar con Ethereum (p. ej., carteras, series de pruebas, etc.). [Más información sobre DApps](/apps/).
-- **Operadores de nodos**: estas personas ejecutan nodos que propagan bloques y transacciones y rechazan cualquier transacción o bloque inválido con el que se encuentren. [Más información sobre los nodos](/developers/docs/nodes-and-clients/).
-- **Autores de EIP**: estas personas proponen cambios en el protocolo Ethereum en calidad de propuestas de mejora de Ethereum (EIP, «Ethereum Improvement Proposals»). [Más información sobre las EIP](/eips/).
-- **Validadores**: estas personas ejecutan nodos que pueden añadir nuevos bloques a la cadena de bloques de Ethereum.
-- **Desarrolladores del protocolo** (también conocidos como «Desarrolladores Principales»): estas personas mantienen las diversas implementaciones de Ethereum (p. ej., go-ethereum, Nethermind, Besu, Erigon, Reth en la capa de ejecución o Prysm, Lighthouse, Nimbus, Teku, Lodestar, Grandine ene la capa de consenso). [Más información sobre los clientes de Ethereum](/developers/docs/nodes-and-clients/).
+- **Tenedores de ether**: estas personas poseen una cantidad arbitraria de ETH. [Más sobre ETH](/what-is-ether/).
+- **Usuarios de aplicaciones**: estas personas interactúan con aplicaciones en la blockchain de Ethereum.
+- **Desarrolladores de aplicaciones/herramientas**: estas personas escriben aplicaciones que se ejecutan en la blockchain de Ethereum (por ejemplo, DeFi, NFT, etc.) o crean herramientas para interactuar con Ethereum (por ejemplo, wallets, suites de pruebas, etc.). [Más sobre dapps](/apps/).
+- **Operadores de nodos**: estas personas ejecutan nodos que propagan bloques y transacciones, rechazando cualquier transacción o bloque inválido que encuentren. [Más sobre nodos](/developers/docs/nodes-and-clients/).
+- **Autores de EIP**: estas personas proponen cambios al protocolo de Ethereum, en forma de Propuestas de Mejora de Ethereum (EIPs). [Más sobre EIPs](/eips/).
+- **Validadores**: estas personas ejecutan nodos que pueden agregar nuevos bloques a la blockchain de Ethereum.
+- **Desarrolladores del protocolo** (también conocidos como "Desarrolladores principales"): estas personas mantienen las distintas implementaciones de Ethereum (por ejemplo, go-ethereum, Nethermind, Besu, Erigon, Reth en la capa de ejecución o Prysm, Lighthouse, Nimbus, Teku, Lodestar, Grandine en la capa de consenso). [Más sobre los clientes de Ethereum](/developers/docs/nodes-and-clients/).
-_Nota: cualquier persona puede ser parte de varios de estos grupos (p. ej., un desarrollador de protocolos podría abogar por una EIP, ejecutar un validador de la cadena de baliza y utilizar aplicaciones DeFi). Sin embargo, por motivos de claridad conceptual, resulta más práctico hacer una distinción entre ellos._
+_Nota: cualquier persona puede formar parte de varios de estos grupos (por ejemplo, una persona desarrolladora del protocolo podría liderar una EIP, ejecutar un validador de la beacon chain y usar aplicaciones DeFi). Sin embargo, por motivos de claridad conceptual, resulta más práctico hacer una distinción entre ellos._
## ¿Qué es una EIP? {#what-is-an-eip}
-Un proceso importante utilizado en la gobernanza Ethereum son las **propuestas de mejora de Ethereum (EIP, «Ethereum Improvement Proposals»)**. Las EIP son estándares que especifican posibles nuevas características o procesos para Ethereum. Cualquier persona dentro de la comunidad Ethereum puede formular una EIP. Si le interesa escribir una EIP o participar en una revisión entre pares, vea:
+Un proceso importante usado en la gobernanza de Ethereum es la propuesta de **Propuestas de Mejora de Ethereum (EIPs)**. Las EIP son estándares que especifican posibles nuevas características o procesos para Ethereum. Cualquier persona dentro de la comunidad Ethereum puede formular una EIP. Si le interesa escribir una EIP o participar en una revisión entre pares, vea:
- Más información sobre las EIP
+ Más sobre las EIP
-## Procedimiento formal {#formal-process}
+## El proceso formal {#formal-process}
El procedimiento formal para realizar cambios en el protocolo de Ethereum es el siguiente:
-1. **Proponer una EIP central**: tal como se describe en [EIP-1](https://eips.ethereum.org/EIPS/eip-1#core-eips), el primer paso para proponer formalmente un cambio en Ethereum es detallarlo en una EIP central. Esto servirá como la especificación oficial de una EIP que los desarrolladores de protocolos implementarán si se acepta.
+1. **Proponer una EIP Core**: como se describe en [EIP-1](https://eips.ethereum.org/EIPS/eip-1#core-eips), el primer paso para proponer formalmente un cambio a Ethereum es detallarlo en una EIP Core. Esto servirá como la especificación oficial de una EIP que los desarrolladores de protocolos implementarán si se acepta.
-2. **Presentar la EIP a los desarrolladores de protocolos**: una vez que tenga una EIP central para la cual haya recibido contribuciones de la comunidad, debería presentársela a los desarrolladores de protocolo. Para ello, puede proponer que se someta a debate en una [llamada en AllCoreDevs](https://github.com/ethereum/execution-specs/tree/master/network-upgrades#getting-the-considered-for-inclusion-cfi-status). Es posible que, para ese entonces, ya se hayan originado debates de forma asíncrona en el [foro Ethereum Magicians](https://ethereum-magicians.org/) o en [el canal de Discord Ethereum R&D](https://discord.gg/mncqtgVSVw).
+2. **Presentar tu EIP a los desarrolladores del protocolo**: una vez que tengas una EIP Core para la que has reunido comentarios de la comunidad, debes presentarla a los desarrolladores del protocolo. Puedes hacerlo proponiéndola para discusión en una [llamada de AllCoreDevs](https://github.com/ethereum/execution-specs/tree/master/network-upgrades#getting-the-considered-for-inclusion-cfi-status). Es probable que algunas discusiones ya hayan sucedido de manera asíncrona en el [foro de Ethereum Magicians](https://ethereum-magicians.org/) o en el [Discord de Ethereum R&D](https://discord.gg/mncqtgVSVw).
> Las consecuencias probables de esta etapa son las siguientes:
@@ -78,49 +78,49 @@ El procedimiento formal para realizar cambios en el protocolo de Ethereum es el
> - Se solicitarán cambios técnicos
> - Puede ser rechazada si no es una prioridad o la mejora planteada no es lo suficientemente significativa si se tienen en cuenta los esfuerzos de desarrollo que conlleva.
-3. **Elaborar la propuesta final:** después de recibir comentarios de todos los actores pertinentes, puede que necesite hacer cambios en la propuesta inicial para mejorar su seguridad o satisfacer más adecuadamente las necesidades de varios usuarios. Una vez que se haya incorporado a la EIP todos los cambios que considere necesarios, tendrá que presentársela a los desarrolladores de protocolo nuevamente. Es ahí cuando se avanza a la siguiente etapa del proceso. Es posible, sin embargo, que se generen nuevas inquietudes, lo que amerite otra ronda de debates en torno a su propuesta.
+3. **Iterar hacia una propuesta final:** después de recibir comentarios de todas las partes interesadas relevantes, probablemente tendrás que hacer cambios a tu propuesta inicial para mejorar su seguridad o ajustarla mejor a las necesidades de distintos usuarios. Una vez que se haya incorporado a la EIP todos los cambios que considere necesarios, tendrá que presentársela a los desarrolladores de protocolo nuevamente. Es ahí cuando se avanza a la siguiente etapa del proceso. Es posible, sin embargo, que se generen nuevas inquietudes, lo que amerite otra ronda de debates en torno a su propuesta.
-4. **Incluir la EIP en la actualización de la red**: suponiendo que se apruebe, pruebe o implemente la EIP, se programará su incorporación a la actualización de la red. Dados los altos costos de coordinación de las actualizaciones de la red (todos necesitan actualizar simultáneamente), las EIP generalmente se agrupan en las actualizaciones.
+4. **EIP incluida en la actualización de red**: si la EIP es aprobada, probada e implementada, se agenda como parte de una actualización de red. Dados los altos costos de coordinación de las actualizaciones de la red (todos necesitan actualizar simultáneamente), las EIP generalmente se agrupan en las actualizaciones.
-5. **Activar la actualización de la red:** después de activar la actualización de la red, la EIP entrará en funcionamiento dentro de la red Ethereum. _Nota: las actualizaciones de red generalmente se activan en redes de prueba antes de ser activadas en la red principal de Ethereum._
+5. **Actualización de red activada**: después de que la actualización de red esté activa, la EIP estará operativa en la red de Ethereum. _Nota: las actualizaciones de red generalmente se activan en redes de prueba antes de ser activadas en la red principal de Ethereum._
Esta secuencia, aunque muy simplificada, da una visión general de las etapas significativas para que un cambio de protocolo se active en Ethereum. Ahora, veamos los factores informales que están en juego durante este proceso.
-## Procedimiento informal {#informal-process}
+## El proceso informal {#informal-process}
-### Comprensión del trabajo previo {#prior-work}
+### Comprender el trabajo previo {#prior-work}
-Los defensores de una determinada EIP deberían familiarizarse con el trabajo y las propuestas previas antes de crear una EIP que pueda llegar a considerarse seriamente para su implementación en la red principal de Ethereum. De esta forma, la EIP traerá consigo una idea novedosa que no se haya rechazado anteriormente. Los tres lugares principales para estas investigaciones son: el [repositorio de EIP](https://github.com/ethereum/EIPs), [Ethereum Magicians](https://ethereum-magicians.org/) y [ethinvestig.ch](https://ethresear.ch/).
+Los defensores de una determinada EIP deberían familiarizarse con el trabajo y las propuestas previas antes de crear una EIP que pueda llegar a considerarse seriamente para su implementación en la red principal de Ethereum. De esta forma, la EIP traerá consigo una idea novedosa que no se haya rechazado anteriormente. Los tres principales lugares para investigar esto son el [repositorio de EIP](https://github.com/ethereum/EIPs), [Ethereum Magicians](https://ethereum-magicians.org/) y [ethresear.ch](https://ethresear.ch/).
### Grupos de trabajo {#working-groups}
Es poco probable que el borrador inicial de una EIP se implemente en la red principal de Ethereum sin modificaciones ni cambios. Por lo general, los defensores de una EIP trabajarán con un subconjunto de desarrolladores del protocolo para especificar, implementar, probar, iterar y finalizar la propuesta. Históricamente, estos grupos de trabajo han requerido varios meses (y a veces años) de trabajo. De manera similar, para tales cambios los defensores de la EIP deben involucrar a los desarrolladores de aplicaciones/herramientas relevantes al principio de sus esfuerzos para recopilar comentarios de los usuarios finales y mitigar los riesgos de implementación.
-### Consenso comunitario {#community-consensus}
+### Consenso de la comunidad {#community-consensus}
Si bien algunas EIP son simples mejoras técnicas con matices mínimos, otras son más complejas y constituyen soluciones intermedias que afectarán a distintos actores de diferentes maneras. Esto significa que algunas EIP serán más polémicas dentro de la comunidad que otras.
No hay un proceso definido sobre cómo tratar propuestas polémicas. Este es el resultado del diseño descentralizado de Ethereum, en el cual ningún grupo de partes interesadas puede coaccionar al otro a través de la fuerza bruta: los desarrolladores de protocolos pueden elegir no implementar cambios de código; los operadores de nodos pueden elegir no ejecutar el último cliente de Ethereum; los equipos de aplicaciones y los usuarios pueden elegir no transaccionar en la cadena. Dado que los desarrolladores de protocolos no pueden forzar a la gente a adoptar actualizaciones de la red, por lo general, evitarán la implementación de EIP si los puntos controversiales pesan más que los beneficios que pueden aportar a la comunidad en general.
-Se espera que los defensores de la EIP soliciten una devolución de parte de todos los actores. Si en algún momento usted es el defensor de una EIP polémica, debería intentar lidiar con las objeciones con el fin de generar un consenso en torno a la EIP. Dado el tamaño y la diversidad de la comunidad Ethereum, no hay una sola medida (p. ej. un voto ejercido con una moneda) que puede ser utilizada para determinar el consenso comunitario, y se espera que los defensores de la EIP se adapten a las circunstancias de su propuesta.
+Se espera que los defensores de la EIP soliciten una devolución de parte de todos los actores. Si en algún momento usted es el defensor de una EIP polémica, debería intentar lidiar con las objeciones con el fin de generar un consenso en torno a la EIP. Dado el tamaño y la diversidad de la comunidad de Ethereum, no existe una única métrica (por ejemplo, una votación por monedas) que pueda usarse para medir el consenso de la comunidad, y se espera que quienes lideran una EIP se adapten a las circunstancias de su propuesta.
Además de centrarse en la seguridad de la red Ethereum, históricamente los desarrolladores del protocolo le han asignado gran importancia a lo que los desarrolladores de aplicaciones y herramientas y los usuarios valoran. Esto se debe a que el desarrollo en Ethereum, así como su uso, es lo que hace al ecosistema atractivo a otras personas. Adicionalmente, las EIP deben aplicarse en todas las implementaciones, las cuales son gestionadas por distintos equipos. Parte de este proceso generalmente implica convencer a varios equipos de desarrolladores del protocolo de que un cambio específico es valioso y que traería beneficios para los usuarios o resolvería problemas de seguridad.
-## Gestión de los desacuerdos {#disagreements}
+## Cómo gestionar desacuerdos {#disagreements}
El hecho de que existan muchas partes interesadas con diferentes motivaciones y creencias significa que los desacuerdos no son inusuales.
Por lo general, los desacuerdos se tratan en discusiones extensas en foros de acceso público con el fin de entender la raíz del problema y permitir que cualquier persona pueda aportar sus ideas. Usualmente, uno de los grupos del debate capitula o se alcanza un punto intermedio. Si un grupo se siente lo suficientemente fuerte, forzar un cambio en particular podría resultar en una división de la cadena de bloques. Una separación de la cadena se da cuando las partes involucradas se ponen de acuerdo para generar un cambio en el protocolo, donde, en consecuencia, se generan dos versiones incompatibles del mismo; generando dos cadenas de bloque diferentes.
-### La bifurcación de una DAO {#dao-fork}
+### La bifurcación de la DAO {#dao-fork}
-Las bifurcaciones se dan cuando hay mejoras técnicas o modificaciones que cambian las reglas del juego en el protocolo. Los [clientes de Ethereum](/developers/docs/nodes-and-clients/) deben actualizar su software para implementar las nuevas reglas establecidas en la bifurcación.
+Las bifurcaciones se dan cuando hay mejoras técnicas o modificaciones que cambian las reglas del juego en el protocolo. Los [clientes de Ethereum](/developers/docs/nodes-and-clients/) deben actualizar su software para implementar las nuevas reglas de la bifurcación.
-La bifurcación de una DAO surgió en respuesta al [ataque de una DAO en 2016](https://www.coindesk.com/learn/understanding-the-dao-attack), donde un contrato inseguro de una [DAO](/glossary/#dao) fue drenado por más de 3,6 millones de ETH en un hack. La bifurcación movió los fondos desde el contrato corrompido a un nuevo contrato, permitiendo que las personas que perdieron sus fondos, los recuperaran.
+La bifurcación de la DAO fue en respuesta al [ataque a la DAO en 2016](https://www.coindesk.com/learn/understanding-the-dao-attack), donde un contrato [DAO](/glossary/#dao) inseguro fue vaciado de más de 3,6 millones de ETH mediante un hackeo. La bifurcación movió los fondos desde el contrato corrompido a un nuevo contrato, permitiendo que las personas que perdieron sus fondos, los recuperaran.
-Esta acción fue votada por la comunidad Ethereum. Cualquier titular de ETH pudo votar a través de una transacción en [una plataforma de votación](https://web.archive.org/web/20170620030820/http://v1.carbonvote.com/). La decisión de bifurcar obtuvo más del 85 % de los votos.
+Esta acción fue votada por la comunidad Ethereum. Cualquier tenedor de ETH pudo votar mediante una transacción en [una plataforma de votación](https://web.archive.org/web/20170620030820/http://v1.carbonvote.com/). La decisión de realizar un fork obtuvo más del 85 % de los votos.
Es importante destacar que a pesar de que el protocolo efectivamente se bifurcó para revertir el ataque, el peso que el voto tenía en decidir la separación es debatible por varias razones:
@@ -128,7 +128,7 @@ Es importante destacar que a pesar de que el protocolo efectivamente se bifurcó
- Gran parte de las personas ni se enteró de que la votación se llevó a cabo.
- El voto solo representó a las personas que poseían ETH, no a los demás participantes del sistema.
-Una parte de la comunidad se rehusaba a la bifurcación, más que nada porque sentían que el incidente de la DAO no había sido un defecto del protocolo. Pasaron a formar [Ethereum Classic](https://ethereumclassic.org/).
+Una parte de la comunidad se rehusaba a la bifurcación, más que nada porque sentían que el incidente de la DAO no había sido un defecto del protocolo. Fueron quienes formaron [Ethereum Classic](https://ethereumclassic.org/).
Hoy en día, la comunidad de Ethereum adoptó una política de no intervención ante casos de errores en contrato o fondos perdidos para mantener la credibilidad neutral del sistema.
@@ -146,37 +146,39 @@ La habilidad de bifurcar en relación a desacuerdos políticos, económicos y fi
-## Gobernanza de la cadena de baliza (Beacon) {#beacon-chain}
+## Gobernanza de la Beacon Chain {#beacon-chain}
El proceso de gobernanza de Ethereum usualmente cambia velocidad y eficiencia por inclusión y honestidad. Con el fin de acelerar el desarrollo de la cadena de baliza, esta fue lanzada de forma separada a la red de Ethereum, que utiliza prueba de trabajo, y siguió sus propias reglas y gobernanza.
Si bien la especificación y las implementaciones de desarrollo siempre han sido totalmente de código abierto, no se utilizaron los procesos formales arriba descritos para proponer actualizaciones. Esto permitió que los investigadores y los implementadores especificaran los cambios y los acordaran más rápidamente.
-Cuando la cadena de baliza se fusionó con la capa de ejecución de Ethereum el 15 de septiembre de 2022, La fusión se completó como parte de la [actualización de la red París](/ethereum-forks/#paris). La propuesta [EIP-3675](https://eips.ethereum.org/EIPS/eip-3675) se cambió de "Última llamada" a "Final", completando la transición a la prueba de participación.
+Cuando la Beacon Chain se fusionó con la capa de ejecución de Ethereum el 15 de septiembre de 2022, se completó The Merge como parte de la [actualización de red París](/ethereum-forks/#paris). La propuesta [EIP-3675](https://eips.ethereum.org/EIPS/eip-3675) fue cambiada de 'Last Call' a 'Final', completando la transición a prueba de participación (proof of stake).
- Más sobre la fusión
+ Más sobre The Merge
## ¿Cómo puedo involucrarme? {#get-involved}
-- [Proponga una EIP](/eips/#participate)
-- [Debata sobre las propuestas actuales](https://ethereum-magicians.org/)
-- [Involúcrese en el debate R&D](https://ethresear.ch/)
-- [Únase al Discord de Ethereum R&D](https://discord.gg/mncqtgVSVw)
-- [Ejecute un nodo](/developers/docs/nodes-and-clients/run-a-node/)
-- [Contribuya al desarrollo del cliente](/developers/docs/nodes-and-clients/#execution-clients)
-- [Programa de aprendizaje del desarrollador principal](https://blog.ethereum.org/2021/09/06/core-dev-apprenticeship-second-cohort/)
+- [Proponer una EIP](/eips/#participate)
+- [Discutir propuestas actuales](https://ethereum-magicians.org/)
+- [Participar en la discusión de I+D](https://ethresear.ch/)
+- [Unirse al Discord de I+D de Ethereum](https://discord.gg/mncqtgVSVw)
+- [Ejecutar un nodo](/developers/docs/nodes-and-clients/run-a-node/)
+- [Contribuir al desarrollo de clientes](/developers/docs/nodes-and-clients/#execution-clients)
+- [Programa de Aprendizaje para Desarrolladores Principales](https://blog.ethereum.org/2021/09/06/core-dev-apprenticeship-second-cohort/)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-La gobernanza en Ethereum no está estrictamente definida. Muchos participantes de la comunidad tienen diversas perspectivas al respecto. Aquí nombramos algunas de ellas:
+La gobernanza en Ethereum no está estrictamente definida. Muchos participantes de la comunidad tienen diversas perspectivas al respecto. He aquí algunas de ellas:
-- [Notas sobre la gobernanza de la cadena de bloques](https://vitalik.eth.limo/general/2017/12/17/voting.html), _Vitalik Buterin_
+- [Notas sobre la gobernanza de blockchain](https://vitalik.eth.limo/general/2017/12/17/voting.html) - _Vitalik Buterin_
- [¿Cómo funciona la gobernanza de Ethereum?](https://cryptotesters.com/blog/ethereum-governance) – _Cryptotesters_
-- [Cómo funciona la gobernanza de Ethereum](https://medium.com/coinmonks/how-ethereum-governance-works-71856426b63a) - _Micah Zoltu_
-- [¿Qué es un desarrollador del núcleo de Ethereum?](https://hudsonjameson.com/2020-06-22-what-is-an-ethereum-core-developer/) - _Hudson Jameson_
-- [Gobernanza, parte 2: La plutocracia todavía es mala](https://vitalik.eth.limo/general/2018/03/28/plutocracy.html), _Vitalik Buterin_
-- [Más allá de la gobernanza de la votación de monedas](https://vitalik.eth.limo/general/2021/08/16/voting3.html), _Vitalik Buterin_
+- [Cómo funciona la gobernanza de Ethereum](https://medium.com/coinmonks/how-ethereum-governance-works-71856426b63a) – _Micah Zoltu_
+- [¿Qué es un desarrollador principal de Ethereum?](https://hudsonjameson.com/2020-06-22-what-is-an-ethereum-core-developer/) - _Hudson Jameson_
+- [Gobernanza, Parte 2: La plutocracia sigue siendo mala](https://vitalik.eth.limo/general/2018/03/28/plutocracy.html) - _Vitalik Buterin_
+- [Más allá de la gobernanza por votación con tokens](https://vitalik.eth.limo/general/2021/08/16/voting3.html) - _Vitalik Buterin_
+- [Entendiendo la gobernanza blockchain](https://web.archive.org/web/20250124192731/https://research.2077.xyz/understanding-blockchain-governance) - _2077 Research_
+- [El gobierno de Ethereum](https://www.galaxy.com/insights/research/ethereum-governance/) - _Christine Kim_
From 9fe8742581e8145431039cbe39bc25288a93d521 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:27 -0300
Subject: [PATCH 070/589] update(i18n):
public/content/translations/es/developers/docs/storage/index.md
---
.../es/developers/docs/storage/index.md | 99 +++++++++----------
1 file changed, 49 insertions(+), 50 deletions(-)
diff --git a/public/content/translations/es/developers/docs/storage/index.md b/public/content/translations/es/developers/docs/storage/index.md
index 3bec8c2097d..ec6f424cfaa 100644
--- a/public/content/translations/es/developers/docs/storage/index.md
+++ b/public/content/translations/es/developers/docs/storage/index.md
@@ -1,12 +1,12 @@
---
title: Almacenamiento descentralizado
-description: Resumen de qué es el almacenamiento descentralizado y herramientas disponibles para integrarse en una dapp.
+description: Resumen de qué es el almacenamiento descentralizado y las herramientas disponibles para integrarlo en una dapp.
lang: es
---
A diferencia de un servidor centralizado operado por una sola compañía u organización, los sistemas de almacenamiento descentralizado constan de una red de pares de usuario-operadores que mantienen una parte de la información general, lo que crea un sistema flexible de almacenamiento de archivos compartidos. Estos pueden estar en una aplicación basada en cadena de bloques o cualquier red de pares.
-Ethereum en sí puede usarse como un sistema de almacenamiento descentralizado, y de hecho lo es cuando se trata de almacenamiento de código en todos los contratos inteligentes. Sin embargo, cuando se trata de grandes cantidades de datos, no es para ello que se diseñó Ethereum. La cadena crece constantemente, pero al momento de escribir este artículo, la cadena de Ethereum tiene alrededor de 500 GB - 1 TB ([dependiendo del cliente](https://etherscan.io/chartsync/chaindefault)), y cada nodo de la red debe poder almacenar toda la información. Si la cadena se expandiera a grandes cantidades de información (digamos 5 TB), no sería viable que todos los nodos siguieran ejecutándose. Además, el costo de implementar todos estos datos en la red principal sería prohibitivo por las tarifas de [gas](/developers/docs/gas).
+Ethereum en sí puede usarse como un sistema de almacenamiento descentralizado, y de hecho lo es cuando se trata de almacenamiento de código en todos los contratos inteligentes. Sin embargo, cuando se trata de grandes cantidades de datos, no es para ello que se diseñó Ethereum. La cadena está creciendo constantemente, pero al momento de escribir esto, la cadena de Ethereum tiene un tamaño aproximado de entre 500 GB y 1 TB ([dependiendo del cliente](https://etherscan.io/chartsync/chaindefault)), y cada nodo de la red debe ser capaz de almacenar todos los datos. Si la cadena se expandiera a grandes cantidades de información (digamos 5 TB), no sería viable que todos los nodos siguieran ejecutándose. Además, el costo de desplegar esta cantidad de datos en Mainnet sería prohibitivamente alto debido a las tarifas de [gas](/developers/docs/gas).
Debido a estas limitaciones, necesitamos una cadena o metodología diferente para almacenar grandes cantidades de datos de manera descentralizada.
@@ -14,18 +14,18 @@ Al analizar opciones de almacenamiento descentralizado (dStorage), hay algunas c
- Mecanismo de persistencia / estructura de incentivos
- Aplicación de retención de datos
-- Descentralidad
+- Descentralización
- Consensos
## Mecanismo de persistencia / estructura de incentivos {#persistence-mechanism}
-### Basado en Blockchain {#blockchain-based}
+### Basado en blockchain {#blockchain-based}
Para que cierta información persista para siempre, necesitamos utilizar un mecanismo de persistencia. Por ejemplo, en Ethereum el mecanismo de persistencia se basa en dar cuenta de toda la cadena al ejecutar un nodo. Se van añadiendo datos al final de la cadena, y esta continúa creciendo, lo que requiere que cada nodo replique todos los datos incorporados.
-Esto se conoce como persistencia **basada en la cadena de bloques**.
+Esto se conoce como persistencia **basada en blockchain**.
-El problema de la persistencia basada en la cadena de bloques es que la cadena podría llegar a ser demasiado grande para mantener y almacenar todos los datos de forma viable (p. ej., [distintas fuentes](https://healthit.com.au/how-big-is-the-internet-and-how-do-we-measure-it/) estiman que Internet requeriría más de 40 Zetabytes de capacidad de almacenamiento).
+El problema con la persistencia basada en blockchain es que la cadena podría volverse demasiado grande para ser mantenida y almacenar todos los datos de manera viable (por ejemplo, [muchas fuentes](https://healthit.com.au/how-big-is-the-internet-and-how-do-we-measure-it/) estiman que Internet requeriría más de 40 Zetabytes de capacidad de almacenamiento).
La cadena de bloques, además, debe tener alguna estructura de incentivos. Por la persistencia basada en la cadena de bloques, se realiza un pago al validador. Cuando los datos se añaden a la cadena, se paga a los validadores para que añadan los datos.
@@ -36,14 +36,14 @@ Plataformas con persistencia basada en la cadena de bloques:
### Basado en contratos {#contract-based}
-La persistencia **basada en contratos** intuye que los datos no pueden ser replicados por cada nodo y almacenados para siempre, y en su lugar deben ser mantenidos con acuerdos contractuales. Hay acuerdos realizados con múltiples nodos que se comprometen a mantener ciertos datos durante un período de tiempo. Estos deberán ser reembolsados o renovados cuando expiran para seguir manteniendo los datos.
+La persistencia **basada en contratos** parte de la premisa de que los datos no pueden ser replicados por cada nodo y almacenados para siempre, y que en su lugar deben mantenerse mediante acuerdos de contrato. Hay acuerdos realizados con múltiples nodos que se comprometen a mantener ciertos datos durante un período de tiempo. Estos deberán ser reembolsados o renovados cuando expiran para seguir manteniendo los datos.
-En la mayoría de los casos, en lugar de almacenar todos los datos en la cadena, se almacena solo el hash del lugar donde se encuentran los datos en la cadena. De esta manera no es necesario escalar toda la cadena para poder mantener la información completa.
+En la mayoría de los casos, en vez de almacenar todos los datos en cadena, se almacenan en el hash donde se encuentran los datos en una cadena. De esta manera no es necesario escalar toda la cadena para poder mantener la información completa.
Plataformas con persistencia basada en contratos:
-- [Filecoin](https://docs.filecoin.io/about-filecoin/what-is-filecoin/)
-- [Skynet](https://siasky.net/)
+- [Filecoin](https://docs.filecoin.io/basics/what-is-filecoin)
+- [Skynet](https://sia.tech/)
- [Storj](https://storj.io/)
- [Züs](https://zus.network/)
- [Crust Network](https://crust.network)
@@ -55,13 +55,13 @@ Plataformas con persistencia basada en contratos:
IPFS es un sistema distribuido para almacenar y acceder a archivos, sitios web, aplicaciones y datos. No cuenta con un sistema de incentivos, pero se puede utilizar con cualquiera de las soluciones de incentivos basadas en contrato anteriores para una mayor persistencia. Otra forma de persistir datos en IPFS es trabajar con un servicio de "pinning" de datos, que mantendrá los datos fijados para usted. Incluso puede ejecutar su propio nodo de IPFS y contribuir a la red para persistir gratuitamente sus datos y/o los de los demás.
- [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/)
-- [Pinata:](https://www.pinata.cloud/) _Servicio de fijación de IPFS_
-- [web3.storage:](https://web3.storage/) _Servicio de pinning para IPFS/Filecoin_
-- [Infura:](https://infura.io/product/ipfs) _Servicio de pinning en IPFS_
-- [IPFS Scan:](https://ipfs-scan.io) _Explorador de pinning de IPFS_
-- [4EVERLAND:](https://www.4everland.org/) Servicio de pinning de IPFS
-- [Filebase:](https://filebase.com) _Servicio de pinning de IPFS_
-- [Spheron Network](https://spheron.network/): _Servicio de pinning de IPFS/Filecoin_
+- [Pinata](https://www.pinata.cloud/) _(servicio de fijado de IPFS)_
+- [web3.storage](https://web3.storage/) _(servicio de fijado de IPFS/Filecoin)_
+- [Infura](https://infura.io/product/ipfs) _(servicio de fijado de IPFS)_
+- [IPFS Scan](https://ipfs-scan.io) _(explorador de fijados de IPFS)_
+- [4EVERLAND](https://www.4everland.org/)_(servicio de fijado de IPFS)_
+- [Filebase](https://filebase.com) _(servicio de fijado de IPFS)_
+- [Spheron Network](https://spheron.network/) _(servicio de fijado de IPFS/Filecoin)_
SWARM es una tecnología descentralizada de almacenamiento y distribución de datos con un sistema de incentivos de almacenamiento y un oráculo del precios de alquiler de almacenamiento.
@@ -69,7 +69,7 @@ SWARM es una tecnología descentralizada de almacenamiento y distribución de da
Para conservar los datos, es necesario que los sistemas cuenten con algún mecanismo que asegure la conservación de los datos.
-### Mecanismo de desafíos {#challenge-mechanism}
+### Mecanismo de desafío {#challenge-mechanism}
Una de las formas más populares de aseguraese de que se están conservando los datos es usar un tipo de desafío criptográfico que se emita a los nodos para asegurarse de que aún tienen los datos. Un ejemplo simple de esto es la prueba de acceso de Arweave. Emiten un desafío a los nodos para comprobar si tienen los datos en el bloque más reciente y en un bloque pasado aleatorio. Si el nodo no responde, se lo penaliza.
@@ -82,13 +82,12 @@ Tipos de dStorage que utilizan un mecanismo de desafíos:
- Crust Network
- 4EVERLAND
-### Descentralización {#decentrality}
+### Descentralidad {#decentrality}
No existen buenas herramientas para medir el nivel de descentralización de las plataformas, pero en general querrá utilizar herramientas que no requieran de algún tipo de KYC para proporcionar evidencia de que no son centralizadas.
Herramientas descentralizadas sin KYC:
-- Züs (implementando una edición sin KYC)
- Skynet
- Arweave
- Filecoin
@@ -97,9 +96,9 @@ Herramientas descentralizadas sin KYC:
- Crust Network
- 4EVERLAND
-### Consensos {#consensus}
+### Consenso {#consensus}
-La mayoría de estas herramientas tienen su propia versión de un [mecanismo de consenso](/developers/docs/consensus-mechanisms/) pero generalmente se basan en la [**prueba de trabajo (PoW)**](/developers/docs/consensus-mechanisms/pow/) o la [**prueba de participación (PoS)**](/developers/docs/consensus-mechanisms/pos/).
+La mayoría de estas herramientas tienen su propia versión de un [mecanismo de consenso](/developers/docs/consensus-mechanisms/), pero en general se basan en [**proof-of-work (PoW)**](/developers/docs/consensus-mechanisms/pow/) o [**proof-of-stake (PoS)**](/developers/docs/consensus-mechanisms/pos/).
Basado en prueba de trabajo:
@@ -115,103 +114,103 @@ Basado en prueba de participación:
## Herramientas relacionadas {#related-tools}
-**IPFS: _InterPlanetary File System es un sistema descentralizado de almacenamiento y referencia de archivos para Ethereum._**
+**IPFS - _InterPlanetary File System es un sistema descentralizado de almacenamiento y referencia de archivos para Ethereum._**
- [Ipfs.io](https://ipfs.io/)
- [Documentación](https://docs.ipfs.io/)
- [GitHub](https://github.com/ipfs/ipfs)
-**Storj DCS: _Almacenamiento de objetos de nube descentralizado seguro, privado y compatible con S3 para desarrolladores._**
+**Storj DCS - _Almacenamiento en la nube descentralizado seguro, privado y compatible con S3 para desarrolladores._**
- [Storj.io](https://storj.io/)
- [Documentación](https://docs.storj.io/)
- [GitHub](https://github.com/storj/storj)
-**Skynet: _Skynet es una cadena de PoW descentralizada dedicada a una Web descentralizada._**
+**Sia - _Aprovecha la criptografía para crear un mercado de almacenamiento en la nube sin confianza, permitiendo a compradores y vendedores transaccionar directamente._**
-- [Skynet.net](https://siasky.net/)
-- [Documentación](https://siasky.net/docs/)
-- [GitHub](https://github.com/SkynetLabs/)
+- [Skynet.net](https://sia.tech/)
+- [Documentación](https://docs.sia.tech/)
+- [GitHub](https://github.com/SiaFoundation/)
-**Filecoin: _Filecoin fue creado por el equipo creador de IPFS. Es una capa de incentivos basada en los ideales de IPFS._**
+**Filecoin - _Filecoin fue creado por el mismo equipo detrás de IPFS._** Es una capa de incentivos basada en los ideales de IPFS._\*\*
- [Filecoin.io](https://filecoin.io/)
- [Documentación](https://docs.filecoin.io/)
- [GitHub](https://github.com/filecoin-project/)
-**Arweave: _Arweave es una plataforma de dStorage._**
+**Arweave - _Arweave es una plataforma dStorage para almacenar datos._**
- [Arweave.org](https://www.arweave.org/)
- [Documentación](https://docs.arweave.org/info/)
- [Arweave](https://github.com/ArweaveTeam/arweave/)
-**Züs: _Züs es una plataforma de dStorage de prueba de participación con sharding y blobbers._**
+**Züs - _Züs es una plataforma dStorage basada en proof-of-stake con sharding y blobbers._**
- [zus.network](https://zus.network/)
-- [Documentación](https://0chaindocs.gitbook.io/zus-docs)
+- [Documentación](https://docs.zus.network/zus-docs/)
- [GitHub](https://github.com/0chain/)
-**Crust Network: _Crust es una plataforma de dStorage basada en IPFS._**
+**Crust Network - _Crust es una plataforma dStorage sobre IPFS._**
- [Crust.network](https://crust.network)
- [Documentación](https://wiki.crust.network)
- [GitHub](https://github.com/crustio)
-**Swarm: _Plataforma de almacenamiento distribuido y servicio de distribución de contenido para la pila web3 de Ethereum._**
+**Swarm - _Una plataforma de almacenamiento distribuido y servicio de distribución de contenido para el stack web3 de Ethereum._**
- [EthSwarm.org](https://www.ethswarm.org/)
-- [Documentación](https://docs.ethswarm.org/docs/)
+- [Documentación](https://docs.ethswarm.org/)
- [GitHub](https://github.com/ethersphere/)
-**OrbitDB: _Base de datos "peer-to-peer" sobre IPFS._**
+**OrbitDB - _Una base de datos descentralizada entre pares sobre IPFS._**
- [OrbitDB.org](https://orbitdb.org/)
- [Documentación](https://github.com/orbitdb/field-manual/)
- [GitHub](https://github.com/orbitdb/orbit-db/)
-**Aleph.im: _Proyecto de nube descentralizada (base de datos, almacenamiento de archivos, computación y DID). Una combinación única de tecnología P2P fuera de cadena y en cadena. Compatibilidad con IPFS y multicadena._**
+**Aleph.im - _Proyecto de nube descentralizada (base de datos, almacenamiento de archivos, cómputo y DID)._** Una combinación única de tecnología P2P fuera de cadena y en cadena. Compatibilidad con IPFS y multicadena._\*\*
-- [Aleph.im](https://aleph.im/)
-- [Documentación](https://aleph.im/#/developers/)
+- [Aleph.im](https://aleph.cloud/)
+- [Documentación](https://docs.aleph.cloud/)
- [GitHub](https://github.com/aleph-im/)
-**Ceramic: _Almacenamiento de bases de datos IPFS con control del usuario para aplicaciones ricas en datos e interesantes._**
+**Ceramic - _Almacenamiento en base de datos IPFS controlada por el usuario para aplicaciones enriquecidas en datos y atractivas._**
- [Ceramic.network](https://ceramic.network/)
-- [Documentación](https://developers.ceramic.network/learn/welcome/)
+- [Documentación](https://developers.ceramic.network/)
- [GitHub](https://github.com/ceramicnetwork/js-ceramic/)
-**Filebase: _Almacenamiento descentralizado compatible con S3 y servicio de pinning de IPFS con redundancia geográfica. Todos los archivos subidos a IPFS a través de Filebase se fijan automáticamente a la infraestructura de Filebase con una replicación 3x en todo el mundo._**
+**Filebase - _Almacenamiento descentralizado compatible con S3 y servicio de fijado de IPFS con redundancia geográfica._** Todos los archivos subidos a IPFS a través de Filebase se fijan automáticamente en la infraestructura de Filebase con una replicación 3x alrededor del mundo._\*\*
- [Filebase.com](https://filebase.com/)
- [Documentación](https://docs.filebase.com/)
- [GitHub](https://github.com/filebase)
-**4EVERLAND: _Plataforma de computación en la nube web 3.0 que integra capacidades centrales de almacenamiento, computación y redes, es compatible con S3 y proporciona almacenamiento de datos sincrónico en redes de almacenamiento descentralizadas como IPFS y Arweave._**
+**4EVERLAND - _Una plataforma de computación en la nube Web 3.0 que integra capacidades principales de almacenamiento, cómputo y redes, es compatible con S3 y proporciona almacenamiento síncrono de datos en redes de almacenamiento descentralizadas como IPFS y Arweave._**
- [4everland.org](https://www.4everland.org/)
- [Documentación](https://docs.4everland.org/)
- [GitHub](https://github.com/4everland)
-**Kaleido: _Plataforma de cadena de bloques como servicio con nodos IPFS con clic en un botón_**
+**Kaleido - _Una plataforma blockchain como servicio con nodos IPFS de un solo clic_**
- [Kaleido](https://kaleido.io/)
- [Documentación](https://docs.kaleido.io/kaleido-services/ipfs/)
- [GitHub](https://github.com/kaleido-io)
-**Spheron Network: _Spheron es una plataforma como servicio (PaaS) diseñada para dApps que buscan lanzar sus aplicaciones en infraestructura descentralizada con el mejor rendimiento. Proporciona cómputo, almacenamiento descentralizado, CDN y alojamiento web listo para usar._**
+**Spheron Network - _Spheron es una plataforma como servicio (PaaS) diseñada para dApps que buscan lanzar sus aplicaciones en infraestructura descentralizada con el mejor rendimiento._** Ofrece cómputo, almacenamiento descentralizado, CDN y hosting web en un solo paquete._\*\*
- [spheron.network](https://spheron.network/)
- [Documentación](https://docs.spheron.network/)
- [GitHub](https://github.com/spheronFdn)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [¿Qué es el almacenamiento descentralizado?](https://coinmarketcap.com/alexandria/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) - _CoinMarketCap_
-- [Cinco mitos comunes que no son ciertos sobre el almacenamiento descentralizado](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) - _Storj_
+- [¿Qué es el almacenamiento descentralizado?](https://coinmarketcap.com/academy/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) - _CoinMarketCap_
+- [Desmintiendo cinco mitos comunes sobre el almacenamiento descentralizado](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) - _Storj_
-_¿Conoce algún recurso en la comunidad que le ayudara? ¡Edite la página y añádala!_
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Temas relacionados {#related-topics}
-- [Entornos de desarrollo](/developers/docs/frameworks/)
+- [Frameworks de desarrollo](/developers/docs/frameworks/)
From 11dc2788739a26697fbd85fce46764a97d5b1d12 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:29 -0300
Subject: [PATCH 071/589] update(i18n):
public/content/translations/es/roadmap/pbs/index.md
---
.../translations/es/roadmap/pbs/index.md | 29 +++++++++----------
1 file changed, 14 insertions(+), 15 deletions(-)
diff --git a/public/content/translations/es/roadmap/pbs/index.md b/public/content/translations/es/roadmap/pbs/index.md
index 1e4f7cba1af..f6f6351650e 100644
--- a/public/content/translations/es/roadmap/pbs/index.md
+++ b/public/content/translations/es/roadmap/pbs/index.md
@@ -4,21 +4,21 @@ description: Aprenda cómo y por qué los validadores de Ethereum separarán sus
lang: es
---
-# Separación del creador de propuestas {#proposer-builder-separation}
+# Separación de proponentes y constructores {#proposer-builder-separation}
-Los validadores de Ethereum del presente crean _y_ transmiten bloques. Agrupan transacciones de las que han oído hablar en una red de intercambio de información y las agrupan en un bloque que se envía a los pares en la red de Ethereum. **Separación del proponente-constructor (PBS)** dividie estas tareas entre múltiples validadores. Los constructores de bloques son responsables de la creación de bloques y de ofrecerlos al proponente de bloques de cada espacio. El proponente de bloque no puede ver su contenido, simplemente elige el más rentable y paga una tasa al constructor del bloque antes de enviarlo a sus pares.
+Actualmente, los validadores de Ethereum crean _y_ transmiten bloques. Agrupan transacciones de las que han oído hablar en una red de intercambio de información y las agrupan en un bloque que se envía a los pares en la red de Ethereum. La **separación de proponentes y constructores (PBS)** divide estas tareas entre múltiples validadores. Los constructores de bloques son responsables de la creación de bloques y de ofrecerlos al proponente de bloques de cada espacio. El proponente de bloque no puede ver su contenido, simplemente elige el más rentable y paga una tasa al constructor del bloque antes de enviarlo a sus pares.
Es una actualización importante por varias razones. En primer lugar, porque crea oportunidades para prevenir que una transacción sea censurada en el nivel de protocolo. En segundo lugar, evita que validadores aficionados sean superados por figuras institucionales que pueden optimizar la rentabilidad de sus construcciones de bloques. Y en tercer lugar, ayuda a Ethereum a escalar, ya que habilita las actualizaciones de Danksharding.
-## PSB y resistencia a la censura {#pbs-and-censorship-resistance}
+## PBS y resistencia a la censura {#pbs-and-censorship-resistance}
Separar a proponentes y constructores de bloques dificulta que los constructores de bloques puedan censurar las transacciones. Esto se debe a que se puede añadir un criterio de inclusión relativamente complejo, para asegurarse de que no haya censura antes de proponer el bloque. Ya que el proponente de bloque es una entidad separada del constructor de bloque, este puede adoptar el papel de protector contra censuras de los constructores de bloques.
Por ejemplo, pueden introducirse unas listas de inclusión para que cuando los validadores sepan sobre las transacciones, pero no las vean incluidas en los bloques, puedan imponerlas como condiciones indispensables en el siguiente bloque. La lista de inclusión es generada a partir de la zona de espera local de proponedores de bloques (la lista de transacciones de las que es consciente) y enviada a sus pares justo antes de que se proponga un bloque. Si falta alguna de las transacciones de la lista de inclusión, el proponente puede rechazar el bloque y añadir la transacción faltante antes de proponerla, o proponerla y que la rechacen otros validadores cuando la reciban. También existe una versión potencialmente más eficiente de esta idea que verifica que los constructores deben utilizar por completo el espacio del bloque disponible y si no lo hacen, las transacciones se añaden desde la lista de inclusión del proponente. Esta es un área de investigación aún activa y la configuración óptima para las listas de inclusión todavía no se ha determinado.
-[Las zonas de espera encriptadas](https://www.youtube.com/watch?v=fHDjgFcha0M&list=PLpktWkixc1gUqkyc1-iE6TT0RWQTBJELe&index=3) también imposibilitarán a constructores y proponentes saber qué transacciones se están incluyendo en un bloque hasta después de que el bloque se haya transmitido.
+[Las mempools cifradas](https://www.youtube.com/watch?v=fHDjgFcha0M&list=PLpktWkixc1gUqkyc1-iE6TT0RWQTBJELe&index=3) también podrían hacer imposible que los constructores y proponentes sepan qué transacciones están incluyendo en un bloque hasta después de que el bloque ya haya sido transmitido.
-
+
Las organizaciones poderosas pueden presionar a los validadores para censurar transacciones para o de ciertas direcciones. Los validadores cumplen con esta presión detectando direcciones en la lista negra en su pool de transacciones y omitiéndolas de los bloques que proponen. Después de PBS, esto ya no será posible, porque los proponentes de bloques no sabrán qué transacciones están transmitiendo en sus bloques. Cumplir las reglas de censura ―por ejemplo, con la elaboración de un proyecto de ley en esa región― puede que sea importante para ciertos individuos o aplicaciones. En estos casos, se cumple a nivel de la solicitud, mientras que el protocolo se mantiene sin permisos ni censura.
@@ -26,26 +26,25 @@ Las organizaciones poderosas pueden presionar a los validadores para censurar tr
## PBS y MEV {#pbs-and-mev}
-**Valor de extracción máximo (MEV)** se refiere a los validadores que maximizan su rentabilidad al ordenar transacciones favorables. Ejemplos comunes incluyen el intercambio arbitrario en bolsas descentralizadas (p. ej., favorecerse por anticipado de una gran venta o compra) o identificar oportunidades para liquidar posiciones DeFi. Maximizar MEV requiere sofisticados conocimientos técnicos y software personalizado adjuntado a validadores normales, aumentando las probabilidades de que los operadores institucionales superen a validadores individuales y aficionados en extracciones MEV. Esto significa que la rentabilidad de las participaciones probablemente sea más alta con operadores centralizados, creando una fuerza centralizadora que disuade las participaciones domésticas.
+**Valor máximo extraíble (MEV)** se refiere a que los validadores maximizan su rentabilidad al ordenar las transacciones de manera favorable. Algunos ejemplos comunes son el arbitraje de swaps en intercambios descentralizados (p. ej., adelantarse a una gran venta o compra) o la identificación de oportunidades para liquidar posiciones de DeFi. Maximizar MEV requiere sofisticados conocimientos técnicos y software personalizado adjuntado a validadores normales, aumentando las probabilidades de que los operadores institucionales superen a validadores individuales y aficionados en extracciones MEV. Esto significa que la rentabilidad de las participaciones probablemente sea más alta con operadores centralizados, creando una fuerza centralizadora que disuade las participaciones domésticas.
PBS soluciona este problema, ya que reconfigura la economía de MEV. En lugar de que el proponente de bloques haga su propia búsqueda de MEV, simplemente tomará un bloque de todos los que ofrecen los constructores de bloques. Puede que los constructores de bloques hayan realizado una extracción sofisticada de MEV, pero la recompensa va al proponente del bloque. Esto significa que incluso cuando un grupo pequeño de constructores de bloques especializados domina la extracción de MEV, la recompensa irá a cualquier validador en la red, incluyendo participaciones individuales domésticas.
-
+
-Los individuos pueden recibir incentivos a participar en agrupaciones en vez de hacerlo en solitario, debido a las sugerentes recompensas ofrecidas por las estrategias sofisticadas de MEV. Separar la construcción y la propuesta de bloques, significa que los MEV extraídos serán distribuidos a más validadores en lugar de que sean centralizados con los buscadores más efectivos de MEV. Al mismo tiempo, permitir la existencia de constructores de bloques especializados alivia el peso de la construcción de bloques de los individuos y evita que estos roben MEV, al tiempo que maximiza el número de validadores independientes e individuales que pueden verificar la fiabilidad de los bloques. El concepto importante es «asimetría de probador-verificador» que se refiere a la idea de que la producción centralizada de bloques está bien, siempre y cuando haya una red descentralizada, masiva y robusta de validadores que puedan verificar que los bloques son honestos. La descentralización es un medio, no un objetivo final; lo que queremos son bloques honestos.
-
+Los individuos pueden recibir incentivos a participar en agrupaciones en vez de hacerlo en solitario, debido a las sugerentes recompensas ofrecidas por las estrategias sofisticadas de MEV. Separar la construcción y la propuesta de bloques, significa que los MEV extraídos serán distribuidos a más validadores en lugar de que sean centralizados con los buscadores más efectivos de MEV. Al mismo tiempo, permitir la existencia de constructores de bloques especializados alivia el peso de la construcción de bloques de los individuos y evita que estos roben MEV, al tiempo que maximiza el número de validadores independientes e individuales que pueden verificar la fiabilidad de los bloques. El concepto importante es «asimetría de probador-verificador» que se refiere a la idea de que la producción centralizada de bloques está bien, siempre y cuando haya una red descentralizada, masiva y robusta de validadores que puedan verificar que los bloques son honestos. La descentralización es un medio, no un objetivo final; lo que queremos son bloques honestos.
-## PBS y Danksarding {#pbs-and-danksharding}
+## PBS y Danksharding {#pbs-and-danksharding}
-Danksharding es la manera en que Ethereum alcanzará >100.000 transacciones por segundo y minimizará las comisiones por usuarios acumulados. Se basa en PBS porque agrega a la carga de trabajo de los constructores de bloques, quienes tendrán que calcular pruebas de datos acumulados de hasta 64 MB en menos de 1 segundo. Esto probablemente requiera constructores especializados que puedan destinar una cantidad considerable de hardware a la tarea. De cualquier forma, en la situación actual, la construcción de bloques podría centralizarse cada vez más alrededor de operadores más sofisticados y poderosos por la extracción de MEV. La separación de proponente-constructor es la forma en que puede englobar esta realidad y evitar que ejerza una fuerza centralizadora sobre la validación de bloques (la parte importante) o la distribución de recompensas apostadas. Un gran beneficio secundario es que los constructores de bloques especializados también están dispuestos y son capaces de registrar las pruebas de datos necesarias para Danksharding.
+Danksharding es la forma en la que Ethereum escalará a más de 100,000 transacciones por segundo y minimizará las comisiones para los usuarios de rollups. Se basa en PBS porque agrega a la carga de trabajo de los constructores de bloques, quienes tendrán que calcular pruebas de datos acumulados de hasta 64 MB en menos de 1 segundo. Esto probablemente requiera constructores especializados que puedan destinar una cantidad considerable de hardware a la tarea. De cualquier forma, en la situación actual, la construcción de bloques podría centralizarse cada vez más alrededor de operadores más sofisticados y poderosos por la extracción de MEV. La separación de proponente-constructor es la forma en que puede englobar esta realidad y evitar que ejerza una fuerza centralizadora sobre la validación de bloques (la parte importante) o la distribución de recompensas apostadas. Un gran beneficio secundario es que los constructores de bloques especializados también están dispuestos y son capaces de registrar las pruebas de datos necesarias para Danksharding.
## Progreso actual {#current-progress}
-PBS está en una fase avanzada de investigación, pero aún hay algunas cuestiones importantes de diseños por resolver antes de presentarlas como prototipo a los clientes de Ethereum. Todavía no hay una especificación terminada. Esto significa que PBS está a un año de distancia o más. Revise la última actualización en el [estado de investigación](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance).
+PBS está en una fase avanzada de investigación, pero aún hay algunas cuestiones importantes de diseños por resolver antes de presentarlas como prototipo a los clientes de Ethereum. Todavía no hay una especificación terminada. Esto significa que PBS está a un año de distancia o más. Consulte el [estado más reciente de la investigación](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance).
-## Más información {#further-reading}
+## Lecturas recomendadas {#further-reading}
- [Estado de la investigación: resistencia a la censura bajo PBS](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance)
-- [Diseños de mercado con tarifas de PBS interesantes](https://ethresear.ch/t/proposer-block-builder-separation-friendly-fee-market-designs/9725)
-- [PSB y resistencia a la censura](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Secondary-auctions)
+- [Diseños de mercado de comisiones compatibles con PBS](https://ethresear.ch/t/proposer-block-builder-separation-friendly-fee-market-designs/9725)
+- [PBS y resistencia a la censura](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Secondary-auctions)
- [Listas de inclusión](https://notes.ethereum.org/@fradamt/H1ZqdtrBF)
From fb1e900b46de74fa85508cfcf57f0d498e2429c6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:31 -0300
Subject: [PATCH 072/589] update(i18n):
public/content/translations/es/wrapped-eth/index.md
---
.../translations/es/wrapped-eth/index.md | 70 +++++++++++++++++++
1 file changed, 70 insertions(+)
create mode 100644 public/content/translations/es/wrapped-eth/index.md
diff --git a/public/content/translations/es/wrapped-eth/index.md b/public/content/translations/es/wrapped-eth/index.md
new file mode 100644
index 00000000000..dc0028a8a56
--- /dev/null
+++ b/public/content/translations/es/wrapped-eth/index.md
@@ -0,0 +1,70 @@
+---
+title: ¿Qué es Wrapped Ether (WETH)?
+description: Introducción a Wrapped Ether (WETH), un wrapper compatible con ERC20 para Ether (ETH)
+lang: es
+---
+
+# Wrapped Ether (WETH) {#intro-to-weth}
+
+
+
+
Conecte su cartera para agrupar o desagrupar ETH en cualquier cadena en [WrapETH.com](https://www.wrapeth.com/)
+
+
+Ether (ETH) es la moneda principal de Ethereum. Se utiliza para varios propósitos como staking, como moneda, y pagar comisiones de gas para las transacciones. **WETH es efectivamente una forma actualizada de ETH con alguna funcionalidad adicional requerida por muchas aplicaciones y [tokens ERC-20](/glossary/#erc-20)**, que son otros tipos de activos digitales en Ethereum. Para trabajar con estos tokens, ETH debe seguir las mismas reglas que ellos, conocidas como el estándar ERC-20.
+
+Para cerrar esta brecha, se creó Wrapped Ether (WETH). **Wrapped ETH es un contrato inteligente que le permite depositar cualquier cantidad de ETH en el contrato y recibir la misma cantidad en WETH minteado** que cumple con el estándar de tokens ERC-20. WETH es una representación de ETH que le permite interactuar con él como un token ERC-20, no como el activo nativo ETH. Aún necesitará ETH nativo para pagar las tarifas de gas, así que asegúrese de ahorrar un poco al depositar.
+
+Puede unwrappear (desenvolver) WETH por ETH utilizando el contrato inteligente de WETH. Puede canjear cualquier cantidad de WETH con el contrato inteligente de WETH, y recibirá la misma cantidad en ETH. El WETH depositado se quema y se saca del suministro circulante de WETH.
+
+**Aproximadamente ~3% del suministro de ETH circulante es bloqueado en el contrato de token de WETH**, lo que lo convierte en uno de los [contratos inteligentes](/glossary/#smart-contract). WETH es especialmente importante para los usuarios que interactúan con aplicaciones en finanzas descentralizadas (DeFi).
+
+## ¿Por qué necesitamos WETH como un ERC-20? {#why-do-we-need-to-wrap-eth}
+
+[ERC-20](/developers/docs/standards/tokens/erc-20/) define una interfaz estándar para los tokens transferibles, para que cualquiera pueda crear tokens que interactúen sin problemas con aplicaciones y tokens que utilicen este estándar en el ecosistema de Ethereum. Dado que **ETH es anterior al estándar ERC-20**, ETH no cumple con esta especificación. Esto significa que **no puede fácilmente** cambiar ETH por otros tokens ERC-20 o **usar ETH en aplicaciones que utilizan el estándar ERC-20**. Wrappear ETH le da la oportunidad de hacer lo siguiente:
+
+- **Intercambiar ETH por tokens ERC-20**: No puede intercambiar ETH directamente por otros tokens ERC-20. WETH es una representación de ether que cumple con el estándar de tokens fungibles ERC-20 y se puede intercambiar con otros tokens ERC-20.
+
+- **Usar ETH en dapps**: Debido a que ETH no es compatible con ERC20, los desarrolladores tendrían que crear interfaces separadas (una para ETH y otra para tokens ERC-20) en dapps. Wrappear ETH elimina este obstáculo y permite a los desarrolladores manejar ETH y otros tokens dentro de la misma dapp. Muchas aplicaciones de finanzas descentralizadas utilizan este estándar y crean mercados para intercambiar estos tokens.
+
+## Wrapped Ether (WETH) vs. ether (ETH): ¿cuál es la diferencia? {#weth-vs-eth-differences}
+
+| | **Ether (ETH)** | **Wrapped Ether (WETH)** |
+| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Suministro | El suministro de ETH es manejado por el protocolo de Ethereum. La [emisión](/roadmap/merge/issuance) de ETH es manejada por los validadores de Ethereum cuando procesan transacciones y crean bloques. | WETH es un token ERC-20 cuyo suministro es manejado por un contrato inteligente. Nuevas unidades de WETH son emitidas por el contrato luego de que recibe depósitos de ETH que provienen de usuarios, o se queman unidades de WETH cuando un usuario desea canjear WETH por ETH. |
+| Propiedad | La propiedad está gestionada por el protocolo Ethereum a través del saldo de su cuenta. | La propiedad de WETH es gestionada por el contrato inteligente del token WETH, asegurado por el protocolo Ethereum. |
+| Gas | Ether (ETH) es la unidad de pago aceptada para el cálculo en la red Ethereum. Las tarifas de gas se denominan en gwei (una unidad de ether). | El pago del gas con tokens WETH no es compatible de forma nativa. |
+
+## Preguntas frecuentes {#faq}
+
+
+
+Usted paga tasas de gas para wrappear o unwrappear ETH utilizando el contrato WETH.
+
+
+
+
+
+En general, WETH se considera seguro porque se basa en un contrato inteligente sencillo y de eficacia probada. El contrato WETH también ha sido verificado formalmente, lo cual representa el estándar de seguridad más alto para contratos inteligentes en Ethereum.
+
+
+
+
+
+Además de la [implementación canónica de WETH](https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2) descrita en esta página, existen otras variantes. Pueden ser tokens personalizados creados por desarrolladores de aplicaciones o versiones emitidas en otras cadenas de bloques, y pueden comportarse de forma diferente o tener propiedades de seguridad distintas. **Compruebe siempre la información del token para saber con qué implementación de WETH está interactuando.**
+
+
+
+
+
+- [Red principal de Ethereum](https://etherscan.io/token/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)
+- [Arbitrum](https://arbiscan.io/token/0x82af49447d8a07e3bd95bd0d56f35241523fbab1)
+- [Optimism](https://optimistic.etherscan.io/token/0x4200000000000000000000000000000000000006)
+
+
+
+## Lecturas adicionales {#further-reading}
+
+- [¿Qué es WETH?](https://weth.tkn.eth.limo/)
+- [Información del token WETH en Blockscout](https://eth.blockscout.com/token/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)
+- [Verificación formal de WETH](https://zellic.io/blog/formal-verification-weth)
From a52039b5015d987cb7d2bdd8c8be5f1ec894dd46 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:32 -0300
Subject: [PATCH 073/589] update(i18n):
public/content/translations/es/staking/dvt/index.md
---
.../translations/es/staking/dvt/index.md | 56 +++++++++----------
1 file changed, 28 insertions(+), 28 deletions(-)
diff --git a/public/content/translations/es/staking/dvt/index.md b/public/content/translations/es/staking/dvt/index.md
index b33f351dff2..8d88237adcf 100644
--- a/public/content/translations/es/staking/dvt/index.md
+++ b/public/content/translations/es/staking/dvt/index.md
@@ -4,13 +4,13 @@ description: La tecnología de valor distribuido (o DVT) permite la operación d
lang: es
---
-# Tecnología de validador distribuido {#distributed-validator-technology}
+# Tecnología de validadores distribuidos {#distributed-validator-technology}
La tecnología de validador distribuido (DVT) es un enfoque para la seguridad del validador que reparte la gestión de claves y la firma de responsabilidades entre varias partes, para reducir puntos únicos de fallo, e incrementar la resiliencia del validador.
-Esto lo hace mediante la **división de la clave privada** usada para asegurar un validador **a través de muchos ordenadores** organizados en un «clúster». El beneficio de aporta es que se hace muy difícil que los atacantes puedan acceder a la clave, porque no se almacena completamente en una sola máquina. También permite que algunos nodos se desconecten, ya que la firma necesaria puede ser hecha por un subconjunto de las máquinas en cada cluster. Esto reduce los puntos únicos de fallo de la red y hace que el validador entero sea más robusto.
+Esto se logra **dividiendo la clave privada** que protege a un validador **en varias computadoras** organizadas en un "clúster". El beneficio de aporta es que se hace muy difícil que los atacantes puedan acceder a la clave, porque no se almacena completamente en una sola máquina. También permite que algunos nodos se desconecten, ya que la firma necesaria puede ser hecha por un subconjunto de las máquinas en cada cluster. Esto reduce los puntos únicos de fallo de la red y hace que el validador entero sea más robusto.
-
+
## ¿Por qué necesitamos la DVT? {#why-do-we-need-dvt}
@@ -20,7 +20,7 @@ Los validadores generan dos pares de claves público-privadas: claves validadora
Mediante el uso de DVT, los participantes pueden participar en la apuesta mientras mantienen la clave privada del validador en el almacenamiento en frío. Esto se consigue cifrando la clave original y completa del validador, para después dividirla en claves compartidas. Las claves compartidas en línea y se distribuyen a múltiples nodos que permiten la operación distribuida del validador. Esto es posible porque los validadores de Ethereum utilizan firmas BLS que son aditivas, lo que significa que la clave completa puede ser reconstruida sumando sus partes componentes. Esto permite al participante mantener la clave «maestra» del validador completa y original de forma segura sin conexión.
-### No existen puntos únicos de fallo. {#no-single-point-of-failure}
+### Sin puntos únicos de fallo {#no-single-point-of-failure}
Cuando un validador se divide entre distintos operarios y equipos, puede soportar fallos puntuales del hardware y del software sin desconectarse. Además, se puede reducir el riesgo de fallos utilizando distintas configuraciones para el hardware y el software en los nodos de un clúster. Esta capacidad de recuperación no está a disposición de las configuraciones de validador de nodo único: se origina en la capa DVT.
@@ -34,23 +34,23 @@ Sin la DVT es más sencillo que los proveedores de participación admitan sólo
**La DVT supone ventajas para Ethereum:**
-1. La **descentralización** del mecanismo de consenso de prueba de participación de Ethereum.
-2. Garantiza la **vitalidad** de la red
-3. Genera **tolerancia a los fallos** del validador.
-4. Operación de validador de **poca confianza**
-5. Reduce al mínimo los **riesgos de corte** y el tiempo de inactividad.
-6. **Mejora la diversidad** (cliente, centro de datos, ubicación, reglamentación, etc.).
-7. **Aumenta la seguridad** de la gestión de claves del validador.
+1. **Descentralización** del consenso de prueba de participación (proof-of-stake) de Ethereum
+2. Garantiza la **disponibilidad** de la red
+3. Crea **tolerancia a fallos** en los validadores
+4. Operación de validadores con **confianza minimizada**
+5. Riesgos de **corte** y tiempo de inactividad **minimizados**
+6. **Mejora la diversidad** (cliente, centro de datos, ubicación, regulación, etc.)
+7. **Mayor seguridad** en la gestión de claves de validadores
## ¿Cómo funciona la DVT? {#how-does-dvt-work}
Una solución DVT contiene los siguientes componentes:
-- **[Compartir secreto de Shamir](https://medium.com/@keylesstech/a-beginners-guide-to-shamir-s-secret-sharing-e864efbf3648)**: los validadores utilizan teclas [BLS](https://en.wikipedia.org/wiki/BLS_digital_signature). Las «acciones clave» individuales de BLS («acciones clave») pueden combinarse en una única clave agregada (firma). En DVT, la clave privada para un validador es la firma BLS combinada de cada operador en el clúster.
-- **[Esquema de firma del umbral](https://medium.com/nethermind-eth/threshold-signature-schemes-36f40bc42aca)**: determina el número de acciones clave individuales que son necesarias para firmar obligaciones, ejemplo, 3 de 4.
-- **[Generación de claves distribuidas (DKG)](https://medium.com/toruslabs/what-distributed-key-generation-is-866adc79620)**: el proceso criptográfico que genera fragmentos de clave y se usa para distribuir los fragmentos de una clave del validador existente o nueva entre los nodos del clúster.
-- **[Computación de múltiples partes(MPC)](https://messari.io/report/applying-multiparty-computation-to-the-world-of-blockchains)**: la clave completa del validator se genera en secreto mediante computación de múltiples partes. Ningún operador conoce la clave completa —solamente conocen su parte (su «fracción»).
-- **Protocolo de consenso**: el protocolo de consenso selecciona un nodo para que proponga bloques. Comparten el bloque con los otros nodos del clúster, los cuales agregan sus fragmentos de clave a la firma agregada. Cuando se han agregado suficientes fragmentos de clave, el bloque se propone en Ethereum.
+- **[Shamir's secret sharing](https://medium.com/@keylesstech/a-beginners-guide-to-shamir-s-secret-sharing-e864efbf3648)** - Los validadores utilizan [claves BLS](https://en.wikipedia.org/wiki/BLS_digital_signature). Las «acciones clave» individuales de BLS («acciones clave») pueden combinarse en una única clave agregada (firma). En DVT, la clave privada para un validador es la firma BLS combinada de cada operador en el clúster.
+- **[Threshold signature scheme](https://medium.com/nethermind-eth/threshold-signature-schemes-36f40bc42aca)** - Determina el número de fragmentos individuales de clave necesarios para firmar, por ejemplo, 3 de 4.
+- **[Distributed key generation (DKG)](https://medium.com/toruslabs/what-distributed-key-generation-is-866adc79620)** - Proceso criptográfico que genera los fragmentos de clave y permite distribuir partes de una clave de validador existente o nueva a los nodos de un clúster.
+- **[Multiparty computation (MPC)](https://messari.io/report/applying-multiparty-computation-to-the-world-of-blockchains)** - La clave completa del validador se genera en secreto usando computación multipartita. Ningún operador conoce la clave completa —solamente conocen su parte (su «fracción»).
+- **Protocolo de consenso** - El protocolo de consenso selecciona un nodo para que sea el proponente de bloque. Comparten el bloque con los otros nodos del clúster, los cuales agregan sus fragmentos de clave a la firma agregada. Cuando se han agregado suficientes fragmentos de clave, el bloque se propone en Ethereum.
Los validadores distribuidos incorporan tolerancia a fallos y pueden continuar funcionando incluso si algunos de los nodos individuales se desconecta. Esto quiere decir que el clúster es resiliente aun en el caso de que alguno de los nodos que lo integran resulte ser malicioso o perezoso.
@@ -58,34 +58,34 @@ Los validadores distribuidos incorporan tolerancia a fallos y pueden continuar f
La DVT tiene implicaciones importantes para la industria de las participaciones en general:
-### Participación en solitario {#solo-stakers}
+### Stakers individuales {#solo-stakers}
La TVD además habilita la participación sin custodia, al permitir que usted distribuya sus claves de validador entre nodos remotos, mientras mantenga la clave totalmente desconectada. Esto significa que los participantes domésticos no necesariamente deben invertir en hardware, mientras que la distribución de fragmentos de clave puede ayudar a fortalecerlos frente a posibles hackeos.
-### Participación como servicio (SaaS) {#saas}
+### Staking como servicio (SaaS) {#saas}
Los operadores (como las participaciones agrupadas y los participantes institucionales) que gestionan muchos validadores pueden utilizar la DVT para reducir su riesgo. Al distribuir su infraestructura, pueden añadir redundancia a sus operaciones y diversificar los tipos de hardware que utilizan.
La DVT comparte la responsabilidad de la gestión de claves entre varios nodos, lo que significa que también se pueden compartir algunos costes operativos. La DVT también puede reducir el riesgo operativo y los costes de seguro para los proveedores de participaciones.
-### Reservas de participación {#staking-pools}
+### Pools de staking {#staking-pools}
Debido a las configuraciones estándar de los validadores, las participaciones agrupadas y los proveedores de participaciones líquidas se ven obligados a tener distintos niveles de confianza de un único operador, ya que las ganancias y las pérdidas se comparten con todo el grupo. También dependen de los operadores para salvaguardar las claves de firma porque, hasta ahora, no tenían otra opción.
Aunque tradicionalmente se procura repartir el riesgo distribuyendo las participaciones entre varios operadores, cada uno de ellos sigue gestionando una participación importante de forma independiente. Depender de un único operador plantea enormes riesgos si su rendimiento es inferior al esperado, se produce un tiempo de inactividad, se ve comprometido o actúa de forma malintencionada.
-Al aprovechar la DVT, se reduce significativamente la confianza requerida de los operadores. **Los pools pueden permitir a los operadores mantener participaciones sin necesidad de custodiar claves de validador** (ya que sólo se utilizan participaciones de clave). También permite que las participaciones administradas se distribuyan entre más operadores (p. ej., en lugar de tener un solo operador que administre 1.000 validadores, DVT permite que esos validadores sean administrados colectivamente por múltiples operadores). Diversas configuraciones de operadores garantizarán que, si un operador falla, los demás aún podrán certificar. Esto produce redundancia y diversificación que conduce a un mejor rendimiento y resistencia, mientras maximiza las recompensas.
+Al aprovechar la DVT, se reduce significativamente la confianza requerida de los operadores. **Los pools pueden permitir a los operadores tener participaciones sin necesidad de custodiar las claves de los validadores** (ya que solo se utilizan fragmentos de clave). También permite que las participaciones administradas se distribuyan entre más operadores (p. ej., en lugar de tener un solo operador que administre 1.000 validadores, DVT permite que esos validadores sean administrados colectivamente por múltiples operadores). Diversas configuraciones de operadores garantizarán que, si un operador falla, los demás aún podrán certificar. Esto produce redundancia y diversificación que conduce a un mejor rendimiento y resistencia, mientras maximiza las recompensas.
Otro beneficio de minimizar la confianza de un solo operador es que las participaciones agrupadas pueden permitir una participación más abierta y sin permiso. Al hacerlo, los servicios pueden reducir su riesgo y apoyar la descentralización de Ethereum al usar ambos conjuntos de operadores, organizados y de acceso libre, por ejemplo, al hacer combinar operadores doméstricos o participantes menores con otros más grandes.
-## Desventajas potenciales de usar DVT {#potential-drawbacks-of-using-dvt}
+## Posibles desventajas del uso de DVT {#potential-drawbacks-of-using-dvt}
-- **Componente adicional**: introducir un nodo DVT añade otra parte propensa a ser vulnerable o no funcionar. Una forma de mitigarlo es intentar múltiples implementaciones de un nodo DVT, lo que significa múltiples clientes DVT (similar a como existen múltiples clientes para las capas de consenso y ejecución).
-- Los **costes operativos**: como DVT distribuye el validador entre múltiples partes, se requieren más nodos para operar en lugar de un sólo nodo, lo que incrementa los costes operativos.
-- **Latencia potencialmente mayor**: dado que DVT utiliza un protocolo de consenso para lograrlo entre múltiples nodos operando un validador, puede potencialmente incorporar una mayor latencia.
+- **Componente adicional**: introducir un nodo DVT añade otra parte que podría ser defectuosa o vulnerable. Una forma de mitigarlo es intentar múltiples implementaciones de un nodo DVT, lo que significa múltiples clientes DVT (similar a como existen múltiples clientes para las capas de consenso y ejecución).
+- **Costos operativos**: como DVT distribuye el validador entre múltiples partes, se requieren más nodos para la operación en lugar de solo un nodo, lo que genera costes operativos mayores.
+- **Latencia potencialmente incrementada**: dado que DVT utiliza un protocolo de consenso para lograr acuerdo entre los múltiples nodos que operan un validador, puede introducir una mayor latencia.
-## Más información {#further-reading}
+## Lecturas recomendadas {#further-reading}
-- [Especificiones de un validador distribuido Ethereum (detalladas)](https://github.com/ethereum/distributed-validator-specs)
-- [Especificaciones técnicas de un validador distribuido Ethereum](https://github.com/ethereum/distributed-validator-specs/tree/dev/src/dvspec)
-- [App del algoritmo sistema de compartición de secretos de Shamir](https://iancoleman.io/shamir/)
+- [Especificaciones de validadores distribuidos de Ethereum (nivel alto)](https://github.com/ethereum/distributed-validator-specs)
+- [Especificaciones técnicas de validadores distribuidos de Ethereum](https://github.com/ethereum/distributed-validator-specs/tree/dev/src/dvspec)
+- [Aplicación de demostración de Shamir secret sharing](https://iancoleman.io/shamir/)
From 4e425e5a3e60482753fe52fcbb1a748704162f56 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:33 -0300
Subject: [PATCH 074/589] update(i18n): src/intl/es/page-upgrades.json
---
src/intl/es/page-upgrades.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/intl/es/page-upgrades.json b/src/intl/es/page-upgrades.json
index 431a94a5035..d9db832b033 100644
--- a/src/intl/es/page-upgrades.json
+++ b/src/intl/es/page-upgrades.json
@@ -7,8 +7,8 @@
"page-upgrades-pbs": "No inminente: se espera para 2024/25",
"page-upgrades-post-merge-banner-tutorial-ood": "Este tutorial estará obsoleto después de la fusión y puede que no funcione. Por favor, cree una PR si desea contribuir.",
"page-upgrades-upgrades-guide": "Guía de actualizaciones de Ethereum",
- "page-upgrades-upgrades-docking": "La Fusión",
- "page-upgrades-shard-title": "Fragmentación",
+ "page-upgrades-upgrades-docking": "La fusión",
+ "page-upgrades-shard-title": "La fragmentación",
"page-upgrades-upgrades-beacon-chain": "La cadena de baliza",
"consensus-beaconscan-title": "beaconscan",
"consensus-beaconscan-in-title": "beaconcha.in",
From b77083d29b78a7682b6e5000695ae7327ecbbc81 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:35 -0300
Subject: [PATCH 075/589] update(i18n):
public/content/translations/es/defi/index.md
---
public/content/translations/es/defi/index.md | 150 +++++++++----------
1 file changed, 75 insertions(+), 75 deletions(-)
diff --git a/public/content/translations/es/defi/index.md b/public/content/translations/es/defi/index.md
index f8c69daf74d..cdd35f61ad7 100644
--- a/public/content/translations/es/defi/index.md
+++ b/public/content/translations/es/defi/index.md
@@ -1,6 +1,6 @@
---
title: Finanzas descentralizadas (DeFi)
-metaTitle: '¿Qué son las DeFi? | Beneficios y usos de las Finanzas Descentralizadas'
+metaTitle: ¿Qué son las DeFi? | Beneficios y usos de las Finanzas Descentralizadas
description: Una visión de las finanzas descentralizadas en Ethereum
lang: es
template: use-cases
@@ -23,7 +23,7 @@ Existe una economía creciente criptográfica palpable, en la que se puede prest
-## DeFi versus finanzas tradicionales {#defi-vs-tradfi}
+## DeFi vs finanzas tradicionales {#defi-vs-tradfi}
Una de las mejores maneras de determinar el potencial de las DeFi es entender los problemas que existen en la actualidad.
@@ -32,44 +32,44 @@ Una de las mejores maneras de determinar el potencial de las DeFi es entender lo
- Los servicios financieros pueden bloquear sus transacciones de dinero.
- Sus datos personales son una carga oculta en los servicios financieros que usa.
- Los gobiernos y las instituciones centralizadas pueden cerrar los mercados a voluntad.
-- Las horas de comercio están a menudo limitadas al horario laboral de una zona horaria específica.
+- El horario de operación suele estar limitado al horario laboral de una zona horaria específica.
- Las transferencias de dinero pueden tomar días debido a procesos humanos internos.
- Existe una prima al uso de servicios financieros debido a que las instituciones intermediarias necesitan su parte.
### Una comparación {#defi-comparison}
-| DeFi | Finanzas tradicionales |
-| ------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Usted guarda su dinero. | Las empresas guardan su dinero. |
-| Usted controla el destino de su dinero y la manera en la cual se gasta. | Debe confiar en que las compañías no administren mal su dinero, como prestárselo a prestatarios no fiables. |
-| Los fondos se transfieren en cuestión de minutos. | Los pagos pueden tomar días debido a procesos manuales. |
-| La actividad financiera se realiza bajo un seudónimo. | La actividad financiera está fuertemente vinculada a su identidad. |
-| DeFi está abierto a cualquier persona. | Debe solicitar el uso de los servicios financieros. |
-| Los mercados siempre están abiertos. | Los mercados cierran debido a que los empleados necesitan descanso. |
+| DeFi | Finanzas tradicionales |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Usted guarda su dinero. | Las empresas guardan su dinero. |
+| Usted controla el destino de su dinero y la manera en la cual se gasta. | Debe confiar en que las compañías no administren mal su dinero, como prestárselo a prestatarios no fiables. |
+| Los fondos se transfieren en cuestión de minutos. | Los pagos pueden tomar días debido a procesos manuales. |
+| La actividad financiera se realiza bajo un seudónimo. | La actividad financiera está fuertemente vinculada a su identidad. |
+| DeFi está abierto a cualquier persona. | Debe solicitar el uso de los servicios financieros. |
+| Los mercados siempre están abiertos. | Los mercados cierran debido a que los empleados necesitan descanso. |
| Construido sobre la transparencia: cualquier persona puede mirar los datos del producto e inspeccionar el funcionamiento del sistema. | Las instituciones financieras son como libros cerrados: no puede preguntar por el historial de préstamos, el registro de sus activos administrados, etc. |
- Explorar las aplicaciones DeFi
+ Explorar aplicaciones DeFi
## Todo empezó con Bitcoin... {#bitcoin}
Bitcoin es en muchos sentidos la primera aplicación DeFi. Bitcoin permite poseer y controlar valor y mandarlo a cualquier parte del mundo. Lo hace a través de un registro público, que provee una forma para que grandes cantidades de personas, que no se conocen entre sí, puedan acordar diferentes transacciones sin la necesidad de un intermediario. Bitcoin está abierto a cualquier persona y nadie tiene la autoridad para cambiar sus reglas. Las reglas de Bitcoin, como su escasez y el acceso público, están escritas en su tecnología. No se asemeja a las finanzas tradicionales, donde los gobiernos pueden imprimir dinero que devalúa sus ahorros y las empresas pueden cerrar mercados.
-Ethereum se basa en esto. Al igual que Bitcoin, las reglas no pueden cambiar en contra de su voluntad y todo el mundo tiene acceso. Pero también hace que el dinero digital sea programable a través del uso de [contratos inteligentes](/glossary/#smart-contract), permitiendo que pueda ir más allá de simplemente almacenar y enviar valor.
+Ethereum se basa en esto. Al igual que Bitcoin, las reglas no pueden cambiar en contra de su voluntad y todo el mundo tiene acceso. Pero esto también hace que este dinero digital sea programable, utilizando [contratos inteligentes](/glossary/#smart-contract), para que pueda ir más allá de almacenar y enviar valor.
## Dinero programable {#programmable-money}
-Esto puede sonar extraño... ¿por qué querría programar mi dinero? Sin embargo, esto no es más que una característica natural de los tókenes en Ethereum. Cualquier persona puede programar operaciones lógicas dentro de los pagos. De esta manera, puede obtener el control y la seguridad de Bitcoin combinado con los servicios que proveen las instituciones financieras. Esto le permite realizar actividades con las criptomonedas que no podría hacer en Bitcoin como prestar o pedir un préstamo, planificar pagos, invertir en fondos indexados y más.
+Esto suena extraño... "¿por qué querría programar mi dinero?" Sin embargo, esto no es más que una característica natural de los tókenes en Ethereum. Cualquier persona puede programar operaciones lógicas dentro de los pagos. De esta manera, puede obtener el control y la seguridad de Bitcoin combinado con los servicios que proveen las instituciones financieras. Esto le permite realizar actividades con las criptomonedas que no podría hacer en Bitcoin como prestar o pedir un préstamo, planificar pagos, invertir en fondos indexados y más.
-
+
Si es nuevo en Ethereum, explore y pruebe algunas de nuestras sugerencias de aplicaciones DeFi.
- Explorar las aplicaciones DeFi
+ Explorar aplicaciones DeFi
@@ -78,45 +78,44 @@ Esto puede sonar extraño... ¿por qué querría programar mi dinero? Sin embarg
Existe una alternativa descentralizada para la mayoría de servicios financieros. Pero Ethereum también nos presenta la oportunidad de crear productos financieros completamente nuevos. Esta es una lista en constante crecimiento.
-- [Envíe dinero a cualquier parte del mundo](#send-money)
-- [Pague sueldos en tiempo real desde y hacia cualquier parte del mundo](#stream-money)
-- [Acceda a monedas estables](#stablecoins)
-- [Pida préstamos de fondos usando garantías](#lending)
-- [Pida préstamos sin garantías](#flash-loans)
-- [Empiece a ahorrar en criptomonedas](#saving)
-- [Comercie con tókenes](#swaps)
-- [Haga crecer su portafolio](#investing)
-- [Financie sus ideas](#crowdfunding)
-- [Compre un seguro](#insurance)
-- [Gestione su portafolio](#aggregators)
+- [Enviar dinero por todo el mundo](#send-money)
+- [Transferir dinero por todo el mundo](#stream-money)
+- [Acceder a monedas estables](#stablecoins)
+- [Pedir fondos con garantía](#lending)
+- [Pedir prestado sin garantía](#flash-loans)
+- [Comenzar tu ahorro en cripto](#saving)
+- [Intercambiar tokens](#swaps)
+- [Hacer crecer tu portafolio](#investing)
+- [Financia tus ideas](#crowdfunding)
+- [Comprar seguros](#insurance)
+- [Gestionar tu portafolio](#aggregators)
-### Envíe dinero a cualquier parte del mundo {#send-money}
+### Envía dinero por todo el mundo rápidamente {#send-money}
-Como cadena de bloques, Ethereum está diseñado para realizar transacciones de una manera segura y con un alcance global. Al igual que Bitcoin, Ethereum hace que enviar dinero alrededor del mundo sea tan fácil como enviar un correo electrónico. Solo se necesita ingresar el [nombre ENS](/glossary/#ens) del beneficiario (p. ej., bob.eth) o la dirección de cuenta usando su billetera y este recibirá directamente el pago en cuestión de minutos (por lo general). Para enviar o recibir pagos, necesitará tener una [cartera](/wallets/).
+Como cadena de bloques, Ethereum está diseñado para realizar transacciones de una manera segura y con un alcance global. Al igual que Bitcoin, Ethereum hace que enviar dinero alrededor del mundo sea tan fácil como enviar un correo electrónico. Simplemente ingrese el [nombre ENS](/glossary/#ens) de su destinatario (por ejemplo, bob.eth) o la dirección de su cuenta desde su cartera y el pago llegará directamente en cuestión de minutos (usualmente). Para enviar o recibir pagos, necesitará una [cartera](/wallets/).
- Ver DApps de pagos
+ Ver dapps de pago
#### Pague sueldos en tiempo real desde y hacia cualquier parte del mundo... {#stream-money}
Puede pagar sueldos en tiempo real usando Ethereum. Esto le permite pagarle a una persona su sueldo en cualquier momento, dándole acceso a su dinero cuando quiera que lo necesite. De la misma manera, también puede alquilar objetos como taquillas o patinetes eléctricos.
-Y si no desea enviar o transmitir [ETH](/glossary/#ether) debido a lo mucho que su valor puede cambiar, existen monedas alternativas en Ethereum: [stablecoins](/glossary/#stablecoin).
+Y si no desea enviar o transferir [ETH](/glossary/#ether) debido a cómo puede cambiar su valor, existen monedas alternativas en Ethereum: [stablecoins](/glossary/#stablecoin).
-### Acceso a monedas estables {#stablecoins}
+### Accede a monedas estables {#stablecoins}
La volatilidad de las criptomonedas es un problema para muchos productos financieros y para el gasto en general. La comunidad DeFi ha resuelto este desafío a través del uso de las monedas estables. Su valor permanece vinculado a otro activo, generalmente una moneda popular como los dólares.
Las monedas como Dai o USDC tienen un valor que varía en pocos céntimos del dólar. Esto las hace perfectas para acumular ganancias o comerciar. Muchas personas en Latinoamérica han utilizado las monedas estables como una forma de proteger sus ahorros frente a momentos de gran incertidumbre que involucran a las monedas emitidas por su gobierno.
- Más sobre monedas estables
-
+ Para conocer más a fondo las monedas estables
@@ -128,26 +127,26 @@ Los préstamos de dinero de proveedores descentralizados se llevan a cabo de dos
- En función de las reservas (o «pools»), cuando los prestamistas proporcionan reservas (liquidez) a una reserva de la que los prestatarios pueden pedir préstamos.
- Ver DApps de préstamos
+ Ver dapps de préstamos
El uso de un prestamista descentralizado tiene muchas ventajas...
-#### Préstamos privados {#borrowing-privacy}
+#### Préstamos con privacidad {#borrowing-privacy}
Hoy en día, los créditos y los préstamos de dinero giran totalmente en torno a las personas implicadas. Los bancos necesitan saber si es probable que pueda pagar un préstamo antes de autorizarlo.
-Los préstamos descentralizados funcionan sin que ninguna de las partes tenga que identificarse. En su lugar, el prestatario debe ofrecer una garantía que recibirá el prestamista automáticamente si el crédito no se cubre. Algunos prestamistas incluso aceptan [NFT](/glossary/#nft) como garantía. Los NFT son una obra de un bien único, como un cuadro. [Más información sobre NFT](/nft/)
+Los préstamos descentralizados funcionan sin que ninguna de las partes tenga que identificarse. En su lugar, el prestatario debe ofrecer una garantía que recibirá el prestamista automáticamente si el crédito no se cubre. Algunos prestamistas incluso aceptan [NFTs](/glossary/#nft) como garantía. Los NFT son una obra de un bien único, como un cuadro. [Más sobre NFTs](/nft/)
Esto le permite pedir dinero prestado sin cheques de crédito ni entregar información privada.
-#### Acceso a los fondos globales {#access-global-funds}
+#### Acceso a fondos globales {#access-global-funds}
-Cuando usted utiliza un prestamista o crédito descentralizado, tiene acceso a los fondos depositados de todo el mundo, no solo los fondos bajo custodia de su banco o institución elegida. Esto hace más accesibles los préstamos y mejora los tipos de interés.
+Cuando usted utiliza un prestamista o crédito descentralizado, tiene acceso a los fondos depositados de todo el mundo, no solo los fondos bajo custodia de su banco o institución elegida. Esto hace que los préstamos sean más accesibles y mejora las tasas de interés.
#### Eficiencias fiscales {#tax-efficiencies}
-Los préstamos pueden proporcionarle acceso a los fondos que necesita sin necesidad de vender sus ETH (operación imponible). En su lugar, puede usar ETH como garantía para obtener un préstamo de moneda estable. Esto le da el flujo de efectivo que necesita y le permite mantener sus ETH. Las monedas estables son tókenes mucho mejores para cuando necesita dinero ya que no fluctúan en valor como el ETH. [Más sobre las monedas estables](#stablecoins)
+Los préstamos pueden proporcionarle acceso a los fondos que necesita sin necesidad de vender sus ETH (operación imponible). En su lugar, puede usar ETH como garantía para obtener un préstamo de moneda estable. Esto le da el flujo de efectivo que necesita y le permite mantener sus ETH. Las monedas estables son tókenes mucho mejores para cuando necesita dinero ya que no fluctúan en valor como el ETH. [Más sobre stablecoins](#stablecoins)
#### Préstamos flash {#flash-loans}
@@ -173,27 +172,27 @@ Si la oferta de B cayera repentinamente y el usuario no pudiera comprar la canti
Para hacer lo que describimos en el ejemplo de arriba pero en el mundo real necesitaría mucho dinero. Estas estrategias para hacer dinero solo son accesibles para aquellos que ya tienen dinero. Los préstamos flash son un ejemplo de un futuro en el que tener dinero no es necesariamente un requisito previo para ganar dinero.
- Más información sobre los préstamos flash
+ Más sobre préstamos flash
-### Empiece a ahorrar con criptomonedas {#saving}
+### Empieza a ahorrar con cripto {#saving}
#### Préstamos {#lending}
Puede ganar un interés en criptomonedas al prestar dinero: verá cómo aumentan sus fondos en tiempo real. Ahora mismo, las tasas de interés son mucho más altas de lo que probablemente pueda obtener en su banco local (si tiene la suerte suficiente de encontrar uno). Le mostramos un ejemplo:
-- Presta sus 100 Dai, [criptomoneda estable](/stablecoins/), a un producto como, por ejemplo, Aave.
+- Presta tus 100 Dai, una [stablecoin](/stablecoins/), a un producto como Aave.
- Recibirá 100 Aave Dai (aDai), que es un token que representa su Dai prestado.
-- Sus tókenes aDai crecerán en base al tipo de interés y podrá ver cómo aumenta el valor total de su cartera. Dependiendo del [APR](/glossary/#apr), ¡el saldo de su billetera será algo así como 100.1234 al cabo de unos días o incluso unas horas!
+- Sus tókenes aDai crecerán en base al tipo de interés y podrá ver cómo aumenta el valor total de su cartera. Dependiendo de la [APR](/glossary/#apr), el saldo de su cartera mostrará algo como 100.1234 después de unos días o incluso horas.
- Puede retirar una cantidad de Dai que sea igual a sus fondos de aDai siempre que quiera.
- Ver DApps de préstamos
+ Ver dapps de préstamos
-#### Loterías sin pérdidas {#no-loss-lotteries}
+#### Loterías sin pérdida {#no-loss-lotteries}
Las loterías sin pérdidas —como PoolTogether— son una nueva forma divertida e innovadora de ahorrar dinero.
@@ -211,43 +210,43 @@ El fondo de premios es generado gracias al interés que se crea al prestar los d
-### Tókenes de intercambio {#swaps}
+### Intercambiar tokens {#swaps}
Hay miles de tókenes en Ethereum. Los intercambios descentralizados (DEX) le permiten intercambiar diferentes tókenes siempre que quiera. Nunca abandonará el control de sus activos. Es como usar un intercambio de monedas cuando se visita un país diferente. Pero la versión DeFi nunca se cierra. Los mercados funcionan a todas horas, los 365 días del año; la tecnología se asegura de que siempre habrá alguien que aceptará un intercambio.
Por ejemplo, si quiere usar la lotería sin pérdidas PoolTogether (explicada arriba) necesitará un token como Dai o USDC. Estos DEX le permiten cambiar sus ETH por tókenes y viceversa cuando haya acabado.
- Ver intercambios de tókenes
+ Ver intercambios de tokens
-### Transacciones avanzadas {#trading}
+### Trading avanzado {#trading}
Hay más opciones avanzadas para los inversores que quieren tener más control. Órdenes limitadas, perpetuas, operaciones de margen y muchas más. Con las transacciones descentralizadas obtiene acceso a la liquidez global; el mercado nunca se cierra, por lo que siempre tendrá el control de sus activos.
Cuando usa un intercambio centralizado, tiene que depositar sus activos antes de la operación y confiar en ellos. A pesar de que sus activos sí son depositados, están en riesgo, ya que los intercambios descentralizados son objetivos atractivos para los hackers.
- Ver DApps de transacciones
+ Ver dapps de trading
-### Haga crecer su portafolio {#investing}
+### Haz crecer tu portafolio {#investing}
Hay productos de gestión de fondos en Ethereum que tratarán de hacer crecer su portafolio basándose en la estrategia que usted elija. Este proceso es automático, abierto para todo el mundo y no necesita de un gestor humano que se haga cargo de sus ganancias.
Un buen ejemplo es el [fondo DeFi Pulse Index (DPI)](https://defipulse.com/blog/defi-pulse-index/). Este es un fondo que se reequilibra automáticamente para asegurar que su portafolio siempre incluya los mejores tókenes DeFi por capitalización de mercado. Nunca tendrá que gestionar ninguno de los detalles y puede retirar del fondo cuando usted quiera.
- Ver DApps de inversión
+ Ver dapps de inversión
-### Financie sus ideas {#crowdfunding}
+### Financia tus ideas {#crowdfunding}
Ethereum es una plataforma ideal para la recaudación de fondos:
@@ -256,14 +255,14 @@ Ethereum es una plataforma ideal para la recaudación de fondos:
- Los recaudadores pueden configurar reembolsos automáticos si, por ejemplo, hay una fecha límite y una cantidad mínima a la que no se ha llegado.
- Ver DApps de recaudación de fondos
+ Ver dapps de crowdfunding
-#### Financiación cuadrática {#quadratic-funding}
+#### Financiamiento cuadrático {#quadratic-funding}
Ethereum es un software de código abierto, y un montón del trabajo que se ha hecho hasta ahora se ha financiado gracias a la comunidad. Esto ha llevado al incremento de un nuevo modelo de financiamiento: financiación cuadrática. Tiene el potencial de mejorar la forma en que financiaremos todo tipo de bienes públicos en el futuro.
-El financiamiento cuadrático se asegura de que los proyectos que reciben el mayor financiamiento son aquellos con la demanda más única. En otras palabras, son proyectos que pretenden mejorar la vida de la mayoría de las personas. Así es como funciona:
+El financiamiento cuadrático asegura que los proyectos que reciban más financiamiento sean aquellos que tengan mayor demanda. En otras palabras, proyectos que pretenden mejorar la vida de la mayoría de las personas. Así es como funciona:
1. Hay una reserva de fondos donados.
2. Comienza una ronda de financiación pública.
@@ -273,7 +272,7 @@ El financiamiento cuadrático se asegura de que los proyectos que reciben el may
Esto significa que el Proyecto A con sus 100 donaciones de 1 dólar puede terminar con mayor fondeo que el Proyecto B con una donación única de 10.000 dólares (en función del tamaño del grupo correspondiente).
- Más información sobre la financiación cuadrática
+ Más sobre financiamiento cuadrático
@@ -282,20 +281,20 @@ Esto significa que el Proyecto A con sus 100 donaciones de 1 dólar puede termin
El aseguramiento descentralizado tiene como objetivo hacer que el aseguramiento sea más barato, se pague más rápido y sea más transparente. Con más automatización, la cobertura es más asequible y los pagos son mucho más rápidos. Los datos usados para decidir sobre su solicitud son completamente transparentes.
-Los productos de Ethereum —al igual que el software— pueden sufrir virus y aprovechamiento. Ahora mismo hay muchos productos de seguros enfocándose en proteger a sus usuarios de pérdidas de fondos. Sin embargo, existen proyectos que empiezan a crear cobertura para todo lo que la vida nos depare. Un buen ejemplo es la cobertura de Etherisc Crop, que pretende [proteger a los pequeños agricultores en Kenia contra las sequías y las inundaciones](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc). El aseguramiento descentralizado ofrece una cobertura más barata para los granjeros a los que se les cobra con precios fuera del de los seguros tradicionales.
+Los productos de Ethereum, como un software, pueden sufrir bugs y exploits. Ahora mismo hay muchos productos de seguros enfocándose en proteger a sus usuarios de pérdidas de fondos. Sin embargo, existen proyectos que empiezan a crear cobertura para todo lo que la vida nos depare. Un buen ejemplo de esto es el seguro de cultivos de Etherisc, que busca [proteger a pequeños agricultores en Kenia contra sequías e inundaciones](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc). El aseguramiento descentralizado ofrece una cobertura más barata para los granjeros a los que se les cobra con precios fuera del de los seguros tradicionales.
- Ver DApps de aseguramiento
+ Ver dapps de seguros
-### Agregadores y gestores de portafolios {#aggregators}
+### Agregadores y gestores de portafolio {#aggregators}
Con tantas cosas en marcha, necesitará una forma de realizar un seguimiento de todas sus inversiones, préstamos y operaciones. Existen una gran cantidad de productos que le permiten coordinar toda su actividad de DeFi (Finanzas Descentralizadas) desde un solo lugar. Esta es la belleza de la arquitectura abierta de DeFi. Los equipos pueden crear interfaces en las que no solo puede ver sus saldos entre productos, sino que también puede usar sus funciones. Le resultará más útil a medida que explora más sobre DeFi.
- Ver DApps de portafolios
+ Ver dapps de portafolio
@@ -324,41 +323,42 @@ Ethereum es la base perfecta para DeFi por varias razones:
DeFi se puede dividir en varias capas:
1. La cadena de bloques: Ethereum contiene el registro de transacciones y el estado de las cuentas.
-2. Los activos: [ETH](/what-is-ether/) y otros tókenes (monedas).
-3. Los protocolos, o [contratos inteligentes](/glossary/#smart-contract), brindan funcionalidad, como por ejemplo, un servicio que permite el préstamo descentralizado de activos.
+2. Los activos – [ETH](/what-is-ether/) y los otros tókenes (monedas).
+3. Los protocolos: [contratos inteligentes](/glossary/#smart-contract) que proporcionan la funcionalidad. Por ejemplo, un servicio que permite el préstamo descentralizado de activos.
4. [Las aplicaciones](/apps/): los productos que usamos para gestionar y acceder a los protocolos.
-Nota: Gran parte de la DeFi utiliza el [estándar ERC-20](/glossary/#erc-20). Las aplicaciones en DeFi utilizan un wrapper para ETH llamado Wrapped Ether (WETH). [Más información sobre Wrapper Ether](/wrapped-eth).
+Nota: gran parte de DeFi utiliza el [estándar ERC-20](/glossary/#erc-20). Las aplicaciones en DeFi usan un wrapper de ETH llamado Wrapped Ether (WETH). [Más información sobre wrapped ether](/wrapped-eth).
-## Desarrollar DeFi {#build-defi}
+## Construye DeFi {#build-defi}
DeFi es un proyecto de código abierto. Puede inspeccionar, copiar e innovar todos los protocolos y aplicaciones de DeFi. Debido a su naturaleza de capas (todos comparten la misma cadena de bloques y los mismos activos), los protocolos pueden mezclarse y emparejarse para desbloquear combinaciones de oportunidades únicas.
- Más información sobre el desarrollo de DApps
+ Más sobre cómo crear dapps
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-### Datos sobre DeFi {#defi-data}
+### Datos DeFi {#defi-data}
- [DeFi Prime](https://defiprime.com/)
- [DeFi Llama](https://defillama.com/)
### Artículos sobre DeFi {#defi-articles}
-- [Guía sobre DeFi para principantes](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4), _Sid Coelho-Prabhu, 6 de enero de 2020_
+- [Una guía para principiantes de DeFi](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _Sid Coelho-Prabhu, 6 de enero de 2020_
+- [EEA DeFi Risk Assessment Guidelines](https://entethalliance.org/specs/defi-risks/) – Una visión general respaldada por la industria sobre cómo identificar y evaluar los riesgos clave en los protocolos DeFi.
-### Vídeos {#videos}
+### Videos {#videos}
-- [Finematics - Educación DeFi](https://finematics.com/) – _Vídeos sobre DeFi_
-- [The Defiant](https://www.youtube.com/playlist?list=PLaDcID4s1KronHMKojfjwiHL0DdQEPDcq) – _DeFi Básico: Todo lo que necesitas saber para empezar en este apabullante espacio._
-- [Whiteboard Crypto](https://youtu.be/17QRFlml4pA)_¿Qué es DeFi?_
+- [Finematics - educación en finanzas descentralizadas](https://finematics.com/) – _Videos sobre DeFi_
+- [The Defiant](https://www.youtube.com/playlist?list=PLaDcID4s1KronHMKojfjwiHL0DdQEPDcq) - _DeFi básico: Todo lo que necesita saber para iniciarse en este espacio, a veces desconcertante._
+- [Whiteboard Crypto](https://youtu.be/17QRFlml4pA) _¿Qué es DeFi?_
### Comunidades {#communities}
-- [Servidor Discord de DeFi Llama](https://discord.defillama.com/)
-- [Servidor Discord de DeFi Pulse](https://discord.gg/Gx4TCTk)
+- [Servidor de Discord DeFi Llama](https://discord.defillama.com/)
+- [Servidor de Discord DeFi Pulse](https://discord.gg/Gx4TCTk)
From 697787edf5088818dc58997054859879f18758a5 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:37 -0300
Subject: [PATCH 076/589] update(i18n):
public/content/translations/es/developers/docs/networks/index.md
---
.../es/developers/docs/networks/index.md | 161 +++++++++++++-----
1 file changed, 117 insertions(+), 44 deletions(-)
diff --git a/public/content/translations/es/developers/docs/networks/index.md b/public/content/translations/es/developers/docs/networks/index.md
index 85416e8a06b..d60e6d42212 100644
--- a/public/content/translations/es/developers/docs/networks/index.md
+++ b/public/content/translations/es/developers/docs/networks/index.md
@@ -10,21 +10,21 @@ Su cuenta de Ethereum funcionará a través de las diferentes redes, pero el sal
## Requisitos previos {#prerequisites}
-Debería entender los [aspectos básicos de Ethereum](/developers/docs/intro-to-ethereum/) antes de leer en las diferentes redes, ya que las redes de prueba le darán una versión barata y segura de Ethereum con la que experimentar.
+Debe comprender los [conceptos básicos de Ethereum](/developers/docs/intro-to-ethereum/) antes de aprender sobre las diferentes redes, ya que las redes de prueba le ofrecerán una versión económica y segura de Ethereum para experimentar.
## Redes públicas {#public-networks}
Las redes públicas son accesibles para cualquier persona del mundo que disponga de una conexión al Internet. Cualquiera puede leer o crear transacciones en una blockchain pública y validar las transacciones que se están ejecutando. El consenso entre pares decide la inclusión de las transacciones y el estado de la red.
-### Red principal de Ethereum {#ethereum-mainnet}
+### Ethereum Mainnet {#ethereum-mainnet}
La red principal es la blockchain de producción de Ethereum pública primaria, en la que las transacciones de valor real se realizan en el libro de contabilidad distribuido.
-Cuando las personas y los entes de intercambio discuten los precios de los ETH, están hablando de la funcionalidad de transferir monedas digitales de remitentes a destinatarios en una red principal.
+Cuando las personas y los exchanges hablan de los precios de ETH, se están refiriendo al ETH de la Mainnet.
-### Red de pruebas de Ethereum {#ethereum-testnets}
+### Redes de prueba de Ethereum {#ethereum-testnets}
-Además de la red principal, existen las redes de prueba públicas. Estas redes las utilizan los desarrolladores de protocolos o los desarrolladores de contratos inteligentes para probar las actualizaciones de los protocolos y los posibles contratos inteligentes en un entorno similar a los entornos de producción antes de implementarlos en la red principal. Como ejemplo, podíamos pensar en los servidores de producción frente a los de almacenamiento.
+Además de Mainnet, existen redes de prueba públicas. Estas son redes utilizadas por desarrolladores de protocolos o de smart contracts para probar tanto actualizaciones del protocolo como posibles smart contracts en un entorno similar a producción antes de su implementación en Mainnet. Como ejemplo, podíamos pensar en los servidores de producción frente a los de almacenamiento.
En la mayoría de los casos es importante comprobar cualquier código de contrato que escriba en una red de pruebas antes de implementarlo en la red principal. Entre DApps que se integran con contratos inteligentes existentes, la mayoría de los proyectos tienen copias desplegadas en redes de pruebas.
@@ -34,15 +34,11 @@ El ETH en las redes de prueba se supone que no tiene un valor real; sin embargo,
#### ¿Qué red de prueba debo usar?
-Las dos redes públicas de prueba que los desarrolladores de clientes están manteniendo actualmente son Sepolia y Hoodi. Sepolia es una red de desarrolladores de contratos y aplicaciones para probar sus aplicaciones. La red Hoodi permite a los desarrolladores de protocolos probar actualizaciones de red y permite a los participantes hacer pruebas de ejecución de validadores.
+Las dos redes públicas de prueba que los desarrolladores de clientes están manteniendo actualmente son Sepolia y Hoodi. Sepolia es una red de desarrolladores de contratos y aplicaciones para probar sus aplicaciones. La red Hoodi permite a los desarrolladores de protocolos probar actualizaciones de red y permite a los participantes probar validadores en ejecución.
#### Sepolia {#sepolia}
-****Sepolia es la red de prueba predeterminada recomendada para el desarrollo de aplicaciones. La red Sepolia utiliza un conjunto de validadores autorizados. Es bastante nueva, lo que significa que su estado e historia son bastante limitados. Esto significa que la red se sincroniza rápidamente y que ejecutar un nodo requiere menos almacenamiento. Esto es útil para los usuarios que quieren activar rápidamente un nodo e interactuar directamente con la red.
-
-- Conjunto de validadores cerrado, controlado por el cliente y equipos de prueba
-- Nueva red de prueba, menos aplicaciones implementadas que otras redes de prueba
-- Sincronización y ejecución rápidas en un nodo que requieren un espacio mínimo en el disco
+**Sepolia es la red de prueba predeterminada recomendada para el desarrollo de aplicaciones**. La red Sepolia utiliza un conjunto de validadores con permisos controlados por los equipos de clientes y pruebas.
##### Recursos
@@ -54,71 +50,125 @@ Las dos redes públicas de prueba que los desarrolladores de clientes están man
##### Faucets
-- [QuickNode Sepolia Faucet](https://faucet.quicknode.com/drip)
+- [Faucet de Sepolia de Alchemy](https://www.alchemy.com/faucets/ethereum-sepolia)
+- [Faucet de Sepolia de Chain Platform](https://faucet.chainplatform.co/faucets/ethereum-sepolia/)
+- [Faucet de Sepolia de Chainstack](https://faucet.chainstack.com/sepolia-testnet-faucet)
+- [Faucet del Ecosistema Ethereum](https://www.ethereum-ecosystem.com/faucets/ethereum-sepolia)
+- [Grifo de Sepolia de ethfaucet.com](https://ethfaucet.com/networks/ethereum)
+- [Faucet de Google Cloud Web3 Sepolia](https://cloud.google.com/application/web3/faucet/ethereum/sepolia)
- [Grabteeth](https://grabteeth.xyz/)
-- [PoW faucet](https://sepolia-faucet.pk910.de/)
-- [Faucet de cartera Coinbase | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet)
-- [Alchemy Sepolia faucet](https://sepoliafaucet.com/)
-- [Faucet Infura Sepolia](https://www.infura.io/faucet)
-- [Faucet Chainstack Sepolia](https://faucet.chainstack.com/sepolia-testnet-faucet)
-- [Faucet del ecosistema Ethereum](https://www.ethereum-ecosystem.com/faucets/ethereum-sepolia)
+- [Faucet de Sepolia de Infura](https://www.infura.io/faucet)
+- [Faucet PoW](https://sepolia-faucet.pk910.de/)
+- [Faucet de Sepolia de QuickNode](https://faucet.quicknode.com/ethereum/sepolia)
#### Hoodi {#hoodi}
-_Nota: [la red de pruebas Goerli está obsoleta](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17) y ha sido reemplazada por Hoodi. Por favor, considere la migración de sus aplicaciones a Sepolia._
-
-Hoodi es una red de prueba para probar la validación y la participación. La red Hoodi está abierta a usuarios que quieren ejecutar un validador de red de pruebas. Los participantes que quieran probar las actualizaciones del protocolo antes de que se implementen en la red principal deben usar Hoodi.
+Hoodi es una red de prueba para probar la validación y la participación. La red Hoodi está abierta para usuarios que quieren ejecutar un validador en una red de pruebas. Los participantes que quieran probar actualizaciones del protocolo antes de que sean desplegadas en la red principal, por tanto, deberían usar Hoodi.
-- Conjunto de validador abierto, los participantes pueden probar las actualizaciones de la red.
-- Estado grande, útil para probar interacciones complejas de contratos inteligentes.
-- Más tiempo para sincronizar y requiere más almacenamiento para ejecutar un nodo.
+- Conjunto de validador abierto, los participantes pueden probar las actualizaciones de la red
+- Estado grande, útil para probar interacciones complejas de contratos inteligentes
+- Tarda más en sincronizarse y requiere más almacenamiento para ejecutar un nodo
##### Recursos
- [Sitio web](https://hoodi.ethpandaops.io/)
- [GitHub](https://github.com/eth-clients/hoodi)
-- [Explorer](https://explorer.hoodi.ethpandaops.io/)
+- [Explorador](https://explorer.hoodi.ethpandaops.io/)
- [Checkpoint Sync](https://checkpoint-sync.hoodi.ethpandaops.io/)
+- [Otterscan](https://hoodi.otterscan.io/)
+- [Etherscan](https://hoodi.etherscan.io/)
##### Faucets
-- [Faucet Hoodi](https://hoodi.ethpandaops.io/)
+- [Faucet de Hoodi de Chain Platform](https://faucet.chainplatform.co/faucets/ethereum-hoodi/)
+- [Faucet de Hoodi](https://hoodi.ethpandaops.io/)
+- [Faucet PoW](https://hoodi-faucet.pk910.de/)
+
+#### Ephemery {#ephemery}
+
+Ephemery es un tipo único de red de prueba que se reinicia por completo cada mes. El estado de ejecución y consenso vuelve a la génesis cada 28 días, lo que significa que cualquier cosa que suceda en la red de prueba es efímera. Esto lo convierte en idóneo para una prueba a corto plazo, arranque rápido de nodos y aplicaciones de «hola mundo» que no necesitan permanencia.
+
+- Estado siempre nuevo, pruebas a corto plazo de validadores y aplicaciones
+- Incluye solo un conjunto básico de contratos
+- Conjunto de validador abierto y de fácil acceso a grandes cantidades de fondos
+- Los requisitos de nodo más pequeños y la sincronización más rápida, <5Gb de media
+
+##### Recursos
+
+- [Sitio web](https://ephemery.dev/)
+- [Github](https://github.com/ephemery-testnet/ephemery-resources)
+- [Chat de la comunidad](https://matrix.to/#/#staker-testnet:matrix.org)
+- [Blockscout](https://explorer.ephemery.dev/)
+- [Otterscan](https://otter.bordel.wtf/)
+- [Explorador Beacon](https://beaconlight.ephemery.dev/)
+- [Checkpoint Sync](https://checkpoint-sync.ephemery.ethpandaops.io)
+- [Launchpad](https://launchpad.ephemery.dev/)
-Para iniciar un validador en la red de prueba de Hoodi, utilice la [plataforma de lanzamiento de Hoodi](https://hoodi.launchpad.ethereum.org/en/).
+#### Faucets
-### Redes de pruebas de Capa 2 {#layer-2-testnets}
+- [Faucet de Bordel](https://faucet.bordel.wtf/)
+- [Faucet PoW de Pk910](https://ephemery-faucet.pk910.de/)
-[Capa 2 (L2)](/layer-2/) es un término colectivo para describir un conjunto específico de soluciones de escalabilidad de Ethereum. Una capa 2 es una cadena de bloques por separado que amplía Ethereum y hereda las garantías de seguridad de Ethereum. Las redes de prueba de capa 2 suelen estar estrechamente acopladas a redes de pruebas públicas de Ethereum.
+#### Holesky (obsoleta) {#holesky}
+
+La testnet Holesky está obsoleta desde septiembre de 2025. Los operadores de participación y los proveedores de infraestructura deberían usar Hoodi en su lugar para pruebas del validador.
+
+- [Anuncio de cierre de la testnet Holesky](https://blog.ethereum.org/2025/09/01/holesky-shutdown-announcement) - _Blog de EF, 1 de septiembre de 2025_
+- [Actualizaciones de las testnets Holesky y Hoodi](https://blog.ethereum.org/en/2025/03/18/hoodi-holesky) - _Blog de EF, 18 de marzo de 2025_
+
+### Redes de prueba de capa 2 {#layer-2-testnets}
+
+[Layer 2 (L2)](/layer-2/) es un término colectivo para describir un conjunto específico de soluciones de escalabilidad para Ethereum. Una capa 2 es una cadena de bloques por separado que amplía Ethereum y hereda las garantías de seguridad de Ethereum. Las redes de prueba de capa 2 suelen estar estrechamente acopladas a redes de pruebas públicas de Ethereum.
#### Arbitrum Sepolia {#arbitrum-sepolia}
-Una red de pruebas para [Arbitrum](https://arbitrum.io/).
+Una testnet para [Arbitrum](https://arbitrum.io/).
+
+##### Recursos
+
+- [Etherscan](https://sepolia.arbiscan.io/)
+- [Blockscout](https://sepolia-explorer.arbitrum.io/)
##### Faucets
-- [Faucet Chainlink](https://faucets.chain.link/arbitrum-sepolia)
-- [Faucet Alchemy](https://www.alchemy.com/faucets/arbitrum-sepolia)
+- [Faucet de Arbitrum Sepolia de Alchemy](https://www.alchemy.com/faucets/arbitrum-sepolia)
+- [Faucet de Arbitrum Sepolia de Chainlink](https://faucets.chain.link/arbitrum-sepolia)
+- [Grifo de Arbitrum Sepolia de ethfaucet.com](https://ethfaucet.com/networks/arbitrum)
+- [Faucet de Arbitrum Sepolia de QuickNode](https://faucet.quicknode.com/arbitrum/sepolia)
-#### Optimism Sepolia {#optimistic-sepolia}
+#### Optimistic Sepolia {#optimistic-sepolia}
-Una red de pruebas para [Optimism](https://www.optimism.io/).
+Una testnet para [Optimism](https://www.optimism.io/).
+
+##### Recursos
+
+- [Etherscan](https://sepolia-optimistic.etherscan.io/)
+- [Blockscout](https://optimism-sepolia.blockscout.com/)
##### Faucets
-- [Faucet Chainlink](https://faucets.chain.link/optimism-sepolia)
-- [Faucet Alchemy](https://www.alchemy.com/faucets/optimism-sepolia)
+- [Faucet de Alchemy](https://www.alchemy.com/faucets/optimism-sepolia)
+- [Faucet de Chainlink](https://faucets.chain.link/optimism-sepolia)
+- [Grifo de Optimism Sepolia de ethfaucet.com](https://ethfaucet.com/networks/optimism)
+- [Faucet de testnet](https://docs.optimism.io/builders/tools/build/faucets)
#### Starknet Sepolia {#starknet-sepolia}
-Una red de prueba para [Starknet](https://www.starknet.io).
+Una testnet para [Starknet](https://www.starknet.io).
+
+##### Recursos
+
+- [Starkscan](https://sepolia.starkscan.co/)
##### Faucets
-- [Faucet Alchemy](https://www.alchemy.com/faucets/starknet-sepolia)
+- [Faucet de Alchemy](https://www.alchemy.com/faucets/starknet-sepolia)
+- [Faucet de Blast Starknet Sepolia](https://blastapi.io/faucets/starknet-sepolia-eth)
+- [Faucet de Starknet](https://starknet-faucet.vercel.app/)
## Redes privadas {#private-networks}
-Una red de Ethereum es una red privada si sus nodos no están conectados a una red pública (es decir, a una red principal o una red de pruebas). En este contexto, el término privado solo significa reservado o aislado, en lugar de protegido o seguro.
+Una red Ethereum es privada si sus nodos no están conectados a una red pública (es decir, Mainnet o una testnet). En este contexto, el término privado solo significa reservado o aislado, en lugar de protegido o seguro.
### Redes de desarrollo {#development-networks}
@@ -132,12 +182,35 @@ El proceso de consenso se controla mediante un conjunto predefinido de nodos de
Si una red pública de Ethereum es como la red pública de internet, puede entender una red de consorcio como una intranet privada.
+## ¿Por qué las testnets de Ethereum llevan nombres de estaciones de metro? {#why-naming}
+
+Muchas testnets de Ethereum llevan el nombre de estaciones de metro o tren del mundo real. Esta tradición de nombrar comenzó temprano y refleja las ciudades globales donde han vivido o trabajado los colaboradores. Es simbólico, memorable y práctico. Al igual que las testnets están aisladas de la Ethereum mainnet, las líneas de metro funcionan separadas del tráfico superficial.
+
+### Testnets habituales y heredadas {#common-and-legacy-testnets}
+
+- **Sepolia**: un barrio vinculado al metro en Atenas, Grecia. Actualmente se usa para pruebas de smart contracts y dApps.
+- **Hoodi**: lleva el nombre de la estación de metro Hoodi en Bengaluru, India. Se utiliza para pruebas de validadores y actualizaciones de protocolo.
+- **Goerli** _(obsoleta)_: lleva el nombre de Görlitzer Bahnhof en Berlín, Alemania.
+- **Rinkeby** _(obsoleta)_: lleva el nombre de un barrio de Estocolmo con estación de metro.
+- **Ropsten** _(obsoleta)_ — Se refiere a una zona y antiguo terminal de ferry/metro en Estocolmo.
+- **Kovan** _(obsoleta)_ — Lleva el nombre de una estación de MRT en Singapur.
+- **Morden** _(obsoleta)_ — Lleva el nombre de una estación del metro de Londres. La primera testnet pública de Ethereum.
+
+### Otras testnets especializadas {#other-testnets}
+
+Algunas testnets se crearon para pruebas de corta duración o específicas de actualizaciones y no necesariamente tienen temática de metro:
+
+- **Holesky** _(obsoleta)_ — Lleva el nombre de la estación Holešovice en Praga. Usada para pruebas de validadores; obsoleta desde 2025.
+- **Kiln**, **Zhejiang**, **Shandong**, **Prater**, **Pyrmont**, **Olympic** _(todas obsoletas)_ y **Ephemery**: creadas para simulaciones de actualizaciones como The Merge, Shanghai o experimentos con validadores. Algunos nombres son regionales o temáticos en lugar de estar basados en estaciones de metro.
+
+Usar nombres de estaciones de metro ayuda a los desarrolladores a identificar y recordar rápidamente las testnets sin tener que depender de IDs de cadena numéricos. También refleja la cultura de Ethereum: práctica, global y centrada en las personas.
+
## Herramientas relacionadas {#related-tools}
-- [Chainlist](https://chainlist.org/) _lista de redes EVM para conectar carteras y proveedores a las ID de cadena y red apropiadas_
-- [Cadenas basadas en EVM](https://github.com/ethereum-lists/chains) _Repositorio de GitHub con metadatos de cadena que alimentan la Chainlist_
+- [Chainlist](https://chainlist.org/) _lista de redes EVM para conectar billeteras y proveedores al Chain ID y Network ID correspondientes_
+- [Cadenas basadas en EVM](https://github.com/ethereum-lists/chains) _Repositorio de GitHub con metadatos de cadenas que alimentan Chainlist_
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Propuesta: ciclo de vida de red de prueba Ethereum predecible](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17)
-- [La evolución de las redes de Ethereum](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/)
+- [Propuesta: Ciclo de vida predecible de los testnets de Ethereum](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17)
+- [La evolución de los testnets de Ethereum](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/)
From 82d47c0807c448d7d7a941927672321ef06907ee Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:39 -0300
Subject: [PATCH 077/589] update(i18n):
public/content/translations/es/staking/solo/index.md
---
.../translations/es/staking/solo/index.md | 160 +++++++++---------
1 file changed, 77 insertions(+), 83 deletions(-)
diff --git a/public/content/translations/es/staking/solo/index.md b/public/content/translations/es/staking/solo/index.md
index f571ad66611..c1c4ad31df5 100644
--- a/public/content/translations/es/staking/solo/index.md
+++ b/public/content/translations/es/staking/solo/index.md
@@ -13,65 +13,60 @@ summaryPoints:
- Desconfíe y no deje nunca de controlar las claves de sus fondos
---
-## ¿Qué es la participación desde casa? {#what-is-solo-staking}
+## ¿Qué es el staking doméstico? {#what-is-solo-staking}
-La participación desde casa es el acto de [ejecutar un nodo de Ethereum](/run-a-node/) conectado a Internet y depositar 32 ETH para activar un [validador](#faq), permitiéndole participar directamente en el consenso de la red.
+El staking en casa consiste en [ejecutar un nodo de Ethereum](/run-a-node/) conectado a Internet y depositar 32 ETH para activar un [validador](#faq), lo que le otorga la capacidad de participar directamente en el consenso de la red.
-**La participación desde casa incrementa la descentralización de la red de Ethereum**, haciendo que la red sea más resistente a la censura y logrando robustez contra ataques. Puede que otros métodos de participación no ayuden a la red de la misma manera. La participación desde casa es la mejor forma de participación para asegurar Ethereum.
+**El staking doméstico aumenta la descentralización de la red Ethereum**, lo que hace que Ethereum sea más resistente a la censura y más robusta ante los ataques. Es posible que otros métodos de staking no ayuden a la red de la misma manera. El staking doméstico es la mejor opción de staking para proteger Ethereum.
-Un nodo Ethereum consiste tanto en un cliente de capa de ejecución (EL), como en un cliente de capa de consenso (CL). Estos clientes son programas que funcionan estrechamente entre sí, en conjunto con un par de claves de validación, para verificar transacciones y bloques, certificar el encabezado corecto de la cadena, resumir verificaciones, y proponer bloques.
+Un nodo de Ethereum se compone de un cliente de capa de ejecución (EL) y de un cliente de capa de consenso (CL). Estos clientes son un software que funciona conjuntamente, junto con un conjunto válido de claves de firma, para verificar transacciones y bloques, dar fe de la cabecera correcta de la cadena, agregar atestaciones y proponer bloques.
-Los participantes desde casa son responsables de operar el hardware necesario para ejecutar estos clientes. Es muy recomendable utilizar una máquina específicamente dedicada a esto, que usted opere desde su hogar, algo que es extremadamente beneficioso para la salud de la red.
+Los stakers domésticos son responsables de operar el hardware necesario para ejecutar estos clientes. Es muy recomendable utilizar una máquina dedicada para esto que usted opere desde casa, esto es extremadamente beneficioso para la salud de la red.
Un participante desde casa recibe las recompensas directamente desde el protocolo por mantener su validador funcionando correctamente y en línea.
-## ¿Por qué participar desde casa? {#why-stake-solo}
+## ¿Por qué hacer staking desde casa? {#why-stake-solo}
Participar desde casa conlleva más responsabilidad, pero proporciona el máximo control posible sobre los fondos y la configuración de los validadores.
-
-
-
+
+
+
-## Consideraciones antes de participar desde casa {#considerations-before-staking-solo}
+## Consideraciones antes de hacer staking en casa {#considerations-before-staking-solo}
-Por mucho que busquemos que participar desde casa sea accesible y libre de riesgos para todos, esta no es la realidad. Hay algunas consideraciones prácticas y serias que debemos tener en cuenta antes de elegir participar desde casa con sus ETH.
+Por mucho que deseemos que el staking doméstico sea accesible y esté libre de riesgos para todo el mundo, no es la realidad. Hay algunas consideraciones prácticas y serias a tener en cuenta antes de elegir hacer staking doméstico con sus ETH.
-
-Al operar su propio nodo debería invertir tiempo en aprender cómo utilizar el software que ha elegido. Esto implica leer la documentación pertinente y estar en sintonía con los canales de comunicación de los equipos de desarrollo relacionados.
+
+Cuando opere su propio nodo, debe dedicar algo de tiempo a aprender a usar el software que ha elegido. Esto implica leer la documentación pertinente y estar en sintonía con los canales de comunicación de los equipos de desarrollo.
-Cuanto más entienda sobre el software que está ejecutando y cómo funciona la prueba de participación, menos riesgo tendrá como participante, y le será más fácil solucionar cualquier incidente que pueda surgir en su función como operador de nodos.
-
+Cuanto más entienda sobre el software que está ejecutando y cómo funciona la prueba de participación, menos arriesgado será como staker, y más fácil será solucionar cualquier problema que pueda surgir en el camino como operador de nodos.
-
-La configuración del nodo requiere un nivel de comodidad razonable al trabajar con ordenadores, aunque las nuevas herramientas lo facilitan con el tiempo. Entender la interfaz de la línea de comandos es útil, pero no estrictamente necesario.
+
+La configuración de un nodo requiere un nivel de comodidad razonable a la hora de trabajar con ordenadores, aunque las nuevas herramientas facilitan cada vez más esta tarea. Entender la interfaz de línea de comandos es útil, pero ya no es estrictamente necesario.
-También requiere una configuración de hardware muy básica, y cierta comprensión de las especificaciones mínimas recomendadas.
-
+También requiere una configuración de hardware muy básica y cierta comprensión de las especificaciones mínimas recomendadas.
-
-De la misma manera que las claves privadas protegen su dirección de Ethereum, necesitará generar claves específicamente para su validador. Debe entender cómo proteger cualquier frase semilla o clave secreta de forma efectiva.{' '}
+
+Al igual que las claves privadas protegen su dirección de Ethereum, tendrá que generar claves específicas para su validador. Debe entender cómo mantener seguras y a salvo las frases semilla o las claves privadas.{' '}
-[Seguridad y prevención de estafa Ethereum](/security/)
-
+[Seguridad en Ethereum y prevención de estafas](/security/)
-
-El hardware ocasionalmente falla, en las conexiones de red suceden desconexiones, y el software cliente ocasionalmente necesita actualizarse. El mantenimiento de nodos es inevitable y de vez en cuando requerirá tu atención. Conviene que esté al tanto de cualquier actualización de red prevista, o de otras actualizaciones críticas del software cliente.
+
+El hardware falla ocasionalmente, las conexiones de red dan error y el software cliente necesita actualizarse de vez en cuando. El mantenimiento de los nodos es inevitable y requerirá su atención de vez en cuando. Deberá asegurarse de estar al tanto de cualquier actualización prevista de la red o de otras actualizaciones críticas de los clientes.
-
-Sus recompensas son proporcionales al tiempo que su validador esté en línea y certifique correctamente. El tiempo de inactividad incurre en penalizaciones proporcionales a los validadores que estén desconectados al mismo tiempo, pero no ocasiona recortes. El ancho de banda también importa, ya que las recompensas disminuyen por las certificaciones que no se reciben a tiempo. Los requisitos variarán, pero se recomienda un mínimo de 10 Mb/s de descarga y carga.
+
+Sus recompensas son proporcionales al tiempo que su validador está en línea y atestiguando correctamente. El tiempo de inactividad conlleva penalizaciones proporcionales al número de validadores que estén desconectados al mismo tiempo, pero no da lugar a slashing. El ancho de banda también importa, ya que las recompensas disminuyen por las atestaciones que no se reciben a tiempo. Los requisitos varían, pero se recomienda un mínimo de 10 Mb/s de subida y bajada.
-
-Distinta a las penalizaciones por inactividad por estar fuera de línea, el recorte es una penalización mucho más grave reservada para infracciones maliciosas. Al ejecutar un cliente minoritario con sus claves cargadas en una sola máquina cada vez, se reduce el riesgo de ser penalizado por recortes. Dicho esto, todos los participantes deben ser conscientes de los riesgos de los recortes.
+
+A diferencia de las penalizaciones por inactividad por estar desconectado, el slashing es una penalización mucho más grave reservada para las infracciones maliciosas. Al ejecutar un cliente minoritario con las claves cargadas en una sola máquina a la vez, se minimiza el riesgo de sufrir slashing. Dicho esto, todos los stakers deben ser conscientes de los riesgos del slashing.
- Más sobre recortes y el ciclo de vida del validador
-
-
+ Más información sobre penalizaciones (slashing) y el ciclo de vida de los validadores
@@ -81,27 +76,27 @@ Distinta a las penalizaciones por inactividad por estar fuera de línea, el
Mientras esté activo, obtendrá recompensas ETH que se depositarán periódicamente en su dirección de retirada.
-Si lo desea, puede salir como validador, lo que elimina el requisito de estar en línea y detiene cualquier recompensa adicional. Su saldo restante se retirará entonces a la dirección de retirada que usted designe durante la configuración.
+Si lo desea, puede salir como validador, lo que elimina el requisito de estar en línea y detiene cualquier recompensa adicional. Su saldo restante se retirará a la dirección de retiro que designe durante la configuración.
-[Más sobre los retiros de Staking](/staking/withdrawals/)
+[Más información sobre las retiradas de participaciones](/staking/withdrawals/)
-## Familiarícese con el Lanzador de participaciones {#get-started-on-the-staking-launchpad}
+## Comenzar en Staking Launchpad {#get-started-on-the-staking-launchpad}
-El Lanzador de participaciones es una aplicación de código abierto que le ayudará a convertirse en un participante. Le guiará a través de la elección de sus clientes de software, a generar sus llaves y depositar su ETH en el contrato de depósito de participación. Se proporciona una lista de verificación para asegurarse de que ha cubierto todo para configurar su validador de forma segura.
+La Plataforma de lanzamiento de staking es una aplicación de código abierto que le ayudará a convertirse en un staker. Le guiará en la elección de sus clientes, la generación de sus claves y el depósito de sus ETH en el contrato de depósito de staking. Se proporciona una lista de verificación para asegurarse de que ha cubierto todo para configurar su validador de forma segura.
-## Qué considerar respecto a las herramientas de configuración de nodos y clientes {#node-tool-considerations}
+## Qué considerar sobre las herramientas para configurar nodos y clientes {#node-tool-considerations}
Existe un número cada vez mayor de herramientas y servicios para ayudarle a participar desde casa con sus ETH, pero cada una comporta diferentes riesgos y beneficios.
-Los indicadores de atributos a continuación indican las fortalezas o debilidades que puede tener cada herramienta de participación. Utilice esta sección como referencia sobre cómo definimos estos atributos, mientras está eligiendo las herramientas que le ayudarán con su experiencia de participación.
+Los indicadores de atributos se utilizan a continuación para señalar las fortalezas o debilidades notables que pueda tener una herramienta de staking de la lista. Utilice esta sección como referencia para saber cómo definimos estos atributos mientras elige las herramientas que le ayudarán en su viaje de staking.
-## Explora las herramientas de configuración de nodos y clientes {#node-and-client-tools}
+## Explorar herramientas para la configuración de nodos y clientes {#node-and-client-tools}
-Hay una variedad de opciones disponibles para ayudarle con su configuración. Utilice los indicadores de arriba para guiarle a través de las herramientas que se muestran a continuación.
+Existe una gran variedad de opciones disponibles para ayudarle con su configuración. Utilice los indicadores anteriores para guiarse a través de las herramientas siguientes.
@@ -109,97 +104,96 @@ Hay una variedad de opciones disponibles para ayudarle con su configuración. Ut
-Por favor, tenga en cuenta la importancia de elegir un [cliente minoritario](/developers/docs/nodes-and-clients/client-diversity/) ya que mejora la seguridad de la red y limita su riesgo. Las herramientas que le permiten configurar un cliente minoritario se expresan como «multicliente».
+Tenga en cuenta la importancia de elegir un [cliente minoritario](/developers/docs/nodes-and-clients/client-diversity/), ya que mejora la seguridad de la red y limita su riesgo. Las herramientas que le permiten configurar un cliente minoritario se denominan "multicliente."
### Generadores de claves
-Estas herramientas pueden utilizarse como alternativa a la [CLI de depósito de participación](https://github.com/ethereum/staking-deposit-cli/) para ayudar con la generación de claves.
+Estas herramientas pueden utilizarse como alternativa al [Staking Deposit CLI](https://github.com/ethereum/staking-deposit-cli/) para ayudar con la generación de claves.
-¿Tiene alguna sugerencia para una herramienta de participación no cubierta? Eche un vistazo a nuestra [política de listado de productos](/contributing/adding-staking-products/) para ver si le parece una opción aceptable y enviarla para su revisión.
+¿Tiene alguna sugerencia para una herramienta de participación no cubierta? Consulte nuestra [política de listado de productos](/contributing/adding-staking-products/) para ver si sería adecuado, y para enviarlo para su revisión.
-## Explorar guías de participación desde casa {#staking-guides}
+## Explorar guías de staking en casa {#staking-guides}
-## Preguntas más frecuentes {#faq}
+## Preguntas frecuentes {#faq}
Estas son algunas de las preguntas más comunes sobre la participación que vale la pena conocer.
-
+
-Un validador es una entidad virtual que vive en Ethereum y participa en el consenso del protocolo Ethereum. Los validadores están representados por un saldo, una clave pública y otras propiedades. Un cliente validador es el software que actúa en nombre del validador al mantener y utilizar su clave privada. Un solo cliente validador puede mantener muchos pares de claves y controlar muchos validadores.
+Un validador es una entidad virtual que vive en Ethereum y participa en el consenso del protocolo de Ethereum. Los validadores están representados por un saldo, una clave pública y otras propiedades. Un cliente validador es el software que actúa en nombre del validador al mantener y utilizar su clave privada. Un único cliente validador puede contener muchos pares de claves, controlando a muchos validadores.
-
-Cada par de claves asociadas a un validador requieren exactamente 32 ETH para ser activadas. Más ETH depositado en un solo par de claves no incrementa el potencial de recompensas, ya que cada validador está limitado a un saldo efectivo de 32 ETH. Esto significa que la participación se realiza en incrementos de 32 ETH, cada uno con su propio conjunto de claves y saldo.
+
+Sí, las cuentas de validador modernas son capaces de albergar hasta 2048 ETH. El ETH adicional por encima de 32 se compondrá de forma escalonada, aumentando en incrementos de números enteros a medida que aumente su saldo real. Esto se conoce como su saldo efectivo.
-No deposite más de 32 ETH para un solo validador. No aumentará sus recompensas. Si se ha establecido una dirección de retirada para el validador, cualquier exceso de fondos superior a 32 ETH se retirará automáticamente a esta dirección durante el próximo [barrido del validador](/staking/withdrawals/#validator-sweeping).
+Para aumentar el saldo efectivo de una cuenta, y por lo tanto aumentar las recompensas, se debe cruzar un búfer de 0,25 ETH por encima de cualquier umbral de ETH completo. Por ejemplo, una cuenta con un saldo real de 32,9 y un saldo efectivo de 32 necesitaría ganar otros 0,35 ETH para que su saldo real supere los 33,25 antes de provocar un aumento del saldo efectivo.
-Si participar desde casa le parece demasiado exigente, considere utilizar un proveedor de [staking-as-a-service](/staking/saas/) o si busca participar con menos de 32 ETH investigue [grupos de participación](/staking/pools/).
-
+Este búfer también evita que un saldo efectivo caiga hasta que haya bajado 0,25 ETH por debajo de su saldo efectivo actual.
-
-El desconectarse cuando la red está finalizando correctamente NO producirá «recortes». Se le aplicarán ligeras penalizaciones por inactividad si su validador no está disponible para certificar una época determinada (a cada 6,4 minutos), que es muy diferente del «recorte». Estas penalizaciones son ligeramente inferiores a la recompensa que usted habría ganado si el validador hubiera estado disponible para certificar, y las pérdidas pueden devolverse al cabo del mismo tiempo aproximadamente en línea.
+Cada par de claves asociado a un validador requiere al menos 32 ETH para ser activado. Cualquier saldo por encima de este puede ser retirado a la dirección de retiro asociada en cualquier momento a través de una transacción firmada por esta dirección. Cualquier fondo que supere el saldo efectivo máximo se retirará automáticamente de forma periódica.
-Tenga en cuenta que las penalizaciones por inactividad son proporcionales a los validadores que estén fuera de línea al mismo tiempo. En casos en los que una gran parte de la red está desconectada a la vez, las penalizaciones para cada uno de estos validadores serán mayores que cuando un validador no esté disponible.
+Si el staking doméstico le parece demasiado exigente, considere la posibilidad de utilizar un proveedor de [staking como servicio](/staking/saas/), o si está trabajando con menos de 32 ETH, consulte los [grupos de staking](/staking/pools/).
-En casos extremos, si la red se detiene con más de un tercio de los validadores fuera de línea como resultado, estos usuarios serán penalizados con lo que se conoce como una fuga cuadrática de inactividad, esto es, un drenaje exponencial de ETH de las cuentas de validadores fuera de línea. Esto permite que la red eventualmente se regenere al quemar ETH de validadores inactivos hasta que su balance alcance los 16 ETH, en cuyo momento serán expulsados automáticamente del grupo de validadores. Los validadores en línea restantes eventualmente comprenderán más de 2/3 la red de nuevo, satisfaciendo la supermayoría necesaria para finalizar la cadena una vez más.
-
+
+Desconectarse cuando la red está finalizando correctamente NO dará lugar a slashing. Se incurre en pequeñas penalizaciones por inactividad si su validador no está disponible para atestiguar durante una época determinada (cada una de 6,4 minutos de duración), pero esto es muy diferente del slashing. Estas penalizaciones son ligeramente inferiores a la recompensa que habría obtenido si el validador hubiera estado disponible para atestiguar, y las pérdidas pueden recuperarse con aproximadamente la misma cantidad de tiempo en línea de nuevo.
-
-Francamente, esto es algo que no se puede garantizar al cien por cien, pero si se actúa de buena fe, se ejecuta un cliente minoritario y solo mantiene sus claves de firma en una máquina cada vez, el riesgo de sufrir «recortes» es prácticamente cero.
+Tenga en cuenta que las penalizaciones por inactividad son proporcionales al número de validadores que estén desconectados al mismo tiempo. En los casos en que una gran parte de la red está desconectada a la vez, las penalizaciones para cada uno de estos validadores serán mayores que cuando un solo validador no está disponible.
-Solo hay unas cuantas formas específicas de que un validador sea penalizado con «recortes» y expulsado de la red. A fecha de publicación de este blog, los «recortes» que se han producido han sido exclusivamente un producto de configuraciones de hardware redundantes donde las claves de firma se almacenan en dos máquinas separadas a la vez. Esto puede dar como resultado casualmente un doble voto de sus llaves, lo cual es una acción penalizada.
+En casos extremos, si la red deja de finalizar como resultado de que más de un tercio de los validadores están desconectados, estos usuarios sufrirán lo que se conoce como una fuga de inactividad cuadrática, que es un drenaje exponencial de ETH de las cuentas de los validadores desconectados. Esto permite que la red se autocure eventualmente quemando el ETH de los validadores inactivos hasta que su saldo alcance los 16 ETH, momento en el que serán expulsados automáticamente del grupo de validadores. Los validadores restantes en línea acabarán constituyendo de nuevo más de 2/3 de la red, satisfaciendo la supermayoría necesaria para volver a finalizar la cadena.
-Ejecutar un cliente de supermayoría (cualquier cliente utilizado por más de 2/3 la red) también tiene el riesgo de un potencial «recorte» en el caso de que este cliente tenga un error que resulte en una bifurcación de la cadena. Esto puede producir una bifurcación defectuosa que se finalice. Para revertir a la cadena prevista, se requeriría enviar un voto surround («envolvente») intentando deshacer un bloque finalizado. Esto también es una acción penalizada con «recorte» y que se puede evitar simplemente ejecutando un cliente minoritario en su lugar.
+
+En resumen, esto nunca se puede garantizar por completo, pero si actúa de buena fe, ejecuta un cliente minoritario y mantiene sus claves de firma en solo una máquina a la vez, el riesgo de ser penalizado (slashed) es casi nulo.
+
+Solo hay unas pocas formas específicas que pueden hacer que un validador sea objeto de slashing y expulsado de la red. En el momento de redactar este informe, los slashings que se han producido han sido exclusivamente producto de configuraciones de hardware redundantes en las que las claves de firma se almacenan en dos máquinas distintas a la vez. Esto puede dar lugar inadvertidamente a un voto doble de sus claves, lo que es una infracción sancionable con slashing.
+
+Ejecutar un cliente de supermayoría (cualquier cliente utilizado por más de 2/3 de la red) también conlleva el riesgo de un posible slashing en caso de que este cliente tenga un error que resulte en una bifurcación de la cadena. Esto puede dar lugar a una bifurcación defectuosa que se finalice. Para volver a la cadena prevista sería necesario presentar un voto envolvente intentando deshacer un bloque finalizado. Esto también es una infracción sancionable con slashing y puede evitarse simplemente ejecutando un cliente minoritario en su lugar.
Errores equivalentes en un cliente minoritario nunca finalizarán (bloques) y, por lo tanto, nunca resultarían en un voto surround («envolvente»), y simplemente resultaría en penalizaciones por inactividad, no de «recorte».
-
-Los clientes individuales pueden variar ligeramente en términos de funcionamiento e interfaz de usuario, ya que cada uno lo desarrollan diferentes equipos, utilizando una variedad de lenguajes de programación. Dicho esto, ninguno de ellos es el «mejor». Todos los clientes de producción son excelentes piezas de software, los cuales realizan las mismas funciones fundamentales para sincronizar e interactuar con la cadena de bloques.
+
+Los clientes individuales pueden variar ligeramente en cuanto a rendimiento e interfaz de usuario, ya que cada uno de ellos está desarrollado por equipos diferentes que utilizan una variedad de lenguajes de programación. Dicho esto, ninguno de ellos es "el mejor". Todos los clientes de producción son excelentes piezas de software, que realizan las mismas funciones básicas para sincronizarse e interactuar con la cadena de bloques.
-Dado que todos los clientes de producción proporcionan la misma funcionalidad básica, es en realidad es muy importante que elija un cliente minoritario, esto es, cualquier cliente que NO esté siendo usado actualmente por la mayoría de validadores de la red. Esto puede parecer poco intuitivo, pero el ejecutar un cliente en mayoría o supermayoría aumenta su riesgo de sufrir «recortes» en el caso de error en ese cliente. La ejecución de un cliente minoritario limita drásticamente estos riesgos.
+Dado que todos los clientes de producción ofrecen la misma funcionalidad básica, es muy importante que elija un cliente minoritario, es decir, cualquier cliente que NO esté siendo utilizado actualmente por la mayoría de los validadores de la red. Puede que esto suene contraintuitivo, pero ejecutar un cliente mayoritario o de supermayoría le expone a un mayor riesgo de slashing en caso de que se produzca un error en dicho cliente. Ejecutar un cliente minoritario limita drásticamente estos riesgos.
-Más información sobre por qué la diversidad de clientes es crítica
-
+Obtenga más información sobre por qué la diversidad de clientes es fundamental
-
-Aunque un servidor privado virtual (VPS) puede utilizarse en sustitución del hardware doméstico, el acceso físico y la ubicación de su cliente validador sí importa. Las soluciones centralizadas en la nube tales como Amazon Web Services (AWS) o Digital Ocean permiten la conveniencia de no tener que obtener y operar hardware, a expensas de centralizar la red.
+
+Aunque se puede utilizar un servidor privado virtual (VPS) como sustituto del hardware doméstico, el acceso físico y la ubicación de su cliente validador sí importan. Las soluciones centralizadas en la nube, como Amazon Web Services o Digital Ocean, permiten la comodidad de no tener que obtener y operar hardware, a expensas de centralizar la red.
-Cuantos más clientes validadores se ejecuten en una sola solución centralizada de almacenamiento en la nube, más peligroso será para estos usuarios. Cualquier evento que desconecte a estos proveedores, ya sea por un ataque, por exigencias regulatorias, o simplemente por interrupciones de energía o Internet, ocasionará que cada cliente validador que se base en estos servidores se desconecte al mismo tiempo.
+Cuantos más clientes validadores se ejecuten en una única solución de almacenamiento centralizado en la nube, más peligroso se vuelve para estos usuarios. Cualquier evento que desconecte a estos proveedores, ya sea por un ataque, por exigencias normativas o simplemente por cortes de energía o de Internet, hará que todos los clientes validadores que dependen de este servidor se desconecten al mismo tiempo.
-Las penalizaciones por estar fuera de línea son proporcionales a cuántos están fuera de línea al mismo tiempo. El uso de VPS aumenta enormemente el riesgo de que las penalizaciones por estar fuera de línea sean más severas, y aumenta su riesgo de fuga cuadrática o «recorte» en el caso de que la interrupción sea lo suficientemente importante. Para reducir su propio riesgo, y el riesgo para la red, se recomienda encarecidamente a los usuarios obtener y operar su propio hardware.
-
+Las penalizaciones por estar fuera de línea son proporcionales a cuántos otros están fuera de línea al mismo tiempo. El uso de un VPS aumenta en gran medida el riesgo de que las penalizaciones por desconexión sean más graves, y aumenta el riesgo de fugas cuadráticas o de slashing en caso de que la interrupción sea lo suficientemente grande. Para minimizar su propio riesgo y el de la red, se recomienda encarecidamente a los usuarios que obtengan y operen su propio hardware.
-
+
Las retiradas de cualquier tipo de la cadena de baliza requieren que se establezcan credenciales de retirada.
-Los nuevos participantes las establecen en el momento de la generación y el depósito de la clave. Los particpipantes existentes que no hayan configurado esta funcionalidad pueden actualizar sus claves para poder utilizarla.
+Los nuevos stakers lo establecen en el momento de la generación de la clave y del depósito. Los stakers existentes que aún no lo hayan establecido pueden actualizar sus claves para admitir esta funcionalidad.
Una vez establecidas las credenciales de retirada, los pagos de recompensa (ETH acumulados por encima de los 32 iniciales) se distribuirán periódica y automáticamente a la dirección de retirada.
Para desbloquear y recibir el saldo completo, también debe completar el proceso de salida de su validador.
-Más sobre los retiros de Staking
-
+Más sobre retiros de staking
-## Para profundizar sobre el tema {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [El directorio de participación de Ethereum](https://www.staking.directory/), _Eridian y Spacesider_
-- [ El problema de la diversidad de clientes de Ethereum](https://hackernoon.com/ethereums-client-diversity-problem) - _@emmanuelawosika 2022_
-- [Controbuir a la diversidad de clientes](https://www.attestant.io/posts/helping-client-diversity/) - _Jim McDonald 2022_
+- [El Directorio de Staking de Ethereum](https://www.staking.directory/) - _Eridian y Spacesider_
+- [El problema de la diversidad de clientes en Ethereum](https://hackernoon.com/ethereums-client-diversity-problem) - _@emmanuelawosika 2022_
+- [Ayudando a la diversidad de clientes](https://www.attestant.io/posts/helping-client-diversity/) - _Jim McDonald 2022_
- [Diversidad de clientes en la capa de consenso de Ethereum](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) - _jmcook.eth 2022_
-- [Guía: Cómo comprar hardware para un validador de Ethereum](https://www.youtube.com/watch?v=C2wwu1IlhDc) - _EthStaker 2022_
-- [Consejos para la prevención de «recortes» de Eth2](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50) - _Raúl Jordan 2020_
+- [Cómo: Comprar hardware para validadores de Ethereum](https://www.youtube.com/watch?v=C2wwu1IlhDc) - _EthStaker 2022_
+- [Consejos de prevención de penalizaciones en Eth2](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50) - _Raul Jordan 2020_
From 58ee4854495710b4662d7cf3150ad61b5e7f5c0b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:40 -0300
Subject: [PATCH 078/589] update(i18n):
public/content/translations/es/contributing/index.md
---
.../translations/es/contributing/index.md | 70 ++++++++++---------
1 file changed, 38 insertions(+), 32 deletions(-)
diff --git a/public/content/translations/es/contributing/index.md b/public/content/translations/es/contributing/index.md
index ec4589a3eb9..5de50915530 100644
--- a/public/content/translations/es/contributing/index.md
+++ b/public/content/translations/es/contributing/index.md
@@ -4,42 +4,48 @@ description: Entérese de diferentes maneras en las que puede colaborar con ethe
lang: es
---
-# Colaborar con ethereum.org 🦄 {#contributing-to-ethereumorg}
+# Contribuir a ethereum.org 🦄 {#contributing-to-ethereumorg}
-Ethereum.org es un proyecto gestionado de código abierto con más de **12.000** colaboradores que ayudan a traducir, escribir, diseñar y mantener el sitio web.
+Ethereum.org es un proyecto de código abierto gestionado por más de **12 000** colaboradores que ayudan a traducir, escribir, diseñar y mantener el sitio web.
¡Somos una comunidad amistosa que le ayudará a crecer y educarse en el ecosistema de Ethereum, mientras contribuye de manera significativa y obtiene experiencia práctica relevante!
-## Formas de colaborar {#ways-to-contribute}
+## Formas de contribuir {#ways-to-contribute}
**Traducciones**
-- [Únase al programa de traducción](/contributing/translation-program/): ayúdenos a llevar ethereum.org a nuevos idiomas
+
+- [Únase al programa de traducción](/contributing/translation-program/) – Ayúdenos a llevar ethereum.org a nuevos idiomas
**Desarrollo**
-- [Trabaje en un problema/tema abierto](https://github.com/ethereum/ethereum-org-website/issues): trabajo que hemos identificado como necesario
+
+- [Trabaje en un tema abierto](https://github.com/ethereum/ethereum-org-website/issues) – Tareas que hemos identificado y necesitan atención
**Diseño**
-- [Ayude a diseñar el sitio web](/contributing/design/): Diseñadores de todos loos niveles pueden contribuir a mejorar el sitio web
+
+- [Ayude a diseñar el sitio web](/contributing/design/) – Diseñadores de todos los niveles pueden contribuir para mejorar el sitio
**Contenido**
-- [Cree/edite contenido](/contributing/#how-to-update-content): sugiera crear nuevas páginas o hacer ajustes al contenido actual
-- [Añada recursos para la comunidad](/contributing/content-resources/): agregue un artículo o recurso útil a una página relevante
-- [Sugiera un recurso de diseño](/contributing/design/adding-design-resources/): sume, actualce o elimine recursos de diseño útiles
-- [Cuestionarios](/contributing/quizzes/): agregue, edite y elimine bancos de preguntas de cuestionarios para páginas relevantes
+
+- [Cree o edite contenido](/contributing/#how-to-update-content) – Sugiera nuevas páginas o realice ajustes a las que ya existen
+- [Agregue recursos de la comunidad](/contributing/content-resources/) – Añada un artículo o recurso útil a una página relevante
+- [Sugiera un recurso de diseño](/contributing/design/adding-design-resources/) – Añada, actualice o elimine recursos útiles de diseño
+- [Cuestionarios](/contributing/quizzes/) – Agregue, actualice o elimine bancos de preguntas de cuestionarios en páginas relevantes
**Ideas de funcionalides/características**
-- [Solicite una característica o funcionalidad](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=): háganos saber cualquier idea que tenga para una nueva funcionalidad o diseño
+
+- [Solicite una función](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) – Compártanos cualquier idea que tenga para una nueva funcionalidad o diseño
**Listado de productos**
-- [Agregue un exchange](/contributing/adding-exchanges/): añada un exchange a nuestro [buscador de exchanges](/get-eth/#country-picker)
-- [Agregue un producto](/contributing/adding-products/): agregue una dapp o una billetera a una página relevante
-- [Agregue herramientas para desarrolladores](/contributing/adding-developer-tools/): agregue una herramienta de desarrollo a una página relevante
-- [Agregue una capa 2](/contributing/adding-layer-2s/): agregue una capa 2 a una página relevante
-- [Agregue un producto o servicio de staking](/contributing/adding-staking-products/): agregue un proyecto que facilite el staking individual, el staking conjunto o el staking como servicio
-- [Agregue una billetera](/contributing/adding-wallets/): agregue una billeta a la [página de búsqueda de billeteras](/wallets/find-wallet/)
-- [Sugiera un proyecto para nuestra página de DeSci](/contributing/adding-desci-projects/): añada un proyecto construido sobre Ethereum que contribuya a la ciencia descentralizada
-¿Alguna pregunta? 🤔 Únase a nuestro [servidor de Discord](https://discord.gg/ethereum-org).
+- [Agregue un exchange](/contributing/adding-exchanges/) – Añada un exchange a nuestro [buscador de exchanges](/get-eth/#country-picker)
+- [Agregue un producto](/contributing/adding-products/) – Añada una dapp o billetera a una página relevante
+- [Agregue herramientas para desarrolladores](/contributing/adding-developer-tools/) – Añada una herramienta de desarrollo a una página relevante
+- [Agregue una solución de capa 2](/contributing/adding-layer-2s/) – Añada una capa 2 a una página relevante
+- [Agregue un producto o servicio de staking](/contributing/adding-staking-products/) – Añada un proyecto que ayude a facilitar staking en solitario, staking en grupo o staking como servicio
+- [Agregue una billetera](/contributing/adding-wallets/) – Añada una billetera para la [página de búsqueda de billeteras](/wallets/find-wallet/)
+- [Sugiera un proyecto para nuestra página DeSci](/contributing/adding-desci-projects/) – Añada un proyecto construido sobre Ethereum que contribuya a la ciencia descentralizada
+
+¿Alguna pregunta? 🤔 Únase a nuestro [servidor de Discord](https://discord.gg/ethereum-org)
## Tareas apropiadas para empezar a contribuir
@@ -51,18 +57,18 @@ Estas son algunas tareas actuales de las que podría encargarse y ayudarnos a re
## Cómo trabajar en ethereum.org {#how-to-update-content}
-Si desea contribuir en el [Programa de Traducción](/contributing/translation-program/), le solicitamos crear una cuenta en [Crowdin](https://crowdin.com/project/ethereum-org). Para cualquier otra tarea (agregar o editar contenido o elementos visuales del sitio, corregir errores, trabajar en tareas abiertas), necesitará una cuenta de [GitHub](https://github.com/).
+Si desea contribuir en el [Programa de traducción](/contributing/translation-program/), le pedimos crear una cuenta en [Crowdin](https://crowdin.com/project/ethereum-org). Para todo lo demás —agregar o editar contenido o elementos visuales en el sitio web, corregir errores, trabajar en tareas abiertas— necesitará una cuenta de [GitHub](https://github.com/).
-Todas las actualizaciones se hacen a través del proceso de solicitud de incorporación de cambios de GitHub. Esto implica que crea una copia local del sitio web, realiza sus cambios y solicita que se implementen los cambios. Si nunca lo ha hecho, siga las instrucciones que aparecen a pie de nuestro [repositorio GitHub](https://github.com/ethereum/ethereum-org-website).
+Todas las actualizaciones se hacen a través del proceso de solicitud de incorporación de cambios de GitHub. Esto implica que crea una copia local del sitio web, realiza sus cambios y solicita que se implementen los cambios. Si nunca ha hecho esto antes, siga las instrucciones al final de nuestro [repositorio de GitHub](https://github.com/ethereum/ethereum-org-website).
No necesita permiso para trabajar en nada, pero siempre es mejor decirnos lo que tiene pensado hacer. Para ello, puede:
-- Comentarlo abriendo una incidencia o hacer una solicitud de incorporación de cambios en [GitHub](https://github.com/ethereum/ethereum-org-website)
-- Enviarnos un mensaje en nuestro [servidor de Discord](https://discord.gg/ethereum-org)
+- Comentar en un issue o PR en [GitHub](https://github.com/ethereum/ethereum-org-website)
+- Enviar mensajes en nuestro [servidor de Discord](https://discord.gg/ethereum-org)
Antes de empezar a colaborar, asegúrese de estar familiarizado con:
-- la [visión de ethereum.org](/about/) en constante evolución
+- la [visión de ethereum.org](/about/) en evolución
- nuestros [principios de diseño](/contributing/design-principles/)
- nuestra [guía de estilo](/contributing/style-guide/)
- nuestro [código de conducta](/community/code-of-conduct)
@@ -75,25 +81,26 @@ Las decisiones acerca de las pull requests (PR) individuales, la evolución del
- [website@ethereum.org](mailto:website@ethereum.org)
- [@ethdotorg](https://twitter.com/ethdotorg)
-- [Servidor Discord](https://discord.gg/ethereum-org)
+- [Servidor de Discord](https://discord.gg/ethereum-org)
-### Aclaraciones acerca del plagio {#plagiarism}
+### Una nota sobre el plagio {#plagiarism}
Utilice únicamente su trabajo o contenido original del que tenga permiso para utilizar cuando contribuya con cualquier contenido o aportación en ethereum.org. Muchos proyectos dentro del ecosistema de Ethereum utilizan licencias de código abierto que permiten el libre intercambio de información. Sin embargo, si no puede encontrar esta información, no intente agregarla a ethereum.org. Cualquier pull request que se considere plagio será rechazada.
## ¿No sabe lo que es el código abierto? {#new-to-open-source}
-Tenemos temas u opciones con barrera baja de entrada, o pocos requisitos, en nuestro repositorio de GitHub específicamente diseñado para desarrolladores que no estén tan familiarizados con el código abierto etiquetados como [good first issue](https://github.com/ethereum/ethereum-org-website/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22), algo así como buenas opciones para empezar.
+En nuestro repositorio de GitHub tenemos tareas con baja barrera de entrada, específicamente diseñadas para desarrolladores que son nuevos en el código abierto, etiquetadas como [good first issue](https://github.com/ethereum/ethereum-org-website/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22).
-## Reclame su token de logro en cadena (OAT) {#oat}
+## Reclame su Onchain Achievement Token (OAT) {#oat}
-Si su contribución se usa en ethereum.org, tendrá la oportunidad de reclamar una insignia especial en [Galxe](https://app.galxe.com/quest/ethereumorg). Un token de logro en cadena (OAT, Onchain Achievement Token) es una prueba de que ayudó a hacer el ecosistema un poco más increíble.
+Si su contribución se integra en ethereum.org, podrá reclamar una insignia especial en [Galxe](https://app.galxe.com/quest/ethereumorg). Un token de logro en cadena (OAT, Onchain Achievement Token) es una prueba de que ayudó a hacer el ecosistema un poco más increíble.
[Más sobre los OAT](https://help.galxe.com/en/articles/9645630-create-quest-rewards#h_1c5d63ba03)
### Cómo reclamarlo
+
1. Únase a nuestro [servidor de Discord](https://discord.gg/ethereum-org).
-2. Pegue un enlace a au contribución en el canal `#🥇 | proof-of-contribution`.
+2. Pegue un enlace a su contribución en el canal `#🥇 | proof-of-contribution`.
3. Espere a que un miembro de nuestro equipo le envíe un enlace a su OAT.
4. ¡Reclame su OAT!
@@ -103,8 +110,7 @@ Debe utilizar únicamente billeteras autocustodiadas para reclamar sus OAT. No u
¡GitPOAP reconocerá automáticamente el uso de su contribución y le permitirá mintear un POAP de contribución único separado en su propia plataforma!
-
-### Cómo reclamarlo {#how-to-claim}
+### Cómo reclamar {#how-to-claim}
1. Visite [GitPOAP](https://www.gitpoap.io).
2. Conecte con su billetera o consulte su correo electrónico mediante la opción de inicio de sesión.
From 7fe7b8f56d3da12c1d0957e12436e202418db732 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:42 -0300
Subject: [PATCH 079/589] update(i18n):
public/content/translations/es/staking/saas/index.md
---
.../translations/es/staking/saas/index.md | 49 +++++++++----------
1 file changed, 23 insertions(+), 26 deletions(-)
diff --git a/public/content/translations/es/staking/saas/index.md b/public/content/translations/es/staking/saas/index.md
index b1c815f8d65..2912a710ea3 100644
--- a/public/content/translations/es/staking/saas/index.md
+++ b/public/content/translations/es/staking/saas/index.md
@@ -1,6 +1,6 @@
---
title: Participación como servicio
-description: Una visión general de cómo empezar con la participación agrupada de ETH
+description: Conozca más a fondo la participación como servicio
lang: es
template: staking
emoji: ":money_with_wings:"
@@ -17,19 +17,19 @@ summaryPoints:
La participación como servicio (SaaS), representa una categoría de servicios de participación donde deposita 32 ETH para la validación, pero se delegan las operaciones del nodo a un tercero. A cambio se le suele guiar por la configuración inicial, incluida la generación de claves y el depósito, para luego cargar las claves de firma al operador. Esto permite que el servicio maneje su validador en su nombre, generalmente, a cambio de una cuota mensual.
-## ¿Por qué debería participar con un servicio? {#why-stake-with-a-service}
+## ¿Por qué debería participar con un servicio? {#por-qué-apostar-con-un-servicio}
El protocolo de Ethereum no respalda originariamente la delegación de participaciones y, por tanto, estos servicios se han creado con el fin de cubrir esta demanda. Si tiene 32 ETH para participar, pero no domina con confianza el hardware, los servicios de participación (SaaS) le permiten delegar la parte técnica mientras gana recompensas de bloques nativos.
-
-
-
+
+
+
-## Qué hay que tener en cuenta {#what-to-consider}
+## Qué tener en cuenta {#what-to-consider}
Hay un número creciente de proveedores de SAAS para ayudarle a apostar sus ETH, pero todos tienen sus propias ventajas y riesgos. Todas las opciones SaaS requieren suposiciones adicionales de confianza en comparación con la participación desde casa. Las opciones SaaS pueden suponer el uso de un codigo adicional para los clientes de Ethereum que no es abierto ni auditable. SaaS tambien causa un efecto perjudicial en la descentralizacion de la red. Dependiendo de la configuracion, se puede controlar o no la validacion: el operador puede actuar deshonestamente usando sus ETH.
@@ -37,7 +37,7 @@ Los indicadores de atributos se utilizan para señalar las fortalezas o debilida
-## Explorar proveedores de servicios de participación {#saas-providers}
+## Explorar proveedores de servicios de staking {#saas-providers}
A continuación se muestran algunos proveedores de SaaS disponibles. Utilice los indicadores de arriba para guiarse a través de estos servicios
@@ -47,49 +47,46 @@ A continuación se muestran algunos proveedores de SaaS disponibles. Utilice los
-Por favor, tenga en cuenta la importancia de elegir [clientes diversos](/developers/docs/nodes-and-clients/client-diversity/) ya que mejora la seguridad de la red y limita su riesgo. Los servicios que tienen constatación de limitar el uso de cliente mayoritario están señalados como "diversidad de cliente de ejecución" y "diversidad de cliente de consenso".
+Tenga en cuenta la importancia de apoyar la [diversidad de clientes](/developers/docs/nodes-and-clients/client-diversity/), ya que mejora la seguridad de la red y limita su riesgo. Los servicios que tienen constatación de limitar el uso de cliente mayoritario están señalados con "diversidad de cliente de ejecución" y "diversidad de cliente de consenso".
### Generadores de claves
-¿Tiene alguna sugerencia para un proveedor de participación como servicio que no hayamos mencionado? Eche un vistazo a nuestra [política de listado de productos](/contributing/adding-staking-products/) para ver si le parece una opción aceptable y enviarla para su revisión.
+¿Tiene alguna sugerencia para un proveedor de participación como servicio que no hayamos mencionado? Consulte nuestra [política de listado de productos](/contributing/adding-staking-products/) para ver si sería adecuado, y para enviarlo para su revisión.
-## Preguntas más frecuentes {#faq}
+## Preguntas frecuentes {#faq}
-
-Los acuerdos difieren de proveedor a proveedor, pero comúnmente se le guiará a través de la configuración de las claves de firma que necesite (una por 32 ETH), y subirlos a su proveedor para permitirles validar en su nombre. Las llaves de firma por sí solas no dan ninguna capacidad para retirar, transferir o gastar sus fondos. Sin embargo, sí proporcionan la capacidad de emitir votos a favor del consenso. Si no se hace correctamente, puede dar lugar a sanciones fuera de línea o a un recorte.
+
+Los acuerdos difieren de proveedor a proveedor, pero comúnmente se le guiará a través de la configuración de las claves de firma que necesite (una por 32 ETH), y subirlos a su proveedor para permitirles validar en su nombre. Solo con las claves de firma no se tiene la capacidad de retirar, transferir ni gastar sus fondos. Sin embargo, sí proporcionan la capacidad de emitir votos a favor del consenso. Si no se hace correctamente, puede dar lugar a sanciones fuera de línea o a un recorte.
-
+
Sí. Cada cuenta se compone de ambas claves BLS para firmar y claves BLS para retirar. Para que un validador certifique el estado de la cadena, participe en comités de sincronización y proponga bloques, las claves de firma deben ser fácilmente accesibles por el cliente validador. Estos deben estar conectados a Internet de alguna forma, y por lo tanto se consideran inherentemente como claves «calientes». Este es un requisito para que su validador pueda certificar y, por lo tanto, las claves utilizadas para transferir o retirar fondos están separadas por razones de seguridad.
Las claves BLS de retirada se utilizan para firmar un mensaje de una sola vez que declara a qué cuenta de la capa de ejecución deberían ir las recompensas de participación y los fondos sacados. Una vez que este mensaje se difunda, las claves BLS de retirada ya no son necesarias. En cambio, el control sobre los fondos retirados se delega permanentemente a la dirección que usted proporcionó. Esto le permite establecer una dirección de retiro segura a través de su propio almacenamiento en frío, minimizando el riesgo para sus fondos de validador, incluso si alguien controla las claves de firmado de validador.
Para habilitar la retirada, es necesario actualizar las credenciales\*. Este proceso implica generar las claves de retirada usando su frase mnemotécnica de recuperación.
-Asegúrese de hacer una copia de esta frase de recuperación de forma segura, o no podrá generar sus claves de retirada cuando llegue el momento.
+Asegúrese de respaldar esta frase semilla de manera segura o no podrá generar sus claves de retiro cuando sea necesario.
-\*Los participantes que proporcionaran una dirección de retirada con depósito inicial no necesitan establecerla. Consulte con su proveedor de SaaS para obtener ayuda acerca de cómo preparar su validador.
-
+\*Los stakers que proporcionaron una dirección de retiro con el depósito inicial no necesitan configurar esto. Consulte con su proveedor de SaaS para obtener ayuda acerca de cómo preparar su validador.
-
-En abril de 2023, se habilitó la retirada de participaciones en la actualización Shanghai/Capella. Los participantes deben proporcionar una dirección de retirada (si no se proporciona en el depósito inicial), y los pagos de recompensas se distribuirán automáticamente de forma periódica cada pocos días.
+
+Los stakers deben proporcionar una dirección de retiro (si no se proporcionó al realizar el depósito inicial), y los pagos de recompensas comenzarán a distribuirse automáticamente de manera periódica cada pocos días.
Los validadores también pueden salir como validadores, lo que desbloqueará su saldo restante en ETH para retirarlo. Las cuentas que hayan proporcionado una dirección de retirada de ejecución y hayan completado el proceso de salida recibirán su saldo completo a la dirección de retirada proporcionada durante el próximo barrido del validador.
-Más sobre los retiros de Staking
-
+Más sobre retiros de staking
-
+
Al usar un proveedor SaaS, está confiando la operación de su nodo a otra persona. Esto conlleva el riesgo de un funcionamiento deficiente del nodo, que no está bajo su control. En el caso de que recorte la actividad de su validador, el saldo de su validador será penalizado y eliminado forzosamente del grupo de validadores.
Al finalizar el proceso de recorte y salida, estos fondos se transferirán a la dirección de retirada asignada al validador. Para habilitar la retirada, es preciso proporcionar una dirección. Puede haberse proporcionado en un depósito inicial. De lo contrario, se tendrán que usar las claves de retirada del validador para firmar un mensaje declarando una dirección de retirada. Si no se ha proporcionado ninguna dirección de retirada, los fondos permanecerán bloqueados hasta que se proporcione.
-Póngase en contacto con un proveedor individual de SaaS para obtener más detalles sobre cualquier garantía u opciones de seguridad, así como para obtener instrucciones de configuración de una dirección de retirada. Si prefiere tener control total de la configuración de su validador, [infórmese sobre cómo apostar sus ETH en solitario](/staking/solo/).
-
+Póngase en contacto con un proveedor individual de SaaS para obtener más detalles sobre cualquier garantía u opciones de seguridad, así como para obtener instrucciones de configuración de una dirección de retirada. Si prefiere tener el control total de la configuración de su validador, [entérese de cómo puede participar desde casa con sus ETH](/staking/solo/).
-## Para profundizar sobre el tema {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [El directorio de participación de Ethereum](https://www.staking.directory/), _Eridian y Spacesider_
-- [Examen de los servicios de participación](https://www.attestant.io/posts/evaluating-staking-services/) - _Jim McDonald 2020_
+- [El Directorio de Staking de Ethereum](https://www.staking.directory/) - _Eridian y Spacesider_
+- [Evaluando servicios de staking](https://www.attestant.io/posts/evaluating-staking-services/) - _Jim McDonald 2020_
From d4080c763e08b023d763a631671eed31c82721f9 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:43 -0300
Subject: [PATCH 080/589] update(i18n): src/intl/es/page-resources.json
---
src/intl/es/page-resources.json | 97 +++++++++++++++++++++++++++++++++
1 file changed, 97 insertions(+)
create mode 100644 src/intl/es/page-resources.json
diff --git a/src/intl/es/page-resources.json b/src/intl/es/page-resources.json
new file mode 100644
index 00000000000..3e83e59672a
--- /dev/null
+++ b/src/intl/es/page-resources.json
@@ -0,0 +1,97 @@
+{
+ "page-resources-network-title": "La red",
+ "page-resources-using-title": "Uso de Ethereum",
+ "page-resources-scaling-title": "Escalar en Ethereum",
+ "page-resources-resilience-title": "Resiliencia de Ethereum",
+ "page-resources-privacy-security-title": "Privacidad y seguridad",
+ "page-resources-network-layer2-title": "Redes de Ethereum - Capa 2",
+ "page-resources-network-layer2-chart-label": "Coste medio de una transacción en redes Ethereum",
+ "page-resources-network-layer2-l2beat-description": "L2BEAT se creó para ofrecer información transparente y verificable sobre las tecnologías emergentes de capa dos (L2) que, en línea con la hoja de ruta de escalamiento de Ethereum centrada en la acumulación, tienen como objetivo escalar Ethereum.",
+ "page-resources-network-layer2-growthepie-description": "growthepie visualiza el uso y el crecimiento de Ethereum Mainnet y las soluciones de Capa 2. Ofrece datos en tiempo real sobre tarifas, economía, adopción de aplicaciones, información sobre stablecoins, artículos basados en datos y mucho más.",
+ "page-resources-block-explorers-title": "Exploradores de bloques",
+ "page-resources-block-explorers-chart-label": "Tiempo para el próximo bloque",
+ "page-resources-block-explorers-blockscout-description": "Explorador de bloques de código abierto desarrollado por Blockscout, con datos completos de la cadena de bloques y API para redes Ethereum.",
+ "page-resources-block-explorers-etherscan-description": "Etherscan es un explorador de bloques y una plataforma de análisis para Ethereum, una plataforma descentralizada de contratos inteligentes.",
+ "page-resources-block-explorers-beaconchain-description": "Explorador Ethereum de código abierto que muestra la red principal de Ethereum 🚀.",
+ "page-resources-block-explorers-txcity-description": "Un entretenido visualizador de los bloques Ethereum en tiempo real.",
+ "page-resources-block-explorers-panda-ops-description": "Panel en vivo para la producción de bloques en la cadena de baliza de Ethereum por ethPandaOps.",
+ "page-resources-block-explorers-otterscan-description": "Un explorador de bloques de Ethereum increíblemente rápido, local y autoalojado",
+ "page-resources-eth-asset-title": "ETH como activo",
+ "page-resources-eth-asset-etherealize-description": "Ethereum es la cadena de bloques más grande, segura y abierta que todo el mundo puede utilizar. Con Ethereum hacer negocios también es más fácil.",
+ "page-resources-eth-asset-ultrasound-description": "Ultra sound money es un meme de Ethereum centrado en la posible disminución del suministro de ETH.",
+ "page-resources-eth-asset-ethismoney-description": "ETH es dinero, es una comunidad activa que mantiene, apuesta y promueve el ETH como moneda.",
+ "page-resources-gas-title": "Gas",
+ "page-resources-gas-etherscan-description": "Rastree todos los KPI del gas.",
+ "page-resources-gas-ethgastracker-description": "Monitoree los precios del gas en Ethereum y las redes de capa 2.",
+ "page-resources-gas-blocknative-description": "La predicción de tarifas del gas más precisa de la Web3.",
+ "page-resources-gas-gasfees-description": "Rastreador de comisiones del gas para redes Ethereum.",
+ "page-resources-defi-title": "DeFi",
+ "page-resources-defi-defillama-description": "DefiLlama es el mayor agregador de TVL para DeFi (Finanzas Descentralizadas).",
+ "page-resources-defi-eigenphi-description": "¿Desea comprender las transacciones y estrategias de transacciones en DeFi?",
+ "page-resources-defi-defiscan-description": "Nociones verificables sobre la madurez y los riesgos de DeFi.",
+ "page-resources-stablecoins-title": "Monedas estables",
+ "page-resources-stablecoins-stablecoinswtf-description": "El propósito de este sitio web es educar a los inversores de alto riesgo sobre las monedas estables.",
+ "page-resources-stablecoins-visa-description": "El panel de análisis en la cadena de bloques de Visa muestra el movimiento global de las monedas estables respaldadas por dinero fiduciario en cadenas de bloques públicas.",
+ "page-resources-stablecoins-rwa-description": "Explore la actividad de las criptomonedas y las monedas estables respaldadas por activos.",
+ "page-resources-nft-title": "NFT",
+ "page-resources-nft-etherscan-description": "Principales contratos NFT.",
+ "page-resources-nft-nftgo-description": "Datos del mercado mundial de NFT en tiempo real.",
+ "page-resources-applications-title": "Aplicaciones",
+ "page-resources-applications-ecosystem-description": "Sumérjase en el ecosistema Ethereum y descubra cientos de aplicaciones y herramientas populares.",
+ "page-resources-applications-farcaster-description": "Datos del uso de Farcaster.",
+ "page-resources-applications-dappradar-description": "Explore las principales DApps de cadena de bloques, NFT, juegos, proyectos DeFi, tókenes y airdrops (estafas de distribucion de criptomonedas). Siga las clasificaciones, explore el mercado, encuentre proyectos en tendencia y desbloquee recompensas con la tienda de DApps más grande del mundo.",
+ "page-resources-adoption-title": "Adopción de Ethereum",
+ "page-resources-adoption-ethereumadoption-description": "Una lista de entidades de alto perfil que construyen en Ethereum.",
+ "page-resources-adoption-cryptowerk-description": "Análisis de adopción de Ethereum basado en la base de datos de comerciantes de Cryptwerk: mapa, países, empresas, negocios, categorías, calificación.",
+ "page-resources-adoption-reserves-description": "Un panel para la iniciativa de Reserva Estratégica de Ethereum.",
+ "page-resources-roadmap-title": "Hoja de ruta de Ethereum",
+ "page-resources-roadmap-metric-label": "Última actualización",
+ "page-resources-roadmap-ethroadmap-description": "Visualización detallada de la hoja de ruta de Ethereum y la próxima actualización de la red.",
+ "page-resources-blobs-title": "Blobs",
+ "page-resources-blobs-metric-total-label": "Total de blobs",
+ "page-resources-blobs-metric-fee-label": "Tarifa promedio de blob",
+ "page-resources-blobs-blobscan-description": "Escáner integral de blobs.",
+ "page-resources-blobs-blobsguru-description": "Explorador de blobs de Ethereum: analizar transacciones L2 y datos EIP-4844.",
+ "page-resources-nodes-title": "Nodos",
+ "page-resources-nodes-nodewatch-description": "Vista general de los nodos.",
+ "page-resources-nodes-ethernodes-description": "Estadísticas de la red principal de Ethereum.",
+ "page-resources-nodes-etherscan-description": "A diario.",
+ "page-resources-nodes-luckystaker-description": "Probabilidad diaria de proponer un bloque.",
+ "page-resources-nodes-pectrified-description": "Estadísticas de la bifurcación Pectra de Ethereum para validadores.",
+ "page-resources-nodes-validatorqueue-description": "Un panel que muestra la cola de entrada y salida del validador de Ethereum y los tiempos de espera estimados.",
+ "page-resources-network-resilience-title": "Resiliencia de la red",
+ "page-resources-network-resilience-neutralitywatch-description": "Monitor de censura de Ethereum.",
+ "page-resources-network-resilience-sunshine-description": "Un panel para medir la salud de la descentralización de Ethereum.",
+ "page-resources-network-resilience-clientdiversity-description": "Mejore la resiliencia de Ethereum mediante el uso de un cliente minoritario.",
+ "page-resources-network-resilience-supermajority-description": "El riesgo supermayoritario del cliente de la capa de ejecución de Ethereum, especialmente el uso por parte del cliente de los servicios de participación.",
+ "page-resources-attestations-title": "Atestaciones",
+ "page-resources-attestations-eas-description": "EAS permite a cualquier persona crear y validar certificaciones dentro y fuera de la cadena en Ethereum.",
+ "page-resources-relays-title": "Relés",
+ "page-resources-relays-beaconchain-description": "Los validadores pueden utilizar relés para subcontratar la producción de bloques a entidades especializadas en extraer ingresos adicionales.",
+ "page-resources-relays-ratednetwork-description": "Cuota de mercado del relé MEV, valor total retransmitido, valor por bloque y otras estadísticas para la red Ethereum.",
+ "page-resources-relays-relayscan-description": "Análisis MEV-Boost.",
+ "page-resources-mev-title": "MEV",
+ "page-resources-mev-mevboost-description": "El propósito de este sitio web es educar a los inversores de alto riesgo sobre las monedas estables.",
+ "page-resources-mev-mevwatch-description": "Algunos relés MEV-Boost están regulados por la OFAC y censurarán ciertas transacciones. Utilice esta herramienta para observar su efecto en los bloques de Ethereum.",
+ "page-resources-wallets-title": "Carteras",
+ "page-resources-wallets-wallet-beat-description": "Un panel de control y una herramienta de resumen de cartera Ethereum sencilla.",
+ "page-resources-wallets-bundlebear-description": "Paneles y análisis para cuentas inteligentes ERC-4337 y EIP-7702.",
+ "page-resources-zk-adoption-title": "Adopción ZK",
+ "page-resources-zk-adoption-ethproofs-description": "SNARK que escalan Ethereum.",
+ "page-resources-zk-adoption-l2beat-description": "El catálogo ZK de L2BEAT es un recurso impulsado por la comunidad que ofrece información detallada sobre la tecnología ZK que utilizan varios proyectos de cadena de bloques.",
+ "page-resources-mempool-title": "Zona de espera",
+ "page-resources-mempool-mempool-description": "Visualizaciones comparativas seleccionadas de la zona de espera de Ethereum.",
+ "page-resources-meta-title": "Paneles de recursos de Ethereum",
+ "page-resources-meta-description": "Descubra una lista de recursos seleccionados por la comunidad para mantenerse al día sobre todos los desarrollos principales del ecosistema Ethereum.",
+ "page-resources-hero-title": "Recursos",
+ "page-resources-hero-header": "Paneles de Ethereum",
+ "page-resources-hero-description": "Descubra una lista de recursos seleccionados por la comunidad para mantenerse al día sobre todos los desarrollos principales del ecosistema Ethereum.",
+ "page-resources-find-more": "Encuentre más recursos excelentes en",
+ "page-resources-contribute-title": "Contribuir",
+ "page-resources-contribute-description": "Este panel es una página dinámica que requiere actualizaciones frecuentes. Ayuda a encontrar los mejores recursos para ofrecer una visión general del ecosistema Ethereum.",
+ "page-resources-suggest-resource": "Sugerir un recurso",
+ "page-resources-found-bug": "Encontrar un error",
+ "page-resources-whats-on-this-page": "Qué hay en esta página",
+ "page-resources-banner-notification-message": "El panel de recursos es una novedad",
+ "page-resources-share-feedback": "Comparta con nosotros sus comentarios"
+}
From d3e38c36f133eaf2babbfef9f5eecd311134099a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:45 -0300
Subject: [PATCH 081/589] update(i18n):
public/content/translations/es/what-are-apps/index.md
---
.../translations/es/what-are-apps/index.md | 81 +++++++++++++++++++
1 file changed, 81 insertions(+)
create mode 100644 public/content/translations/es/what-are-apps/index.md
diff --git a/public/content/translations/es/what-are-apps/index.md b/public/content/translations/es/what-are-apps/index.md
new file mode 100644
index 00000000000..a91586746ab
--- /dev/null
+++ b/public/content/translations/es/what-are-apps/index.md
@@ -0,0 +1,81 @@
+---
+title: Aplicaciones de Ethereum
+metaTitle: Aplicaciones de Ethereum | Aplicaciones descentralizadas en Ethereum
+description: Las aplicaciones en Ethereum son gratis, globales y usan cadenas de bloques públicas en vez de servidores de compañías privadas. Esto significa que puede usar la misma cuenta en cada proyecto y mantener su privacidad.
+lang: es
+template: use-cases
+emoji: ":handshake:"
+sidebarDepth: 2
+showDropdown: false
+image: /images/doge-computer.png
+summary: Las aplicaciones en Ethereum son gratis, globales y usan cadenas de bloques públicas en vez de servidores de compañías privadas. Esto significa que puede usar la misma cuenta en cada proyecto y mantener su privacidad.
+---
+
+## Aplicaciones con superpoderes {#apps-with-superpowers}
+
+Las aplicaciones de Ethereum podrían parecer aplicaciones normales y corrientes. Pero lo cierto es que tienen algunas cualidades especiales.
+
+Una vez que una aplicación se publica en la cadena de bloques de Ethereum, se vuelve imparable. Esto se debe a que la red Etereum está descentralizada a través de miles de computadoras en todo el mundo. Nadie puede cargarse aplicaciones que se ejecutan en Ethereum, porque no hay un único servidor al que dirigirse. Ethereum también es neutral por lo que cualquier persona en cualquier parte del mundo puede usarlo o incluso conectarse a él y construir sus modificaciones sobre él.
+
+## ¿Qué es una DApp? {#what-is-a-dapp}
+
+Las aplicaciones de Ethereum tienen su lógica de ejecución en la cadena de bloques de Ethereum en vez de servidores centralizados. Por eso a menudo se les llaman aplicaciones descentralizadas, o «DApps» como forma abreviada.
+
+
+
+
+
+
+
+## ¿Por qué es importante? {#why-does-this-matter}
+
+Las aplicaciones de Ethereum pueden hacer algunas cosas que aplicaciones tradicionales no podrían hacer. Como prestar dinero a un completo desconocido con la garantía de que recuperará su dinero, más intereses. Sin tener que pagarle a un intermediario de «confianza», cómo un abogado, para manejar la transacción.
+
+Hay aplicaciones de todo tipo: videojuegos, finanzas, trabajo, mensajería, almacenamiento y muchas más. Con la mayoría de estás aplicaciones, no es probable que reciba anuncios o que esté limitado por un acceso restringido.
+
+Todo lo que necesita es una cartera de Ethereum y unos cuantos ETH para empezar a usar cualquier aplicación de Ethereum.
+
+## ¿Cómo funciona?
+
+Las aplicaciones funcionan mediante contratos inteligentes - bits de código que habitan dentro de la cadena de bloques de Ethereum. A diferencia de las aplicaciones tradicionales, estas no necesitan que una empresa las ejecute.
+
+| Contienen | Aplicaciones tradicionales | Aplicaciones de Ethereum |
+| ------------------------------------------ | ---------------------------------- | ------------------------------------------- |
+| **¿Quién puede controlarlo?** | Una empresa | Nadie |
+| **Se ejecuta en** | Servidores privados de una empresa | En la cadena de bloques pública de Ethereum |
+| **¿Puede ser censurado?** | Sí | No |
+| **¿Quién es el propietario de sus datos?** | Normalmente no es usted | Es propietario/a de sus datos |
+
+
+
+
+
+
+
+
+
+## Las aplicaciones de Ethereum son como piezas de lego {#ethereum-apps-are-like-legos}
+
+Cuando todas las aplicaciones se construyen en Ethereum, se vuelven compatibles entre si. Un token de una aplicación, funcionará en otra completamente diferente. Es como si pudieras publicar tweets en tu muro de Facebook. De hecho, puede reutilizar su mismo perfil en muchas aplicaciones de Ethereum sin necesidad de registrarse en cada una de ellas.
+
+
+
+## Lecturas adicionales {#further-reading}
+
+- [Ethereum para principiantes](/what-is-ethereum)
+- [¿Qué son los contratos inteligentes?](/developers/docs/smart-contracts/)
+- [Documentación técnica sobre las DApp](/developers/docs/dapps/)
+
+## Preguntas frecuentes {#faq}
+
+
+
A las aplicaciones decentralizadas se las conoce como DApps. Son aplicaciones construidas en redes de cadena de bloque como Ethereum. Se dice que son descentralizadas, porque la red subyacente está descentralizada.
+
+
+
+
Algunas aplicaciones le permiten hacer transacciones o comprar tókenes, pero no todas las aplicaciones son para eso. Si está buscando comprar sus primeros tokens, visite [Obtener ETH](/get-eth).
+
+
+
+
Las carteras de criptomonedas le permiten mantener sus tókenes, así como administrar sus direcciones en Ethereum. Hay muchas excelentes carteras, cada una con un propósito diferente. Para descubrir qué cartera es la mejor para usted, visite nuestra [lista de billeteras](/wallets/find-wallet).
+
\ No newline at end of file
From 88c2dc751d43f2ee5b1c9d0524572c0f4467f3c4 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:46 -0300
Subject: [PATCH 082/589] update(i18n):
public/content/translations/es/roadmap/merge/index.md
---
.../translations/es/roadmap/merge/index.md | 98 +++++++++----------
1 file changed, 48 insertions(+), 50 deletions(-)
diff --git a/public/content/translations/es/roadmap/merge/index.md b/public/content/translations/es/roadmap/merge/index.md
index 3b91bfc25a2..0c2f08b7daa 100644
--- a/public/content/translations/es/roadmap/merge/index.md
+++ b/public/content/translations/es/roadmap/merge/index.md
@@ -17,17 +17,17 @@ summaryPoint4: La Fusión redujo el consumo de energía de Ethereum en un ~99,95
## ¿Qué es La Fusión? {#what-is-the-merge}
-La fusión fue la unión de la capa de ejecución inicial de Ethereum (la red principal que ha existido desde el [génesis](/ethereum-forks/#frontier)) con su nueva capa de consenso de prueba de participación, la cadena de baliza. Eliminó la necesidad de la minería conun consumo intensivo de energía y, en su lugar, permitió asegurar la red utilizando ETH apostados. Es un paso verdaderamente emocionante para hacer la visión de Ethereum una realidad: más escalabilidad, seguridad y sostenibilidad.
+La fusión fue la unión de la capa de ejecución original de Ethereum (la red principal que ha existido desde el [génesis](/ethereum-forks/#frontier)) con su nueva capa de consenso de prueba de participación, la Cadena de Baliza. Eliminó la necesidad de la minería conun consumo intensivo de energía y, en su lugar, permitió asegurar la red utilizando ETH apostados. Es un paso verdaderamente emocionante para hacer la visión de Ethereum una realidad: más escalabilidad, seguridad y sostenibilidad.
-Inicialmente, la [cadena de baliza](/roadmap/beacon-chain/) se lanzó de manera separada de la [red principal](/glossary/#mainnet). La red principal de Ethereum, con todas sus cuentas, balances, contratos inteligentes y estado de la cadena de bloques, continúa siendo asegurdad por el mecanismo de [prueba de participación](/developers/docs/consensus-mechanisms/pow/), incluso cuando la cadena de baliza se ejecuta en paralelo usando la [prueba de participación](/developers/docs/consensus-mechanisms/pos/). La Fusión se produce cuando estos dos sistemas finalmente se unen, siendo la prueba de trabajo permanentemente remplazada por la prueba de participación.
+Inicialmente, la [Beacon Chain](/roadmap/beacon-chain/) se lanzó por separado de la [Mainnet](/glossary/#mainnet). La Mainnet de Ethereum - con todas sus cuentas, balances, contratos inteligentes y estado de la blockchain - continuó asegurada mediante [proof-of-work](/developers/docs/consensus-mechanisms/pow/), incluso mientras la Beacon Chain funcionaba en paralelo utilizando [proof-of-stake](/developers/docs/consensus-mechanisms/pos/). La Fusión se produce cuando estos dos sistemas finalmente se unen, siendo la prueba de trabajo permanentemente remplazada por la prueba de participación.
-Imagina que Ethereum es una nave espacial que es lanzada antes de estar lista para un viaje interestelar. Con la cadena de baliza, la comunidad construyó un nuevo motor y un chasis más fuerte. Después de muchas pruebas, casi ha llegado el momento de cambiar el nuevo motor por el antiguo en pleno vuelo. De este modo, el nuevo motor, más eficiente, se integrará en la nave existente, preparada para recorrer grandes distancias y conquistar el universo.
+Imagina que Ethereum es una nave espacial que es lanzada antes de estar lista para un viaje interestelar. Con la cadena de baliza, la comunidad construyó un nuevo motor y un chasis más fuerte. Después de muchas pruebas, casi ha llegado el momento de cambiar el nuevo motor por el antiguo en pleno vuelo. Esto integró el nuevo y más eficiente motor en la nave existente, permitiéndole recorrer grandes distancias y enfrentar el universo.
-## Acoplamiento con la red principal {#merging-with-mainnet}
+## Fusión con Mainnet {#merging-with-mainnet}
-Prueba de trabajo aseguraba la red principal de Ethereum desde sus orígenes hasta La Fusión. Esto permitió que la cadena de bloques de Ethereum que todos usamos se creara en julio de 2015 con todas sus características familiares: transacciones, contratos inteligentes, cuentas, etc.
+Prueba de trabajo aseguraba la red principal de Ethereum desde sus orígenes hasta La Fusión. Esto permitió que la blockchain de Ethereum que todos conocemos existiera desde julio de 2015 con todas sus características familiares: transacciones, contratos inteligentes, cuentas, etc.
A lo largo de la historia de Ethereum, los desarrolladores han trabajado duro para preparar una eventual transición del algoritmo de consenso prueba de trabajo a prueba de participación. El 1 de diciembre de 2020 se creó la cadena de baliza, que desde entonces existe como una cadena de bloques independiente de la red principal, funcionando en paralelo.
@@ -40,25 +40,25 @@ El historial no se ha perdido tras La Fusión. Ya que la red principal se fusion
-Esta transición a la prueba de participación ha cambiado la forma en la que se emiten Ethers. Más información sobre [la emisión de ether antes y después de La Fusión](/roadmap/merge/issuance/).
+Esta transición a la prueba de participación cambió la forma en que se emite el ether. Aprende más sobre [la emisión de ether antes y después de La fusión](/roadmap/merge/issuance/).
-### Usuarios y titulares {#users-holders}
+### Usuarios y poseedores {#users-holders}
**La Fusión no cambió nada para los titulares/usuarios.**
-_Es necesario repetirlo_: Como usuarios o titulares de ETH o cualquier otro activo digital de Ethereum, así como aquellos participantes que no operan en nodos, **no es necesario realizar ninguna acción relacionada con sus fondos, cartera o cuenta para La Fusión.** ETH sigue siendo ETH. No existirán tales cosas como «old ETH»/«new ETH» ni «ETH1»/«ETH2». Las carteras seguirán funcionando exactamente igual que como lo hacían antes de La Fusión. Las personas que sugieran lo contrario, probablemente sean estafadores.
+_Esto merece repetirse_: Como usuario o poseedor de ETH o cualquier otro activo digital en Ethereum, así como stakeadores que no operan nodos, **no necesita hacer nada con sus fondos o billetera para tener en cuenta la Fusión.** ETH sigue siendo solo ETH. No existirán tales cosas como «old ETH»/«new ETH» ni «ETH1»/«ETH2». Las carteras seguirán funcionando exactamente igual que como lo hacían antes de La Fusión. Las personas que sugieran lo contrario, probablemente sean estafadores.
A pesar de intercambiar la prueba de trabajo y transicionar a la prueba de participación, el historial completo de Ethereum se mantiene intacto y sin alteraciones desde su creación. Todos los fondos que tengas en tu cartera antes de La Fusión siguen siendo accesibles después de la misma. **No se requiere ninguna actualización por su parte.**
-[Más información sobre la seguridad de Ethereum](/security/#eth2-token-scam)
+[Más sobre seguridad en Ethereum](/security/#eth2-token-scam)
-### Operadores de nodos y desarrolladores de DApps {#node-operators-dapp-developers}
+### Operadores de nodos y desarrolladores de dapps {#node-operators-dapp-developers}
@@ -70,11 +70,10 @@ Las principales medidas son las siguientes:
Si no se completan los dos puntos anteriores, el nodo se verá como «desconectado» hasta que ambas capas estén sincronizadas y autenticadas.
-Si no se establece un «receptor de las comisiones», el validador seguirá comportandose como de costumbre, pero se perderán las propinas de las comisiones no consumidas y cualquier MEV que se hubiera ganado en los bloques que propone el validador.
-
+Si no se establece un «receptor de las comisiones», el validador seguirá comportandose como de costumbre, pero se perderán las propinas de las comisiones no consumidas y cualquier MEV que se hubiera ganado en los bloques que propone el validador.
@@ -82,17 +81,17 @@ Hasta el momento de La Fusión, un cliente de ejecución (como Geth, Erigon, Bes
Como resultado de ello, un nodo completo de Ethereum ahora requiere tanto de un cliente de ejecución como de un cliente de consenso. Estos dos clientes trabajan juntos utilizando una nueva Engine API. La Engine API requiere la autenticación mediante un JWT secreto, que se proporciona a ambos clientes permitiendo una comunicación segura.
-Las acciones clave incluyen:
+Las principales medidas son las siguientes:
-- La instalación de un cliente de consenso adicional al cliente de ejecución.
-- La autenticación de los clientes de ejecución y consenso con un JWT secreto compartido para permitir que estos se comuniquen entre sí de manera segura.
+- Instale un cliente de consenso además de un cliente de ejecución
+- Autentique los clientes de ejecución y consenso con un secreto JWT compartido para que puedan comunicarse de forma segura entre sí.
Si no se completan los pasos anteriores, su nodo aparecerá como «desconectado» hasta que ambas capas estén sincronizadas y autenticadas.
@@ -112,17 +111,17 @@ Para obtener más información, eche un vistazo a esta publicación en el blog d
## La Fusión y el consumo de energía {#merge-and-energy}
-La Fusión marcó el final de la prueba de trabajo para Ethereum y dio inicio a la era de un Ethereum más sostenible y ecológico. El consumo de energía de Ethereum se redujo en un 99,95% aproximadamente, haciendo de Ethereum una cadena de bloques ecológica. Más información sobre [el consumo de energía de Ethereum](/energy-consumption/).
+La Fusión marcó el final de la prueba de trabajo para Ethereum y dio inicio a la era de un Ethereum más sostenible y ecológico. El consumo de energía de Ethereum se redujo en un 99,95% aproximadamente, haciendo de Ethereum una cadena de bloques ecológica. Conozca más sobre el [consumo energético de Ethereum](/energy-consumption/).
-## La Fusión y la fragmentación {#merge-and-scaling}
+## La Fusión y la escalabilidad {#merge-and-scaling}
-La Fusión coloca a Ethereum en una nueva fase de actualizaciones escalables que no podrían realizarse bajo el mecanismo de prueba de trabajo, lo que permite que Ethereum dé un paso importante en la consecución de los objetivos de escalabilidad, seguridad y sustentabilidad contenidos en la [Visión de Ethereum](/roadmap/vision/).
+La fusión también sentó las bases para futuras actualizaciones de escalabilidad que no eran posibles con la prueba de trabajo, lo que acerca a Ethereum un paso más a lograr la escala, la seguridad y la sostenibilidad completas que [su hoja de ruta](/roadmap/) pretende alcanzar.
-## Conceptos erróneos sobre La Fusión {#misconceptions}
+## Conceptos erróneos sobre la Fusión {#misconceptions}
+title="Concepto erróneo: "Ejecutar un nodo requiere hacer staking de 32 ETH.""
+contentPreview="Falso. Cualquiera es libre de sincronizar su propia copia autoverificada de Ethereum (es decir, ejecutar un nodo). No se requiere ETH, ni antes de la Fusión, ni después de la Fusión, ni nunca.">
Hay dos tipos de nodos en Ethereum: los que pueden proponer bloques y los que no.
@@ -134,54 +133,53 @@ Cualquier persona bajo cualquier mecanismo de consenso (prueba de trabajo o prue
La capacidad de cualquier persona tiene de ejecutar su propio nodo es absolutamente esencial para mantener la descentralización de la red Ethereum.
-[Más información sobre cómo ejecutar su propio nodo.](/run-a-node/)
+[Más sobre la ejecución de su propio nodo](/run-a-node/)
+title="Concepto erróneo: "La Fusión no logró reducir las tarifas de gas.""
+contentPreview="Falso. La Fusión fue un cambio de mecanismo de consenso, no una expansión de la capacidad de la red, y nunca se pretendió que redujera las tarifas de gas.">
Las tarifas de gas son producto de la demanda de la red en relación con la capacidad de la misma. La Fusión dejó obsoleto el uso del mecanismo de prueba de trabajo, permitiendo la transición a la prueba de participación para el consenso, pero no cambió de manera significativa ninguno de los parámetros que influyen de manera directa la capacidad o rendimiento de la red.
-Con una hoja de ruta centrada en las acumulaciones, los esfuerzos se están centrando en escalar la actividad del usuario en la [capa 2](/layer-2/), al tiempo que se le permite la red principal de la capa 1 ser una capa de liquidación descentralizada segura optimizada para el almacenamiento de datos de la acumulación y así ayudar a hacer que las transacciones sean exponencialmente más baratas. La transición a la prueba de participación es un precursor fundamental para conseguirlo. [Más información sobre el gas y las tarifas. ](/developers/docs/gas/)
+Con una hoja de ruta centrada en los rollups, los esfuerzos se enfocan en escalar la actividad de los usuarios en la [capa 2](/layer-2/), mientras que la red principal de capa 1 se habilita como una capa de liquidación descentralizada y segura, optimizada para el almacenamiento de datos de los rollups, lo que ayuda a que las transacciones de rollups sean exponencialmente más baratas. La transición a la prueba de participación es un precursor fundamental para conseguirlo. [Más información sobre el gas y las tasas.](/developers/docs/gas/)
-La «velocidad» de una transacción puede medirse de varias maneras, incluyendo el tiempo de inclusión en un bloque y el tiempo de finalización. Ambas cosas cambian ligeramente, aunque no de forma perceptible para los usuarios.
+title="Concepto erróneo: "Las transacciones se aceleraron sustancialmente con la Fusión.""
+contentPreview="Falso. Aunque existen algunos pequeños cambios, la velocidad de las transacciones en la capa 1 sigue siendo prácticamente la misma que antes de la Fusión.">
+La "velocidad" de una transacción se puede medir de varias maneras, incluyendo el tiempo hasta ser incluida en un bloque y el tiempo hasta su finalización. Ambas cosas cambian ligeramente, aunque no de forma perceptible para los usuarios.
-Históricamente, en la prueba de trabajo, el objetivo era tener un nuevo bloque cada ~13,3 segundos. Con la prueba de participación, los intervalos ocurren cada 12 segundos, y cada uno de ellos constituye una oportunidad para que el validador publique un bloque. La mayoría de las ranuras tienen bloques, aunque no necesariamente todos (por ejemplo , un validador está desconectado). Con la prueba de participación, los bloques se producen con más de 10 % de frecuencia en comparación con la prueba de trabajo. Esto es un cambio relativamente insignificante, con pocas probabilidades de ser percibido por los usuarios.
+Históricamente, en la prueba de trabajo, el objetivo era tener un nuevo bloque cada ~13,3 segundos. Con la prueba de participación, los intervalos ocurren cada 12 segundos, y cada uno de ellos constituye una oportunidad para que el validador publique un bloque. La mayoría de las ranuras tienen bloques, pero no necesariamente todas (es decir, un validador está desconectado). Con la prueba de participación, los bloques se producen con más de 10 % de frecuencia en comparación con la prueba de trabajo. Esto es un cambio relativamente insignificante, con pocas probabilidades de ser percibido por los usuarios.
-La prueba de participación introduce el concepto de finalidad de la transacción que no existía anteriormente. Con la prueba de trabajo, la posibilidad de revertir un bloque se hace exponencialmente más difícil, con cada bloque aprobado siendo minado como complemento de la transacción, aunque nunca suele llegar a cero. En la prueba de participación, los bloques se agrupan en épocas (periodos de tiempo de 6,4 minutos que contienen 32 oportunidades para los bloques) que los validadores votan. Cuando termina una época, los validadores votan si la consideran «justificada». Si los validadores están de acuerdo en justificarla, se finaliza en la siguiente. Deshacer las transacciones finalizadas es económicamente inviable ya que requeriría obtener y quemar más de un tercio del total de ETH depositado.
+La prueba de participación introduce el concepto de finalidad de la transacción que no existía anteriormente. Con la prueba de trabajo, la posibilidad de revertir un bloque se hace exponencialmente más difícil, con cada bloque aprobado siendo minado como complemento de la transacción, aunque nunca suele llegar a cero. En la prueba de participación, los bloques se agrupan en épocas (periodos de tiempo de 6,4 minutos que contienen 32 oportunidades para los bloques) que los validadores votan. Cuando termina una época, los validadores votan si la consideran «justificada». Si los validadores están de acuerdo en justificarla, se finaliza en la siguiente. Deshacer transacciones finalizadas es económicamente inviable, ya que requeriría obtener y quemar más de un tercio del ETH total en staking.
Inicialmente, después de La Fusión, los participantes solo podían acceder a las propinas de tarifas y MEV que se ganaban como resultado de las propuestas de bloques. Estas recompensas se acreditan a una cuenta sin participación controlada por el validador (conocida como el destinatario de la tarifa), y están disponibles de inmediato. Estas recompensas están separadas de las recompensas del protocolo para realizar las tareas de validación.
Desde la mejora de la red Shanghai/Capella, los participantes pueden designar una dirección de retirada para comenzar a recibir pagos automáticos de cualquier saldo en exceso (más de 32 ETH por recompensas del protocolo). Esta actualización también permitió a los validadores desbloquear y reclamar el total de su saldo al salir de la red.
-[Más información sobre la retirada de participaciones.](/staking/withdrawals/)
+[Más información sobre las retiradas de participaciones](/staking/withdrawals/)
-Desde que la actualización Shanghai/Capella activó las retiradas, los validadores tienen el incentivo de retirar su saldo excedente de participación por encima de los 32 ETH, pues estos fondos no suman al rendimiento y sólo están bloqueados. Dependiendo de la tasa efectiva anual (o APR, según sus siglas en inglés), que viene determinada por el total de ETH depositado, se puede animar a su(s) validadores a reclamar todo su saldo o potencialmente apostar aún más usando sus recompensas para ganar más rendimiento.
+title="Concepto erróneo: "Ahora que la Fusión está completa y los retiros están habilitados, todos los stakeadores podrían salir al mismo tiempo.""
+contentPreview="Falso. La salida de validadores está limitada por tasa por motivos de seguridad.">
+Desde que la actualización Shanghai/Capella habilitó los retiros, los validadores están incentivados a retirar el saldo en staking por encima de 32 ETH, ya que esos fondos no generan rendimiento y de otro modo permanecen bloqueados. Dependiendo de la tasa efectiva anual (o APR, según sus siglas en inglés), que viene determinada por el total de ETH depositado, se puede animar a su(s) validadores a reclamar todo su saldo o potencialmente apostar aún más usando sus recompensas para ganar más rendimiento.
Un detalle importante que cabe recalcar es que el ritmo de las salidas de un validador total las limita el protocolo, y sólo puede salir cierto número de validadores por época (cada 6,4 minutos). Este límite fluctúa dependiendo del número de validadores activos, pero llega a aproximadamente el 0,33 % del total de ETH en participación que puede salir de la red en un solo día.
Esto evita un éxodo masivo de fondos en participación. Además, evita que un potencial atacante con acceso a una gran parte del total de ETH en participación actúe de mala fe y que se pueda recortar/retirar todo el saldo del validador causante en la misma época, antes de que el protocolo pueda hacer cumplir la penalización mediante recorte.
-La APR también es intencionalmente dinámica, lo que permite a un mercado de participantes equilibrar cuánto están dispuestos a que se les pague para ayudar a proteger la red. Si la tasa es muy baja, los validadores se retirarán a un ritmo limitado por el protocolo. Poco a poco, esto aumentará la APR para todos los que se queden, atrayendo a nuevos participantes o a los que regresen.
-
+La APR también es intencionalmente dinámica, lo que permite a un mercado de participantes equilibrar cuánto están dispuestos a que se les pague para ayudar a proteger la red. Si la tasa es muy baja, los validadores se retirarán a un ritmo limitado por el protocolo. Poco a poco, esto aumentará la APR para todos los que se queden, atrayendo a nuevos participantes o a los que regresen.
## ¿Qué pasó con «Eth2»? {#eth2}
@@ -194,39 +192,39 @@ Para evitar mayor confusión, la comunidad ha actualizado estos términos:
Estas actualizaciones de terminología solo cambian la nomenclatura, no alteran los objetivos ni el itinerario de Ethereum.
-[Más información acerca del cambio de nombre a «Eth2»](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/)
+[Obtenga más información sobre el cambio de nombre de 'Eth2'](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/)
## Relación entre actualizaciones {#relationship-between-upgrades}
Las actualizaciones de Ethereum están interrelacionadas de alguna manera. Recapitulemos pues, sobre cómo se relaciona La Fusión con otras actualizaciones.
-### La Fusión y la cadena de baliza {#merge-and-beacon-chain}
+### La Fusión y la Beacon Chain {#merge-and-beacon-chain}
-La Fusión representa la adopción formal de la cadena de baliza como la nueva capa de consenso de la capa de ejecución original de la red principal. Desde La Fusión, se asignan validadores para proteger la red principal de Ethereum y el minado de la [prueba de trabajo](/developers/docs/consensus-mechanisms/pow/) deja de ser el medio válido para la producción de bloques.
+La Fusión representa la adopción formal de la cadena de baliza como la nueva capa de consenso de la capa de ejecución original de la red principal. Desde la Fusión, los validadores están asignados para asegurar la Mainnet de Ethereum, y la minería mediante [proof-of-work](/developers/docs/consensus-mechanisms/pow/) ya no es un método válido para la producción de bloques.
En su lugar, los bloques serán propuestos desde un nodo validado que tenga ETH apostados a cambio del derecho de participar en el consenso. Estas actualizaciones sientan las bases para futuras mejoras de escalabilidad, incluida la fragmentación.
- La cadena de baliza
+ La Beacon Chain
-### La Fusión y actualización Shanghai {#merge-and-shanghai}
+### La Fusión y la actualización Shanghai {#merge-and-shanghai}
Con la intención de simplificar y maximizar los esfuerzos centrados en una transición fructífera a la prueba de participación, la actualización de La Fusión no incluirá algunas características previamente anticipadas, como la posibilidad de retirar ETH apostados. Esta funcionalidad se habilitó de forma separada con la actualización Shanghai/Capella.
-Aquellos que quieran saber más, pueden ver la charla [Lo que ocurrirá después de La Fusión](https://youtu.be/7ggwLccuN5s?t=101), que dio Vitalik, en el evento ETHGlobal en abril de 2021.
+Para quienes tengan curiosidad, conozca más sobre [Qué sucede después de la Fusión](https://youtu.be/7ggwLccuN5s?t=101), presentado por Vitalik en el evento ETHGlobal de abril de 2021.
-### La fusión y la fragmentación {#merge-and-data-sharding}
+### La Fusión y el sharding {#merge-and-data-sharding}
-Originalmente, el plan era trabajar en la fragmentación antes de La Fusión para abordar la escalabilidad. No obstante, con la proliferación de las [soluciones escalables de capa 2](/layer-2/), las prioridades se reorientaron a pasar de prueba de trabajo a prueba de participación.
+Originalmente, el plan era trabajar en la fragmentación antes de La Fusión para abordar la escalabilidad. Sin embargo, con el auge de las [soluciones de escalado de capa 2](/layer-2/), la prioridad cambió a reemplazar primero el proof-of-work por proof-of-stake.
Los planes de fragmentación están evolucionando rápidamente, pero dado el auge y el éxito de las tecnologías de capa 2 para escalar la ejecución de transacciones, los planes de fragmentación han pasado a buscar la forma más óptima de distribuir la carga de almacenar los datos comprimidos de las llamadas procedentes de las acumulaciones, permitiendo un crecimiento exponencial de la capacidad de la red. Esto no sería posible sin pasar primero a la prueba de participación.
- Fragmentación
+ Sharding
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
From 07fe91fb57d3de13e45fc81db1a81338cecb7035 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:48 -0300
Subject: [PATCH 083/589] update(i18n):
public/content/translations/es/staking/pools/index.md
---
.../translations/es/staking/pools/index.md | 50 +++++++++----------
1 file changed, 24 insertions(+), 26 deletions(-)
diff --git a/public/content/translations/es/staking/pools/index.md b/public/content/translations/es/staking/pools/index.md
index d3d63474c89..044ba869c95 100644
--- a/public/content/translations/es/staking/pools/index.md
+++ b/public/content/translations/es/staking/pools/index.md
@@ -1,6 +1,6 @@
---
-title: Participación agrupada
-description: Una visión general de cómo empezar con la participación agrupada de ETH
+title: Staking en conjunto
+description: Conozca más a fondo las reservas de participación
lang: es
template: staking
emoji: ":money_with_wings:"
@@ -17,21 +17,21 @@ summaryPoints:
Las participaciones agrupadas son un enfoque colaborativo que permite a muchas personas con pequeñas cantidades de ETH obtener los 32 ETH necesarios para activar un conjunto de claves de validación. El protocolo no permite por defecto la funcionalidad de agrupación, por lo que se han creado soluciones por separado para satisfacer esta necesidad.
-Algunas agrupaciones operan utilizando contratos inteligentes, estos permiten depositar fondos en un contrato, que gestiona y rastrea su participación de forma fiable, y se emite un token que representa este valor. Puede que otras agrupaciones no comprendan contratos inteligentes y en su lugar se medien fuera de la red.
+Algunas reservas operan utilizando contratos inteligentes, estos permiten depositar fondos en un contrato, que gestiona y rastrea su participación de forma fiable, y se emite un token que representa este valor. Puede que otras reservas no incluyan los contratos inteligentes y en su lugar se medien fuera de la red.
## ¿Por qué debería participar en una agrupación? {#why-stake-with-a-pool}
-Además de las ventajas que hemos descrito en nuestra [introducción a las participaciones](/staking/), participar en una agrupación supone una serie de ventajas distintas.
+Además de los beneficios que describimos en nuestra [introducción al staking](/staking/), hacer staking a través de un pool ofrece una serie de ventajas específicas.
-
-
-
+
+
+
-## Qué hay que tener en cuenta {#what-to-consider}
+## Qué tener en cuenta {#what-to-consider}
El protocolo de ETH no admite de forma original las participaciones agrupadas o delegadas, pero dada la demanda de los usuarios de apostar menos de 32 ETH, se ha creado un número creciente de soluciones para satisfacer esta demanda.
@@ -39,13 +39,13 @@ Cada reserva y las herramientas o contratos inteligentes que utilizan los han co
Sin embargo, estos tókenes-ETH apostados tienden a generar conductas similares a un cártel en el que una gran cantidad de ETH apostados terminan en manos de unas pocas organizaciones centralizadas, en lugar de distribuirse entre muchos individuos independientes. Esto crea condiciones para la censura o la extracción de valor. La regla de oro para participar siempre debería ser que las personas ejecuten validadores en su propio hardware siempre que sea posible.
-[Más información sobre los riesgos de la participación de tókenes](https://notes.ethereum.org/@djrtwo/risks-of-lsd).
+[Más información sobre los riesgos de hacer staking con tokens](https://notes.ethereum.org/@djrtwo/risks-of-lsd).
Los indicadores de atributos se utilizan a continuación para señalar los puntos fuertes o débiles que puede tener una agrupación de participaciones de la lista. Utilice esta sección como referencia para saber cómo definimos estos atributos mientras elige un grupo al que unirse.
-## Explore las participaciones agrupadas {#explore-staking-pools}
+## Explorar pools de staking {#explore-staking-pools}
Existe una gran variedad de opciones disponibles para ayudarle con su configuración. Utilice los indicadores anteriores para guiarse a través de las herramientas siguientes.
@@ -53,34 +53,32 @@ Existe una gran variedad de opciones disponibles para ayudarle con su configurac
-Es importante elegir un servicio que se tome en serio la [diversidad de clientes](/developers/docs/nodes-and-clients/client-diversity/), ya que mejora la seguridad de la red y limita el riesgo. Los servicios que tienen constatación de limitar el uso de cliente mayoritario están señalados como "diversidad de cliente de ejecución" y "diversidad de cliente de consenso".
+Tenga en cuenta la importancia de elegir un servicio que tome en serio la [diversidad de clientes](/developers/docs/nodes-and-clients/client-diversity/), ya que esto mejora la seguridad de la red y limita su riesgo. Los servicios que tienen constatación de limitar el uso de cliente mayoritario están señalados con "diversidad de cliente de ejecución" y "diversidad de cliente de consenso".
-¿Tiene alguna sugerencia para una herramienta de participación no cubierta? Eche un vistazo a nuestra [política de listado de productos](/contributing/adding-staking-products/) para ver si le parece una opción aceptable y enviarla para su revisión.
+¿Tiene alguna sugerencia para una herramienta de participación no cubierta? Consulte nuestra [política de listado de productos](/contributing/adding-staking-products/) para ver si sería adecuado, y para enviarlo para su revisión.
-## Preguntas más frecuentes {#faq}
+## Preguntas frecuentes {#faq}
-
-Por lo general, los tókenes de participación ERC-20 se emiten a los participantes y representan el valor de sus ETH apostados y las recompensas. Tenga en cuenta que las diferentes agrupaciones repartirán las recompensas de las participaciones entre sus usuarios a través de métodos ligeramente diferentes, pero siempre se reparten.
+
+Por lo general, los tókenes de participación ERC-20 se emiten a los participantes y representan el valor de sus ETH apostados y las recompensas. Tenga en cuenta que las diferentes reservas repartirán las recompensas de las participaciones entre sus usuarios a través de métodos ligeramente diferentes, pero siempre se reparten.
-
+
¡En cualquier momento! La actualización de red Shanghai/Capella se produjo en abril de 2023 e introdujo las retiradas de participaciones. Después de esta actualización, las cuentas de validador que respaldan las reservas de participación tendrán la posibilidad de salir y retirar ETH a su dirección de retirada designada. Esto permitirá la capacidad de canjear su parte de participación por el ETH subyacente. Compruebe con su proveedor la compatibilidad con esta funcionalidad.
Alternativamente, los grupos que usan tókenes de participación ERC-20, permiten a los usuarios operar dicho token en el libre mercado, pudiendo vender la posición en participación, «retirándola» de forma eficaz sin tener que eliminar ETH del contrato de participación.
-Más sobre retiradas de participaciones
-
+Más sobre retiros de staking
-
-Hay muchas semejanzas entre estas opciones de participación agrupada y los intercambios centralizados, como la posibilidad de apostar pequeñas cantidades de ETH y tenerlas juntas para activar validadores.
+
+Existen muchas similitudes entre estas opciones de staking en pool y los exchanges centralizados, como la posibilidad de hacer staking con pequeñas cantidades de ETH y agruparlos para activar validadores.
A diferencia de los intercambios centralizados, muchas otras opciones de participación agrupadas utilizan contratos inteligentes y/o tókenes de participación, que son usualmente tókenes ERC-20 que pueden permanecer en la cartera, y comprarse o venderse como cualquier otro token. Esto ofrece una capa de soberanía y seguridad al darle el control sobre sus tókenes, pero no le da el control directo sobre el cliente validador que certifica en su nombre en segundo plano.
-Algunas opciones de agrupamiento están más descentralizadas que otras cuando se trata de los nodos que las respaldan. Para promover la salud y la descentralización de la red, siempre se anima a los participantes a seleccionar un servicio de agrupación que permita un conjunto descentralizado de operadores de nodos sin permisos.
-
+Algunas opciones de agrupamiento están más descentralizadas que otras cuando se trata de los nodos que las respaldan. Para promover la salud y la descentralización de la red, siempre se anima a los participantes a seleccionar un servicio de agrupación que permita un conjunto descentralizado de operadores de nodos sin permisos.
-## Para profundizar sobre el tema {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [El directorio de participación de Ethereum](https://www.staking.directory/), _Eridian y Spacesider_
-- [Participaciones con RocketPool: visión general de las participaciones](https://docs.rocketpool.net/guides/staking/overview.html) - _Documentos de RocketPool_
-- [Participaciones Ethereum con Lido](https://help.lido.fi/en/collections/2947324-staking-ethereum-with-lido) - _Documentos de ayuda de Lido_
+- [El Directorio de Staking de Ethereum](https://www.staking.directory/) - _Eridian y Spacesider_
+- [Staking con Rocket Pool - Descripción general de staking](https://docs.rocketpool.net/guides/staking/overview.html) - _RocketPool docs_
+- [Staking de Ethereum con Lido](https://help.lido.fi/en/collections/2947324-staking-ethereum-with-lido) - _Lido help docs_
From b159b2f1988b7bd8543a2bca7510c5be244a3b86 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:50 -0300
Subject: [PATCH 084/589] update(i18n):
public/content/translations/es/developers/docs/frameworks/index.md
---
.../es/developers/docs/frameworks/index.md | 74 ++++++++++---------
1 file changed, 41 insertions(+), 33 deletions(-)
diff --git a/public/content/translations/es/developers/docs/frameworks/index.md b/public/content/translations/es/developers/docs/frameworks/index.md
index 54dcdf0ec66..92beb4b6476 100644
--- a/public/content/translations/es/developers/docs/frameworks/index.md
+++ b/public/content/translations/es/developers/docs/frameworks/index.md
@@ -10,131 +10,139 @@ Construir una dapp completamente desarrollada o implementada requiere diferentes
Los frameworks incluyen muchas funcionalidades listas para usar:
-- Características para encender una instancia local de Blockchain.
-- Utilidades para compilar y probar tus contratos inteligentes.
-- Complementos de desarrollo de cliente para construir aplicaciones orientadas al usuario dentro del mismo proyecto/repositorio.
-- Configuración para conectarse a redes de Ethereum e implementar contratos, ya sea una instancia que se ejecuta localmente o una de las redes públicas de Ethereum.
-- Distribución descentralizada de dapps: integraciones con opciones de almacenamiento como IPFS.
+- Características para activar una instancia local de cadena de bloques.
+- Funciones de utilidad para compilar y probar sus contratos inteligentes.
+- Complementos de desarrollo del cliente para construir su aplicación orientada al usuario dentro del mismo proyecto/repositorio.
+- Configuración para conectarse a redes de Ethereum y desplegar contratos, ya sea en una instancia local en ejecución o en una de las redes públicas de Ethereum.
+- Distribución de aplicaciones descentralizadas – integraciones con opciones de almacenamiento como IPFS.
## Requisitos previos {#prerequisites}
-Antes de profundizar en los marcos o frameworks, le recomendamos que lea nuestra introducción a las [dapps](/developers/docs/dapps/) y a la [pila de Ethereum](/developers/docs/ethereum-stack/).
+Antes de profundizar en los frameworks, recomendamos leer primero nuestra introducción a [dapps](/developers/docs/dapps/) y la [pila de Ethereum](/developers/docs/ethereum-stack/).
## Frameworks disponibles {#available-frameworks}
-**Foundry** - **_Foundry es un kit de herramientas rápido, portátil y modular para el desarrollo de aplicaciones para Ethereum. _**
+**Foundry** - **_Foundry es un conjunto de herramientas portátil y modular, de altísima velocidad, para el desarrollo de aplicaciones en Ethereum_**
- [Instalar Foundry](https://book.getfoundry.sh/)
- [Libro de Foundry](https://book.getfoundry.sh/)
-- [Chat de comunidad de Foundry en Telegram](https://t.me/foundry_support)
+- [Chat de la comunidad de Foundry en Telegram](https://t.me/foundry_support)
- [Awesome Foundry](https://github.com/crisgarner/awesome-foundry)
-**Alchemy:** **_Plataforma de desarrollo de Ethereum._**
+**Hardhat -** **_Entorno de desarrollo de Ethereum para profesionales._**
- [hardhat.org](https://hardhat.org)
- [GitHub](https://github.com/nomiclabs/hardhat)
-**Ape:** **_La herramienta de desarrollo de contratos inteligentes para pythonistas, científicos de datos y profesionales de seguridad._**
+**Ape -** **_La herramienta de desarrollo de contratos inteligentes para pythonistas, científicos de datos y profesionales de la seguridad._**
- [Documentación](https://docs.apeworx.io/ape/stable/)
- [GitHub](https://github.com/ApeWorX/ape)
-**Web3j:** **_Plataforma para desarrollar aplicaciones de la cadena de bloques en JVM._**
+**Web3j -** **_Una plataforma para desarrollar aplicaciones blockchain en la JVM._**
-- [Página de inicio](https://www.web3labs.com/web3j-sdk)
+- [Página principal](https://www.web3labs.com/web3j-sdk)
- [Documentación](https://docs.web3j.io)
- [GitHub](https://github.com/web3j/web3j)
-**ethers-kt:** **_Biblioteca asíncrona Kotlin/Java/Android de alto rendimiento para cadena de bloques basadas en EVM._**
+**ethers-kt -** **_Librería asíncrona y de alto rendimiento en Kotlin/Java/Android para blockchains basados en EVM._**
- [GitHub](https://github.com/Kr1ptal/ethers-kt)
- [Ejemplos](https://github.com/Kr1ptal/ethers-kt/tree/master/examples)
- [Discord](https://discord.gg/rx35NzQGSb)
-**Cree una app de Eth:** **_Cree aplicaciones basadas en Ethereum con un comando. Incluye una amplia oferta de marcos de UI y plantillas DeFi para elegir._**
+**Create Eth App -** **_Cree aplicaciones impulsadas por Ethereum con un solo comando._** Incluye una amplia oferta de marcos de UI y plantillas DeFi para elegir._\*\*
- [GitHub](https://github.com/paulrberg/create-eth-app)
- [Plantillas](https://github.com/PaulRBerg/create-eth-app/tree/develop/templates)
-**Scaffold-Eth:** **_Componentes y hooks para web3 de Ethers.js + Hardhat + React; todo lo que necesita para comenzar a crear aplicaciones descentralizadas impulsadas por contratos inteligentes._**
+**Scaffold-Eth -** **_Ethers.js + Hardhat + componentes y hooks de React para web3: todo lo que necesita para comenzar a construir aplicaciones descentralizadas impulsadas por smart contracts._**
- [GitHub](https://github.com/scaffold-eth/scaffold-eth-2)
-**Tenderly:** **_Plataforma de desarrollo web3 que permite a los desarrolladores de cadena de bloques crear, probar, depurar, monitorear y operar contratos inteligentes y mejorar la experiencia de usuario de dapps._**
+**Tenderly -** **_Plataforma de desarrollo web3 que permite a los desarrolladores blockchain construir, probar, depurar, monitorear y operar smart contracts y mejorar la experiencia de usuario de las dapps._**
- [Sitio web](https://tenderly.co/)
- [Documentación](https://docs.tenderly.co/)
-**The Graph:** **_The Graph para consultar datos de la cadena de bloques de manera eficiente._**
+**The Graph -** **_The Graph para consultar datos de blockchain de forma eficiente._**
- [Sitio web](https://thegraph.com/)
- [Tutorial](/developers/tutorials/the-graph-fixing-web3-data-querying/)
-**Alchemy:** **_Plataforma de desarrollo de Ethereum._**
+**Alchemy -** **_Plataforma de desarrollo de Ethereum._**
- [alchemy.com](https://www.alchemy.com/)
- [GitHub](https://github.com/alchemyplatform)
- [Discord](https://discord.com/invite/alchemyplatform)
-**QuikNode:** **_Plataforma de desarrollo de Ethereum._**
+**NodeReal -** **_Plataforma de desarrollo de Ethereum._**
- [Nodereal.io](https://nodereal.io/)
- [GitHub](https://github.com/node-real)
- [Discord](https://discord.gg/V5k5gsuE)
-**thirdweb SDK:** **_Cree aplicaciones web3 que pueden interactuar con sus contratos inteligentes usando nuestros potentes SDK y CLI._**
+**thirdweb SDK -** **_Desarrolle aplicaciones web3 que puedan interactuar con sus smart contracts usando nuestros potentes SDK y CLI._**
- [Documentación](https://portal.thirdweb.com/sdk/)
- [GitHub](https://github.com/thirdweb-dev/)
-**Chainstack:** **_Plataforma de desarrollo web3 (Ethereum y otros)._**
+**Chainstack -** **_Plataforma de desarrollo web3 (Ethereum y otros)._**
- [chainstack.com](https://www.chainstack.com/)
- [GitHub](https://github.com/chainstack)
- [Discord](https://discord.gg/BSb5zfp9AT)
-**Crossmint:****_ Plataforma de desarrollo web3 de nivel empresarial que le permite crear aplicaciones NFT en todas las cadenas principales de cadenas EVM (y otras)._**
+**Crossmint -** **_Plataforma de desarrollo web3 de nivel empresarial, que permite crear aplicaciones NFT en todas las principales cadenas EVM (y otras)._**
- [Sitio web](https://www.crossmint.com)
- [Documentación](https://docs.crossmint.com)
- [Discord](https://discord.com/invite/crossmint)
-**Brownie:****_ Entorno de desarrollo y marco de pruebas basados en Python._**
+**Brownie -** **_Entorno de desarrollo y framework de pruebas basado en Python._**
- [Documentación](https://eth-brownie.readthedocs.io/en/latest/)
- [GitHub](https://github.com/eth-brownie/brownie)
- **Brownie se encuentra actualmente en mantenimiento**
-**OpenZeppelin SDK: ****_El kit definitivo de herramientas para contratos inteligentes; una serie de herramientas que lo ayuda a desarrollar, compilar, actualizar, implementar e interactuar con contratos inteligentes._**
+**OpenZeppelin SDK -** **_El Kit de Herramientas Definitivo para Smart Contracts: una suite de herramientas para ayudarle a desarrollar, compilar, actualizar, desplegar e interactuar con smart contracts._**
-- [SDK de OpenZeppelin](https://docs.openzeppelin.com)
+- [OpenZeppelin Defender SDK](https://docs.openzeppelin.com/defender/sdk)
- [GitHub](https://github.com/OpenZeppelin/openzeppelin-sdk)
- [Foro de la comunidad](https://forum.openzeppelin.com/c/support/17)
- **El desarollo de OpenZeppelin SDK ha finalizado**
-**Catapulta: ****_Herramienta de implementación de contratos inteligentes de cadena múltiple; automatice verificaciones en exploradores de bloques, realice un seguimiento de los contratos inteligentes implementados y comparta informes de implementación; plug-n-play para proyectos de Foundry y Hardhat._**
+**Catapulta -** **_Herramienta de despliegue de smart contracts en múltiples cadenas, automatiza verificaciones en exploradores de bloques, mantiene el seguimiento de los smart contracts desplegados y permite compartir informes de despliegue, plug-n-play para proyectos de Foundry y Hardhat._**
- [Sitio web](https://catapulta.sh/)
- [Documentación](https://catapulta.sh/docs)
- [Github](https://github.com/catapulta-sh)
-**Covalente:** **_API de cadena de bloques enriquecidas para más de 200 cadenas._**
+**GoldRush (impulsado por Covalent) -** **_GoldRush ofrece el conjunto más completo de API de datos de la cadena de bloques para desarrolladores, analistas y empresas. Tanto si está creando un panel de DeFi, una billetera, un bot de trading, un agente de IA o una plataforma de cumplimiento, las API de datos proporcionan un acceso rápido, preciso y fácil para los desarrolladores a los datos en cadena esenciales que necesita_**
-- [covalenthq.com](https://www.covalenthq.com/)
-- [Documentación](https://www.covalenthq.com/docs/api/)
+- [Sitio web](https://goldrush.dev/)
+- [Documentación](https://goldrush.dev/docs/chains/ethereum)
- [GitHub](https://github.com/covalenthq)
- [Discord](https://www.covalenthq.com/discord/)
-**Wake:****_ Marco Python todo en uno para pruebas de contratos, fuzzing, implementación, análisis de vulnerabilidades y navegación por código._**
+**Wake -** **_Framework todo-en-uno en Python para pruebas de contratos, fuzzing, despliegue, escaneo de vulnerabilidades y navegación de código._**
-- [Página de inicio](https://getwake.io/)
+- [Página principal](https://getwake.io/)
- [Documentación](https://ackeeblockchain.com/wake/docs/latest/)
- [GitHub](https://github.com/Ackee-Blockchain/wake)
- [Extensión de VS Code](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity)
-## Leer más {#further-reading}
+**Veramo -** **_Framework de código abierto, modular y agnóstico que facilita a los desarrolladores de aplicaciones descentralizadas incorporar identidades descentralizadas y credenciales verificables en sus aplicaciones._**
-_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+- [Página principal](https://veramo.io/)
+- [Documentación](https://veramo.io/docs/basics/introduction)
+- [GitHub](https://github.com/uport-project/veramo)
+- [Discord](https://discord.com/invite/FRRBdjemHV)
+- [Paquete NPM](https://www.npmjs.com/package/@veramo/core)
+
+## Lecturas adicionales {#further-reading}
+
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Temas relacionados {#related-topics}
From 6359dfb6f3597ad9156a43fd2aa1ea78d23d0a1b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:51 -0300
Subject: [PATCH 085/589] update(i18n):
public/content/translations/es/roadmap/pectra/index.md
---
.../translations/es/roadmap/pectra/index.md | 127 ++++++++++++++++++
1 file changed, 127 insertions(+)
create mode 100644 public/content/translations/es/roadmap/pectra/index.md
diff --git a/public/content/translations/es/roadmap/pectra/index.md b/public/content/translations/es/roadmap/pectra/index.md
new file mode 100644
index 00000000000..49c6c2420da
--- /dev/null
+++ b/public/content/translations/es/roadmap/pectra/index.md
@@ -0,0 +1,127 @@
+---
+title: Prague-Electra (Pectra)
+description: Conozca la actualización del protocolo Pectra
+lang: es
+---
+
+# Pectra {#pectra}
+
+La actualización de la red Pectra se efectuó tras [Dencun](/roadmap/dencun/) e introdujo cambios en la capa de ejecución y en la capa de consenso de Ethereum. La abreviatura Pectra es una combinación de «Prague» y «Electra», que son los nombres de los cambios en las especificaciones de la capa de ejecución y la capa de consenso, respectivamente. Juntos, estos cambios aportan una serie de mejoras para los usuarios, desarrolladores y validadores de Ethereum.
+
+Esta actualización se activó con éxito en la red principal de Ethereum en la época `364032`, el **7 de mayo de 2025 a las 10:05 (UTC)**.
+
+
+
+
+La actualización de Pectra es solo un paso dentro de los objetivos de desarrollo a largo plazo de Ethereum. Obtenga más información sobre [la hoja de ruta del protocolo](/roadmap/) y las [actualizaciones anteriores](/ethereum-forks/).
+
+
+
+
+## Mejoras en Pectra {#new-improvements}
+
+¡Pectra ofrece mayor número de [EIP](https://eips.ethereum.org/) que cualquier actualización anterior! Existen muchos cambios menores, pero también nuevas funcionalidades significativas. La lista completa de cambios y detalles técnicos está disponible en cada uno de los EIP incluidos.
+
+### Código de cuenta EOA {#7702}
+
+La [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) representa un gran avance hacia la adopción generalizada de la [abstracción de cuentas](/roadmap/account-abstraction/). Con esta funcionalidad, los usuarios pueden configurar su dirección ([EOA](/glossary/#eoa)) para ampliarla con un contrato inteligente. La EIP introduce un nuevo tipo de transacción con una función específica: permitir a los propietarios de direcciones firmar una autorización que configura su dirección para imitar un contrato inteligente elegido.
+
+Con esta EIP, los usuarios pueden optar por carteras programables que permiten nuevas funcionalidades como agrupación de transacciones, transacciones sin gas y acceso a activos personalizados para esquemas de recuperación alternativos. Este enfoque híbrido combina la simplicidad de las EOA con la programabilidad de las cuentas basadas en contratos.
+
+Consulte la EIP-7702 [aquí](/roadmap/pectra/7702/)
+
+### Incremente el balance efectivo máximo {#7251}
+
+El balance efectivo actual del validador es exactamente 32 ETH. Es la cantidad mínima necesaria para participar en el consenso, pero a la vez es el máximo que un solo validador puede apostar.
+
+La [EIP-7251](https://eips.ethereum.org/EIPS/eip-7251) aumenta el balance efectivo máximo permitido a 2048 ETH, lo que significa que un solo validador ahora puede apostar entre 32 y 2048 ETH. En lugar de múltiplos de 32, los participantes pueden elegir una cantidad arbitraria de ETH para apostar y recibir recompensas por cada 1 ETH adicional sobre el mínimo. Por ejemplo, si el balance de un validador crece con sus recompensas hasta 33 ETH, ese 1 ETH extra también se considera parte del balance efectivo y genera recompensas.
+
+Sin embargo, la ventaja de un mejor sistema de recompensas para los validadores es solo una parte de esta mejora. Los participantes [stakers] (/staking/) que ejecutan varios validadores ahora pueden agregarlos en uno solo, esto simplifica la operación y reduce la sobrecarga de la red. Como cada validador en la cadena de baliza envía una firma en cada época, los requisitos de ancho de banda aumentan con más validadores y una gran cantidad de firmas que propagar. La agregación de validadores aliviará la carga de la red y abrirá nuevas opciones de escalabilidad, manteniendo la misma seguridad económica.
+
+Lea más sobre maxEB [aquí](/roadmap/pectra/maxeb/)
+
+### Aumento del rendimiento de blobs {#7691}
+
+Los blobs proporcionan [disponibilidad de datos](/developers/docs/data-availability/#data-availability-and-layer-2-rollups) para las soluciones L2. Se introdujeron en la [anterior actualización de red](/roadmap/dencun/).
+
+Actualmente, la red apunta a un promedio de 3 blobs por bloque, con un máximo de 6 blobs. Con [EIP-7691](https://eips.ethereum.org/EIPS/eip-7691), el promedio de blobs aumentará a 6, con un máximo de 9 por bloque, lo que supondrá un aumento de la capacidad de los rollups de Ethereum. Esta EIP salva la brecha hasta que [PeerDAS](https://eips.ethereum.org/EIPS/eip-7594) permita un número aún mayor de blobs.
+
+### Aumento del coste de datos de llamada{#7623}
+
+Antes de la introducción de [blobs en la actualización Dencun](/roadmap/danksharding), las capas 2 utilizaban [calldata](/developers/docs/data-availability/blockchain-data-storage-strategies/#calldata) para almacenar sus datos en Ethereum. Ambos, los blobs y los calldata, afectan al uso del ancho de banda de Ethereum. Aunque la mayoría de los bloques solo utilizan una cantidad mínima de calldata, los bloques con gran volumen de datos que también contienen muchos blobs pueden ser perjudiciales para la red p2p de Ethereum.
+
+Para solucionarlo, la [EIP-7623](https://eips.ethereum.org/EIPS/eip-7623) aumenta el coste de los calldata, pero solo para transacciones con un gran volumen de datos. Esto limita el tamaño máximo de los bloques, incentiva a las redes Capa 2 a solo utilizar blobs y evita que más del 99 % de las transacciones se vean afectadas.
+
+### Salidas activables de la capa de ejecución {#7002}
+
+Actualmente, salir de un validador y [retirar ETH apostados](/staking/withdrawals/) es una operación de la capa de consenso que requiere una clave de validador activa, la misma clave BLS la usa el validador para hacer tareas activas como las certificaciones. Las credenciales de retirada son una clave en fría independiente que recibe la participación retirada, pero que no puede activar la salida. La única forma en que los participantes pueden salir es enviando un mensaje especial a la red de cadena de bloques firmado con la clave de validador activa. Esto es una limitación en situaciones en las que las credenciales de retirada y la clave de validación están en manos de entidades diferentes o cuando se pierde la clave de validación.
+
+La [EIP-7002](https://eips.ethereum.org/EIPS/eip-7002) introduce un nuevo contrato que se puede utilizar para activar la salida utilizando credenciales de retirada de la capa de ejecución. Los participantespodrán salir de su validador activando a una función en este contrato especial sin necesidad de su clave de firma del validador ni de acceso a la cadena de baliza. Es importante destacar que habilitar las retirasas de validadores en la cadena de bloques permite la creación de protocolos de participación que requieren un menor nivel de confianza en los operadores de nodos.
+
+### Depósitos de validadores en la cadena {#6110}
+
+Los depósitos de los validadores actualmente se procesan mediante [eth1data poll](https://eth2book.info/capella/part2/deposits-withdrawals/deposit-processing/), una función de la cadena de baliza que obtiene datos de la capa de ejecución. Es una especie de deuda técnica anterior a la Fusión, cuando la cadena de baliza era una red independiente y se ocupaba de reorganizar las pruebas de trabajo.
+
+La EIP-6110](https://eips.ethereum.org/EIPS/eip-6110) es una nueva forma de enviar depósitos desde la capa de ejecución a la capa de consenso, lo que permite un procesamiento instantáneo con menos complejidad de implementación. Es un método más seguro para manejar los depósitos nativos de Ethereum fusionado. Además, ayuda a preparar el protocolo para el futuro, ya que no requiere depósitos históricos para inicializar el nodo, lo cual es necesario para el vencimiento del historial.
+
+### Precompilado para BLS12-381 {#2537}
+
+Los precompilados son un conjunto especial de contratos inteligentes incorporados directamente en la máquina virtual de Ethereum ([EVM](/developers/docs/evm/)). A diferencia de los contratos regulares, los precompilados no los despliegan los usuarios, sino que forman parte de la implementación del cliente, escritos en su lenguaje nativo (por ejemplo, Go, Java, etc., no Solidity). Los precompilados sirven para funciones ampliamente utilizadas y estandarizadas, como las operaciones criptográficas. Los desarrolladores de contratos inteligentes pueden llamar a los precompilados como a un contrato regular, pero con mayor seguridad y eficiencia.
+
+La [EIP-2537](https://eips.ethereum.org/EIPS/eip-2537) agrega nuevos precompilados para operaciones sobre la curva [BLS12-381](https://hackmd.io/@benjaminion/bls12-381). Esta curva elíptica se ha vuelto ampliamente utilizada en los ecosistemas de criptomonedas gracias a sus propiedades prácticas. Más específicamente, ha sido adoptada por la capa de consenso de Ethereum, donde la utilizan los validadores.
+
+El nuevo precompilado permite que cualquier desarrollador realice de manera fácil, eficiente y segura operaciones criptográficas usando esta curva, por ejemplo, la verificación de firmas. Las aplicaciones en la cadena de bloques que dependen de esta curva pueden volverse más eficientes en gas y seguras al apoyarse en un precompilado en lugar de un contrato personalizado. Esto se aplica principalmente a las aplicaciones que requieren interactuar con validadores dentro de la EVM, por ejemplo, pools de staking, [restaking](/restaking/), clientes ligeros, puentes y también de conocimiento cero.
+
+### Obtener hashes de bloques históricos desde el estado {#2935}
+
+Actualmente, la EVM proporciona el código operativo BLOCKHASH, que permite a los desarrolladores de contratos obtener el hash de un bloque directamente en la capa de ejecución. Sin embargo, esto está limitado únicamente a los últimos 256 bloques y podría presentar problemas a los clientes sin estado en el futuro.
+
+La [EIP-2935](https://eips.ethereum.org/EIPS/eip-2935) crea un nuevo contrato de sistema que puede proporcionar los hashes de los últimos 8192 bloques como ranuras de almacenamiento. Esto ayuda a preparar el protocolo para una ejecución sin estado y se vuelve más eficiente cuando se adopten los Verkle Tries. Además de esto, los rollups pueden beneficiarse de inmediato, ya que pueden consultar el contrato directamente con una ventana histórica más amplia.
+
+### Mover el índice del comité fuera de la certificación {#7549}
+
+El consenso de la cadena de bloques se basa en que los validadores emitan sus votos sobre el último bloque y la época finalizada. La certificación incluye 3 elementos: 2 de ellos son votos y el tercero es el valor del índice del comité.
+
+La EIP-7549](https://eips.ethereum.org/EIPS/eip-7549) mueve este índice fuera del mensaje de certificación firmado, lo que facilita la verificación y agregación de los votos de consenso. Esto permitirá una mayor eficiencia en todos los clientes de consenso y puede aportar mejoras significativas de rendimiento en los circuitos de conocimiento cero utilizados para probar el consenso de Ethereum.
+
+### Agregar el cronograma de blobs a los archivos de configuración de la capa de ejecución {#7840}
+
+La [EIP-7840](https://eips.ethereum.org/EIPS/eip-7840) es un cambio sencillo que añade un nuevo campo a la configuración del cliente de la capa de ejecución. Configura el número de bloques, permitiendo establecer de forma dinámica los conteos objetivo y máximo de blobs por bloque, así como el ajuste de las tarifas de blobs. Con esta configuración definida directamente, los clientes pueden evitar la complejidad de intercambiar esta información a través de la Engine API.
+
+
+
+
+Para obtener más información sobre cómo Pectra puede afectarle como usuario, desarrollador o validador de Ethereum, consulte las Preguntas frecuentes sobre Pectra.
+
+
+
+
+## ¿Afecta esta actualización a todos los nodos y validadores de Ethereum? {#client-impact}
+
+Sí, la actualización Pectra requiere actualizar los [clientes de ejecución y clientes de consenso](/developers/docs/nodes-and-clients/). Todos los principales clientes de Ethereum lanzarán versiones compatibles con la bifurcación dura marcada como alta prioridad. Para mantener la sincronización con la red de Ethereum posactualización, los operadores de nodos deben asegurarse de que están ejecutando una versión de cliente compatible. Tenga en cuenta que la información sobre las versiones de los clientes es sensible al tiempo, y los usuarios deben consultar las últimas actualizaciones para obtener los últimos detalles.
+
+## ¿Cómo se puede convertir ETH después de la bifurcación dura? {#scam-alert}
+
+- **No se requiere ninguna acción para su ETH**: Después de la actualización Pectra de Ethereum, no hay necesidad de convertir o actualizar su ETH. Los saldos de su cuenta seguirán siendo los mismos, y el ETH que tiene actualmente seguirá siendo accesible en su forma existente después de la bifurcación dura.
+- **¡Cuídese de fraudes!** **Cualquiera que le indique que "actualice" su ETH está tratando de estafarlo.** No hay nada que tenga que hacer en relación con esta actualización. Sus activos no se verán afectados en absoluto. Recuerde, mantenerse informado es la mejor defensa contra las estafas.
+
+[Más sobre el reconocimiento y la prevención de estafas](/security/)
+
+## ¿Retiene usted mejor las cosas cuando las ve? {#visual-learner}
+
+
+
+_¿Qué implica la actualización de Pectra? Christine Kim_
+
+
+
+_Actualización Pectra de Ethereum: lo que los participantes deben saber, Blockdaemon_
+
+## Lecturas adicionales {#further-reading}
+
+- [Hoja de ruta de Ethereum](/roadmap/)
+- [Preguntas frecuentes sobre Pectra](https://epf.wiki/#/wiki/pectra-faq)
+- [Página de información pectra.wtf](https://pectra.wtf)
+- [Cómo Pectra mejora la experiencia de los participantes ](https://www.kiln.fi/post/next-ethereum-upgrade-how-pectra-will-enhance-the-staking-experience)
+- [Página de información de EIP7702](https://eip7702.io/)
+- [Redes de desarrollo Pectra](https://github.com/ethereum/pm/blob/master/Pectra/pectra-pm.md)
From fbd6aa949724739cef308558707cc0ce340532ef Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:53 -0300
Subject: [PATCH 086/589] update(i18n):
public/content/translations/es/roadmap/dencun/index.md
---
public/content/translations/es/roadmap/dencun/index.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/public/content/translations/es/roadmap/dencun/index.md b/public/content/translations/es/roadmap/dencun/index.md
index e1364fa88c6..467e9f3e4ab 100644
--- a/public/content/translations/es/roadmap/dencun/index.md
+++ b/public/content/translations/es/roadmap/dencun/index.md
@@ -68,9 +68,9 @@ Sí, Proto-Danksharding (EIP-4844) requiere actualizaciones tanto para los clien
Los clientes de consenso manejan el software _Validador_, que se ha actualizado para dar lugar a la actualización.
-## ¿Cómo afecta Cancun-Deneb (Dencun) a Goerli u otras redes de prueba de Ethereum? {#testnet-impact}
+## ¿Cómo afecta Cancun-Deneb (Dencun) a las redes de prueba de Ethereum? {#testnet-impact}
-- Devnets, Goerli, Sepolia y Holesky se han sometido a la actualización Dencun y tienen Proto-Danksharding en pleno funcionamiento.
+- Las redes de prueba, Sepolia y Holesky se han sometido todas a la actualización Dencun y tienen Proto-Danksharding en pleno funcionamiento
- Los desarrolladores de rollups pueden usar estas redes para las pruebas EIP-4844.
- La mayoría de los usuarios no se verán para nada afectados por este cambio en cada red de prueba.
@@ -99,7 +99,7 @@ El hecho de ser compatible con la máquina virtual de Ethereum (EVM) no signific
[Más información sobre los rollups de Capa 2](/layer-2/)
-## ¿Es más bien de los que aprende viendo? {#visual-learner}
+## ¿Retiene usted mejor las cosas cuando las ve? {#visual-learner}
From c26fec12dca61b2ffafa407ff4571be5eb7f88cf Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:55 -0300
Subject: [PATCH 087/589] update(i18n):
public/content/translations/es/smart-contracts/index.md
---
.../translations/es/smart-contracts/index.md | 38 +++++++++++--------
1 file changed, 23 insertions(+), 15 deletions(-)
diff --git a/public/content/translations/es/smart-contracts/index.md b/public/content/translations/es/smart-contracts/index.md
index 85b1e939ccc..64ff6f9f8f2 100644
--- a/public/content/translations/es/smart-contracts/index.md
+++ b/public/content/translations/es/smart-contracts/index.md
@@ -1,17 +1,21 @@
---
title: Contratos inteligentes
-metaTitle: "Contratos inteligentes: Qué son y sus beneficios"
+metaTitle: "Contratos inteligentes: Qué son y cuáles son sus beneficios."
description: Una introducción sin tecnicismos a los contratos inteligentes
lang: es
---
# Introducción a los contratos inteligentes {#introduction-to-smart-contracts}
-Los contratos inteligentes son los bloques de construcción fundamentales de la capa de aplicación de Ethereum. Se trata de programas computacionales almacenados en la [cadena de bloques](/glossary/#blockchain) que siguen la lógica "si ocurre esto, entonces ocurre aquello". Los programas garantizan ejecutarse siguiendo las reglas definidas por su propio código, las cuales no se pueden cambiar una vez que fueron creadas.
+
+
+
-Nick Szabo acuñó el término «contrato inteligente». En 1994, escribió [una introducción al concepto](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html), y en 1996 escribió [una exploración de lo que podrían hacer los contratos inteligentes](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html).
+Los contratos inteligentes son los bloques de construcción fundamentales de la capa de aplicación de Ethereum. Son programas informáticos almacenados en la [blockchain](/glossary/#blockchain) que siguen una lógica "si esto, entonces aquello", y cuya ejecución está garantizada según las reglas definidas por su código, las cuales no pueden cambiarse una vez creado.
-Szabo imaginó un mercado digital donde procesos autómaticos y [criptográficamente seguros](/glossary/#cryptography) permitieran realizar transacciones y negocios sin la necesidad de intermediarios de confianza. Los contratos inteligentes en Ethereum ponen esta visión en práctica.
+Nick Szabo acuñó el término «contrato inteligente». En 1994, escribió [una introducción al concepto](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html), y en 1996 escribió [una exploración sobre lo que los contratos inteligentes podrían hacer](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html).
+
+Szabo imaginó un mercado digital donde procesos automáticos y [criptográficamente seguros](/glossary/#cryptography) permiten la realización de transacciones y funciones comerciales sin intermediarios de confianza. Los contratos inteligentes en Ethereum ponen esta visión en práctica.
Mire en este vídeo cómo Finematics explica los contratos inteligentes:
@@ -61,22 +65,26 @@ Los contratos inteligentes también protegen su privacidad. Puesto que Ethereum
Finalmente, así como con los contratos tradicionales, usted puede verificar el contenido de un contrato inteligente antes de firmarlo (o alternativamente, interactuar con él). La transparencia de un contato inteligente garantiza que cualquiera pueda examinarlo.
-## Casos de uso de contratos inteligentes {#use-cases}
+## Casos de uso de los contratos inteligentes {#use-cases}
Los contratos inteligentes básicamente pueden hacer lo mismo que otros programas informáticos.
-Pueden realizar cómputos, crear divisas, almacenar datos, mintear [NFT](/glossary/#nft), enviar comunicaciones e incluso generar gráficos. He aquí algunos ejemplos populares sacados del mundo real:
+Pueden realizar cálculos, crear monedas, almacenar datos, acuñar [NFTs](/glossary/#nft), enviar comunicaciones e incluso generar gráficos. He aquí algunos ejemplos populares sacados del mundo real:
-- [Monedas estables](/stablecoins/)
-- [Crear y distribuir activos digitales únicos](/nft/)
-- [Un cambio de divisas automático y abierto](/get-eth/#dex)
+- [Stablecoins](/stablecoins/)
+- [Creación y distribución de activos digitales únicos](/nft/)
+- [Un intercambio de divisas abierto y automático](/get-eth/#dex)
- [Juegos descentralizados](/apps/categories/gaming)
-- [Una póliza de seguro que paga automáticamente](https://etherisc.com/)
-- [Un estándar que permite a las personas crear divisas interoperables y personalizadas](/developers/docs/standards/tokens/)
+- [Una póliza de seguro que paga de forma automática](https://etherisc.com/)
+- [Un estándar que permite a las personas crear monedas personalizadas e interoperables](/developers/docs/standards/tokens/)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [¿Cómo cambiarán el mundo los contratos inteligentes?](https://www.youtube.com/watch?v=pA6CGuXEKtQ)
+- [Cómo los contratos inteligentes cambiarán el mundo](https://www.youtube.com/watch?v=pA6CGuXEKtQ)
- [Contratos inteligentes para desarrolladores](/developers/docs/smart-contracts/)
-- [Aprenda a redactar contratos inteligentes](/developers/learning-tools/)
-- [Dominar Ethereum: ¿Qué es un contrato inteligente?](https://github.com/ethereumbook/ethereumbook/blob/openedition/07smart-contracts-solidity.asciidoc#what-is-a-smart-contract)
+- [Aprenda a programar contratos inteligentes](/developers/learning-tools/)
+- [Mastering Ethereum - ¿Qué es un contrato inteligente?](https://github.com/ethereumbook/ethereumbook/blob/openedition/07smart-contracts-solidity.asciidoc#what-is-a-smart-contract)
+
+
+
+
From 89970a58ee2192891574b761e9e435f62c1f978a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:57 -0300
Subject: [PATCH 088/589] update(i18n):
public/content/translations/es/roadmap/scaling/index.md
---
.../translations/es/roadmap/scaling/index.md | 28 ++++++++++---------
1 file changed, 15 insertions(+), 13 deletions(-)
diff --git a/public/content/translations/es/roadmap/scaling/index.md b/public/content/translations/es/roadmap/scaling/index.md
index 778e7e78d45..e217f6c7266 100644
--- a/public/content/translations/es/roadmap/scaling/index.md
+++ b/public/content/translations/es/roadmap/scaling/index.md
@@ -1,13 +1,13 @@
---
title: Escalar en Ethereum
-description: Las acumulaciones agrupan transacciones en lotes y lo hacen fuera de la cadena, reduciendo costes para el usuario. Sin embargo, la forma en que los rollups usan datos actualmente es muy costosa, limitando cuán baratas pueden ser las transacciones. Proto-anksharing se encarga de solucionarlo.
+description: Los rollups agrupan transacciones fuera de cadena, reduciendo los costes para el usuario. Sin embargo, la forma en que los rollups usan datos actualmente es muy costosa, limitando cuán baratas pueden ser las transacciones. Proto-anksharing se encarga de solucionarlo.
lang: es
image: /images/roadmap/roadmap-transactions.png
alt: "Hoja de ruta de Ethereum"
template: roadmap
---
-Ethereum escala utilizando las [capas 2](/layer-2/#rollups) (también conocidas como acumulaciones o «rollups»), que agrupan transacciones y envían el resultado a Ethereum. Aunque las acumulaciones son hasta ocho veces más baratas que la red principal de Ethereum, es posible optimizarlas aún más para reducir costes para los usuarios finales. Las acumulaciones dependen de algunos componentes centralizados que los desarrolladores podrán eliminar en la medida en que dichas acumulaciones maduren.
+Ethereum se escala utilizando [capa 2](/layer-2/#rollups) (también conocidas como rollups), que agrupan transacciones y envían el resultado a Ethereum. Aunque las acumulaciones son hasta ocho veces más baratas que la red principal de Ethereum, es posible optimizarlas aún más para reducir costes para los usuarios finales. Las acumulaciones dependen de algunos componentes centralizados que los desarrolladores podrán eliminar en la medida en que dichas acumulaciones maduren.
@@ -23,34 +23,36 @@ Ethereum escala utilizando las [capas 2](/layer-2/#rollups) (también conocidas
-## Abaratar los datos {#making-data-cheaper}
+## Haciendo que los datos sean más baratos {#making-data-cheaper}
Las acumulaciones agrupan un gran número de transacciones, las ejecutan y envían los resultados a Ethereum. Esto genera una gran cantidad de datos que necesitan estar disponibles para todos, de forma que cualquiera pueda ejecutar las transacciones por sí mismo y verificar que el operador de la acumulación ha actuado con honestidad. Si alguien encuentra una discrepancia, puede denunciarla.
-### ProtoDanksharding {#proto-danksharding}
+### Proto-Danksharding {#proto-danksharding}
Históricamente, los datos de rollups se han almacenado en Ethereum de forma permanente, lo que resulta caro. Más del 90 % del coste de la transacción que los usuarios pagan en las acumulaciones se debe a este almacenamiento de datos. Para reducir los costes de las transacciones, podemos trasladar los datos a un nuevo almacenamiento temporal masivo. Las masas de datos son más baratas, ya que no son permanentes; se eliminan de Ethereum una vez que ya no se necesitan. El almacenamiento de datos de rollups a largo plazo pasa a ser responsabilidad de las personas que lo necesitan, como operadores de rollup, exchanges, servicios de indexación, etc. Añadir transacciones masivas a Ethereum es parte de una actualización conocida como «ProtoDanksharding».
-Con Proto-Danksharding, es posible añadir muchos blobs a los bloques de Ethereum. Esto permite aumentar considerablemente (>100 veces) la velocidad de procesamiento de Ethereum y reducir los costos de transacción.
+Con Proto-Danksharding, es posible añadir muchos blobs a los bloques de Ethereum. Esto permite otra expansión sustancial (>100x) en la capacidad de procesamiento de Ethereum y una reducción significativa en los costos de transacción.
### Danksharding {#danksharding}
-La segunda fase de expansión de los datos de blobs es complicada porque requiere nuevos métodos para comprobar si los datos de los rollups están disponibles en la red y depende de que se puedan separar las responsabilidades de los [validadores](/glossary/#validator) de construcción de [bloques](/glossary/#block) y propuesta de bloques. También requiere una forma de demostrar criptográficamente que los validadores han verificado pequeños subconjuntos de los datos masivos.
+La segunda etapa de expansión de los datos de blob es complicada porque requiere nuevos métodos para verificar que los datos de los rollups estén disponibles en la red y depende de que los [validadores](/glossary/#validator) separen sus responsabilidades de construcción de [bloques](/glossary/#block) y de propuesta de bloques. También requiere una forma de demostrar criptográficamente que los validadores han verificado pequeños subconjuntos de los datos masivos.
-Este segundo paso es conocido como [«Danksharding»](/roadmap/danksharding/). **Es probable que demore varios años** en implementarse completamente. Danksharding se basa en otros desarrollos como [separar la construcción y la propuesta de bloques](/roadmap/pbs) y nuevos diseños de red que permitan a la red confirmar eficientemente que los datos están disponibles, muestreando aleatoriamente unos cuantos kilobytes cada vez, lo que se denomina [muestreo de disponibilidad de datos (DAS)](/developers/docs/data-availability).
+Este segundo paso se conoce como ["Danksharding"](/roadmap/danksharding/). El trabajo de implementación sigue en marcha, avanzando con los requisitos previos como la [separación de la construcción y propuesta de bloques](/roadmap/pbs) y nuevos diseños de red que permiten a la red confirmar de manera eficiente que los datos están disponibles mediante el muestreo aleatorio de unos pocos kilobytes a la vez, conocido como [muestreo de disponibilidad de datos (DAS)](/developers/docs/data-availability).
-Más información sobre la fragmentación.
+Más sobre Danksharding
-## Descentralizar las acumulaciones {#decentralizing-rollups}
+## Descentralizando los rollups {#decentralizing-rollups}
-Las [acumulaciones](/layer-2) ya están escalando en Ethereum. Un ecosistema rico en [proyectos sobre acumulaciones](https://l2beat.com/scaling/tvl) permite que los usuarios hagan una transacción rápida y económica, con un rango de garantías de seguridad. Sin embargo, las acumulaciones se han implementado inicialmente utilizando secuenciadores centralizados (ordenadores que realizan todo el procesamiento de transacciones y la agregación antes de enviarlas a Ethereum). Esto los hace vulnerables a la censura, porque los operadores de los secuenciadores pueden ser sancionados, sobornados o verse expuestos a riesgos. Al mismo tiempo, [las acumulaciones se diferencian](https://l2beat.com) en la forma en que validan los datos entrantes. La mejor forma es que los «provers» presenten [pruebas de fraude](/glossary/#fraud-proof) o pruebas de validez, pero no todos los rollups están a ese nivel. Incluso aquellas acumulaciones que utilizan pruebas de validez/fraude utilizan un pequeño grupo de probadores conocidos. Por lo tanto, el siguiente paso crítico en la escalabilidad de Ethereum es distribuir la responsabilidad de ejecutar secuenciadores y probadores entre más personas.
+[Los rollups](/layer-2) ya están escalando Ethereum. Un rico ecosistema de [proyectos de rollups](https://l2beat.com/scaling/tvs) permite que los usuarios realicen transacciones de manera rápida y económica, con una serie de garantías de seguridad. Sin embargo, las acumulaciones se han implementado inicialmente utilizando secuenciadores centralizados (ordenadores que realizan todo el procesamiento de transacciones y la agregación antes de enviarlas a Ethereum). Esto los hace vulnerables a la censura, porque los operadores de los secuenciadores pueden ser sancionados, sobornados o verse expuestos a riesgos. Al mismo tiempo, [los rollups varían](https://l2beat.com/scaling/summary) en la forma en que validan los datos entrantes. La mejor manera es que los "provers" presenten [pruebas de fraude](/glossary/#fraud-proof) o pruebas de validez, pero no todos los rollups han llegado a ese punto todavía. Incluso aquellas acumulaciones que utilizan pruebas de validez/fraude utilizan un pequeño grupo de probadores conocidos. Por lo tanto, el siguiente paso crítico en la escalabilidad de Ethereum es distribuir la responsabilidad de ejecutar secuenciadores y probadores entre más personas.
-Más información sobre las acumulaciones.
+Más sobre los rollups
## Progreso actual {#current-progress}
-Proto-Danksharding es el primero de estos elementos de la hoja de ruta que se implementarán como parte de la actualización de la red Cancun-Deneb ("Dencun") en marzo de 2024. **El Danksharding completo probablemente no vea la luz en varios años**, ya que depende de que antes se completen varios otros elementos de la hoja de ruta. Descentralizar la infraestructura de acumulaciones seguramente será un proceso gradual: hay muchas acumulaciones distintas que están construyendo sistemas ligeramente diferentes y se descentralizarán totalmente a diferentes velocidades.
+ProtoDanksharding se implementó con éxito como parte de la actualización de red Cancun-Deneb ("Dencun") en marzo de 2024. Desde su implementación, los rollups han empezado a utilizar almacenamiento de blobs, dando como resultado una reducción en los costes de transacción para usuarios y millones de transacciones procesadas en blobs.
-[Más sobre la actualización de la red de Dencun](/roadmap/dencun/)
+Continúa la labor de implementación completa de Danksharding, con avances en sus prerrequisitos, como la separación del creador de propuestas (PBS en inglés) y muestreo de disponibilidad de datos (DAS en inglés). Descentralizar la infraestructura de rollups es un proceso paulatino —hay muchas rollups diferentes que están construyendo sistemas ligeramente diferentes y descentralizarán de forma completa a diferentes velocidades—.
+
+[Más sobre la actualización de red Dencun y su impacto](/roadmap/dencun/)
From 5921276ea200274aa9728aaeadb003fcba3c6f29 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:47:58 -0300
Subject: [PATCH 089/589] update(i18n):
public/content/translations/es/community/events/index.md
---
.../translations/es/community/events/index.md | 34 +++++++++++++------
1 file changed, 23 insertions(+), 11 deletions(-)
diff --git a/public/content/translations/es/community/events/index.md b/public/content/translations/es/community/events/index.md
index 8b2c61983d6..dfcecda88bd 100644
--- a/public/content/translations/es/community/events/index.md
+++ b/public/content/translations/es/community/events/index.md
@@ -1,26 +1,38 @@
---
-title: Eventos de Ethereum
-description: Cómo involucrarse en la comunidad Ethereum.
+title: Descubra eventos y centros comunitarios
+description: Cómo participar en la comunidad Ethereum.
lang: es
hideEditButton: true
---
-# Próximos eventos {#events}
+# Descubra eventos y centros comunitarios {#discover-community-events-and-community-hubs}
-**Cada mes, se celebran grandes eventos de Ethereum en todo el mundo.** Plantéese asistir a alguno cerca suyo para conocer a más gente en la comunidad, aprender sobre oportunidades de empleo y desarrollar nuevas habilidades.
+Ethereum cobra vida a través de las personas, desde pequeñas reuniones y encuentros comunitarios hasta grandes conferencias, hackatones y centros comunitarios permanentes que anclan los ecosistemas locales en todo el mundo.
-
+Cada día de trabajo conjunto, reunión o evento es una oportunidad para aprender algo nuevo, conocer a gente con ideas afines, compartir ideas y colaborar en proyectos reales que dan forma a nuestro futuro. Tanto si es un desarrollador, investigador, diseñador o simplemente un curioso, siempre hay un lugar para que usted se conecte, contribuya y crezca.
-Esta es una lista no exhaustiva mantenida por nuestra comunidad. ¿Sabe de algún evento próximo de Ethereum para añadir a esta lista? [¡Por favor, añádalo](https://github.com/ethereum/ethereum-org-website/blob/dev/src/data/community-events.json)!
+💡 ¿Quiere organizar un evento o tiene una idea comunitaria en mente? ¡Póngase en contacto con el equipo de Ethereum Everywhere para obtener asistencia! → [Póngase en contacto aquí](https://docs.google.com/forms/d/e/1FAIpQLSeA-W8iy2PJxrY3TD4lMYXyky_wLd4QB_7NRwqSxCd0e19MUg/viewform)
-
+¿Quiere descubrir eventos de Ethereum o centros comunitarios en su zona? ¡Eche un vistazo a los listados a continuación para encontrar su próxima reunión, día de trabajo conjunto o encuentro!
+
+## Centros comunitarios de Ethereum {#ethereum-community-hubs}
+
+Los centros comunitarios de Ethereum son espacios permanentes e inclusivos que funcionan como zonas de trabajo conjunto, acogen eventos regulares y sirven como centros de innovación y conocimiento que fomentan la colaboración y construyen ecosistemas locales fuertes e interconectados.
+
+Tanto si es un local, nómada digital o residente temporal, puede unirse a sesiones de trabajo conjunto, talleres y reuniones, descubrir oportunidades o incluso organizar su propio evento. Cada centro comunitario tiene su propio proceso de registro; puede encontrar más información y enlaces a continuación.
+
+
-## Encuentros sobre Ethereum {#meetups}
+## Eventos de la comunidad de Ethereum {#ethereum-community-events}
+
+
+
+Esta es una lista no exhaustiva mantenida por nuestra comunidad. ¿Sabe de algún evento próximo de Ethereum para añadir a esta lista?[¡Por favor, agréguelo!](https://github.com/ethereum/ethereum-org-website/blob/dev/src/data/community-events.json)
+
+## Encuentros de Ethereum {#meetups}
¿No ve ningún evento que le venga bien? Intente asistir a un encuentro. Los encuentros son eventos más pequeños celebrados por grupos de entusiastas de Ethereum, es decir, son una oportunidad para que las personas interesadas en Ethereum se reúnan, hablen acerca de Ethereum y se enteren de las últimas novedades.
-¿Le interesaría organizar su propio encuentro? Eche un vistazo a [BUIDL Network](https://consensys.net/developers/buidlnetwork/): una iniciativa de ConsenSys para ayudar a apoyar a las comunidades de encuentros de Ethereum.
-
-Esta es una lista no exhaustiva mantenida por nuestra comunidad. Aquí [encontrará más información sobre los encuentros de Ethereum](https://www.meetup.com/topics/ethereum/). ¿Sabe de algún un grupo de encuentros activo para añadir a esta lista? [¡Por favor, añádalo!](https://github.com/ethereum/ethereum-org-website/blob/dev/src/data/community-meetups.json)
+
From 0d3d19b6a618e04269cf47f2d17657031be52fbd Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:00 -0300
Subject: [PATCH 090/589] update(i18n):
public/content/translations/es/community/online/index.md
---
.../translations/es/community/online/index.md | 55 ++++++++++---------
1 file changed, 30 insertions(+), 25 deletions(-)
diff --git a/public/content/translations/es/community/online/index.md b/public/content/translations/es/community/online/index.md
index d458625f123..5cd2e5be5cc 100644
--- a/public/content/translations/es/community/online/index.md
+++ b/public/content/translations/es/community/online/index.md
@@ -1,6 +1,6 @@
---
title: Comunidades en línea
-description: Un listado de los programas de subvención entregados a través del ecosistema de Ethereum.
+description: Descubra foros de internet, salas de chat y comunidades de redes sociales donde se reúnen los amantes de Ethereum para comentar y colaborar.
lang: es
---
@@ -8,43 +8,48 @@ lang: es
Cientos de miles de entusiastas de Ethereum se reúnen en estos foros en línea para compartir noticias, hablar de desarrollos recientes, debatir cuestiones técnicas e imaginar el futuro.
+## Política de listado {#listing-policy}
+
+Para mantener la integridad y valor de las comunidades registradas, ethereum.org sigue una politica estricta para determinar la seleccion:
+
+### Criterios de elegibilidad {#eligibility-criteria}
+
+- **Relevancia**: La comunidad debe estar directamente relacionada con Ethereum y su ecosistema.
+- **Nivel de actividad**: La comunidad debe estar activa, con interacciones, publicaciones o discusiones regulares. Las comunidades inactivas se pueden eliminar.
+- **Inclusividad**: La comunidad debe fomentar un ambiente acogedor que respete la diversidad y anime a la participación de personas de todos los orígenes.
+- **Enfoque no comercial**: Los listados están pensados para espacios impulsados por la comunidad en vez de plataformas comerciales o promocionales.
+
+### Directrices de contenido {#content-guidelines}
+
+- **Contenido apropiado**: Las comunidades deben tener sus propias directrices de moderación, evitando el spam, discurso de odio, acoso, o cualquier contenido que promueva actividades ilegales.
+- **Idioma**: Aunque el inglés es el idioma principal, se anima a que comunidades en otros idiomas sean incluidas, siempre que mantengan un ambiente inclusivo y respetuoso.
+- **Transparencia**: Debe haber información clara sobre el propósito de la comunidad, sus reglas y moderadores disponible para los miembros.
+
+### Otras recomendaciones {#other-recommendations}
+
+- **Accesibilidad**: Los foros de la comunidad deben ser accesibles para que cualquier persona pueda leerlos sin necesidad de registrarse o crear una cuenta.
+- **Invitaciones a servidores de Discord**: Se recomienda que solo se agreguen invitaciones confiables a servidores de Discord en ethereum.org. Idealmente, estas invitaciones deberían enlazar a una página de la comunidad en el sitio web (por ejemplo, [ethglobal.com/discord](https://ethglobal.com/discord)) o provenir de una URL oficial (por ejemplo, [discord.gg/ethstaker](https://discord.gg/ethstaker) o [discord.com/invite/ethstaker](https://discord.com/invite/ethstaker)).
+
+Si considera que debería añadirse o eliminarse una comunidad en función de estas directrices, por favor [abra un issue en nuestro repositorio de GitHub](https://github.com/ethereum/ethereum-org-website/issues).
+
## Foros {#forums}
-r/ethereum : todo lo relacionado con Ethereum
-r/ethfinance : el lado financiero de Ethereum, incluidas las DeFi
-r/ethdev : foco puesto en el desarollo de Ethereum
-r/ethtrader : tendencias y análisis de mercado
-r/ethstaker: bienvenidos todos los interesados en las participaciones en Ethereum
-Programa de becas de Ethereum Magicians: un foro orientado a la comunidad en el que se debaten los estándares técnicos en Ethereum
-Ethereum Stackexchange: foro de debate y ayuda para desarrolladores de Ethereum
-Ethereum Research: el panel de mensajes más influyente para investigación criptoeconómica
+r/ethereum - todo sobre Ethereumr/ethfinance - el lado financiero de Ethereum, incluyendo DeFir/ethdev - enfocado en el desarrollo de Ethereumr/ethtrader - tendencias y análisis de mercador/ethstaker - bienvenidos todos los interesados en hacer staking en EthereumFellowship of Ethereum Magicians - comunidad orientada a los estándares técnicos en EthereumEthereum Stackexchange - discusiones y ayuda para desarrolladores de EthereumEthereum Research - el foro más influyente para la investigación criptoeconómica
## Salas de chat {#chat-rooms}
-Ethereum Cat Herders: chat orientado a la comunidad donde se ofrece apoyo a la gestión de proyectos de desarrollo de Ethereum
-Ethereum Hackers: un chat en Discord ejecutado por ETHGlobal: una comunidad en línea para los hackers de Ethereum repartidos por todo el mundo
-CryptoDevs: chat de Discord centrado en el desarrollo de Ethereum
-Discord de EthStaker: guía, educación, apoyo y recursos gestionados por la comunidad para participantes existentes y potenciales
-Equipo del sitio web Ethereum.org: pase por este chat y hable sobre el desarrollo y diseño del sitio web de ethereum.org web con el equipo encargado y con otros compañeros de la comunidad
-Matos Discord: comunidad de creadores web3 donde los constructores, los testaferros y los entusiastas de Ethereum se relacionan. Nos apasiona la cultura, el diseño y el desarrollo de la Web 3.0. Venga a construir con nosotros.
-Solidity Gitter: chat sobre el desarrollo de Solidity (Gitter)
-Solidity Matrix: chat sobre el desarrollo de Solidity (Matrix)
-Ethereum Stack Exchange *: foro de preguntas y respuestas*
-Peeranha *: foro descentralizado de preguntas y respuestas*
+Ethereum Cat Herders - comunidad orientada al soporte de gestión de proyectos para el desarrollo en EthereumEthereum Hackers - Chat de Discord administrado por ETHGlobal: una comunidad en línea para hackers de Ethereum de todo el mundoCryptoDevs - comunidad enfocada en el desarrollo de Ethereum en DiscordEthStaker Discord - orientación, educación, soporte y recursos gestionados por la comunidad para quienes hacen o desean hacer stakingEquipo de ethereum.org - únete y charla sobre desarrollo web y diseño de ethereum.org con el equipo y miembros de la comunidadMatos Discord - comunidad de creadores web3 donde constructores, líderes de la industria y entusiastas de Ethereum interactúan. Nos apasiona la cultura, el diseño y el desarrollo de la Web 3.0. Ven a construir con nosotros.Solidity Gitter - chat para el desarrollo en Solidity (Gitter)Solidity Matrix - chat para desarrollo en Solidity (Matrix)Ethereum Stack Exchange - foro de preguntas y respuestasPeera Community Forum - foro descentralizado de preguntas y respuestas
-## YouTube y Twitter {#youtube-and-twitter}
+## YouTube y X (antes Twitter) {#youtube-and-twitter}
-Ethereum Foundation: para estar al corriente de todas las novedades sobre Ethereum Foundation
-@ethereum: cuenta oficial de Ethereum Foundation
-@ethdotorg: el portal de Ethereum, creado para nuestra comunidad global cada vez más numerosa
-Lista de las cuentas influyentes de Ethereum en twitter
+Fundación Ethereum - Manténgase al día con las últimas novedades de la Fundación Ethereum@ethereum - Cuenta principal de la comunidad de Ethereum@ethereumfndn - Cuenta oficial de la Fundación Ethereum@ethdotorg - El portal a Ethereum, construido para nuestra creciente comunidad global
- Más información sobre las DAO
+ Más información sobre DAOs
From ae67f494372a74ecd8b7cc817a5090e19c2a3f1b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:01 -0300
Subject: [PATCH 091/589] update(i18n):
public/content/translations/es/roadmap/security/index.md
---
.../translations/es/roadmap/security/index.md | 36 +++++++++----------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/public/content/translations/es/roadmap/security/index.md b/public/content/translations/es/roadmap/security/index.md
index 1a8b04f18f3..7566e6ff56e 100644
--- a/public/content/translations/es/roadmap/security/index.md
+++ b/public/content/translations/es/roadmap/security/index.md
@@ -7,42 +7,42 @@ alt: "Hoja de ruta de Ethereum"
template: roadmap
---
-**Ethereum ya es una plataforma muy segura** y descentralizada de [contratos inteligentes](/glossary/#smart-contract). Sin embargo, aún pueden implementarse mejoras para que Ethereum siga siendo resistente a todo tipo de ataques en el futuro. Estas incluyen cambios sutiles en la forma en que [los clientes de Ethereum](/glossary/#consensus-client) lidian con los [bloques](/glossary/#block) en competencia, así como el aumento de la velocidad a la que la red considera que los bloques están ["finalizados"](/developers/docs/consensus-mechanisms/pos/#finality) (lo que significa que no se pueden cambiar sin pérdidas económicas extremas para un atacante).
+**Ethereum ya es una plataforma de [contratos inteligentes](/glossary/#smart-contract) muy segura** y descentralizada. Sin embargo, aún pueden implementarse mejoras para que Ethereum siga siendo resistente a todo tipo de ataques en el futuro. Esto incluye cambios sutiles en la forma en que los [clientes de Ethereum](/glossary/#consensus-client) gestionan bloques [competidores](/glossary/#block), así como también el aumento de la velocidad con la que la red considera los bloques como ["finalizados"](/developers/docs/consensus-mechanisms/pos/#finality) (es decir, que no pueden modificarse sin pérdidas económicas extremas para un atacante).
-También hay mejoras que dificultan mucho más la censura de transacciones al hacer que los proponentes de bloques desconozcan el contenido real de sus bloques, y nuevos métodos para identificar cuándo un cliente está censurando. En conjunto, estas mejoras actualizarán el protocolo de [prueba de participación](/glossary/#pos) (proof-of-stake) para que los usuarios, desde individuos hasta corporaciones, tengan confianza instantánea en sus aplicaciones, datos y activos en Ethereum.
+También hay mejoras que dificultan mucho más la censura de transacciones al hacer que los proponentes de bloques desconozcan el contenido real de sus bloques, y nuevos métodos para identificar cuándo un cliente está censurando. En conjunto, estas mejoras actualizarán el protocolo de [prueba de participación](/glossary/#pos) para que los usuarios, desde individuos hasta empresas, tengan confianza instantánea en sus aplicaciones, datos y activos en Ethereum.
-## Retiradas de participaciones {#staking-withdrawals}
+## Retiros de staking {#staking-withdrawals}
-La actualización de [prueba de trabajo](/glossary/#pow) (proof-of-work) a prueba de participación comenzó con los pioneros de Ethereum "apostando" su ETH en un contrato de depósito. Ese ETH se utiliza para proteger la red. Ha habido una segunda actualización el 12 de abril de 2023 para permitir la retirada del ETH apostado. Desde entonces, los validadores pueden participar o retirar libremente ETH.
+La actualización de [prueba de trabajo](/glossary/#pow) a prueba de participación comenzó con los pioneros de Ethereum "stakeando" su ETH en un contrato de depósito. Ese ETH se utiliza para proteger la red. Hubo una segunda actualización el 12 de abril de 2023 para permitir la retirada del ETH apostado. Desde entonces, los validadores pueden participar o retirar libremente ETH.
-Más información sobre retiradas
+Leer sobre los retiros
-## Defenderse contra ataques {#defending-against-attacks}
+## Defendiendo contra ataques {#defending-against-attacks}
-Hay mejoras que se pueden hacer en el protocolo de prueba de participación de Ethereum. Una se conoce como [view-merge](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739), un algoritmo de opción [fork](/glossary/#fork) más seguro que dificulta ciertos tipos sofisticados de ataque.
+Hay mejoras que se pueden hacer en el protocolo de prueba de participación de Ethereum. Una de ellas se conoce como [view-merge](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739), un algoritmo de elección de [bifurcación](/glossary/#fork) más seguro que dificulta ciertos tipos sofisticados de ataque.
-Reducir el tiempo que tarda Ethereum en [finalizar](/glossary/#finality) bloques proporcionaría una mejor experiencia de usuario y evitaría sofisticados ataques de "reorganización" en los que los atacantes intentan reorganizar bloques muy recientes para obtener ganancias o censurar ciertas transacciones. La [**finalidad de una sola ranura (SSF)**](/roadmap/single-slot-finality/) es una **forma de minimizar el retraso de finalización**. En la actualidad hay 15 minutos de bloques que, en teoría, un atacante podría convencer a otros validadores de que reconfiguren. Con SSF, hay 0. Los usuarios, desde individuos hasta aplicaciones e intercambios, se benefician de una rápida garantía de que sus transacciones no se revertirán, y la red se beneficia al acabar con toda clase de ataques.
+Reducir el tiempo que Ethereum tarda en [finalizar](/glossary/#finality) los bloques proporcionaría una mejor experiencia para el usuario y evitaría ataques sofisticados de "reorganización" ("reorg") en los que los atacantes intentan reordenar bloques muy recientes para obtener ganancias o censurar determinadas transacciones. [**Finalización por único intervalo (SSF)**](/roadmap/single-slot-finality/) es una **forma de minimizar el retraso en la finalización**. En la actualidad hay 15 minutos de bloques que, en teoría, un atacante podría convencer a otros validadores de que reconfiguren. Con SSF, hay 0. Los usuarios, desde individuos hasta aplicaciones e intercambios, se benefician de una rápida garantía de que sus transacciones no se revertirán, y la red se beneficia al acabar con toda clase de ataques.
-Más información sobre la finalidad de ranura única.
+Leer sobre la finalización por único intervalo
-## Defenderse contra la censura {#defending-against-censorship}
+## Defendiendo contra la censura {#defending-against-censorship}
-La descentralización evita que individuos o pequeños grupos de [validadores](/glossary/#validator) se vuelvan demasiado influyentes. Las nuevas tecnologías de participación pueden ayudar a garantizar que los validadores de Ethereum se mantengan lo más descentralizados posible, al tiempo que los defienden contra fallos de hardware, software y red. Esto incluye software que comparte las responsabilidades del validador en múltiples [nodos](/glossary/#node). Esto se conoce como **tecnología de validador distribuido (DVT)**. Los [grupos de participación](/glossary/#staking-pool) están incentivados a usar la DVT porque permite que varios ordenadores participen colectivamente en la validación, añadiendo redundancia y tolerancia a fallas. También divide las claves del validador en varios sistemas, en lugar de tener operadores individuales que ejecuten múltiples validadores. Esto hace que a los operadores deshonestos les resulte más difícil coordinar los ataques a Ethereum. En conjunto, la idea es obtener beneficios de seguridad ejecutando validadores como _comunidades_ en lugar de como individuos.
+La descentralización evita que individuos o pequeños grupos de [validadores](/glossary/#validator) sean demasiado influyentes. Las nuevas tecnologías de participación pueden ayudar a garantizar que los validadores de Ethereum se mantengan lo más descentralizados posible, al tiempo que los defienden contra fallos de hardware, software y red. Esto incluye software que distribuye las responsabilidades del validador entre múltiples [nodos](/glossary/#node). Esto se conoce como **tecnología de validador distribuido (DVT)**. Los [pools de staking](/glossary/#staking-pool) están incentivados a usar DVT porque permite que varias computadoras participen colectivamente en la validación, agregando redundancia y tolerancia a fallos. También divide las claves del validador en varios sistemas, en lugar de tener operadores individuales que ejecuten múltiples validadores. Esto hace que a los operadores deshonestos les resulte más difícil coordinar los ataques a Ethereum. En general, la idea es obtener beneficios de seguridad al ejecutar validadores como _comunidades_ y no como individuos.
-Lea acerca de la tecnología de validación distribuida
+Leer sobre la tecnología de validador distribuido
-La implementación de la **separación proponente-constructor (PBS)** mejorará drásticamente la defensa integrada de Ethereum contra la censura. PBS permite a un validador crear un bloque y a otro transmitirlo a través de la red Ethereum. Esto asegura que las ganancias de los algoritmos de maximización de ganancias profesionales de construcción de bloques se compartan de manera más justa en toda la red, **evitando que la participación se concentre** con los participantes institucionales de mejor rendimiento a lo largo del tiempo. El proponente de bloques puede seleccionar el bloque más rentable que le ofrece un mercado de constructores de bloques. Para censurar, un proponente de bloques a menudo tendría que elegir un bloque menos rentable, que sería **económicamente irracional y también obvio para el resto de los validadores** en la red.
+Implementar la **separación de proponentes y constructores (PBS)** mejorará drásticamente las defensas internas de Ethereum contra la censura. PBS permite a un validador crear un bloque y a otro transmitirlo a través de la red Ethereum. Esto asegura que las ganancias de los algoritmos profesionales de construcción de bloques que maximizan beneficios se compartan de manera más justa en toda la red, **evitando que el stake se concentre** en validadores institucionales de alto rendimiento con el tiempo. El proponente de bloques puede seleccionar el bloque más rentable que le ofrece un mercado de constructores de bloques. Para censurar, un proponente de bloque a menudo tendría que elegir un bloque menos rentable, lo cual sería **irracional económicamente y también obvio para el resto de los validadores** en la red.
Hay posibles complementos para PBS, como transacciones cifradas y listas de inclusión, que podrían mejorar aún más la resistencia a la censura de Ethereum. Esto hace que el constructor de bloques y el proponente no vean las transacciones reales incluidas en sus bloques.
-Más información acerca de la separación entre proponentes y constructores.
+Leer sobre la separación de proponentes y constructores
-## Proteger a los validadores {#protecting-validators}
+## Protegiendo a los validadores {#protecting-validators}
-Es posible que un atacante sofisticado pueda identificar a los próximos validadores y enviarles correo basura para evitar que propongan bloques; esto se conoce como un ataque de **denegación de servicio (DoS)**. La implementación de [**elección de líder secreto (SLE)**](/roadmap/secret-leader-election) protegerá contra este tipo de ataque al evitar que los proponentes de bloques sean conocidos de antemano. Esto funciona mezclando continuamente un conjunto de compromisos criptográficos que representan a los proponentes de bloques candidatos y utilizando su orden para determinar qué validador se selecciona, de tal manera que solo los propios validadores conozcan su pedido por adelantado.
+Es posible que un atacante sofisticado pueda identificar los próximos validadores y bombardearlos para impedir que propongan bloques; esto se conoce como un ataque de **denegación de servicio (DoS)**. Implementar [**elección secreta de líder (SLE)**](/roadmap/secret-leader-election) protegerá contra este tipo de ataques al evitar que los proponentes de bloques sean identificables con anticipación. Esto funciona mezclando continuamente un conjunto de compromisos criptográficos que representan a los proponentes de bloques candidatos y utilizando su orden para determinar qué validador se selecciona, de tal manera que solo los propios validadores conozcan su pedido por adelantado.
-Más información acerca de la elección del líder secreto.
+Leer sobre la elección secreta de líder
## Progreso actual {#current-progress}
-**Las actualizaciones de seguridad en la hoja de ruta están en etapas avanzadas de investigación**, pero no se espera que se implementen durante algún tiempo. Los siguientes pasos para view-merge, PBS, SSF y SLE consisten en finalizar una especificación y comenzar a construir prototipos.
+**Las mejoras de seguridad en la hoja de ruta están en etapas avanzadas de investigación**, pero no se espera que se implementen en breve. Los siguientes pasos para view-merge, PBS, SSF y SLE consisten en finalizar una especificación y comenzar a construir prototipos.
From e95df9e0db60b7ca68abbc0a0dbdefa8ea2be16f Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:03 -0300
Subject: [PATCH 092/589] update(i18n):
public/content/translations/es/community/grants/index.md
---
.../translations/es/community/grants/index.md | 73 ++++++++++++-------
1 file changed, 47 insertions(+), 26 deletions(-)
diff --git a/public/content/translations/es/community/grants/index.md b/public/content/translations/es/community/grants/index.md
index 5463c1c891f..56c725ea66e 100644
--- a/public/content/translations/es/community/grants/index.md
+++ b/public/content/translations/es/community/grants/index.md
@@ -1,6 +1,6 @@
---
-title: Ethereum Foundation y programas de subvenciones para la comunidad
-description: Un listado de los programas de subvenciones del ecosistema Ethereum.
+title: Programas de subvenciones de la Fundación Ethereum y de la comunidad.
+description: Un listado de los programas de subvención entregados a través del ecosistema de Ethereum.
lang: es
---
@@ -10,38 +10,59 @@ Los programas listados a continuación ofrecen una variedad de subvenciones para
Esta lista ha sido creada por nuestra comunidad. Si falta algo o encuentra información incorrecta, ¡edite esta página!
-## El ecosistema Ethereum visto a gran escala {#broad-ethereum-ecosystem}
+
+
+
¿Eres fundador y necesitas ayuda para acelerar tu negocio? [Dirígete a Founders Support](/founders/)
+
+
+## Amplio ecosistema Ethereum {#broad-ethereum-ecosystem}
Estos programas apoyan al ecosistema Ethereum ofreciendo subvenciones para una amplia gama de proyectos. Incluyen soluciones de escalabilidad, construcción de comunidad, seguridad y privacidad, entre otras cosas. Las subvenciones no son específicas de ninguna plataforma Ethereum en particular y sirven de acertado punto de partida en caso de duda.
-- [Programa de apoyo al ecosistema EF](https://esp.ethereum.foundation): _ financia proyectos de código abierto que beneficien a Ethereum, con enfoque particular en herramientas universales, infraestructura, investigación y bienes públicos_
-- [Moloch DAO](https://www.molochdao.com/): _privacidad, escalabilidad en capa 2, seguridad del cliente y más_.
-- [Subvenciones DAO](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0): _hoja de cálculo de Google de organizaciones que ofrecen subvenciones_
-- [Becas académicas](https://esp.ethereum.foundation/academic-grants): _becas para apoyar el trabajo académico relacionado con Ethereum_
-- [Blockworks Grantfarm](https://blockworks.co/grants/programs) - _Blockworks ha elaborado un directorio exhaustivo de todas las subvenciones, solicitudes de propuestas (o RFP) y recompensas por detección de errores_
+- [EF Ecosystem Support Program](https://esp.ethereum.foundation) - _Financiando proyectos de código abierto que benefician a Ethereum, con un enfoque particular en herramientas universales, infraestructura, investigación y bienes públicos_
+- [Academic Grants](https://esp.ethereum.foundation/academic-grants) - _Subvenciones para apoyar trabajos académicos relacionados con Ethereum_
+
+## Agregadores y plataformas de listas de subvenciones {#grant-list-aggregators}
+
+Estos recursos compilan y organizan varias oportunidades de subvenciones en todo el ecosistema de Ethereum, haciendo que sea más fácil descubrir oportunidades que encajen con las necesidades de su proyecto. Los hemos organizado por perfiles para ayudarle a encontrar a la primera los recursos más relevantes, según sus necesidades de financiación particulares.
+
+### Para todos los que buscan subvenciones: Directorios completos {#comprehensive-directories}
+
+Estas plataformas generales ofrecen una amplia cobertura de las subvenciones en todo el espacio de la Web3 y son útiles puntos de partida para cualquiera que busque financiación:
+
+- [Blockworks Grantfarm](https://blockworks.co/grants/programs) - _Blockworks ha compilado un directorio completo de todas las subvenciones, RFPs y recompensas por bugs._
+- [Blockchain Grants](https://www.blockchaingrants.org/) - _Directorio de subvenciones de blockchain y criptomonedas_
+- [Karma Funding Map](https://gap.karmahq.xyz/funding-map) - Directorio de todos los programas de subvenciones web3, actualizado semanalmente
+
+### Para desarrolladores y constructores {#for-developers-and-builders}
+
+- [Grant Programs Viewer](https://airtable.com/shr86elKgWTSCP4AY) - _Base de datos pública en Airtable de programas de subvenciones_
+- [Web3 Grants Spreadsheet](https://docs.google.com/spreadsheets/d/1c8koZCI-GLnD8MG-eFcXPOBCNu1v8-aXIfwAAvc7AMc/edit#gid=0) - _Hoja de cálculo de Google con oportunidades de subvenciones Web3_
+- [Arbitrum Grants](https://arbitrum.foundation/grants) — Arbitrum DAO y [The Arbitrum Foundation](https://arbitrum.foundation/)
+
+### Para proyectos DeFi y aplicaciones financieras {#for-defi-projects}
+
+- [LlamaoGrants](https://wiki.defillama.com/wiki/LlamaoGrants) - _Directorio de programas de subvenciones de DeFi Llama_
+- [AlphaGrowth Grants](https://alphagrowth.io/crypto-web3-grants-list) - _Lista completa de subvenciones de criptomonedas y Web3_
+- [Uniswap Foundation Grants](https://www.uniswapfoundation.org/build) - _Subvenciones y apoyo para constructores DeFi en Unichain y Uniswap v4_
-## Para proyectos concretos {#project-specific}
+### Para contribuyentes de DAO e innovadores en gobernanza {#for-dao-contributors}
-Estos proyectos han creado sus propias subvenciones para proyectos con fines de desarrollo y experimentación de su propia tecnología.
+Recursos para proyectos impulsados por la comunidad y experimentos de gobernanza:
-- [Programa de Subvenciones Aave](https://aavegrants.org/) – _[Aave](https://aave.com/) subvenciones DAO_
-- [Balancer](https://grants.balancer.community/): fondo de ecosistemas _[Balancer](https://balancer.fi/)_
-- [Programa de subvenciones de Chainlink](https://chain.link/community/grants): _subvenciones para la comunidad[Chainlink](https://chain.link/)_
-- [Programa de subvenciones Decentraland](https://governance.decentraland.org/grants/) – _[Decentraland](https://decentraland.org/) Metaverso DAO_
-- [Lido Ecosystem Grants Organisation (LEGO)](https://lido.fi/lego): _[ecosistema financiero](https://lido.fi/) Lido_
-- [Programa MetaMask](https://metamaskgrants.org/): _[MetaMask](https://metamask.io/) subvenciones lideradas por empleados DAO_
-- [Programa de subvenciones para la red SKALE](https://skale.space/developers#grants): _[ecosistema](https://skale.space/) de la red SKALE_
-- [Programa de Subvenciones de la Swarm Foundation](https://my.ethswarm.org): ecosistema de la _[Swarm Foundation](https://www.ethswarm.org/)_
-- [The Graph](https://thegraph.com/ecosystem/grants/): ecosistema de _[The Graph](https://thegraph.com/)_
-- [Programa de donaciones de Uniswap](https://www.uniswapfoundation.org/approach): comunidad de _[Uniswap](https://uniswap.org/)_
+- [DAO Grants](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) - _Hoja de cálculo de Google con organizaciones que ofrecen subvenciones_
+- [MetaGov Database](https://docs.google.com/spreadsheets/d/1e5g-dlWWsK2DZoZGBgfxyfGNSddLk-V7sLEgfPjEhbA/edit#gid=780420708) - _Mapa completo de subvenciones Web3_
-## Financiamiento cuadrático {#quadratic-funding}
+### Bienes públicos e impacto {#public-goods-and-impact}
-Las raíces de código abierto de Ethereum han propiciado la aparición de un nuevo modelo de financiamiento muy interesante: el financiamiento cuadrático. Tiene el potencial de mejorar la forma en que financiaremos todo tipo de bienes públicos en el futuro. El financiamiento cuadrático asegura que los proyectos que reciban más financiamiento sean aquellos que tengan mayor demanda. En otras palabras, proyectos que pretenden mejorar la vida de la mayoría de las personas. [Más información sobre el financiamiento cuadrático.](/defi/#quadratic-funding)
+Estos programas se centran en la financiación de proyectos que benefician a la comunidad en general, sobre bienes públicos y de iniciativas de impacto. Estos incluyen proveedores de subvenciones, así como plataformas de donaciones que utilizan mecanismos de asignación de fondos en cadena, incluyendo [financiación cuadrática](/defi/#quadratic-funding):
-- [Gitcoin](https://gitcoin.co/grants)
-- [clr.fund](https://clr.fund/)
+- [Gitcoin](https://www.gitcoin.co/program) - _Gitcoin Grants utiliza múltiples mecanismos de asignación de capital para financiar proyectos de código abierto y bienes públicos en el ecosistema Ethereum_
+- [Octant](https://octant.app/home) - _Ecosistema de financiación de bienes públicos que equilibra el bien común y el empoderamiento financiero individual_
+- [Giveth](https://giveth.io/) - _Plataforma de donaciones en criptomonedas que permite donaciones directas a proyectos de impacto sin comisiones adicionales_
+- [Artizen](https://artizen.fund/) - _Ayudando a creadores a conseguir fondos equiparados para nuevos proyectos en la frontera del arte, la ciencia, la tecnología y la cultura_
+- [Quadratic Accelerator](https://qacc.giveth.io/) - _Programa acelerador de startups que utiliza la financiación cuadrática para apoyar proyectos que benefician al bien público_
-## Empleo en Ethereum {#work-in-ethereum}
+## Trabajar en Ethereum {#work-in-ethereum}
-¿No está preparado para iniciar su propio proyecto? Cientos de empresas andan en busca de personas apasionadas que quieran trabajar en Ethereum y contribuir al ecosistema. ¿Busca más información? [Encuentre empleos relacionados con Ethereum](/community/get-involved/#ethereum-jobs).
+¿No está preparado para iniciar su propio proyecto? Cientos de empresas andan en busca de personas apasionadas que quieran trabajar en Ethereum y contribuir al ecosistema. ¿Busca más información? [Consulta empleos relacionados con Ethereum](/community/get-involved/#ethereum-jobs)
From 21603065cf7e185348d8b8ce7f184eb1bb7bf79e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:04 -0300
Subject: [PATCH 093/589] update(i18n): src/intl/es/page-roadmap-vision.json
---
src/intl/es/page-roadmap-vision.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/intl/es/page-roadmap-vision.json b/src/intl/es/page-roadmap-vision.json
index f3235af0678..e9e88b9a554 100644
--- a/src/intl/es/page-roadmap-vision.json
+++ b/src/intl/es/page-roadmap-vision.json
@@ -14,7 +14,7 @@
"page-roadmap-vision-problems": "Los problemas actuales",
"page-roadmap-vision-scalability": "Escalabilidad",
"page-roadmap-vision-scalability-desc": "Ethereum tiene que ser capaz de manejar más transacciones por segundo sin aumentar el tamaño de los nodos en la red. Los nodos son vitales participantes de la red que almacenan y ejecutan la cadena de bloques. Aumentar el tamaño de los nodos no es práctico, ya que solo aquellos con computadoras potentes y caras podrían hacerlo. Para escalar, Ethereum necesita más transacciones por segundo junto con más nodos. Y más nodos significa más seguridad.",
- "page-roadmap-vision-scalability-desc-3": "Layer 2 rollups scale Ethereum by moving transactions off-chain and only posting summary data to Ethereum. This batching increases Ethereum's throughput while drastically reducing costs for users.",
+ "page-roadmap-vision-scalability-desc-3": "Los rollups de capa 2 escalan Ethereum al mover las transacciones fuera de la cadena y solo publicar datos resumidos en Ethereum. Este procesamiento por lotes aumenta el rendimiento de Ethereum mientras reduce drásticamente el coste para los usuarios.",
"page-roadmap-vision-scalability-desc-4": "Las acumulaciones necesitan un almacenamiento a bajo coste en la capa 1 para abaratar las transacciones lo máximo posible para los usuarios. Esto se proporciona en forma de «masa» adjuntas a los bloques de Ethereum. Con el tiempo, se adjuntarán muchas masas a los bloques de Ethereum y proporcionarán un almacenamiento barato para numerosas acumulaciones.",
"page-roadmap-vision-security": "Seguridad",
"page-roadmap-vision-security-desc": "Las actualizaciones planificadas mejoran la seguridad de Ethereum contra ataques coordinados.",
From 815fea2c7d763c1f1d1af579687a42141c04e3d8 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:06 -0300
Subject: [PATCH 094/589] update(i18n):
public/content/translations/es/prediction-markets/index.md
---
.../es/prediction-markets/index.md | 84 +++++++++++++++++++
1 file changed, 84 insertions(+)
create mode 100644 public/content/translations/es/prediction-markets/index.md
diff --git a/public/content/translations/es/prediction-markets/index.md b/public/content/translations/es/prediction-markets/index.md
new file mode 100644
index 00000000000..be34fa2961e
--- /dev/null
+++ b/public/content/translations/es/prediction-markets/index.md
@@ -0,0 +1,84 @@
+---
+title: Predicción de mercados
+lang: es
+template: use-cases
+image: /images/use-cases/prediction-markets.png
+sidebarDepth: 2
+summaryPoint1: Reciba incentivos económicos por generar pronósticos precisos
+summaryPoint2: Predicciones de alta calidad sobre eventos futuros
+buttons:
+ - content: Más información
+ toId: cómo-funcionan-los-mercados-de-predicción
+ - content: Explorar las aplicaciones
+ toId: encontrar-un-mercado-de-predicción
+ isSecondary: false
+---
+
+Los mercados de predicción utilizan la sabiduría colectiva y los incentivos financieros para pronosticar eventos. Ofrecen datos diversos y de alta calidad, y ganaron notoriedad durante las elecciones de EE. UU. de 2024.
+
+## Cómo funcionan los mercados de predicción {#how-prediction-markets-work}
+
+A diferencia de los métodos tradicionales de predicción que dependen de opiniones de expertos, muestras limitadas de encuestas o datos históricos, los mercados de predicción aprovechan **los incentivos financieros en tiempo real y la sabiduría colectiva** para generar previsiones relacionadas con un evento específico —elecciones, precios de criptomonedas, resultados deportivos— o de otra naturaleza.
+
+Esto permite a cualquier persona señalar su apoyo a un resultado específico con un compromiso financiero.
+Al permitir apostar por eventos del mundo real y ajustar los precios conforme surge nueva información, las opiniones informadas se valoran más y la precisión puede ser recompensada.
+
+En teoría, dado que los apostadores pueden obtener ganancias al acertar, los mercados de predicción pueden pronosticar resultados con gran precisión. Los mercados de predicción basados en la cadena de bloques son mucho más emocionantes, ya que prácticamente cualquier persona puede participar en el pronóstico y ganar recompensas en monedas estables o criptomonedas.
+
+## ¿Por qué importa esto? {#why-does-this-matter}
+
+A diferencia de las predicciones tradicionales, los mercados de predicción basados en cadenas de bloques son:
+
+
+
+
+
+
+
+Incluso como observador del mercado, usted puede evaluar datos valiosos que no estarían disponibles de otro modo. Piense en lo siguiente:
+
+1. Las predicciones están vinculadas a un evento específico (por ejemplo, ¿Beam Chain se implementará antes de 2030?).
+2. Los participantes del mercado compran y venden acciones según su confianza en algún resultado.
+3. Los precios se ajustan a medida que más participantes apuestan en sus análisis, reflejando previsiones en tiempo real.
+4. Las personas que apuestan acertadamente ganan en proporción al montante apostado.
+5. Los observadores del mercado pueden aprovechar los datos abiertos para fundamentar la investigación y el debate.
+
+## Encontrar un mercado de predicción {#find-a-prediction-market}
+
+Existen diversos mercados de predicción basados en Ethereum. Estos son algunos de los mercados de predicción más populares en la actualidad:
+
+
+
+
+
+
+
+
Considere siempre los riesgos
+
Apueste solo lo que pueda permitirse perder y tenga presente las posibles conductas adictivas.
+
+
+
+
+## Desafíos y riesgos {#challenges-and-risks}
+
+Los mercados de predicción en la cadena de bloques presentan algunos retos que pueden interferir en la imparcialidad, la legalidad y la precisión.
+
+⚠️ **Manipulación de mercado** – Los jugadores con grandes capitales pueden distorcionar los resultados a través de operaciones simuladas (wash trading).
+💧 **Problemas de liquidez** – La baja participación ([liquidez reducida](https://www.investopedia.com/terms/t/thinmarket.asp)) puede disminuir la fiabilidad del mercado.
+🏛 **Incertidumbre regulatoria** – Los gobienos han impuesto restricciones a algunas plataformas.
+
+Para mitigar estos problemas, los desarrolladores de Ethereum están experimentando con soluciones como la «futarquía» (gobernanza a través de mercados de predicción) y la verificación de identidad descentralizada.
+
+## Experimentar con mercados de predicción {#experimenting-with-prediction-markets}
+
+Los mercados de predicción están transformando la toma de decisiones en la era digital. Gracias a Ethereum, ofrecen **formas justas, abiertas y gratificantes de predecir el futuro.**
+
+Hay muchas formas de utilizar las herramientas de pronóstico al margen de las ganancias financieras. Por ejemplo, en una [propuesta de mejora para DevCon](https://forum.devcon.org/t/futarchy-decision-markets-for-deciding-next-devcon/5305) (DIP) se sugirió que los organizadores de DevCon usen mercados de predicción para anticipar la asistencia a futuros eventos.
+
+Esto ayudaría a los organizadores a determinar en qué lugar se podría realizar el mayor evento, en comparación con el lugar que sería más accesible internacionalmente. Así, los organizadores de DevCon pueden agilizar el análisis de políticas de visado, acceso a aeropuertos y coste de la vida en el área, además de recopilar datos sobre los destinos más atractivos para los posibles participantes.
+
+## Lecturas adicionales {#further-reading}
+
+[De mercados de predicción a finanzas basadas en información](https://vitalik.eth.limo/general/2024/11/09/infofinance.html) - Vitalik Buterin
+[Desarrollo de mercados de predicción descentralizados en Ethereum](https://blockchain.oodles.io/dev-blog/decentralized-prediction-market-development-ethereum/)
+[Whitepaper del Proyecto Augur](https://github.com/AugurProject/whitepaper)
\ No newline at end of file
From 8d39503cf10df85bce31e228f0b132a243a18bfb Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:07 -0300
Subject: [PATCH 095/589] update(i18n):
public/content/translations/es/energy-consumption/index.md
---
.../es/energy-consumption/index.md | 65 +++++++++----------
1 file changed, 32 insertions(+), 33 deletions(-)
diff --git a/public/content/translations/es/energy-consumption/index.md b/public/content/translations/es/energy-consumption/index.md
index 04d7ee0b6fd..2736b3bf646 100644
--- a/public/content/translations/es/energy-consumption/index.md
+++ b/public/content/translations/es/energy-consumption/index.md
@@ -4,11 +4,11 @@ description: Información básica que necesita para entender el consumo energét
lang: es
---
-# Gasto energético de Ethereum {#proof-of-stake-energy}
+# Consumo energético de Ethereum {#proof-of-stake-energy}
-Ethereum es una cadena de bloques ecológica. El mecanismo de consenso de [prueba de participación](/developers/docs/consensus-mechanisms/pos) utiliza ETH en lugar de [energía para asegurar la red](/developers/docs/consensus-mechanisms/pow). El consumo de energía de Ethereum es de apoximádamente [~0,0026 TWh/año](https://carbon-ratings.com/eth-report-2022) en toda la red global.
+Ethereum es una cadena de bloques ecológica. El mecanismo de consenso de [proof-of-stake](/developers/docs/consensus-mechanisms/pos) de Ethereum utiliza ETH en lugar de [energía para asegurar la red](/developers/docs/consensus-mechanisms/pow). El consumo energético de Ethereum es de aproximadamente [~0,0026 TWh/año](https://carbon-ratings.com/eth-report-2022) en toda la red global.
-La estimación de consumo energético de Ethereum proviene de un estudio del [CCRI (Crypto Carbon Ratings Institute)](https://carbon-ratings.com). Dicho estudio se encargó de generar una estimación ascendente del consumo de electricidad y huella de carbono de la red de Ethereum ([ver el informe](https://carbon-ratings.com/eth-report-2022)). a partir de la medición del consumo eléctrico de diferentes nodos con diversas configuraciones de hardware y software cliente. La estimación de **2601 MWh** (0,0026 TWh) para el consumo de electricidad anual de la red corresponde a las emisiones de carbono anuales de **870 toneladas de CO2e** aplicando factores de intensidad de carbono específicos de la región. Este valor cambia a medida que los nodos entran y salen de la red ―se puede realizar un seguimiento utilizando la estimación media móvil de 7 días del [ Cambridge Blockchain Network Sustainability Index](https://ccaf.io/cbnsi/ethereum) (cabe destacar que este índice utiliza un método ligeramente diferente para realizar las estimaciones, cuyos detalles se encuentran disponibles en su sitio web)―.
+La estimación del consumo energético de Ethereum proviene de un estudio realizado por el [CCRI (Crypto Carbon Ratings Institute)](https://carbon-ratings.com). Ellos generaron estimaciones detalladas desde cero sobre el consumo eléctrico y la huella de carbono de la red Ethereum ([ver el informe](https://carbon-ratings.com/eth-report-2022)). a partir de la medición del consumo eléctrico de diferentes nodos con diversas configuraciones de hardware y software cliente. La estimación de **2.601 MWh** (0,0026 TWh) para el consumo eléctrico anual de la red corresponde a emisiones de carbono anuales de **870 toneladas de CO2e**, aplicando factores de intensidad de carbono específicos por región. Este valor varía a medida que los nodos entran y salen de la red; puede monitorearlo utilizando una estimación promedio diaria móvil de 7 días proporcionada por el [Cambridge Blockchain Network Sustainability Index](https://ccaf.io/cbnsi/ethereum) (tenga en cuenta que utilizan un método ligeramente diferente para sus estimaciones; los detalles están disponibles en su sitio).
Para contextualizar el consumo de energía de Ethereum, es posible comparar las estimaciones anuales de otros productos e industrias. Esto nos ayuda a comprender mejor si la estimación para Ethereum es alta o baja.
@@ -16,34 +16,34 @@ Para contextualizar el consumo de energía de Ethereum, es posible comparar las
La tabla de arriba muestra el consumo estimado de energía en TWh/yr para Ethereum, con respecto a un conjunto de otros productos e industrias. Las estimaciones proporcionadas provienen de fuentes públicas de información disponible, consultadas en julio 2023, con los correspondientes enlaces a las fuentes disponibles en la tabla de abajo.
-| | Consumo anual de energía (TWh) | Comparación con PoS Ethereum | Fuente |
-|:-------------------------- |:------------------------------:|:----------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
-| Centros de datos globales | 190 | x 73.000 | [fuente](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) |
-| Bitcoin | 149 | x 53.000 | [fuente](https://ccaf.io/cbnsi/cbeci/comparisons) |
-| Minería de oro | 131 | x 50.000 | [fuente](https://ccaf.io/cbnsi/cbeci/comparisons) |
-| Videojuegos en EE. UU.\* | 34 | x 13.000 | [fuente](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) |
-| PoW en Ethereum | 21 | x 8.100 | [fuente](https://ccaf.io/cbnsi/ethereum/1) |
-| Google | 19 | x 7.300 | [fuente](https://www.gstatic.com/gumdrop/sustainability/google-2022-environmental-report.pdf) |
-| Netflix | 0,457 | x 176 | [fuente](https://assets.ctfassets.net/4cd45et68cgf/7B2bKCqkXDfHLadrjrNWD8/e44583e5b288bdf61e8bf3d7f8562884/2021_US_EN_Netflix_EnvironmentalSocialGovernanceReport-2021_Final.pdf) |
-| PayPal | 0,26 | 100x | [fuente](https://s202.q4cdn.com/805890769/files/doc_downloads/global-impact/CDP_Climate_Change_PayPal-(1).pdf) |
-| AirBnB | 0,02 | 8x | [fuente](https://s26.q4cdn.com/656283129/files/doc_downloads/governance_doc_updated/Airbnb-ESG-Factsheet-(Final).pdf) |
-| **PoS de Ethereum** | **0,0026** | **x 1** | [fuente](https://carbon-ratings.com/eth-report-2022) |
+| | Consumo anual de energía (TWh) | Comparación con PoS Ethereum | Fuente |
+| :------------------------------------------------------- | :-----------------------------------------------: | :--------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
+| Centros de datos globales | 190 | x 73.000 | [fuente](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) |
+| Bitcoin | 149 | x 53.000 | [fuente](https://ccaf.io/cbnsi/cbeci/comparisons) |
+| Minería de oro | 131 | x 50.000 | [fuente](https://ccaf.io/cbnsi/cbeci/comparisons) |
+| Videojuegos en EE. UU.\* | 34 | x 13.000 | [fuente](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) |
+| PoW en Ethereum | 21 | x 8.100 | [fuente](https://ccaf.io/cbnsi/ethereum/1) |
+| Google | 19 | x 7.300 | [fuente](https://www.gstatic.com/gumdrop/sustainability/google-2022-environmental-report.pdf) |
+| Netflix | 0,457 | x 176 | [fuente](https://assets.ctfassets.net/4cd45et68cgf/7B2bKCqkXDfHLadrjrNWD8/e44583e5b288bdf61e8bf3d7f8562884/2021_US_EN_Netflix_EnvironmentalSocialGovernanceReport-2021_Final.pdf) |
+| PayPal | 0,26 | 100x | [fuente](https://s202.q4cdn.com/805890769/files/doc_downloads/global-impact/CDP_Climate_Change_PayPal-\(1\).pdf) |
+| AirBnB | 0,02 | 8x | [fuente](https://s26.q4cdn.com/656283129/files/doc_downloads/governance_doc_updated/Airbnb-ESG-Factsheet-\(Final\).pdf) |
+| **PoS de Ethereum** | **0,0026** | **1x** | [fuente](https://carbon-ratings.com/eth-report-2022) |
\* Incluye dispositivos de usuario final, como PC, ordenadores portátiles y consolas de videojuegos.
-Obtener las estimaciones precisas de consumo energético es complicado, especialmente cuando lo que se está midiendo tiene un suministro complejo de cadenas o detalles de desarrollo que influyen en su eficiencia. Por ejemplo, las estimaciones de consumo energético de Netflix y Google varían dependiendo de si ellos solo incluyen la energía utilizada para mantener sus sistemas y entregar contenido a sus usuarios (_gasto directo_) o de si incluyen en sus gastos lo que se requiere para producir contenido, administrar oficinas corporativas, anuncios, etc (_gasto indirecto_). El gasto indirecto puede incluir también la energía requerida para consumir contenido en dispositivos de usuarios finales, como televisores, ordenadores y teléfonos móviles.
+Obtener las estimaciones precisas de consumo energético es complicado, especialmente cuando lo que se está midiendo tiene un suministro complejo de cadenas o detalles de desarrollo que influyen en su eficiencia. Por ejemplo, las estimaciones del consumo energético de Netflix y Google varían dependiendo de si solo incluyen la energía usada para mantener sus sistemas y entregar contenido a los usuarios (_gasto directo_) o si incluyen también el gasto necesario para producir contenido, mantener oficinas corporativas, publicidad, etc. (_gasto indirecto_). El gasto indirecto puede incluir también la energía requerida para consumir contenido en dispositivos de usuarios finales, como televisores, ordenadores y teléfonos móviles.
Las estimaciones de arriba no son comparaciones perfectas. La cantidad de gastos indirectos contabilizados varía dependiendo de la fuente, y rara vez incluye la energía de los dispositivos de usuario final. Cada fuente subyacente incluye mas detalles sobre lo que se está midiendo.
-La tabla y el gráfico de arriba también incluyen comparaciones con Bitcoin y con la prueba de trabajo de Ethereum. Es importante notar que el consumo energético de las redes de prueba de trabajo no es estático y que cambia diariamente. Las estimaciones pueden a su vez variar ampliamente dependiendo de la fuente. El tema atrae [ debates ](https://www.coindesk.com/business/2020/05/19/the-last-word-on-bitcoins-energy-consumption/) moderados, no solo sobre la cantidad de consumo energético, sino también sobre las fuentes de energía utilizadas y la ética asociada. El consumo de energía no se correlaciona necesariamente con la huella ambiental de manera precisa, debido a que diferentes proyectos pueden utilizar distintas fuentes de energía, como por ejemplo una proporción mayor o menor de energías renovables. Por ejemplo, el [Cambridge Bitcoin Electricity Consumption Index](https://ccaf.io/cbnsi/cbeci/comparisons) indica que teóricamente la demanda de la red de Bitcoin podría alimentarse de un suministro de gas o electricidad que de otra manera se perdería en los procesos de transmisión y distribución. La ruta de Ethereum hacia la sostenibilidad consistió en reemplazar la parte de la red que consumía mucha energía por una alternativa ecológica.
+La tabla y el gráfico de arriba también incluyen comparaciones con Bitcoin y con la prueba de trabajo de Ethereum. Es importante notar que el consumo energético de las redes de prueba de trabajo no es estático y que cambia diariamente. Las estimaciones pueden a su vez variar ampliamente dependiendo de la fuente. El tema atrae un [debate](https://www.coindesk.com/business/2020/05/19/the-last-word-on-bitcoins-energy-consumption/) matizado, no solo sobre la cantidad de energía consumida, sino también sobre las fuentes de esa energía y la ética relacionada. El consumo de energía no se correlaciona necesariamente con la huella ambiental de manera precisa, debido a que diferentes proyectos pueden utilizar distintas fuentes de energía, como por ejemplo una proporción mayor o menor de energías renovables. Por ejemplo, el [Cambridge Bitcoin Electricity Consumption Index](https://ccaf.io/cbnsi/cbeci/comparisons) indica que la demanda de la red de Bitcoin podría, en teoría, abastecerse con gas de venteo o electricidad que de otro modo se perdería en transmisión y distribución. La ruta de Ethereum hacia la sostenibilidad consistió en reemplazar la parte de la red que consumía mucha energía por una alternativa ecológica.
-Las estimaciones de consumo de energía y emisiones de carbono se pueden consultar en el sitio web del [Cambridge Blockchain Network Sustainability Index](https://ccaf.io/cbnsi/ethereum).
+Puede consultar estimaciones de consumo de energía y emisiones de carbono para muchas industrias en el [sitio del Cambridge Blockchain Network Sustainability Index](https://ccaf.io/cbnsi/ethereum).
## Estimaciones por transacción {#per-transaction-estimates}
Hay muchos artículos que calculan el gasto de energía «por transacción» para las cadenas de bloques. Esto puede ser engañoso porque la energía requerida para proponer y validar un bloque es independiente del número de transacciones dentro de él. Medir el gasto de energía por transacción implica que una menor cantidad de transacciones conduciría a un menor gasto energético y viceversa, lo cual no es el caso. Además, las estimaciones por transacción son muy sensibles a cómo se define el rendimiento de transacciones de la cadena de bloques, y cambiando esta definición es posible manipular su valor, haciendolo parecer mayor o menor.
-En Ethereum, por ejemplo, el rendimiento de las transacciones no es solo el que se encuentra en la capa base, es además la suma del rendimiento de las transacciones de todos los rollups de "[capa 2](/layer-2/)". Las capas 2 generalmente no se suelen incluir en los cálculos, no obstante el tener en cuenta la energía adicional consumida por los secuenciadores (pequeños) y la cantidad de transacciones que procesan (grande) probablemente reduciría drásticamente las estimaciones por transacción. Esta es una de las razones que explican por qué las comparaciones de consumo de energía por transacción a través de plataformas pueden ser engañosas.
+En Ethereum, por ejemplo, el rendimiento de transacciones no solo corresponde a la capa base, sino que también es la suma del rendimiento de transacciones de todos sus "[rollups de capa 2](/layer-2/)". Las capas 2 generalmente no se suelen incluir en los cálculos, no obstante el tener en cuenta la energía adicional consumida por los secuenciadores (pequeños) y la cantidad de transacciones que procesan (grande) probablemente reduciría drásticamente las estimaciones por transacción. Esta es una de las razones que explican por qué las comparaciones de consumo de energía por transacción a través de plataformas pueden ser engañosas.
## Deuda de carbono de Ethereum {#carbon-debt}
@@ -51,15 +51,15 @@ El gasto energético de Ethereum es muy bajo, aunque no siempre ha sido así. Et
Desde el principio, Ethereum planeó implementar un mecanismo de consenso basado en la prueba de participación, pero hacerlo sin que ello afectara a la seguridad y a la descentralización llevó años de investigación y desarrollo. Por lo tanto, se utilizó un mecanismo de prueba de trabajo para poner en marcha la red. La prueba de trabajo requiere que los mineros usen su hardware informático para calcular un valor, lo que consume energía en el proceso.
-
+
-CCRI estima que La Fusión redujo el consumo anual de energía de Ethereum más de un **99,988 %**. Del mismo modo, la huella de carbono de Ethereum se redujo un **99,992%** aproximadamente (de 11.016.000 a 870 toneladas de CO2e). Para ponerlo en contexto, la reducción en las emisiones es como pasar de la altura de la torre Eiffel a un pequeño muñeco de juguete, como se ve en la figura anterior. Como resultado, el costo ambiental de asegurar la red se reduce drásticamente. Al mismo tiempo, se cree que la seguridad de la red ha mejorado.
+El CCRI estima que The Merge redujo el consumo anualizado de electricidad de Ethereum en más de **99,988%**. Asimismo, la huella de carbono de Ethereum disminuyó aproximadamente en **99,992%** (de 11.016.000 a 870 toneladas de CO2e). Para ponerlo en contexto, la reducción en las emisiones es como pasar de la altura de la torre Eiffel a un pequeño muñeco de juguete, como se ve en la figura anterior. Como resultado, el costo ambiental de asegurar la red se reduce drásticamente. Al mismo tiempo, se cree que la seguridad de la red ha mejorado.
-## Una capa de aplicación ecológica {#green-applications}
+## Una capa de aplicaciones ecológicas {#green-applications}
-Mientras que el consumo de energía de Ethereum es muy bajo, también se está desarrollando en Ethereum una comunidad considerable, creciente y muy activa de [**finanzas regenerativas (ReFi)**](/refi/). Las aplicaciones ReFi usan componentes DeFi para crear aplicaciones financieras que tienen efectos externos que benefician al entorno. ReFi es parte del movimiento ["solarpunk"](https://en.wikipedia.org/wiki/Solarpunk) más amplio que está estrechamente alineado con Ethereum y que tiene como objetivo combinar el progreso tecnológico y la gestión medioambiental. La naturaleza descentralizada, sin permisos y componible de Ethereum lo convierten en la capa base ideal para las comunidades de ReFi y solarpunk.
+Aunque el consumo energético de Ethereum es muy bajo, también existe una comunidad de [**finanzas regenerativas (ReFi)**](/refi/) sustancial, en crecimiento y muy activa, que desarrolla sobre Ethereum. Las aplicaciones ReFi usan componentes DeFi para crear aplicaciones financieras que tienen efectos externos que benefician al entorno. ReFi es parte de un movimiento ["solarpunk"](https://en.wikipedia.org/wiki/Solarpunk) más amplio que está estrechamente alineado con Ethereum y busca unir el avance tecnológico con el cuidado ambiental. La naturaleza descentralizada, sin permisos y componible de Ethereum lo convierten en la capa base ideal para las comunidades de ReFi y solarpunk.
-Las plataformas nativas de financiación de bienes públicos en Web3, como [Gitcoin](https://gitcoin.co) realizan rondas climáticas para estimular el desarrollo respetuoso con el medio ambiente en la capa de aplicación de Ethereum. A través del desarrollo de estas iniciativas (y otras, como por ejemplo, [DeSci](/desci/)), Ethereum se está convirtiendo en una tecnología medioambiental y socialmente positiva.
+Plataformas nativas de Web3 para financiar bienes públicos, como [Gitcoin](https://gitcoin.co), realizan rondas climáticas para estimular la construcción consciente del medio ambiente en la capa de aplicaciones de Ethereum. A través del desarrollo de estas iniciativas (y otras, por ejemplo, [DeSci](/desci/)), Ethereum se está convirtiendo en una tecnología netamente positiva a nivel ambiental y social.
@@ -70,18 +70,17 @@ Las plataformas nativas de financiación de bienes públicos en Web3, como [Gitc
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
- [Cambridge Blockchain Network Sustainability Index](https://ccaf.io/cbnsi/ethereum)
-- [Informe de la Casa Blanca sobre las cadenas de bloques de prueba de trabajo](https://web.archive.org/web/20221109005700/https://www.whitehouse.gov/wp-content/uploads/2022/09/09-2022-Crypto-Assets-and-Climate-Report.pdf)
-- [Emisiones Ethereum: un cálculo estimado ascendente](https://kylemcdonald.github.io/ethereum-emissions/), _Kyle McDonald_
-- [Índice de consumo energético de Ethereum](https://digiconomist.net/ethereum-energy-consumption/), _Digiconomista_
-- [ETHMerge.com](https://ethmerge.com/), _[@InsideTheSim](https://twitter.com/InsideTheSim)_
-- [La Fusión: Implicaciones en el consumo eléctrico y la huella de carbono de la red de Ethereum](https://carbon-ratings.com/eth-report-2022) - _CCRI_
+- [Informe de la Casa Blanca sobre blockchains con proof-of-work](https://web.archive.org/web/20221109005700/https://www.whitehouse.gov/wp-content/uploads/2022/09/09-2022-Crypto-Assets-and-Climate-Report.pdf)
+- [Emisiones de Ethereum: Una estimación desde abajo](https://kylemcdonald.github.io/ethereum-emissions/) - _Kyle McDonald_
+- [Índice de Consumo Energético de Ethereum](https://digiconomist.net/ethereum-energy-consumption/) - _Digiconomist_
+- [ETHMerge.com](https://ethmerge.com/) - _[@InsideTheSim](https://twitter.com/InsideTheSim)_
+- [The Merge - Implicaciones en el consumo eléctrico y la huella de carbono de la red Ethereum](https://carbon-ratings.com/eth-report-2022) - _CCRI_
- [Consumo energético de Ethereum](https://mirror.xyz/jmcook.eth/ODpCLtO4Kq7SCVFbU4He8o8kXs418ZZDTj0lpYlZkR8)
## Temas relacionados {#related-topics}
-- [Visión de Ethereum](/roadmap/vision/)
-- [La cadena de baliza](/roadmap/beacon-chain)
-- [La fusión](/roadmap/merge/)
+- [The Beacon Chain](/roadmap/beacon-chain)
+- [The Merge](/roadmap/merge/)
From 220a099f74c997d99df6859df2c6f6c74887e654 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:09 -0300
Subject: [PATCH 096/589] update(i18n): src/intl/es/page-developers-docs.json
---
src/intl/es/page-developers-docs.json | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/intl/es/page-developers-docs.json b/src/intl/es/page-developers-docs.json
index f3f88764e52..0f92e1bdaba 100644
--- a/src/intl/es/page-developers-docs.json
+++ b/src/intl/es/page-developers-docs.json
@@ -14,7 +14,7 @@
"docs-nav-consensus-mechanisms-description": "Cómo los nodos individuales de una red distribuida aceptan el estado actual del sistema",
"docs-nav-gasper": "Gasper",
"docs-nav-weak-subjectivity": "Subjetividad débil",
- "docs-nav-attestations": "Certificaciones",
+ "docs-nav-attestations": "Atestaciones",
"docs-nav-keys": "Claves",
"docs-nav-block-proposal": "Propuesta de bloque",
"docs-nav-data-and-analytics": "Datos y análisis",
@@ -33,6 +33,7 @@
"docs-nav-development-networks-description": "Entornos locales de cadenas de bloques usados para probar DApps antes de implementarlas",
"docs-nav-dex-design-best-practice": "Buenas prácticas de diseño de exchanges descentralizados (DEX)",
"docs-nav-dot-net": ".NET",
+ "docs-nav-elixir": "Elixir",
"docs-nav-erc-20": "ERC-20: Tokens fungibles",
"docs-nav-erc-721": "ERC-721: NFT",
"docs-nav-erc-777": "ERC-777",
@@ -115,6 +116,7 @@
"docs-nav-transactions": "Transacciones",
"docs-nav-transactions-description": "Las transferencias y otras acciones hacen que cambie el estado de Ethereum",
"docs-nav-upgrading-smart-contracts": "Mejora de los contratos inteligentes",
+ "docs-nav-naming-smart-contracts": "Nombrando contratos inteligentes",
"docs-nav-verifying-smart-contracts": "Verificación de contratos inteligentes",
"docs-nav-web2-vs-web3": "Web 2.0 vs Web 3.0",
"docs-nav-web2-vs-web3-description": "Las diferencias fundamentales que proporcionan las aplicaciones basadas en cadenas de bloques",
@@ -122,7 +124,7 @@
"docs-nav-networking-layer-description": "Explicación de la capa de red de Ethereum",
"docs-nav-networking-layer-network-addresses": "Dirección de la red",
"docs-nav-networking-layer-portal-network": "Red de portal",
- "docs-nav-data-structures-and-encoding": "Estructura de datos y codificación",
+ "docs-nav-data-structures-and-encoding": "Estructuras de datos y codificación",
"docs-nav-data-structures-and-encoding-description": "Explicación de las estructuras de datos y del esquema de codificación utilizados por la pila de Ethereum",
"docs-nav-data-structures-and-encoding-rlp": "Prefijo de longitud recursiva (PRL)",
"docs-nav-data-structures-and-encoding-patricia-merkle-trie": "Patricia Merkle Trie",
From 1f8eb36ab5d76dba69f218ee2edc9a61de613d42 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:10 -0300
Subject: [PATCH 097/589] update(i18n):
public/content/translations/es/staking/withdrawals/index.md
---
.../es/staking/withdrawals/index.md | 110 ++++++++----------
1 file changed, 50 insertions(+), 60 deletions(-)
diff --git a/public/content/translations/es/staking/withdrawals/index.md b/public/content/translations/es/staking/withdrawals/index.md
index b9be1ca75a7..4405c9ca6d3 100644
--- a/public/content/translations/es/staking/withdrawals/index.md
+++ b/public/content/translations/es/staking/withdrawals/index.md
@@ -13,15 +13,11 @@ summaryPoints:
- Los validadores que salen completamente de las apuestas recibirán su balance restante
---
-
-Las retiradas de participaciones se habilitarán con la actualización de Shanghai/Capella que ocurrió el 12 de abril de 2023. Más información sobre Shanghai/Capella
-
+**Los retiros de staking** se refieren a las transferencias de ETH desde una cuenta de validador en la capa de consenso de Ethereum (la Beacon Chain) a la capa de ejecución, donde se puede transaccionar con ellos.
-**Las retiradas de participaciones** se refieren a las transferencias de ETH para la cuenta del validador en la capa de consenso de Ethereum (la cadena de baliza), a la capa de ejecución donde se pueden transferir.
+**Los pagos de recompensa del saldo excedente** por encima de 32 ETH se enviarán de forma automática y regular a una dirección de retiro vinculada a cada validador, una vez que el usuario la proporcione. Los usuarios también pueden **salir del staking por completo**, desbloqueando el saldo completo de su validador.
-**Los pagos de recompensas del saldo excedente** de más de 32 ETH se enviará automática y regularmente a una dirección de retirada vinculada a cada validador, una vez proporcionada por el usuario. Los usuarios también pueden **dejar de apostar por completo**, desbloqueando todo su saldo del validador.
-
-## Recompensas de participaciones {#staking-rewards}
+## Recompensas de staking {#staking-rewards}
Los pagos de recompensas se procesan automáticamente para cuentas de validadores activas con un saldo efectivo máximo de 32 ETH.
@@ -46,27 +42,26 @@ Proporcionar una dirección de retirada es un paso obligatorio para cualquier cu
-
- A cada cuenta de validador sólo se le puede asignar una dirección de retirada, una vez. Cuando se elige una dirección y se envía a la capa de consenso, no puede deshacerse ni cambiarse nuevamente. Vuelva a verificar la propiedad y la precisión de la dirección proporcionada antes de enviarla.
+A cada cuenta de validador solo se le puede asignar una única dirección de retiro, una sola vez. Una vez que se ha elegido y enviado una dirección a la capa de consenso, esta no se puede deshacer ni volver a cambiar. Verifique la titularidad y la exactitud de la dirección proporcionada antes de enviarla.
Mientras tanto no hay ninguna amenaza para sus fondos por no proporcionar esto, asumiendo que su frase mnemónica/de recuperación esté segura fuera de línea, y no se vea afectada de ninguna manera. Si no agrega las credenciales de retirada, simplemente dejará los ETH bloqueados en la cuenta del validador como ha estado hasta que se proporcione una dirección de retirada.
-## Salir completamente de la apuesta {#exiting-staking-entirely}
+## Salir del staking por completo {#exiting-staking-entirely}
-Antes de que _los_ fondos puedan transferirse fuera del saldo de una cuenta de validación, es necesario proporcionar una dirección de retirada.
+Es necesario proporcionar una dirección de retiro antes de que _cualquier_ fondo pueda ser transferido fuera del saldo de la cuenta de un validador.
Para abandonar la apuesta y recuperar todo su saldo, los usuarios deben enviar un mensaje de «salida voluntaria» firmado con sus claves de validación que iniciará el proceso de desvinculación de la apuesta. Esto se hace con su cliente validador y se envía a su nodo consenso, y no requiere gas.
El proceso de un validador que sale de la apuesta lleva un tiempo variable, en función de la cantidad de peticiones de salida que se registren al mismo tiempo. Una vez completado, esta cuenta ya no tendrá la responsabilidad de realizar las tareas de la red de validación, no será elegible para recibir recompensas ni tendrá sus ETH «apostados». En ese momento, la cuenta se marcará como totalmente «retirable».
-Una vez que una cuenta se marca como «retirable» y se proporcionan las credenciales de retirada, no hay nada más que el usuario deba hacer aparte de esperar. Los proponentes de bloques barren de forma automática y continua las cuentas en busca de fondos que reúnan las condiciones de salida, y el saldo de su cuenta se transferirá en su totalidad (también conocido como «retirada completa») durante el próximo barrido.
+Una vez que una cuenta se marca como «retirable» y se proporcionan las credenciales de retirada, no hay nada más que el usuario deba hacer aparte de esperar. Las cuentas son barridas automática y continuamente por los proponentes de bloques en busca de fondos salientes elegibles, y el saldo de su cuenta será transferido en su totalidad (también conocido como un "retiro completo") durante el próximo barrido.
-## ¿Cuándo se habilitarán las retiradas de apuestas? {#when}
+## ¿Cuándo se habilitaron las retiradas de participación? {#when}
-¡Las retiradas de apuestas ya están hablitadas! La funcionalidad de retirada se ha habilitado como parte de la actualización Shanghai/Capella que se lanzó el 12 de abril de 2023.
+La funcionalidad de retiro se habilitó como parte de la actualización Shanghai/Capella, que tuvo lugar el **12 de abril de 2023**.
La actualización Shanghai/Capella habilitó previamente que los ETH apostados se reclamen en las cuentas regulares de Ethereum. Con esto se cierra el ciclo de la liquidez y aproima un poco más a Ethereum en su intención de desarrollar un ecosistema descentralizado escalable, seguro y sostenible.
@@ -77,13 +72,13 @@ La actualización Shanghai/Capella habilitó previamente que los ETH apostados s
La elegibilidad de un validador dado para una retirada o no, viene determinada por el estado de la cuenta del validador. No se necesita ninguna entrada de usuario en un momento dado para determinar si una cuenta debe tener una retirada iniciada o no (todo el proceso lo realiza automáticamente la capa de consenso en un bucle continuo).
-### ¿Es más bien de los que aprende viendo? {#visual-learner}
+### ¿Retiene usted mejor las cosas cuando las ve? {#visual-learner}
Lea la explicación sobre retirads de apuestas en Ethereum hecha por Finematics:
-### «Barrido» del validador {#validator-sweeping}
+### "Barrido" de validadores {#validator-sweeping}
Cuando un validador está programado para proponer el siguiente bloque, se requiere construir una cola de retirada, de hasta 16 retiradas elegibles. Para ello se empieza originariamente con el índice del validador 0, que determina si hay una retirada elegible para esta cuenta según las reglas del protocolo y se añade a la cola, si existe. El validador establecido para proponer el siguiente bloque lo tomará ahí donde el último lo haya dejado y irá procesando las órdenes de manera indefinida.
@@ -91,29 +86,29 @@ Cuando un validador está programado para proponer el siguiente bloque, se requi
-Piense en un reloj analógico. La manecilla en el reloj marca la hora, avanza en un sentido, no se salta ninguna hora y, al alcanzar el último número, vuelve nuevamente al punto de inicio.
-Ahora en lugar del 1 al 12, imagine que el reloj tiene de 0 hasta N (el número total de cuentas validadoras que alguna vez se registraron en la capa de consenso, más de 500.000 en enero de 2023).
-La manecilla en el reloj apunta hacia el siguiente validador que necesita ser verificado antes de permitirle retiradas. Empieza a partir de 0, y avanza todo el camino alrededor sin saltarse ninguna cuenta. Cuando se alcance el último validador, el ciclo continúa volviendo al principio.
+Piense en un reloj analógico. La manecilla del reloj apunta a la hora, avanza en una dirección, no se salta ninguna hora y, finalmente, vuelve al principio después de alcanzar el último número.
+Ahora, en lugar de ir del 1 al 12, imagine que el reloj va del 0 a N (el número total de cuentas de validador que se han registrado en la capa de consenso, más de 500 000 a fecha de enero de 2023).
+La manecilla del reloj apunta al siguiente validador que debe ser comprobado para retiros elegibles. Empieza en el 0 y da toda la vuelta sin saltarse ninguna cuenta. Cuando se llega al último validador, el ciclo continúa desde el principio.
-#### Cómo comprobar si una cuenta es elegible para retirada {#checking-an-account-for-withdrawals}
+#### Comprobación de una cuenta para retiros {#checking-an-account-for-withdrawals}
Mientras un proponente barre posibles retiradas a través de validadores, cada validador que se revisa se evalúa, a tenor de una pequeña serie de preguntas, para determinar si debe activarse una retirada, y de ser así, cuántos ETH se deberían retirar.
-1. **¿Se ha proporcionado una dirección de retirada?** Si no se ha proporcionado ninguna dirección, se omitirá la cuenta y no se iniciará ningún proceso de retirada.
-2. **¿El validador ha salido y es apto para la retirada?** Si el validador ha salido completamente, y hemos llegado a la época en la que se considera que su cuenta es «retirable», entonces se procesará una retirada completa. Esto transferirá todo el saldo restante a la dirección de retirada.
-3. **¿Supera el saldo efecto máximo los 32 ETH?** Si la cuenta tiene credenciales de retirada, no está completamente cerrada y tiene recompensas sobre los 32 en espera, se procesará una retirada parcial que sólo transfiere las recompensas por encima de 32 a la dirección de retirada del usuario.
+1. **¿Se ha proporcionado una dirección de retiro?** Si no se ha proporcionado ninguna dirección de retiro, la cuenta se omite y no se inicia ningún retiro.
+2. **¿El validador ha salido y se pueden retirar los fondos?** Si el validador ha salido por completo, y hemos llegado a la época en la que su cuenta se considera "retirable", entonces se procesará un retiro completo. Esto transferirá todo el saldo restante a la dirección de retirada.
+3. **¿El saldo efectivo ha alcanzado el máximo de 32?** Si la cuenta tiene credenciales de retiro, no ha salido por completo y tiene recompensas en espera por encima de 32, se procesará un retiro parcial que transferirá únicamente las recompensas por encima de 32 a la dirección de retiro del usuario.
En el transcurso del ciclo de vida de un validador, solo hay dos acciones que puede emprender un validador que influyen directamente en este flujo:
- Proporcionar credenciales de retirada para habilitar cualquier forma de retirada
- Salir de la red, que provocará una retirada completa
-### Gas gratis {#gas-free}
+### Sin gas {#gas-free}
-Este enfoque a las retiradas de apuestas evita que los participantes tengan que presentar manualmente una transacción solicitando la retirada de una cantidad particular de ETH. Esto también significa que no se requiere **ningún gas (comisión de transacción)** y que las retiradas tampoco compiten por el espacio de bloque existente de la capa de ejecución.
+Este enfoque a las retiradas de apuestas evita que los participantes tengan que presentar manualmente una transacción solicitando la retirada de una cantidad particular de ETH. Esto significa que **no se requiere gas (comisión de transacción)**, y que los retiros tampoco compiten por el espacio de bloque existente en la capa de ejecución.
### ¿Con qué frecuencia obtendré mis recompensas de participación? {#how-soon}
@@ -123,62 +118,59 @@ Ampliando este cálculo podemos estimar el tiempo que llevará el procesar un n
-| Número de retiradas | Tiempo que llevará|
-| :-------------------: | :--------------: |
-| 400.000 | 3,5 días |
-| 500.00 | 4,3 días |
-| 600.000 | 5,2 días |
-| 700.000 | 6,1 días |
-| 800.000 | 7 días |
+| Número de retiros | Tiempo para completar |
+| :---------------: | :-------------------: |
+| 400,000 | 3,5 días |
+| 500,000 | 4,3 días |
+| 600,000 | 5,2 días |
+| 700,000 | 6,1 días |
+| 800,000 | 7,0 días |
Como puede ver, cuantos más validadores esten en la red, más se ralentiza el proceso. Un aumento en las vacantes podría ralentizar esto proporcionalmente, pero esto generalmente representará el lado más lento de los posibles resultados.
-## Preguntas más frecuentes {#faq}
+## Preguntas frecuentes {#faq}
-No, el proceso para proporcionar credenciales de retirada es un proceso de una sola vez, y no se puede cambiar una vez presentado.
-
+No, el proceso para proporcionar las credenciales de retiro es un proceso único y no puede cambiarse una vez enviado.
-Al establecer una capa de ejecución en una dirección de retirada, las credenciales de retirada para ese validador se cambian permanentemente. Esto significa que las credenciales antiguas ya no funcionarán, y las nuevas credenciales irán directamente a una cuenta de capa de ejecución.
+Al establecer una dirección de retiro en la capa de ejecución, las credenciales de retiro para ese validador se han cambiado permanentemente. Esto significa que las credenciales antiguas ya no funcionarán, y las nuevas credenciales irán directamente a una cuenta de capa de ejecución.
Las direcciones de retirada pueden ser un contrato inteligente (controlado por su código), o una cuenta de propietario externa (EOA, controlada por su clave privada). Actualmente estas cuentas no tienen forma de comunicar un mensaje de vuelta a la capa de consenso que señalaría un cambio de credenciales de validador, y añadir esta funcionalidad añadiría una complejidad innecesaria al protocolo.
-Como alternativa al cambio de la dirección de retirada para un validador en particular, los usuarios pueden optar por establecer un contrato inteligente como su dirección de retirada, la cual podría manejar la rotación clave, como una caja fuerte. Los usuarios que establezcan sus fondos en su propia EOA pueden realizar una salida completa para retirar todos sus fondos apostados, y luego volver a apostarlos usando nuevas credenciales.
-
+Como alternativa al cambio de la dirección de retirada para un validador en particular, los usuarios pueden optar por establecer un contrato inteligente como su dirección de retirada, la cual podría manejar la rotación clave, como una caja fuerte. Los usuarios que establezcan sus fondos en su propia EOA pueden realizar una salida completa para retirar todos sus fondos apostados, y luego volver a apostarlos usando nuevas credenciales.
-Si forma parte de alguna [reserva de participación](/staking/pools/) o tiene tókenes de participación, debería consultarle a su proveedor los detalles de retiradas de participación, pues cada servicio opera de forma distinta.
+Si forma parte de algún [grupo de participación](/staking/pools/) o tiene tókenes de participación, debería consultarle a su proveedor los detalles sobre cómo se procesan las retiradas de participaciones, ya que cada servicio funciona de forma distinta.
-En general, los usuarios deberían tener la libertad de reclamar sus ETH apostados subyacentes, o cambiar de proveedor de apuestas. Si un grupo en particular se está volviendo demasiado grande, los fondos se pueden cerrar y canjear, y volver a apostarlos con un proveedor más pequeño. O, si ha acumulado suficientes ETH podría [apostar desde casa](/staking/solo/).
+En general, los usuarios deberían tener la libertad de reclamar sus ETH apostados subyacentes, o cambiar de proveedor de apuestas. Si un grupo en particular se está volviendo demasiado grande, los fondos se pueden cerrar y canjear, y volver a apostarlos con un proveedor más pequeño. O, si ha acumulado suficientes ETH, podría [participar desde casa](/staking/solo/).
-Sí, siempre y cuando su validador haya proporcionado una dirección de retirada. Se debe proporcionar una vez para habilitar inicialmente cualquier retirada, luego los pagos de recompensa se activarán automáticamente cada pocos días con cada barrido del validador.
-
+Sí, siempre que su validador haya proporcionado una dirección de retiro. Se debe proporcionar una vez para habilitar inicialmente cualquier retirada, luego los pagos de recompensa se activarán automáticamente cada pocos días con cada barrido del validador.
@@ -193,20 +185,19 @@ Una vez que un validador ha completado el proceso de salida ―asumiendo que la
eventCategory="FAQ"
eventAction="Can I withdraw a custom amount?"
eventName="read more">
-Las retiradas están diseñadas para producirse automáticamente, transfiriendo cualquier ETH que no contribuya activamente a la apuesta. Esto incluye saldos completos para cuentas que han completado el proceso de salida.
+Los retiros están diseñados para ser enviados automáticamente, transfiriendo cualquier ETH que no esté contribuyendo activamente al stake. Esto incluye saldos completos para cuentas que han completado el proceso de salida.
-No es posible solicitar manualmente la retirada de cantidades específicas de ETH.
-
+No es posible solicitar manualmente la retirada de cantidades específicas de ETH.
Se recomienda a los operadores validadores visitar la página Retiradas del lanzador de apuestas donde encontrará más detalles sobre cómo preparar su validador para las retiradas, la sincronización de los eventos y más detalles sobre cómo funcionan las retiradas.
-Para probar primero su configuración en una red de pruebas, visite el Holesky Testnet Staking Launchpad para comenzar.
+Para probar primero su configuración en una red de prueba, visite la Hoodi Testnet Staking Launchpad para empezar.
@@ -215,13 +206,12 @@ title="¿Puedo reactivar mi validador después de salir depositando más ETH?"
eventCategory="FAQ"
eventAction="Can I re-activate my validator after exiting by depositing more ETH?"
eventName="read more">
-No. Una vez que un validador ha salido y su saldo total se ha retirado, cualquier fondo adicional depositado a ese validador se transferirá automáticamente a la dirección de retirada durante el próximo barrido del validador. Para volver a apostar ETH, se debe activar un validador nuevo.
-
+No. Una vez que un validador ha salido y su saldo total se ha retirado, cualquier fondo adicional depositado a ese validador se transferirá automáticamente a la dirección de retirada durante el próximo barrido del validador. Para volver a apostar ETH, se debe activar un validador nuevo.
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Retiradas en la plataforma de lanzamiento de participaciones](https://launchpad.ethereum.org/withdrawals)
-- [EIP-4895: La cadena de baliza impulsa las retiradas como operaciones](https://eips.ethereum.org/EIPS/eip-4895)
-- [PEEPanEIP #94: Retirada de ETH apostados (Prueba) con Potuz & Hsiao-Wei Wang](https://www.youtube.com/watch?v=G8UstwmGtyE)
-- [PEEPanEIP#68: EIP-4895: La cadena de baliza impulsa retiradas como operaciones con Alex Stokes](https://www.youtube.com/watch?v=CcL9RJBljUs)
-- [Entender el saldo efectivo del validador](https://www.attestant.io/posts/understanding-validator-effective-balance/)
+- [Retiros del Launchpad de staking](https://launchpad.ethereum.org/withdrawals)
+- [EIP-4895: Beacon chain push withdrawals as operations](https://eips.ethereum.org/EIPS/eip-4895)
+- [PEEPanEIP #94: Staked ETH Withdrawal (Testing) with Potuz & Hsiao-Wei Wang](https://www.youtube.com/watch?v=G8UstwmGtyE)
+- [PEEPanEIP#68: EIP-4895: Beacon chain push withdrawals as operations with Alex Stokes](https://www.youtube.com/watch?v=CcL9RJBljUs)
+- [Entendiendo el saldo efectivo del validador](https://www.attestant.io/posts/understanding-validator-effective-balance/)
From ea3ad1f7d89dfc7dc22a0da93ed8400a1d1f30df Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:12 -0300
Subject: [PATCH 098/589] update(i18n):
public/content/translations/es/contributing/design/index.md
---
.../es/contributing/design/index.md | 36 +++++++++----------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/public/content/translations/es/contributing/design/index.md b/public/content/translations/es/contributing/design/index.md
index 982a2daee9f..4abc833e735 100644
--- a/public/content/translations/es/contributing/design/index.md
+++ b/public/content/translations/es/contributing/design/index.md
@@ -12,15 +12,15 @@ Por último, esto es un buen camino para construir un diverso e impresionante po
## ¿Cómo contribuir?
-### Proporciona opiniones en diseños tempranos de prototipos {#design-critique}
+### Proporcione comentarios sobre los prototipos de diseño tempranos {#design-critique}
Algunas veces necesitamos ayuda para testear nuestras ideas crudas. Esto es un buen camino para saber cómo contribuir sin algunos conocimientos técnicos.
-1. El equipo de diseño compartirá una maqueta de diseño en [Discord](https://discord.com/invite/ethereum-org) y en [GitHub](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8).
+1. El equipo de diseño compartirá un diseño de maqueta en [Discord](https://discord.com/invite/ethereum-org) y en [GitHub](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8).
2. Usted será guiado a través de diseños para proporcionar opiniones por comentarios de función.
3. El resultado será compartido en el asunto GitHub y después será cerrado por el equipo.
-### Participa en las encuentas {#answer-surveys}
+### Participe en la investigación a través de encuestas {#answer-surveys}
Proporciona opiniones en nuestra página web por:
@@ -28,50 +28,50 @@ Proporciona opiniones en nuestra página web por:
2. Clicleando en la ventana de opiniones en abajo a la derecha en la esquina y respondiedo diseños y preguntas de contenido relacionado.
3. Céntrate en el formato de preguntas libres.
-### Si detecta errores de diseño en la página web, comuníquelos {#report-design-issues}
+### Encuentre problemas relacionados con el diseño en el sitio web y repórtelos {#report-design-issues}
ethereum.org es un sitio en rápido crecimiento con muchas funcionalidades y contenido. Algunos de la interfaz de usuarios pueden fácilmente convertirse en obsoletos o podrían ser mejorados. Si usted detecta alguno de estos fallos, por favor comuníquelo para que podamos solucionarlo.
1. Ve a través de la página web y presta atención a sus diseño.
2. Toma captures y notas si ves algún visual o asuntos UX.
-3. Reporte el asunto encontrado usando un [bug report](https://github.com/ethereum/ethereum-org-website/issues/new/choose).
+3. Informe sobre los problemas encontrados utilizando un [informe de errores](https://github.com/ethereum/ethereum-org-website/issues/new/choose).
-### Propone cambios de diseño {#propose-design-changes}
+### Proponga cambios de diseño {#propose-design-changes}
-Si usted se siente confortable tomando retos de diseños, puedes visitar nuestros asuntos GitHub abordar y filtrar para[asuntos relacionados de diseños](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8).
+Si se siente cómodo asumiendo desafíos de diseño, puede visitar nuestro tablero de issues en GitHub y filtrar por [issues relacionados con diseño](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8).
-1. Ve a través de nuestra página web y presta atención a sus diseños o ve a nuestro depósito de GitHub y revisa asuntos marcados con el [etiqueta “Diseño requerido”](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8).
-2. Idea la solución y diséñala. (idealmente utiliando nuestro [sistema de diseño](https://www.figma.com/community/file/1134414495420383395)).
-3. Propone la solución en el problema correspondiente en GitHub o [crea uno nuevo.](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&template=feature_request.yaml&title=Feature+request)
+1. Revise nuestro sitio web y preste atención a su diseño o vaya a nuestro repositorio de GitHub y revise los issues marcados con la [etiqueta “Design required”](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8).
+2. Idea la solución y diséñala. (idealmente utilizando nuestro [sistema de diseño](https://www.figma.com/community/file/1134414495420383395)).
+3. Proponga la solución en el issue correspondiente en GitHub o [cree uno nuevo.](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&template=feature_request.yaml&title=Feature+request)
4. Espera que el equipo de diseño lo revise.
-### Construyan juntos un Sistemas de Diseño {#Contribute-to-design-system}
+### Construyamos el Sistema de Diseño juntos {#Contribute-to-design-system}
Nuestro sistema de diseño convierte el diseñado de ethereum.org fácil y sencillo. Si eres un diseñador experimentado, puedes ayudarnos a preparar muchos componentes para el sitio web.
-1. Seleccione una incidencia por abordar en el [tablón del sistema de diseño](https://github.com/ethereum/ethereum-org-website/labels/design%20system) en GitHub o cree uno nuevo.
+1. Seleccione un issue en el que trabajar desde el [tablero del sistema de diseño](https://github.com/ethereum/ethereum-org-website/labels/design%20system) en GitHub o cree uno nuevo.
2. Solicita que te asignen el problema seleccionado.
3. Empiece a diseñar el componente solicitado en Figma.
4. Compártelo con el equipo de diseño en GitHub una vez que necesites una revisión o consejo.
5. El equipo de diseño lo revisará.
6. El equipo de diseño incorporará los cambios en el archivo principal y publicará el archivo a la comunidad.
-### Escribe contenido relacionado con el diseño en el sitio web {#write-design-articles}
+### Escriba contenido relacionado con el diseño en el sitio web {#write-design-articles}
-La comunidad para desarrolladores de Ethereum es fuerte, pero la comunidad de diseño se está quedando rezagada. Si eres un diseñador con conocimiento en web3, por favor considera compartir tu conocimiento con la gran comunidad para crecer y mejorar juntos; contamos con [una página sobre el diseño en Ethereum](/developers/docs/design-and-ux/) a la que puedes contribuir. También puedes revisar nuestras [políticas de listado](/contributing/design/adding-design-resources).
+La comunidad para desarrolladores de Ethereum es fuerte, pero la comunidad de diseño se está quedando rezagada. Si usted es diseñador con conocimientos en web3, considere compartir sus aprendizajes con la comunidad más amplia para que todos podamos crecer y mejorar juntos; tenemos [una página sobre diseño para Ethereum](/developers/docs/design-and-ux/) a la que puede contribuir. También puede consultar nuestras [políticas de listado](/contributing/design/adding-design-resources).
1. Idea en temas de diseño que deberían ser cubiertas en ethereum.org y pueden ser beneficiosas para los diseñadores en el espacio.
-2. Visita nuestro repositorio en GitHub y [crea un incidente](https://github.com/ethereum/ethereum-org-website/issues/new) proponiendo un tema (aún no escribas el contenido).
+2. Vaya a nuestro repositorio de GitHub y [cree un issue](https://github.com/ethereum/ethereum-org-website/issues/new) proponiendo un tema (no escriba el contenido aún).
3. Espera que sea aprobado por el equipo de diseño.
4. Una vez aprobado, escribe el contenido.
5. Envíelo en la incidencia correspondiente de GitHub.
-### Dibuja nuevas ilustraciones {#prepare-illustrations}
+### Cree nuevas ilustraciones {#prepare-illustrations}
Las visualizaciones son una de las herramientas más poderosas para explicar temas abstractos. Añadir diagramas e infografías supone un enorme potencial. Al fin y al cabo, una imagen vale más que mil palabras.
1. Visite nuestro sitio web y revise las páginas en las que se pueden añadir nuevas infografías.
-2. Asegúrese de que el estilo de ilustración corresponda a nuestros [productos](/assets/).
-3. Ve a nuestro repositorio en GitHub y [crea un incidente](https://github.com/ethereum/ethereum-org-website/issues/new) proponiendo la ilustración.
+2. Asegúrese de que el estilo de la ilustración corresponda a nuestros [recursos](/assets/).
+3. Vaya a nuestro repositorio de GitHub y [cree un issue](https://github.com/ethereum/ethereum-org-website/issues/new) proponiendo la ilustración.
4. El equipo de diseño la revisará.
5. Creamos un nuevo incidente para solicitar a un desarrollador que implemente la nueva imagen.
From 26d1b23e2643c03a848fd8359816b243ea39b299 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:14 -0300
Subject: [PATCH 099/589] update(i18n):
public/content/translations/es/roadmap/pectra/7702/index.md
---
.../es/roadmap/pectra/7702/index.md | 149 ++++++++++++++++++
1 file changed, 149 insertions(+)
create mode 100644 public/content/translations/es/roadmap/pectra/7702/index.md
diff --git a/public/content/translations/es/roadmap/pectra/7702/index.md b/public/content/translations/es/roadmap/pectra/7702/index.md
new file mode 100644
index 00000000000..fa74497748f
--- /dev/null
+++ b/public/content/translations/es/roadmap/pectra/7702/index.md
@@ -0,0 +1,149 @@
+---
+title: Directrices de Pectra 7702
+description: Consulte más información sobre 7702 en la publicación de Pectra
+lang: es
+---
+
+# Pectra 7702
+
+## Resumen {#abstract}
+
+EIP 7702 define un mecanismo para añadir código a una cuenta con titularidad externa (EOA en inglés). Esta propuesta permite que las EOA, las cuentas de Ethereum antiguas, reciban mejoras de funcionalidad de corto plazo, aumentando la usabilidad de las aplicaciones. Esto se hace señalando con el puntero un código ya desplegado usando una nueva tipo de transacción de tipo 4.
+
+Este nuevo tipo de transacción introduce una lista de autorización. Cada tupla de autorización en la lista se define como
+
+```
+[ chain_id, address, nonce, y_parity, r, s ]
+```
+
+**address** es la delegación (código ya desplegado que utilizará la EOA)
+**chain_id** fija la autorización a una cadena específica (o 0 para todas las cadenas)
+**nonce** fija la autorización a un nonce específico de cuenta
+(**y_parity, r, s**) es la firma de la tupla de autorización, definida como keccak(0x05 || rlp ([chain_id ,address, nonce])) por la clave privada de la EOA a la que se aplica la autorización (también llamada autoridad)
+
+Una delegación puede restablecerse delegando a la dirección nula.
+
+La clave privada de la EOA conserva el control total de la cuenta después de la delegación. Por ejemplo, delegar a un Safe no hace que la cuenta sea una multifirma porque todavía hay una única clave que puede saltarse cualquier política de firmado. De aquí en adelante, los desarrolladores deberían diseñar asumiendo que cualquier participante en el sistema podría ser un contrato inteligente. Para los desarrolladores de contratos inteligentes, ya no es seguro asumir que `tx.origin` se refiere a una EOA.
+
+## Buenas prácticas {#best-practices}
+
+**Abstracción de cuenta**: un contrato de delegación debería alinearse con los más amplios estándares de abstracción de cuentas de Ethereum para maximizar la compatibilidad. Concreta e idóneamente debería cumplir o ser compatible con ERC-4337.
+
+\*\*Diseño sin necesidad de permisos resistente a la censura: Ethereum valora la participación sin necesidad de permisos. Un contrato de delegación NO DEBE codificar directamente o confiar en ningún solo comunicador o servicio «de confianza». Esto podría inutilizar la cuenta si el retransmisor deja de estar en línea. Funcionalidades como agrupaciones (por ejemplo, approve+transferFrom) pueden usarse por la EOA en sí sin un retransmisor. Los desarrolladores de aplicaciones que quieren usar funcionalidades avanzadas que permite 7702 (abstracción de gas, retiradas que preservan la privacidad) necesitarán un retransmisor. Aunque existen diferentes arquitecturas de retransmisores, nuestra recomendación es usar [agrupadores 4337](https://www.erc4337.io/bundlers) que apunten al menos a la versión de [punto de entrada 0.8](https://github.com/eth-infinitism/account-abstraction/releases/tag/v0.8.0) porque:
+
+- Proporcionan interfaces normalizadas para la retransmisión
+- Incluyen sistemas de tesorería integrados
+- Garantizan compatibilidad con versiones futuras
+- Admiten bien la resistencia a la censura mediante una [zona de espera pública](https://notes.ethereum.org/@yoav/unified-erc-4337-mempool)
+- Pueden requerir que la función init solo se convoque desde [EntryPoint](https://github.com/eth-infinitism/account-abstraction/releases/tag/v0.8.0)
+
+Es decir, cualquiera debería poder actuar como el retransmisor/patrocinador siempre que proporcione la firma válida requerida o la UserOperation de la cuenta. Esto garantiza la resistencia a la censura: si no se requiere una infraestructura personalizada, las transacciones de un usuario no pueden ser bloqueadas arbitrariamente por un retransmisor de control de acceso. Por ejemplo, el [kit de delegación de MetaMask](https://github.com/MetaMask/delegation-framework/releases/tag/v1.3.0) funciona explícitamente con cualquier agrupador o pagador en cualquier cadena, en vez de requerir un servidor específico de MetaMask.
+
+**Integración de DApps mediante interfaces de carteras**:
+
+Dado que las carteras incluirán en la lista blanca contratos de delegación específicos para EIP-7702, DApps no debería esperar a solicitar directamente las autorizaciones 7702. En su lugar, la integración debe ocurrir a través de interfaces de cartera normalizadas:
+
+- **ERC-5792 (`wallet_sendCalls`)**: permite que DApps solicite carteras para ejecutar llamadas por lotes, facilitando funcionalidades como el procesamiento por lotes de transacciones y la abstracción de gas.
+
+- **ERC-6900**: permite que DApps aproveche las capacidades de cuentas inteligentes modulares, como las claves de sesión y la recuperación de cuentas, a través de módulos administrados por cartera.
+
+Al utilizar estas interfaces, DApps pueden acceder a las funcionalidades de la cuenta inteligente proporcionadas por EIP-7702 sin gestionar directamente las delegaciones, lo que garantiza la compatibilidad y la seguridad en diferentes implementaciones de cartera.
+
+> Nota: no hay un método estandarizado para que DApps solicite directamente las firmas de autorización 7702. Las DApps deben confiar en interfaces de cartera específicas como ERC-6900 para aprovechar las características de EIP-7702.
+
+Para más información:
+
+- [Especificación ERC-5792](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-5792.md)
+- [Especificación ERC-6900](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-6900.md)
+
+**Evitar el bloqueo del proveedor**: en línea con lo anterior, una buena implementación es neutral con respecto al proveedor e interoperable. Lo que a menudo significa adherirse a los estándares emergentes para las cuentas inteligentes. Por ejemplo, [cuenta modular de Alchemy](https://github.com/alchemyplatform/modular-account) utiliza la norma ERC-6900 para cuentas inteligentes modulares y está diseñado con el «uso interoperable sin permiso» en mente.
+
+**Preservación de la privacidad**: si bien la privacidad en cadena es limitada, un contrato de delegación debe esforzarse por minimizar la exposición y la capacidad de enlace de los datos. Esto se puede lograr al admitir características como los pagos de gas en tokens ERC-20 (por lo que los usuarios no necesitan mantener un saldo público de ETH, lo que mejora la privacidad y la experiencia de usuario) y claves de sesión única (que reducen la dependencia de una sola clave a largo plazo). Por ejemplo, EIP-7702 permite pagar gas en tókenes a través de transacciones patrocinadas, y una buena implementación facilitará la integración de dichos pagadores sin filtrar más información de la necesaria. Además, la delegación fuera de la cadena de ciertas aprobaciones (utilizando firmas verificadas en cadena) significa menos transacciones en cadena con la clave principal del usuario, lo que ayuda a la privacidad. Las cuentas que requieren el uso de un transmisor obligan a los usuarios a revelar sus direcciones IP. PublicMempools mejora esto, cuando una transacción/UserOp se propaga a través del mempool, no se puede decir si se originó de la IP que la envió, o simplemente se transmitió a través de ella a través del protocolo p2p.
+
+**Extensibilidad y seguridad modular**: las implementaciones de cuentas deben ser extensibles para que puedan evolucionar con nuevas características y mejoras de seguridad. EIP-7702 le otorga la capacidad de actualizarse (ya que un EOA siempre puede delegar a un nuevo contrato en el futuro para actualizar su lógica). Más allá de la capacidad de actualización, un buen diseño permite la modularidad, por ejemplo, módulos enchufables para diferentes esquemas de firma o políticas de gasto, sin necesidad de volver a desplegarse por completo. El kit de cuentas de Alchemy es un excelente ejemplo, ya que permite a los desarrolladores instalar módulos de validación (para diferentes tipos de firma como ECDSA, BLS, etc.) y módulos de ejecución para lógica personalizada. Para lograr una mayor flexibilidad y seguridad en las cuentas habilitadas para EIP-7702, se anima a los desarrolladores a delegar a un contrato de proxy en lugar de directamente a una implementación específica. Este enfoque permite actualizaciones y modularidad sin problemas sin requerir autorizaciones EIP-7702 adicionales para cada cambio.
+
+Beneficios del patrón de proxy:
+
+- **Actualizable**: actualice la lógica del contrato apuntando el proxy a un nuevo contrato de implementación.
+
+- **Lógica de inicialización personalizada**: incorpore funciones de inicialización dentro del proxy para configurar las variables de estado necesarias de forma segura.
+
+Por ejemplo, el [SafeEIP7702Proxy](https://docs.safe.global/advanced/eip-7702/7702-safe) demuestra cómo se puede utilizar un proxy para inicializar y administrar de forma segura las delegaciones en cuentas compatibles con EIP-7702.
+
+Contras del patrón proxy:
+
+- **Dependencia de actores externos**: tiene que confiar en un equipo externo para no actualizar a un contrato inseguro.
+
+## Consideraciones de seguridad {#security-considerations}
+
+**Vigilancia de reentrada**: con la introducción de la delegación EIP-7702, la cuenta de un usuario puede cambiar dinámicamente entre una cuenta de propiedad externa (EOA) y un contrato inteligente (SC). Esta flexibilidad permite que la cuenta inicie transacciones y sea el objetivo de las llamadas. Como resultado, los escenarios en los que una cuenta se llama a sí misma y hace llamadas externas tendrán `msg.sender` igual a `tx.origin`, lo que socava ciertas suposiciones de seguridad que anteriormente se basaban en que `tx.origin` siempre era un EOA.
+
+Para los desarrolladores de contratos inteligentes, ya no es seguro asumir que `tx.origin` se refiere a una EOA. Del mismo modo, usar `msg.sender == tx.origin` como protección contra ataques de reentrada ya no es una estrategia fiable.
+
+De aquí en adelante, los desarrolladores deberían diseñar asumiendo que cualquier participante en el sistema podría ser un contrato inteligente. Alternativamente, podrían implementar una protección de reentrada explícita utilizando protectores de reentrada con un patrón de modificador «nonReentrant». Recomendamos seguir un modificador auditado, por ejemplo, [Open Zeppelin's Reentrancy Guard](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol). También podrían usar una [variable de almacenamiento transitoria](https://docs.soliditylang.org/en/latest/internals/layout_in_storage.html).
+
+**Consideraciones de seguridad de inicialización**
+
+La aplicación de los contratos de delegación EIP-7702 introduce desafíos de seguridad específicos, en particular en relación con el proceso de inicialización. Surge una vulnerabilidad crítica cuando la función de inicialización (`init`) se acopla atómicamente con el proceso de delegación. En tales casos, un frontrunner (o inversor ventajista) podría interceptar la firma de la delegación y ejecutar la función `init` con parámetros alterados, potencialmente tomando el control de la cuenta.
+
+Este riesgo es especialmente pertinente cuando se intenta utilizar las implementaciones de la cuenta de contrato inteligente (SCA) existentes con EIP-7702 sin modificar sus mecanismos de inicialización.
+
+**Soluciones para mitigar las vulnerabilidades de inicialización**
+
+- Implementar `initWithSig`
+ Reemplace la función estándar `init` con una función `initWithSig` que requiere que el usuario firme los parámetros de inicialización. Este enfoque garantiza que la inicialización solo pueda proceder con el consentimiento explícito del usuario, mitigando así los riesgos de inicialización no autorizada.
+
+- Utilice el punto de entrada de ERC-4337
+ Requiere que la función de inicialización se llame exclusivamente desde el contrato ERC-4337 EntryPoint. Este método aprovecha el marco normalizado de validación y ejecución proporcionado por ERC-4337, añadiendo una capa adicional de seguridad al proceso de inicialización.
+ _(Ver: [Safe Docs](https://docs.safe.global/advanced/eip-7702/7702-safe))_
+
+Al adoptar estas soluciones, los desarrolladores pueden mejorar la seguridad de los contratos de delegación EIP-7702, protegiéndolos contra posibles ataques de inversiones ventajosas durante la fase de inicialización.
+
+**Colisiones de almacenamiento** El código de delegación no borra el almacenamiento existente. Al migrar de un contrato de delegación a otro, los datos residuales del contrato anterior permanecen. Si el nuevo contrato utiliza las mismas ranuras de almacenamiento pero las interpreta de manera diferente, puede provocar un comportamiento no deseado. Por instancia, si la delegación inicial se deriva hacia un contrato cuya ranura de almacenamiento representa un `bool`, y la delegación posterior es hacia un contrato donde la misma ranura representa un `uint`, la falta de coincidencia puede llevar a obtener un resultado impredecible.
+
+\*\* Riesgos de phishing \*\* Con la implementación de la delegación EIP-7702, los activos en la cuenta de un usuario pueden estar completamente controlados por contratos inteligentes. Si un usuario delega sin saberlo su cuenta a un contrato malicioso, un atacante podría fácilmente obtener el control y robar fondos. Cuando se usa `chain_id=0`, la delegación se aplica a todos los identificadores de cadena. Solo delegar a un contrato inmutable (nunca delegar a un proxy), y solo a contratos que se implementaron usando CREATE2 (con código de init estándar - sin contratos metamórficos) para que el desplegador no pueda implementar algo diferente en la misma dirección en otro lugar. De lo contrario, su delegación pone en riesgo su cuenta en todas las demás cadenas EVM.
+
+Cuando los usuarios realizan firmas delegadas, el contrato objetivo que recibe la delegación debe mostrarse de forma clara y destacada para ayudar a mitigar los riesgos de phishing.
+
+**Superficie y seguridad de confianza mínimas**: si bien ofrece flexibilidad, un contrato de delegación debe mantener su lógica central mínima y auditable. El contrato es efectivamente una extensión de la EOA del usuario, por lo que cualquier defecto puede ser catastrófico. Las implementaciones deben seguir las mejores prácticas de la comunidad de seguridad de contratos inteligentes. Por ejemplo, las funciones del constructor o inicializador deben asegurarse cuidadosamente, como lo destaca Alchemy, si usa un patrón proxy bajo 7702, un inicializador sin protección podría permitir que un atacante se haga cargo de la cuenta. Los equipos deben tratar de mantener el código en cadena simple: el contrato 7702 de Ambire tiene solo ~200 líneas de Solidity, minimizando deliberadamente la complejidad para reducir los errores. Es necesario encontrar un equilibrio entre una lógica rica en funciones y la simplicidad que facilita la auditoría.
+
+### Implementaciones conocidas {#known-implementations}
+
+Debido a la naturaleza de EIP 7702, se recomienda que las carteras tengan cuidado al ayudar a los usuarios a delegar a un contrato de terceros. A continuación se enumera una lista de implementaciones conocidas que han sido auditadas:
+
+| Dirección de contrato | Fuente | Auditorías |
+| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0x000000009B1D0aF20D8C6d0A44e162d11F9b8f00 | [Uniswap/calibur](https://github.com/Uniswap/calibur) | [auditorías](https://github.com/Uniswap/calibur/tree/main/audits) |
+| 0x69007702764179f14F51cdce752f4f775d74E139 | [alchemyplatform/modular-account](https://github.com/alchemyplatform/modular-account) | [auditorías](https://github.com/alchemyplatform/modular-account/tree/develop/audits) |
+| 0x5A7FC11397E9a8AD41BF10bf13F22B0a63f96f6d | [AmbireTech/ambire-common](https://github.com/AmbireTech/ambire-common/blob/feature/eip-7702/contracts/AmbireAccount7702.sol) | [auditorías](https://github.com/AmbireTech/ambire-common/tree/feature/eip-7702/audits) |
+| 0x63c0c19a282a1b52b07dd5a65b58948a07dae32b | [MetaMask/delegation-framework](https://github.com/MetaMask/delegation-framework) | [auditorías](https://github.com/MetaMask/delegation-framework/tree/main/audits) |
+| 0x4Cd241E8d1510e30b2076397afc7508Ae59C66c9 | [Equipo de abstracción de cuentas de Ethereum Foundation](https://github.com/eth-infinitism/account-abstraction/blob/develop/contracts/accounts/Simple7702Account.sol) | [auditorías](https://github.com/eth-infinitism/account-abstraction/blob/develop/audits/SpearBit%20Account%20Abstraction%20Security%20Review%20-%20Mar%202025.pdf) |
+| 0x17c11FDdADac2b341F2455aFe988fec4c3ba26e3 | [Luganodes/Pectra-Batch-Contract](https://github.com/Luganodes/Pectra-Batch-Contract) | [auditorías](https://certificate.quantstamp.com/full/luganodes-pectra-batch-contract/23f0765f-969a-4798-9edd-188d276c4a2b/index.html) |
+
+## Directrices de cartera de hardware {#hardware-wallet-guidelines}
+
+Las carteras de hardware no deben exponer la delegación arbitraria. El consenso en el espacio de la cartera de hardware es utilizar una lista de contratos de delegado de confianza. Sugerimos permitir las implementaciones conocidas enumeradas anteriormente y considerar otras caso por caso. Como la delegación de su EOA a un contrato le da control sobre todos los activos, las carteras de hardware deben ser cautelosas con la forma en que implementan 7702.
+
+### Escenarios de integración para aplicaciones complementarias {#integration-scenarios-for-companion-apps}
+
+#### Flojo {#lazy}
+
+Como el EOA todavía funciona como de costumbre, no hay nada que hacer.
+
+NOTA: algunos activos podrían ser rechazados automáticamente por el código de delegación, como ERC 1155 NFT, y el soporte debe ser consciente de ello.
+
+#### Consciente {#aware}
+
+Notifique al usuario que hay una delegación para la EOA comprobando su código y, opcionalmente, ofrezca eliminar la delegación.
+
+#### Delegación estándar {#common-delegation}
+
+El proveedor de hardware enumera los contratos de delegación conocidos e implementa su soporte en el complemento de software. Se recomienda elegir un contrato con soporte completo de ERC 4337.
+
+Los EOA delegados a uno diferente se manejarán como EOA estándar.
+
+#### Delegación personalizada {#custom-delegation}
+
+El proveedor de hardware implementa su propio contrato de delegación y lo agrega a las listas, implementa su soporte en el compañero de software. Se recomienda construir un contrato con soporte completo de ERC 4337.
+
+Los EOA delegados a uno diferente se manejarán como EOA estándar.
From f885b563b912b0c6a159ffd4f3f31ba3ae0d720c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:15 -0300
Subject: [PATCH 100/589] update(i18n):
public/content/translations/es/developers/docs/evm/index.md
---
.../es/developers/docs/evm/index.md | 62 +++++++++++--------
1 file changed, 36 insertions(+), 26 deletions(-)
diff --git a/public/content/translations/es/developers/docs/evm/index.md b/public/content/translations/es/developers/docs/evm/index.md
index 02bafb93b5d..61606902546 100644
--- a/public/content/translations/es/developers/docs/evm/index.md
+++ b/public/content/translations/es/developers/docs/evm/index.md
@@ -4,33 +4,34 @@ description: Una introducción a la máquina virtual de Ethereum y su relación
lang: es
---
-La Maquina Virtual de Ethereum (EVM) es un ecosistema virtual descentralizado que ejecuta código consistentemente y de forma segura en todos los nodos de Ethereum. Los nodos corren la EVM para ejecutar contratos inteligentes, utilizando "[gas](/gas/)" para medir el esfuerzo computacional requerido para las [operaciones](/developers/docs/evm/opcodes/), lo que garantiza una asignación eficiente de recursos y la seguridad de la red.
+La Maquina Virtual de Ethereum (EVM) es un ecosistema virtual descentralizado que ejecuta código consistentemente y de forma segura en todos los nodos de Ethereum. Los nodos ejecutan la EVM para ejecutar contratos inteligentes, utilizando "[gas](/developers/docs/gas/)" para medir el esfuerzo computacional requerido para las [operaciones](/developers/docs/evm/opcodes/), lo que garantiza una asignación eficiente de recursos y la seguridad de la red.
## Requisitos previos {#prerequisites}
-Para comprender la EVM es necesario estar familiarizado con terminología básica y común de las ciencias informáticas, como [bytes](https://wikipedia.org/wiki/Byte), [memoria](https://wikipedia.org/wiki/Computer_memory) y [pila](https://wikipedia.org/wiki/Stack_(abstract_data_type)). También sería útil sertirse cómodo con los conceptos de criptografía/cadena de bloques[funciones hash](https://wikipedia.org/wiki/Cryptographic_hash_function) y el [árbol Merkle](https://wikipedia.org/wiki/Merkle_tree).
+Para comprender la EVM es necesario tener cierta familiaridad con la terminología común en las ciencias de la computación, como los [bytes](https://wikipedia.org/wiki/Byte), la [memoria](https://wikipedia.org/wiki/Computer_memory) y una [pila](https://wikipedia.org/wiki/Stack_\(abstract_data_type\)). También sería útil estar familiarizado con conceptos de criptografía/blockchain, como las [funciones de hash](https://wikipedia.org/wiki/Cryptographic_hash_function) y el [árbol de Merkle](https://wikipedia.org/wiki/Merkle_tree).
-## Del libro de contabilidad a la máquina de estado {#from-ledger-to-state-machine}
+## Del libro mayor a la máquina de estado {#from-ledger-to-state-machine}
La analogía del "libro de contabilidad distribuido" suele utilizarse para describir blockchains como Bitcoin, que permite la existencia de una moneda descentralizada que utiliza herramientas fundamentales de criptografía. El libro mayor mantiene un registro de actividad que debe adherirse a un conjunto de reglas que rigen lo que alguien puede y no puede hacer para modificar el libro. Por ejemplo, una dirección de Bitcoin no puede gastar más Bitcoin de los que ha recibido previamente. Estas reglas sustentan todas las transacciones de Bitcoin y muchas otras blockchains.
-Aunque Ethereum tenga su propia criptomoneda nativa (Ether), que sigue casi exactamente las mismas reglas intuitivas, también permite el uso de una función mucho más poderosa: [los contratos inteligentes](/developers/docs/smart-contracts/). Para explicar esta característica más compleja se requiere una analogía más sofisticada. En lugar de un libro mayor distribuido, Ethereum es una [máquina de estado](https://wikipedia.org/wiki/Finite-state_machine) distribuida. El estado de Ethereum es una gran estructura de datos, que no solo sostiene todas las cuentas y saldos, sino que también alberga el _estado de la máquina_. Este puede cambiar de bloque a bloque según un conjunto de reglas predefinidas, así como ejecutar un código de máquina arbitrario. Las reglas específicas de cambiar el estado de bloque a bloque las define la EVM.
+Aunque Ethereum tiene su propia criptomoneda nativa (ether) que sigue casi exactamente las mismas reglas intuitivas, también posibilita una función mucho más poderosa: los [contratos inteligentes](/developers/docs/smart-contracts/). Para explicar esta característica más compleja se requiere una analogía más sofisticada. En lugar de un libro mayor distribuido, Ethereum es una [máquina de estado](https://wikipedia.org/wiki/Finite-state_machine) distribuida. El estado de Ethereum es una gran estructura de datos que contiene no solo todas las cuentas y saldos, sino también un _estado de máquina_, que puede cambiar de bloque en bloque según un conjunto de reglas predefinidas y ejecutar código de máquina arbitrario. Las reglas específicas de cambiar el estado de bloque a bloque las define la EVM.
- _Diagrama adaptado de [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+
+_Diagrama adaptado de [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
-## Función de transición de estado de Ethereum {#the-ethereum-state-transition-function}
+## La función de transición de estado de Ethereum {#the-ethereum-state-transition-function}
-La EVM se comporta como una función matemática: dada una entrada, esta produce una salida determinista. Por tanto, es bastante útil para describir formalmente a Ethereum como una **función de transición de estado**:
+La EVM se comporta como una función matemática: dada una entrada, esta produce una salida determinista. Por lo tanto, es bastante útil describir formalmente a Ethereum como que tiene una **función de transición de estado**:
```
Y(S, T)= S'
```
-Dado un estado válido anterior `(S)` y un nuevo conjunto de transacciones válidas `(T)`, la función de transición de estado de Ethereum `Y(S, T)` produce un nuevo estado de salida válido `S'`.
+Dado un estado válido anterior `(S)` y un nuevo conjunto de transacciones válidas `(T)`, la función de transición de estado de Ethereum `Y(S, T)` produce un nuevo estado de salida válido `S'`
### Estado {#state}
-En el contexto de Ethereum, el estado es una gran estructura de datos llamada [Merkle Patricia Trie modificado](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/), que mantiene todas las [cuentas](/developers/docs/accounts/) enlazadas mediante los hashes y reducibles a un solo hash raíz almacenado en la cadena de bloques.
+En el contexto de Ethereum, el estado es una enorme estructura de datos llamada [Trie de Merkle Patricia modificado](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/), que mantiene todas las [cuentas](/developers/docs/accounts/) vinculadas por hashes y reducibles a un único hash raíz almacenado en la cadena de bloques.
### Transacciones {#transactions}
@@ -40,38 +41,47 @@ La creación de contratos da lugar a la creación de una nueva cuenta de contrat
## Instrucciones de la EVM {#evm-instructions}
-La EVM se ejecuta como una [máquina de pila](https://wikipedia.org/wiki/Stack_machine) con una profundidad de 1024 ítems. Cada ítem es una palabra de 256 bits, que se selecciona para utilizar fácilmente con la criptografía de 256 bits (como los hashes Keccak 256 o las firmas secp256k1).
+La EVM se ejecuta como una [máquina de pila](https://wikipedia.org/wiki/Stack_machine) con una profundidad de 1024 elementos. Cada ítem es una palabra de 256 bits, que se selecciona para utilizar fácilmente con la criptografía de 256 bits (como los hashes Keccak 256 o las firmas secp256k1).
Durante la ejecución, la EVM mantiene una _memoria_ temporal (como un array de bytes con direccionamiento por palabras), que no se conserva entre transacciones.
-Los contratos, sin embargo, contienen un Merkle Patricia trie de _almacenamiento_ (como una matriz de palabras con direccionamiento por palabra), asociado a la cuenta en cuestión y que forma parte del estado global.
+### Almacenamiento transitorio
-El bytecode compilado del contrato inteligente se ejecuta a través de [códigos de operación](/developers/docs/evm/opcodes) de la EVM, que realizan operaciones estándar de pila como `XOR`, `AND`, `ADD`, `SUB`, etc. La EVM también implementa varias operaciones de pila específicas de las cadenas de bloques, como `ADDRESS`, `BALANCE`,`BLOCKHASH`, etc.
+El almacenamiento transitorio es un almacén de clave-valor por transacción al que se accede a través de los códigos de operación `TSTORE` y `TLOAD`. Persiste en todas las llamadas internas durante la misma transacción, pero se borra al final de la transacción. A diferencia de la memoria, el almacenamiento transitorio se modela como parte del estado de la EVM en lugar del marco de ejecución; sin embargo, no se guarda en el estado global. El almacenamiento transitorio permite compartir el estado temporal de forma eficiente en cuanto a gas entre las llamadas internas durante una transacción.
- _Diagramas adaptados de la [Ethereum EVM ilustrada](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+### Almacenamiento
+
+Los contratos contienen un trie de _almacenamiento_ Merkle Patricia (como una matriz de palabras con direccionamiento por palabra), asociado con la cuenta en cuestión y parte del estado global. Este almacenamiento persistente difiere del almacenamiento transitorio, ya que está disponible solo durante una única transacción y no forma parte del trie de almacenamiento persistente de la cuenta.
+
+### Códigos de operación
+
+El bytecode compilado del contrato inteligente se ejecuta como una serie de [códigos de operación](/developers/docs/evm/opcodes) de la EVM, que realizan operaciones de pila estándar como `XOR`, `AND`, `ADD`, `SUB`, etc. La EVM también implementa varias operaciones de pila específicas de la cadena de bloques, como `ADDRESS`, `BALANCE`, `BLOCKHASH`, etc. El conjunto de códigos de operación también incluye `TSTORE` y `TLOAD`, que proporcionan acceso al almacenamiento transitorio.
+
+
+_Diagramas adaptados de [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
## Implementaciones de la EVM {#evm-implementations}
Todas las implementaciones de la EVM deben ser conformes con la especificación descrita en el protocolo de Ethereum.
-Durante los nueve años de historia de Ethereum, la EVM ha pasado varias revisiones y existen varias implementaciones de la EVM en distintos lenguajes de programación.
+A lo largo de los diez años de historia de Ethereum, la EVM ha sido sometida a varias revisiones y existen varias implementaciones de la EVM en diversos lenguajes de programación.
-[Los clientes de ejecución de Ethereum](/developers/docs/nodes-and-clients/#execution-clients) incluyen una implementación de EVM. Además, existen múltiples implementaciones independientes, que incluyen:
+Los [clientes de ejecución de Ethereum](/developers/docs/nodes-and-clients/#execution-clients) incluyen una implementación de la EVM. Además, existen múltiples implementaciones independientes, que incluyen:
-- [Py-EVM](https://github.com/ethereum/py-evm) - _Python_.
-- [evmone](https://github.com/ethereum/evmone) - _C++_.
-- [ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) - _JavaScript_.
+- [Py-EVM](https://github.com/ethereum/py-evm) - _Python_
+- [evmone](https://github.com/ethereum/evmone) - _C++_
+- [ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) - _JavaScript_
- [revm](https://github.com/bluealloy/revm) - _Rust_
-## Más información {#further-reading}
+## Lecturas recomendadas {#further-reading}
-- [Libro amarillo de Ethereum](https://ethereum.github.io/yellowpaper/paper.pdf)
-- [Jellopaper, también conocido como KEVM: semántica de EVM en K](https://jellopaper.org/)
-- [El Beigepaper](https://github.com/chronaeon/beigepaper)
-- [Códigos de operación de la máquina virtual de Ethereum](https://www.ethervm.io/)
-- [Referencia interactiva de códigos de operación de máquina virtual Ethereum](https://www.evm.codes/)
-- [Una breve introducción a la documentación de Solidity](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6)
-- [Dominio de Ethereum: la Máquina Virtual de Ethereum](https://github.com/ethereumbook/ethereumbook/blob/openedition/13evm.asciidoc)
+- [Ethereum Yellowpaper](https://ethereum.github.io/yellowpaper/paper.pdf)
+- [Jellopaper, también conocido como KEVM: Semántica de la EVM en K](https://jellopaper.org/)
+- [The Beigepaper](https://github.com/chronaeon/beigepaper)
+- [Códigos de operación de la Máquina Virtual de Ethereum](https://www.ethervm.io/)
+- [Referencia interactiva de códigos de operación de la Máquina Virtual de Ethereum](https://www.evm.codes/)
+- [Una breve introducción en la documentación de Solidity](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6)
+- [Mastering Ethereum - La Máquina Virtual de Ethereum](https://github.com/ethereumbook/ethereumbook/blob/openedition/13evm.asciidoc)
## Temas relacionados {#related-topics}
From c397a59a1b35eec58ebc3efba95254c9726ba8cb Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:16 -0300
Subject: [PATCH 101/589] update(i18n):
src/intl/es/page-staking-deposit-contract.json
---
src/intl/es/page-staking-deposit-contract.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/intl/es/page-staking-deposit-contract.json b/src/intl/es/page-staking-deposit-contract.json
index 25921b62bdb..e64a1cbbcd3 100644
--- a/src/intl/es/page-staking-deposit-contract.json
+++ b/src/intl/es/page-staking-deposit-contract.json
@@ -8,7 +8,7 @@
"page-staking-deposit-contract-confirm-address": "Confirmar para mostrar dirección",
"page-staking-deposit-contract-copied": "Dirección copiada",
"page-staking-deposit-contract-copy": "Copiar dirección",
- "page-staking-deposit-contract-blockexplorer": "Ver contrato en Etherscan",
+ "page-staking-deposit-contract-blockexplorer": "Ver contrato en Blockscout",
"page-staking-deposit-contract-h2": "No es aquí donde usted apuesta",
"page-staking-deposit-contract-launchpad": "Apueste usando la plataforma de lanzamiento",
"page-staking-deposit-contract-launchpad-2": "Use la plataforma de lanzamiento",
From 0f10ba7f844972b5ce2a9123f4eb2a64bf1c063e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:18 -0300
Subject: [PATCH 102/589] update(i18n):
public/content/translations/es/roadmap/pectra/maxeb/index.md
---
.../es/roadmap/pectra/maxeb/index.md | 205 ++++++++++++++++++
1 file changed, 205 insertions(+)
create mode 100644 public/content/translations/es/roadmap/pectra/maxeb/index.md
diff --git a/public/content/translations/es/roadmap/pectra/maxeb/index.md b/public/content/translations/es/roadmap/pectra/maxeb/index.md
new file mode 100644
index 00000000000..719a1bbd4f2
--- /dev/null
+++ b/public/content/translations/es/roadmap/pectra/maxeb/index.md
@@ -0,0 +1,205 @@
+---
+title: MaxEB de Pectra
+description: Más información sobre MaxEB en la publicación de Pectra
+lang: es
+---
+
+# MaxEB {#maxeb}
+
+_tl;dr:_ La bifurcación dura Petra permite a los validadores de Ethereum optar por un balance efectivo máximo más alto y por intereses sobre intereses mediante la conversión de los credenciales de retirada de **Tipo 1** a los de **Tipo 2**. La herramienta oficial para hacer esto es el lanzador. Esta operación no se puede revertir.
+
+## Presentación {#overview}
+
+### ¿A quién le afecta? {#who-is-affected}
+
+Todos los que ejecuten un validador —probablemente sea alguien que conoce el índice (p. ej., [Validador #12345](https://beaconcha.in/validator/12345)) de un validador bajo su control—. Si usa un protocolo para ejecutar un validador (p. ej., Lido CSM o Rocket Pool), tendrá que consultar con ellos para ver si admiten maxEB y cuándo lo admiten.
+
+Si hace staking con un token de staking líquido (p. ej., rETH o stETH), no se requiere ni se recomienda ninguna acción.
+
+### ¿Qué es «maxEB»? {#what-is-maxeb}
+
+maxEB = balance máximo efectivo de un validador. Hasta la bifurcación dura Pectra, cada validador gana sobre un máximo de 32 ETH. Después de Pectra, los validadores tienen la opción de ganar sobre cualquier balance entre 32 y 2048 ETH, en incrementos de 1 ETH optando participar en el cambio.
+
+### ¿Cómo elige participar un validador? {#how-does-a-validator-opt-in}
+
+Un validador elige participar en el cambio maxEB pasando de los credenciales de retirada de **Tipo 1** a los de **Tipo 2**. Esto puede hacerse en [Launchpad (Acciones del validador)](https://launchpad.ethereum.org/validator-actions) después de que se active la bifurcación dura Pectra. Como con **Tipo 0** → **Tipo 1**, convertir de **Tipo 1** → **Tipo 2** es un proceso irreversible.
+
+### ¿Qué es una credencial de retirada? {#whats-a-withdrawal-credential}
+
+Cuando ejecuta un validador, tiene un conjunto de credenciales de retirada. Estos se pueden encontrar en los datos de depósito json o se pueden ver en el beaconcha.in de su validador [pestaña de depósito].
+(https://beaconcha.in/validator/12345#deposits).
+
+1. Credenciales de retirada de **tipo 0**: si las credenciales de retirada de su validador comienzan con `0x00...`, usted realizó un depósito antes de la bifurcación dura de Shapella y aún no tiene una dirección de retirada configurada.
+
+
+
+2. Credenciales de retirada de **tipo 1**: si los credenciales de retirada de su validador comienzan por `0x01...`, usted realizó un depósito antes de la bifurcación dura de Shapella o ya convirtió sus credenciales de **tipo 0** a credenciales de **tipo 1**.
+
+
+
+3. Credenciales de retirada de **tipo 2**: este nuevo tipo de credencial de retirada comenzará por `0x02...` y se habilitará después de Pectra. Los validadores con credenciales de **tipo 2** a veces son llamados **validadores compuestos**
+
+| **Permitido** | **No permitido** |
+| ----------------- | ----------------- |
+| ✅ Tipo 0 → Tipo 1 | ❌ Tipo 0 → Tipo 2 |
+| ✅ Tipo 1 → Tipo 2 | ❌ Tipo 1 → Tipo 0 |
+| | ❌ Tipo 2 → Tipo 1 |
+| | ❌ Tipo 2 → Tipo 0 |
+
+### Riesgos {#risks}
+
+MaxEB permite a un validador mandar todo su balance a otro validador. Los usuarios que envíen una solicitud de consolidación deben verificar el origen y el contenido de la transacción que están firmando. La herramienta oficial para sacarle partido a las funcionalidades de maxEB es el lanzador. Si decide usar una herramienta de terceros, debería comprobar que:
+
+- La clave pública de la fuente del validador y la dirección de retirada coinciden con el validador que controlan
+- La clave pública del validador de destino es correcta y les pertenece
+- La petición es una conversión, no una consolidación, si no tienen intención de enviar fondos a otro validador
+- La transacción se está firmando por la dirección de retirada correcta
+
+**Recomendamos encarecidamente** que delibere sobre cualquier herramienta de terceros que tenga pensado usar con la [comunidad de EthStaker](https://ethstaker.org/about). Es un lugar útil para verificar la sensatez de su enfoque y evitar errores. Si usa una herramienta maliciosa o mal configurada, **el balance completo de su validador podría envuarse a un validador que no controla** —y no hay forma de recuperarlo—.
+
+## Detalles técnicos {#technical-details}
+
+### El flujo {#the-flow}
+
+Habrá dos usos posibles de la operación `ConsolidationRequest`:
+
+1. Convertir un validador existente de **tipo 1** a un validador de **tipo 2**
+2. Consolidar otros validadores en un validador de **tipo 2** existente
+
+En una conversión de un validador **Tipo 1** a un validador **Tipo 2**, tanto la _fuente_ como el _objetivo_ serán el validador que está convirtiendo. La operación costará gas y se pondrá a la cola detrás de otras solicitudes de consolidación. Esta cola está **separada** de la cola de depósitos y no se ve afectada por los nuevos depósitos de validador y se puede ver en [pectrified.com](https://pectrified.com/).
+
+Para consolidar los validadores, debe tener un _validador de destino_ que tenga una credencial de retirada **Tipo 2**. Este es el destino de cualquier saldo validador que se consolide y que se conserve el índice.
+
+### Requisitos para convertir a tipo 2 {#requirements-for-converting-to-type-2}
+
+Esto será necesario para el primer validador que convierta a **Tipo 2**. El índice de este validador se conserva y está activo. Para una conversión, el _validador de origen_ == el \*validador de destino. \*
+
+El validador debe...
+
+- estar activo
+- tener credenciales de retirada de **tipo 1**
+- no estar en un estado de salida (o cortado)
+- no tener retiradas activadas manualmente pendientes (no se aplica a los barridos)
+
+
+
+### Requisitos para consolidar {#requirements-for-consolidating}
+
+Esta es la _misma operación_ que la conversión, pero es cuando el _validador de origen_ es diferente del _validador de destino_. El índice del validador de destino se conserva y acepta el saldo del validador de origen. El índice del validador de origen se pone en un estado `EXITED`.
+
+En este caso, el validador de código fuente tiene todos los mismos requisitos que los anteriores, además de:
+
+- haber estado activo durante al menos ~27,3 horas (uno `SHARD_COMMITTEE_PERIOD`)
+
+El validador de destino debe
+
+- tener credenciales de retirada del **tipo 2**
+- no estar en un estado de salida.
+
+
+
+### La petición de consolidación {#the-consolidation-request}
+
+La solicitud de consolidación la firmará la dirección de retirada asociada con el validador de origen y tendrá:
+
+1. Dirección del validador de origen (p. ej., `0x15F4B914A0cCd14333D850ff311d6DafbFbAa32b`)
+2. Clave pública del validador de origen (p. ej., `0xa1d1ad0714035353258038e964ae9675dc0252ee22cea896825c01458e1807bfad2f9969338798548d9858a571f7425c`)
+3. Clave pública de ese validador de destino
+
+En una conversión, 2 y 3 serán iguales. Esta operación se puede hacer en [el lanzador](https://launchpad.ethereum.org/).
+
+### Requisitos de firma {#signing-requirements}
+
+Para enviar una `ConsolidationRequest`, la **dirección de retirada del validador de origen** debe firmar la solicitud. Esto demuestra el control sobre los fondos del validador.
+
+### ¿Qué se ha firmado? {#what-is-signed}
+
+Se utiliza una [raíz de firma] separada por dominio (https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#compute_signing_root) del objeto `ConsolidationRequest`.
+
+- **Dominio:** `DOMAIN_CONSOLIDATION_REQUEST`
+- **Firmando campos raíz:**
+ - `source_pubkey`: `BLSPubkey`
+ - `target_pubkey`: `BLSPubkey`
+ - `source_address`: `ExecutionAddress`
+
+La **firma BLS** resultante se envía junto con la solicitud.
+
+Nota: la firma se realiza mediante la dirección de retirada, no con la clave de validación.
+
+### Retiradas parciales {#partial-withdrawals}
+
+Los validadores con credenciales **Tipo 1** obtienen barridos automáticos sin gas de su exceso de saldo (cualquier cosa por encima de 32 ETH) a su dirección de retirada. Debido a que **Tipo 2** permite a un validador componer saldos en incrementos de 1 ETH, no barrerá automáticamente los saldos hasta que alcance 2048 ETH. Las retiradas parciales en los validadores **Tipo 2** deben activarse manualmente y costarán gas.
+
+## Herramientas de consolidación {#consolidation-tooling}
+
+Hay varias herramientas disponibles para gestionar las consolidaciones. La herramienta oficial, creada por Ethereum Foundation, es [Launchpad](https://launchpad.ethereum.org/en/validator-actions). También hay herramientas de terceros creadas por entidades de la comunidad de participaciones que pueden ofrecer características que no proporcione el lanzador. Si bien Ethereum Foundation no audita ni respalda las herramientas aquí, las siguientes son herramientas de código abierto de miembros conocidos de la comunidad.
+
+| Herramienta | Sitio web | Código abierto | Creador | Auditado | Interfaz | Características destacables |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------- | ------------------------------ | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
+| Administrador de participaciones de Pectra | pectrastaking.com | Sí, Apache 2.0 | [Pier Two](https://piertwo.com/) | No | Interfaz de usuario web | Wallet Connect, funciona con SAFE |
+| Herramienta CLI de Pectra Validator Ops | [GitHub](https://github.com/Luganodes/Pectra-Batch-Contract) | Sí, MIT | [Luganodes](https://www.luganodes.com/) | Sí, cuantstamp [mayo de 2025](https://certificate.quantstamp.com/full/luganodes-pectra-batch-contract/23f0765f-969a-4798-9edd-188d276c4a2b/index.html) | Línea de comandos | Batching, para muchos validadores a la vez |
+| Ethereal | [GitHub](https://github.com/wealdtech/ethereal) | Sí, Apache 2.0 | [Jim McDonald](https://www.attestant.io/team/) | No | Línea de comandos | Lista completa de características para la gestión de validadores y nodos |
+| Siren | [GitHub](https://github.com/sigp/siren) | Sí, Apache 2.0 | [Sigma Prime](https://sigmaprime.io/) | No | Algunas líneas de comandos, pero principalmente la interfaz de usuario web | Solo funciona si está utilizando el cliente de consenso de Lighthouse |
+| Consolideth.app | https://consolideth.app/ [GitHub](https://github.com/Stakely/consolideth) | Sí, licencias MIT | [Stakely](https://stakely.io/) | No | IU web, alojada por Stakely y lista para ser autoalojada gratuitamente. | Admite conexiones con las principales billeteras, incluyendo Safe con WalletConnect. |
+
+## Preguntas frecuentes {#faq}
+
+### ¿Dar el consentimiento cambia mi propuesta de suerte o recompensas? {#change-luck-or-rewards}
+
+No. Dar el consentimiento no disminuye su cambio de propuesta: sus deberes y selección de propuestas siguen siendo los mismos. Por ejemplo, si tiene dos validadores de 32 ETH frente a un validador de 64 ETH, tendrá las mismas posibilidades totales de ser seleccionado para proponer un bloque y ganar recompensas.
+
+### ¿Dar consentimiento cambia en algo mis riesgos de sufrir recortes? {#change-slashing-risk}
+
+Para operadores más pequeños o no profesionales, la respuesta corta es no. La respuesta más larga es que para los operadores profesionales que ejecutan muchos validadores por nodo con alerta rápida, consolidar en menos validadores puede reducir su capacidad de reaccionar a un recorte y evitar eventos en cascada. El recorte inicial de _penalización_ para todos los validadores se ha reducido drásticamente de 1 ETH (por 32 ETH) a 0,0078125 ETH (por 32 ETH) para compensar este riesgo.
+
+### ¿Tengo que salir de mi validador para convertir? {#exit-validator}
+
+No. Puede convertir en su lugar sin tener que salir.
+
+### ¿Cuánto tiempo llevará convertir / consolidar? {#how-long}
+
+Un mínimo de 27,3 horas, aunque las consolidaciones también tienen una lista de espera. Esta cola es independiente de los depósitos y las retiradas y no se ve afectada por ellos.
+
+### ¿Puedo mantener mi índice de validador? {#keep-validator-index}
+
+Sí. La conversión en el lugar mantiene el mismo índice de validador. Si consolida múltiples validadores, solo podrá mantener el índice del _validador de destino_.
+
+### ¿Perderé las certificaciones? {#miss-attestations}
+
+Durante una consolidación en otro validador, se sale el validador de la fuente y hay un período de espera de ~ 27 horas antes de que el saldo sea activo en el validador de destino. Este período \*\* no afecta las métricas de rendimiento \*\*.
+
+### ¿Incurriré en penalizaciones? {#incur-penalties}
+
+No. Mientras su validador esté en línea, no incurrirá en penalizaciones.
+
+### ¿Las direcciones de retirada de los validadores que se consolidan tienen que coincidir? {#withdrawal-addresses-match}
+
+No. Aunque la _fuente_ debe autorizar la solicitud desde su propia dirección.
+
+### ¿Mis recompensas se agravarán después de convertir? {#rewards-compound}
+
+Sí. Con credenciales de \*\* Tipo 2 \*\*, las recompensas superiores a 32 ETH se reenvían automáticamente para participación, pero no al instante. Debido a un pequeño búfer (llamado [_histéresis_] (https://eth2book.info/capella/part2/incentives/balances/#hysteresis)), su saldo debe alcanzar \*\* alrededor de 1,25 eth más \*\* antes de volver a enviar para participación la cantidad adicional. Entonces, en lugar de capitalizarse a 33,0 ETH, ocurre en 33,25 (saldo efectivo = 33 ETH), luego 34,25 (saldo efectivo = 34 ETH), etc.
+
+### ¿Aún puedo obtener barridos automáticos después de convertir? {#automatic-sweep}
+
+Los barridos automáticos solo ocurrirán con exceso de saldos por encima de 2048. Para todas las demás retiradas parciales, tendrá que activarlas manualmente.
+
+### ¿Puedo cambiar de opinión y volver del Tipo 2 al Tipo 1? {#go-back-to-type1}
+
+No. La conversión a **tipo 2** es irreversible.
+
+### Si quiero consolidar varios validadores, ¿tengo que convertir cada uno a Tipo 2 primero? {#consolidate-multiple-validators}
+
+¡Pues no! Convierta un validador a Tipo 2 y luego úselo como objetivo. Todos los demás validadores consolidados en ese objetivo de Tipo 2 pueden ser Tipo 1 o Tipo 2
+
+### Mi validador está fuera de línea o por debajo de 32 ETH, ¿todavía puedo convertirlo? {#offline-or-below-32eth}
+
+Sí. Mientras esté activo (no salga) y pueda firmar con su dirección de retirada, puede convertirlo.
+
+## Recursos {#resources}
+
+- [Especificaciones de consenso de Electra] (https://github.com/ethereum/consensus-specs/blob/dev/specs/electra/beacon-hain.md): esta es la versión más real en la que debe confiar. En caso de duda, lea las especificaciones
+- No todo el mundo se sienten cómodo operando con un código, por eso [este maxeb-gpt] (https://chatgpt.com/g/g-67f1650fb48081918f555e0c8d1c2ae9-maxeb-gpt) interpretar las especificaciones puede servirle de ayuda. _Descargo de responsabilidad: las especificaciones, no la IA, deben confiar en la verdad, ya que la IA puede malinterpretar la información o dar respuestas descabelladas_
+- [pectrified.com] (https://pectrifice.com/): ver el estado de consolidaciones, depósitos y tiempos de listas de espera
+- [Ethereal] (https://github.com/wealdtech/ethereal): herramienta CLI creada por la comunidad para administrar tareas de validador comunes
+- [Batch-validator-depositor](https://github.com/attestantio/batch-validator-depositor): contrato creado por la comunidad que permite depositar múltiples validadores de Ethereum en una sola transacción
From 6fda42073718427dc944a006ea45b6d04df9ae2a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:20 -0300
Subject: [PATCH 103/589] update(i18n):
public/content/translations/es/roadmap/beacon-chain/index.md
---
.../es/roadmap/beacon-chain/index.md | 39 +++++++++----------
1 file changed, 19 insertions(+), 20 deletions(-)
diff --git a/public/content/translations/es/roadmap/beacon-chain/index.md b/public/content/translations/es/roadmap/beacon-chain/index.md
index a148326204a..2de7a9518c3 100644
--- a/public/content/translations/es/roadmap/beacon-chain/index.md
+++ b/public/content/translations/es/roadmap/beacon-chain/index.md
@@ -1,6 +1,6 @@
---
title: La cadena de baliza
-description: 'Descubra todo lo relacionado con la Cadena de Baliza: la actualización que introdujo la prueba de participación en Ethereum.'
+description: "Descubra todo lo relacionado con la Cadena de Baliza: la actualización que introdujo la prueba de participación en Ethereum."
lang: es
template: upgrade
image: /images/upgrades/core.png
@@ -11,39 +11,39 @@ summaryPoint3: La Cadena de Baliza introdujo la lógica de consenso y el protoco
---
- La cadena de baliza enviada el 1 de diciembre de 2020 formalizó la prueba de participación como mecanismo de consenso de Ethereum con la actualización a La Fusión el 15 de septiembre de 2022.
+ La Beacon Chain se lanzó el 1 de diciembre de 2020 y formalizó la prueba de participación como el mecanismo de consenso de Ethereum con la actualización The Merge el 15 de septiembre de 2022.
## ¿Qué es la cadena de baliza? {#what-is-the-beacon-chain}
-La cadena de baliza es el nombre original de la cadena de bloques de la prueba de participación que fue lanzada en 2020. Fue creada para mostrar que la lógica de consenso de la prueba de participación era segura y sostenible, antes de habilitarla en la red principal de Ethereum. Por esta razón, estuvo funcionando paralelamente con la prueba de trabajo de Ethereum. La Cadena de Baliza fue una cadena de bloques 'vacios', pero al cambiar a prueba de trabajo y al cambiar a prueba de participación en Ethereum requiere instrucciones a la Cadena de Baliza para aceptar data de transacciones de clientes de ejecución, juntarlos en bloques y después organizarlos en la cadena de bloques usando un mecanismo de consenso usando una base prueba de participación. Al mismo tiempo, los clientes originales de Ethereum apagaron su minería, propagación de bloques y lógica de consenso, confiándolo todo a la cadena de baliza. A este evento se le denominó [La Fusión](/roadmap/merge/). Una vez producida La Fusión, ya no había dos cadenas de bloques. En lugar de ello, solo había una prueba de participación en Ethereum, que ahora requiere dos clientes diferentes por nodo. La cadena de baliza es ahora la capa de consenso, una red entre pares de clientes de consenso que maneja el bloque de intercambio de información y la lógica de consenso, mientras que los clientes originales forman la capa de ejecución, que es la responsable del intercambio de información y de la ejecución de transacciones, y de la gestión del estado de Ethereum. Las dos capas pueden comunicarse entre sí usando Engine API.
+La cadena de baliza es el nombre original de la cadena de bloques de la prueba de participación que fue lanzada en 2020. Fue creada para mostrar que la lógica de consenso de la prueba de participación era segura y sostenible, antes de habilitarla en la red principal de Ethereum. Por esta razón, estuvo funcionando paralelamente con la prueba de trabajo de Ethereum. La Cadena de Baliza fue una cadena de bloques 'vacios', pero al cambiar a prueba de trabajo y al cambiar a prueba de participación en Ethereum requiere instrucciones a la Cadena de Baliza para aceptar data de transacciones de clientes de ejecución, juntarlos en bloques y después organizarlos en la cadena de bloques usando un mecanismo de consenso usando una base prueba de participación. Al mismo tiempo, los clientes originales de Ethereum apagaron su minería, propagación de bloques y lógica de consenso, confiándolo todo a la cadena de baliza. Este evento se conoció como [The Merge](/roadmap/merge/). Una vez producida La Fusión, ya no había dos cadenas de bloques. En lugar de ello, solo había una prueba de participación en Ethereum, que ahora requiere dos clientes diferentes por nodo. La cadena de baliza es ahora la capa de consenso, una red entre pares de clientes de consenso que maneja el bloque de intercambio de información y la lógica de consenso, mientras que los clientes originales forman la capa de ejecución, que es la responsable del intercambio de información y de la ejecución de transacciones, y de la gestión del estado de Ethereum. Las dos capas pueden comunicarse entre sí usando Engine API.
## ¿Qué hace la cadena de baliza? {#what-does-the-beacon-chain-do}
-Cadena de baliza es el nombre que se le ha dado a un libro mayor de cuentas que dirigía y coordinaba la red de [participantes](/staking/) de Ethereum antes de que esos participantes comenzaran a validar bloques reales de Ethereum. No procesa transacciones ni maneja interacciones de contratos inteligentes, porque eso se esta haciendo a través de la capa de ejecución. La cadena de baliza es responsable de cosas como la gestión de bloques y certificaciones, de la ejecución del algoritmo de bifurcación y de la gestión de recompensas y penalizaciones. Lea más en nuestra [página de arquitectura de nodos](/developers/docs/nodes-and-clients/node-architecture/#node-comparison).
+Beacon Chain es el nombre que se le da a un libro mayor de cuentas que gestionaba y coordinaba la red de [participantes](/staking/) de Ethereum antes de que estos comenzaran a validar bloques reales de Ethereum. No procesa transacciones ni maneja interacciones de contratos inteligentes, porque eso se esta haciendo a través de la capa de ejecución.
+La cadena de baliza es responsable de cosas como la gestión de bloques y certificaciones, de la ejecución del algoritmo de bifurcación y de la gestión de recompensas y penalizaciones.
+Lea más en nuestra [página sobre arquitectura de nodos](/developers/docs/nodes-and-clients/node-architecture/#node-comparison).
-## El impacto de la cadena de baliza {#beacon-chain-features}
+## Impacto de Beacon Chain {#beacon-chain-features}
### Introducción a la participación {#introducing-staking}
-La cadena de baliza introdujo la [prueba de participación](/developers/docs/consensus-mechanisms/pos/) en Ethereum. Esta mantiene la seguridad de Ethereum y permite a los validadores obtener más ETH en el proceso. En la práctica, la participación supone comprometer ETH para poder activar el software de validación. Como participante, se encargará de ejecutar el software que crea y valida los nuevos bloques de la cadena.
+La Beacon Chain introdujo la [prueba de participación](/developers/docs/consensus-mechanisms/pos/) en Ethereum. Esta mantiene la seguridad de Ethereum y permite a los validadores obtener más ETH en el proceso. En la práctica, la participación supone comprometer ETH para poder activar el software de validación. Como participante, se encargará de ejecutar el software que crea y valida los nuevos bloques de la cadena.
-El staking cumple un propósito similar al de la [minería](/developers/docs/consensus-mechanisms/pow/mining/), pero difiere en muchos aspectos. La minería requería de una inversión inicial significativa destinada a la adquisición de un productivo hardware y a cubrir los gastos de consumo energético, lo que derivó en economías de escala y en la promoción de la centralización. La minería tampoco requería la retención de activos colaterales, lo que limitaba los alcances del protocolo a castigar las acciones incorrectas solo tras un ataque.
+La participación cumple una función similar a la que antes tenía la [minería](/developers/docs/consensus-mechanisms/pow/mining/), pero es diferente en muchos aspectos. La minería requería de una inversión inicial significativa destinada a la adquisición de un productivo hardware y a cubrir los gastos de consumo energético, lo que derivó en economías de escala y en la promoción de la centralización. La minería tampoco requería la retención de activos colaterales, lo que limitaba los alcances del protocolo a castigar las acciones incorrectas solo tras un ataque.
La transición de Ethereum a la prueba de participación hace que la red sea significativamente más segura y descentralizada en comparación con la prueba de trabajo. Cuantas más personas participan en la red, más descentralizada y menos segura frente a ataques se vuelve.
-Y usando la prueba de participación como un mecanismo de consenso es un componente fundamental para [la seguridad, respecto al medio ambiente y la escalabilidad de Ethereum que tenemos ahora](/roadmap/vision/).
-
- Si le interesa convertirse en validador y contribuir con la seguridad de Ethereum, [ obtenga más información sobre la participación](/staking/).
+ Si está interesado en convertirse en validador y ayudar a asegurar Ethereum, [aprenda más sobre la participación](/staking/).
-### Preparación para la fragmentación {#setting-up-for-sharding}
+### Preparándose para el sharding {#setting-up-for-sharding}
Al producirse la fusión entre la cadena de baliza y la red principal de Ethereum, la comunidad de Ethereum comenzó a interesarse por la escalabilidad de la red.
@@ -51,30 +51,29 @@ La prueba de participación ofrece las ventajas de contar con un registro de tod
Esta responsabilidad se diferencia de la responsabilidad de la prueba de trabajo, en donde los mineros no tenían obligaciones con la red, quienes podían detener la minería y desactivar el software del nodo permanentemente sin que esto tuviera repercusiones. Tampoco existía un registro de quién proponía los bloques, por lo que no había forma de dividir apropiadamente las responsabilidades de la red.
-[Más sobre la fragmentación](/roadmap/danksharding/)
+[Más sobre sharding](/roadmap/danksharding/)
## Relación entre actualizaciones {#relationship-between-upgrades}
Las actualizaciones de Ethereum están interrelacionadas de alguna manera. Por tanto y a modo de recapitulación, veamos cómo la cadena de baliza influye en otras actualizaciones.
-### La cadena de baliza y La Fusión {#merge-and-beacon-chain}
+### Beacon Chain y The Merge {#merge-and-beacon-chain}
En sus comienzos, la cadena de baliza existía de manera independiente a la red principal de Ethereum, pero se fusionaron en 2022.
- La Fusión
+ The Merge
-### Los fragmentos y la cadena de baliza {#shards-and-beacon-chain}
+### Shards y la Beacon Chain {#shards-and-beacon-chain}
La fragmentación solo podría implementarse en el ecosistema de Ethereum de manera segura a través del mecanismo de consenso de la prueba de participación. La cadena de baliza introdujo apuestas, que se «fusionaron» con la red principal, allanando el camino para la fragmentación y así contribuir a una mayor escalabilidad de Ethereum.
- Cadenas de fragmentos
+ Cadenas shard
-## Más información
+## Seguir leyendo
-- [Más sobre las futuras actualizaciones de Ethereum ](/roadmap/vision)
-- [Más sobre arquitectura de nodos](/developers/docs/nodes-and-clients/node-architecture)
-- [Más sobre la prueba de participación ](/developers/docs/consensus-mechanisms/pos)
+- [Más sobre la arquitectura de nodos](/developers/docs/nodes-and-clients/node-architecture)
+- [Más sobre la prueba de participación](/developers/docs/consensus-mechanisms/pos)
From d36623498ea5f1b866a5473dc9e8da054bd9b78b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:22 -0300
Subject: [PATCH 104/589] update(i18n):
public/content/translations/es/developers/docs/blocks/index.md
---
.../es/developers/docs/blocks/index.md | 79 ++++++++++---------
1 file changed, 40 insertions(+), 39 deletions(-)
diff --git a/public/content/translations/es/developers/docs/blocks/index.md b/public/content/translations/es/developers/docs/blocks/index.md
index 75f73057512..68239f740cc 100644
--- a/public/content/translations/es/developers/docs/blocks/index.md
+++ b/public/content/translations/es/developers/docs/blocks/index.md
@@ -1,6 +1,6 @@
---
title: Bloques
-description: 'Una visión general de los bloques de la blockchain de Ethereum: su estructura de datos, por qué son necesarios y cómo se fabrican.'
+description: "Una visión general de los bloques de la blockchain de Ethereum: su estructura de datos, por qué son necesarios y cómo se fabrican."
lang: es
---
@@ -8,23 +8,24 @@ Los bloques son lotes de transacciones con un hash del bloque anterior en la cad
## Requisitos previos {#prerequisites}
-Los bloques son muy fáciles de manejar incluso para los principiantes. Sin embargo, para ayudarle a comprender mejor esta página, le recomendamos leer primero las secciones de [Cuentas](/developers/docs/accounts/) y [Transacciones](/developers/docs/transactions/) y nuestra [introducción a Ethereum](/developers/docs/intro-to-ethereum/).
+Los bloques son muy fáciles de manejar incluso para los principiantes. Pero para ayudarle a entender mejor esta página, le recomendamos que primero lea [Cuentas](/developers/docs/accounts/), [Transacciones](/developers/docs/transactions/) y nuestra [introducción a Ethereum](/developers/docs/intro-to-ethereum/).
## ¿Por qué se usan los bloques? {#why-blocks}
Para asegurarse de que todos los participantes de la red Ethereum mantienen un estado sincronizado y aceptan el registro de transacciones, estas se organizan en bloques. Lo que significa que decenas (sino cientos) de transacciones se encuentran en curso, confirmadas y sincronizadas al mismo tiempo.
- _Diagrama adaptado de [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+
+_Diagrama adaptado de [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
Al separar los commits (formación exitosa de una cadena), damos a todos los participantes de la red el tiempo suficiente para llegar a un consenso: aunque las solicitudes de transacción ocurren docenas de veces por segundo, los bloques en Ethereum se confirman aproximadamente una vez cada 15 segundos.
-## ¿Cómo funcionan los bloques? {#how-blocks-work}
+## Cómo funcionan los bloques {#how-blocks-work}
Para preservar el historial de transacciones, los bloques se ordenan estrictamente (cada nuevo bloque creado contiene una referencia a su bloque predecesor) y las transacciones dentro de los bloques también se ordenan de manera estricta. Excepto en casos raros o en un momento determinado, todos los participantes en la red están de acuerdo en el número exacto y en el historial de los bloques. Además, están trabajando para agrupar los requerimientos de transacción en tiempo real en el próximo bloque.
Cuando un validador seleccionado aleatoriamente completa un bloque en la red, este se propaga por el resto de la red. Todos los nodos añaden este nuevo bloque al final de sus cadenas de bloque y se selecciona a un nuevo validador para crear el siguiente bloque. El proceso exacto de ensamblaje de bloques y los procesos de compromiso/consenso se encuentran específicados en el protocolo de prueba de participación (PoS) de Ethereum.
-## Protocolo de prueba de participación (PoS) {#proof-of-work-protocol}
+## Protocolo de prueba de participación {#proof-of-stake-protocol}
La prueba de participación (PoS) consiste en lo siguiente:
@@ -40,74 +41,74 @@ La prueba de participación (PoS) consiste en lo siguiente:
Hay mucha información contenida en un bloque. En los niveles más altos, un bloque contiene las siguientes características:
| Campo | Descripción |
-|:---------------- |:------------------------------------------------------------------- |
+| :--------------- | :------------------------------------------------------------------ |
| `ranura` | la ranura a la que pertenece el bloque |
| `proposer_index` | la ID del validador que propone el bloque |
| `parent_root` | el hash del bloque anterior |
| `state_root` | el hash raíz del objeto de estado |
| `cuerpo` | un objeto que contiene varios campos, como se define a continuación |
-El `cuerpo` del bloque contiene una serie de características:
+El `body` del bloque contiene varios campos propios:
| Campo | Descripción |
-|:-------------------- |:-------------------------------------------------------------------- |
+| :------------------- | :------------------------------------------------------------------- |
| `randao_reveal` | un valor utilizado para seleccionar el siguiente bloque propuesto |
| `eth1_data` | información sobre el contrato de depósito |
-| `grafiti` | datos arbitrarios usados para etiquetar bloques |
+| `graffiti` | datos arbitrarios usados para etiquetar bloques |
| `proposer_slashings` | lista de validadores por cortar |
| `attester_slashings` | lista de certificantes por recortar |
-| `certificaciones` | lista de certificaciones a favor del bloque actual |
+| `atestaciones` | lista de atestaciones realizadas para ranuras anteriores |
| `depósitos` | lista de nuevos depósitos en el contrato de depósito |
| `voluntary_exits` | lista de validadores que salen de la red |
| `sync_aggregate` | subconjunto de validadores utilizados para servir a clientes ligeros |
| `execution_payload` | transacciones pasadas desde el cliente de ejecución |
-El campo `certificaciones` contiene una lista con todas las certificaciones del bloque. Las certificaciones poseen su propia tipología y contienen diversos tipos de información. Cada atestación contiene:
+El campo `attestations` contiene una lista de todas las atestaciones en el bloque. Las certificaciones poseen su propia tipología y contienen diversos tipos de información. Cada atestación contiene:
| Campo | Descripción |
-|:------------------ |:------------------------------------------------------------------- |
+| :----------------- | :------------------------------------------------------------------ |
| `aggregation_bits` | una lista de los validadores que participaron en esta certificación |
| `datos` | una terminal con múltiples subcampos |
-| `firma` | firma añadida de todos los validadores que certifican |
+| `firma` | firma agregada de un conjunto de validadores sobre la parte `data` |
-El campo `datos` en la `certificación` contiene lo siguiente:
+El campo `data` en la `attestation` contiene lo siguiente:
-| Campo | Descripción |
-|:------------------- |:---------------------------------------------------------- |
-| `ranura` | el ranura a la que se refiere la certificación |
-| `índice` | índices para certificar validadores |
-| `beacon_block_root` | el hash raíz del bloque de baliza que contiene este objeto |
-| `fuente` | el último puesto de control justificado |
-| `target` | el último bloque de límite de época |
+| Campo | Descripción |
+| :------------------ | :------------------------------------------------------------------- |
+| `ranura` | el ranura a la que se refiere la certificación |
+| `índice` | índices para certificar validadores |
+| `beacon_block_root` | el hash raíz del bloque de baliza considerado la cabeza de la cadena |
+| `fuente` | el último puesto de control justificado |
+| `target` | el último bloque de límite de época |
-Ejecutar transacciones en `execution_payload` actualizará el estado general. Todos los clientes vuelven a ejecutar las transacciones en `execution_payload` para asegurarse de que el nuevo estado coincide con el campo `state_root` del nuevo bloque. Esta es la forma en la que los clientes definen si un nuevo bloque es válido y seguro para añadirlo a sus cadenas de bloque. El parámetro de `execution payload` es en sí mismo un objeto con diferentes campos. También hay un `execution_payload_header` que contiene un compendio de información relevante sobre los datos de ejecución. Estas estructuras de datos se organizan de la siguiente manera:
+La ejecución de las transacciones en el `execution_payload` actualiza el estado global. Todos los clientes vuelven a ejecutar las transacciones en `execution_payload` para asegurarse de que el nuevo estado coincida con el del campo `state_root` del nuevo bloque. Esta es la forma en la que los clientes definen si un nuevo bloque es válido y seguro para añadirlo a sus cadenas de bloque. El `execution payload` en sí es un objeto con varios campos. También hay un `execution_payload_header` que contiene un resumen de información importante sobre los datos de ejecución. Estas estructuras de datos se organizan de la siguiente manera:
El `execution_payload_header` contiene los siguientes campos:
| Campo | Descripción |
-|:------------------- |:------------------------------------------------------------------------- |
+| :------------------ | :------------------------------------------------------------------------ |
| `parent_hash` | hash del bloque principal |
| `fee_recipient` | dirección de cuenta para pagar comisiones de transacción a |
| `state_root` | hash raíz para el estado global después de aplicar cambios en este bloque |
| `receipts_root` | hash de los recibos de transacción trie |
| `logs_bloom` | estructura de datos que contiene registros de eventos |
-| `prev_randao` | valor usado en la selección aleatoria del validador |
+| `prev_randao` | valor utilizado en la selección aleatoria del validador |
| `block_number` | el número del bloque actual |
| `gas_limit` | gas máximo permitido en este bloque |
| `gas_used` | la cantidad real de gas utilizada en este bloque |
-| `marca de tiempo` | el tiempo del bloque |
+| `timestamp` | el tiempo del bloque |
| `extra_data` | datos adicionales arbitrarios como bytes sin procesar |
| `base_fee_per_gas` | el valor de la tarifa de base |
| `block_hash` | hash del bloque de ejecución |
| `transactions_root` | hash raíz de las transacciones en la carga útil |
| `withdrawal_root` | hash raíz de las retiradas en la carga útil |
-El propio `execution_payload` contiene lo siguiente (observe que esto es idéntico al encabezamiento, excepto que en lugar del hash raíz de las transacciones incluye la lista real de transacciones e información de retiradas):
+El propio `execution_payload` contiene lo siguiente (tenga en cuenta que es idéntico a la cabecera, excepto que en lugar del hash raíz de las transacciones, incluye la lista real de transacciones y la información sobre los retiros):
| Campo | Descripción |
-|:------------------ |:------------------------------------------------------------------------- |
-| `parent_hash` | hash del bloque padre |
-| `fee_recipient` | dirección de la cuenta para pagar las tarifas de transacción a |
+| :----------------- | :------------------------------------------------------------------------ |
+| `parent_hash` | hash del bloque principal |
+| `fee_recipient` | dirección de cuenta para pagar comisiones de transacción a |
| `state_root` | hash raíz para el estado global después de aplicar cambios en este bloque |
| `receipts_root` | hash de los recibos de transacción trie |
| `logs_bloom` | estructura de datos que contiene registros de eventos |
@@ -115,35 +116,35 @@ El propio `execution_payload` contiene lo siguiente (observe que esto es idénti
| `block_number` | el número del bloque actual |
| `gas_limit` | gas máximo permitido en este bloque |
| `gas_used` | la cantidad real de gas utilizada en este bloque |
-| `marca de tiempo` | el tiempo de bloqueo |
+| `timestamp` | el tiempo del bloque |
| `extra_data` | datos adicionales arbitrarios como bytes sin procesar |
-| `base_fee_per_gas` | el valor de la tarifa base |
-| `block_hash` | Hash del bloque de ejecución |
+| `base_fee_per_gas` | el valor de la tarifa de base |
+| `block_hash` | hash del bloque de ejecución |
| `transacciones` | lista de transacciones por ejecutar |
| `retiradas` | lista de objetos de retiradas |
-La lista de `retiradas` contiene objetos de `retirada` estructurados de la siguiente manera:
+La lista `withdrawals` contiene objetos `withdrawal` estructurados de la siguiente manera:
| Campo | Descripción |
-|:---------------- |:---------------------------------------------------- |
+| :--------------- | :--------------------------------------------------- |
| `dirección` | dirección de la cuenta que ha realizado una retirada |
| `cantidad` | cantidad de la retirada |
| `índice` | valor del índice de la retirada |
| `validatorIndex` | valor del índice del validador |
-## Tiempo del bloque {#block-time}
+## Tiempo de bloque {#block-time}
El tiempo del bloque se refiere al espacio de tiempo que separa los bloques entre sí. En Ethereum, el tiempo se divide en unidades de doce segundos llamadas «ranuras». En cada ranura se selecciona a un validador único para que proponga un bloque. Asumiendo que todos los validadores están en línea y operativos, habría un bloque en cada ranura, lo que significaría que el tiempo de un bloque es de 12 segundos. A pesar de ello, en algunas ocasiones, los validadores podrían encontrarse desconectados en el momento de solicitarles la propuesta de un nuevo bloque, lo que sugiere que algunas ranuras podrían estar vacías.
-Esta implementación difiere de los sistemas basados en pruebas de trabajo cuyos tiempos de bloqueo son probabilísticos y ajustados por la dificultad de minería del protocolo. El [tiempo medio de bloque](https://etherscan.io/chart/blocktime) de Ethereum es un claro ejemplo de esto, donde la transición de la prueba de trabajo a la prueba de participación puede deducirse claramente según la consistencia del nuevo bloque de 12 horas.
+Esta implementación difiere de los sistemas basados en pruebas de trabajo cuyos tiempos de bloqueo son probabilísticos y ajustados por la dificultad de minería del protocolo. El [tiempo de bloque promedio](https://etherscan.io/chart/blocktime) de Ethereum es un ejemplo perfecto de esto, por el que la transición de la prueba de trabajo a la prueba de participación puede inferirse claramente a partir de la consistencia del nuevo tiempo de bloque de 12 s.
## Tamaño del bloque {#block-size}
-Un importante apunte final es que los bloques tienen limitaciones de tamaño. Cada bloque tiene un tamaño objetivo de 30 millones de gas, pero el tamaño de los bloques incrementará o disminuirá según las exigencias de la red, hasta el límite de 60 millones de gas por bloque (el doble del tamaño objetivo). El límite de gas del bloque se puede ajustar hacia arriba o hacia abajo por un factor de 1/1024 con respecto al límite de gas del bloque anterior. Como resultado, los validadores pueden cambiar el límite de gas de bloque a través del consenso. La cantidad total de gas utilizada por todas las transacciones del bloque debe ser inferior al límite de gas del bloque. Esto es importante, porque garantiza que los bloques no pueden tener un tamaño arbitrario. Si los bloques pudieran ser del tamaño que quisiéramos, los nodos completos de menor rendimiento dejarían de adaptarse gradualmente a la red, debido a los requisitos de espacio y velocidad. Cuanto más grande sea el bloque, mayores serán los requerimientos de potencia informática para procesarlos a tiempo para la siguiente ranura. Esto constituye una fuerza centralizadora, limitada por el tamaño de los bloques.
+Un importante apunte final es que los bloques tienen limitaciones de tamaño. Cada bloque tiene un tamaño objetivo de 30 millones de gas, pero el tamaño de los bloques aumentará o disminuirá en función de la demanda de la red, hasta el límite de 60 millones de gas por bloque (2 veces el tamaño del bloque objetivo). El límite de gas del bloque se puede ajustar hacia arriba o hacia abajo por un factor de 1/1024 con respecto al límite de gas del bloque anterior. Como resultado, los validadores pueden cambiar el límite de gas de bloque a través del consenso. La cantidad total de gas utilizada por todas las transacciones del bloque debe ser inferior al límite de gas del bloque. Esto es importante, porque garantiza que los bloques no pueden tener un tamaño arbitrario. Si los bloques pudieran ser del tamaño que quisiéramos, los nodos completos de menor rendimiento dejarían de adaptarse gradualmente a la red, debido a los requisitos de espacio y velocidad. Cuanto más grande sea el bloque, mayores serán los requerimientos de potencia informática para procesarlos a tiempo para la siguiente ranura. Esto constituye una fuerza centralizadora, limitada por el tamaño de los bloques.
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Temas relacionados {#related-topics}
From d059d8c1b2f22506117d9e7001e6aed2a84831d6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:23 -0300
Subject: [PATCH 105/589] update(i18n):
public/content/translations/es/developers/docs/bridges/index.md
---
.../es/developers/docs/bridges/index.md | 107 +++++++++---------
1 file changed, 55 insertions(+), 52 deletions(-)
diff --git a/public/content/translations/es/developers/docs/bridges/index.md b/public/content/translations/es/developers/docs/bridges/index.md
index aa60d2dacf2..96d39616db7 100644
--- a/public/content/translations/es/developers/docs/bridges/index.md
+++ b/public/content/translations/es/developers/docs/bridges/index.md
@@ -1,20 +1,20 @@
---
title: Puentes
-description: Una visión general para reducir la brecha a los desarrolladores
+description: Una visión general del puenteo para los desarrolladores
lang: es
---
-Con la proliferación de las cadenas de bloques L1 y las soluciones de [escalamiento](/developers/docs/scaling/) L2, junto con el gran crecimiento del número de aplicaciones descentralizadas operando en varias cadenas o pasando a la modalidad multicadena, la necesidad por establecer comunicación y de poder mover activos a través de estás cadenas se han convertido en una parte esencial de la infraestructura de red. Existen diferentes tipos de puentes que hacen esto posible.
+Con la proliferación de blockchains de nivel 1 (L1) y soluciones de escalabilidad de nivel 2 (L2) [scaling](/developers/docs/scaling/), junto con un número cada vez mayor de aplicaciones descentralizadas que operan entre cadenas, la necesidad de comunicación y transferencia de activos entre cadenas se ha vuelto una parte esencial de la infraestructura de la red. Existen diferentes tipos de puentes que hacen esto posible.
-## La necesidad de puentes {#need-for-bridges}
+## Necesidad de los bridges {#need-for-bridges}
Los puentes existen para poder conectar las redes de cadena de bloques entre sí. Permiten la conectividad e interoperatividad entre las cadenas de bloques.
Las cadenas de bloques existen en entornos aislados, lo que significa que no hay manera de que estas se comuniquen con otras de forma natural. Como resultado, si bien podría haber una significativa actividad e innovación dentro de un ecosistema, esto se verá limitado por la falta de conectividad e interoperabilidad con otros ecosistemas.
-Los puentes ofrecen una manera de que los entornos aislados de cadenas de bloques puedan conectarse entre sí. Establecen una vía de transporte entre las cadenas de bloques donde tokens, mensajes, datos arbitrarios e incluso llamadas a [contratos inteligentes](/developers/docs/smart-contracts/) puedan transferirse de una cadena hacia otra.
+Los puentes ofrecen una manera de que los entornos aislados de cadenas de bloques puedan conectarse entre sí. Establecen una ruta de transporte entre blockchains donde se pueden transferir tokens, mensajes, datos arbitrarios e incluso llamadas a [smart contracts](/developers/docs/smart-contracts/) de una cadena a otra.
-## Beneficio de los puentes {#benefits-of-bridges}
+## Beneficios de los bridges {#benefits-of-bridges}
En pocas palabras, los puentes posibilitan numerosos casos de uso, ya que permiten que las redes de cadenas de bloques intercambien datos y muevan activos entre sí.
@@ -30,72 +30,72 @@ En el caso de los desarrolladores, los puentes permiten lo siguiente:
## ¿Cómo funcionan los puentes? {#how-do-bridges-work}
-Si bien hay muchos [tipos de diseños de puentes](https://li.fi/knowledge-hub/blockchain-bridges-and-classification/), resaltan tres formas de facilitar la transferencia de activos entre cadenas:
+Si bien existen muchos [tipos de diseños de bridges](https://li.fi/knowledge-hub/blockchain-bridges-and-classification/), tres formas de facilitar la transferencia de activos entre cadenas se destacan:
-- **Bloqueo y minteo:** Bloquear los activos en la cadena de origen y mintear activos en la cadena de destino.
-- **Quemar y mintear:** Quemar activos en la cadena de origen y mintearlos en la cadena de destino.
-- **Intercambios atómicos:** Intercambiar activos en la cadena fuente por activos en la cadena de destino con otra parte.
+- **Lock and mint –** Bloquear activos en la cadena de origen y acuñar activos en la cadena de destino.
+- **Burn and mint –** Quemar activos en la cadena de origen y acuñar activos en la cadena de destino.
+- **Atomic swaps –** Cambiar activos en la cadena de origen por activos en la cadena de destino con otra parte.
-## Tipos de puentes {#bridge-types}
+## Tipos de bridges {#bridge-types}
Los puentes usualmente se clasifican en los siguientes tipos:
-- **Puentes nativos:** Estos puentes son típicamente creados para impulsar liquidez en una cadena de bloques en particular, haciendo que los usuarios puedan mover activos fácilmente al ecosistema. Por ejemplo, el [Arbitrum Bridge](https://bridge.arbitrum.io/) se creó para que los usuarios establezcan un puente entre la red principal de Ethereum y Arbitrum de forma práctica. Otros tipos de puentes incluyen Polygon PoS Bridge, [Optimism Getawat](https://app.optimism.io/bridge), etc.
-- **Puentes basados en validador u oráculos:** Estos puentes se apoyan en un conjunto de validadores u oráculos externos para validar las transferencias entre cadenas. Ejemplos: Multichain y Across.
-- **Puentes de pase de mensajes generalizados:** Estos puentes pueden transferir activos, junto con mensajes y datos arbitrarios entre cadenas. Ejemplos: Axelar, LayerZero y Nomad.
-- **Redes de liquidez:** Estos puentes principalmente se enfocan en la transferencia de activos desde una cadena de bloques a otra vía intercambios atómicos. Generalmente, no soportan el envío de mensajes entre cadenas. Ejemplos: Connext y Hop.
+- **Bridges nativos –** Estos bridges suelen construirse para impulsar la liquidez en una blockchain en particular, facilitando que los usuarios trasladen fondos al ecosistema. Por ejemplo, el [Arbitrum Bridge](https://bridge.arbitrum.io/) está diseñado para que los usuarios puedan transferir fondos fácilmente desde Ethereum Mainnet hacia Arbitrum. Otros bridges similares incluyen Polygon PoS Bridge, [Optimism Gateway](https://app.optimism.io/bridge), etc.
+- **Bridges basados en validadores u oráculos –** Estos bridges dependen de un conjunto externo de validadores o de oráculos para validar las transferencias entre cadenas. Ejemplos: Multichain y Across.
+- **Bridges de paso de mensajes generalizados –** Estos bridges pueden transferir activos, además de mensajes y datos arbitrarios entre cadenas. Ejemplos: Axelar, LayerZero y Nomad.
+- **Redes de liquidez –** Estos bridges se enfocan principalmente en transferir activos de una cadena a otra mediante atomic swaps. Generalmente, no soportan el envío de mensajes entre cadenas. Ejemplos: Connext y Hop.
-## Algunas compensaciones que debe considerar {#trade-offs}
+## Compensaciones a considerar {#trade-offs}
Los puentes no son soluciones perfectas. De hecho, deben sacrificarse algunas cuestiones para el propósito. Desarrolladores y usuarios pueden evaluar los puentes basándose en los siguientes factores:
-- **Seguridad:** ¿Quién verifica el sistema? Los puentes asegurados por validadores externos son típicamente menos seguros que los puentes con seguridad local o nativa de los validadores de la cadena de bloques.
-- **Conveniencia:** ¿Cuánto tiempo toma completar una transacción, y cuántas transacciones necesitó firmar el usuario? Para un desarrollador, ¿cuánto tiempo se tarda en integrar un puente y qué tan complejo es el proceso?
-- **Conectividad:** ¿Cuáles son las diferentes redes de destino que el puente puede conectar (a saber, rollups, redes laterales, otras cadenas de bloque de capa 1, etc.) y qué tan difícil es integrar una nueva cadena de bloques?
-- **Habilidad para pasar datos más complejos:** ¿Puede un puente permitir la transferencia de mensajes y datos arbitrarios más complejos a través de cadenas o solo admite transferencias de activos multicadena?
-- **Rentabilidad:** ¿Cuánto cuesta transferir activos a través de cadenas mediante un puente? Típicamente, los puentes cobran una comisión fija o variable dependiendo de la tarifa de gas y la liquidez de las rutas específicadas. También es crítico evaluar la rentabilidad de un puente según el capital requerido para garantizar su seguridad.
+- **Seguridad –** ¿Quién verifica el sistema? Los puentes asegurados por validadores externos son típicamente menos seguros que los puentes con seguridad local o nativa de los validadores de la cadena de bloques.
+- **Comodidad –** ¿Cuánto tiempo se tarda en completar una transacción y cuántas transacciones tuvo que firmar un usuario? Para un desarrollador, ¿cuánto tiempo se tarda en integrar un puente y qué tan complejo es el proceso?
+- **Conectividad –** ¿Cuáles son las diferentes cadenas de destino que un bridge puede conectar (por ejemplo, rollups, sidechains, otras blockchains de nivel 1, etc.) y qué tan difícil es integrar una nueva blockchain?
+- **Capacidad para transferir datos más complejos –** ¿Puede un bridge habilitar la transferencia de mensajes y datos arbitrarios más complejos entre cadenas, o solo admite transferencias de activos entre cadenas?
+- **Rentabilidad –** ¿Cuánto cuesta transferir activos entre cadenas a través de un bridge? Típicamente, los puentes cobran una comisión fija o variable dependiendo de la tarifa de gas y la liquidez de las rutas específicadas. También es crítico evaluar la rentabilidad de un puente según el capital requerido para garantizar su seguridad.
A un alto nivel, los puentes pueden categorizarse como de confianza y sin confianza.
-- **De confianza:** Los puentes de confianza son verificados externamente. Usan un conjunto de verificadores externos (federaciones con multifirma, sistemas computacionales multiparte, redes de oráculos) para enviar los datos a través de las cadenas. Como resultado, pueden ofrecer una gran conectividad y permiten el pase de mensajes completamente generalizado a través de cadenas. También tienden a funcionar con velocidad y rentabilidad. Esto tiene como costo la seguridad, ya que los usuarios tienen que confiar en la seguridad del puente.
-- **Sin confianza:** Estos puentes se basan en las cadenas de bloques que conectan y sus validadores para transferir mensajes y tokens. Son "sin confianza" porque no añaden nuevas suposiciones de confianza (además de las cadenas de bloques). Como resultado, los puentes sin confianza se consideran más seguros que los puentes de confianza.
+- **Confiables –** Los bridges confiables son verificados externamente. Usan un conjunto de verificadores externos (federaciones con multifirma, sistemas computacionales multiparte, redes de oráculos) para enviar los datos a través de las cadenas. Como resultado, pueden ofrecer una gran conectividad y permiten el pase de mensajes completamente generalizado a través de cadenas. También tienden a funcionar con velocidad y rentabilidad. Esto tiene como costo la seguridad, ya que los usuarios tienen que confiar en la seguridad del puente.
+- **Sin confianza (trustless) –** Estos bridges dependen de las blockchains que están conectando y sus validadores para transferir mensajes y tokens. Son "sin confianza" porque no añaden nuevas suposiciones de confianza (además de las cadenas de bloques). Como resultado, los puentes sin confianza se consideran más seguros que los puentes de confianza.
Para evaluar los puentes sin confianza en función de otros factores, debemos dividirlos en puentes de pase de mensajes generalizados y redes de liquidez.
-- **Puentes de pase de mensajes generalizados:** Estos puentes son excelentes en materia de seguridad y la capacidad de transferir datos más complejos a través de cadenas. Por lo general, también son buenos en términos de rentabilidad. Sin embargo, estas fortalezas generalmente vienen a expensas de la conectividad para los puentes de clientes ligeros (por ejemplo, IBC) e inconvenientes de velocidad para los puentes optimistas (por ejemplo, Nomad) que utilizan pruebas de fraude.
-- **Redes de liquidez:** Estos puentes utilizan intercambios atómicos para transferir activos y son sistemas verificados localmente (es decir, utilizan los validadores de las cadenas de bloques subyacentes para verificar las transacciones). Como resultado, sobresalen por seguridad y velocidad. Además, se consideran comparativamente rentables y ofrecen una buena conectividad. Sin embargo, la principal compensación es su incapacidad para transmitir datos más complejos, ya que no admiten la transmisión de mensajes entre cadenas.
+- **Bridges de paso de mensajes generalizados –** Estos bridges sobresalen en seguridad y en la capacidad de transferir datos más complejos entre cadenas. Por lo general, también son buenos en términos de rentabilidad. Sin embargo, estas fortalezas generalmente vienen a expensas de la conectividad para los puentes de clientes ligeros (por ejemplo, IBC) e inconvenientes de velocidad para los puentes optimistas (por ejemplo, Nomad) que utilizan pruebas de fraude.
+- **Redes de liquidez –** Estos bridges utilizan atomic swaps para transferir activos y son sistemas verificados localmente (es decir, utilizan los validadores de las blockchains subyacentes para verificar transacciones). Como resultado, sobresalen por seguridad y velocidad. Además, se consideran comparativamente rentables y ofrecen una buena conectividad. Sin embargo, la principal compensación es su incapacidad para transmitir datos más complejos, ya que no admiten la transmisión de mensajes entre cadenas.
-## Riesgo con los puentes {#risk-with-bridges}
+## Riesgos de los bridges {#risk-with-bridges}
-Los puentes se asocian a los tres [más importantes hackeos en DeFi](https://rekt.news/leaderboard/) y todavía están en las primeras etapas de desarrollo. El uso de cualquier puente conlleva los siguientes riesgos:
+Los bridges representan los tres [mayores hacks en DeFi](https://rekt.news/leaderboard/) y todavía se encuentran en las primeras etapas de desarrollo. El uso de cualquier puente conlleva los siguientes riesgos:
-- **Riesgo del contrato inteligente:** Si bien muchos puentes han pasado con éxito las auditorías, todo lo que se necesita es una falla en un contrato inteligente para que los activos estén expuestos a hackeos (por ejemplo: [Wormhole Bridge de Solana](https://rekt.news/wormhole-rekt/)).
-- **Riesgos financieros sistémicos:** Muchos puentes utilizan activos envueltos para mintear versiones canónicas del activo original en una nueva cadena. Esto expone al ecosistema a un riesgo sistémico, ya que hemos visto versiones envueltas de tokens explotadas.
-- **Riesgo de contraparte:** Algunos puentes utilizan un diseño confiable que requiere que los usuarios confíen en la suposición de que los validadores no harán un complot para robar los fondos de los usuarios. La necesidad de que los usuarios confíen en estos actores de terceros los expone a riesgos como los rug pulls, la censura y otras actividades maliciosas.
-- **Problemas abiertos:** Dado que los puentes se encuentran en las primeras etapas de desarrollo, hay muchas preguntas sin respuesta relacionadas con el rendimiento de los puentes en diferentes condiciones del mercado, como los tiempos de congestión de la red, y durante eventos imprevistos, como ataques a nivel de red o reversiones de estado. Esta incertidumbre plantea ciertos riesgos, cuyo grado aún se desconoce.
+- **Riesgo de smart contract –** Aunque muchos bridges han superado auditorías con éxito, basta con una falla en un smart contract para que los activos queden expuestos a hacks (ejemplo: [Wormhole Bridge de Solana](https://rekt.news/wormhole-rekt/)).
+- **Riesgos financieros sistémicos** – Muchos bridges utilizan activos envueltos para acuñar versiones canónicas del activo original en una nueva cadena. Esto expone al ecosistema a un riesgo sistémico, ya que hemos visto versiones envueltas de tokens explotadas.
+- **Riesgo de contraparte –** Algunos bridges emplean un diseño confiable que requiere que los usuarios confíen en que los validadores no se pondrán de acuerdo para robar los fondos de los usuarios. La necesidad de que los usuarios confíen en estos actores de terceros los expone a riesgos como los rug pulls, la censura y otras actividades maliciosas.
+- **Cuestiones abiertas –** Dado que los bridges están en las primeras etapas de desarrollo, existen muchas preguntas sin respuesta relacionadas con cómo funcionarán en diferentes condiciones de mercado, como en momentos de congestión de la red y durante eventos imprevistos como ataques a nivel de red o retrocesos de estado. Esta incertidumbre plantea ciertos riesgos, cuyo grado aún se desconoce.
## ¿Cómo pueden usar los puentes las dapps? {#how-can-dapps-use-bridges}
Estas son algunas aplicaciones prácticas que los desarrolladores pueden considerar sobre los puentes y llevar su dapp a otras cadenas:
-### Integración de puentes {#integrating-bridges}
+### Integrando bridges {#integrating-bridges}
Para los desarrolladores, hay muchas maneras de añadir soporte para puentes:
-1. **Construir su propio puente:** Construir un puente seguro y confiable no es fácil, especialmente si toma una ruta más minimizada en cuanto a confianza. Además, esto requiere años de experiencia y conocimientos técnicos relacionados con los estudios de escalabilidad e interoperabilidad. Por otra parte, se requeriría un equipo práctico para mantener un puente y atraer suficiente liquidez para hacerlo viable.
+1. **Construir su propio bridge –** Construir un bridge seguro y fiable no es sencillo, especialmente si se opta por una ruta de mínima confianza. Además, esto requiere años de experiencia y conocimientos técnicos relacionados con los estudios de escalabilidad e interoperabilidad. Por otra parte, se requeriría un equipo práctico para mantener un puente y atraer suficiente liquidez para hacerlo viable.
-2. **Mostrar a los usuarios múltiples opciones de puente:** Muchas [dapps](/developers/docs/dapps/) requieren que los usuarios tengan su token nativo para interactuar con ellas. Para permitir a los usuarios acceder a sus tokens, ofrecen diferentes opciones de puente en su sitio web. No obstante, este método es una solución rápida al problema, ya que aleja al usuario de la interfaz de la dapp y aun así requiere que interactúe con otras dapps y puentes. Esta es una experiencia de incorporación engorrosa y más propensa a que se cometan errores.
+2. **Mostrar a los usuarios múltiples opciones de bridges –** Muchas [dapps](/developers/docs/dapps/) requieren que los usuarios tengan su token nativo para interactuar con ellas. Para permitir a los usuarios acceder a sus tokens, ofrecen diferentes opciones de puente en su sitio web. No obstante, este método es una solución rápida al problema, ya que aleja al usuario de la interfaz de la dapp y aun así requiere que interactúe con otras dapps y puentes. Esta es una experiencia de incorporación engorrosa y más propensa a que se cometan errores.
-3. **Integración de un puente:** Esta solución no requiere que la dapp envíe a los usuarios a las interfances del puente y el DEX externas. Permite que las dapps mejoren la experiencia de incorporación del usuario. No obstante, este enfoque tiene sus limitaciones:
+3. **Integrar un bridge –** Esta solución no requiere que la dapp envíe a los usuarios a las interfaces externas de bridges y DEX. Permite que las dapps mejoren la experiencia de incorporación del usuario. No obstante, este enfoque tiene sus limitaciones:
- La evaluación y el mantenimiento de puentes son difíciles y requieren mucho tiempo.
- Seleccionar un puente crea un único punto de falla y dependencia.
- La dapp está limitada por las capacidades del puente.
- Los puentes por sí solos podrían no ser suficientes. Las DApps podrían necesitar que los DEX ofrezcan más funcionalidad, como intercambios entre cadenas.
-4. **Integración de múltiples puentes:** Esta solución resuelve muchos problemas asociados con la integración de un solo puente. No obstante, también tiene limitaciones, ya que la integración de múltiples puentes consume recursos y crea gastos generales técnicos y de comunicación para los desarrolladores, el recurso más escaso en criptografía.
+4. **Integrar múltiples bridges –** Esta solución resuelve muchos de los problemas asociados con la integración de un solo bridge. No obstante, también tiene limitaciones, ya que la integración de múltiples puentes consume recursos y crea gastos generales técnicos y de comunicación para los desarrolladores, el recurso más escaso en criptografía.
-5. **Integración de un agregador de puentes:** Otra opción para las dapps es la integración de una solución de agregación de puentes que les dé acceso a múltiples puentes. Los agregadores de puentes heredan las fortalezas de todos los puentes y, por lo tanto, no están limitados por las capacidades de un único puente. En particular, los agregadores de puentes suelen mantener las integraciones de puentes, lo que evita a la dapp la molestia de mantenerse al tanto de los aspectos técnicos y operativos de una integración de puente.
+5. **Integrar un agregador de bridges –** Otra opción para las dapps es integrar una solución de agregación de bridges que les brinde acceso a múltiples bridges. Los agregadores de puentes heredan las fortalezas de todos los puentes y, por lo tanto, no están limitados por las capacidades de un único puente. En particular, los agregadores de puentes suelen mantener las integraciones de puentes, lo que evita a la dapp la molestia de mantenerse al tanto de los aspectos técnicos y operativos de una integración de puente.
Dicho esto, los agregadores de puentes también tienen sus limitaciones. Por ejemplo, si bien pueden ofrecer más opciones de puente, normalmente hay muchos más puentes disponibles en el mercado aparte de los que se ofrecen en la plataforma del agregador. Además, al igual que los puentes, los agregadores de puentes también están expuestos a los riesgos de los contratos inteligentes y la tecnología (más contratos inteligentes = más riesgos).
@@ -103,33 +103,36 @@ Si una dapp va por la ruta de integrar un puente o un agregador, hay diferentes
### Implementar una dapp en múltiples cadenas {#deploying-a-dapp-on-multiple-chains}
-Para implementar una dapp en múltiples cadenas, los desarrolladores pueden usar plataformas de desarrollo como [Alchemy](https://www.alchemy.com/), [Hardhat](https://hardhat.org/), [Moralis](https://moralis.io/), etc. Por lo general, estas plataformas vienen con complementos componibles que pueden permitir que las dapps se hagan multicadena o se usen en otras. Por ejemplo, los desarrolladores pueden usar un proxy de implementación determinista ofrecido por el [complemento hardhat-deploy](https://github.com/wighawag/hardhat-deploy).
+Para implementar una dapp en múltiples cadenas, los desarrolladores pueden utilizar plataformas de desarrollo como [Alchemy](https://www.alchemy.com/), [Hardhat](https://hardhat.org/), [Moralis](https://moralis.io/), etc. Por lo general, estas plataformas vienen con complementos componibles que pueden permitir que las dapps se hagan multicadena o se usen en otras. Por ejemplo, los desarrolladores pueden utilizar un proxy de implementación determinística ofrecido por el [plugin hardhat-deploy](https://github.com/wighawag/hardhat-deploy).
#### Ejemplos:
-- [Cómo crear dapps multicadena](https://moralis.io/how-to-build-cross-chain-dapps/)
-- [Crear un mercado de NFT entre cadenas](https://youtu.be/WZWCzsB1xUE)
-- [Moralis: Creación de dapps de NFT multicadena](https://www.youtube.com/watch?v=ehv70kE1QYo)
+- [Cómo construir dapps entre cadenas](https://moralis.io/how-to-build-cross-chain-dapps/)
+- [Construyendo un Marketplace de NFT entre cadenas](https://youtu.be/WZWCzsB1xUE)
+- [Moralis: Construyendo dapps de NFT entre cadenas](https://www.youtube.com/watch?v=ehv70kE1QYo)
### Monitoreo de la actividad de contratos entre cadenas {#monitoring-contract-activity-across-chains}
-Para monitorear la actividad de los contratos entre cadenas, los desarrolladores pueden usar subgrafos y plataformas de desarrollador como Tenderly para observar los contratos inteligentes en tiempo real. Estas plataformas también tienen herramientas que ofrecen una mayor funcionalidad de monitoreo de datos para actividades multicadena, como la comprobación de [eventos emitidos por contratos](https://docs.soliditylang.org/en/v0.8.14/contracts.html?highlight=events#events), etc.
+Para monitorear la actividad de los contratos entre cadenas, los desarrolladores pueden usar subgrafos y plataformas de desarrollador como Tenderly para observar los contratos inteligentes en tiempo real. Estas plataformas también cuentan con herramientas que ofrecen una mayor funcionalidad de monitoreo de datos para actividades entre cadenas, como la posibilidad de consultar [eventos emitidos por contratos](https://docs.soliditylang.org/en/v0.8.14/contracts.html?highlight=events#events), etc.
#### Herramientas
- [The Graph](https://thegraph.com/en/)
-- [Antiguamente](https://tenderly.co/)
+- [Tenderly](https://tenderly.co/)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Puntes de cadena de bloques](/bridges/): ethereum.org
-- [Puntes de cadena de bloques: crear redes de redes criptográficas](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) 8 de septiembre de 2021, Dmitriy Berenzon
-- [El trilema de interoperabilidad](https://blog.connext.network/the-interoperability-trilemma-657c2cf69f17) 1 de octubre de 2021, Arjun Bhuptani
-- [Clústeres: cómo los puentes de confianza y de confianza minimizada dan forma al panorama multicadena](https://blog.celestia.org/clusters/) 4 de octubre de 2021, Mustafa Al-Bassam
-- [LI.FI: con los puentes, la confianza es un espectro](https://blog.li.fi/li-fi-with-bridges-trust-is-a-spectrum-354cd5a1a6d8) 28 de abril de 2022, Arjun Chand
+- [Blockchain Bridges](/bridges/) – ethereum.org
+- [L2Beat Bridge Risk Framework](https://l2beat.com/bridges/summary)
+- [Blockchain Bridges: Building Networks of Cryptonetworks](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) - 8 de septiembre de 2021 – Dmitriy Berenzon
+- [The Interoperability Trilemma](https://blog.connext.network/the-interoperability-trilemma-657c2cf69f17) - 1 de octubre de 2021 – Arjun Bhuptani
+- [Clusters: How Trusted & Trust-Minimized Bridges Shape the Multi-Chain Landscape](https://blog.celestia.org/clusters/) - 4 de octubre de 2021 – Mustafa Al-Bassam
+- [LI.FI: With Bridges, Trust is a Spectrum](https://blog.li.fi/li-fi-with-bridges-trust-is-a-spectrum-354cd5a1a6d8) - 28 de abril de 2022 – Arjun Chand
+- [The State Of Rollup Interoperability Solutions](https://web.archive.org/web/20250428015516/https://research.2077.xyz/the-state-of-rollup-interoperability) - 20 de junio de 2024 – Alex Hook
+- [Harnessing Shared Security For Secure Cross-Chain Interoperability: Lagrange State Committees And Beyond](https://web.archive.org/web/20250125035123/https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - 12 de junio de 2024 – Emmanuel Awosika
-Además, aquí hay algunas presentaciones útiles de [James Prestwich](https://twitter.com/_prestwich) que pueden ayudar a desarrollar una comprensión más profunda de los puentes:
+Además, aquí hay presentaciones esclarecedoras de [James Prestwich](https://twitter.com/_prestwich) que pueden ayudarle a desarrollar una comprensión más profunda sobre los bridges:
-- [Crear puentes, no jardines amurallados](https://youtu.be/ZQJWMiX4hT0)
-- [Breaking Down Bridges](https://youtu.be/b0mC-ZqN8Oo)
-- [Por qué se están quemando los puentes](https://youtu.be/c7cm2kd20j8)
+- [Construyendo bridges, no jardines amurallados](https://youtu.be/ZQJWMiX4hT0)
+- [Desglosando los bridges](https://youtu.be/b0mC-ZqN8Oo)
+- [¿Por qué están ardiendo los bridges?](https://youtu.be/c7cm2kd20j8)
From 3b7188b5c8b0a4d708d869e9b978f1575112d9e4 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:25 -0300
Subject: [PATCH 106/589] update(i18n):
public/content/translations/es/guides/how-to-swap-tokens/index.md
---
.../es/guides/how-to-swap-tokens/index.md | 20 +++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/public/content/translations/es/guides/how-to-swap-tokens/index.md b/public/content/translations/es/guides/how-to-swap-tokens/index.md
index 9b10665a588..ed0c9582b61 100644
--- a/public/content/translations/es/guides/how-to-swap-tokens/index.md
+++ b/public/content/translations/es/guides/how-to-swap-tokens/index.md
@@ -6,13 +6,13 @@ lang: es
# Cómo intercambiar tókenes
-¿Está cansado de buscar un exchange que incluya todos sus tokens favoritos? Puede intercambiar la mayoría de los tokens utilizando [exchanges descentralizados](/glossary/#dex).
+¿Está cansado de buscar un exchange que incluya todos sus tokens favoritos? Puede intercambiar la mayoría de los tokens utilizando [intercambios descentralizados](/glossary/#dex).
-Un intercambio de tokens involucra el intercambio de dos activos diferentes que existen en la red de Ethereum, por ejemplo, intercambiar ETH por DAI (un token [ERC-20](/glossary/#erc-20)). El proceso es bastante rápido y barato. Solo necesita tener una billetera de criptomonedas para intercambiar tokens.
+Un intercambio de tokens implica el intercambio de dos activos diferentes que existen en la red de Ethereum; por ejemplo, cambiar ETH por DAI (un token [ERC-20](/glossary/#erc-20)). El proceso es bastante rápido y barato. Solo necesita tener una billetera de criptomonedas para intercambiar tokens.
**Requisitos previos:**
-- tener una [billetera de criptomonedas](/glossary/#wallet) (puede seguir este tutorial: [Cómo "registrar" una cuenta de Ethereum](/guides/how-to-create-an-ethereum-account/)
+- tener una [billetera cripto](/glossary/#wallet); si no la tiene, puede seguir esta guía sobre [cómo crear una cuenta de Ethereum](/guides/how-to-create-an-ethereum-account/)
- añadir fondos a su cartera
## 1. Conecte su cartera al intercambio descentralizado (DEX) que prefiera
@@ -22,19 +22,20 @@ Algunos intercambios descentralizados populares son:
- [Uniswap](https://app.uniswap.org/#/swap)
- [Sushiswap](https://www.sushi.com/swap)
- [1Inch](https://app.1inch.io/#/1/unified/swap/ETH/DAI)
-- [Curve](https://curve.fi/#/ethereum/swap)
+- [Curve](https://www.curve.finance/dex/ethereum/swap/)
-¿Le interesa? Aprenda más sobre qué son las [finanzas descentralizadas (DeFi)](/defi/) y cómo funcionan estos nuevos tipos de exchanges.
+¿Le interesa? Conozca más sobre qué es [finanzas descentralizadas (DeFi)](/defi/) y cómo funcionan estos nuevos tipos de intercambios.
## 2. Seleccione el par de tokens que desee intercambiar
-Por ejemplo, Eth y DAI. Asegúrese de tener fondos en cualquiera de los dos tokens. 
+Por ejemplo, Eth y DAI. Asegúrese de tener fondos en cualquiera de los dos tokens.
+
## 3. Ingrese la cantidad de tokens que desee intercambiar y haga clic en intercambiar
El intercambio calculará automaticamente cuántos tokens obtendrá.
-
+
## 4. Confirme la transacción
@@ -46,15 +47,14 @@ Revise los detalles de la transacción. Compruebe el tipo de cambio y cualquier
Puede seguir el progreso de la transacción en cualquier navegador de cadena de bloques. Este proceso no debería llevar más de 10 minutos.
-Recibirá automáticamente los tokens intercambiados en su billetera una vez que la transacción sea procesada.
-
+Recibirá automáticamente los tokens intercambiados en su billetera una vez que la transacción sea procesada.
¿Quiere saber más?
- Consulte nuestras demás guías
+ Vea nuestras otras guías
From a5cba90bf76aae23d244281639caad0dd1ba2ebc Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:28 -0300
Subject: [PATCH 107/589] update(i18n):
public/content/translations/es/ethereum-forks/index.md
---
.../translations/es/ethereum-forks/index.md | 373 +++++++++++++-----
1 file changed, 272 insertions(+), 101 deletions(-)
diff --git a/public/content/translations/es/ethereum-forks/index.md b/public/content/translations/es/ethereum-forks/index.md
index 22be177edf0..29c6ea84224 100644
--- a/public/content/translations/es/ethereum-forks/index.md
+++ b/public/content/translations/es/ethereum-forks/index.md
@@ -1,44 +1,200 @@
---
-title: Historia y bifurcaciones de Ethereum
+title: Cronología de todos los forks de Ethereum (2014 hasta la actualidad)
description: Una historia de la cadena de bloques de Ethereum, que incluye los principales hitos, lanzamientos y bifurcaciones.
lang: es
sidebarDepth: 1
---
-# La historia de Ethereum {#the-history-of-ethereum}
+# Cronología de todos los forks de Ethereum (2014 hasta la actualidad) {#the-history-of-ethereum}
Una cronología que incluye todos los principales hitos, bifurcaciones y actualizaciones de la cadena de bloques de Ethereum.
-
+
-Las bifurcaciones se producen cuando es necesario realizar actualizaciones o cambios técnicos importantes en la red; suelen provenir de las [propuestas de mejora de Ethereum (o EIP)](/eips/) y cambian las «reglas» del protocolo.
+Las bifurcaciones se producen cuando es necesario realizar actualizaciones o cambios técnicos importantes en la red; suelen provenir de las [propuestas de mejora de Ethereum (EIP)](/eips/) y cambian las «reglas» del protocolo.
-Cuando se precisan actualizaciones en un software tradicional y controlado centralmente, la empresa publica una nueva versión para el usuario final. Las cadenas de bloque funcionan de manera diferente porque no hay propiedad central. Los [clientes de Ethereum](/developers/docs/nodes-and-clients/) deben actualizar su software para implementar las nuevas reglas establecidas en la bifurcación. Además de creadores de bloques (los mineros en el mundo de las pruebas de trabajo y los validadores en el universo de las pruebas de participación) y los nodos, deben crearse bloques y validarlos con respecto a las reglas nuevas. [Más información sobre los mecanismos de consenso](/developers/docs/consensus-mechanisms/)
+Cuando se precisan actualizaciones en un software tradicional y controlado centralmente, la empresa publica una nueva versión para el usuario final. Las cadenas de bloque funcionan de manera diferente porque no hay propiedad central. Los [clientes de Ethereum](/developers/docs/nodes-and-clients/) deben actualizar su software para implementar las nuevas reglas de la bifurcación. Además de creadores de bloques (los mineros en el mundo de las pruebas de trabajo y los validadores en el universo de las pruebas de participación) y los nodos, deben crearse bloques y validarlos con respecto a las reglas nuevas. [Más sobre los mecanismos de consenso](/developers/docs/consensus-mechanisms/)
-Estos cambios en las normas pueden crear una división temporal en la red. Los bloques nuevos podrían producirse de acuerdo con las reglas nuevas o con las antiguas. Normalmente las bifurcaciones se acuerdan con antelación para que los clientes adopten los cambios a la vez. Además, de este modo las bifurcaciones actualizadas se convertirán en la cadena principal. Sin embargo, en casos excepcionales, los desacuerdos con respecto a las bifurcaciones pueden provocar que la red permanezca dividida. La más notable es la creación de Ethereum Classic con la [bifurcación DAO] (#dao-fork).
+Estos cambios en las reglas pueden crear una división temporal en la red. Los bloques nuevos podrían producirse de acuerdo con las reglas nuevas o con las antiguas. Normalmente las bifurcaciones se acuerdan con antelación para que los clientes adopten los cambios a la vez. Además, de este modo las bifurcaciones actualizadas se convertirán en la cadena principal. Sin embargo, en casos excepcionales, los desacuerdos con respecto a las bifurcaciones pueden provocar que la red permanezca dividida. La más notable es la creación de Ethereum Classic con la [bifurcación DAO] (#dao-fork).
-Vaya directamente a la información sobre algunas de las actualizaciones anteriores más importantes: [La cadena de baliza](/upgrades); [La Fusión](/roadmap/merge/); y [EIP-1559](#london)
+
-¿Busca futuras actualizaciones del protocolo? [Descubra las próximas actualizaciones de la hoja de ruta de Ethereum](/roadmap/).
+El software que sustenta a Ethereum se compone de dos mitades, conocidas como la [capa de ejecución](/glossary/#execution-layer) y la [capa de consenso](/glossary/#consensus-layer).
+
+**Nombres de actualizaciones de la ejecución**
+
+Desde 2021, las actualizaciones de la **capa de ejecución** se nombran según las ciudades de [anteriores ubicaciones de Devcon](https://devcon.org/en/past-events/) en orden cronológico:
+
+| Nombre de Actualización | Año de Devcon | Número de Devcon | Fecha de Actualización |
+| ----------------------- | ------------- | ---------------- | ---------------------- |
+| Berlin | 2014 | 0 | 15 de abril de 2021 |
+| London | 2015 | I | 5 de agosto de 2021 |
+| Shanghai | 2016 | II | 12 de abril de 2023 |
+| Cancún | 2017 | III | 13 de marzo de 2024 |
+| **Praga** | 2018 | IV | Por definir - Próxima |
+| _Osaka_ | 2019 | V | Por definir |
+| _Bogotá_ | 2022 | VI | Por definir |
+| _Bangkok_ | 2024 | VII | Por definir |
+
+**Nombres de las actualizaciones de consenso**
+
+Desde el lanzamiento de la [Beacon Chain](/glossary/#beacon-chain), las actualizaciones de la **capa de consenso** se nombran por estrellas celestes comenzando con letras que avanzan en orden alfabético:
+
+| Nombre de Actualización | Fecha de Actualización |
+| ------------------------------------------------------------- | ----------------------- |
+| El origen de la cadena de baliza | 1 de diciembre de 2020 |
+| [Altair](https://en.wikipedia.org/wiki/Altair) | 27 de octubre de 2021 |
+| [Bellatrix](https://en.wikipedia.org/wiki/Bellatrix) | 6 de septiembre de 2022 |
+| [Capella](https://en.wikipedia.org/wiki/Capella) | 12 de abril de 2023 |
+| [Deneb](https://en.wikipedia.org/wiki/Deneb) | 13 de marzo de 2024 |
+| [**Electra**](https://en.wikipedia.org/wiki/Electra_\(star\)) | Por definir - Próxima |
+| [_Fulu_](https://en.wikipedia.org/wiki/Fulu_\(star\)) | Por definir |
+
+**Nombres combinados**
+
+Las actualizaciones de ejecución y consenso se implementaron inicialmente en distintos momentos, pero tras [La Fusión](/roadmap/merge/) en 2022 estas se despliegan simultáneamente. Como tal, han surgido términos coloquiales para simplificar las referencias a estas actualizaciones utilizando un único término conjunto. Esto comenzó con la actualización _Shanghai-Capella_, comúnmente llamada "**Shapella**", y continúa con las actualizaciones _Cancun-Deneb_ (**Dencun**) y _Prague-Electra_ (**Pectra**).
+
+| Actualización de Ejecución | Actualización de Consenso | Nombre Corto |
+| -------------------------- | ------------------------- | ------------ |
+| Shanghai | Capella | "Shapella" |
+| Cancún | Deneb | "Dencun" |
+| Praga | Electra | "Pectra" |
+| Osaka | Fulu | "Fusaka" |
+
+
+
+Vaya directamente a la información sobre algunas de las actualizaciones pasadas especialmente importantes: [La Beacon Chain](/roadmap/beacon-chain/); [La Fusión](/roadmap/merge/); y [EIP-1559](#london)
+
+¿Busca futuras actualizaciones del protocolo? [Conozca las próximas actualizaciones en la hoja de ruta de Ethereum](/roadmap/).
+
+
+
+## 2025 {#2025}
+
+### Fulu-Osaka ("Fusaka") {#fusaka}
+
+
+
+[Más sobre Fusaka](/roadmap/fusaka/)
+
+### Praga-Electra ("Pectra") {#pectra}
+
+
+
+La actualización Prague-Electra ("Pectra") incluyó varias mejoras en el protocolo de Ethereum destinadas a mejorar la experiencia para todos los usuarios, redes de capa 2, participantes y operadores de nodos.
+
+La participación recibió una mejora con cuentas de validadores compuestas y un mejor control sobre los fondos en participaciones mediante la dirección de retirada de ejecución. El EIP-7251 aumentó el saldo máximo efectivo para un solo validador a 2048, mejorando la eficiencia de capital para los participantes. El EIP-7002 permitió que una cuenta de ejecución activara de forma segura acciones del validador, incluyida la salida o la retirada de partes de los fondos, mejorando la experiencia para los participantes en ETH y ayudando a fortalecer la responsabilidad de los operadores de nodos.
+
+Otras partes de la actualización se centraron en mejorar la experiencia para los usuarios comunes. EIP-7702 añadió la capacidad de que una cuenta regular que no es smart contract ([EOA](/glossary/#eoa)) ejecute código similar a un smart contract. Esto desbloqueó una nueva funcionalidad ilimitada para las cuentas tradicionales de Ethereum, como el agrupamiento de transacciones, el patrocinio de gas, la autenticación alternativa, controles programables de gasto y mecanismos de recuperación de cuenta, entre otros.
+
+
+
+Mejor experiencia de usuario:
+
+
EIP-7002 - Salidas activables desde la capa de ejecución
+
EIP-7685: Solicitudes de propósito general para la capa de ejecución
+
EIP-6110: Registrar depósitos de validadores en la cadena
+
+
+Mejoras en la eficiencia y seguridad del protocolo:
+
+
+
EIP-2537: Precompilado para operaciones de la curva BLS12-381
+
EIP-2935: Guardar hashes de bloques históricos en el estado
+
EIP-7549: Mover el índice del comité fuera de la certificación
+
+
+
+
+- [Pectra.wtf](https://pectra.wtf)
+- [Cómo Pectra mejorará la experiencia de staking](https://www.kiln.fi/post/next-ethereum-upgrade-how-pectra-will-enhance-the-staking-experience)
+- [Lea las especificaciones de la actualización Electra](https://github.com/ethereum/consensus-specs/blob/dev/specs/electra/)
+- [Preguntas frecuentes sobre Praga-Electra ("Pectra")](/roadmap/pectra/)
+
+
+
+## 2024 {#2024}
+
+### Cancún-Deneb ("Dencun") {#dencun}
+
+
+
+#### Resumen de Cancún {#cancun-summary}
+
+La actualización Cancún contiene un conjunto de mejoras en la _ejecución_ de Ethereum orientadas a mejorar la escalabilidad, junto con las actualizaciones de consenso de Deneb.
+
+Esto incluye especialmente EIP-4844, conocido como **Proto-Danksharding**, que reduce significativamente el coste de almacenamiento de datos para los rollups de capa 2. Esto se logra a través de la introducción de "blobs" de datos que permiten que los rollups publiquen datos en la red principal por un corto período de tiempo. Esto da como resultado tarifas de transacción significativamente más bajas para los usuarios de los rollups de la capa 2.
+
+
+
+
+
EIP-1153 - Códigos de operación de almacenamiento transitorio
+
+
+
+- [Rollups de capa 2](/layer-2/)
+- [Proto-Danksharding](/roadmap/scaling/#proto-danksharding)
+- [Danksharding](/roadmap/danksharding/)
+- [Lea la especificación de la actualización Cancún](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md)
+
+#### Resumen de Deneb {#deneb-summary}
+
+La actualización Deneb contiene un conjunto de mejoras en el _consenso_ de Ethereum orientadas a mejorar la escalabilidad. Esta actualización viene junto con las actualizaciones de ejecución de Cancun para habilitar Proto-Danksharding (EIP-4844), junto con otras mejoras en la cadena de Baliza.
+
+Los "mensajes de salida voluntaria" pregenerados y firmados ya no caducan, lo que da más control a los usuarios que realizan staking con un operador de nodo externo. Con este mensaje de salida firmado, los participantes pueden delegar el funcionamiento del nodo mientras mantienen la capacidad de salida y retirada de sus fondos de forma segura en cualquier momento, sin necesidad de pedir permiso a nadie.
+
+EIP-7514 reduce la emisión de ETH limitando la tasa de "churn" a la que los validadores pueden unirse a la red a ocho (8) por época. Dado que la emisión de ETH es proporcional al total de ETH en staking, limitar el número de validadores que se unen pone un tope al _ritmo de crecimiento_ de ETH emitido, y también reduce los requisitos de hardware para los operadores de nodos, ayudando a la descentralización.
+
+
+
+
+
+
+
+- [Lea las especificaciones de la actualización Deneb](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/)
+- [Preguntas frecuentes sobre Cancún-Deneb ("Dencun")](/roadmap/dencun/)
## 2023 {#2023}
-### Shanghai-Capella {#shapella}
+### Shanghái-Capella ("Shapella") {#shapella}
-#### Resumen de Shangai {#shanghai-summary}
+#### Resumen de Shanghái {#shanghai-summary}
-La actualizacion Shangai permite retirar la participación a la capa de ejecución. Junto con la actualización Capella, habilitó los bloques para aceptar las operaciones de retirada, que permitieran a los interesados retirar sus ETH provenientes de la cadena de baliza para ejecutarlos posteriormente.
+La actualizacion de Shangai trae los retiros de staking a la capa de ejecución. Junto con la actualización Capella, habilitó los bloques para aceptar las operaciones de retirada, que permitieran a los interesados retirar sus ETH provenientes de la cadena de baliza para ejecutarlos posteriormente.
-
+
EIP-4895: notificación cadena de baliza con retiradas como operaciones
@@ -47,7 +203,7 @@ La actualizacion Shangai permite retirar la participación a la capa de ejecuci
-- [Lea la especificación de la actualización Shanghai](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md)
+- [Lea la especificación de la actualización Shanghái](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md)
#### Resumen de Capella {#capella-summary}
@@ -57,24 +213,24 @@ Esta actualización de la capa de consenso aporta a los participantes que no pro
La actualizacion también proporciona la funcionalidad de barrido automático de la cuenta, la cual procesa constantemente cuentas validadoras para cualquier pago de recompensa disponible o retiradas completas.
-- [Más información sobre la retirada de participaciones](/staking/withdrawals/).
-- [Lea la especificacion de la actualizacion Capella](https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/)
+- [Más información sobre las retiradas de participaciones](/staking/withdrawals/).
+- [Lea las especificaciones de la actualización Capella](https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/)
## 2022 {#2022}
-### Paris (La Fusión) {#paris}
+### París (La Fusión) {#paris}
#### Resumen {#paris-summary}
-El paso de la cadena de bloque de la prueba de trabajo a la [dificultad total terminal](/glossary/#terminal-total-difficulty) de 58750000000000000000000 originó La Fusión. Esto ocurrió en el bloque 15537393 el 15 de septiembre de 2022, y dio comienzo a la actualización Paris en el siguiente bloque. Paris supuso la transición denominada [La Fusión](/roadmap/merge/): cuya característica principal consistió en pasar del [algoritmo de minería y lógica de consenso asociada de la](/developers/docs/consensus-mechanisms/pow) prueba de trabajo [a la prueba de participación](/developers/docs/consensus-mechanisms/pos). Paris fue en sí una actualización a los [clientes de ejecución](/developers/docs/nodes-and-clients/#execution-clients) (equivalente a Bellatrix, en la capa de consenso) que les permitió recibir instrucciones de sus [clientes de consenso conectados](/developers/docs/nodes-and-clients/#consensus-clients). Esto requirió que se activara un nuevo conjunto de métodos internos de API, conocido colectivamente como [Engine API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md). Esta fue probablemente la actualización más significativa en la historia de Ethereum desde [Homestead](#homestead)!
+La actualización París se activó cuando la blockchain proof-of-work superó una [dificultad total terminal](/glossary/#terminal-total-difficulty) de 58750000000000000000000. Esto ocurrió en el bloque 15537393 el 15 de septiembre de 2022, y dio comienzo a la actualización Paris en el siguiente bloque. París fue la transición de [La Fusión](/roadmap/merge/) — su característica principal fue apagar el algoritmo de minería [proof-of-work](/developers/docs/consensus-mechanisms/pow) y la lógica de consenso asociada, y activar [proof-of-stake](/developers/docs/consensus-mechanisms/pos) en su lugar. París en sí fue una actualización para los [clientes de ejecución](/developers/docs/nodes-and-clients/#execution-clients) (equivalente a Bellatrix en la capa de consenso), que les permitió recibir instrucciones de sus conectados [clientes de consenso](/developers/docs/nodes-and-clients/#consensus-clients). Esto requirió un nuevo conjunto de métodos de API internos, conocidos colectivamente como la [Engine API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md), que debía ser activada. ¡Esta fue, sin duda, la actualización más significativa en la historia de Ethereum desde [Homestead](#homestead)!
-- [Lea la especificación de actualización Paris](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md)
+- [Lea la especificación de la actualización París](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md)
-
+
EIP-3675: consenso de actualización a la prueba de participación
@@ -91,9 +247,9 @@ El paso de la cadena de bloque de la prueba de trabajo a la [dificultad total te
#### Resumen {#bellatrix-summary}
-La actualización Bellatrix fue la segunda actualización programada para la [cadena de baliza](/roadmap/beacon-chain), como prepración de la cadena para [La Fusión](/roadmap/merge/). Incorpora penalizaciones del validador a sus valores completos por inactividad y recortes por malas conductas. Bellatrix también incluye una actualización de las reglas de elección de la bifurcación para preparar la cadena de cara a La Fusión y la transición del último bloque de prueba de trabajo al primer bloque de prueba de participación. Esto incluye sensibilizar a los clientes sobre la dificultad [total de la terminal](/glossary/#terminal-total-difficulty) de 58750000000000000000000.
+La actualización Bellatrix fue la segunda actualización programada para la [Beacon Chain](/roadmap/beacon-chain), preparando la cadena para [La Fusión](/roadmap/merge/). Incorpora penalizaciones del validador a sus valores completos por inactividad y recortes por malas conductas. Bellatrix también incluye una actualización de las reglas de elección de la bifurcación para preparar la cadena de cara a La Fusión y la transición del último bloque de prueba de trabajo al primer bloque de prueba de participación. Esto incluye hacer que los clientes de consenso conozcan la [dificultad total terminal](/glossary/#terminal-total-difficulty) de 58750000000000000000000.
-- [Lea las especificaciones de actualización Bellatrix](https://github.com/ethereum/consensus-specs/tree/dev/specs/bellatrix)
+- [Lea la especificación de la actualización Bellatrix](https://github.com/ethereum/consensus-specs/tree/dev/specs/bellatrix)
---
@@ -103,11 +259,11 @@ La actualización Bellatrix fue la segunda actualización programada para la [ca
#### Resumen {#gray-glacier-summary}
-La actualización de la red Gray Glacier hizo retroceder la [bomba de dificultad](/glossary/#difficulty-bomb) tres meses. Este es el único cambio introducido en esta actualización, y es similar en naturaleza a las actualizaciones [Arrow Glacier](#arrow-glacier) y [Muir Glacier](#muir-glacier). Se han llevado a cabo cambios similares en las actualizaciones de red [Byzantium](#byzantium),[Constantinople](#constantinople) y [London](#london).
+La actualización de red Gray Glacier pospuso la [bomba de dificultad](/glossary/#difficulty-bomb) por tres meses. Este es el único cambio introducido en esta actualización, y es de naturaleza similar a las actualizaciones [Arrow Glacier](#arrow-glacier) y [Muir Glacier](#muir-glacier). Cambios similares se realizaron en las actualizaciones de red [Bizancio](#byzantium), [Constantinopla](#constantinople) y [Londres](#london).
-- [EF Blog: anuncio de actualización de Gray Glacier](https://blog.ethereum.org/2022/06/16/gray-glacier-announcement/)
+- [EF Blog - Anuncio de actualización Gray Glacier](https://blog.ethereum.org/2022/06/16/gray-glacier-announcement/)
-
+
EIP-5133: retrasa la bomba de dificultad hasta septiembre de 2022
@@ -125,12 +281,12 @@ La actualización de la red Gray Glacier hizo retroceder la [bomba de dificultad
#### Resumen {#arrow-glacier-summary}
-La actualización de la red Arrow Glacier hizo retroceder la [bomba de dificultad](/glossary/#difficulty-bomb) varios meses. Este es el único cambio introducido en esta actualización, y es similar en naturaleza a la actualización de [Muir Glacier](#muir-glacier). Cambios similares han sido realizados en las actualizaciones de red [Byzantium](#byzantium),[Constantinopla](#constantinople) y [Londres](#london).
+La actualización de red Arrow Glacier pospuso la [bomba de dificultad](/glossary/#difficulty-bomb) por varios meses. Este es el único cambio introducido en esta actualización, y es de naturaleza similar a la actualización [Muir Glacier](#muir-glacier). Cambios similares se realizaron en las actualizaciones de red [Bizancio](#byzantium), [Constantinopla](#constantinople) y [Londres](#london).
-- [Blog de EF: anuncio de actualización de Arrow Glacier](https://blog.ethereum.org/2021/11/10/arrow-glacier-announcement/)
-- [Ethereum Cat Herders: actualización de Arrow Glacier de Ethereum](https://medium.com/ethereum-cat-herders/ethereum-arrow-glacier-upgrade-e8d20fa4c002)
+- [EF Blog - Anuncio de actualización Arrow Glacier](https://blog.ethereum.org/2021/11/10/arrow-glacier-announcement/)
+- [Ethereum Cat Herders - Actualización Arrow Glacier de Ethereum](https://medium.com/ethereum-cat-herders/ethereum-arrow-glacier-upgrade-e8d20fa4c002)
-
+
EIP-4345: retrasa la bomba de dificultad hasta junio de 2022
@@ -146,31 +302,45 @@ La actualización de la red Arrow Glacier hizo retroceder la [bomba de dificulta
#### Resumen {#altair-summary}
-La actualización Altair fue la primera programada para la [cadena de baliza](/roadmap/beacon-chain). Añadió soporte para los «comités de sincronización», permitiendo clientes ligeros y un aumento de la inactividad del validador y de las penalizaciones de recorte a medida que avanzaba el desarrollo hacia La Fusión.
+La actualización Altair fue la primera actualización programada para la [Beacon Chain](/roadmap/beacon-chain). Añadió soporte para los «comités de sincronización», permitiendo clientes ligeros y un aumento de la inactividad del validador y de las penalizaciones de recorte a medida que avanzaba el desarrollo hacia La Fusión.
-- [Lea las especificaciones de actualización Altair](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair)
+- [Lea la especificación de la actualización Altair](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair)
#### ¡Dato curioso! {#altair-fun-fact}
Altair fue la primera gran actualización de red que ha tenido un periodo de implementación preciso. Cada una de las actualizaciones anteriores se habían basado en un número de bloques declarados en la cadena de prueba de trabajo, donde los tiempos de bloque varían. La cadena de baliza no requiere resolución para la prueba de trabajo y, en lugar de ello, funciona en un sistema épocas basado en el tiempo, que consiste en «ranuras» de tiempo de doce segundos durante los cuales los validadores pueden proponer bloques. Por esta razón sabíamos exactamente cuándo alcanzaríamos la época 74.240 y Altair vería la luz.
-- [Tiempo del bloque](/developers/docs/blocks/#block-time)
+- [Tiempo de bloque](/developers/docs/blocks/#block-time)
---
-### London {#london}
+### Londres {#london}
#### Resumen {#london-summary}
-La actualización London introdujo [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), que ha transformado el mercado de las comisiones de las transacciones, junto con cambios en la forma en que se manejan los reembolsos de gas y el plan [Era de hielo](/glossary/#ice-age).
+La actualización Londres introdujo [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), que reformó el mercado de tarifas de transacción, junto con cambios en el manejo de devoluciones de gas y el calendario de la [Edad de Hielo](/glossary/#ice-age).
+
+#### ¿Qué fue la actualización London/EIP-1559? {#eip-1559}
+
+Antes de la actualización London, Ethereum tenía bloques de tamaño fijo. En momentos de alta demanda de la red, estos bloques operaban a capacidad total. Como resultado, los usuarios a menudo tenían que esperar que la alta demanda disminuyera para ser incluidos en un bloque, lo cual provocaba una mala experiencia de usuario. La actualización London introdujo los bloques de tamaño variable en Ethereum.
+
+La forma en la que se calculaban las tarifas de transacción en la red Ethereum cambió con [la Actualización Londres](/ethereum-forks/#london) de agosto de 2021. Antes de la actualización Londres, las tarifas se calculaban sin separar las `base` y `priority` fees, de la siguiente manera:
+
+Supongamos que Alice tiene que pagar a Bob 1 ETH. En la transacción, el límite de gas es de 21.000 unidades y el precio del gas es de 200 gwei.
+
+La tarifa total habría sido: `Unidades de gas (límite) * Precio del gas por unidad`, es decir, `21,000 * 200 = 4,200,000 gwei` o 0.0042 ETH
+
+La implementación de [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) en la Actualización Londres hizo que el mecanismo de tarifas fuera más complejo, pero permitió que las tarifas de gas sean más previsibles, resultando en un mercado de tarifas de transacción más eficiente. Los usuarios pueden enviar transacciones con un `maxFeePerGas` que corresponda a lo máximo que están dispuestos a pagar para que la transacción sea ejecutada, sabiendo que no pagarán más que el precio de mercado para el gas (`baseFeePerGas`), y recibirán cualquier exceso, menos su propina, de vuelta.
+
+Este video explica EIP-1559 y los beneficios que trae: [EIP-1559 Explicado](https://www.youtube.com/watch?v=MGemhK9t44Q)
-- [¿Es desarrollador de DApps? Asegúrese de actualizar sus bibliotecas y herramientas.](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/london-ecosystem-readiness.md)
-- [Lea el anuncio de Ethereum Foundation.](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/)
-- [Lea la explicación de Ethereum Cat Herders.](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41)
+- [¿Es usted desarrollador de dapps? Asegúrese de actualizar sus librerías y herramientas.](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/london-ecosystem-readiness.md)
+- [Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/)
+- [Lea la explicación de Ethereum Cat Herder](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41)
-
+
EIP-1559: mejora el sector de las comisiones de las transacciones
@@ -184,7 +354,7 @@ La actualización London introdujo [EIP-1559](https://eips.ethereum.org/EIPS/eip
---
-### Berlin {#berlin}
+### Berlín {#berlin}
@@ -192,10 +362,10 @@ La actualización London introdujo [EIP-1559](https://eips.ethereum.org/EIPS/eip
La actualización Berlin optimizó el coste del gas para ciertas acciones de EVM, y aumentó la compatibilidad con múltiples tipos de transacciones.
-- [Leer el anuncio de Ethereum Foundation](https://blog.ethereum.org/2021/03/08/ethereum-berlin-upgrade-announcement/)
-- [Leer la explicación de Ethereum Cat Herders](https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80)
+- [Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2021/03/08/ethereum-berlin-upgrade-announcement/)
+- [Lea la explicación de Ethereum Cat Herder](https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80)
-
+
@@ -210,34 +380,34 @@ La actualización Berlin optimizó el coste del gas para ciertas acciones de EVM
## 2020 {#2020}
-### El origen de la cadena de baliza {#beacon-chain-genesis}
+### Génesis de Beacon Chain {#beacon-chain-genesis}
#### Resumen {#beacon-chain-genesis-summary}
-La [cadena de baliza](/roadmap/beacon-chain/) necesita 16.384 depósitos de 32 ETH apostados para enviarse de forma segura. Esto sucedió el 27 de noviembre, lo que significa que la cadena de baliza comenzó a producir su cadena de bloques a partir del 1 de diciembre de 2020. Este es un importante primer paso para lograr la[ vision de Ethereum](/roadmap/vision/).
+La [Beacon Chain](/roadmap/beacon-chain/) necesitó 16,384 depósitos de 32 ETH en staking para lanzarse de forma segura. Esto sucedió el 27 de noviembre, y la Cadena de Baliza comenzó a producir bloques el 1 de diciembre de 2020.
-[Leer el anuncio de Ethereum Foundation](https://blog.ethereum.org/2020/11/27/eth2-quick-update-no-21/)
+[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2020/11/27/eth2-quick-update-no-21/)
- La cadena de baliza
+ La Beacon Chain
---
-### Contrato de depósito de participación implementado {#staking-deposit-contract}
+### Contrato de depósito para staking implementado {#staking-deposit-contract}
#### Resumen {#deposit-contract-summary}
-El contrato de depósito de participación introdujo la [participación](/glossary/#staking) en el ecosistema de Ethereum. A pesar de ser un contrato en la [red principal](/glossary/#mainnet), ha tenido impacto directo sobre la secuenciación de lanzamiento de la [cadena de baliza](/roadmap/beacon-chain/), una importante [ actualización de Ethereum](/roadmap/).
+El contrato de depósito para staking introdujo el [staking](/glossary/#staking) en el ecosistema Ethereum. Aunque fue un contrato de [Mainnet](/glossary/#mainnet), tuvo un impacto directo en el cronograma para lanzar la [Beacon Chain](/roadmap/beacon-chain/), una importante [actualización de Ethereum](/roadmap/).
-[Leer el anuncio de Ethereum Foundation](https://blog.ethereum.org/2020/11/04/eth2-quick-update-no-19/)
+[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2020/11/04/eth2-quick-update-no-19/)
- Staking (apostar)
+ Staking
---
@@ -248,12 +418,12 @@ El contrato de depósito de participación introdujo la [participación](/glossa
#### Resumen {#muir-glacier-summary}
-La bifurcación Muir Glacier introdujo un retraso en la [bomba de dificultad](/glossary/#difficulty-bomb). El aumento de la dificultad del bloque del mecanismo de consenso de la [prueba de trabajo](/developers/docs/consensus-mechanisms/pow/) amenazó con degradar la usabilidad de Ethereum, debido al incremento de los tiempos de espera para enviar transacciones y utilizar DApps.
+El fork Muir Glacier introdujo un retraso en la [bomba de dificultad](/glossary/#difficulty-bomb). El aumento de dificultad por bloque del mecanismo de consenso [proof-of-work](/developers/docs/consensus-mechanisms/pow/) amenazaba con degradar la usabilidad de Ethereum aumentando los tiempos de espera para enviar transacciones y usar dapps.
-- [Leer el anuncio de Ethereum Foundation](https://blog.ethereum.org/2019/12/23/ethereum-muir-glacier-upgrade-announcement/)
-- [Leer la explicación de Ethereum Cat Herders](https://medium.com/ethereum-cat-herders/ethereum-muir-glacier-upgrade-89b8cea5a210)
+- [Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2019/12/23/ethereum-muir-glacier-upgrade-announcement/)
+- [Lea la explicación de Ethereum Cat Herder](https://medium.com/ethereum-cat-herders/ethereum-muir-glacier-upgrade-89b8cea5a210)
-
+
EIP-2384: retrasa la bomba de dificultad otros 4.000.000 bloques o ~611 días.
@@ -265,7 +435,7 @@ La bifurcación Muir Glacier introdujo un retraso en la [bomba de dificultad](/g
## 2019 {#2019}
-### Istanbul {#istanbul}
+### Estambul {#istanbul}
@@ -273,22 +443,22 @@ La bifurcación Muir Glacier introdujo un retraso en la [bomba de dificultad](/g
La bifurcación de Istanbul:
-- Optimizó el coste del [gas](/glossary/#gas) de ciertas acciones en la [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine).
+- Se optimizó el coste de [gas](/glossary/#gas) de ciertas acciones dentro de la [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine).
- Mejoró la resistencia al ataque de denegación de servicio.
-- Realizó escalabilidad de [capa 2](/developers/docs/scaling/#layer-2-scaling) basada en SNARK y STARK más eficientes.
+- Se mejoró el rendimiento de las soluciones de [escalabilidad de capa 2](/developers/docs/scaling/#layer-2-scaling) basadas en SNARKs y STARKs.
- Habilitó Ethereum y Zcash para que interoperasen.
- Permitió que los contratos introdujeran funciones más creativas.
-[Leer el anuncio de Ethereum Foundation](https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/)
+[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/)
-
+
EIP-152: permite a Ethereum funcionar con una moneda que mantiene la privacidad como Zcash.
-
EIP-1108: una criptografía más barata para mejorar los costes del [gas](/glossary/#gas) gas.
-
EIP-1344: protege a Ethereum contra ataques de repetición al añadir CHAINID [opcode](/developers/docs/ethereum-stack/#ethereum-virtual-machine).
+
EIP-1108: criptografía más económica para mejorar los costes de [gas](/glossary/#gas).
+
EIP-1344: protege a Ethereum contra ataques de repetición al agregar el CHAINID [opcode](/developers/docs/ethereum-stack/#ethereum-virtual-machine).
EIP-1884: optimiza los precios del gas para el código de operación en función del consumo.
-
EIP-2028: reduce el coste de CallData para permitir más datos en bloques, lo que es productivo para la [escalabilidad de capa 2](/developers/docs/scaling/#layer-2-scaling).
+
EIP-2028: reduce el coste de CallData para permitir más datos en los bloques – beneficioso para la [escalabilidad de capa 2](/developers/docs/scaling/#layer-2-scaling).
EIP-2200: otras modificaciones del precio del gas del código de operación
@@ -296,7 +466,7 @@ La bifurcación de Istanbul:
---
-### Constantinople {#constantinople}
+### Constantinopla {#constantinople}
@@ -304,19 +474,20 @@ La bifurcación de Istanbul:
La bifurcación Constantinople:
-- Garantizó que la cadena de bloques no se congelara antes de que se implementara la [prueba de participación](#beacon-chain-genesis).
-- Optimizado el costo del [gas](/glossary/#gas) de ciertas acciones en la [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine).
+- Se redujeron las recompensas de [minería](/developers/docs/consensus-mechanisms/pow/mining/) por bloque de 3 a 2 ETH.
+- Se garantizó que la blockchain no se congelara antes de que se [implementase proof-of-stake](#beacon-chain-genesis).
+- Se optimizó el coste de [gas](/glossary/#gas) de ciertas acciones dentro de la [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine).
- Añadió la capacidad de interactuar con direcciones que aún no se han creado.
-[Leer el anuncio de Ethereum Foundation](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/)
+[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/)
-
+
-
EIP-145: optimizó el precio del gas en función del consumo.
+
EIP-145: optimiza el coste de ciertas acciones en la cadena.
EIP-1014: le permite interactuar con direcciones que aún no se han creado.
-
EIP-1052: optimiza el coste de ciertas acciones en cadena.
-
EIP-1234: se asegura de que la cadena de bloque no lo congele'antes de la prueba.
+
EIP-1052: introduce la instrucción EXTCODEHASH para obtener el hash del código de otro contrato.
+
EIP-1234: se asegura de que la cadena de bloques no' se congele antes de la prueba de participación y reduce la recompensa del bloque de 3 ETH a 2.
@@ -325,7 +496,7 @@ La bifurcación Constantinople:
## 2017 {#2017}
-### Byzantium {#byzantium}
+### Bizancio {#byzantium}
@@ -333,25 +504,25 @@ La bifurcación Constantinople:
La bifurcación de Bizantium:
-- Redujo las recompensas de [minería](/developers/docs/consensus-mechanisms/pow/mining/) de bloques de 5 a 3 ETH.
-- Retrasó un año la [bomba de dificultad](/glossary/#difficulty-bomb).
+- Se redujeron las recompensas de [minería](/developers/docs/consensus-mechanisms/pow/mining/) por bloque de 5 a 3 ETH.
+- Se retrasó la [bomba de dificultad](/glossary/#difficulty-bomb) un año.
- Se ha añadido la habilidad para realizar llamadas «sin cambiar de estado» a otros contratos.
-- Añadió ciertos métodos de criptografía para permitir [escalabilidad de capa 2](/developers/docs/scaling/#layer-2-scaling).
+- Se añadieron ciertos métodos criptográficos para permitir la [escalabilidad de capa 2](/developers/docs/scaling/#layer-2-scaling).
-[Leer el anuncio de Ethereum Foundation](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/)
+[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/)
-
+
EIP-211: añade soporte para valores de retorno de longitud variable.
EIP-214 – agrega el código STATICALL , permitiendo llamadas no cambiantes de estado a otros contratos.
EIP-100: cambia la fórmula de ajuste de dificultad.
-
EIP-649: retrasa [la bomba de dificultad](/glossary/#difficulty-bomb) 1 año y reduce la recompensa de bloques de 5 a 3 ETH.
+
EIP-649: retrasa la [bomba de dificultad](/glossary/#difficulty-bomb) 1 año y reduce la recompensa por bloque de 5 a 3 ETH.
@@ -374,7 +545,7 @@ La bifurcación Spurious Dragon fue la segunda respuesta a los ataques de denega
[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/)
-
+
EIP-155: evita que las transacciones de una cadena Ethereum se redifundan en una cadena alternativa, por ejemplo, una transacción de red de prueba que se reproduce en la cadena principal de Ethereum.
@@ -397,9 +568,9 @@ La bifurcación Tangerine Whistle fue la primera respuesta a los ataques de dene
- la gestión de problemas urgentes del buen estado de la red relacionados con códigos de operación depreciados.
-[Leer el anuncio de Ethereum Foundation](https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/)
+[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/)
-
+
EIP-150: aumenta el coste de gas de los códigos operativos que pueden utilizarse en ataques de spam.
@@ -410,19 +581,19 @@ La bifurcación Tangerine Whistle fue la primera respuesta a los ataques de dene
---
-### La bifuración DAO {#dao-fork}
+### Fork de la DAO {#dao-fork}
#### Resumen {#dao-fork-summary}
-La bifurcación DAO surgió como respuesta al [ataque de DAO de 2016](https://www.coindesk.com/learn/understanding-the-dao-attack/) donde un contrato inseguro [DAO](/glossary/#dao) fue drenando más de 3,6 millones de ETH en un hackeo. La bifurcación movió los fondos del contrato defectuoso a un [nuevo contrato](https://etherscan.io/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754) con una única función: la de retirada. Cualquiera que haya perdido fondos podría retirar 1 ETH por cada 100 tókenes DAO en sus carteras.
+El fork de la DAO fue en respuesta al [ataque de la DAO en 2016](https://www.coindesk.com/learn/understanding-the-dao-attack/), donde un contrato [DAO](/glossary/#dao) inseguro fue vaciado en un hackeo de más de 3.6 millones de ETH. El fork movió los fondos del contrato defectuoso a un [nuevo contrato](https://eth.blockscout.com/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754) con una sola función: retirar. Cualquiera que haya perdido fondos podría retirar 1 ETH por cada 100 tókenes DAO en sus carteras.
-Esta acción fue votada por la comunidad Ethereum. Cualquier titular de ETH pudo votar a través de una transacción en [una plataforma de votación](https://web.archive.org/web/20170620030820/http://v1.carbonvote.com/). La decisión de realizar un fork obtuvo más del 85 % de los votos.
+Esta acción fue votada por la comunidad Ethereum. Cualquier tenedor de ETH pudo votar mediante una transacción en [una plataforma de votación](https://web.archive.org/web/20170620030820/http://v1.carbonvote.com/). La decisión de realizar un fork obtuvo más del 85 % de los votos.
-Algunos mineros se negaron a bifurcar porque el incidente de la DAO no era un defecto en el protocolo. Pasaron a formar [Ethereum Classic](https://ethereumclassic.org/).
+Algunos mineros se negaron a bifurcar porque el incidente de la DAO no era un defecto en el protocolo. Fueron quienes formaron [Ethereum Classic](https://ethereumclassic.org/).
-[Leer el anuncio de Ethereum Foundation](https://blog.ethereum.org/2016/07/20/hard-fork-completed/)
+[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2016/07/20/hard-fork-completed/)
---
@@ -434,9 +605,9 @@ Algunos mineros se negaron a bifurcar porque el incidente de la DAO no era un de
Homestead: la bifurcación con perspectivas de futuro. Incluyó varios cambios de protocolo y un cambio de red que concedió a Ethereum la capacidad de hacer más actualizaciones de red.
-[Leer el anuncio de Ethereum Foundation](https://blog.ethereum.org/2016/02/29/homestead-release/)
+[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2016/02/29/homestead-release/)
-
+
@@ -450,16 +621,16 @@ Homestead: la bifurcación con perspectivas de futuro. Incluyó varios cambios d
## 2015 {#2015}
-### Deshielo Frontier {#frontier-thawing}
+### Frontier Thawing {#frontier-thawing}
#### Resumen {#frontier-thawing-summary}
-La bifurcación de deshielo Frontier elevó el limite del [gas](/glossary/#gas) de 5.000 por [bloque](/glossary/#block) y fijó el precio por defecto en 51 [gwei](/glossary/#gwei). Esto permitió que se realizaran transacciones que requiriesen 21.000 unidades de gas. La [bomba de dificultad](/glossary/#difficulty-bomb)se introdujo para asegurar un futuro de bifurcación dura a la [prueba de participación](/glossary/#pos).
+El fork Frontier Thawing eliminó el límite de 5,000 [gas](/glossary/#gas) por [bloque](/glossary/#block) y estableció el precio por defecto del gas en 51 [gwei](/glossary/#gwei). Esto permitió que se realizaran transacciones que requiriesen 21.000 unidades de gas. Se introdujo la [bomba de dificultad](/glossary/#difficulty-bomb) para asegurar un hard fork futuro hacia [proof-of-stake](/glossary/#pos).
-- [Leer el anuncio de Ethereum Foundation](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/)
-- [Lea la actualización 1 del protocolo de Ethereum](https://blog.ethereum.org/2015/08/04/ethereum-protocol-update-1/)
+- [Lea el anuncio de Frontier Thawing de la Fundación Ethereum](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/)
+- [Lea la Actualización de Protocolo de Ethereum 1](https://blog.ethereum.org/2015/08/04/ethereum-protocol-update-1/)
---
@@ -469,42 +640,42 @@ La bifurcación de deshielo Frontier elevó el limite del [gas](/glossary/#gas)
#### Resumen {#frontier-summary}
-Frontier fue una implementación en vivo, pero básica, del proyecto Ethereum. Siguió a la exitosa fase de pruebas Olympic. Estaba destinada a usuarios técnicos, específicamente a desarrolladores. [Los bloques](/glossary/#block) tenían un límite de [gas](/glossary/#gas) de 5.000. Este período de «deshielo» permitió a los mineros iniciar sus operaciones y a los primeros adoptantes instalar sus clientes sin tener que «precipitarse».
+Frontier fue una implementación en vivo, pero básica, del proyecto Ethereum. Siguió a la exitosa fase de pruebas Olympic. Estaba destinada a usuarios técnicos, específicamente a desarrolladores. [Los bloques](/glossary/#block) tenían un límite de [gas](/glossary/#gas) de 5,000. Este período de «deshielo» permitió a los mineros iniciar sus operaciones y a los primeros adoptantes instalar sus clientes sin tener que «precipitarse».
-[Leer el anuncio de Ethereum Foundation](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/)
+[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/)
## 2014 {#2014}
-### Venta de ether {#ether-sale}
+### Venta de Ether {#ether-sale}
El ether salió oficialmente a la venta durante 42 días. Podía comprarse con BTC.
-[Leer el anuncio de Ethereum Foundation](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/)
+[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/)
---
-### Protocolo publicado {#yellowpaper}
+### Yellowpaper publicado {#yellowpaper}
El protocolo, escrito por el Dr. Gavin Wood, es una definición técnica del protocolo de Ethereum.
-[Ver el protocolo](https://github.com/ethereum/yellowpaper)
+[Ver el Yellow Paper](https://github.com/ethereum/yellowpaper)
## 2013 {#2013}
-### Protocolo publicado {#whitepaper}
+### Whitepaper publicado {#whitepaper}
Documento introductorio, publicado en el 2013 por Vitalik Buterin, fundador de Ethereum, antes del lanzamiento del proyecto en 2015.
- Informe
+ Whitepaper
From 4ea49632e22f1d15b39f1bfbb0bbf14cbee7a143 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:33 -0300
Subject: [PATCH 108/589] update(i18n):
public/content/translations/es/developers/tutorials/using-websockets/index.md
---
.../tutorials/using-websockets/index.md | 64 +++++++++----------
1 file changed, 30 insertions(+), 34 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/using-websockets/index.md b/public/content/translations/es/developers/tutorials/using-websockets/index.md
index 71968bf5dc6..5e7639bfb99 100644
--- a/public/content/translations/es/developers/tutorials/using-websockets/index.md
+++ b/public/content/translations/es/developers/tutorials/using-websockets/index.md
@@ -3,32 +3,28 @@ title: Uso de WebSockets
description: Guía de uso de WebSocets y Alchemy para hacer solicitudes JSON-RPC y suscribirse a eventos.
author: "Elan Halpern"
lang: es
-tags:
- - "alchemy"
- - "websockets"
- - "consultar"
- - "javascript"
+tags: [ "Alchemy", "websockets", "consultar", "JavaScript" ]
skill: beginner
source: Documentos de Alchemy
-sourceUrl: https://docs.alchemyapi.io/guides/using-websockets
-published: 2020-12-01
+sourceUrl: https://www.alchemy.com/docs/reference/best-practices-for-using-websockets-in-web3
+published: 01-12-2020
---
Esta es una guía de nivel básico sobre el uso de WebSockets y Alchemy para hacer solicitudes a la cadena de bloques de Ethereum.
-## WebSockets Vs. HTTP {#websockets-vs-http}
+## WebSockets vs. HTTP {#websockets-vs-http}
A diferencia de HTTP, con WebSockets no necesita hacer solicitudes continuamente cuando quiere información específica. Los WebSockets mantienen una red de conexión para usted (si se hace correctamente) y escuchan para hacer cambios.
Como con cualquier conexión de red, no debe asumir que un WebSocket permanecerá abierto para siempre sin interrupción, pero el manejo correcto de las conexiones caídas y la reconexión a mano puede ser complicado. Otra desventaja de los WebSockets es que no se obtienen códigos de estado HTTP en la respuesta, sino solo el mensaje de error.
-[Alchemy Web3](https://docs.alchemy.com/reference/api-overview) automáticamente agrega manejo para fallas y reintentos de WebSocket sin necesidad de configuración.
+[Alchemy Web3](https://docs.alchemy.com/reference/api-overview) agrega automáticamente el manejo de errores y reintentos de WebSocket sin necesidad de configuración.
## Pruébelo {#try-it-out}
-La forma más fácil de probar WebSockets es instalar una herramienta de línea de comando para hacer soliciudes WebSocket como [wscat](https://github.com/websockets/wscat). Usando Wsact, puede enviar solicitudes así:
+La forma más sencilla de probar WebSockets es instalar una herramienta de línea de comandos para realizar solicitudes WebSocket como [wscat](https://github.com/websockets/wscat). Usando Wsact, puede enviar solicitudes así:
-_Nota: Si tiene una cuenta de Alchemy, puede reemplazar `demo` con su propia clave de API. [Regístrese para obtener una cuenta gratuita de Alchemy aquí](https://auth.alchemyapi.io/signup)._
+_Nota: si tiene una cuenta de Alchemy puede reemplazar `demo` por su propia clave de API. [¡Regístrese para obtener una cuenta gratuita de Alchemy aquí!](https://auth.alchemy.com/signup)_
```
wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo
@@ -41,11 +37,11 @@ wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo
## Cómo usar WebSockets {#how-to-use-websockets}
-Para comenzar, abra un WebSocket usando la URL de WebSocket para su aplicación. Puede encontrar la URL de WebSocket de su aplicación abriendo la página de la aplicación en [su panel de control](https://dashboard.alchemyapi.io/) y haciendo clic en "View Key". Tenga en cuenta que la URL de su aplicación para WebSockets es diferente de su URL para solicitudes HTTP, pero ambas se pueden ver haciendo clic en "View Key".
+Para comenzar, abra un WebSocket usando la URL de WebSocket para su aplicación. Puede encontrar la URL de WebSocket de su aplicación abriendo la página de la app en [su panel de control](https://dashboard.alchemy.com/) y haciendo clic en "View Key". Tenga en cuenta que la URL de su aplicación para WebSockets es diferente de su URL para solicitudes HTTP, pero ambas se pueden ver haciendo clic en "View Key".
-
+
-Puede usar cualquiera de las API listadas en la [Referencia de API de Alchemy](https://docs.alchemyapi.io/documentation/alchemy-api-reference/) a través de WebSocket. Para ello, utilice la misma carga útil que se enviaría como el cuerpo de una solicitud HTTP POST, pero en su lugar envíe esa carga a través del WebSocket.
+Cualquiera de las APIs listadas en la [Referencia de API de Alchemy](https://www.alchemy.com/docs/reference/api-overview) puede utilizarse vía WebSocket. Para ello, utilice la misma carga útil que se enviaría como el cuerpo de una solicitud HTTP POST, pero en su lugar envíe esa carga a través del WebSocket.
## Con Web3 {#with-web3}
@@ -59,11 +55,11 @@ web3.eth.getBlockNumber().then(console.log) // -> 7946893
## API de suscripción {#subscription-api}
-Cuando se conecta a través de un WebSocket, puede utilizar dos métodos adicionales: `eth_subscribe` y `eth_unsubscribe`. Estos métodos le permitirán escuchar eventos particulares y ser notificado inmediatamente.
+Cuando está conectado mediante un WebSocket, puede usar dos métodos adicionales: `eth_subscribe` y `eth_unsubscribe`. Estos métodos le permitirán escuchar eventos particulares y ser notificado inmediatamente.
### `eth_subscribe` {#eth-subscribe}
-Crea una nueva subscripción para eventos específicos. [Más información acerca de `eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe).
+Crea una nueva subscripción para eventos específicos. [Más información sobre `eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe).
#### Parámetros {#parameters}
@@ -72,9 +68,9 @@ Crea una nueva subscripción para eventos específicos. [Más información acerc
El primer argumento específica el tipo de evento para el que se escuchará. El segundo argumento contiene opciones adicionales que dependen del primer argumento. Los diferentes tipos de descripciones, sus opciones y sus cargas útiles de eventos se describen a continuación.
-#### Retornos {#returns}
+#### Devuelve {#returns}
-El ID de suscripción: Este ID se adjuntará a cualquier evento recibido y también puede usarse para cancelar la suscripción usando `eth_unsubscribe`.
+El ID de la suscripción: Este ID se adjuntará a cualquiera de los eventos recibidos y también puede utilizarse para cancelar la suscripción con `eth_unsubscribe`.
#### Eventos de suscripción {#subscription-events}
@@ -83,14 +79,14 @@ Mientras la suscripción esté activa, recibirá eventos que son objetos con los
- `jsonrpc`: Siempre "2.0"
- `method`: Siempre "eth_subscription"
- `params`: Un objeto con los siguientes campos:
- - `suscripción`: la ID de suscripción que devuelve la llamada `eth_subscribe` que creó esta suscripción.
- - `result`: Un objeto cuyo contenido varía dependiendo del tipo de suscripción.
+ - `subscription`: El ID de suscripción retornado por la llamada `eth_subscribe` que creó esta suscripción.
+ - `result`: Un objeto cuyo contenido varía según el tipo de suscripción.
#### Tipos de suscripción {#subscription-types}
1. `alchemy_newFullPendingTransactions`
-Devuelve la información de transacción para todas las transacciones que se agregan al estado pendiente. Este tipo de suscripción se suscribe a transacciones pendientes, similar a la llamada Web3 estándar `web3.eth. ubscribe("pendingTransactions")`, pero difiere en que emite _información de la transacción completa_ en lugar de solo hashes de la transacción.
+Devuelve la información de transacción para todas las transacciones que se agregan al estado pendiente. Este tipo de suscripción se suscribe a transacciones pendientes, similar al llamado estándar en Web3 `web3.eth.subscribe("pendingTransactions")`, pero se diferencia en que emite _toda la información de la transacción_ en vez de solo los hashes de las transacciones.
Ejemplo:
@@ -164,24 +160,24 @@ Ejemplo:
Emite registros que son parte de bloques recién agregados que coinciden con criterios de filtros específicos.
-Cuando se produce una reorganización de la cadena, los registros que son parte de los bloques de la cadena antigua se emitirán de nuevo con la propiedad `removed` establecida en `true`. Además, se emiten registros que forman parte de los bloques de la nueva cadena, lo que significa que es posible ver registros de la misma transacción varias veces en el caso de una reorganización.
+Cuando ocurre una reorganización de la cadena, los logs que forman parte de los bloques de la cadena anterior se emitirán nuevamente con la propiedad `removed` configurada en `true`. Además, se emiten registros que forman parte de los bloques de la nueva cadena, lo que significa que es posible ver registros de la misma transacción varias veces en el caso de una reorganización.
Parámetros
1. Un objeto con los siguientes campos:
- - `address` (opcional): una cadena que representa una dirección o un array de dichas cadenas.
+ - `address` (opcional): una cadena que representa una dirección, o un arreglo de dichas cadenas.
- Solo se emitirán registros creados a partir de una de estas direcciones.
- - `topics`: un array de especificadores de temas.
- - Cada especificador de tema es `null`, una cadena que representa un tema o un array de cadenas.
- - Cada posición en el array que no sea `null` restringe los registros emitidos a solo aquellos que tengan uno de los temas dados en esa posición.
+ - `topics`: un arreglo de especificadores de temas (topics).
+ - Cada especificador de tema puede ser `null`, una cadena que representa un tema, o un arreglo de cadenas.
+ - Cada posición del arreglo que no sea `null` restringe los logs emitidos solo a aquellos que tengan uno de los temas indicados en esa posición.
Algunos ejemplos de especificaciones de temas:
-- `[]`: Cualquier tema permitido.
-- `[A]`: A en una primera posición (y cualquier cosa después).
+- `[]`: Se permite cualquier tema.
+- `[A]`: A en la primera posición (y cualquier cosa después).
- `[null, B]`: Cualquier cosa en la primera posición y B en la segunda posición (y cualquier cosa después).
-- `[A, B]`: A en la primera posición y B en segunda posición (y cualquier cosa después).
-- `[[A, B], [A, B]]`: (A o B) en primera posición y (A o B) en segunda posición (y cualquier cosa después).
+- `[A, B]`: A en la primera posición y B en la segunda posición (y cualquier cosa después).
+- `[[A, B], [A, B]]`: (A o B) en la primera posición y (A o B) en la segunda posición (y cualquier cosa después).
Ejemplo:
@@ -215,11 +211,11 @@ Cancela una suscripción existente para que no se envíen más eventos.
Parámetros
-1. Subscription ID, como se devuelve previamente desde una llamada a `eth_subscribe`.
+1. ID de suscripción, tal como fue devuelto previamente desde una llamada a `eth_subscribe`.
-Retornos
+Muestra
-`true` si una suscripción fue cancelada con éxito o `false` si no existe ninguna suscripción con el ID dado.
+`true` si la suscripción se canceló correctamente, o `false` si no existía una suscripción con ese ID.
Ejemplo:
@@ -246,4 +242,4 @@ curl https://eth-mainnet.alchemyapi.io/v2/your-api-key
---
-[Regístrese con Alchemy](https://auth.alchemyapi.io/signup) gratis, vea [nuestra documentación](https://docs.alchemyapi.io/), y para las últimas noticias, síganos en [Twitter](https://twitter.com/AlchemyPlatform).
+[Regístrese en Alchemy](https://auth.alchemy.com) de forma gratuita, consulte [nuestra documentación](https://www.alchemy.com/docs/) y para las últimas novedades, síganos en [Twitter](https://x.com/AlchemyPlatform).
From 577e2bf7050de66dda7b0797231486eda20b049d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:35 -0300
Subject: [PATCH 109/589] update(i18n):
public/content/translations/es/roadmap/fusaka/index.md
---
.../translations/es/roadmap/fusaka/index.md | 300 ++++++++++++++++++
1 file changed, 300 insertions(+)
create mode 100644 public/content/translations/es/roadmap/fusaka/index.md
diff --git a/public/content/translations/es/roadmap/fusaka/index.md b/public/content/translations/es/roadmap/fusaka/index.md
new file mode 100644
index 00000000000..cbf45cf2c3d
--- /dev/null
+++ b/public/content/translations/es/roadmap/fusaka/index.md
@@ -0,0 +1,300 @@
+---
+title: Fulu-Osaka (Fusaka)
+description: Conozca mejor la actualización del protocolo Fusaka
+lang: es
+---
+
+# Fusaka {#fusaka}
+
+**La tan esperada actualización Fusaka de Ethereum se puso en marcha el 3 de diciembre de 2025**
+
+La actualización de la red Fusaka llega después de [Pectra](/roadmap/pectra/) e incorpora nuevas funciones y mejora la experiencia de todos los usuarios y desarrolladores de Ethereum. El nombre combina la actualización de la capa de ejecución Osaka y la versión de la capa de consenso, que lleva el nombre de la estrella Fulu. Ambas partes de Ethereum reciben una actualización que impulsa la escalabilidad, la seguridad y la experiencia de usuario hacia el futuro de Ethereum.
+
+
+
+
+La actualización de Fusaka es solo un paso en los objetivos de desarrollo a largo plazo de Ethereum. Más información sobre [la hoja de ruta del protocolo](/roadmap/) y [las actualizaciones anteriores](/ethereum-forks/).
+
+
+
+
+## Mejoras de Fusaka {#improvements-in-fusaka}
+
+### Escalar blobs {#scale-blobs}
+
+#### PeerDAS {#peerdas}
+
+Este es el _principal atractivo_ de la bifurcación Fusaka, la característica principal añadida en esta actualización. La capa 2 publica actualmente sus datos en Ehtereum usando blobs, un tipo de dato efímero creado específicamente para la capa 2. Antes de Fusaka, cada nodo completo tenía que almacenar todos los blobs para asegurase que los datos existían. A medida que aumenta el rendimiento de los blobs, tener que descargar todos estos datos se vuelve insostenible en cuanto a recursos.
+
+Con el [muestreo de disponibilidad de datos](https://notes.ethereum.org/@fradamt/das-fork-choice), en lugar de tener que almacenar todos los datos de los blobs, cada nodo será responsable de una parte del total. Los blobs se distribuyen de forma uniforme y aleatoria entre los nodos de la red, y cada nodo completo solo almacena una octava parte de los datos, lo que permite, en teoría, escalar hasta 8 veces más. Para garantizar la disponibilidad de los datos, cualquier porción de los datos puede reconstruirse a partir de cualquier 50 % existente del total con métodos que reducen la probabilidad de que los datos sean incorrectos o falten a un nivel criptográficamente insignificante (~uno de cada 1020 a uno de cada 1024).
+
+Esto mantiene unos requisitos de hardware y ancho de banda asumibles para los nodos, mientras permite escalar los blobs, lo que se traduce en más capacidad y comisiones bajas para la capa 2.
+
+[Más información sobre PeerDAS](/roadmap/fusaka/peerdas/)
+
+**Recursos**:
+
+- [Especificación técnica del EIP-7594](https://eips.ethereum.org/EIPS/eip-7594)
+- [DappLion sobre PeerDAS: Escalando Ethereum hoy | ETHSofia 2024](https://youtu.be/bONWd1x2TjQ?t=328)
+- [Académico: una documentación del PeerDAS de Ethereum (PDF)](https://eprint.iacr.org/2024/1362.pdf)
+
+#### Bifurcaciones solo de parámetros de blob {#blob-parameter-only-forks}
+
+Las capas 2 escalan Ethereum: a medida que sus redes crecen, necesitan publicar más datos en Ethereum. Esto significa que Ethereum tendrá que aumentar el número de blobs disponibles para ellas con el tiempo. Aunque PeerDAS permite escalar los datos de blobs, es algo que debe hacerse de forma gradual y segura.
+
+Debido a que Ethereum es un código que se ejecuta en miles de nodos independientes que requieren un acuerdo sobre las mismas reglas, no podemos simplemente introducir cambios como aumentar el recuento de blobs de la misma manera que se implementa una actualización de un sitio web. Cualquier cambio en las reglas debe hacerse mediante una actualización coordinada, en la que todos los nodos, clientes y actualizaciones del software del validador antes de un mismo bloque predeterminado.
+
+Estas actualizaciones coordinadas generalmente suelen incluir muchos cambios, requieren muchas pruebas y eso lleva tiempo. Para poder adaptarse más rápido a las necesidades cambiantes de los blobs en las capas 2, las bifurcaciones que solo modifican parámetros de blobs permiten aumentar su cantidad sin esperar a una actualización mayor.
+
+Los clientes pueden configurar las bifurcaciones que solo modifican parámetros de blobs, de forma similar a otros ajustes como el límite de gas. Entre actualizaciones extensas de Ethereum, los clientes pueden acordar aumentar los valores «target» y «max» de blobs, por ejemplo, a 9 y 12, y luego los operadores de nodos actualizan su software para participar en esa pequeña bifurcación. Las bifurcaciones que solo modifican parámetros de blobs se pueden configurar en cualquier momento.
+
+Cuando se añadieron los blobs a la red por primera vez en la actualización Dencun, el objetivo era de 3. Ese número aumentó a 6 en Pectra y, después de Fusaka, ahora puede aumentarse a un ritmo sostenible independientemente de estas importantes actualizaciones de la red.
+
+
+
+Fuente del gráfico: [Ethereum Blobs - @hildobby, Dune Analytics](https://dune.com/hildobby/blobs)
+
+**Recursos**: [Especificación técnica del EIP-7892](https://eips.ethereum.org/EIPS/eip-7892)
+
+#### Blobs basados en comisiones limitados por los costes de ejecución {#blob-base-fee-bounded-by-execution-costs}
+
+Las capas 2 pagan dos facturas al publicar datos: la comisión por blob y el gas de ejecución necesario para verificar esos blobs. Si el gas de ejecución domina, la subasta de la comisión por blob puede caer hasta 1 wei y dejar de ser una señal de precio.
+
+EIP-7918 fija un precio mínimo proporcional para cada blob. Cuando la reserva es superior a la comisión base nominal de los blobs, el algoritmo de ajuste de comisiones trata el bloque como si superara el objetivo, deja de bajar la comisión y permite que aumente con normalidad. Como resultado:
+
+- el mercado de comisiones por blobs siempre reacciona al embotellamiento
+- Las capas 2 pagan como mínimo una parte significativa del cómputo que imponen a los nodos
+- los picos en la comisión base de la capa de ejecución ya no pueden dejar la comisión por blob atrapada en 1 wei
+
+**Recursos**:
+
+- [Especificación técnica del EIP-7918](https://eips.ethereum.org/EIPS/eip-7918)
+- [Explicación de Storybook](https://notes.ethereum.org/@anderselowsson/AIG)
+
+### Escalar la L1 {#scale-l1}
+
+#### Caducidad del historial y recibos más sencillos {#history-expiry}
+
+En julio de 2025, los clientes de ejecución de Ethereum [comenzaron a admitir la caducidad parcial del historial](https://blog.ethereum.org/2025/07/08/partial-history-exp). Esto eliminó el historial anterior a [la Fusión](https://ethereum.org/roadmap/merge/) para reducir el espacio en disco que necesitan los operadores de nodos a medida que Ethereum sigue creciendo.
+
+Este EIP se encuentra en una sección aparte de los "EIP del núcleo" porque la bifurcación no implementa ningún cambio en realidad; es un aviso de que los equipos de clientes deben admitir la caducidad del historial para la actualización de Fusaka. En la práctica, los clientes pueden implementarlo en cualquier momento, pero añadirlo a la actualización lo incluyó de forma concreta en su lista de tareas pendientes y les permitió probar los cambios de Fusaka junto con esta característica.
+
+**Recursos**: [Especificación técnica del EIP-7642](https://eips.ethereum.org/EIPS/eip-7642)
+
+#### Establecer límites superiores para MODEXP {#set-upper-bounds-for-modexp}
+
+Hasta ahora, la MODEXP precompilada aceptaba números de prácticamente cualquier tamaño. Eso hacía que fuera difícil de comprobar, fácil de abusar y un riesgo para la estabilidad de los clientes. EIP-7823 establece un límite claro: cada número de entrada puede tener como máximo 8192 bits (1024 bytes) de longitud. Cualquier valor que supere ese límite será rechazado, se consumirá el gas de la transacción y no se producirá ningún cambio de estado. Cubre de sobra las necesidades del mundo real, eliminando los casos extremos que complicaban la planificación de límite de gas y las revisiones de seguridad. Este cambio proporciona mayor seguridad y protección contra ataques DoS sin interferir en la experiencia de usuarios ni desarrolladores.
+
+**Recursos**: [Especificación técnica del EIP-7823](https://eips.ethereum.org/EIPS/eip-7823)
+
+#### Límite de gas por transacción {#transaction-gas-limit-cap}
+
+EIP-[7825](https://eips.ethereum.org/EIPS/eip-7825) introduce un límite máximo de 16.777.216 (2^24) de gas por transacción. Es una medida proactiva de refuerzo contra ataques DoS, que pone un límite al peor caso posible de coste por transacción individual a medida que se aumenta el límite de gas por bloque. Facilita la validación y la propagación, lo que permite modelarlas mejor para abordar la escalabilidad aumentando el límite de gas.
+
+¿Por qué exactamente 2^24 en gas? Es una cifra cómodamente inferior que el límite de gas actual, lo bastante grande para desplegar contratos reales y ejecutar precompilaciones de envergadura, y al tener una potencia de 2, es fácil de implementar en todos los clientes. Este nuevo tamaño máximo de transacción es similar al tamaño medio de bloque anterior a Pectra, lo que lo convierte en un límite razonable para cualquier operación en Ethereum.
+
+**Recursos**: [Especificación técnica del EIP-7825](https://eips.ethereum.org/EIPS/eip-7825)
+
+#### Aumento del coste de gas de `MODEXP` {#modexp-gas-cost-increase}
+
+MODEXP es una función precompilada integrada que realiza potenciación modular, un tipo de cálculo de grandes cifras utilizado en la verificación de firmas RSA y en sistemas de pruebas. Permite que los contratos ejecuten estos cálculos directamente, sin tener que implementarlos por su cuenta.
+
+Los equipos de desarrollo y de cliente identificaron MODEXP como un gran obstáculo para aumentar el límite de gas por bloque, ya que el precio de gas actual suele subestimar la cantidad de potencia de cómputo que requieren ciertas entradas. Esto significa que una sola transacción que use MODEXP podría consumir la mayor parte del tiempo necesario para procesar un bloque entero, ralentizando la red.
+
+Este EIP cambia el precio para que coincida con los costes computacionales reales de la siguiente manera:
+
+- el aumento del cargo mínimo de 200 a 500 unidades de gas y la eliminación del descuento de un tercio introducido por EIP-2565 en el cálculo general del coste
+- incrementar el coste de forma más pronunciada cuando la entrada del exponente es muy larga. si el exponente (la "potencia" del número que se pasa como segundo argumento) supera los 32 bytes / 256 bits, el coste de gas aumenta mucho más rápido por cada byte adicional
+- el cobro de un coste adicional también cuando la base o el módulo sean grandes. Las otras dos cifras (la base y el módulo) tienen al menos 32 bytes; si alguna de ellas es más grande, el coste aumenta en proporcion a su tamaño
+
+Al ajustar mejor los costes al tiempo de procesamiento real, MODEXP ya no puede hacer que un bloque tarde demasiado en validarse. Este cambio es uno de varios pensados para hacer seguro un posible aumento del límite de gas por bloque en Ethereum en el futuro.
+
+**Recursos**: [Especificación técnica del EIP-7883](https://eips.ethereum.org/EIPS/eip-7883)
+
+#### Límite de tamaño de bloque de ejecución en RLP {#rlp-execution-block-size-limit}
+
+Esto crea un límite máximo sobre el tamaño que puede tener un bloque: este es un límite sobre lo que se _envía_ por la red y es independiente del límite de gas, que limita el _trabajo_ dentro de un bloque. El límite de tamaño del bloque es de 10 MiB, con un pequeño margen (2 MiB) reservado para los datos de consenso para que todo encaje y se propague limpiamente. Si un bloque es más grande que eso, los clientes lo rechazan.
+Esto es necesario porque los bloques muy grandes tardan más en propagarse y verificarse en toda la red, y pueden crear problemas de consenso o ser utilizados como un vector de DoS. Además, el protocolo de cotilleo (gossip) de la capa de consenso ya no reenvía bloques de más de ~10 MiB, por lo que alinear la capa de ejecución con ese límite evita situaciones extrañas de «visto por algunos, descartado por otros».
+
+En detalle: se trata de un límite para el tamaño del bloque de ejecución codificado con [RLP](/developers/docs/data-structures-and-encoding/rlp/). 10 MiB en total, con un margen de seguridad de 2 MiB reservado para el entramado del bloque de baliza. En la práctica, los clientes definen
+
+`MAX_BLOCK_SIZE = 10,485,760` bytes y
+
+`SAFETY_MARGIN = 2,097,152` bytes,
+
+y rechazan cualquier bloque de ejecución cuya carga útil RLP exceda
+
+`MAX_RLP_BLOCK_SIZE = MAX_BLOCK_SIZE − SAFETY_MARGIN`
+
+El objetivo es limitar el tiempo de propagación/validación en el peor de los casos y alinearse con el comportamiento del protocolo de cotilleo (gossip) de la capa de consenso, reduciendo el riesgo de reorganización/DoS sin cambiar la contabilidad del gas.
+
+**Recursos**: [Especificación técnica del EIP-7934](https://eips.ethereum.org/EIPS/eip-7934)
+
+#### Establecer el límite de gas predeterminado en 60 millones {#set-default-gas-limit-to-60-million}
+
+Antes de aumentar el límite de gas de 30M a 36M en febrero de 2025 (y posteriormente a 45M), este valor no había cambiado desde la Fusión (septiembre de 2022). Esta EIP tiene como objetivo dar prioirdad a una escalabilidad constante.
+
+EIP-7935 coordina a los equipos de clientes de la capa de ejecución para aumentar el límite de gas por defecto por encima de los 45M actuales como parte de Fusaka. Es una EIP informativa, pero pide explícitamente a los clientes que prueben límtes más altos en redes de desarrollo, que lleguen a un valor seguro en común y lo incluyan en sus versiones de Fusaka.
+
+La planificación en Devnet apunta a un estrés de ~60M (bloques completos con carga sintética) y aumentos iterativos; según la investigación, las patologías de tamaño de bloque en el peor caso no deberían imponer límites por debajo de ~150M. El despliegue debería ir acompañado del límite de gas por transacción (EIP-7825), para que ninguna transacción individual pueda dominar a medida que aumentan los límites.
+
+**Recursos**: [Especificación técnica del EIP-7935](https://eips.ethereum.org/EIPS/eip-7935)
+
+### Mejorar la experiencia de usuario {#improve-ux}
+
+#### Anticipación determinista del proponente {#deterministic-proposer-lookahead}
+
+Con EIP-7917, la cadena de baliza tendrá conocimiento anticipado de los proponentes de bloques para la próxima época. Tener una visión determinista de qué validadores propondrán los próximos bloques permite habilitar [preconfirmaciones](https://ethresear.ch/t/based-preconfirmations/17353): un compromiso con el proponente entrante que garantiza que la transacción del usuario se incluya en su bloque sin necesidad de esperar al bloque real.
+
+Esta funcionalidad beneficia tanto a las implementaciones de clientes como a la seguridad de la red, ya que evita casos extremos en los que los validadores prodrían manipular el calendario de proponentes. La anticipación también permite una implementación menos compleja.
+
+**Recursos**: [Especificación técnica del EIP-7917](https://eips.ethereum.org/EIPS/eip-7917)
+
+#### Código operativo CLZ (que cuenta los ceros iniciales) {#count-leading-zeros-opcode}
+
+Esta característica añade una pequeña instrucción de la EVM, **contar ceros a la izquierda (CLZ)**. Casi todo en la EVM se representa como un valor de 256 bits; este nuevo código de operación devuelve cuántos bits cero hay al principio. Es una funcionalidad común en muchas arquitecturas de conjuntos de instrucciones, ya que permite realizar operaciones aritméticas de forma más eficiente. En la práctica, esto reemplaza los escaneos de bits hechos a mano que se usan hoy en día por una sola instrucción, lo que simplifica y abarata tareas como encontrar el primer bit, escanear bytes o analizar campos de bits. El código de operación tiene un coste bajo y fijo, y se ha comprobado que su rendimiento es comparable al de una suma básica, lo que reduce el código de bytes y ahorra gas para realizar el mismo trabajo.
+
+**Recursos**: [Especificación técnica del EIP-7939](https://eips.ethereum.org/EIPS/eip-7939)
+
+#### Precompilado para admitir la curva secp256r1 {#secp256r1-precompile}
+
+Introduce un verificador de firmas secp256r1 (P-256) integrado, de tipo passkey, en la dirección fija `0x100`, utilizando el mismo formato de llamada ya adoptado por muchas L2 y corrigiendo casos excepcionales, de modo que los contratos escritos para esos entornos funcionen en la L1 sin cambios.
+
+¡Mejora de la experiencia de usuario! Para los usuarios, esto habilita la firma nativa del dispositivo y las passkeys. Las carteras pueden acceder directamente a Apple Secure Enclave, Android Keystore, los módulos de seguridad de hardware (HSM) y FIDO2/WebAuthn, sin frase semilla, con una incorporación más fluida y flujos multifactor que se sienten como aplicaciones modernas. Esto da como resultado una mejor experiencia de usuario, una recuperación más fácil y patrones de abstracción de cuentas que coinciden con lo que ya hacen miles de millones de dispositivos.
+
+Para los desarrolladores, toma una entrada de 160 bytes y devuelve una salida de 32 bytes, lo que facilita la portabilidad de las bibliotecas existentes y los contratos de L2. Internamente, incluye comprobaciones de punto en el infinito y de comparación modular para eliminar casos excepcionales complicados sin romper los llamadores válidos.
+
+**Recursos**:
+
+- [Especificación técnica del EIP-7951](https://eips.ethereum.org/EIPS/eip-7951)
+- [Más sobre RIP-7212](https://www.alchemy.com/blog/what-is-rip-7212) _(Tenga en cuenta que el EIP-7951 sustituyó al RIP-7212)_
+
+### Meta {#meta}
+
+#### Método JSON-RPC `eth_config` {#eth-config}
+
+Esta es una llamada JSON-RPC que le permite preguntar a su nodo qué configuración de bifurcación está ejecutando. Devuelve tres instantáneas: `current`, `next` y `last`, para que los validadores y las herramientas de supervisión puedan verificar que los clientes están preparados para una próxima bifurcación.
+
+En la práctica, esto es para abordar una deficiencia descubierta cuando la bifurcación Pectra se puso en marcha en la red de pruebas Holesky a principios de 2025 con errores de configuración menores que resultaron en un estado de no finalización. Esto ayuda a los equipos de pruebas y a los desarrolladores a garantizar que las bifurcaciones principales se comportarán como se espera al pasar de las redes de desarrollo a las redes de prueba, y de las redes de prueba a la red principal.
+
+Las instantáneas incluyen: `chainId`, `forkId`, la hora de activación de la bifurcación planificada, qué precompilados están activos, las direcciones de los precompilados, las dependencias de los contratos del sistema y el programa de blobs de la bifurcación.
+
+Este EIP se encuentra en una sección aparte de los "EIP del núcleo" porque la bifurcación no implementa ningún cambio en realidad; es un aviso de que los equipos de clientes deben implementar este método JSON-RPC para la actualización de Fusaka.
+
+**Recursos**: [Especificación técnica del EIP-7910](https://eips.ethereum.org/EIPS/eip-7910)
+
+## Preguntas frecuentes {#faq}
+
+### ¿Afecta esta actualización a todos los nodos y validadores de Ethereum? {#does-this-upgrade-affect-all-ethereum-nodes-and-validators}
+
+Sí, la actualización Fusaka requiere actualizar [los clientes de ejecución y los clientes de consenso](/developers/docs/nodes-and-clients/). Todos los principales clientes de Ethereum lanzarán versiones compatibles con la bifurcación dura marcada como alta prioridad. Puede estar al tanto de cuándo estarán disponibles estas versiones en los repositorios de GitHub de los clientes, en sus [canales de Discord](https://ethstaker.org/support), en el [Discord EthStaker](https://dsc.gg/ethstaker), o suscribiéndose al blog de Ethereum para recibir actualizaciones del protocolo. Para mantener la sincronización con la red de Ethereum posactualización, los operadores de nodos deben asegurarse de que están ejecutando una versión de cliente compatible. Tenga en cuenta que la información sobre las versiones de los clientes es sensible al tiempo, y los usuarios deben consultar las últimas actualizaciones para obtener los últimos detalles.
+
+### ¿Cómo se puede convertir ETH después de la bifurcación dura? {#how-can-eth-be-converted-after-the-hardfork}
+
+- **No se requiere ninguna acción para sus ETH**: después de la actualización Fusaka de Ethereum, no hay necesidad de convertir o actualizar sus ETH. Los saldos de su cuenta seguirán siendo los mismos, y el ETH que tiene actualmente seguirá siendo accesible en su forma existente después de la bifurcación dura.
+- **¡Cuídese de fraudes!** **Cualquiera que le indique que "actualice" su ETH está tratando de estafarlo.** No hay nada que tenga que hacer en relación con esta actualización. Sus activos no se verán afectados en absoluto. Recuerde, mantenerse informado es la mejor defensa contra las estafas.
+
+[Más sobre el reconocimiento y la prevención de estafas](/security/)
+
+### ¿A qué vienen las cebras? {#whats-with-the-zebras}
+
+Una cebra es la «mascota» elegida por los desarrolladores de Fusaka porque sus rayas reflejan el muestreo de disponibilidad de datos basado en columnas de PeerDAS, donde los nodos custodian ciertas subredes de columnas y muestrean algunas otras columnas de cada ranura de pares para comprobar que los datos de los blobs están disponibles.
+
+La Fusión en 2022 [utilizó un panda](https://x.com/hwwonx/status/1431970802040127498) como mascota para señalar la unión de las capas de ejecución y de consenso. Desde entonces, se han elegido mascotas de manera informal para cada bifurcación y aparecen como arte ASCII en los registros del cliente en el momento de la actualización. Es solo una forma divertida de celebrarlo.
+
+### ¿Qué mejoras se incluyen para el escalado de la L2? {#what-improvements-are-included-for-l2-scaling}
+
+[PeerDAS](/roadmap/fusaka/peerdas) es la característica principal de la bifurcación. Implementa el muestreo de disponibilidad de datos (DAS) que desbloquea más escalabilidad para los rollups, escalando teóricamente el espacio de blobs hasta 8 veces el tamaño actual. El mercado de comisiones de blobs también se mejorará para reaccionar eficientemente a la congestión y garantizar que las L2 paguen una comisión significativa por el cómputo y el espacio que los blobs imponen a los nodos.
+
+### ¿En qué se diferencian las bifurcaciones BPO? {#how-are-bpo-forks-different}
+
+Las bifurcaciones solo de parámetros de blob proporcionan un mecanismo para aumentar continuamente el recuento de blobs (tanto el objetivo como el máximo) después de que se active PeerDAS, sin tener que esperar a una actualización coordinada completa. Cada aumento está codificado para ser preconfigurado en las versiones de cliente que admiten Fusaka.
+
+Como usuario o validador, no necesita actualizar sus clientes para cada BPO y solo debe asegurarse de seguir las bifurcaciones duras principales como Fusaka. Esta es la misma práctica que antes, no se necesitan acciones especiales. Se sigue recomendando supervisar sus clientes en torno a las actualizaciones y BPO y mantenerlos actualizados incluso entre las versiones principales, ya que las correcciones u optimizaciones pueden seguir a la bifurcación dura.
+
+### ¿Cuál es el calendario de las BPO? {#what-is-the-bpo-schedule}
+
+El calendario exacto de las actualizaciones de las BPO se determinará con las versiones de Fusaka. Siga los [Anuncios del protocolo](https://blog.ethereum.org/category/protocol) y las notas de la versión de sus clientes.
+
+Ejemplo de cómo podría ser:
+
+- Antes de Fusaka: objetivo 6, máx. 9
+- En la activación de Fusaka: objetivo 6, máx. 9
+- BPO1, unas semanas después de la activación de Fusaka: objetivo 10, máx. 15, aumentando en dos tercios
+- BPO2, unas semanas después de BPO1: objetivo 14, máx. 21
+
+### ¿Reducirá esto las comisiones en Ethereum (capa 1)? {#will-this-lower-gas}
+
+Esta actualización no reduce las comisiones de gas en la L1, al menos no directamente. El objetivo principal es tener más espacio de blobs para los datos de los rollups y, por lo tanto, reducir las comisiones en la capa 2. Esto podría tener algunos efectos secundarios en el mercado de comisiones de la L1, pero no se espera ningún cambio significativo.
+
+### Como staker, ¿qué tengo que hacer para la actualización? {#as-a-staker-what-do-i-need-to-do-for-the-upgrade}
+
+Al igual que con cada actualización de la red, asegúrese de actualizar sus clientes a las últimas versiones marcadas con soporte para Fusaka. Siga las actualizaciones en la lista de correo y los [Anuncios del protocolo en el blog de la EF](https://blog.ethereum.org/category/protocol) para informarse sobre las versiones.
+Para validar su configuración antes de que Fusaka se active en la red principal, puede ejecutar un validador en las redes de prueba. Fusaka [se activa antes en las redes de prueba](https://blog.ethereum.org/2025/09/26/fusaka-testnet-announcement), lo que le da más margen para asegurarse de que todo funciona y para informar de errores. Las bifurcaciones de la red de prueba también se anuncian en la lista de correo y en el blog.
+
+### ¿Afecta a los validadores la «visión anticipada determinista del proponente» (EIP-7917)? {#does-7917-affect-validators}
+
+Este cambio no modifica el funcionamiento de su cliente validador; sin embargo, proporcionará más información sobre el futuro de sus deberes como validador. Asegúrese de actualizar sus herramientas de supervisión para mantenerse al día con las nuevas características.
+
+### ¿Cómo afecta Fusaka a los requisitos de ancho de banda para los nodos y validadores? {#how-does-fusaka-affect-bandwidth-requirements-for-nodes-and-validators}
+
+PeerDAS supone un cambio significativo en la forma en que los nodos transmiten los datos de los blobs. Todos los datos se dividen en fragmentos llamados columnas a través de 128 subredes, y los nodos se suscriben solo a algunas de ellas. La cantidad de columnas de subred que los nodos tienen que custodiar depende de su configuración y del número de validadores conectados. Los requisitos reales de ancho de banda dependerán de la cantidad de blobs permitidos en la red y del tipo de nodo. En el momento de la activación de Fusaka, el objetivo de blobs se mantiene igual que antes, pero con PeerDAS, los operadores de nodos pueden ver una disminución en el uso de disco de los blobs y en el tráfico de red. A medida que las BPO configuren un mayor número de blobs en la red, el ancho de banda necesario aumentará con cada BPO.
+
+Los requisitos de los nodos siguen estando dentro de los [márgenes recomendados](https://eips.ethereum.org/EIPS/eip-7870) incluso después de las BPO de Fusaka.
+
+#### Nodos completos {#full-nodes}
+
+Los nodos regulares sin validadores se suscribirán a solo 4 subredes, proporcionando custodia para 1/8 de los datos originales. Esto significa que, con la misma cantidad de datos de blob, el ancho de banda del nodo para descargarlos sería ocho (8) veces menor. El uso de disco y el ancho de banda de descarga de los blobs para un nodo completo normal podría disminuir alrededor del 80 %, a solo unos pocos Mb.
+
+#### Stakers individuales {#solo-stakers}
+
+Si el nodo se utiliza para un cliente validador, tiene que custodiar más columnas y, por lo tanto, procesar más datos. Con un validador añadido, el nodo se suscribe al menos a 8 subredes de columnas y, por lo tanto, procesa el doble de datos que un nodo regular, pero aun así menos que antes de Fusaka. Si el saldo del validador supera los 287 ETH, se suscribirá a cada vez más subredes.
+
+Para un staker en solitario, esto significa que su uso de disco y ancho de banda de descarga disminuirán alrededor del 50 %. Sin embargo, para construir bloques localmente y subir todos los blobs a la red, se necesita más ancho de banda de subida. Los constructores locales necesitarán un ancho de banda de subida entre 2 y 3 veces mayor que antes en el momento de Fusaka y, con el objetivo de BPO2 de 15/21 blobs, el ancho de banda de subida final necesario tendrá que ser unas 5 veces mayor, a 100 Mbps.
+
+#### Grandes validadores {#large-validators}
+
+El número de subredes suscritas crece a medida que se añaden más saldo y validadores al nodo. Por ejemplo, con un saldo de alrededor de 800 ETH, el nodo custodia 25 columnas y necesitará alrededor de un 30 % más de ancho de banda de descarga que antes. La subida necesaria aumenta de forma similar a la de los nodos regulares y se necesitan al menos 100 Mbps.
+
+Con 4096 ETH y 2 validadores de saldo máximo, el nodo se convierte en un «supernodo» que custodia todas las columnas, por lo que descarga y almacena todo. Estos nodos reparan activamente la red contribuyendo con los datos que faltan, pero también requieren mucho más ancho de banda y almacenamiento. Con el objetivo final de blobs siendo 6 veces mayor que antes, los supernodos tendrán que almacenar alrededor de 600 GB de datos de blobs adicionales y tener un ancho de banda de descarga sostenido más rápido de alrededor de 20 Mbps.
+
+[Lea más detalles sobre los requisitos esperados.](https://ethpandaops.io/posts/fusaka-bandwidth-estimation/#theoretical-requirements)
+
+### ¿Qué cambios se implementan en la EVM? {#what-evm-changes-are-implemented}
+
+Fusaka consolida la EVM con nuevos cambios y características menores.
+
+- Por seguridad durante el escalado, el tamaño máximo de una única transacción se [limitará a 16,7 millones](https://eips.ethereum.org/EIPS/eip-7825) de unidades de gas.
+- Se añade a la EVM el [nuevo código de operación para contar ceros a la izquierda (CLZ)](https://eips.ethereum.org/EIPS/eip-7939) y permitirá que los lenguajes de contratos inteligentes realicen ciertas operaciones de manera más eficiente.
+- [Aumentará el coste del precompilado `ModExp`](https://eips.ethereum.org/EIPS/eip-7883): los contratos que lo utilicen cobrarán más gas por la ejecución.
+
+### ¿Cómo afecta el nuevo límite de gas de 16 M a los desarrolladores de contratos? {#how-does-new-16m-gas-limit-affects-contract-developers}
+
+Fusaka introduce un límite al [tamaño máximo de una única transacción a 16,7 millones](https://eips.ethereum.org/EIPS/eip-7825) (2^24) de unidades de gas. Esto es aproximadamente el tamaño anterior de un bloque promedio, lo que lo hace lo suficientemente grande como para dar cabida a transacciones complejas que consumirían un bloque entero. Este límite crea una protección para los clientes, previniendo posibles ataques de DoS en el futuro con un límite de gas de bloque más alto. El objetivo del escalado es permitir que más transacciones entren en la cadena de bloques sin que una sola consuma todo el bloque.
+
+Las transacciones de los usuarios habituales están lejos de alcanzar este límite. Ciertos casos extremos, como operaciones DeFi grandes y complejas, grandes implementaciones de contratos inteligentes o transacciones por lotes dirigidas a múltiples contratos, podrían verse afectados por este cambio. Estas transacciones tendrán que dividirse en otras más pequeñas u optimizarse de otra manera. Utilice la simulación antes de enviar transacciones que potencialmente alcancen el límite.
+
+El método RPC `eth_call` no está limitado y permitirá la simulación de transacciones más grandes que el límite real de la cadena de bloques. El límite real para los métodos RPC puede ser configurado por el operador del cliente para prevenir abusos.
+
+### ¿Qué significa CLZ para los desarrolladores? {#what-clz-means-for-developers}
+
+Los compiladores de la EVM, como Solidity, implementarán y utilizarán internamente la nueva función para contar ceros. Los nuevos contratos podrían beneficiarse del ahorro de gas si dependen de este tipo de operación. Siga las versiones y los anuncios de características del lenguaje de contratos inteligentes para obtener documentación sobre los posibles ahorros.
+
+### ¿Hay algún cambio para mis contratos inteligentes existentes? {#what-clz-means-for-developers}
+
+Fusaka no tiene ningún efecto directo que rompa los contratos existentes o cambie su comportamiento. Los cambios introducidos en la capa de ejecución se realizan con retrocompatibilidad; sin embargo, siempre esté atento a los casos extremos y al posible impacto.
+
+[Con el aumento del coste del precompilado `ModExp`](https://eips.ethereum.org/EIPS/eip-7883), los contratos que dependen de él consumirán más gas para la ejecución. Si su contrato depende en gran medida de esto y se vuelve más caro para los usuarios, reconsidere cómo se utiliza.
+
+Considere el [nuevo límite de 16,7 millones](https://eips.ethereum.org/EIPS/eip-7825) si las transacciones que ejecutan sus contratos podrían alcanzar un tamaño similar.
+
+## Lecturas adicionales {#further-reading}
+
+- [Hoja de ruta de Ethereum](/roadmap/)
+- [Forkcast: Fusaka](https://forkcast.org/upgrade/fusaka)
+- [Fusaka Meta EIP](https://eips.ethereum.org/EIPS/eip-7607)
+- [Anuncio en el blog de la red de pruebas de Fusaka](https://blog.ethereum.org/2025/09/26/fusaka-testnet-announcement)
+- [Bankless: qué le aportarán a Ethereum Fusaka y Pectra](https://www.bankless.com/read/what-fusaka-pectra-will-bring-ethereum)
+- [Bankless: las próximas actualizaciones de Ethereum: Fusaka, Glamsterdam y más, con Preston Van Loon](https://x.com/BanklessHQ/status/1956017743289020633?t=502)
+- [Los archivos de Fusaka](https://www.youtube.com/playlist?list=PL4cwHXAawZxpz-erUbKKUnnGoQNdF8s7Z)
+- [PEEPanEIPs Explicados](https://www.youtube.com/playlist?list=PL4cwHXAawZxoIenfk7OJry4rxcqX-eqBt)
From 52f7d0e03a1c79508af90176aada7d6b562a3e08 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:37 -0300
Subject: [PATCH 110/589] update(i18n):
public/content/translations/es/developers/docs/apis/backend/index.md
---
.../es/developers/docs/apis/backend/index.md | 110 +++++++++---------
1 file changed, 57 insertions(+), 53 deletions(-)
diff --git a/public/content/translations/es/developers/docs/apis/backend/index.md b/public/content/translations/es/developers/docs/apis/backend/index.md
index 343cc1e926f..972653c92d0 100644
--- a/public/content/translations/es/developers/docs/apis/backend/index.md
+++ b/public/content/translations/es/developers/docs/apis/backend/index.md
@@ -4,44 +4,44 @@ description: Una introducción a las API del cliente de Ethereum, que permiten i
lang: es
---
-Para que una aplicación de software interactúe con la blockchain de Ethereum (por ejemplo, para que lea datos de la blockchain y/o envíe transacciones a la red), debe conectarse a un nodo de Ethereum.
+Para que una aplicación de software pueda interactuar con la blockchain de Ethereum (es decir, leer datos de la blockchain y/o enviar transacciones a la red), debe conectarse a un nodo de Ethereum.
-Para este propósito, cada cliente de Ethereum implementa la especificación [JSON-RPC](/developers/docs/apis/json-rpc/) para que haya un conjunto uniforme de [métodos](/developers/docs/apis/json-rpc/#json-rpc-methods) en los que las aplicaciones pueden confiar.
+Para este propósito, cada cliente de Ethereum implementa la especificación [JSON-RPC](/developers/docs/apis/json-rpc/), de modo que existe un conjunto uniforme de [métodos](/developers/docs/apis/json-rpc/#json-rpc-methods) en los que las aplicaciones pueden confiar.
-Si deseas utilizar un lenguaje de programación específico para conectarte a un nodo Ethereum, inicia tu propia solución y ten en cuenta que hay varias bibliotecas dentro del ecosistema que lo hacen mucho más fácil. Mediante estas bibliotecas, los desarrolladores pueden escribir métodos intuitivos de una línea para iniciar solicitudes JSON RPC (de manera invisible), que interactúan con Ethereum.
+Si desea utilizar un lenguaje de programación específico para conectarse con un nodo de Ethereum, existen muchas bibliotecas de conveniencia dentro del ecosistema que facilitan mucho esta tarea. Con estas bibliotecas, los desarrolladores pueden crear métodos intuitivos de una sola línea para inicializar solicitudes JSON-RPC (de manera interna) que interactúan con Ethereum.
## Requisitos previos {#prerequisites}
-Comprender la [pila de Ethereum](/developers/docs/ethereum-stack/) y los [clientes de Ethereum](/developers/docs/nodes-and-clients/) puede resultar útil.
+Puede ser útil comprender la [pila de Ethereum](/developers/docs/ethereum-stack/) y los [clientes de Ethereum](/developers/docs/nodes-and-clients/).
## ¿Por qué usar una biblioteca? {#why-use-a-library}
-Estas bibliotecas eliminan en gran parte la complejidad de interactuar directamente con un nodo Ethereum. También proporcionan funciones útiles (por ejemplo, convertir ETH a Gwei) de modo que, como desarrollador, puedas dedicar menos tiempo a lidiar con las complejidades de los clientes de Ethereum y centrarte más en las características únicas de tu aplicación.
+Estas bibliotecas eliminan en gran parte la complejidad de interactuar directamente con un nodo Ethereum. También proporcionan funciones utilitarias (por ejemplo, convertir ETH a Gwei), para que como desarrollador dedique menos tiempo a las complejidades de los clientes de Ethereum y pueda enfocarse más en la funcionalidad única de su aplicación.
## Bibliotecas disponibles {#available-libraries}
-### Servicios de infraestructura y de nodos {#infrastructure-and-node-services}
+### Infraestructura y servicios de nodo {#infrastructure-and-node-services}
-**Alchemy:** **_Plataforma de desarrollo de Ethereum._**
+**Alchemy -** **_Plataforma de desarrollo de Ethereum._**
- [alchemy.com](https://www.alchemy.com/)
-- [Documentación](https://docs.alchemy.com/)
+- [Documentación](https://www.alchemy.com/docs/)
- [GitHub](https://github.com/alchemyplatform)
- [Discord](https://discord.com/invite/alchemyplatform)
-**All That Node:** **_Nodo como servicio._**
+**All That Node -** **_Node-as-a-Service._**
- [All That Node.com](https://www.allthatnode.com/)
- [Documentación](https://docs.allthatnode.com)
- [Discord](https://discord.gg/GmcdVEUbJM)
-**Blast by Bware Labs:** **_API descentralizadas para redes de prueba y la red principal de Ethereum._**
+**Blast by Bware Labs -** **_APIs descentralizadas para Ethereum Mainnet y Testnets._**
- [blastapi.io](https://blastapi.io/)
- [Documentación](https://docs.blastapi.io)
-- [Discord](https://discord.gg/bwarelabs)
+- [Discord](https://discord.gg/SaRqmRUjjQ)
-**BlockPi:****_ Proporcione servicios RPC más eficientes y rápidos._**
+**BlockPi -** **_Brinda servicios RPC más eficientes y rápidos_**
- [blockpi.io](https://blockpi.io/)
- [Documentación](https://docs.blockpi.io/)
@@ -53,42 +53,47 @@ Estas bibliotecas eliminan en gran parte la complejidad de interactuar directame
- [cloudflare-eth.com](https://www.cloudflare.com/application-services/products/web3/)
**Etherscan: Explorador de bloques y API de transacción**
+
- [Documentación](https://docs.etherscan.io/)
-**GetBlock:** **_Cadena de bloques como servicio para el desarrollo web3_**
+**Blockscout: explorador de bloques de código abierto**
+
+- [Documentación](https://docs.blockscout.com/)
+
+**GetBlock-** **_Blockchain-as-a-service para el desarrollo Web3_**
- [GetBlock.io](https://getblock.io/)
-- [Documentación](https://getblock.io/docs/)
+- [Documentación](https://docs.getblock.io/)
-**Infura: ** **_La API de Ethereum como servicio._**
+**Infura -** **_La API de Ethereum como servicio._**
- [infura.io](https://infura.io)
- [Documentación](https://docs.infura.io/api)
- [GitHub](https://github.com/INFURA)
-**Nodo RPC: _Proveedor de EVM JSON-RPC rentable_**
+**Node RPC - _Proveedor EVM JSON-RPC rentable_**
- [noderpc.xyz](https://www.noderpc.xyz/)
- [Documentación](https://docs.noderpc.xyz/node-rpc)
-**NOWNodes: _Nodos completos y exploradores de bloques._**
+**NOWNodes - _Nodos completos y exploradores de bloques._**
- [NOWNodes.io](https://nownodes.io/)
-- [Documentación](https://documenter.getpostman.com/view/13630829/TVmFkLwy#intro)
+- [Documentación](https://nownodes.gitbook.io/documentation)
-**QuickNode:** **_Infraestructura de cadena de bloques como servicio._**
+**QuickNode -** **_Infraestructura Blockchain como Servicio._**
- [quicknode.com](https://quicknode.com)
- [Documentación](https://www.quicknode.com/docs/welcome)
- [Discord](https://discord.gg/quicknode)
-**Rivet:** **_API de Ethereum y Ethereum Classic como servicio impulsadas por software de código abierto._**
+**Rivet -** **_APIs para Ethereum y Ethereum Classic como servicio impulsadas por software de código abierto._**
- [rivet.cloud](https://rivet.cloud)
- [Documentación](https://rivet.cloud/docs/)
- [GitHub](https://github.com/openrelayxyz/ethercattle-deployment)
-**Zmok:** **_Nodos Ethereum orientados a la velocidad como API JSON-RPC/WebSockets._**
+**Zmok -** **_Nodos de Ethereum orientados a la velocidad como API JSON-RPC/WebSockets._**
- [zmok.io](https://zmok.io/)
- [GitHub](https://github.com/zmok-io)
@@ -97,67 +102,67 @@ Estas bibliotecas eliminan en gran parte la complejidad de interactuar directame
### Herramientas de desarrollo {#development-tools}
-**ethers-kt:** **_Biblioteca asíncrona Kotlin/Java/Android de alto rendimiento para cadena de bloques basadas en EVM._**
+**ethers-kt -** **_Librería asíncrona y de alto rendimiento en Kotlin/Java/Android para blockchains basados en EVM._**
- [GitHub](https://github.com/Kr1ptal/ethers-kt)
- [Ejemplos](https://github.com/Kr1ptal/ethers-kt/tree/master/examples)
- [Discord](https://discord.gg/rx35NzQGSb)
-**Nethereum:** **_Biblioteca de integración .NET de código abierto para la cadena de bloques._**
+**Nethereum -** **_Una biblioteca de integración .NET de código abierto para blockchain._**
- [GitHub](https://github.com/Nethereum/Nethereum)
- [Documentación](http://docs.nethereum.com/en/latest/)
- [Discord](https://discord.com/invite/jQPrR58FxX)
-**Herramientas de Python:** **_Variedad de bibliotecas para interactuar con Ethereum a través de Python._**
+**Python Tooling -** **_Variedad de bibliotecas para la interacción con Ethereum vía Python._**
-- [py.ethereum.org](https://python.ethereum.org/)
-- [Github de web3.py](https://github.com/ethereum/web3.py)
-- [Chat de web3.py](https://gitter.im/ethereum/web3.py)
+- [py.ethereum.org](https://snakecharmers.ethereum.org/)
+- [web3.py GitHub](https://github.com/ethereum/web3.py)
+- [web3.py Chat](https://gitter.im/ethereum/web3.py)
-**Tatum:** **_Plataforma definitiva de desarrollo de cadena de bloques._**
+**Tatum -** **_La plataforma de desarrollo blockchain definitiva._**
- [Tatum](https://tatum.io/)
- [GitHub](https://github.com/tatumio/)
- [Documentación](https://docs.tatum.io/)
- [Discord](https://discord.gg/EDmW3kjTC9)
-**web3j:** **_Biblioteca de integración de Java/Android/Kotlin/Scala para Ethereum._**
+**web3j -** **_Una biblioteca de integración Java/Android/Kotlin/Scala para Ethereum._**
- [GitHub](https://github.com/web3j/web3j)
-- [Documentos](https://docs.web3j.io/)
+- [Docs](https://docs.web3j.io/)
- [Gitter](https://gitter.im/web3j/web3j)
-### Servicios de cadena de bloques {#blockchain-services}
+### Servicios blockchain {#blockchain-services}
-**BlockCypher:** **_API web de Ethereum._**
+**BlockCypher -** **_APIs web de Ethereum._**
- [blockcypher.com](https://www.blockcypher.com/)
- [Documentación](https://www.blockcypher.com/dev/ethereum/)
-**Chainbase:** **_Infraestructura de datos web3 de Ethereum todo en uno._**
+**Chainbase -** **_Infraestructura de datos web3 todo en uno para Ethereum._**
- [chainbase.com](https://chainbase.com/)
- [Documentación](https://docs.chainbase.com/)
- [Discord](https://discord.gg/Wx6qpqz4AF)
-**Chainstack:** **_Nodos elásticos y dedicados de Ethereum como servicio._**
+**Chainstack -** **_Nodos elásticos y dedicados de Ethereum como servicio._**
- [chainstack.com](https://chainstack.com)
-- [Documentación](https://docs.chainbase.com/docs)
-- [Referencia de API de Ethereum](https://docs.chainstack.com/reference/ethereum-getting-started)
+- [Documentación](https://docs.chainstack.com/)
+- [Referencia API Ethereum](https://docs.chainstack.com/reference/ethereum-getting-started)
-**Coinbase Cloud Node:** **_API de infraestructura de cadena de bloques._**
+**Coinbase Cloud Node -** **_API de infraestructura blockchain._**
-- [Coinbase Cloud Node](https://www.coinbase.com/cloud)
-- [Documentación](https://docs.cloud.coinbase.com/)
+- [Coinbase Cloud Node](https://www.coinbase.com/developer-platform)
+- [Documentación](https://docs.cdp.coinbase.com/)
-**DataHub by Figment:**** _Servicios de API web3 con redes de prueba y la red principal de Ethereum._**
+**DataHub by Figment -** **_Servicios de API Web3 con Ethereum Mainnet y testnets._**
- [DataHub](https://www.figment.io/)
- [Documentación](https://docs.figment.io/)
-**Moralis:** **_Proveedor de API de EVM de nivel empresarial._**
+**Moralis -** **_Proveedor de API EVM a nivel empresarial._**
- [moralis.io](https://moralis.io)
- [Documentación](https://docs.moralis.io/)
@@ -165,43 +170,42 @@ Estas bibliotecas eliminan en gran parte la complejidad de interactuar directame
- [Discord](https://moralis.io/joindiscord/)
- [Foro](https://forum.moralis.io/)
-**NFTPort:** **_API de datos y minteo de Ethereum._**
+**NFTPort -** **_APIs de Datos y Mint de Ethereum._**
-- [puertonft.xyz](https://www.nftport.xyz/)
+- [nftport.xyz](https://www.nftport.xyz/)
- [Documentación](https://docs.nftport.xyz/)
- [GitHub](https://github.com/nftport/)
- [Discord](https://discord.com/invite/K8nNrEgqhE)
-**Tokenview:** **_La plataforma general de API de Blockchain Multi-Crypto._**
+**Tokenview -** **_La plataforma general de APIs para múltiples blockchains de criptomonedas._**
- [services.tokenview.io](https://services.tokenview.io/)
- [Documentación](https://services.tokenview.io/docs?type=api)
- [GitHub](https://github.com/Tokenview)
-**Watchdata:** **_Proporcione acceso sencillo y seguro de API a la cadena de bloques de Ethereum._**
+**Watchdata -** **_Proporciona acceso a la API del blockchain de Ethereum de forma simple y confiable._**
- [Watchdata](https://watchdata.io/)
- [Documentación](https://docs.watchdata.io/)
- [Discord](https://discord.com/invite/TZRJbZ6bdn)
-**Covalente:** **_API de cadena de bloques enriquecidas para más de 200 cadenas._**
+**Covalent -** **_APIs enriquecidas de blockchain para más de 200 cadenas._**
- [covalenthq.com](https://www.covalenthq.com/)
- [Documentación](https://www.covalenthq.com/docs/api/)
- [GitHub](https://github.com/covalenthq)
- [Discord](https://www.covalenthq.com/discord/)
+## Lecturas adicionales {#further-reading}
-## Más información {#further-reading}
-
-_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Temas relacionados {#related-topics}
-- [ Nodos y clientes](/developers/docs/nodes-and-clients/)
-- [Entornos de desarrollo](/developers/docs/frameworks/)
+- [Nodos y clientes](/developers/docs/nodes-and-clients/)
+- [Frameworks de desarrollo](/developers/docs/frameworks/)
## Tutoriales relacionados {#related-tutorials}
-- [Configurar Web3js para utilizar la cadena de bloques de Ethereum en Javascript:](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _Instrucciones para configurar web3.js en su proyecto._
-- [Invocar un contrato inteligente desde JavaScript:](/developers/tutorials/calling-a-smart-contract-from-javascript/) _ con el token DAI, vea cómo invocar funciones de contratos usando Javascript._
+- [Configure Web3js para usar la blockchain de Ethereum en JavaScript](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– Instrucciones para configurar web3.js en su proyecto._
+- [Llamar a un smart contract desde JavaScript](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– Usando el token DAI, vea cómo llamar funciones de contratos utilizando JavaScript._
From 73888b1dd5af1af9d6b8f91b4a80a4c3a1caf055 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:39 -0300
Subject: [PATCH 111/589] update(i18n):
public/content/translations/es/10years/terms-and-conditions/index.md
---
.../es/10years/terms-and-conditions/index.md | 65 +++++++++++++++++++
1 file changed, 65 insertions(+)
create mode 100644 public/content/translations/es/10years/terms-and-conditions/index.md
diff --git a/public/content/translations/es/10years/terms-and-conditions/index.md b/public/content/translations/es/10years/terms-and-conditions/index.md
new file mode 100644
index 00000000000..c74051bf040
--- /dev/null
+++ b/public/content/translations/es/10years/terms-and-conditions/index.md
@@ -0,0 +1,65 @@
+---
+title: Términos y condiciones de acuñación del NFT del 10.º aniversario de Ethereum
+lang: es
+hideEditButton: true
+---
+
+# Términos de acuñación del NFT conmemorativo {#commemorative-nft-minting-terms}
+
+20 de junio de 2025
+
+**TÉRMINOS Y CONDICIONES DE ACUÑACIÓN DE LA ANTORCHA DE LOS 10 AÑOS DE ETHEREUM**
+
+**LEA ESTOS TÉRMINOS Y CONDICIONES ANTES DE ACUÑAR LA ANTORCHA DE LOS 10 AÑOS DE ETHEREUM**
+
+Estos términos y condiciones constituyen un acuerdo vinculante (el «**Acuerdo**») entre usted («**Usted**») y la Ethereum Foundation, una fundación suiza registrada en Zug, Suiza (la «**EF**»), que rige la acuñación y el uso por su parte del token no fungible conocido como la **Antorcha de los 10 años de Ethereum** (el «**NFT**»). Al iniciar la transacción de acuñación, usted reconoce que ha leído, entendido y acepta quedar vinculado por este Acuerdo. Si no está de acuerdo, no proceda con la acuñación.
+
+## 1. Naturaleza del NFT {#nature-of-the-nft}
+
+1. **Propósito conmemorativo**. El NFT se emite únicamente para conmemorar el décimo aniversario del bloque Génesis de Ethereum. No confiere ningún interés de propiedad, derecho financiero, expectativa de ganancias, recompensa, dividendo, derecho de gobernanza, utilidad ni ningún otro derecho de ningún tipo.
+
+2. **Sin contraprestación**. El NFT se acuña sin coste; usted es responsable únicamente de las comisiones de gas de la transacción de red necesarias para ejecutar la transacción de acuñación. La EF no recibe ningún pago, regalía u otra contraprestación por su acuñación.
+
+## 2) Propiedad intelectual {#intellectual-property}
+
+1. **Licencia CC BY 4.0**. La obra de arte incorporada o asociada con el NFT está licenciada al público bajo la [Licencia Internacional Creative Commons CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).
+
+2. **No se confieren derechos de propiedad**.Acuñar, mantener o transferir el NFT no transfiere ni confiere ningún derecho de propiedad, título o interés sobre la obra de arte o cualquier otra propiedad intelectual de la EF.
+
+## 3) Declaraciones y garantías {#representations-and-warranties}
+
+Usted declara, garantiza y se compromete a que:
+
+1. Tiene al menos dieciocho (18) años de edad y capacidad legal para celebrar este Acuerdo;
+
+2. No es: (i) objeto de ninguna sanción económica o comercial impuesta o administrada por Suiza, los Estados Unidos (incluida la Lista SDN de la OFAC), la Unión Europea, el Reino Unido, las Naciones Unidas o cualquier otro régimen similar; y/o (ii) no está ubicado, organizado o reside en una jurisdicción exhaustivamente sancionada (actualmente Corea del Norte, Crimea, Irán, Siria, Cuba, Donetsk o Luhansk);
+
+3. Está acuñando el NFT únicamente con fines conmemorativos y personales y no como una inversión o con una expectativa de ganancias; y
+
+4. No actúa en nombre o en beneficio de ninguna persona o entidad que no cumpla con lo anterior.
+
+## 4) Exenciones de responsabilidad {#disclaimers}
+
+EL NFT Y CUALQUIER MATERIAL RELACIONADO SE PROPORCIONAN «TAL CUAL» Y «SEGÚN DISPONIBILIDAD», SIN GARANTÍAS DE NINGÚN TIPO, YA SEAN EXPRESAS, IMPLÍCITAS O ESTATUTARIAS, INCLUIDAS LAS GARANTÍAS DE TÍTULO, NO INFRACCIÓN, COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR O GOCE PACÍFICO. LA EF NO GARANTIZA QUE EL NFT O EL PROCESO DE ACUÑACIÓN ESTÉN LIBRES DE ERRORES O SEAN ININTERRUMPIDOS.
+
+## 5. Limitación de responsabilidad {#limitation-of-liability}
+
+En la medida máxima permitida por la ley aplicable, la EF, sus directores, funcionarios, empleados, contratistas y agentes no serán responsables ante usted por ningún daño indirecto, incidental, consecuente, especial, ejemplar o punitivo, ni por ninguna pérdida de ganancias, datos o fondo de comercio, que surja de o esté relacionado con el NFT o este Acuerdo, ya sea que se base en un contrato, agravio, responsabilidad estricta o de otra manera. La responsabilidad agregada de la EF ante usted por cualquier daño directo no excederá de un dólar estadounidense.
+
+## 6. Terminación {#termination}
+
+La EF puede rescindir este Acuerdo en cualquier momento. La EF se reserva el derecho de suspender o finalizar la acuñación, o de tomar medidas correctivas razonables (incluida la anulación del NFT) cuando lo exija la ley o la normativa.
+
+## 7. Ley aplicable y jurisdicción {#governing-law-and-jurisdiction}
+
+Cualquier disputa, controversia o reclamación que surja de o esté relacionada con este Acuerdo, incluida su validez, invalidez, incumplimiento o terminación, se resolverá mediante arbitraje de conformidad con el Reglamento Suizo de Arbitraje Internacional de la Swiss Chambers’ Arbitration Institution vigente en la fecha en que se presente la Notificación de Arbitraje de conformidad con dicho Reglamento. El número de árbitros será uno. La sede del arbitraje será Zúrich, a menos que las partes acuerden una sede diferente. El procedimiento arbitral se llevará a cabo en inglés.
+
+## 8. Miscelánea {#miscellaneous}
+
+1. **Acuerdo completo**. Este Acuerdo constituye el acuerdo completo entre usted y la EF con respecto al NFT y sustituye todos los acuerdos anteriores.
+
+2. **Divisibilidad**. Si alguna disposición se considera inválida o inaplicable, las disposiciones restantes permanecerán en pleno vigor y efecto.
+
+3. **No renuncia**. El hecho de que la EF no ejerza o se retrase en el ejercicio de cualquier derecho no funcionará como una renuncia al mismo.
+
+4. **Cesión**. Usted no puede ceder ni transferir sus derechos u obligaciones en virtud de este Acuerdo sin el consentimiento previo por escrito de la EF.
\ No newline at end of file
From 123d065d968591236bd39adb26626b480e75f758 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:41 -0300
Subject: [PATCH 112/589] update(i18n):
public/content/translations/es/roadmap/single-slot-finality/index.md
---
.../es/roadmap/single-slot-finality/index.md | 35 +++++++++----------
1 file changed, 17 insertions(+), 18 deletions(-)
diff --git a/public/content/translations/es/roadmap/single-slot-finality/index.md b/public/content/translations/es/roadmap/single-slot-finality/index.md
index 7bfaaaeea86..a7bfebc07ad 100644
--- a/public/content/translations/es/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/es/roadmap/single-slot-finality/index.md
@@ -4,9 +4,9 @@ description: Explicación de la finalidad de la ranura única
lang: es
---
-# Finalidad de la ranura única {#single-slot-finality}
+# Finalidad en una sola ranura {#single-slot-finality}
-Un bloque de Ethereum tarda aproximadamente 15 minutos en finalizar. Sin embargo, podemos hacer que un mecanismo de consenso de bloques validados de Ethereum sea más eficiente y disminuya dramáticamente el tiempo que tarda en finalizarse. En lugar de esperar 15 minutos, la misma ranura podría proponer y finalizar los bloques. Este concepto se conoce como **finalidad de la ranura única (SSF)**.
+Un bloque de Ethereum tarda aproximadamente 15 minutos en finalizar. Sin embargo, podemos hacer que un mecanismo de consenso de bloques validados de Ethereum sea más eficiente y disminuya dramáticamente el tiempo que tarda en finalizarse. En lugar de esperar 15 minutos, la misma ranura podría proponer y finalizar los bloques. Este concepto se conoce como **finalidad en una sola ranura (SSF)**.
## ¿Qué es la finalidad? {#what-is-finality}
@@ -16,9 +16,9 @@ En la prueba de participación de Ethereum basada en el mecanismo de consenso, l
El tiempo actual que tarda en finalizar es demasiado largo. La mayoría de los usuarios no quieren esperar 15 minutos para finalizar una transacción y esto es un inconveniente para aplicaciones e intercambios que deseen una alta velocidad de transacción y que tienen que esperar mucho tiempo para asegurarse de que sus transacciones sean permanentes. Tener un retraso entre bloques propuestos y su finalidad crea oportunidades de reorganizaciones a corto plazo que atacantes podrían usar para censurar ciertos bloques o extraer MEV. El mecanismo que se encarga de actualizar los bloques por etapas también es bastante complejo y se han hecho varios parches para prevenir riesgos de seguridad, lo que lo convierte en una de las partes de la base de código de Ethereum donde es más probable que surjan errores. Estos problemas podrían ser todos eliminados reduciendo el tiempo de finalidad a una ranura única.
-## La compensación en/tiempo/gastos/general de la descentralización {#the-decentralization-time-overhead-tradeoff}
+## La compensación entre descentralización, tiempo y sobrecarga {#the-decentralization-time-overhead-tradeoff}
-La garantía de finalidad no es una propiedad inmediata de un nuevo bloque; la finalidad de un nuevo bloque lleva su tiempo. La razón reside en que los validadores que representen al menos 2/3 del ETH total apostado en la red tengan la oportunidad de votar (o «certificar») el bloque para que se considere finalizado. Cada nodo validador en la red tiene que procesar las certificaciones de los otros nodos para saber si el bloque ha alcanzado o no el mínimo de dos terceras partes.
+La garantía de finalidad no es una propiedad inmediata de un nuevo bloque; la finalidad de un nuevo bloque lleva su tiempo. La razón de esto es que los validadores que representan al menos 2/3 del total de ETH en participación en la red tienen que votar por el bloque ("atestiguar") para que se considere finalizado. Cada nodo validador en la red tiene que procesar las certificaciones de los otros nodos para saber si el bloque ha alcanzado o no el mínimo de dos terceras partes.
Cuanto menos tarde en finalizar, más potencia de computación se requiere de cada nodo, porque el procesamiento de certificación ha de hacerse más rápido. Asimismo, cuantos más nodos de validación existan en la red, más certificaciones tiene que procesar cada bloque, lo que suma más poder de procesamiento requerido de los validadores. Y cuanto más poder de procesamiento se requiera, menos personas pueden participar en la red, ya que el hardware que se necesita para ejecutar cada nodo validador será más costoso. Aumentar el tiempo entre bloques disminuye el poder computacional requerido en cada nodo, pero también aumenta el tiempo para la finalidad, porque las certificaciones se procesan más lentamente.
@@ -33,34 +33,33 @@ Con el diseño del mecanismo actual, para acortar la finalidad, es necesario que
## Rutas hacia la SSF {#routes-to-ssf}
-
+
El mecanismo de consenso actual combina certificaciones de multiples validadores, conocidos como comités, para reducir el número de mensajes que cada validador tiene que procesar para validar un bloque. Cada validador tiene una oportunidad para certificar en cada época (32 ranuras) pero en cada ranura, solo un subgrupo de validadores, conocido como comité de certificación. Ellos lo hacen al dividirse en subredes en las que se seleccionan a unos cuantos validadores para ser «agregadores». Cada agregador combina todas las firmas de parte de los validadores en su subred en una sola firma. Los agregadores que incluyen los números más grandes de contribuidores individuales pasan su firma combinada al bloque del proponente, quien la incluye en el bloque, junto con la firma combinada de otros comités.
-Este proceso proporciona suficiente capacidad para que cada validador vote en cada época, ya que 32 ranuras * 64 comités * 256 validadores por comité = 524.288 validadores por época`. Al cierra de la edición de este documento (febrero de 2023) hay ~513.000 validadores activos.
+Este proceso proporciona suficiente capacidad para que cada validador vote en cada época, ya que 32 ranuras \* 64 comités \* 256 validadores por comité = 524.288 validadores por época\`. Al cierre de la edición de este documento (febrero de 2023) hay ~513.000 validadores activos.
-En este esquema, cada validador solo puede votar en un bloque para distribuir sus certificaciones a través de la época completa. Sin embargo, hay formas potenciales de mejorar el mecanismo para que _cada validador tenga la oportunidad de certificar en cada ranura_.
-
+En este esquema, cada validador solo puede votar en un bloque para distribuir sus certificaciones a través de la época completa. Sin embargo, hay formas potenciales de mejorar el mecanismo para que _cada validador tenga la oportunidad de certificar en cada ranura_.
Desde que se designó el mecanismo de consenso de Ethereum, el esquema de agregación de firmas (BLS, por sus siglas en inglés) ha resultado ser mucho más escalable de lo que se pensó inicialmente, mientras que también ha mejorado la posibilidad de que los clientes procesen y verifiquen firmas. Resulta que procesar certificaciones de un gran número de validadores puede, de hecho, hacerse en una única ranura. Por ejemplo, con un millón de validadores, votando cada uno dos veces en cada ranura y 16 segundos para cada ranura, se requerirán nodos para verificar firmas a un ritmo mínimo de 125.000 certificaciones por segundo para procesar todo el millón de certificaciones en la ranura. En realidad, a un ordenador normal le lleva cerca de 500 nanosegundos hacer la verificación de una firma, lo que significa que se pueden hacer 125.000 en ~62,5 ms - muy por debajo del umbral de un segundo.
-La creación de supercomités podría aumentar aún más la eficacia p. ej., 125.000 validadores seleccionados aleatoriamente por ranura. Solo estos validadores pueden votar en un bloque y, por lo tanto, solo estos subconjuntos de validadores deciden si un bloque se finaliza. Que esto sea una buena idea o no depende, en realidad, de lo caro que la comunidad prefiera que sea un ataque exitoso a Ethereum. Porque en lugar de requerir 2/3 del total de ether apostado, un atacante puede finalizar un bloque deshonesto con 2/3 del ether apostado_en ese supercomité_. Esto todavía es un área activa de la investigación, aunque parece que para un conjunto de validadores lo suficientemente grande como para requerir un supercomité en primer lugar, el coste de atacar uno de esos supercomités sería extremadamente alto (p. ej., el coste de un ataque expresado en ETH sería de `2/3 * 125.000 * 32 = ~2,6 millones de ETH`). El coste del ataque puede ajustarse aumentando el tamaño del conjunto de validadores (p. ej.,. ajusta el tamaño del validador para que el coste del ataque sea igual a 1 millón de ether, 4 millones de ether, 10 millones de ether, etc). Los [sondeos preliminares](https://youtu.be/ojBgyFl6-v4?t=755) de la comunidad parecen sugerir que 1-2 millones de ether es un coste aceptable de ataque, que implica ~65.536 - 97.152 validadores por supercomité.
+Podrían lograrse mayores ganancias de eficiencia creando supercomités de, por ejemplo, 125.000 validadores seleccionados aleatoriamente por ranura. Solo estos validadores pueden votar en un bloque y, por lo tanto, solo estos subconjuntos de validadores deciden si un bloque se finaliza. Que esto sea una buena idea o no depende, en realidad, de lo caro que la comunidad prefiera que sea un ataque exitoso a Ethereum. Esto se debe a que, en lugar de requerir 2/3 del total de ether en participación, un atacante podría finalizar un bloque deshonesto con 2/3 del ether en participación _de ese supercomité_. Esta sigue siendo un área de investigación activa, pero parece plausible que para un conjunto de validadores lo suficientemente grande como para requerir supercomités en primer lugar, el coste de atacar uno de esos subcomités sea extremadamente alto (p. ej., el coste de un ataque expresado en ETH sería de `2/3 * 125.000 * 32 = ~2,6 millones de ETH`). El coste del ataque se puede ajustar aumentando el tamaño del conjunto de validadores (p. ej., ajustando el tamaño del validador para que el coste del ataque sea igual a 1 millón de ether, 4 millones de ether, 10 millones de ether, etc.). [Las encuestas preliminares](https://youtu.be/ojBgyFl6-v4?t=755) de la comunidad parecen sugerir que un coste de ataque de 1 a 2 millones de ether es aceptable, lo que implica entre ~65 536 y 97 152 validadores por supercomité.
-Sin embargo, la verificación no es obstáculo verdadero, la agregación de las firmas es el verdadero reto de nodos validadores. Escalar la agregación de firmas probablemente requerirá aumentar el número de validadores en cada subred, incrementar la cantidad de subredes o agregar una capa adicional de agregación (por ejemplo, implementar un comité de comités). Parte de la solución podría ser permitir a agregadores especializados, de la misma manera que la construcción de bloques y la generación de compromiso para los datos de las acumulaciones se externalicen a constructores de bloques especializados bajo el marco de la separación proponente-constructor (PBS) y Danksharding.
+Sin embargo, la verificación no es obstáculo verdadero, la agregación de las firmas es el verdadero reto de nodos validadores. Escalar la agregación de firmas probablemente requerirá aumentar el número de validadores en cada subred, aumentar el número de subredes o añadir capas adicionales de agregación (es decir, implementar comités de comités). Parte de la solución podría ser permitir a agregadores especializados, de la misma manera que la construcción de bloques y la generación de compromiso para los datos de las acumulaciones se externalicen a constructores de bloques especializados bajo el marco de la separación proponente-constructor (PBS) y Danksharding.
-## ¿Cuál es la función de la norma de elección de bifuración en SSF? {#role-of-the-fork-choice-rule}
+## ¿Cuál es la función de la norma de elección de bifuración en SSF? El papel de la regla de selección de bifurcación {#role-of-the-fork-choice-rule}
-El mecanismo de consenso actual depende de una estrecha relación entre el parámetro de finalidad (el algoritmo que determina si dos tercios de los validadores certificaron cierta cadena) y la norma de elección de bifurcación (el algoritmo que decide qué cadena es la correcta en caso de haber múltiples opciones). El algoritmo de decisión de bifurcación solo tiene en cuenta bloques _desde_ el último bloque finalizado. En SSF no habría ningún bloque que la regla de elección de bifurcación pudiera considerar, porque la finalidad ocurre en la misma ranura cuando se propone el bloque. Esto significa que en SSF,_ya sea_ el algoritmo de elección de bifurcación _o_ el mecanismo de finalidad estarían activos en cualquier momento dado. El mecanismo de finalidad finalizaría un bloque con 2/3 de los validadores en línea certificando con honestidad. Si un bloque no puede exceder el 2/3 del umbral, la regla de elección de bifurcación se pondría en marcha para determinar qué cadena seguir. Esto también supone una oportunidad de mantener el mecanismo de pérdida por inactividad que recupera una cadena donde >1/3 de los validadores se desconectan, aunque con algunos matices adicionales.
+El mecanismo de consenso actual depende de una estrecha relación entre el parámetro de finalidad (el algoritmo que determina si dos tercios de los validadores certificaron cierta cadena) y la norma de elección de bifurcación (el algoritmo que decide qué cadena es la correcta en caso de haber múltiples opciones). El algoritmo de selección de bifurcación solo considera los bloques _desde_ el último bloque finalizado. En SSF no habría ningún bloque que la regla de elección de bifurcación pudiera considerar, porque la finalidad ocurre en la misma ranura cuando se propone el bloque. Esto significa que bajo SSF, _o bien_ el algoritmo de selección de bifurcación _o bien_ el gadget de finalidad estaría activo en cualquier momento. El mecanismo de finalidad finalizaría un bloque con 2/3 de los validadores en línea certificando con honestidad. Si un bloque no puede exceder el 2/3 del umbral, la regla de elección de bifurcación se pondría en marcha para determinar qué cadena seguir. Esto también crea una oportunidad para mantener el mecanismo de fuga por inactividad que recupera una cadena donde >1/3 de los validadores se desconectan, aunque con algunos matices adicionales.
-## Asuntos pendientes {#outstanding-issues}
+## Cuestiones pendientes {#outstanding-issues}
-La agregación de escalabilidad aumentando el número de validadores por subred supone el problema de generar una mayor carga en la red entre pares. Y lo que sucede al añadir capas de agregación es que es bastante complejo de organizar y agrega latencia (es decir, puede llevarle al proveedor del bloque más tiempo controlar todos los agregadores de subredes). Tampoco está claro cómo liderar en el caso de que haya más validadores activos en la red que de los que se pueda procesar de forma viable en cada ranura, incluso agregando la firma BLS. Una solución potencial pasa por que todos los validadores certifiquen cada ranura y se prescinda de los comités en SSF, el límite de 32 ETH en el saldo efectivo podría eliminarse por completo, lo que significa que los operadores que manejan múltiples validadores puedan consolidar su participación y ejecutar menos, reduciendo el número de mensajes que los nodos validadores tengan que procesar para tener en cuenta todo el grupo de validadores. Esto depende de que los grandes participantes estén de acuerdo en consolidar los validadores. Es posible imponer un tope fijo de números de validadores o la cantidad de ETH apostado en cualquier momento. Sin embargo, esto requiere algún mecanismo para decidir a qué validadores se les permite participar y a quiénes no, o quién es responsable de crear efectos secundarios indeseados.
+La agregación de escalabilidad aumentando el número de validadores por subred supone el problema de generar una mayor carga en la red entre pares. El problema de añadir capas de agregaciones es que es bastante complejo de diseñar y añade latencia (es decir, el proponente del bloque podría tardar más en recibir la información de todos los agregadores de subredes). Tampoco está claro cómo liderar en el caso de que haya más validadores activos en la red que de los que se pueda procesar de forma viable en cada ranura, incluso agregando la firma BLS. Una solución potencial pasa por que todos los validadores certifiquen cada ranura y se prescinda de los comités en SSF, el límite de 32 ETH en el saldo efectivo podría eliminarse por completo, lo que significa que los operadores que manejan múltiples validadores puedan consolidar su participación y ejecutar menos, reduciendo el número de mensajes que los nodos validadores tengan que procesar para tener en cuenta todo el grupo de validadores. Esto depende de que los grandes participantes estén de acuerdo en consolidar los validadores. Es posible imponer un tope fijo de números de validadores o la cantidad de ETH apostado en cualquier momento. Sin embargo, esto requiere algún mecanismo para decidir a qué validadores se les permite participar y a quiénes no, o quién es responsable de crear efectos secundarios indeseados.
## Progreso actual {#current-progress}
-SSF está en su fase de investigación. No se espera que se lance durante varios años, probablemente después de otras mejoras sustanciales como los [árboles de Verkle](/roadmap/verkle-trees/) y [Danksharding](/roadmap/danksharding/).
+SSF está en su fase de investigación. No se espera que se lance hasta dentro de varios años, probablemente después de otras actualizaciones sustanciales como los [árboles de Verkle](/roadmap/verkle-trees/) y el [Danksharding](/roadmap/danksharding/).
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Vitalik habla de SSF en EDCON 2022](https://www.youtube.com/watch?v=nPgUKNPWXNI)
-- [Notas de Vitalik: en rumbo a la finalidad de ranura única](https://notes.ethereum.org/@vbuterin/single_slot_finality)
+- [Vitalik sobre SSF en EDCON 2022](https://www.youtube.com/watch?v=nPgUKNPWXNI)
+- [Notas de Vitalik: rutas hacia la finalidad en una sola ranura](https://notes.ethereum.org/@vbuterin/single_slot_finality)
From 6aa62e823c1e427a276c71fce737d963eb1d751b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:42 -0300
Subject: [PATCH 113/589] update(i18n):
public/content/translations/es/contributing/adding-layer-2s/index.md
---
.../es/contributing/adding-layer-2s/index.md | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/public/content/translations/es/contributing/adding-layer-2s/index.md b/public/content/translations/es/contributing/adding-layer-2s/index.md
index d230622d8a5..6c4b83f3ed4 100644
--- a/public/content/translations/es/contributing/adding-layer-2s/index.md
+++ b/public/content/translations/es/contributing/adding-layer-2s/index.md
@@ -8,24 +8,24 @@ lang: es
Queremos asegurarnos de que estamos incluyendo los mejores recursos posibles para que los usuarios pueden navegar en el espacio de la capa 2 de una manera fiable y segura.
-Cualquiera es libre de sugerir añadir una capa 2 a ethereum.org. Si hay alguna capa 2 que hayamos olvidado **[ por favor sugiérela](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_layer2.yaml)**.
+Cualquiera es libre de sugerir añadir una capa 2 a ethereum.org. Si nos hemos olvidado de alguna capa 2, **[sugiérala](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_layer2.yaml)!**
Actualmente enumeramos las capas 2 en las páginas siguientes:
-- [Acumulaciones optimistas (Optimistic rollups)](/developers/docs/scaling/optimistic-rollups/)
-- [Rollups de Conocimiento Cero](/developers/docs/scaling/zk-rollups/)
+- [Rollups optimistas](/developers/docs/scaling/optimistic-rollups/)
+- [Rollups de conocimiento cero](/developers/docs/scaling/zk-rollups/)
- [Capa 2](/layer-2/)
La capa 2 es un modelo relativamente nuevo y emocionante para Ethereum. Hemos intentado crear un marco de trabajo justo para su consideración en ethereum.org, pero los criterios de listado cambiarán y evolucionarán con el tiempo.
## El marco de decisión {#decision-framework}
-### Criterios para la inclusión: los aspectos obligatorios {#criteria-for-inclusion-the-must-haves}
+### Criterios de inclusión: los imprescindibles {#criteria-for-inclusion-the-must-haves}
**Listado en L2BEAT**
-- Para ser considerado, este proyecto debe estar listado en [L2BEAT](https://l2beat.com). L2BEAT proporciona una sólida evaluación de riesgos de los proyectos de capa 2 en los que nos apoyamos para evaluar proyectos de capa 2. **Si el proyecto no aparece en L2BEAT, no lo listaremos como capa 2 en ethereum.org.**
-- [Aprenda a añadir su proyecto de capa 2 a L2BEAT](https://github.com/l2beat/l2beat/blob/master/CONTRIBUTING.md).
+- Para que se tenga en cuenta, el proyecto debe aparecer en la lista de [L2BEAT](https://l2beat.com). L2BEAT proporciona una sólida evaluación de riesgos de los proyectos de capa 2 en los que nos apoyamos para evaluar proyectos de capa 2. **Si el proyecto no aparece en L2BEAT, no lo listaremos como capa 2 en ethereum.org.**
+- [Aprenda a añadir su proyecto de L2 a L2BEAT](https://github.com/l2beat/l2beat/blob/master/CONTRIBUTING.md).
**Código abierto**
@@ -38,11 +38,11 @@ Para que una solución sea considerada como aplicación de capa 2, estamos aplic
- Acumulaciones optimistas (Optimistic rollups)
- Acumulaciones (rollup) de conocimiento cero
-_No consideramos que otras soluciones de escalabilidad que no utilicen Ethereum para la disponibilidad de datos o seguridad sean de capa 2._
+_No consideramos que otras soluciones de escalado que no utilicen Ethereum para la disponibilidad de datos o la seguridad sean de capa 2._
**Ethereum para disponibilidad de datos**
-- La disponibilidad de datos es un factor diferencial importante entre otras soluciones de escalabilidad y la capa 2. Un proyecto **debe** utilizar la red principal de Ethereum para tener en cuenta la disponibilidad de datos con vistas a su publicación.
+- La disponibilidad de datos es un factor diferencial importante entre otras soluciones de escalabilidad y la capa 2. Un proyecto **debe** usar la red principal de Ethereum para la disponibilidad de datos para que se considere su inclusión en la lista.
**Puentes**
@@ -70,7 +70,7 @@ _No consideramos que otras soluciones de escalabilidad que no utilicen Ethereum
- Los proyectos incluidos requieren un explorador de bloque funcional que permita a los usuarios navegar de forma sencilla por la cadena.
-### Otros criterios: los aspectos deseables {#nice-to-haves}
+### Otros criterios: los requisitos deseables {#nice-to-haves}
**Soporte de Exchanges al proyecto**
From aad8994b533f8c33957354e4e4a6e489e168e374 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:43 -0300
Subject: [PATCH 114/589] update(i18n):
public/content/translations/es/developers/tutorials/ipfs-decentralized-ui/index.md
---
.../tutorials/ipfs-decentralized-ui/index.md | 73 +++++++++++++++++++
1 file changed, 73 insertions(+)
create mode 100644 public/content/translations/es/developers/tutorials/ipfs-decentralized-ui/index.md
diff --git a/public/content/translations/es/developers/tutorials/ipfs-decentralized-ui/index.md b/public/content/translations/es/developers/tutorials/ipfs-decentralized-ui/index.md
new file mode 100644
index 00000000000..6a591409ba5
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/ipfs-decentralized-ui/index.md
@@ -0,0 +1,73 @@
+---
+title: IPFS para interfaces de usuario descentralizadas
+description: Este tutorial enseña al lector cómo usar IPFS para almacenar la interfaz de usuario de una dapp. Aunque los datos y la lógica de negocio de la aplicación estén descentralizados, sin una interfaz de usuario resistente a la censura, los usuarios podrían perder el acceso a ella de todos modos.
+author: Ori Pomerantz
+tags: [ "ipfs" ]
+skill: beginner
+lang: es
+published: 29/06/2024
+---
+
+Ha escrito una nueva e increíble dapp. Incluso ha escrito una [interfaz de usuario](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/) para ella. Pero ahora teme que alguien intente censurarla tumbando su interfaz de usuario, que no es más que un servidor en la nube. En este tutorial aprenderá cómo evitar la censura poniendo su interfaz de usuario en el **[sistema de archivos interplanetario (IPFS)](https://ipfs.tech/developers/)** para que cualquiera que esté interesado pueda fijarla en un servidor para su futuro acceso.
+
+Podría utilizar un servicio de terceros como [Fleek](https://resources.fleek.xyz/docs/) para hacer todo el trabajo. Este tutorial es para personas que quieren hacer lo suficiente para entender lo que están haciendo, aunque suponga más trabajo.
+
+## Primeros pasos en local {#getting-started-locally}
+
+Existen múltiples [proveedores de IPFS de terceros](https://docs.ipfs.tech/how-to/work-with-pinning-services/#use-a-third-party-pinning-service), pero es mejor empezar ejecutando IPFS localmente para realizar pruebas.
+
+1. Instale la [interfaz de usuario de IPFS](https://docs.ipfs.tech/install/ipfs-desktop/#install-instructions).
+
+2. Cree un directorio con su sitio web. Si utiliza [Vite](https://vite.dev/), use este comando:
+
+ ```sh
+ pnpm vite build
+ ```
+
+3. En IPFS Desktop, haga clic en **Import > Folder** y seleccione el directorio que creó en el paso anterior.
+
+4. Seleccione la carpeta que acaba de subir y haga clic en **Rename**. Póngale un nombre más significativo.
+
+5. Vuelva a seleccionarla y haga clic en **Share link**. Copie la URL en el portapapeles. El enlace sería similar a `https://ipfs.io/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ`.
+
+6. Haga clic en **Status**. Despliegue la pestaña **Advanced** para ver la dirección de la puerta de enlace. Por ejemplo, en mi sistema la dirección es `http://127.0.0.1:8080`.
+
+7. Combine la ruta del paso del enlace con la dirección de la puerta de enlace para encontrar su dirección. Por ejemplo, para el ejemplo anterior, la URL es `http://127.0.0.1:8080/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ`. Abra esa URL en un navegador para ver su sitio.
+
+## Subiendo {#uploading}
+
+Así que ahora puede usar IPFS para servir archivos localmente, lo que no es muy emocionante. El siguiente paso es ponerlos a disposición del mundo cuando usted no esté conectado.
+
+Hay una serie de [servicios de fijado](https://docs.ipfs.tech/concepts/persistence/#pinning-services) bien conocidos. Elija uno de ellos. Sea cual sea el servicio que utilice, necesita crear una cuenta y proporcionarle el **identificador de contenido (CID)** de su escritorio IPFS.
+
+Personalmente, [4EVERLAND](https://docs.4everland.org/storage/4ever-pin/guides) me pareció el más fácil de usar. Aquí están las instrucciones para ello:
+
+1. Vaya a [el panel de control](https://dashboard.4everland.org/overview) e inicie sesión con su monedero.
+
+2. En la barra lateral izquierda, haga clic en **Storage > 4EVER Pin**.
+
+3. Haga clic en **Upload > Selected CID**. Ponga un nombre a su contenido y proporcione el CID del escritorio de IPFS. Actualmente, un CID es una cadena que empieza por `Qm` seguida de 44 letras y dígitos que representan un hash [codificado en base-58](https://medium.com/bootdotdev/base64-vs-base58-encoding-c25553ff4524), como `QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ`, pero [es probable que eso cambie](https://docs.ipfs.tech/concepts/content-addressing/#version-1-v1).
+
+4. El estado inicial es **Queued**. Recargue hasta que cambie a **Pinned**.
+
+5. Haga clic en su CID para obtener el enlace. Puede ver mi aplicación [aquí](https://bafybeifqka2odrne5b6l5guthqvbxu4pujko2i6rx2zslvr3qxs6u5o7im.ipfs.dweb.link/).
+
+6. Es posible que necesite activar su cuenta para mantenerla fijada durante más de un mes. La activación de la cuenta cuesta alrededor de 1 $. Si lo ha cerrado, cierre la sesión y vuelva a iniciarla para que se le pida que la active de nuevo.
+
+## Uso desde IPFS {#using-from-ipfs}
+
+En este punto, tiene un enlace a una puerta de enlace centralizada que sirve su contenido de IPFS. En resumen, su interfaz de usuario puede ser un poco más segura, pero todavía no es resistente a la censura. Para una verdadera resistencia a la censura, los usuarios necesitan usar IPFS [directamente desde un navegador](https://docs.ipfs.tech/install/ipfs-companion/#prerequisites).
+
+Una vez que lo tenga instalado (y el escritorio de IPFS funcionando), puede ir a [/ipfs/``](https://any.site/ipfs/bafybeifqka2odrne5b6l5guthqvbxu4pujko2i6rx2zslvr3qxs6u5o7im) en cualquier sitio y obtendrá ese contenido, servido de forma descentralizada.
+
+## Inconvenientes {#drawbacks}
+
+No se pueden eliminar los archivos IPFS de forma fiable, por lo que mientras esté modificando su interfaz de usuario, probablemente sea mejor dejarla centralizada, o utilizar el [sistema de nombres interplanetario (IPNS)](https://docs.ipfs.tech/concepts/ipns/#mutability-in-ipfs), un sistema que proporciona mutabilidad sobre IPFS. Por supuesto, todo lo que es mutable puede ser censurado, en el caso de IPNS presionando a la persona que tiene la clave privada a la que corresponde.
+
+Además, algunos paquetes tienen problemas con IPFS, por lo que si su sitio web es muy complicado puede que no sea una buena solución. Y, por supuesto, todo lo que depende de la integración con el servidor no puede descentralizarse simplemente por tener el lado del cliente en IPFS.
+
+## Conclusión {#conclusion}
+
+Así como Ethereum le permite descentralizar la base de datos y los aspectos de lógica de negocio de su dapp, IPFS le permite descentralizar la interfaz de usuario. Esto le permite cerrar un vector de ataque más contra su dapp.
+
+[Vea aquí más de mi trabajo](https://cryptodocguy.pro/).
From 21a97fc80e534b4f4c95d288f711e3173fc654c2 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:45 -0300
Subject: [PATCH 115/589] update(i18n):
public/content/translations/es/developers/docs/scaling/validium/index.md
---
.../developers/docs/scaling/validium/index.md | 111 +++++++++---------
1 file changed, 56 insertions(+), 55 deletions(-)
diff --git a/public/content/translations/es/developers/docs/scaling/validium/index.md b/public/content/translations/es/developers/docs/scaling/validium/index.md
index c700e0f8939..cbedf7b5ea8 100644
--- a/public/content/translations/es/developers/docs/scaling/validium/index.md
+++ b/public/content/translations/es/developers/docs/scaling/validium/index.md
@@ -5,49 +5,49 @@ lang: es
sidebarDepth: 3
---
-Validium es una [solución de escalabilidad](/developers/docs/scaling/) que impone la integridad de las transacciones utilizando purebas de validez como los [rollups de conocimiento cero (ZK)](/developers/docs/scaling/zk-rollups/), pero no almacena información de las transacciones en la Red principal de Ethereum. Si bien la dispoibilidad de datos fuera de la cadena introduce compensaciones (o cosas que deben resignarse), puede también conducir a mejoras inmensas en cuanto a escalabilidad (los validiums pueden procesar [~9.000 transacciones, o más, por segundo](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263)).
+Validium es una [solución de escalado](/developers/docs/scaling/) que garantiza la integridad de las transacciones utilizando pruebas de validez como los [ZK-rollups](/developers/docs/scaling/zk-rollups/), pero no almacena los datos de las transacciones en la red principal de Ethereum. Aunque la disponibilidad de datos fuera de la cadena introduce ciertas contrapartidas, puede dar lugar a mejoras masivas en la escalabilidad (los validiums pueden procesar [~9000 transacciones, o más, por segundo](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263)).
## Requisitos previos {#prerequisites}
-Debe haber leído y comprendido el tema [Escalamiento de Ethereum](/developers/docs/scaling/) y [capa 2](/layer-2).
+Debería haber leído y entendido nuestra página sobre el [escalado de Ethereum](/developers/docs/scaling/) y la [capa 2](/layer-2).
## ¿Qué es validium? {#what-is-validium}
-Los validiums son soluciones de escalado que utilizan la disponibilidad de datos fuera de la cadena y la computación diseñada para mejorar el rendimiento o la velocidad mediante el procesamiento de transacciones fuera de la red principal de Ethereum. Al igual que los rollups de conocimiento cero (ZK), los validiums publican [pruebas de conocimiento cero](/glossary/#zk-proof) para verificar las transacciones fuera de la cadena en Ethereum. Esto evita las transiciones de estado no válidas y mejora las garantías de seguridad de una cadena de validiums.
+Los Validiums son soluciones de escalado que utilizan la disponibilidad de datos fuera de la cadena y la computación diseñadas para mejorar el rendimiento procesando transacciones fuera de la red principal de Ethereum. Al igual que los zero-knowledge rollups (ZK-rollups), los validiums publican [pruebas de conocimiento cero](/glossary/#zk-proof) para verificar las transacciones fuera de la cadena en Ethereum. Esto evita las transiciones de estado no válidas y mejora las garantías de seguridad de una cadena de validiums.
-Estas "pruebas de validez" pueden venir en forma de ZK-SNARKs (argumento de conocimiento no interactivo sucinto de conocimiento cero) o ZK-STARKs (argumento de conocimiento transparente escalable de conocimiento cero). Más información acerca de las [pruebas de conocimiento cero](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/).
+Estas "pruebas de validez" pueden venir en forma de ZK-SNARKs (argumento de conocimiento no interactivo sucinto de conocimiento cero) o ZK-STARKs (argumento de conocimiento transparente escalable de conocimiento cero). Más información sobre [las pruebas de conocimiento cero](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/).
-Los fondos pertenecientes a los usuarios de validium son controlados por un contrato inteligente en Ethereum. Los validiums ofrecen retiros casi instantáneos, al igual que los rollups de ZK; una vez que se ha verificado la prueba de validez para una solicitud de retiro en la Red principal, los usuarios pueden retirar fondos proporcionando [pruebas de Merkle](/developers/tutorials/merkle-proofs-for-offline-data-integrity/). La prueba de Merkle valida la inclusión de la transacción de retiro del usuario en un lote de transacciones verificadas, lo que permite que el contrato en cadena procese el retiro.
+Los fondos pertenecientes a los usuarios de validium son controlados por un contrato inteligente en Ethereum. Los validiums ofrecen retiros casi instantáneos, al igual que los ZK-rollups; una vez que la prueba de validez para una solicitud de retiro ha sido verificada en la red principal, los usuarios pueden retirar fondos proporcionando [pruebas de Merkle](/developers/tutorials/merkle-proofs-for-offline-data-integrity/). La prueba de Merkle valida la inclusión de la transacción de retirada del usuario en un lote de transacciones verificadas, permitiendo que el contrato en cadena procese la retirada.
-Sin embargo, los usuarios de validium pueden ver congelados sus fondos y restringidos sus retiros. Esto puede suceder si los administradores de disponibilidad de datos de la cadena validium retienen los datos de estado fuera de la cadena de los usuarios. Sin acceso a los datos de la transacción, los usuarios no pueden calcular la prueba de Merkle requerida para probar la propiedad de los fondos y ejecutar retiros.
+Sin embargo, los usuarios de validium pueden ver congelados sus fondos y restringidos sus retiros. Esto puede suceder si los administradores de disponibilidad de datos en la cadena de validium retienen los datos de estado fuera de la cadena de los usuarios. Sin acceso a los datos de la transacción, los usuarios no pueden calcular la prueba de Merkle requerida para probar la propiedad de los fondos y ejecutar retiros.
Esta es la principal diferencia entre los validiums y los rollups de ZK: sus posiciones en el espectro de disponibilidad de datos. Ambas soluciones abordan el almacenamiento de datos de manera diferente, lo que tiene implicaciones para la seguridad y la no necesidad de confianza.
## ¿Cómo interactúan los validiums con Ethereum? {#how-do-validiums-interact-with-ethereum}
-Los validiums son protocolos de escalado construidos sobre la cadena de Ethereum existente. Aunque ejecuta transacciones fuera de la cadena, una cadena de validium es administrada por una colección de contratos inteligentes implementados en la red principal, que incluyen:
+Los validiums son protocolos de escalado construidos sobre la cadena de Ethereum existente. Aunque ejecuta transacciones fuera de la cadena, una cadena de validium es administrada por una colección de contratos inteligentes desplegados en la red principal, que incluyen:
-1. **Contratos de verificación**: El contrato de verificación verifica la validez de las pruebas presentadas por el operador de validium al realizar actualizaciones de estado. Esto incluye pruebas de validez que certifican la corrección de las transacciones fuera de la cadena y pruebas de disponibilidad de datos que verifican la existencia de datos de transacciones fuera de la cadena.
+1. **Contrato verificador**: El contrato verificador comprueba la validez de las pruebas enviadas por el operador de validium al realizar actualizaciones de estado. Esto incluye pruebas de validez que certifican la corrección de las transacciones fuera de la cadena y pruebas de disponibilidad de datos que verifican la existencia de datos de transacciones fuera de la cadena.
-2. **Contrato principal**: El contrato principal almacena los compromisos de estado (raíces de Merkle) presentados por los productores de bloques y actualiza el estado del validium una vez que se verifica una prueba de validez en la cadena. Este contrato también procesa los depósitos y retiros de la cadena de validium.
+2. **Contrato principal**: El contrato principal almacena los compromisos de estado (raíces de Merkle) enviados por los productores de bloques y actualiza el estado del validium una vez que se verifica una prueba de validez en la cadena. Este contrato también procesa los depósitos y retiros de la cadena de validium.
Los Validiums también utilizan la cadena principal de Ethereum para lo siguiente:
-### Resolución {#settlement}
+### Liquidación {#settlement}
-Las transacciones ejecutadas en un validium no se pueden confirmar completamente hasta que la cadena principal verifique su validez. Todos los negocios realizados en un validium deben resolverse finalmente en la red principal. La cadena de bloques de Ethereum también proporciona "garantías de liquidación" para los usuarios de validium, lo que significa que las transacciones fuera de la cadena no se pueden revertir o alterar una vez subidas o cargadas en la cadena.
+Las transacciones ejecutadas en un validium no se pueden confirmar completamente hasta que la cadena principal verifique su validez. Todos los negocios realizados en un validium deben resolverse finalmente en la red principal. La cadena de bloques de Ethereum también proporciona "garantías de liquidación" para los usuarios de validium, lo que significa que las transacciones fuera de la cadena no se pueden revertir o alterar una vez comprometidas con la cadena.
### Seguridad {#security}
-Ethereum, que actúa como una capa de liquidación, también garantiza la validez de las transiciones de estado en el validium. Las transacciones fuera de la cadena ejecutadas en la cadena de validiums se verifican a través de un contrato inteligente en la capa base de Ethereum.
+Ethereum, que actúa como una capa de liquidación, también garantiza la validez de las transiciones de estado en el validium. Las transacciones fuera de cadena ejecutadas en la cadena de validium se verifican a través de un contrato inteligente en la capa base de Ethereum.
-Si el contrato de verificación en cadena considera que la prueba no es válida, las transacciones se rechazan. Esto significa que los operadores deben cumplir con las condiciones de validez impuestas por el protocolo de Ethereum antes de actualizar el estado del validium.
+Si el contrato de verificador en cadena considera que la prueba no es válida, las transacciones se rechazan. Esto significa que los operadores deben cumplir con las condiciones de validez impuestas por el protocolo de Ethereum antes de actualizar el estado del validium.
## ¿Cómo funciona el validium? {#how-does-validium-work}
### Transacciones {#transactions}
-Los usuarios envían transacciones al operador, un nodo responsable de ejecutar transacciones en la cadena de validiums. Algunos validiums pueden utilizar un operador único para ejecutar la cadena o confiar en un mecanismo de [prueba de participación (PoS)](/developers/docs/consensus-mechanisms/pos/) para rotar los operadores.
+Los usuarios envían transacciones al operador, un nodo responsable de ejecutar transacciones en la cadena de validiums. Algunos validiums pueden utilizar un único operador para ejecutar la cadena o depender de un mecanismo de [prueba de participación (PoS)](/developers/docs/consensus-mechanisms/pos/) para rotar a los operadores.
El operador agrega las transacciones en un lote y lo envía a un circuito de prueba para la verificación. El circuito de prueba acepta el lote de transacciones (y otros datos relevantes) como entradas y salidas de una prueba de validez que verifica que las operaciones se realizaron correctamente.
@@ -55,11 +55,11 @@ El operador agrega las transacciones en un lote y lo envía a un circuito de pru
El estado del validium se hashea como un árbol de Merkle, cuya raíz se almacena en el contrato principal de Ethereum. La raíz de Merkle, también conocida como la raíz de estado, actúa como un compromiso criptográfico con el estado actual de cuentas y saldos en el validium.
-Para realizar una actualización de estado, el operador debe calcular una nueva raíz de estado (después de ejecutar las transacciones) y enviarla al contrato en cadena. Si se comprueba la prueba de validez, se acepta el estado propuesto y el validium cambia a la nueva raíz de estado.
+Para realizar una actualización de estado, el operador debe calcular una nueva raíz de estado (después de ejecutar transacciones) y enviarla al contrato en cadena. Si se comprueba la prueba de validez, se acepta el estado propuesto y el validium cambia a la nueva raíz de estado.
### Depósitos y retiros {#deposits-and-withdrawals}
-Los usuarios mueven fondos de Ethereum a un validium depositando ETH (o cualquier token compatible con ERC) en el contrato en cadena. El contrato transmite el evento de depósito al validium fuera de la cadena, donde se acredita a la dirección del usuario con una cantidad igual a su depósito. El operador también incluye esta transacción de depósito en un nuevo lote.
+Los usuarios mueven fondos de Ethereum a un validium depositando ETH (o cualquier token compatible con ERC) en el contrato en cadena. El contrato une el evento de depósito al validum fuera de la cadena, donde la dirección del usuario recibe una cantidad equivalente a su depósito. El operador también incluye esta transacción de depósito en un nuevo lote.
Para devolver los fondos a la red principal, un usuario de validium inicia una transacción de retiro y la envía al operador que valida la solicitud de retiro y la incluye en un lote. Los activos del usuario en la cadena de validiums también se destruyen antes de la salida del sistema. Una vez que se verifica la prueba de validez asociada con el lote, el usuario puede llamar al contrato principal para retirar el resto de su depósito inicial.
@@ -69,97 +69,98 @@ Como mecanismo anticensura, el protocolo de validium permite a los usuarios reti
Después de ejecutar un lote de transacciones, el operador envía la prueba de validez asociada al contrato de verificación y propone una nueva raíz de estado para el contrato principal. Si la prueba es válida, el contrato principal actualiza el estado del validium y finaliza los resultados de las transacciones en el lote.
-A diferencia de un rollup de ZK, los productores de bloques en un validium no están obligados a publicar datos de transacciones para lotes de transacciones (solo encabezados de bloque). Esto hace que validium sea un protocolo de escalado puramente fuera de la cadena, a diferencia de los protocolos de escalado "híbridos" (es decir, [capa 2](/layer-2/)), que publican datos de estado en la cadena principal de Ethereum como `calldata`.
+A diferencia de un rollup de ZK, los productores de bloques en un validium no están obligados a publicar datos de transacciones para lotes de transacciones (solo encabezados de bloque). Esto hace de validium un protocolo de escalado puramente fuera de la cadena, a diferencia de los protocolos de escalado «híbridos» (es decir, la [capa 2](/layer-2/)) que publican los datos de estado en la cadena principal de Ethereum utilizando datos blob, `calldata`, o una combinación de ambos.
-### Disponibilidad de datos {#data-availability}
+### Disponibilidad de los datos {#data-availability}
-Como se mencionó, los validiums utilizan un modelo de disponibilidad de datos fuera de la cadena, donde los operadores almacenan todos los datos de las transacciones fuera de la red principal de Ethereum. La baja huella de datos en cadena de validium mejora la escalabilidad (el rendimiento no está limitado por la capacidad de procesamiento de datos de Ethereum) y reduce las tarifas de usuario (el costo de publicación de `calldata` es menor).
+Como se mencionó, los validiums utilizan un modelo de disponibilidad de datos fuera de la cadena, donde los operadores almacenan todos los datos de transacciones de la cadena principal de Ethereum. La baja huella de datos en cadena de Validium mejora la escalabilidad (el rendimiento no se ve limitado por la capacidad de procesamiento de datos de Ethereum) y reduce las tarifas de usuario (el coste de publicar datos en cadena es menor).
-Sin embargo, la disponibilidad de datos fuera de la cadena presenta un problema: los datos necesarios para crear o verificar las pruebas de Merkle pueden no estar disponibles. Esto significa que los usuarios podrían no poder retirar fondos del contrato en cadena si los operadores actúan de forma maliciosa.
+Sin embargo, la disponibilidad de datos fuera de la cadena presenta un problema: los datos necesarios para crear o verificar las pruebas de Merkle pueden no estar disponibles. Esto significa que puede que los usuarios no puedan retirar fondos del contrato en cadena si los operadores actúan de forma maliciosa.
-Varias soluciones de validium intentan resolver este problema mediante la descentralización del almacenamiento de datos de estado. Esto implica obligar a los productores de bloques a enviar los datos subyacentes a los "administradores de disponibilidad de datos" responsables de almacenar datos fuera de la cadena y ponerlos a disposición de los usuarios a petición.
+Varias soluciones de validium intentan resolver este problema mediante la descentralización del almacenamiento de datos de estado. Lo que implica obligar a los productores de bloques a enviar los datos subyacentes a los «administradores de disponibilidad de datos» responsables de almacenar datos fuera de la cadena y ponerlos a disposición de los usuarios a petición.
-Los administradores de disponibilidad de datos en validium dan fe de la disponibilidad de datos para transacciones fuera de la cadena firmando cada lote de validium. Estas firmas constituyen una forma de "prueba de disponibilidad" que el verificador del contrato en cadena comprueba antes de aprobar las actualizaciones de estado.
+Los administradores de disponibilidad de datos en Validium atestiguan la disponibilidad de datos para transacciones fuera de la cadena firmando cada lote de validium. Estas firmas constituyen una suerte de «prueba de disponibilidad» que el contrato verificador en cadena comprueba antes de aprobar las actualizaciones de estado.
Los validiums difieren en su enfoque de la gestión de la disponibilidad de datos. Algunos usan partes de confianza para almacenar los datos del estado, mientras que otros utilizan validadores asignados al azar para la tarea.
#### Comité de disponibilidad de datos (DAC) {#data-availability-committee}
-Para garantizar la disponibilidad de los datos fuera de la cadena, algunas soluciones de validum designan un grupo de entidades de confianza, conocidas colectivamente como comité de disponibilidad de datos (DAC), para almacenar copias del estado y proporcionar pruebas de la disponibilidad de los datos. Los DAC son más fáciles de implementar y requieren menos coordinación, ya que la membresía es baja.
+Para garantizar la disponibilidad de datos fuera de la cadena, algunas soluciones de validium nombran un grupo de entidades de confianza, conocidas colectivamente como comité de disponibilidad de datos (DAC), para almacenar copias del estado y proporcionar pruebas de disponibilidad de datos. Los DAC son más fáciles de implementar y requieren menos coordinación, ya que la membresía es baja.
-Sin embargo, los usuarios deben confiar en que el DAC pondrá los datos a disposición cuando sea necesario (por ejemplo, para generar pruebas de Merkle). Existe la posibilidad de que los miembros de los comités de disponibilidad de datos [se vean comprometidos por un actor malicioso](https://notes.ethereum.org/DD7GyItYQ02d0ax_X-UbWg?view) que luego pueda retener datos fuera de la cadena.
+Sin embargo, los usuarios deben confiar en que el DAC pondrá los datos a disposición cuando sea necesario (por ejemplo, para generar pruebas de Merkle). Existe la posibilidad de que los miembros de los comités de disponibilidad de datos [se vean comprometidos por un actor malicioso](https://notes.ethereum.org/DD7GyItYQ02d0ax_X-UbWg?view) que puede entonces retener los datos fuera de la cadena.
-[Más información sobre los comités de disponibilidad de datos en validiums](https://medium.com/starkware/data-availability-e5564c416424).
+[Más información sobre los comités de disponibilidad de datos en los validiums](https://medium.com/starkware/data-availability-e5564c416424).
-#### Disponibilidad de datos con fianza {#bonded-data-availability}
+#### Disponibilidad de datos garantizada {#bonded-data-availability}
Otros validiums requieren que los participantes encargados de almacenar datos fuera de línea participen o hagan staking (es decir, bloqueen) de tokens en un contrato inteligente antes de asumir sus funciones. Esta participación o staking sirve como "fianza" para garantizar un comportamiento honesto entre los administradores de disponibilidad de datos y reduce las suposiciones de confianza. Si estos participantes no prueban la disponibilidad de datos, la fianza se pierde.
-En un esquema de disponibilidad de datos con fianza, se puede designar a cualquier persona para que retenga datos fuera de la cadena una vez que proporcione la participación requerida. Esto amplía el pool o grupo de administradores de disponibilidad de datos elegibles, reduciendo la centralización que afecta a los comités de disponibilidad de datos (DAC). Lo que es más importante, este enfoque se basa en incentivos criptoeconómicos para evitar la actividad maliciosa, lo que es considerablemente más seguro que designar a partes de confianza para proteger los datos fuera de línea en el validium.
+En un esquema de disponibilidad de datos en fianza, cualquier persona puede ser asignada para mantener datos fuera de la cadena una vez que proporcionen la participación requerida. Esto amplía el pool o grupo de administradores de disponibilidad de datos elegibles, reduciendo la centralización que afecta a los comités de disponibilidad de datos (DAC). Lo que es más importante, este enfoque se basa en incentivos criptoeconómicos para evitar la actividad maliciosa, lo que es considerablemente más seguro que designar a partes de confianza para proteger los datos fuera de línea en el validium.
-[Más información sobre la disponibilidad de datos con fianza en validiums](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf).
+[Más información sobre la disponibilidad de datos garantizada en los validiums](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf).
-## Voliciones y validiums {#volitions-and-validium}
+## Volitions y validium {#volitions-and-validium}
Los validiums ofrecen muchos beneficios, pero vienen con compensaciones o cosas que deben resignarse (sobre todo, la disponibilidad de datos). Pero, al igual que con muchas soluciones de escalamiento, los validiums son adecuados para casos de uso específicos, por lo que se crearon voliciones.
-Las voliciones combinan una cadena de rollups de conocimiento cero (ZK) y otra de validiums, y permiten a los usuarios alternar entre las dos soluciones de escalamiento. Con voliciones, los usuarios pueden aprovechar la disponibilidad de datos fuera de la cadena de validiums para ciertas transacciones, al tiempo que conservan la libertad de cambiar a una solución de disponibilidad de datos en cadena (rollup de ZK) si es necesario. Esto esencialmente da a los usuarios la libertad de elegir las compensaciones que implican sus circunstancias únicas.
+Las voliciones combinan una cadena de rollups de conocimiento cero (ZK) y otra de validiums, y permiten a los usuarios alternar entre las dos soluciones de escalamiento. Con volitions, los usuarios pueden aprovechar la disponibilidad de datos fuera de la cadena de validium para ciertas transacciones, mientras conservan la libertad de cambiar a una solución de disponibilidad de datos en cadena (ZK-rollup) si es necesario. Esto esencialmente da a los usuarios la libertad de elegir las compensaciones que implican sus circunstancias únicas.
Un exchange descentralizado (DEX) puede preferir utilizar la infraestructura escalable y privada de un validium para operaciones de alto valor. También puede usar un rollup de ZK para los usuarios que desean las mayores garantías de seguridad y la no necesidad de confianza de estos.
-## Compatibilidad de los validiums y la EVM {#validiums-and-evm-compatibility}
+## Validiums y compatibilidad con EVM {#validiums-and-evm-compatibility}
-Al igual que los rollups de ZK, los validiums son principalmente adecuados para las aplicaciones simples, como los intercambios de tokens y los pagos. El soporte para la computación general y la ejecución de contratos inteligentes entre los validiums es difícil de implementar, dada la considerable sobrecarga de probar las instrucciones de la [EVM](/developers/docs/evm/) en un circuito de prueba de conocimiento cero.
+Al igual que los rollups de ZK, los validiums son principalmente adecuados para las aplicaciones simples, como los intercambios de tokens y los pagos. Soportar la computación general y la ejecución de contratos inteligentes entre validiums es difícil de implementar, dada la considerable sobrecarga de probar las instrucciones de la [EVM](/developers/docs/evm/) en un circuito de prueba de conocimiento cero.
Algunos proyectos de validiums intentan eludir este problema compilando lenguajes compatibles con la EVM (por ejemplo, Solidity, Vyper) para crear un código de bytes personalizado optimizado para una prueba eficiente. Un inconveniente de este enfoque es que las nuevas máquinas virtuales amigables con las pruebas de conocimiento cero pueden no admitir códigos de operación de EVM importantes, y los desarrolladores tienen que escribir directamente en el lenguaje de alto nivel para una experiencia óptima. Esto crea aún más problemas: obliga a los desarrolladores a crear dapps con una pila de desarrollo completamente nueva y rompe la compatibilidad con la infraestructura actual de Ethereum.
-Algunos equipos, sin embargo, están intentando optimizar los códigos de operación de EVM existentes para los circuitos de prueba de ZK. Esto dará como resultado el desarrollo de una máquina virtual de Ethereum de conocimiento cero (zkEVM), una máquina virtual compatible con la EVM que produce pruebas para verificar la corrección de la ejecución de un programa. Con una zkEVM, las cadenas de validiums pueden ejecutar contratos inteligentes fuera de la cadena y presentar pruebas de validez para verificar un cálculo fuera de la cadena (sin tener que volver a ejecutarlo) en Ethereum.
+Algunos equipos, sin embargo, están intentando optimizar los códigos de operación de EVM existentes para los circuitos de prueba de ZK. Esto dará como resultado el desarrollo de una máquina virtual de Ethereum de conocimiento cero (zkEVM), una máquina virtual compatible con la EVM que produce pruebas para verificar la corrección de la ejecución de un programa. Con un zkEVM, las cadenas de validium pueden ejecutar contratos inteligentes fuera de la cadena y enviar pruebas de validez para verificar un cálculo fuera de la cadena (sin tener que volver a ejecutarlo) en Ethereum.
-[Más sobre la zkEVM](https://www.alchemy.com/overviews/zkevm).
+[Más información sobre las zkEVM](https://www.alchemy.com/overviews/zkevm).
## ¿Cómo escalan los validiums Ethereum? {#scaling-ethereum-with-validiums}
-### 1. Almacenamiento de datos fuera de la cadena {#off-chain-data-storage}
+### 1. Almacenamiento de datos fuera de la cadena {#offchain-data-storage}
-Los proyectos de escalado de capa 2, como los rollups optimistas y los rollups de ZK, intercambian la escalabilidad infinita de los protocolos de escalado puramente fuera de la cadena (por ejemplo, [Plasma](/developers/docs/scaling/plasma/)) por seguridad mediante la publicación de algunos datos de transacciones en L1. Pero esto significa que las propiedades de escalabilidad de los rollups están limitadas por el ancho de banda de datos en la red principal de Ethereum (el [data sharding](/roadmap/danksharding/), o fragmentación de datos, propone mejorar la capacidad de almacenamiento de datos de Ethereum por esta razón).
+Los proyectos de escalado de capa 2, como los optimistic rollups y los ZK-rollups, intercambian la escalabilidad infinita de los protocolos de escalado puramente fuera de la cadena (p. ej., [Plasma](/developers/docs/scaling/plasma/)) por seguridad publicando algunos datos de transacciones en la L1. Pero esto significa que las propiedades de escalabilidad de los rollups están limitadas por el ancho de banda de datos en la red principal de Ethereum ([la fragmentación de datos](/roadmap/danksharding/) propone mejorar la capacidad de almacenamiento de datos de Ethereum por esta razón).
-Los validiums logran escalabilidad manteniendo todos los datos de las transacciones fuera de la cadena y solo publican compromisos de estado (y pruebas de validez) al transmitir las actualizaciones de estado a la cadena principal de Ethereum. La existencia de pruebas de validez, sin embargo, da a los validiums mayores garantías de seguridad que otras soluciones de escalado puramente fuera de la cadena, incluyendo Plasma y las [cadenas laterales](/developers/docs/scaling/sidechains/). Al reducir la cantidad de datos que Ethereum tiene que procesar antes de validar las transacciones fuera de la cadena, los diseños de validium amplían en gran medida el rendimiento en la red principal.
+Los validiums logran escalabilidad manteniendo todos los datos de transacciones fuera de la cadena y solo publican compromisos de estado (y pruebas de validez) al transmitir actualizaciones de estado a la cadena principal de Ethereum. Sin embargo, la existencia de pruebas de validez da a los validiums mayores garantías de seguridad que otras soluciones de escalado puramente fuera de la cadena, incluyendo Plasma y las [cadenas laterales](/developers/docs/scaling/sidechains/). Al reducir la cantidad de datos que Ethereum tiene que procesar antes de validar las transacciones fuera de la cadena, los diseños de Validium amplían en gran medida el rendimiento en la red principal.
### 2. Pruebas recursivas {#recursive-proofs}
Una prueba recursiva es una prueba de validez que verifica la validez de otras pruebas. Estas "pruebas de pruebas" se generan agregando recursivamente múltiples pruebas hasta que se crea una prueba final que verifique todas las pruebas anteriores. Las pruebas recursivas escalan las velocidades de procesamiento de la cadena de bloques al aumentar el número de transacciones que se pueden verificar por prueba de validez.
-Por lo general, cada prueba de validez que el operador de validium envía a Ethereum para su verificación valida la integridad de un solo bloque. Mientras que una sola prueba recursiva se puede utilizar para confirmar la validez de varios bloques de validiums al mismo tiempo, esto es posible, ya que el circuito de prueba puede agregar recursivamente varias pruebas de bloque en una prueba final. Si el contrato de verificación en cadena acepta la prueba recursiva, todos los bloques subyacentes se finalizan inmediatamente.
+Por lo general, cada prueba de validez que el operador de validium envía a Ethereum para su verificación valida la integridad de un solo bloque. Mientras que una sola prueba recursiva se puede utilizar para confirmar la validez de varios bloques de validiums al mismo tiempo, esto es posible, ya que el circuito de prueba puede agregar recursivamente varias pruebas de bloque en una prueba final. Si el contrato de verificador en cadena acepta la prueba recursiva, todos los bloques subyacentes se finalizan inmediatamente.
-## Pros y contras de validium {#pros-and-cons-of-validium}
+## Ventajas y desventajas de validium {#pros-and-cons-of-validium}
-| Ventajas | Desventajas |
-| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Las pruebas de validez imponen la integridad de las transacciones fuera de la cadena y evitan que los operadores finalicen las actualizaciones de estado no válidas. | La producción de pruebas de validez requiere un hardware especial, lo que plantea un riesgo de centralización. |
-| Aumenta la eficiencia del capital para los usuarios (sin retrasos en la retirada de fondos de vuelta a Ethereum). | Soporte limitado para computación general/contratos inteligentes; se requieren lenguajes especializados para el desarrollo. |
-| No es vulnerable a ciertos ataques económicos a los que se enfrentan los sistemas basados en prueba de fraude en aplicaciones de alto valor. | Alta potencia computacional requerida para generar pruebas de ZK; no es rentable para aplicaciones de bajo rendimiento. |
-| Reduce las tarifas de gas para los usuarios al no publicar calldata en la red principal de Ethereum. | Tiempo de finalización subjetiva más lento (10-30 minutos para generar una prueba de ZK), pero más rápido a la finalización completa porque no hay retraso de tiempo de disputa. |
-| Adecuado para casos de uso específicos, como el trading o los juegos de cadena de bloques que priorizan la privacidad y la escalabilidad de las transacciones. | Se puede evitar que los usuarios retiren fondos, ya que la generación de pruebas de propiedad de Merkle requiere que los datos fuera de la cadena estén disponibles en todo momento. |
-| La disponibilidad de datos fuera de la cadena proporciona mayores niveles de rendimiento y aumenta la escalabilidad. | El modelo de seguridad se basa en supuestos de confianza e incentivos criptoeconómicos, a diferencia de los rollups de ZK, que se basan exclusivamente en mecanismos de seguridad criptográficos. |
+| Pros | Contras |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Las pruebas de validez hacen cumplir la integridad de las transacciones fuera de la cadena y evitan que los operadores finalicen las actualizaciones de estado no válidas. | La producción de pruebas de validez requiere un hardware especial, lo que plantea un riesgo de centralización. |
+| Aumenta la eficiencia del capital para los usuarios (sin retrasos en la retirada de fondos de vuelta a Ethereum). | Soporte limitado para computación general/contratos inteligentes; se requieren lenguajes especializados para el desarrollo. |
+| No es vulnerable a ciertos ataques económicos a los que se enfrentan los sistemas basados en prueba de fraude en aplicaciones de alto valor. | Alta potencia computacional requerida para generar pruebas de ZK; no es rentable para aplicaciones de bajo rendimiento. |
+| Reduce las tarifas de gas para los usuarios al no publicar calldata en la red principal de Ethereum. | Tiempo de finalización subjetiva más lento (10-30 minutos para generar una prueba de ZK), pero más rápido a la finalización completa porque no hay retraso de tiempo de disputa. |
+| Adecuado para casos de uso específicos, como el trading o los juegos de cadena de bloques que priorizan la privacidad y la escalabilidad de las transacciones. | Se puede evitar que los usuarios retiren fondos, ya que la generación de pruebas de propiedad de Merkle requiere que los datos fuera de la cadena estén disponibles en todo momento. |
+| La disponibilidad de datos fuera de la cadena proporciona niveles más altos de rendimiento y aumenta la escalabilidad. | El modelo de seguridad se basa en supuestos de confianza e incentivos criptoeconómicos, a diferencia de los rollups de ZK, que se basan exclusivamente en mecanismos de seguridad criptográficos. |
-### Usar Validium/Voliciones {#use-validium-and-volitions}
+### Usar Validium/Volitions {#use-validium-and-volitions}
Múltiples proyectos proporcionan implementaciones de Validium y voliciones que puede integrar en sus dapps:
-**StarkWare StarkEx:** _StarkEx es una solución de escalabilidad Ethereum Layer 2 (L2) que se basa en pruebas de validez. Puede funcionar en los modos de disponibilidad de datos de rollups de ZK o validium. _
+**StarkWare StarkEx** - _StarkEx es una solución de escalabilidad de capa 2 (L2) de Ethereum que se basa en pruebas de validez._ Puede operar en los modos de disponibilidad de datos ZK-Rollup o Validium._
- [Documentación](https://docs.starkware.co/starkex-v4/starkex-deep-dive/data-availability-modes#validium)
- [Sitio web](https://starkware.co/starkex/)
-**Matter Labs zkPorter:**_zkPorter es un protocolo de escalado de capa 2 que aborda la disponibilidad de datos con un enfoque híbrido que combina las ideas de zkRollup y el sharding. Puede soportar arbitrariamente muchos fragmentos (shards), cada uno con su propia política de disponibilidad de datos. _
+**Matter Labs zkPorter**- _zkPorter es un protocolo de escalado de capa 2 que aborda la disponibilidad de datos con un enfoque híbrido que combina las ideas de zkRollup y la fragmentación._ Puede soportar un número arbitrario de fragmentos, cada uno con su propia política de disponibilidad de datos._
- [Blog](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf)
- [Documentación](https://docs.zksync.io/zksync-protocol/rollup/data-availability)
- [Sitio web](https://zksync.io/)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Validium y la capa 2 (matriz 2 x 2), emisión n.º 99](https://www.buildblockchain.tech/newsletter/issues/no-99-validium-and-the-layer-2-two-by-two)
-- [Rollups de ZK vs. Validiums](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263)
-- [Volición y el espectro de disponibilidad de datos emergente](https://medium.com/starkware/volition-and-the-emerging-data-availability-spectrum-87e8bfa09bb)
-- [Rollups, validiums y voliciones: conozca las mejores soluciones de escalado de Ethereum](https://www.defipulse.com/blog/rollups-validiums-and-volitions-learn-about-the-hottest-ethereum-scaling-solutions)
+- [Validium y el dos por dos de la capa 2 — Número 99](https://www.buildblockchain.tech/newsletter/issues/no-99-validium-and-the-layer-2-two-by-two)
+- [ZK-rollups frente a Validium](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263)
+- [Volition y el espectro emergente de disponibilidad de datos](https://medium.com/starkware/volition-and-the-emerging-data-availability-spectrum-87e8bfa09bb)
+- [Rollups, Validiums y Volitions: conozca las soluciones de escalado de Ethereum más populares](https://www.defipulse.com/blog/rollups-validiums-and-volitions-learn-about-the-hottest-ethereum-scaling-solutions)
+- [La guía práctica de los rollups de Ethereum](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
From 4d4f789dc0689c8382b8112bf7cbbcaaccacb9cd Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:47 -0300
Subject: [PATCH 116/589] update(i18n):
public/content/translations/es/developers/docs/data-availability/index.md
---
.../docs/data-availability/index.md | 70 +++++++++----------
1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/public/content/translations/es/developers/docs/data-availability/index.md b/public/content/translations/es/developers/docs/data-availability/index.md
index 125762c7c64..67d862e55e1 100644
--- a/public/content/translations/es/developers/docs/data-availability/index.md
+++ b/public/content/translations/es/developers/docs/data-availability/index.md
@@ -6,79 +6,79 @@ lang: es
"No confíe, verifique" es un principio común en Ethereum. La idea es que su nodo pueda verificar de manera independiente que la información que recibe es correcta ejecutando todas las transacciones en los bloques que recibe de sus pares para asegurarse de que los cambios propuestos coincidan exactamente con los calculados de manera independiente por el nodo. Esto significa que los nodos no tienen que confiar en que los remitentes del bloque sean honestos. Esto no es posible si falta información.
-La **disponibilidad de datos** se refiere a la confianza que un usuario puede tener en que los datos necesarios para verificar un bloque estén realmente disponibles para todos los participantes de la red. Para los nodos completos en la capa 1 de Ethereum, esto es relativamente simple; el nodo completo descarga una copia de todos los datos en cada bloque: los datos _deben_ estar disponibles para que la descarga sea posible. Un bloque con datos faltantes sería descartado en lugar de ser agregado a la cadena de bloques. Esto es la "disponibilidad de datos en cadena" y es una característica de las cadenas de bloques monolíticas. Los nodos completos no pueden ser engañados para aceptar transacciones inválidas porque descargan y ejecutan cada transacción por sí mismos. Sin embargo, en el caso de las cadenas de bloques modulares, los rollups de capa 2 y los clientes ligeros, el panorama de la disponibilidad de datos es más complejo, lo cual requiere de procedimientos de verificación más sofisticados.
+**La disponibilidad de datos** se refiere a la confianza que un usuario puede tener en que los datos necesarios para verificar un bloque están realmente disponibles para todos los participantes de la red. Para los nodos completos en la capa 1 de Ethereum, esto es relativamente simple; el nodo completo descarga una copia de todos los datos en cada bloque; los datos _tienen_ que estar disponibles para que la descarga sea posible. Un bloque con datos faltantes sería descartado en lugar de ser agregado a la cadena de bloques. Esto es la «disponibilidad de datos en cadena» y es una característica de las cadenas de bloques monolíticas. Los nodos completos no pueden ser engañados para aceptar transacciones inválidas porque descargan y ejecutan cada transacción por sí mismos. Sin embargo, en el caso de las cadenas de bloques modulares, los rollups de capa 2 y los clientes ligeros, el panorama de la disponibilidad de datos es más complejo, lo cual requiere de procedimientos de verificación más sofisticados.
-## Prerrequisitos {#prerequisites}
+## Requisitos previos {#prerequisites}
-Debe tener una buena comprensión de los [fundamentos de la cadena de bloques](/developers/docs/intro-to-ethereum/), especialmente de los [mecanismos de consenso](/developers/docs/consensus-mechanisms/). Esta página también asume que el lector está familiarizado con [bloques](/developers/docs/blocks/), [transacciones](/developers/docs/transactions/), [nodos](/developers/docs/nodes-and-clients/), [soluciones de escalabilidad](/developers/docs/scaling/) y otros temas relevantes.
+Debería tener una buena comprensión de los [fundamentos de la cadena de bloques](/developers/docs/intro-to-ethereum/), especialmente de los [mecanismos de consenso](/developers/docs/consensus-mechanisms/). Esta página también asume que el lector está familiarizado con los [bloques](/developers/docs/blocks/), [las transacciones](/developers/docs/transactions/), [los nodos](/developers/docs/nodes-and-clients/), [las soluciones de escalabilidad](/developers/docs/scaling/) y otros temas relevantes.
-## El problema de la disponibilidad de datos {#the-data-availability-problem}
+## El problema de la disponibilidad de los datos {#the-data-availability-problem}
El problema de la disponibilidad de datos es la necesidad de demostrar a toda la red que la forma resumida de algunos datos de transacción que se están agregando a la cadena de bloques realmente representa un conjunto de transacciones válidas, pero hacerlo sin requerir que todos los nodos descarguen todos los datos. Todos los datos de transacción son necesarios para verificar de manera independiente los bloques, pero requerir que todos los nodos descarguen todos los datos de transacción es un obstáculo para el escalamiento. Las soluciones al problema de disponibilidad de datos buscan proporcionar garantías suficientes de que todos los datos de transacción estuvieron disponibles para que los participantes de la red que no descargan y almacenan los datos los pudieran verificar.
-Los [nodos ligeros](/developers/docs/nodes-and-clients/light-clients) y los [rollups de capa 2](/developers/docs/scaling) son ejemplos importantes de participantes en la red que requieren garantías sólidas de disponibilidad de datos, pero que no pueden descargar y procesar los datos de transacción por sí mismos. Evitar la descarga de datos de transacción es lo que hace que los nodos ligeros sean ligeros y permite que las rollups sean soluciones efectivas de escalamiento.
+Los [nodos ligeros](/developers/docs/nodes-and-clients/light-clients) y los [rollups de la capa 2](/developers/docs/scaling) son ejemplos importantes de participantes de la red que requieren fuertes garantías de disponibilidad de datos, pero no pueden descargar y procesar los datos de las transacciones por sí mismos. Evitar la descarga de datos de transacción es lo que hace que los nodos ligeros sean ligeros y permite que las rollups sean soluciones efectivas de escalamiento.
-La disponibilidad de datos también es una preocupación fundamental para futuros clientes ["sin estado" (stateless)](/roadmap/statelessness) de Ethereum que no necesiten descargar ni almacenar datos de estado para verificar bloques. Los clientes sin estado aún necesitan estar seguros de que los datos estén disponibles _en algún lugar_ y que han sido procesados correctamente.
+La disponibilidad de los datos también es una preocupación fundamental para los futuros clientes de Ethereum [«sin estado»](/roadmap/statelessness) que no necesitan descargar ni almacenar datos de estado para verificar los bloques. Los clientes sin estado todavía necesitan tener la certeza de que los datos están disponibles _en alguna parte_ y de que se han procesado correctamente.
-## Soluciones de disponibilidad de datos {#data-availability-solutions}
+## Soluciones de disponibilidad de los datos {#data-availability-solutions}
### Muestreo de disponibilidad de datos (DAS) {#data-availability-sampling}
-El muestreo de disponibilidad de datos (DAS) es una forma en la que la red verifica que los datos están disponibles sin ejercer demasiada presión sobre ningún nodo individual. Cada nodo (incluidos los nodos que no realizan staking) descarga un pequeño subconjunto seleccionado al azar de los datos totales. La descarga exitosa de las muestras confirma con alto grado de confianza que todos los datos están disponibles. Esto se basa en la codificación de borrado de datos, que expande un conjunto dado de datos con información redundante (la forma en que se hace esto es ajustando una función conocida como un _polinomio_ sobre los datos y evaluando ese polinomio en puntos adicionales). Esto permite que los datos originales se recuperen a partir de los datos redundantes cuando sea necesario. Una consecuencia de esta creación de datos es que, si _cualquiera_ de los datos originales no está disponible, _la mitad_ de los datos expandidos terminará faltando. La cantidad de muestras de datos descargadas por cada nodo puede ajustarse de manera que sea _extremadamente_ probable que al menos uno de los fragmentos de datos muestreados por cada cliente falte _si_ menos de la mitad de los datos está realmente disponible.
+El muestreo de disponibilidad de datos (DAS) es una forma en la que la red verifica que los datos están disponibles sin ejercer demasiada presión sobre ningún nodo individual. Cada nodo (incluidos los nodos que no realizan staking) descarga un pequeño subconjunto seleccionado al azar de los datos totales. La descarga exitosa de las muestras confirma con alto grado de confianza que todos los datos están disponibles. Esto se basa en la codificación de borrado de datos, que expande un conjunto de datos dado con información redundante (la forma en que se hace esto es ajustando una función conocida como _polinomio_ sobre los datos y evaluando ese polinomio en puntos adicionales). Esto permite que los datos originales se recuperen a partir de los datos redundantes cuando sea necesario. Una consecuencia de esta creación de datos es que, si _alguno_ de los datos originales no está disponible, ¡faltará la _mitad_ de los datos ampliados! La cantidad de muestras de datos que descarga cada nodo puede ajustarse de modo que sea _extremadamente_ probable que falte al menos uno de los fragmentos de datos muestreados por cada cliente _si_ menos de la mitad de los datos está realmente disponible.
-El DAS se utilizará para garantizar que los operadores de rollups pongan a disposición sus datos de transacción después de que se haya implementado el [Full Danksharding](/roadmap/danksharding/#what-is-danksharding). Los nodos de Ethereum van a tomar muestras aleatorias de los datos de transacción proporcionados en blobs utilizando el esquema de redundancia explicado anteriormente para asegurarse de que existan todos los datos. La misma técnica también podría emplearse para estar seguros de que los productores de bloques estén poniendo a disposición todos sus datos, garantizando así la seguridad de los clientes ligeros. De manera similar, bajo la [separación entre constructor/generador de bloques y proponente](/roadmap/pbs), solo el generador de bloques estaría obligado a procesar un bloque completo, mientras que otros validadores harían la verificación utilizando el muestreo de disponibilidad de datos.
+El DAS se utilizará para garantizar que los operadores de rollup pongan a disposición sus datos de transacción una vez que se haya implementado la [fragmentación completa de Danksharding](/roadmap/danksharding/#what-is-danksharding). Los nodos de Ethereum van a tomar muestras aleatorias de los datos de transacción proporcionados en blobs utilizando el esquema de redundancia explicado anteriormente para asegurarse de que existan todos los datos. La misma técnica también podría emplearse para estar seguros de que los productores de bloques estén poniendo a disposición todos sus datos, garantizando así la seguridad de los clientes ligeros. Del mismo modo, en el marco de la [separación de proponentes-constructores](/roadmap/pbs), solo el constructor del bloque estaría obligado a procesar un bloque entero; los demás validadores lo verificarían mediante el muestreo de disponibilidad de datos.
### Comités de disponibilidad de datos {#data-availability-committees}
-Los Comités de Disponibilidad de Datos (DAC) son entidades de confianza que proporcionan o certifican la disponibilidad de datos. Los DAC pueden ser utilizados en lugar del Muestreo de Disponibilidad de Datos [o en combinación con él](https://hackmd.io/@vbuterin/sharding_proposal#Why-not-use-just-committees-and-not-DAS) . Las garantías de seguridad que vienen con los comités dependen de la configuración específica. Ethereum utiliza subconjuntos de validadores seleccionados al azar para dar fe de la disponibilidad de datos para nodos ligeros, por ejemplo.
+Los Comités de Disponibilidad de Datos (DAC) son entidades de confianza que proporcionan o certifican la disponibilidad de datos. Los DAC se pueden utilizar en lugar de, [o en combinación con](https://hackmd.io/@vbuterin/sharding_proposal#Why-not-use-just-committees-and-not-DAS) DAS. Las garantías de seguridad que vienen con los comités dependen de la configuración específica. Ethereum utiliza subconjuntos de validadores seleccionados al azar para dar fe de la disponibilidad de datos para nodos ligeros, por ejemplo.
-Algunos validiums también utilizan DAC. El DAC es un conjunto de nodos confiables que almacenan copias de datos sin conexión. El DAC está obligado a poner los datos a disposición en caso de disputa. Los miembros del DAC también publican atestaciones o certificaciones en la cadena para demostrar que los datos mencionados están efectivamente disponibles. Algunos validiums reemplazan los DAC con un sistema de validadores de prueba de participación (PoS). Aquí, cualquier persona puede convertirse en un validador y almacenar datos fuera de la cadena. Sin embargo, deben proporcionar una "garantía o fianza", que se deposita en un contrato inteligente. En caso de comportamiento malicioso, como que el validador retenga los datos, la garantía puede acuchillarse (cortarse). Los comités de disponibilidad de datos basados en la prueba de participación son considerablemente más seguros que los DAC regulares porque incentivan directamente el comportamiento honesto.
+Algunos validiums también utilizan DAC. El DAC es un conjunto de nodos confiables que almacenan copias de datos sin conexión. El DAC está obligado a poner los datos a disposición en caso de disputa. Los miembros del DAC también publican atestaciones en cadena para demostrar que los datos mencionados están realmente disponibles. Algunos validiums reemplazan los DAC con un sistema de validadores de prueba de participación (PoS). Aquí cualquiera puede convertirse en un validador y almacenar los datos fuera de la cadena. Sin embargo, deben proporcionar una "garantía o fianza", que se deposita en un contrato inteligente. En caso de comportamiento malicioso, como que el validador retenga los datos, la garantía puede acuchillarse (cortarse). Los comités de disponibilidad de datos basados en la prueba de participación son considerablemente más seguros que los DAC regulares porque incentivan directamente el comportamiento honesto.
-## Disponibilidad de datos y nodos ligeros {#data-availability-and-light-nodes}
+## Disponibilidad de los datos y nodos ligeros {#data-availability-and-light-nodes}
-Los [nodos ligeros](/developers/docs/nodes-and-clients/light-clients) necesitan validar que los encabezados de los bloques que reciben son correctos sin descargar los datos de dichos bloques. El precio de ser tan ligeros es la incapacidad de verificar de forma independiente los encabezados de los bloques mediante la reejecución de transacciones de manera local, como lo hacen los nodos completos.
+Los [nodos ligeros](/developers/docs/nodes-and-clients/light-clients) necesitan validar la corrección de las cabeceras de bloque que reciben sin descargar los datos del bloque. El precio de ser tan ligeros es la incapacidad de verificar de forma independiente los encabezados de los bloques mediante la reejecución de transacciones de manera local, como lo hacen los nodos completos.
-Los nodos ligeros de Ethereum confían en conjuntos aleatorios de 512 validadores que fueron asignados a un _comité de sincronización_. El comité de sincronización funciona como un DAC, el cual señala a los clientes ligeros que los datos en el encabezado son correctos mediante una firma criptográfica. El comité de sincronización se renueva diariamente. El encabezado de cada bloque informa a los nodos ligeros cuáles son los validadores que tienen que esperar que autoricen el _próximo_ bloque, de tal manera que no sean engañados y terminen confiando en un grupo malicioso que se haga pasar por el auténtico comité de sincronización.
+Los nodos ligeros de Ethereum confían en conjuntos aleatorios de 512 validadores que han sido asignados a un _comité de sincronización_. El comité de sincronización funciona como un DAC, el cual señala a los clientes ligeros que los datos en el encabezado son correctos mediante una firma criptográfica. El comité de sincronización se renueva diariamente. Cada cabecera de bloque alerta a los nodos ligeros sobre qué validadores se espera que firmen el _siguiente_ bloque, de modo que no se les pueda engañar para que confíen en un grupo malicioso que finja ser el verdadero comité de sincronización.
-Sin embargo, ¿qué es lo que sucede si un atacante de alguna u otra manera _logra_ hacer pasar el encabezado de un bloque malicioso a los clientes ligeros y los convence de que fue autorizado por un comité de sincronización honesto? En ese escenario, el atacante podría incluir transacciones no válidas y el cliente ligero las aceptaría ciegamente, ya que no verifican independientemente todos los cambios de estado resumidos en el encabezado del bloque. Para protegerse de esto, el cliente ligero puede utilizar pruebas de fraude.
+Sin embargo, ¿qué pasaría si un atacante _lograra_ de alguna manera pasar una cabecera de bloque maliciosa a los clientes ligeros y los convenciera de que fue firmada por un comité de sincronización honesto? En ese escenario, el atacante podría incluir transacciones no válidas y el cliente ligero las aceptaría ciegamente, ya que no verifican independientemente todos los cambios de estado resumidos en el encabezado del bloque. Para protegerse de esto, el cliente ligero puede utilizar pruebas de fraude.
La forma en que estas pruebas de fraude funcionan es que un nodo completo, al detectar que una transición de estado inválida se difunde por la red, podría generar rápidamente un pequeño conjunto de datos para demostrar que una transición de estado propuesta es imposible que surja de un conjunto dado de transacciones y transmitir esos datos a sus pares. Los nodos ligeros podrían recoger dichas pruebas de fraude y utilizarlas para descartar encabezados de bloques incorrectos, asegurándose de que permanezcan en la misma cadena honesta que los nodos completos.
Esto depende de nodos completos que tengan acceso a los datos completos de las transacciones. Un atacante que propague el encabezado incorrecto de un bloque y sumado a eso no ponga a disposición los datos de transacciones podría evitar que los nodos completos generen pruebas de fraude. Los nodos completos podrían emitir una advertencia sobre un bloque incorrecto, pero no podrían respaldar su advertencia con pruebas, ya que los datos no estaban disponibles para generarlas.
-La solución a este problema de disponibilidad de datos es el muestreo de disponibilidad de datos (DAS). Los nodos ligeros descargan fragmentos muy pequeños y aleatorios de los datos de estado completo y utilizan estas muestras para verificar que el conjunto de datos completo esté disponible. La probabilidad real de asumir equivocadamente que los datos completos están disponibles luego de descargar N fragmentos aleatorios se puede calcular: [por ejemplo, para 100 fragmentos, la probabilidad es de 10^-30](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html), es decir que es extremadamente improbable.
+La solución a este problema de disponibilidad de datos es el muestreo de disponibilidad de datos (DAS). Los nodos ligeros descargan fragmentos muy pequeños y aleatorios de los datos de estado completo y utilizan estas muestras para verificar que el conjunto de datos completo esté disponible. La probabilidad real de asumir incorrectamente la disponibilidad total de los datos tras descargar N fragmentos aleatorios puede calcularse ([para 100 fragmentos la probabilidad es de 10^-30](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html), es decir, increíblemente improbable).
Incluso en este escenario, ataques que retengan solo unos pocos bytes podrían pasar desapercibidos fácilmente para aquellos clientes que realizan solicitudes de datos aleatorios. La solución se alcanza mediante la codificación de borrado, que reconstruye pequeñas partes de datos faltantes para luego utilizarlas para verificar las modificaciones de estado propuestas. Posteriormente se puede construir una prueba de fraude utilizando los datos reconstruidos, evitando que los nodos ligeros acepten encabezados incorrectos.
-**Nota:** El DAS y las pruebas de fraude aún no se implementaron en los clientes ligeros de Ethereum en prueba de participación, pero están contemplados dentro del plan de desarrollo, probablemente en forma de pruebas basadas en ZK-SNARK. Actualmente los clientes ligeros usan una forma de DAC: verifican las identidades del comité de sincronización y luego confían en los encabezados de bloque firmados que reciben.
+**Nota:** Todavía no se ha implementado el DAS ni las pruebas de fraude para los clientes ligeros de Ethereum de prueba de participación, pero están en la hoja de ruta, muy probablemente en forma de pruebas basadas en ZK-SNARK. Actualmente los clientes ligeros usan una forma de DAC: verifican las identidades del comité de sincronización y luego confían en los encabezados de bloque firmados que reciben.
## Disponibilidad de datos y rollups de capa 2 {#data-availability-and-layer-2-rollups}
-Las [soluciones de escalabilidad de capa 2](/layer-2/), como los [rollups](/glossary/#rollups), reducen los costos de transacción y aumentan la capacidad de procesamiento de Ethereum gracias a que procesan transacciones fuera de la cadena. Las transacciones de los rollups se comprimen y son publicadas en lotes en Ethereum. Los lotes representan en una sola transacción en Ethereum miles de transacciones individuales realizadas fuera de la cadena. Esto reduce la congestión en la capa base y disminuye las tarifas para los usuarios.
+Las [soluciones de escalado de capa 2](/layer-2/), como los [rollups](/glossary/#rollups), reducen los costes de las transacciones y aumentan el rendimiento de Ethereum al procesar las transacciones fuera de la cadena. Las transacciones de los rollups se comprimen y son publicadas en lotes en Ethereum. Los lotes representan miles de transacciones individuales fuera de cadena en una única transacción en Ethereum. Esto reduce la congestión en la capa base y disminuye las tarifas para los usuarios.
-Sin embargo, solo es posible confiar en las transacciones de "resumen" publicadas en Ethereum si el cambio de estado propuesto puede ser verificado de manera independiente y confirmado como resultado de aplicar todas las transacciones individuales fuera de la cadena. Si los operadores de los rollup no ponen a disposición los datos de transacción para esta verificación, podrían estar enviando datos incorrectos a Ethereum.
+Sin embargo, solo es posible confiar en las transacciones de «resumen» publicadas en Ethereum, si el cambio de estado propuesto puede ser verificado y confirmado de manera independiente como el resultado de aplicar todas las transacciones individuales fuera de cadena. Si los operadores de los rollup no ponen a disposición los datos de transacción para esta verificación, podrían estar enviando datos incorrectos a Ethereum.
-Los [rollups optimistas](/developers/docs/scaling/optimistic-rollups/) publican datos de transacciones de manera comprimida en Ethereum y esperan cierto tiempo (normalmente 7 días) para permitir que verificadores independientes comprueben los datos. Si alguno identifica un problema, puede generar una prueba de fraude y utilizarla para impugnar al rollup. La consecuencia sería una reversión en la cadena y la omisión del bloque inválido. Esto solo es posible si los datos están disponibles. Actualmente, hay dos formas en las que los rollups optimistas publican datos de las transacciones en L1. Algunos rollups hacen que los datos estén permanentemente disponibles como `CALLDATA`, que residen permanentemente en la cadena. Con la implementación de EIP-4844, algunos rollups publican en cambio sus datos de transacción en un almacenamiento de blobs más barato. Esto no sería un almacenamiento permanente. Los verificadores independientes tienen que consultar los blobs y plantear sus desafíos dentro de ~18 días antes de que los datos se eliminen de la capa 1 de Ethereum. La disponibilidad de datos solamente va a estar garantizada por el protocolo de Ethereum durante ese corto período de tiempo. Luego de ese lapso, la responsabilidad va a recaer en otras entidades del ecosistema de Ethereum. Cualquier nodo puede verificar la disponibilidad de datos utilizando DAS, es decir, descargando pequeñas muestras aleatorias de los datos de los blobs.
+Los [rollups optimistas](/developers/docs/scaling/optimistic-rollups/) publican datos de transacciones comprimidos en Ethereum y esperan un cierto tiempo (normalmente 7 días) para permitir que verificadores independientes comprueben los datos. Si alguno identifica un problema, puede generar una prueba de fraude y utilizarla para impugnar al rollup. La consecuencia sería una reversión en la cadena y la omisión del bloque inválido. Esto solo es posible si los datos están disponibles. Actualmente, hay dos formas en las que los rollups optimistas publican datos de las transacciones en L1. Algunos rollups hacen que los datos estén permanentemente disponibles como `CALLDATA`, que vive permanentemente en la cadena. Con la implementación de EIP-4844, algunos rollups publican en cambio sus datos de transacción en un almacenamiento de blobs más barato. Esto no sería un almacenamiento permanente. Los verificadores independientes tienen que consultar los blobs y plantear sus desafíos dentro de ~18 días antes de que los datos se eliminen de la capa 1 de Ethereum. La disponibilidad de datos solamente va a estar garantizada por el protocolo de Ethereum durante ese corto período de tiempo. Luego de ese lapso, la responsabilidad va a recaer en otras entidades del ecosistema de Ethereum. Cualquier nodo puede verificar la disponibilidad de los datos utilizando el DAS, es decir, descargando pequeñas muestras aleatorias de los datos del blob.
-Los [rollups de conocimiento cero (ZK)](/developers/docs/scaling/zk-rollups) no necesitan publicar los datos de la transacción, ya que las [pruebas de validez de conocimiento cero](/glossary/#zk-proof) garantizan la corrección de las transiciones de estado. Sin embargo, la disponibilidad de datos sigue siendo un problema porque no podemos garantizar la funcionalidad del rollup de ZK (o interactuar con él) sin acceso a sus datos de estado. Por ejemplo, los usuarios no pueden conocer sus saldos si un operador retiene detalles sobre el estado del rollup. Además, no pueden realizar actualizaciones de estado utilizando la información contenida en un bloque recién agregado.
+Los [rollups de conocimiento cero (ZK)](/developers/docs/scaling/zk-rollups) no necesitan publicar los datos de las transacciones, ya que las [pruebas de validez de conocimiento cero](/glossary/#zk-proof) garantizan la corrección de las transiciones de estado. Sin embargo, la disponibilidad de datos sigue siendo un problema porque no podemos garantizar la funcionalidad del rollup de ZK (o interactuar con él) sin acceso a sus datos de estado. Por ejemplo, los usuarios no pueden conocer sus saldos si un operador retiene detalles sobre el estado del rollup. Además, no pueden realizar actualizaciones de estado utilizando la información contenida en un bloque recién agregado.
-## Disponibilidad de datos frente a capacidad de recuperación de datos {#data-availability-vs-data-retrievability}
+## Disponibilidad de datos frente a recuperabilidad de datos {#data-availability-vs-data-retrievability}
La disponibilidad de datos es diferente de la capacidad de recuperación de datos. La disponibilidad de datos es la garantía de que los nodos completos han podido acceder y verificar el conjunto completo de transacciones asociadas con un bloque específico. No es necesario que los datos sean accesibles para siempre.
-La recuperabilidad de datos es la capacidad de los nodos para recuperar _información histórica_ de la cadena de bloques. Estos datos históricos no son necesarios para verificar nuevos bloques, solo son necesarios para sincronizar nodos completos del bloque inicial o para servir solicitudes históricas específicas.
+La recuperabilidad de los datos es la capacidad de los nodos para recuperar _información histórica_ de la cadena de bloques. Estos datos históricos no son necesarios para verificar nuevos bloques, solo son necesarios para sincronizar nodos completos del bloque inicial o para servir solicitudes históricas específicas.
-El protocolo principal de Ethereum se ocupa principalmente de la disponibilidad de datos, no de su capacidad de recuperación. La capacidad de recuperación de datos puede ser proporcionada por una pequeña población de nodos de archivo ejecutados por terceros, o puede distribuirse a través de la red utilizando el almacenamiento de archivos descentralizado, como la [Portal Network](https://www.ethportal.net/).
+El protocolo principal de Ethereum se ocupa principalmente de la disponibilidad de datos, no de su capacidad de recuperación. La recuperabilidad de los datos puede ser proporcionada por una pequeña población de nodos de archivo gestionados por terceros, o puede ser distribuida a través de la red utilizando un almacenamiento de archivos descentralizado como la [Portal Network](https://www.ethportal.net/).
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [¿Qué es la disponibilidad de datos?](https://medium.com/blockchain-capital-blog/wtf-is-data-availability-80c2c95ded0f)
-- [¿Qué es la disponibilidad de datos?](https://coinmarketcap.com/alexandria/article/what-is-data-availability)
-- [El panorama de disponibilidad de datos fuera de la cadena de Ethereum](https://blog.celestia.org/ethereum-off-chain-data-availability-landscape/)
-- [Manual básico sobre las comprobaciones de disponibilidad de datos](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html)
-- [Explicación de la propuesta de fragmentación + DAS](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling)
-- [Nota sobre la disponibilidad de datos y la codificación de borrado](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding#can-an-attacker-not-circumvent-this-scheme-by-releasing-a-full-unavailable-block-but-then-only-releasing-individual-bits-of-data-as-clients-query-for-them)
-- [Comités de disponibilidad de datos](https://medium.com/starkware/data-availability-e5564c416424)
-- [Comités de disponibilidad de datos de prueba de participación](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf)
-- [Soluciones al problema de la capacidad de recuperación de datos](https://notes.ethereum.org/@vbuterin/data_sharding_roadmap#Who-would-store-historical-data-under-sharding)
-- [Disponibilidad de datos o: cómo los rollups aprendieron a dejar de preocuparse y amar a Ethereum](https://ethereum2077.substack.com/p/data-availability-in-ethereum-rollups)
+- [¿Qué demonios es la disponibilidad de datos?](https://medium.com/blockchain-capital-blog/wtf-is-data-availability-80c2c95ded0f)
+- [¿Qué es la disponibilidad de datos?](https://coinmarketcap.com/academy/article/what-is-data-availability)
+- [Una introducción a las comprobaciones de disponibilidad de datos](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html)
+- [Una explicación de la propuesta de fragmentación + DAS](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling)
+- [Una nota sobre la disponibilidad de los datos y la codificación de borrado](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding#can-an-attacker-not-circumvent-this-scheme-by-releasing-a-full-unavailable-block-but-then-only-releasing-individual-bits-of-data-as-clients-query-for-them)
+- [Comités de disponibilidad de datos.](https://medium.com/starkware/data-availability-e5564c416424)
+- [Comités de disponibilidad de datos de prueba de participación.](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf)
+- [Soluciones al problema de la recuperabilidad de los datos](https://notes.ethereum.org/@vbuterin/data_sharding_roadmap#Who-would-store-historical-data-under-sharding)
+- [Disponibilidad de datos o: cómo los rollups aprendieron a dejar de preocuparse y a amar a Ethereum](https://web.archive.org/web/20250515194659/https://web.archive.org/web/20241108192208/https://research.2077.xyz/data-availability-or-how-rollups-learned-to-stop-worrying-and-love-ethereum)
+- [EIP-7623: Aumento del coste de Calldata](https://web.archive.org/web/20250515194659/https://research.2077.xyz/eip-7623-increase-calldata-cost)
From be1462584200a04552a53c5abc74ab0d4b7d037a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:49 -0300
Subject: [PATCH 117/589] update(i18n):
public/content/translations/es/zero-knowledge-proofs/index.md
---
.../es/zero-knowledge-proofs/index.md | 154 ++++++++++--------
1 file changed, 89 insertions(+), 65 deletions(-)
diff --git a/public/content/translations/es/zero-knowledge-proofs/index.md b/public/content/translations/es/zero-knowledge-proofs/index.md
index 511072d1b21..ae30ffd9b99 100644
--- a/public/content/translations/es/zero-knowledge-proofs/index.md
+++ b/public/content/translations/es/zero-knowledge-proofs/index.md
@@ -1,6 +1,6 @@
---
title: Pruebas de conocimiento cero
-description: Introducción no técnica a pruebas de conocimiento cero para principiantes
+description: Una introducción no técnica a las pruebas de conocimiento cero para principiantes.
lang: es
---
@@ -8,9 +8,9 @@ lang: es
Una prueba de conocimiento cero es una forma de probar la validez de una sentencia sin revelar la sentencia en sí. El "probador" (también conocido como tirador de pruebas) es la parte que intenta probar o demostrar una afirmación, mientras que el "verificador" es el responsable de validarla.
-Las pruebas de conocimiento cero aparecieron por primera vez en el paper de 1985 “[The knowledge complexity of interactive proof systems](http://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Proof%20Systems/The_Knowledge_Complexity_Of_Interactive_Proof_Systems.pdf)” (La complejidad del conocimiento de los sistemas de prueba interactivos), que proporciona una definición de las pruebas de conocimiento cero ampliamente utilizadas hoy en día:
+Las pruebas de conocimiento cero aparecieron por primera vez en un artículo de 1985, «[La complejidad del conocimiento de los sistemas de prueba interactivos](http://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Proof%20Systems/The_Knowledge_Complexity_Of_Interactive_Proof_Systems.pdf)», que proporciona una definición de las pruebas de conocimiento cero ampliamente utilizada en la actualidad:
-> Un protocolo de conocimiento cero es un método por el cual una parte (el probador) **puede probar** a otra parte (el verificador) **que algo es cierto, sin revelar ninguna información** aparte del hecho de que esta afirmación específica es verdadera.
+> Un protocolo de conocimiento cero es un método por el cual una parte (el probador) **puede demostrar** a otra parte (el verificador) **que algo es verdadero, sin revelar ninguna información** aparte del hecho de que esta afirmación específica es verdadera.
Las pruebas de conocimiento cero han mejorado con los años y ahora se están utilizando en varias aplicaciones del mundo real.
@@ -22,23 +22,23 @@ Las pruebas de conocimiento cero representaron un gran avance en la criptografí
Pero hay problemas con este enfoque, principalmente la falta de privacidad. La Información Personal Identificable (PII) compartida con servicios de terceros se almacena en bases de datos centrales, las cuales son vulnerables a los hackeos. Teniendo en cuenta que el robo de identidad se está convirtiendo en un problema crítico, surge la necesidad de más medios de protección de la privacidad para compartir información confidencial.
-Las pruebas de conocimiento cero resuelven este problema **eliminando la necesidad de revelar información para probar la validez de las afirmaciones**. El protocolo de conocimiento cero utiliza la declaración (llamada "testigo") como entrada para generar una prueba sucinta de su validez. Esta prueba proporciona garantías sólidas de que una declaración es cierta sin exponer la información utilizada en su creación.
+Las pruebas de conocimiento cero resuelven este problema al **eliminar la necesidad de revelar información para probar la validez de las afirmaciones**. El protocolo de conocimiento cero utiliza la declaración (llamada "testigo") como entrada para generar una prueba sucinta de su validez. Esta prueba proporciona garantías sólidas de que una declaración es cierta sin exponer la información utilizada en su creación.
Volviendo a nuestro ejemplo anterior, la única evidencia que usted necesita para probar su declaración de ciudadanía es una prueba de conocimiento cero. El verificador solo tiene que comprobar si ciertas propiedades de la prueba son verdaderas para estar convencido de que la sentencia subyacente también es verdadera.
-## Casos de uso de las pruebas de conocimiento cero {#use-cases-for-zero-knowledge-proofs}
+## Casos de uso para las pruebas de conocimiento cero {#use-cases-for-zero-knowledge-proofs}
### Pagos anónimos {#anonymous-payments}
Los pagos con tarjeta de crédito a menudo son visibles para varias partes, incluyendo el proveedor de pagos, los bancos y otras partes interesadas (por ejemplo, las autoridades gubernamentales). Si bien la vigilancia financiera tiene beneficios para identificar la actividad ilegal, también quebranta la privacidad de los ciudadanos ordinarios.
-Las criptomonedas tuvieron por objetivo proporcionar un medio para que los usuarios realizaran transacciones privadas entre pares. Pero la mayoría de las transacciones de criptomonedas son abiertamente visibles en las cadenas de bloques públicas. Las identidades de los usuarios a menudo son seudónimos y o bien deliberadamente vinculadas a las identidades del mundo real (por ejemplo, incluyendo direcciones de ETH en los perfiles de Twitter o GitHub) o pueden asociarse a identidades del mundo real utilizando análisis de datos dentro y fuera de la cadena básicos.
+Las criptomonedas tuvieron por objetivo proporcionar un medio para que los usuarios realizaran transacciones privadas entre pares. Pero la mayoría de las transacciones de criptomonedas son abiertamente visibles en las cadenas de bloques públicas. Las identidades de los usuarios suelen ser seudónimas y, o bien se vinculan deliberadamente a identidades del mundo real (p. ej., al incluir direcciones de ETH en perfiles de Twitter o GitHub), o bien pueden asociarse a ellas mediante un análisis de datos básico dentro y fuera de la cadena.
Existen "monedas de privacidad" específicas diseñadas para transacciones completamente anónimas. Las cadenas de bloques centradas en la privacidad, como Zcash y Monero, protegen los detalles de las transacciones, lo que incluye direcciones de remitente/receptor, tipo de activo, cantidad y cronograma de la transacción.
-Al insertar tecnología de conocimiento cero en el protocolo, las redes de [cadena de bloques](/glossary/#blockchain) centradas en la privacidad permiten a los [nodos](/glossary/#node) validar las transacciones sin necesidad de acceder a los datos de las transacciones.
+Al incorporar la tecnología de conocimiento cero en el protocolo, las redes de [cadenas de bloques](/glossary/#blockchain) centradas en la privacidad permiten a los [nodos](/glossary/#node) validar transacciones sin necesidad de acceder a los datos de las mismas. [EIP-7503](https://eips.ethereum.org/EIPS/eip-7503) es un ejemplo de un diseño propuesto que permitirá transferencias de valor privadas y nativas en la cadena de bloques de Ethereum. Estas propuestas son, sin embargo, difíciles de aplicar debido a una conjunción de factores de seguridad, reglamentación y experiencia de usuario.
-**Las pruebas de conocimiento cero también se están aplicando a la anonimización de transacciones en las cadenas de bloques públicas**. Un ejemplo es Tornado Cash, un servicio descentralizado y no custodiado que permite a los usuarios realizar transacciones privadas en Ethereum. Tornado Cash utiliza pruebas de conocimiento cero para ocultar los detalles de la transacción y garantizar la privacidad financiera. Desafortunadamente, debido a que se trata de herramientas de privacidad "opt-in", se asocian con actividades ilícitas. Para superar esto, la privacidad eventualmente debe convertirse en la opción predeterminada en las cadenas de bloques públicas.
+**Las pruebas de conocimiento cero también se están aplicando a la anonimización de transacciones en las cadenas de bloques públicas**. Un ejemplo es Tornado Cash, un servicio descentralizado y no custodiado que permite a los usuarios realizar transacciones privadas en Ethereum. Tornado Cash utiliza pruebas de conocimiento cero para ocultar los detalles de la transacción y garantizar la privacidad financiera. Desafortunadamente, debido a que se trata de herramientas de privacidad "opt-in", se asocian con actividades ilícitas. Para superar esto, la privacidad eventualmente debe convertirse en la opción predeterminada en las cadenas de bloques públicas. Obtenga más información sobre [la privacidad en Ethereum](/privacy/).
### Protección de la identidad {#identity-protection}
@@ -46,21 +46,44 @@ Los sistemas actuales de gestión de identidad ponen en peligro la información
Las pruebas de conocimiento cero son particularmente útiles en el contexto de la [identidad descentralizada](/decentralized-identity/). La identidad descentralizada (también descrita como "identidad autosoberana") da al individuo la capacidad de controlar el acceso a los identificadores personales. La demostración de su ciudadanía sin revelar su identificación fiscal o los datos de su pasaporte es un buen ejemplo de cómo la tecnología de conocimiento cero permite la identidad descentralizada.
+
+
+
+
+ ZKP + Identidad en acción: ID digital nacional (NDI) de Bután en Ethereum
+
+
+
+ Un ejemplo del mundo real del uso de ZKP para sistemas de gestión de identidad es el sistema de identificación digital nacional (NDI) del Reino de Bután, construido sobre Ethereum. El NDI de Bután utiliza ZKP para permitir a los ciudadanos demostrar criptográficamente hechos sobre sí mismos, como "soy ciudadano" o "soy mayor de 18 años", sin revelar los datos personales sensibles de su identificación.
+
+
+
+
+
+### Prueba de humanidad {#proof-of-humanity}
+
+Uno de los ejemplos más utilizados de las pruebas de conocimiento cero en acción hoy en día es el [protocolo World ID](https://world.org/blog/world/world-id-faqs), que puede considerarse como «un pasaporte digital global para la era de la IA». Este protocolo permite a las personas demostrar que son individuos únicos sin revelar información personal. Para ello se utiliza un dispositivo denominado Orb, que escanea el iris de una persona y genera un código de iris. El código del iris se consulta y verifica para confirmar que la persona es un ser humano biológicamente único. Después de la verificación, un compromiso de identidad generado en el dispositivo del usuario (que no está vinculado o deriva de los datos biométricos) se añade a una lista segura en la cadena de bloques. A partir de entonces, cada vez que el usuario quiera demostrar que es un humano verificado –ya sea para iniciar sesión, votar o realizar otras acciones– podrá generar una prueba de conocimiento cero que confirme su pertenencia en la lista. La ventaja de utilizar una prueba de conocimiento cero es que solo se pone en evidencia una afirmación: esta persona es única. Todo lo demás sigue siendo privado.
+
+World ID se basa en el [protocolo Semaphore](https://docs.semaphore.pse.dev/) desarrollado por el [equipo de PSE](https://pse.dev/) de la Fundación Ethereum. Semaphore está diseñado para ser una forma ligera pero potente de generar y verificar pruebas de conocimiento cero. Permite a los usuarios demostrar que forman parte de un grupo (en este caso, humanos verificados) sin mostrar qué miembro del grupo son. Semaphore también es muy flexible, ya que permite crear grupos basados en una amplia gama de criterios, como la verificación de la identidad, la participación en eventos o la propiedad de credenciales.
+
### Autenticación {#authentication}
Usar servicios en línea requiere probar su identidad y el derecho a acceder a esas plataformas. Esto requiere a menudo proporcionar información personal, como nombres, direcciones de correo electrónico, fechas de nacimiento, etc. También puede que necesite memorizar contraseñas largas o arriesgarse a perder acceso.
Las pruebas de conocimiento cero, sin embargo, pueden simplificar la autenticación tanto para plataformas como para usuarios. Una vez que se ha generado una prueba de conocimiento cero utilizando entradas públicas (por ejemplo, datos que certifiquen la membresía del usuario en la plataforma) y entradas privadas (por ejemplo, los datos del usuario), el usuario puede simplemente presentarla para autenticar su identidad cuando necesite acceder al servicio. Esto mejora la experiencia de los usuarios y libera a las organizaciones de la necesidad de almacenar grandes cantidades de información de los usuarios.
-### Cómputo verificable {#verifiable-computation}
+### Computación verificable {#verifiable-computation}
El cómputo o cálculo verificable es otra aplicación de tecnología de conocimiento cero para mejorar los diseños de las cadenas de bloques. El cómputo verificable nos permite externalizar el cálculo a otra entidad manteniendo al mismo tiempo resultados verificables. La entidad envía el resultado junto con una prueba que verifica que el programa se ejecutó correctamente.
-El cálculo verificable es **crítico para mejorar las velocidades de procesamiento en las cadenas de bloques** sin reducir la seguridad. Entender esto requiere conocer las diferencias en las soluciones propuestas para el escalamiento de Ethereum.
+La computación verificable es **fundamental para mejorar la velocidad de procesamiento en las cadenas de bloques** sin reducir la seguridad. Entender esto requiere conocer las diferencias en las soluciones propuestas para el escalamiento de Ethereum.
-Las [soluciones de escalado en cadena](/developers/docs/scaling/#on-chain-scaling), tal como el sharding o fragmentación, requieren gran modificación de la capa base de la cadena de bloques. Sin embargo, este enfoque es muy complejo, y los errores en la aplicación pueden socavar el modelo de seguridad de Ethereum.
+Las [soluciones de escalado en la cadena](/developers/docs/scaling/#onchain-scaling), como el sharding, requieren una modificación extensa de la capa base de la cadena de bloques. Sin embargo, este enfoque es muy complejo, y los errores en la aplicación pueden socavar el modelo de seguridad de Ethereum.
-Las [soluciones de escalado fuera de la cadena](/developers/docs/scaling/#off-chain-scaling) no requieren rediseñar el protocolo central de Ethereum. En cambio, se basan en un modelo de cálculo externalizado para mejorar el rendimiento en la capa base de Ethereum.
+Las [soluciones de escalado fuera de la cadena](/developers/docs/scaling/#offchain-scaling) no requieren rediseñar el protocolo principal de Ethereum. En cambio, se basan en un modelo de cálculo externalizado para mejorar el rendimiento en la capa base de Ethereum.
Así es como funciona esto en la práctica:
@@ -72,45 +95,45 @@ El beneficio aquí es que Ethereum no tiene que realizar ninguna ejecución y so
La cadena necesita una forma de validar las transacciones fuera de la cadena sin volver a ejecutarlas, o de lo contrario se pierde el valor de la ejecución fuera de la cadena.
-Aquí es donde entra en juego el cálculo verificable. Cuando un nodo ejecuta una transacción fuera de Ethereum, presenta una prueba de conocimiento cero para demostrar si la ejecución fuera de la cadena es correcta. Esta prueba (llamada [prueba de validez](/glossary/#validity-proof)) garantiza que una transacción sea válida, lo que permite que Ethereum aplique el resultado a su estado —sin necesidad de que alguien lo discuta—.
+Aquí es donde entra en juego el cálculo verificable. Cuando un nodo ejecuta una transacción fuera de Ethereum, presenta una prueba de conocimiento cero para demostrar si la ejecución fuera de la cadena es correcta. Esta prueba (llamada [prueba de validez](/glossary/#validity-proof)) garantiza que una transacción es válida, lo que permite a Ethereum aplicar el resultado a su estado, sin esperar a que nadie lo refute.
-Los [rollups de conocimiento cero](/developers/docs/scaling/zk-rollups) y los [validiums](/developers/docs/scaling/validium/) son dos soluciones de escalado fuera de cadena que utilizan las pruebas de validez para proporcionar escalabilidad segura. Estos protocolos ejecutan miles de transacciones fuera de la cadena y presentan pruebas para su verificación en Ethereum. Estos resultados se pueden aplicar inmediatamente una vez verificada la prueba, lo que permite a Ethereum procesar más transacciones sin aumentar el cálculo en la capa base.
+Los [rollups de conocimiento cero](/developers/docs/scaling/zk-rollups) y los [validiums](/developers/docs/scaling/validium/) son dos soluciones de escalado fuera de la cadena que utilizan pruebas de validez para proporcionar una escalabilidad segura. Estos protocolos ejecutan miles de transacciones fuera de la cadena y presentan pruebas para su verificación en Ethereum. Estos resultados se pueden aplicar inmediatamente una vez verificada la prueba, lo que permite a Ethereum procesar más transacciones sin aumentar el cálculo en la capa base.
-### Reducir el soborno y el complot en la votación en cadena {#secure-blockchain-voting}
+### Reducción del soborno y la colusión en la votación en cadena {#secure-blockchain-voting}
-Los esquemas de votación de la cadena de bloques tienen muchas características favorables: son totalmente auditables, son seguros contra los ataques, son resistentes a la censura y están libres de restricciones geográficas. Pero, aun así, no son inmunes al problema del **complot**.
+Los esquemas de votación de la cadena de bloques tienen muchas características favorables: son totalmente auditables, son seguros contra los ataques, son resistentes a la censura y están libres de restricciones geográficas. Pero incluso los esquemas de votación en cadena no son inmunes al problema de la **colusión**.
-El complot, colusión o conspiración, que se define como la "coordinación para limitar la competencia abierta engañando, defraudando y estafando a los demás", puede adoptar la forma de un actor malicioso que influye en el voto ofreciendo sobornos. Por ejemplo, Alice podría recibir un soborno de Bob para elegir la `option B` en una votación, incluso si prefiere la `option A`.
+El complot, colusión o conspiración, que se define como la "coordinación para limitar la competencia abierta engañando, defraudando y estafando a los demás", puede adoptar la forma de un actor malicioso que influye en el voto ofreciendo sobornos. Por ejemplo, Alicia podría recibir un soborno de Roberto para votar por la `opción B` en una papeleta, aunque prefiera la `opción A`.
El soborno y el complot limitan la efectividad de cualquier proceso que utilice el voto como mecanismo de señalización (especialmente donde los usuarios pueden demostrar cómo votaron). Esto puede tener consecuencias importantes, especialmente cuando las votaciones están destinadas a asignar recursos escasos.
-Por ejemplo, los [mecanismos de financiación cuadrática](https://www.radicalxchange.org/concepts/plural-funding/) dependen de las donaciones para medir la preferencia por ciertas opciones entre diferentes proyectos para bien público. Cada donación cuenta como un "voto" para un proyecto específico, y los proyectos que reciben más votos obtienen más fondos del fondo correspondiente.
+Por ejemplo, los [mecanismos de financiación cuadrática](https://www.radicalxchange.org/wiki/plural-funding/) se basan en donaciones para medir la preferencia por ciertas opciones entre diferentes proyectos de bienes públicos. Cada donación cuenta como un "voto" para un proyecto específico, y los proyectos que reciben más votos obtienen más fondos del fondo correspondiente.
-El uso de la votación en cadena hace que el financiamiento cuadrático sea susceptible a la colusión: las transacciones de la cadena de bloques son públicas, por lo que sobornadores puedan inspeccionar la actividad en cadena de un sobornado para ver cómo “votó”. De esta manera, la financiación cuadrática deja de ser un medio eficaz para asignar fondos en función de las preferencias agregadas de la comunidad.
+El uso de la votación en cadena hace que la financiación cuadrática sea susceptible a la confabulación: las transacciones de la cadena de bloques son públicas, por lo que sobornadores puedan inspeccionar la actividad en cadena de un sobornado para ver cómo «votó». De esta manera, la financiación cuadrática deja de ser un medio eficaz para asignar fondos en función de las preferencias agregadas de la comunidad.
-Afortunadamente, soluciones más recientes como MACI (Minimum Anti-Collusion Infrastructure) están usando las pruebas de conocimiento cero para hacer votaciones en cadena (por ejemplo, mecanismos de financiación cuadrática) resistentes al soborno y a la colusión. La MACI es un conjunto de contratos inteligentes y scripts que permiten a un administrador central (llamado "coordinador") sumar los votos y recontar resultados _sin_ revelar detalles sobre cómo votó cada individuo. Aun así, todavía es posible verificar que las votaciones se contabilizaron correctamente o confirmar que un individuo en particular participó en la ronda de votaciones.
+Afortunadamente, soluciones más recientes como MACI (Minimum Anti-Collusion Infrastructure) utilizan pruebas de conocimiento cero para que las votaciones en cadena (p. ej., mecanismos de financiación cuadrática) sean resistentes al soborno y a la colusión. MACI es un conjunto de contratos inteligentes y scripts que permiten a un administrador central (llamado «coordinador») agregar votos y contar los resultados _sin_ revelar detalles sobre cómo votó cada individuo. Aun así, todavía es posible verificar que las votaciones se contabilizaron correctamente o confirmar que un individuo en particular participó en la ronda de votaciones.
#### ¿Cómo funciona la MACI con las pruebas de conocimiento cero? {#how-maci-works-with-zk-proofs}
Al principio, el coordinador implementa el contrato de MACI en Ethereum, después de lo cual los usuarios pueden registrarse para votar (registrando su clave pública en el contrato inteligente). Los usuarios votan enviando mensajes cifrados con su clave pública al contrato inteligente (un voto válido debe estar firmado con la clave pública más reciente asociada a la identidad del usuario, entre otros criterios). Después, el coordinador procesa todos los mensajes una vez finalizado el período de votación, cuenta los votos y verifica los resultados en cadena.
-En la MACI, las pruebas de conocimiento cero se utilizan para garantizar que el cálculo sea correcto haciendo imposible que el coordinador procese los votos y cuente los resultados incorrectamente. Esto se consigue requiriendo que el coordinador genere pruebas ZK-SNARK para verificar que (a) todos los mensajes se procesaron correctamente (b) el resultado final corresponde a la suma de todos los votos _válidos_.
+En la MACI, las pruebas de conocimiento cero se utilizan para garantizar que el cálculo sea correcto haciendo imposible que el coordinador procese los votos y cuente los resultados incorrectamente. Esto se logra al exigir que el coordinador genere pruebas ZK-SNARK que verifiquen que a) todos los mensajes se procesaron correctamente b) el resultado final corresponde a la suma de todos los votos _válidos_.
Por lo tanto, incluso sin compartir un desglose de los votos por usuario (como suele suceder), la MACI garantiza la integridad de los resultados calculados durante el proceso de recuento. Esta característica es útil para reducir la efectividad de los esquemas de colusión básicos. Podemos explorar esta posibilidad utilizando el ejemplo anterior de Bob sobornando a Alice para que vote a favor de una opción:
- Alice se registra para votar enviando su clave pública a un contrato inteligente.
-- Alice acuerda votar a favor de la `option B` a cambio de un soborno de Bob.
-- Alice vota la `option B`.
+- Alicia acepta votar por la `opción B` a cambio de un soborno de Roberto.
+- Alicia vota por la `opción B`.
- Alice envía secretamente una transacción cifrada para cambiar la clave pública asociada a su identidad.
-- Alice envía otro mensaje (cifrado) al contrato inteligente para votar la `option A` usando la nueva clave pública.
-- Alice muestra a Bob una transacción que da cuenta de que votó por la `opción B` (que no es válida, ya que la clave pública ya no está asociada con la identidad de Alice en el sistema).
-- Al procesar mensajes, el coordinador omite el voto de Alice por la `option B` y solo cuenta el voto de la `option A`. Por lo tanto, el intento de Bob de colusión con Alice y de manipular el voto en cadena fracasa.
+- Alicia envía otro mensaje (cifrado) al contrato inteligente votando por la `opción A` usando la nueva clave pública.
+- Alicia le muestra a Roberto una transacción que demuestra que votó por la `opción B` (que no es válida, ya que la clave pública ya no está asociada con la identidad de Alicia en el sistema).
+- Mientras procesa los mensajes, el coordinador omite el voto de Alicia por la `opción B` y solo cuenta el voto por la `opción A`. Por lo tanto, un intento cualquiera de confabulación con Alice y de manipular el voto en cadena fracasaría.
-Usar la MACI _requiere_ confiar en que el coordinador no complote con los sobornadores o intente sobornar a los votantes. El coordinador puede descifrar los mensajes de usuario (necesarios para crear la prueba) y así verificar con precisión cómo votó cada persona.
+Usar MACI _requiere_ confiar en que el coordinador no se pondrá de acuerdo con los sobornadores ni intentará sobornar a los votantes. El coordinador puede descifrar los mensajes de usuario (necesarios para crear la prueba) y así verificar con precisión cómo votó cada persona.
-Pero en los casos en que el coordinador sea honesto, la MACI representa una herramienta potente para garantizar la legalidad de la votación en cadena. Esto explica su popularidad entre las aplicaciones de financiación cuadrática (por ejemplo, [clr.fund](https://clr.fund/#/about/maci)) que dependen en gran medida de la integridad de las opciones de votación de cada individuo.
+Pero en los casos en que el coordinador sea honesto, la MACI representa una herramienta potente para garantizar la legalidad de la votación en cadena. Esto explica su popularidad entre las aplicaciones de financiación cuadrática (p. ej., [clr.fund](https://clr.fund/#/about/maci)) que dependen en gran medida de la integridad de las opciones de voto de cada individuo.
-[Obtenga más información sobre la MACI](https://maci.pse.dev/).
+[Obtenga más información sobre MACI](https://maci.pse.dev/).
## ¿Cómo funcionan las pruebas de conocimiento cero? {#how-do-zero-knowledge-proofs-work}
@@ -118,29 +141,29 @@ Una prueba de conocimiento cero le permite probar la validez de una declaración
Un protocolo de conocimiento cero debe satisfacer el siguiente criterio:
-1. **Completitud**: Si la entrada es válida, el protocolo de conocimiento cero siempre devuelve "true". Por lo tanto, si la declaración subyacente es verdadera y el probador y el verificador actúan honestamente, la prueba puede ser aceptada.
+1. **Completitud**: si la entrada es válida, el protocolo de conocimiento cero siempre devuelve «verdadero». Por lo tanto, si la declaración subyacente es verdadera y el probador y el verificador actúan honestamente, la prueba puede ser aceptada.
-2. **Solidez**: Si la entrada no es válida, es teóricamente imposible engañar al protocolo de conocimiento cero para que muestre "true". Por lo tanto, un probador que mienta no puede engañar a un verificador honesto para que crea que una declaración no válida es válida (excepto con un pequeño margen de probabilidad).
+2. **Solidez**: si la entrada no es válida, es teóricamente imposible engañar al protocolo de conocimiento cero para que devuelva «verdadero». Por lo tanto, un probador que mienta no puede engañar a un verificador honesto para que crea que una declaración no válida es válida (excepto con un pequeño margen de probabilidad).
-3. **Conocimiento cero**: El verificador no aprende nada sobre una proposición más allá de su validez o falsedad (tienen "conocimiento cero" de la proposición). Este requisito también evita que el verificador derive la entrada original (el contenido de la declaración) de la prueba.
+3. **Conocimiento cero**: el verificador no aprende nada sobre una declaración más allá de su validez o falsedad (tiene «conocimiento cero» de la declaración). Este requisito también evita que el verificador derive la entrada original (el contenido de la declaración) de la prueba.
-En su forma básica, una prueba de conocimiento-cero está formada por tres elementos: **testigo**, ** desafío** y **respuesta**.
+En su forma básica, una prueba de conocimiento cero se compone de tres elementos: **testigo**, **desafío** y **respuesta**.
-- **Testigo**: Con una prueba de conocimiento cero, la prueba quiere probar el conocimiento de alguna información oculta. La información secreta es el "testigo" de la prueba, y el conocimiento asumido por el probador del testigo establece un conjunto de preguntas que solo pueden ser respondidas por alguien/una parte con conocimiento de la información. Así, el probador inicia el proceso de prueba eligiendo aleatoriamente una pregunta, calculando la respuesta y enviándola al verificador.
+- **Testigo**: con una prueba de conocimiento cero, el probador quiere probar el conocimiento de alguna información oculta. La información secreta es el "testigo" de la prueba, y el conocimiento asumido por el probador del testigo establece un conjunto de preguntas que solo pueden ser respondidas por alguien/una parte con conocimiento de la información. Así, el probador inicia el proceso de prueba eligiendo aleatoriamente una pregunta, calculando la respuesta y enviándola al verificador.
-- **Desafío**: El verificador elige aleatoriamente otra pregunta del conjunto y le pide al probador que la responda.
+- **Desafío**: el verificador elige al azar otra pregunta del conjunto y le pide al probador que la responda.
-- **Respuesta**: El probador acepta la pregunta, calcula la respuesta y la devuelve al verificador. La respuesta del probador permite al verificador comprobar si el primero realmente tiene acceso al testigo. Para asegurar que el probador no esté adivinando ciegamente y obteniendo las respuestas correctas por casualidad, el verificador elige más preguntas que hacer. Al repetir esta interacción muchas veces, la posibilidad de que el probador falsee el conocimiento del testigo caerá significativamente hasta que el verificador esté satisfecho.
+- **Respuesta**: el probador acepta la pregunta, calcula la respuesta y se la devuelve al verificador. La respuesta del probador permite al verificador comprobar si el primero realmente tiene acceso al testigo. Para asegurar que el probador no esté adivinando ciegamente y obteniendo las respuestas correctas por casualidad, el verificador elige más preguntas que hacer. Al repetir esta interacción muchas veces, la posibilidad de que el probador falsee el conocimiento del testigo caerá significativamente hasta que el verificador esté satisfecho.
Lo anterior describe la estructura de una "prueba interactiva de conocimiento cero". Los primeros protocolos de conocimiento cero usaban pruebas interactivas en las que la verificación de la validez de una declaración requería comunicación de ida y vuelta entre los probadores y los verificadores.
-Un buen ejemplo que ilustra cómo funcionan las pruebas interactivas es la famosa [historia de la cueva de Ali Baba](https://en.wikipedia.org/wiki/Zero-knowledge_proof#The_Ali_Baba_cave) de Jean-Jacques Quisquatter. En la historia, Peggy (el probador) quiere demostrar a Victor (el verificador) que conoce la frase secreta para abrir una puerta mágica sin revelar la frase.
+Un buen ejemplo que ilustra cómo funcionan las pruebas interactivas es la famosa [historia de la cueva de Alí Babá](https://en.wikipedia.org/wiki/Zero-knowledge_proof#The_Ali_Baba_cave) de Jean-Jacques Quisquater. En la historia, Peggy (el probador) quiere demostrar a Victor (el verificador) que conoce la frase secreta para abrir una puerta mágica sin revelar la frase.
### Pruebas de conocimiento cero no interactivas {#non-interactive-zero-knowledge-proofs}
Si bien las pruebas interactivas fueron revolucionarias, tenían una utilidad limitada, ya que exigían que las dos partes estuvieran disponibles e interactuaran repetidamente. Incluso si un verificador estuviera convencido de la honestidad de un probador, la prueba no estaría disponible para la verificación independiente (calcular una nueva prueba implica un nuevo conjunto de mensajes entre el probador y el verificador).
-Para resolver este problema, Manuel Blum, Paul Feldman y Silvio Micali sugirieron las primeras [pruebas de conocimiento cero no interactivas](https://dl.acm.org/doi/10.1145/62212.62222), donde el probador y el verificador tienen una clave compartida. Esto permite que el probador demuestre su conocimiento de cierta información (esto es, testigo) sin proporcionar la información misma.
+Para resolver este problema, Manuel Blum, Paul Feldman y Silvio Micali sugirieron las primeras [pruebas no interactivas de conocimiento cero](https://dl.acm.org/doi/10.1145/62212.62222) en las que el probador y el verificador tienen una clave compartida. Esto permite que el probador demuestre su conocimiento de cierta información (esto es, testigo) sin proporcionar la información misma.
A diferencia de las pruebas interactivas, las pruebas no interactivas solo requerían una ronda de comunicación entre los participantes (probador y verificador). El probador pasa la información secreta a un algoritmo especial para procesar una prueba de conocimiento cero. Esta prueba es enviada al verificador, quien comprueba que el probador conozca la información secreta usando otro algoritmo.
@@ -150,65 +173,66 @@ Las pruebas no interactivas representaron un avance para la tecnología de conoc
### Tipos de pruebas de conocimiento cero {#types-of-zero-knowledge-proofs}
-#### ZK-SNARK {#zk-snarks}
+#### ZK-SNARKs {#zk-snarks}
-ZK-SNARK es el acrónimo en inglés de **argumento de conocimiento sucinto no interactivo de conocimiento cero** (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge). El protocolo ZK-SNARK tiene las siguientes cualidades:
+ZK-SNARK es un acrónimo de **Argumento de Conocimiento Sucinto No Interactivo de Conocimiento Cero**. El protocolo ZK-SNARK tiene las siguientes cualidades:
-- **Conocimiento cero (Zero-Knowledge)**: Un verificador puede validar la integridad de una declaración sin saber nada más sobre la declaración. El único conocimiento que el verificador tiene de la declaración es si es verdadera o falsa.
+- **Conocimiento cero**: un verificador puede validar la integridad de una declaración sin saber nada más sobre la declaración. El único conocimiento que el verificador tiene de la declaración es si es verdadera o falsa.
-- **Sucinto (Succinct)**: La prueba de conocimiento cero es menor que el testigo y puede ser verificarse rápidamente.
+- **Sucinto**: la prueba de conocimiento cero es más pequeña que el testigo y se puede verificar rápidamente.
-- **No interactivo (Non-Interactive)**: La prueba es "no interactiva" porque el probador y el verificador solo interactúan una vez, a diferencia de las pruebas interactivas, que requieren múltiples rondas de comunicación.
+- **No interactivo**: la prueba es «no interactiva» porque el probador y el verificador solo interactúan una vez, a diferencia de las pruebas interactivas que requieren varias rondas de comunicación.
-- **Argumento (Argument)**: La prueba cumple con el requisito de "solidez" o solvencia, por lo que es muy poco probable hacer trampas.
+- **Argumento**: la prueba satisface el requisito de «solidez», por lo que hacer trampa es extremadamente improbable.
-- **(de) conocimiento (of Knowledge)**: La prueba de conocimiento cero no se puede construir sin acceso a la información secreta (testigo). Es difícil, si no imposible, para un probador que no tenga el testigo calcular una prueba de conocimiento cero válida.
+- **(De) Conocimiento**: la prueba de conocimiento cero no se puede construir sin acceso a la información secreta (testigo). Es difícil, si no imposible, para un probador que no tenga el testigo calcular una prueba de conocimiento cero válida.
La "clave compartida" mencionada anteriormente se refiere a parámetros públicos que el probador y el verificador acuerdan utilizar en la generación y verificación de pruebas. La generación de parámetros públicos (conocidos colectivamente como la Cadena Común de Referencia [CRS]) es una operación sensible por su importancia en la seguridad del protocolo. Si la entropía (aleatoriedad) utilizada para generar el CRS entra en manos de un probador deshonesto, pueden calcular pruebas falsas.
-El [cálculo de varias partes (CMP)](https://en.wikipedia.org/wiki/Secure_multi-party_computation) es una forma de reducir los riesgos en la generación de parámetros públicos. Múltiples partes participan en una [ceremonia de configuración o establecimiento de confianza](https://zkproof.org/2021/06/30/setup-ceremonies/amp/), donde cada persona aporta algunos valores aleatorios para generar la CRS. Siempre y cuando una parte honesta destruya su porción de la entropía, el protocolo ZK-SNARK conservará la solidez de cálculo o computacional.
+La [computación multipartita (MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation) es una forma de reducir los riesgos en la generación de parámetros públicos. Varias partes participan en una [ceremonia de configuración de confianza](https://zkproof.org/2021/06/30/setup-ceremonies/amp/), donde cada persona contribuye con algunos valores aleatorios para generar el CRS. Siempre y cuando una parte honesta destruya su porción de la entropía, el protocolo ZK-SNARK conservará la solidez de cálculo o computacional.
Las configuraciones de confianza requieren que los usuarios confíen en los participantes en la generación de parámetros. Sin embargo, el desarrollo de ZK-STARK ha permitido protocolos de prueba que funcionen con una configuración sin confianza.
-#### ZK-STARK {#zk-starks}
+#### ZK-STARKs {#zk-starks}
-ZK-STARK es el acrónimo en inglés de **argumento de conocimiento transparente escalable de conocimiento cero** (Zero-Knowledge Scalable Transparent Argument of Knowledge). Los ZK-STARK son similares a los ZK-SNARK, salvo que son:
+ZK-STARK es un acrónimo de **Argumento de Conocimiento Transparente Escalable de Conocimiento Cero**. Los ZK-STARK son similares a los ZK-SNARK, salvo que son:
-- **Escalables**: El ZK-STARK es más rápido que el ZK-SNARK para generar y verificar pruebas cuando el tamaño del testigo es mayor. Con las pruebas STARK, los tiempos del probador y el verificador solo aumentan ligeramente a medida que crece el testigo (los tiempos de probador y el verificador de SNARK aumentan linealmente con el tamaño del testigo).
+- **Escalable**: ZK-STARK es más rápido que ZK-SNARK en la generación y verificación de pruebas cuando el tamaño del testigo es mayor. Con las pruebas STARK, los tiempos del probador y el verificador solo aumentan ligeramente a medida que crece el testigo (los tiempos de probador y el verificador de SNARK aumentan linealmente con el tamaño del testigo).
-- **Transparentes**: El ZK-STARK se basa en una aleatoriedad pública verificable para generar parámetros públicos para probar y verificar en lugar de una configuración de confianza. Por lo tanto, son más transparentes en comparación con los ZK-SNARK.
+- **Transparente**: ZK-STARK se basa en la aleatoriedad verificable públicamente para generar parámetros públicos para la prueba y la verificación en lugar de una configuración de confianza. Por lo tanto, son más transparentes en comparación con los ZK-SNARK.
Los ZK-STARK producen pruebas más grandes que los ZK-SNARK, lo que significa que generalmente tienen gastos de verificación más altos. Sin embargo, hay casos (como probar grandes conjuntos de datos) en los que los ZK-STARK pueden ser más rentables que los ZK-SNARK.
-## Inconvenientes del uso de las pruebas de conocimiento cero {#drawbacks-of-using-zero-knowledge-proofs}
+## Inconvenientes del uso de pruebas de conocimiento cero {#drawbacks-of-using-zero-knowledge-proofs}
-### Costos de hardware {#hardware-costs}
+### Costes de hardware {#hardware-costs}
Generar pruebas de conocimiento cero implica cálculos muy complejos que se realizan mejor en máquinas especializadas. Como estas máquinas son caras, a menudo están fuera del alcance de las personas comunes. Además, las aplicaciones que quieran utilizar tecnología de conocimiento cero deben tener en cuenta los costos de hardware, lo cual puede aumentar los costos para los usuarios finales.
-### Costos de verificación de pruebas {#proof-verification-costs}
+### Costes de verificación de pruebas {#proof-verification-costs}
La verificación de pruebas también requiere un cálculo complejo e incrementa los costos de la implementación de tecnología de conocimiento cero en las aplicaciones. Este costo es particularmente relevante en el contexto del cómputo de pruebas. Por ejemplo, los rollups de conocimiento cero pagan ~500.000 gas para verificar una única prueba ZK-SNARK en Ethereum (los ZK-STARK tienen tarifas aún más altas).
-### Presunciones de confianza {#trust-assumptions}
+### Suposiciones de confianza {#trust-assumptions}
En ZK-SNARK, la Cadena de Referencia Común (parámetros públicos) se genera una vez y está disponible para reutilizarla para las partes que deseen participar en el protocolo de conocimiento cero. Los parámetros públicos se crean a través de una ceremonia de establecimiento de confianza, donde se supone que los participantes son honestos.
Pero en realidad no hay forma de que los usuarios evalúen la honestidad de los participantes y los usuarios tienen que creer en los desarrolladores. Los ZK-STARK están libres de presunciones de confianza, ya que la aleatoriedad utilizada en la generación de la cadena es verificable públicamente. Entretanto, los investigadores están trabajando en la creación de configuraciones sin confianza para los ZK-SNARK con el fin de aumentar la seguridad de los mecanismos de prueba.
-### Amenazas de la informática cuántica {#quantum-computing-threats}
+### Amenazas de la computación cuántica {#quantum-computing-threats}
ZK-SNARK utiliza criptografía de curva elíptica para el cifrado. Si bien se supone que el problema del logaritmo discreto de la curva elíptica es intrincado por ahora, el desarrollo de ordenadores cuánticos podría romper este modelo de seguridad en el futuro.
ZK-STARK se considera inmune a la amenaza de la computación cuántica, ya que solo depende de funciones hash resistentes a las colisiones para su seguridad. A diferencia de los pares de claves públicas-privadas utilizados en la criptografía de curva elíptica, el hashing resistente a la colisión es más difícil de romper para los algoritmos de informática cuántica.
-## Más información {#further-reading}
-
-- [Descripción general de los casos de uso para pruebas de conocimiento cero](https://pse.dev/projects): _Equipo de exploración de privacidad y escalabilidad_
-- [SNARKs vs. STARKs vs. SNARKs recursivos](https://www.alchemy.com/overviews/snarks-vs-starks) — _Descripciones generales de Alchemy_
-- [Prueba de conocimiento cero: mejorar la privacidad en una cadena de bloques](https://www.altoros.com/blog/zero-knowledge-proof-improving-privacy-for-a-blockchain/) — _Dmitry Lavrenov_
-- [SNARK de conocimiento cero: ejemplo realista de conocimiento cero y análisis detallado](https://medium.com/coinmonks/zk-snarks-a-realistic-zero-knowledge-example-and-deep-dive-c5e6eaa7131c) — _Adam Luciano_
-- [STARK de conocimiento cero: crear confianza verificable incluso contra ordenadores cuánticos](https://medium.com/coinmonks/zk-starks-create-verifiable-trust-even-against-quantum-computers-dd9c6a2bb13d) — _Adam Luciano_
-- [Una introducción aproximada a cómo son posibles los zk-SNARK](https://vitalik.eth.limo/general/2021/01/26/snarks.html), _Vitalik Buterin_
-- [Por qué las pruebas de conocimiento cero (ZKP) cambian las reglas del juego para la identidad autosoberana](https://frankiefab.hashnode.dev/why-zero-knowledge-proofs-zkps-is-a-game-changer-for-self-sovereign-identity) — _Franklin Ohaegbulam_
-
+## Lecturas adicionales {#further-reading}
+
+- [Resumen de los casos de uso para las pruebas de conocimiento cero](https://pse.dev/projects) — _Equipo de exploraciones de privacidad y escalado_
+- [SNARKs vs. STARKs vs. SNARKs recursivos](https://www.alchemy.com/overviews/snarks-vs-starks) — _Resúmenes de Alchemy_
+- [Una prueba de conocimiento cero: mejorando la privacidad en una cadena de bloques](https://www.altoros.com/blog/zero-knowledge-proof-improving-privacy-for-a-blockchain/) — _Dmitry Lavrenov_
+- [zk-SNARK: un ejemplo realista de conocimiento cero y análisis en profundidad](https://medium.com/coinmonks/zk-snarks-a-realistic-zero-knowledge-example-and-deep-dive-c5e6eaa7131c) — _Adam Luciano_
+- [ZK-STARK: crear confianza verificable, incluso contra computadoras cuánticas](https://medium.com/coinmonks/zk-starks-create-verifiable-trust-even-against-quantum-computers-dd9c6a2bb13d) — _Adam Luciano_
+- [Una introducción aproximada de cómo son posibles los zk-SNARK](https://vitalik.eth.limo/general/2021/01/26/snarks.html) — _Vitalik Buterin_
+- [Por qué las pruebas de conocimiento cero (ZKP) son un punto de inflexión para la identidad autosoberana](https://frankiefab.hashnode.dev/why-zero-knowledge-proofs-zkps-is-a-game-changer-for-self-sovereign-identity) — _Franklin Ohaegbulam_
+- [Explicación de EIP-7503: habilitación de transferencias privadas en Ethereum con pruebas ZK](https://research.2077.xyz/eip-7503-zero-knowledge-wormholes-for-private-ethereum-transactions#introduction) — _Emmanuel Awosika_
+- [Juego de cartas ZK: un juego para aprender los fundamentos de ZK y casos de uso de la vida real](https://github.com/ZK-card/zk-cards) - _ZK-Cards_
From d15e63a391b1256f25153a9e19eeaa6bf6d4bee7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:50 -0300
Subject: [PATCH 118/589] update(i18n):
public/content/translations/es/contributing/adding-glossary-terms/index.md
---
.../es/contributing/adding-glossary-terms/index.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/public/content/translations/es/contributing/adding-glossary-terms/index.md b/public/content/translations/es/contributing/adding-glossary-terms/index.md
index 169237994cc..7f3db091ad9 100644
--- a/public/content/translations/es/contributing/adding-glossary-terms/index.md
+++ b/public/content/translations/es/contributing/adding-glossary-terms/index.md
@@ -6,7 +6,7 @@ description: Nuestros criterios para añadir nuevos términos al glosario ethere
# Añadir términos al glosario {#contributing-to-ethereumorg-}
-Este espacio cambia cada día. Nuevos términos están entran constantemente en el léxico de usuarios de Ethereum. Por eso necesitamos su ayuda para proporcionar una referencia precisa y actualizada de todo lo relacionado con Ethereum. ¡Échele un vistazo al [glosario](/glossary/) actual y considere si puede añadir nuevos términos.
+Este espacio cambia cada día. Nuevos términos están entran constantemente en el léxico de usuarios de Ethereum. Por eso necesitamos su ayuda para proporcionar una referencia precisa y actualizada de todo lo relacionado con Ethereum. Eche un vistazo al [glosario](/glossary/) actual y consulte a continuación si quiere ayudar.
## Criterios {#criteria}
@@ -17,10 +17,10 @@ Los nuevos términos de glosario se evaluarán a tenor de los siguientes criteri
- ¿El término/definición no contiene publicidad de productos u otro contenido promocional?
- ¿Es el término/definición directamente relevante para Ethereum?
- ¿La definición es objetiva, precisa y libre de juicios u opiniones subjetivas?
-- ¿Procede de una fuente creíble? ¿Hace referencia a las fuentes?
+- ¿Procede de una fuente creíble? ¿Hace referencia a sus fuentes?
---
-## Añada su término {#how-decisions-about-the-site-are-made}
+## Añadir su término {#how-decisions-about-the-site-are-made}
-Si desea añadir un término de glosario de ethereum.org y cumple con los requisitos, [cree una incidencia en GitHub](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_glossary_term.yaml).
+Si quiere añadir un término al glosario de ethereum.org y cumple con los criterios, [cree una incidencia en GitHub](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_glossary_term.yaml).
From ba825e8c6fb8bf145c4e8e77bd696ae673abfbb8 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:51 -0300
Subject: [PATCH 119/589] update(i18n):
public/content/translations/es/contributing/adding-developer-tools/index.md
---
.../adding-developer-tools/index.md | 22 +++++++++----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/public/content/translations/es/contributing/adding-developer-tools/index.md b/public/content/translations/es/contributing/adding-developer-tools/index.md
index 29bd4c096dc..fa45212be3e 100644
--- a/public/content/translations/es/contributing/adding-developer-tools/index.md
+++ b/public/content/translations/es/contributing/adding-developer-tools/index.md
@@ -4,37 +4,37 @@ lang: es
description: Nuestros criterios para enumerar herramientas para desarrolladores en ethereum.org
---
-# Agregar herramientas para desarrolladores {#contributing-to-ethereumorg-}
+# Añadir herramientas para desarrolladores {#contributing-to-ethereumorg-}
Queremos estar seguros que contar con los mejores recursos para desarrolladores para que puedan construir con confianza y que tengan el apoyo que requiren.
Si hay alguna herramienta útil para desarrollador que no hayamos incluido, puede sugerir que la agreguen.
-Actualmente incluimos las herramientas para desarrollador en nuestro [portal para desarrolladores](/developers/).
+Actualmente, incluimos herramientas para desarrolladores en nuestro [portal para desarrolladores](/developers/).
**No dude en sugerir nuevas adiciones a las páginas apropiadas.**
-## Cómo decidimos {#ways-to-contribute}
+## Cómo lo decidimos {#ways-to-contribute}
Las solicitudes de herramientas para desarrolladores se evaluarán según los siguientes criterios:
-**¿Tiene una diferencia significativa con respecto a las herramientas ya mencionadas?**
+**¿Se diferencia de forma significativa de las herramientas que ya figuran en la lista?**
- Nuevas categorías o tipos de herramientas
- Nuevas funciones comparadas con herramientas similares existentes
- Dirigido a un caso de uso distinto no cubierto por herramientas similares existentes
-**¿Está bien documentada la herramienta?**
+**¿Está la herramienta bien documentada?**
- ¿Existe la documentación?
- ¿La documentación es suficiente para utilizar la herramienta?
- ¿La documentación se ha actualizado recientemente?
-**¿La herramienta goza de un uso generalizado?**
+**¿Es la herramienta ampliamente utilizada?**
- Consideraremos sistemas de medición como las estrellas de GitHub, las estadísticas de descarga y si las utilizan empresas o proyectos conocidos.
-**¿La herramienta es de suficiente calidad?**
+**¿Tiene la herramienta la calidad suficiente?**
- ¿Hay errores recurrentes?
- ¿La herramienta es fiable?
@@ -46,16 +46,16 @@ Muchos proyectos en el espacio de Ethereum son de código abierto. Es más proba
---
-## Pedido de productos {#product-ordering}
+## Ordenación de productos {#product-ordering}
-A menos que los productos estén específicamente ordenados de otra manera, como por ejemplo en orden alfabético, los productos se mostrarán de menos a más recientemente añadidos a la página. Es decir, los productos más nuevos se añaden al final de la lista.
+A menos que los productos estén específicamente ordenados de otra manera, como por ejemplo en orden alfabético, los productos se mostrarán de menos a más recientemente añadidos a la página. En otras palabras, los productos más nuevos se añaden al final de la lista.
---
-## Añadir herramientas para desarrolladores {#how-decisions-about-the-site-are-made}
+## Añada su herramienta para desarrolladores {#how-decisions-about-the-site-are-made}
Si desea añadir una herramienta para desarrollador a ethereum.org y cumple con los criterios, cree una incidencia en GitHub.
- Crear una incidencia
+ Crear incidencia
From 4222d22c8be1d683df7c7864913eda37ad3abcca Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:53 -0300
Subject: [PATCH 120/589] update(i18n):
public/content/translations/es/developers/tutorials/secure-development-workflow/index.md
---
.../secure-development-workflow/index.md | 37 +++++++++----------
1 file changed, 17 insertions(+), 20 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/secure-development-workflow/index.md b/public/content/translations/es/developers/tutorials/secure-development-workflow/index.md
index 400f5f4da1a..b586756f372 100644
--- a/public/content/translations/es/developers/tutorials/secure-development-workflow/index.md
+++ b/public/content/translations/es/developers/tutorials/secure-development-workflow/index.md
@@ -2,44 +2,41 @@
title: Lista de verificación de seguridad de los contratos inteligentes
description: Un flujo de trabajo recomendado para escribir contratos inteligentes seguros
author: "Trailofbits"
-tags:
- - "contratos inteligentes"
- - "seguridad"
- - "solidity"
+tags: [ "contratos Inteligentes", "seguridades", "Solidity" ]
skill: intermediate
lang: es
-published: 2020-09-07
+published: 07-09-2020
source: Desarrollar contratos seguros
sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/workflow.md
---
-## Lista de verificación de desarrollo de contratos inteligente {#smart-contract-development-checklist}
+## Lista de verificación para el desarrollo de contratos inteligentes {#smart-contract-development-checklist}
Le indicamos un proceso altamente eficiente que le recomendamos seguir cuando escriba sus contratos inteligentes.
Compruebe cualquier problema de seguridad conocido:
-- Revisa tus contratos con [Slither](https://github.com/crytic/slither). Tiene más de 40 detectores integrados para vulnerabilidades comunes. Ejecútelo en cada comprobación con un nuevo código y asegúrese de obtener un informe limpio (o utilice el modo de cribado para silenciar ciertos problemas).
+- Revise sus contratos con [Slither](https://github.com/crytic/slither). Tiene más de 40 detectores integrados para vulnerabilidades comunes. Ejecútelo en cada comprobación con un nuevo código y asegúrese de obtener un informe limpio (o utilice el modo de cribado para silenciar ciertos problemas).
- Revise sus contratos con [Crytic](https://crytic.io/). Comprueba 50 problemas que Slither no revisa. Crytic puede ayudar a que su equipo se mantenga a la cabecera, al descubrir fácilmente problemas de seguridad en Pull Requests en GitHub.
Tenga en cuenta las características especiales de su contrato:
-- ¿Sus contratos pueden mejorarse? Revise su código de mejora para errores con [`slither-check-upgradeability`](https://github.com/crytic/slither/wiki/Upgradeability-Checks) o [Crytic](https://blog.trailofbits.com/2020/06/12/upgradeable-contracts-made-safer-with-crytic/). Hemos documentado 17 formas en que las actualizaciones pueden fallar.
-- ¿Sus contratos pretenden ajustarse a los ERC? Compruébalos con [`slither-check-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance). Esta herramienta identifica instantáneamente las desviaciones de seis especificaciones comunes.
-- ¿Se integra con tókenes de terceros? Revise nuestra [lista de verificación de integración de tókenes](/developers/tutorials/token-integration-checklist/) antes de depender de contratos externos.
+- ¿Sus contratos pueden mejorarse? Revise su código de capacidad de actualización en busca de fallos con [`slither-check-upgradeability`](https://github.com/crytic/slither/wiki/Upgradeability-Checks) o [Crytic](https://blog.trailofbits.com/2020/06/12/upgradeable-contracts-made-safer-with-crytic/). Hemos documentado 17 formas en que las actualizaciones pueden fallar.
+- ¿Sus contratos pretenden ajustarse a los ERC? Compruébelos con [`slither-check-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance). Esta herramienta identifica instantáneamente las desviaciones de seis especificaciones comunes.
+- ¿Se integra con tókenes de terceros? Revise nuestra [lista de verificación para la integración de tokens](/developers/tutorials/token-integration-checklist/) antes de depender de contratos externos.
Inspeccione visualmente las características de seguridad críticas de su código:
-- Revise la impresión en consola [heredance-graph](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph) de Slither. Evite problemas de operaciones en paralelo involuntarias y de linearización C3.
-- Revise la impresion en consola [function-summary](https://github.com/trailofbits/slither/wiki/Printer-documentation#function-summary) de Slither. Informa de la visibilidad de las funciones y los controles de acceso.
-- Revise la impresion en consola [vars-and-auth](https://github.com/trailofbits/slither/wiki/Printer-documentation#variables-written-and-authorization) de Slither. Informa de los controles de acceso sobre las variables de estado.
+- Revise el impresor [inheritance-graph](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph) de Slither. Evite problemas de operaciones en paralelo involuntarias y de linearización C3.
+- Revise el impresor [function-summary](https://github.com/trailofbits/slither/wiki/Printer-documentation#function-summary) de Slither. Informa de la visibilidad de las funciones y los controles de acceso.
+- Revise el impresor [vars-and-auth](https://github.com/trailofbits/slither/wiki/Printer-documentation#variables-written-and-authorization) de Slither. Informa de los controles de acceso sobre las variables de estado.
Documente propiedades de seguridad críticas y utilice generadores de pruebas automatizados para evaluarlas:
-- Aprende a [documentar propiedades de seguridad para su código](/developers/tutorials/guide-to-smart-contract-security-tools/). Es difícil al principio, pero es la actividad más importante para lograr un buen resultado. También es un requisito previo para utilizar cualquiera de las técnicas avanzadas en este tutorial.
-- Defina propiedades de seguridad en Solidity, para su uso con [Echidna](https://github.com/crytic/echidna) y [Manticore](https://manticore.readthedocs.io/en/latest/verifier.html). Concéntrese en su máquina de estado, controles de acceso, operaciones aritméticas, interacciones externas y conformidad con los estándares.
-- Defina las propiedades de seguridad con [la API Python de Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/). Concéntrese en la herencia, dependencias variables, controles de acceso y otras cuestiones estructurales.
-- Ejecute sus pruebas de propiedad en cada comando commit con [Crytic](https://crytic.io). Crytic puede consumir y evaluar pruebas de propiedad de seguridad para que todos los miembros de su equipo puedan ver fácilmente que pasan por GitHub. Las pruebas fallidas pueden bloquear los commits.
+- Aprenda a [documentar las propiedades de seguridad para su código](/developers/tutorials/guide-to-smart-contract-security-tools/). Es difícil al principio, pero es la actividad más importante para lograr un buen resultado. También es un requisito previo para utilizar cualquiera de las técnicas avanzadas en este tutorial.
+- Defina las propiedades de seguridad en Solidity, para su uso con [Echidna](https://github.com/crytic/echidna) y [Manticore](https://manticore.readthedocs.io/en/latest/verifier.html). Concéntrese en su máquina de estado, controles de acceso, operaciones aritméticas, interacciones externas y conformidad con los estándares.
+- Defina las propiedades de seguridad con la [API de Python de Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/). Concéntrese en la herencia, dependencias variables, controles de acceso y otras cuestiones estructurales.
+- Ejecute sus pruebas de propiedades en cada confirmación con [Crytic](https://crytic.io). Crytic puede consumir y evaluar pruebas de propiedad de seguridad para que todos los miembros de su equipo puedan ver fácilmente que pasan por GitHub. Las pruebas fallidas pueden bloquear los commits.
Por último, tenga en cuenta los problemas que las herramientas automatizadas no pueden encontrar fácilmente:
@@ -48,8 +45,8 @@ Por último, tenga en cuenta los problemas que las herramientas automatizadas no
- Operaciones criptográficas
- Interacciones arriesgadas con componentes DeFi externos
-## Pedir ayuda {#ask-for-help}
+## Pida ayuda {#ask-for-help}
-[El horario de oficina de Ethereum](https://calendly.com/dan-trailofbits/office-hours) funciona cada martes por la tarde. Estas sesiones individuales de una hora de duración son una oportunidad para hacernos cualquier pregunta que tenga sobre la seguridad, solucionar problemas usando nuestras herramientas y obtener comentarios de expertos sobre su enfoque actual. Le ayudaremos a trabajar con esta guía.
+Las [horas de consulta de Ethereum](https://calendly.com/dan-trailofbits/office-hours) tienen lugar todos los martes por la tarde. Estas sesiones individuales de una hora de duración son una oportunidad para hacernos cualquier pregunta que tenga sobre la seguridad, solucionar problemas usando nuestras herramientas y obtener comentarios de expertos sobre su enfoque actual. Le ayudaremos a trabajar con esta guía.
-Únase a nuestro Slack: [Pirateando el imperio](https://join.slack.com/t/empirehacking/shared_invite/zt-h97bbrj8-1jwuiU33nnzg67JcvIciUw). Siempre estamos disponibles en los canales #crytic y #ethereum si tiene alguna duda.
+Únase a nuestro Slack: [Empire Hacking](https://join.slack.com/t/empirehacking/shared_invite/zt-h97bbrj8-1jwuiU33nnzg67JcvIciUw). Siempre estamos disponibles en los canales #crytic y #ethereum si tiene alguna duda.
From 3d5d179feda656d3464725738ed546c963e551fd Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:55 -0300
Subject: [PATCH 121/589] update(i18n):
public/content/translations/es/developers/tutorials/scam-token-tricks/index.md
---
.../tutorials/scam-token-tricks/index.md | 470 ++++++++++++++++++
1 file changed, 470 insertions(+)
create mode 100644 public/content/translations/es/developers/tutorials/scam-token-tricks/index.md
diff --git a/public/content/translations/es/developers/tutorials/scam-token-tricks/index.md b/public/content/translations/es/developers/tutorials/scam-token-tricks/index.md
new file mode 100644
index 00000000000..52d439c3da1
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/scam-token-tricks/index.md
@@ -0,0 +1,470 @@
+---
+title: "Algunos trucos utilizados por los tokens fraudulentos y cómo detectarlos"
+description: En este tutorial, diseccionamos un token fraudulento para ver algunos de los trucos que utilizan los estafadores, cómo los implementan y cómo podemos detectarlos.
+author: Ori Pomerantz
+tags:
+ [
+ "fraude",
+ "Solidity",
+ "erc-20",
+ "JavaScript",
+ "typescript"
+ ]
+skill: intermediate
+published: 15-9-2023
+lang: es
+---
+
+En este tutorial, diseccionamos [un token fraudulento](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82#code) para ver algunos de los trucos que utilizan los estafadores y cómo los implementan. Al final del tutorial, tendrá una visión más completa de los contratos de token ERC-20, sus capacidades y por qué es necesario el escepticismo. Luego, examinamos los eventos emitidos por ese token fraudulento y vemos cómo podemos identificar automáticamente que no es legítimo.
+
+## Tokens fraudulentos: ¿qué son, por qué se crean y cómo evitarlos? {#scam-tokens}
+
+Uno de los usos más comunes para Ethereum es que un grupo cree un token intercambiable, en cierto sentido su propia moneda. No obstante, en cualquier lugar donde haya casos de uso legítimos que aporten valor, también hay criminales que intentan robar ese valor para sí mismos.
+
+Puede leer más sobre este tema [en otro lugar de ethereum.org](/guides/how-to-id-scam-tokens/) desde la perspectiva del usuario. Este tutorial se centra en diseccionar un token fraudulento para ver cómo está hecho y cómo se puede detectar.
+
+### ¿Cómo sé que wARB es un fraude? {#warb-scam}
+
+El token que diseccionamos es [wARB](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82#code), que pretende ser equivalente al [token ARB](https://etherscan.io/token/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1) legítimo.
+
+La forma más fácil de saber cuál es el token legítimo es consultar a la organización de origen, [Arbitrum](https://arbitrum.foundation/). Las direcciones legítimas se especifican [en su documentación](https://docs.arbitrum.foundation/deployment-addresses#token).
+
+### ¿Por qué está disponible el código fuente? {#why-source}
+
+Normalmente, esperaríamos que las personas que intentan estafar a otras sean reservadas y, de hecho, muchos tokens fraudulentos no tienen su código disponible (por ejemplo, [este](https://optimistic.etherscan.io/token/0x15992f382d8c46d667b10dc8456dc36651af1452#code) y [este otro](https://optimistic.etherscan.io/token/0x026b623eb4aada7de37ef25256854f9235207178#code)).
+
+Sin embargo, los tokens legítimos suelen publicar su código fuente, por lo que para parecer legítimos, los autores de tokens fraudulentos a veces hacen lo mismo. [wARB](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82#code) es uno de esos tokens con el código fuente disponible, lo que facilita su comprensión.
+
+Aunque los implementadores de contratos pueden elegir si publicar o no el código fuente, _no pueden_ publicar el código fuente incorrecto. El explorador de bloques compila el código fuente proporcionado de forma independiente y, si no obtiene exactamente el mismo bytecode, rechaza ese código fuente. [Puede leer más sobre esto en el sitio de Etherscan](https://etherscan.io/verifyContract).
+
+## Comparación con los tokens ERC-20 legítimos {#compare-legit-erc20}
+
+Vamos a comparar este token con los tokens ERC-20 legítimos. Si no está familiarizado con la forma en que se escriben normalmente los tokens ERC-20 legítimos, [consulte este tutorial](/developers/tutorials/erc20-annotated-code/).
+
+### Constantes para direcciones privilegiadas {#constants-for-privileged-addresses}
+
+Los contratos a veces necesitan direcciones privilegiadas. Los contratos que están diseñados para su uso a largo plazo permiten que algunas direcciones privilegiadas cambien esas direcciones, por ejemplo, para permitir el uso de un nuevo contrato multifirma. Hay varias maneras de hacer esto.
+
+El [contrato de token `HOP`](https://etherscan.io/address/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc#code) utiliza el patrón [`Ownable`](https://docs.openzeppelin.com/contracts/2.x/access-control#ownership-and-ownable). La dirección privilegiada se mantiene en el almacenamiento, en un campo llamado `_owner` (véase el tercer archivo, `Ownable.sol`).
+
+```solidity
+abstract contract Ownable is Context {
+ address private _owner;
+ .
+ .
+ .
+}
+```
+
+El [contrato de token `ARB`](https://etherscan.io/address/0xad0c361ef902a7d9851ca7dcc85535da2d3c6fc7#code) no tiene una dirección privilegiada directamente. Sin embargo, no la necesita. Se encuentra detrás de un [`proxy`](https://docs.openzeppelin.com/contracts/5.x/api/proxy) en la [dirección `0xb50721bcf8d664c30412cfbc6cf7a15145234ad1`](https://etherscan.io/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1#code). Ese contrato tiene una dirección privilegiada (consulte el cuarto archivo, `ERC1967Upgrade.sol`) que se puede utilizar para las actualizaciones.
+
+```solidity
+ /**
+ * @dev Almacena una nueva dirección en la ranura de administrador de EIP1967.
+ */
+ function _setAdmin(address newAdmin) private {
+ require(newAdmin != address(0), "ERC1967: new admin is the zero address");
+ StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;
+ }
+```
+
+Por el contrario, el contrato `wARB` tiene un `contract_owner` codificado.
+
+```solidity
+contract WrappedArbitrum is Context, IERC20 {
+ .
+ .
+ .
+ address deployer = 0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1;
+ address public contract_owner = 0xb40dE7b1beE84Ff2dc22B70a049A07A13a411A33;
+ .
+ .
+ .
+}
+```
+
+[El propietario de este contrato](https://etherscan.io/address/0xb40dE7b1beE84Ff2dc22B70a049A07A13a411A33) no es un contrato que pueda ser controlado por diferentes cuentas en diferentes momentos, sino una [cuenta de propiedad externa](/developers/docs/accounts/#externally-owned-accounts-and-key-pairs). Esto significa que probablemente esté diseñado para el uso a corto plazo por parte de un individuo, en lugar de como una solución a largo plazo para controlar un ERC-20 que seguirá siendo valioso.
+
+Y, de hecho, si miramos en Etherscan vemos que el estafador solo utilizó este contrato durante 12 horas (de la [primera transacción](https://etherscan.io/tx/0xf49136198c3f925fcb401870a669d43cecb537bde36eb8b41df77f06d5f6fbc2) a la [última transacción](https://etherscan.io/tx/0xdfd6e717157354e64bbd5d6adf16761e5a5b3f914b1948d3545d39633244d47b)) durante el 19 de mayo de 2023.
+
+### La función `_transfer` falsa {#the-fake-transfer-function}
+
+Es estándar que las transferencias reales se realicen utilizando [una función `_transfer` interna](/developers/tutorials/erc20-annotated-code/#the-_transfer-function-_transfer).
+
+En `wARB`, esta función parece casi legítima:
+
+```solidity
+ function _transfer(address sender, address recipient, uint256 amount) internal virtual{
+ require(sender != address(0), "ERC20: transfer from the zero address");
+ require(recipient != address(0), "ERC20: transfer to the zero address");
+
+ _beforeTokenTransfer(sender, recipient, amount);
+
+ _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
+ _balances[recipient] = _balances[recipient].add(amount);
+ if (sender == contract_owner){
+ sender = deployer;
+ }
+ emit Transfer(sender, recipient, amount);
+ }
+```
+
+La parte sospechosa es:
+
+```solidity
+ if (sender == contract_owner){
+ sender = deployer;
+ }
+ emit Transfer(sender, recipient, amount);
+```
+
+Si el propietario del contrato envía tokens, ¿por qué el evento `Transfer` muestra que provienen de `deployer`?
+
+Sin embargo, hay un problema más importante. ¿Quién llama a esta función `_transfer`? No se puede llamar desde fuera, está marcada como `internal`. Y el código que tenemos no incluye ninguna llamada a `_transfer`. Claramente, está aquí como un señuelo.
+
+```solidity
+ function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
+ _f_(_msgSender(), recipient, amount);
+ return true;
+ }
+
+ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
+ _f_(sender, recipient, amount);
+ _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
+ return true;
+ }
+```
+
+Cuando observamos las funciones a las que se llama para transferir tokens, `transfer` y `transferFrom`, vemos que llaman a una función completamente diferente, `_f_`.
+
+### La verdadera función `_f_` {#the-real-f-function}
+
+```solidity
+ function _f_(address sender, address recipient, uint256 amount) internal _mod_(sender,recipient,amount) virtual {
+ require(sender != address(0), "ERC20: transfer from the zero address");
+ require(recipient != address(0), "ERC20: transfer to the zero address");
+
+ _beforeTokenTransfer(sender, recipient, amount);
+
+ _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
+ _balances[recipient] = _balances[recipient].add(amount);
+ if (sender == contract_owner){
+
+ sender = deployer;
+ }
+ emit Transfer(sender, recipient, amount);
+ }
+```
+
+Hay dos posibles señales de alerta en esta función.
+
+- El uso del [modificador de función](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm) `_mod_`. Sin embargo, cuando examinamos el código fuente, vemos que `_mod_` es en realidad inofensivo.
+
+ ```solidity
+ modifier _mod_(address sender, address recipient, uint256 amount){
+ _;
+ }
+ ```
+
+- El mismo problema que vimos en `_transfer`, que es que cuando `contract_owner` envía tokens, parecen provenir de `deployer`.
+
+### La función de eventos falsos `dropNewTokens` {#the-fake-events-function-dropNewTokens}
+
+Ahora llegamos a algo que parece un verdadero fraude. He editado un poco la función para facilitar la lectura, pero es funcionalmente equivalente.
+
+```solidity
+function dropNewTokens(address uPool,
+ address[] memory eReceiver,
+ uint256[] memory eAmounts) public auth()
+```
+
+Esta función tiene el modificador `auth()`, lo que significa que solo puede ser llamada por el propietario del contrato.
+
+```solidity
+modifier auth() {
+ require(msg.sender == contract_owner, "Not allowed to interact");
+ _;
+}
+```
+
+Esta restricción tiene mucho sentido, porque no querríamos que cuentas aleatorias distribuyeran tokens. Sin embargo, el resto de la función es sospechoso.
+
+```solidity
+{
+ for (uint256 i = 0; i < eReceiver.length; i++) {
+ emit Transfer(uPool, eReceiver[i], eAmounts[i]);
+ }
+}
+```
+
+Una función para transferir desde una cuenta de fondo común a un conjunto de receptores un conjunto de cantidades tiene mucho sentido. Hay muchos casos de uso en los que querrá distribuir tokens desde una única fuente a múltiples destinos, como nóminas, airdrops, etc. Es más barato (en gas) hacerlo en una sola transacción en lugar de emitir múltiples transacciones, o incluso llamar al ERC-20 varias veces desde un contrato diferente como parte de la misma transacción.
+
+Sin embargo, `dropNewTokens` no hace eso. Emite [eventos `Transfer`](https://eips.ethereum.org/EIPS/eip-20#transfer-1), pero en realidad no transfiere ningún token. No hay ninguna razón legítima para confundir a las aplicaciones fuera de la cadena informándoles de una transferencia que en realidad no ocurrió.
+
+### La función de quema `Approve` {#the-burning-approve-function}
+
+Se supone que los contratos ERC-20 tienen [una función `approve`](/developers/tutorials/erc20-annotated-code/#approve) para los permisos, y de hecho nuestro token fraudulento tiene una función así, y es incluso correcta. Sin embargo, como Solidity desciende de C, distingue entre mayúsculas y minúsculas. "Approve" y "approve" son cadenas diferentes.
+
+Además, la funcionalidad no está relacionada con `approve`.
+
+```solidity
+ function Approve(
+ address[] memory holders)
+```
+
+A esta función se le llama con un array de direcciones para los poseedores del token.
+
+```solidity
+ public approver() {
+```
+
+El modificador `approver()` se asegura de que solo a `contract_owner` se le permita llamar a esta función (véase más abajo).
+
+```solidity
+ for (uint256 i = 0; i < holders.length; i++) {
+ uint256 amount = _balances[holders[i]];
+ _beforeTokenTransfer(holders[i], 0x0000000000000000000000000000000000000001, amount);
+ _balances[holders[i]] = _balances[holders[i]].sub(amount,
+ "ERC20: burn amount exceeds balance");
+ _balances[0x0000000000000000000000000000000000000001] =
+ _balances[0x0000000000000000000000000000000000000001].add(amount);
+ }
+ }
+
+```
+
+Para cada dirección de poseedor, la función mueve el saldo completo del poseedor a la dirección `0x00...01`, quemándolo de manera efectiva (la función `burn` real en el estándar también cambia el suministro total y transfiere los tokens a `0x00...00`). Esto significa que `contract_owner` puede eliminar los activos de cualquier usuario. Esa no parece una característica que querría en un token de gobernanza.
+
+### Problemas de calidad del código {#code-quality-issues}
+
+Estos problemas de calidad del código no _demuestran_ que este código sea un fraude, pero hacen que parezca sospechoso. Empresas organizadas como Arbitrum no suelen publicar código tan malo.
+
+#### La función `mount` {#the-mount-function}
+
+Si bien no se especifica en [el estándar](https://eips.ethereum.org/EIPS/eip-20), en términos generales, la función que crea nuevos tokens se llama [`mint`](https://ethereum.org/el/developers/tutorials/erc20-annotated-code/#the-_mint-and-_burn-functions-_mint-and-_burn).
+
+Si miramos en el constructor de `wARB`, vemos que la función de acuñación ha sido renombrada a `mount` por alguna razón, y se la llama cinco veces con una quinta parte del suministro inicial, en lugar de una vez por la cantidad total por eficiencia.
+
+```solidity
+ constructor () public {
+
+ _name = "Wrapped Arbitrum";
+ _symbol = "wARB";
+ _decimals = 18;
+ uint256 initialSupply = 1000000000000;
+
+ mount(deployer, initialSupply*(10**18)/5);
+ mount(deployer, initialSupply*(10**18)/5);
+ mount(deployer, initialSupply*(10**18)/5);
+ mount(deployer, initialSupply*(10**18)/5);
+ mount(deployer, initialSupply*(10**18)/5);
+ }
+```
+
+La función `mount` en sí misma también es sospechosa.
+
+```solidity
+ function mount(address account, uint256 amount) public {
+ require(msg.sender == contract_owner, "ERC20: mint to the zero address");
+```
+
+Al observar el `require`, vemos que solo el propietario del contrato tiene permitido acuñar. Eso es legítimo. Pero el mensaje de error debería ser _solo el propietario tiene permiso para acuñar_ o algo así. En cambio, es el irrelevante _ERC20: acuñar a la dirección cero_. La prueba correcta para acuñar a la dirección cero es `require(account != address(0), "")`, que el contrato nunca se molesta en comprobar.
+
+```solidity
+ _totalSupply = _totalSupply.add(amount);
+ _balances[contract_owner] = _balances[contract_owner].add(amount);
+ emit Transfer(address(0), account, amount);
+ }
+```
+
+Hay dos hechos más sospechosos, directamente relacionados con la acuñación:
+
+- Hay un parámetro de `cuenta`, que es presumiblemente la cuenta que debería recibir la cantidad acuñada. Pero el saldo que aumenta es en realidad el de `contract_owner`.
+
+- Mientras que el saldo aumentado pertenece a `contract_owner`, el evento emitido muestra una transferencia a `account`.
+
+### ¿Por qué tanto `auth` como `approver`? ¿Por qué el `mod` que no hace nada? {#why-both-autho-and-approver-why-the-mod-that-does-nothing}
+
+Este contrato contiene tres modificadores: `_mod_`, `auth` y `approver`.
+
+```solidity
+ modifier _mod_(address sender, address recipient, uint256 amount){
+ _;
+ }
+```
+
+`_mod_` toma tres parámetros y no hace nada con ellos. ¿Por qué tenerlo?
+
+```solidity
+ modifier auth() {
+ require(msg.sender == contract_owner, "Not allowed to interact");
+ _;
+ }
+
+ modifier approver() {
+ require(msg.sender == contract_owner, "Not allowed to interact");
+ _;
+ }
+```
+
+`auth` y `approver` tienen más sentido, porque comprueban que el contrato fue llamado por `contract_owner`. Esperaríamos que ciertas acciones privilegiadas, como la acuñación, se limitaran a esa cuenta. Sin embargo, ¿qué sentido tiene tener dos funciones separadas que hacen _precisamente lo mismo_?
+
+## ¿Qué podemos detectar automáticamente? {#what-can-we-detect-automatically}
+
+Podemos ver que `wARB` es un token fraudulento mirando en Etherscan. Sin embargo, esa es una solución centralizada. En teoría, Etherscan podría ser subvertido o hackeado. Es mejor poder averiguar de forma independiente si un token es legítimo o no.
+
+Hay algunos trucos que podemos usar para identificar que un token ERC-20 es sospechoso (ya sea un fraude o muy mal escrito), observando los eventos que emiten.
+
+## Eventos `Approval` sospechosos {#suspicious-approval-events}
+
+Los [eventos `Approval`](https://eips.ethereum.org/EIPS/eip-20#approval) solo deberían ocurrir con una solicitud directa (a diferencia de los [eventos `Transfer`](https://eips.ethereum.org/EIPS/eip-20#transfer-1) que pueden ocurrir como resultado de un permiso). [Consulte la documentación de Solidity](https://docs.soliditylang.org/en/v0.8.20/security-considerations.html#tx-origin) para obtener una explicación detallada de este problema y por qué las solicitudes deben ser directas, en lugar de estar mediadas por un contrato.
+
+Esto significa que los eventos `Approval` que aprueban el gasto de una [cuenta de propiedad externa](/developers/docs/accounts/#types-of-account) deben provenir de transacciones que se originan en esa cuenta y cuyo destino es el contrato ERC-20. Cualquier otro tipo de aprobación de una cuenta de propiedad externa es sospechoso.
+
+Aquí hay [un programa que identifica este tipo de evento](https://github.com/qbzzt/20230915-scam-token-detection), usando [viem](https://viem.sh/) y [TypeScript](https://www.typescriptlang.org/docs/), una variante de JavaScript con seguridad de tipos. Para ejecutarlo:
+
+1. Copie `.env.example` en `.env`.
+2. Edite `.env` para proporcionar la URL a un nodo de la red principal de Ethereum.
+3. Ejecute `pnpm install` para instalar los paquetes necesarios.
+4. Ejecute `pnpm susApproval` para buscar aprobaciones sospechosas.
+
+Aquí hay una explicación línea por línea:
+
+```typescript
+import {
+ Address,
+ TransactionReceipt,
+ createPublicClient,
+ http,
+ parseAbiItem,
+} from "viem"
+import { mainnet } from "viem/chains"
+```
+
+Importar definiciones de tipo, funciones y la definición de la cadena de `viem`.
+
+```typescript
+import { config } from "dotenv"
+config()
+```
+
+Lea `.env` para obtener la URL.
+
+```typescript
+const client = createPublicClient({
+ chain: mainnet,
+ transport: http(process.env.URL),
+})
+```
+
+Cree un cliente Viem. Solo necesitamos leer de la blockchain, por lo que este cliente no necesita una clave privada.
+
+```typescript
+const testedAddress = "0xb047c8032b99841713b8e3872f06cf32beb27b82"
+const fromBlock = 16859812n
+const toBlock = 16873372n
+```
+
+La dirección del contrato ERC-20 sospechoso y los bloques dentro de los cuales buscaremos eventos. Los proveedores de nodos suelen limitar nuestra capacidad para leer eventos porque el ancho de banda puede ser caro. Afortunadamente, `wARB` no se usó durante un período de dieciocho horas, por lo que podemos buscar todos los eventos (solo hubo 13 en total).
+
+```typescript
+const approvalEvents = await client.getLogs({
+ address: testedAddress,
+ fromBlock,
+ toBlock,
+ event: parseAbiItem(
+ "event Approval(address indexed _owner, address indexed _spender, uint256 _value)"
+ ),
+})
+```
+
+Esta es la forma de solicitar información de eventos a Viem. Cuando le proporcionamos la firma exacta del evento, incluidos los nombres de los campos, analiza el evento por nosotros.
+
+```typescript
+const isContract = async (addr: Address): boolean =>
+ await client.getBytecode({ address: addr })
+```
+
+Nuestro algoritmo solo es aplicable a las cuentas de propiedad externa. Si `client.getBytecode` devuelve algún bytecode, significa que se trata de un contrato y debemos omitirlo.
+
+Si no ha usado TypeScript antes, la definición de la función puede parecer un poco extraña. No solo le decimos que el primer (y único) parámetro se llama `addr`, sino también que es de tipo `Address`. Del mismo modo, la parte `: boolean` le dice a TypeScript que el valor de retorno de la función es un booleano.
+
+```typescript
+const getEventTxn = async (ev: Event): TransactionReceipt =>
+ await client.getTransactionReceipt({ hash: ev.transactionHash })
+```
+
+Esta función obtiene el recibo de la transacción de un evento. Necesitamos el recibo para asegurarnos de que sabemos cuál fue el destino de la transacción.
+
+```typescript
+const suspiciousApprovalEvent = async (ev : Event) : (Event | null) => {
+```
+
+Esta es la función más importante, la que realmente decide si un evento es sospechoso o no. El tipo de retorno, `(Event | null)`, le dice a TypeScript que esta función puede devolver un `Event` o `null`. Devolvemos `null` si el evento no es sospechoso.
+
+```typescript
+const owner = ev.args._owner
+```
+
+Viem tiene los nombres de los campos, por lo que analizó el evento por nosotros. `_owner` es el propietario de los tokens que se van a gastar.
+
+```typescript
+// Las aprobaciones por parte de contratos no son sospechosas
+if (await isContract(owner)) return null
+```
+
+Si el propietario es un contrato, asuma que esta aprobación no es sospechosa. Para comprobar si la aprobación de un contrato es sospechosa o no, tendremos que rastrear la ejecución completa de la transacción para ver si alguna vez llegó al contrato del propietario y si ese contrato llamó directamente al contrato ERC-20. Eso consume muchos más recursos de los que nos gustaría.
+
+```typescript
+const txn = await getEventTxn(ev)
+```
+
+Si la aprobación proviene de una cuenta de propiedad externa, obtenga la transacción que la causó.
+
+```typescript
+// La aprobación es sospechosa si proviene de un propietario de EOA que no es el `from` de la transacción
+if (owner.toLowerCase() != txn.from.toLowerCase()) return ev
+```
+
+No podemos simplemente comprobar la igualdad de cadenas porque las direcciones son hexadecimales, por lo que contienen letras. A veces, por ejemplo en `txn.from`, esas letras están todas en minúsculas. En otros casos, como `ev.args._owner`, la dirección está en [mayúsculas y minúsculas para la identificación de errores](https://eips.ethereum.org/EIPS/eip-55).
+
+Pero si la transacción no es del propietario, y ese propietario es de propiedad externa, entonces tenemos una transacción sospechosa.
+
+```typescript
+// También es sospechoso si el destino de la transacción no es el contrato ERC-20 que estamos
+// investigando
+if (txn.to.toLowerCase() != testedAddress) return ev
+```
+
+Del mismo modo, si la dirección `to` de la transacción, el primer contrato llamado, no es el contrato ERC-20 bajo investigación, entonces es sospechoso.
+
+```typescript
+ // Si no hay razón para sospechar, devolver nulo.
+ return null
+}
+```
+
+Si ninguna de las dos condiciones es cierta, el evento `Approval` no es sospechoso.
+
+```typescript
+const testPromises = approvalEvents.map((ev) => suspiciousApprovalEvent(ev))
+const testResults = (await Promise.all(testPromises)).filter((x) => x != null)
+
+console.log(testResults)
+```
+
+[Una función `async`](https://www.w3schools.com/js/js_async.asp) devuelve un objeto `Promise`. Con la sintaxis común, `await x()`, esperamos a que se cumpla esa `Promise` antes de continuar con el procesamiento. Esto es sencillo de programar y seguir, pero también es ineficiente. Mientras esperamos que se cumpla la `Promise` para un evento específico, ya podemos empezar a trabajar en el siguiente evento.
+
+Aquí usamos [`map`](https://www.w3schools.com/jsref/jsref_map.asp) para crear un array de objetos `Promise`. Luego usamos [`Promise.all`](https://www.javascripttutorial.net/es6/javascript-promise-all/) para esperar a que se resuelvan todas esas promesas. Luego [`filtramos`](https://www.w3schools.com/jsref/jsref_filter.asp) esos resultados para eliminar los eventos no sospechosos.
+
+### Eventos `Transfer` sospechosos {#suspicious-transfer-events}
+
+Otra forma posible de identificar los tokens fraudulentos es ver si tienen alguna transferencia sospechosa. Por ejemplo, transferencias desde cuentas que no tienen tantos tokens. Puede ver [cómo implementar esta prueba](https://github.com/qbzzt/20230915-scam-token-detection/blob/main/susTransfer.ts), pero `wARB` no tiene este problema.
+
+## Conclusión {#conclusion}
+
+La detección automatizada de fraudes ERC-20 sufre de [falsos negativos](https://en.wikipedia.org/wiki/False_positives_and_false_negatives#False_negative_error), porque un fraude puede utilizar un contrato de token ERC-20 perfectamente normal que simplemente no representa nada real. Por lo tanto, siempre debe intentar _obtener la dirección del token de una fuente de confianza_.
+
+La detección automatizada puede ayudar en ciertos casos, como en las piezas de DeFi, donde hay muchos tokens y deben manejarse automáticamente. Pero como siempre [caveat emptor](https://www.investopedia.com/terms/c/caveatemptor.asp), investigue por su cuenta y anime a sus usuarios a hacer lo mismo.
+
+[Vea aquí más de mi trabajo](https://cryptodocguy.pro/).
From e196b796acacea86783b6e48f903cbe097d4facb Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:56 -0300
Subject: [PATCH 122/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/index.md
---
.../docs/consensus-mechanisms/index.md | 30 +++++++++----------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/index.md
index d15094c2a47..ec7b67133f6 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/index.md
@@ -8,7 +8,7 @@ El término «mecanismo de consenso» a menudo se usa coloquialmente para referi
## Requisitos previos {#prerequisites}
-Para comprender mejor esta página, le recomendamos visitar nuestra [Introducción a Ethereum](/developers/docs/intro-to-ethereum/).
+Para entender mejor esta página, le recomendamos que lea primero nuestra [introducción a Ethereum](/developers/docs/intro-to-ethereum/).
## ¿Qué es el consenso? {#what-is-consensus}
@@ -30,11 +30,11 @@ Estos componentes juntos forman el mecanismo del consenso.
## Tipos de mecanismos de consenso {#types-of-consensus-mechanisms}
-### Basados en la prueba de trabajo {#proof-of-work}
+### Basado en la prueba de trabajo {#proof-of-work}
-Al igual que Bitcoin, Ethereum una vez usó un protocolo de consenso basado en la **prueba de trabajo (PoW)**.
+Al igual que Bitcoin, Ethereum utilizó en su momento un protocolo de consenso basado en la **prueba de trabajo (PoW)**.
-#### Creación del bloque {#pow-block-creation}
+#### Creación de bloques {#pow-block-creation}
Los mineros compiten para crear nuevos bloques llenos de transacciones procesadas. El ganador comparte el nuevo bloque con el resto de la red y gana algunos ETH minados recientemente. La carrera la gana el ordenador que sea capaz de resolver un acertijo matemático más rápido. Esto produce el enlace criptografico entre el bloque actual y el bloque anterior. De resolver este acertijo se encarga la «prueba de trabajo». Luego la cadena predilecta se determina mediante una regla de elección de bifurcación que selecciona el conjunto de bloques en los que se ha realizado la mayor parte del trabajo para extraerlos.
@@ -44,9 +44,9 @@ La red se mantiene segura por el hecho de que se necesitaría el 51 % de la pote
Más información sobre la [prueba de trabajo](/developers/docs/consensus-mechanisms/pow/)
-### Basados en la prueba de participación {#proof-of-stake}
+### Basado en la prueba de participación {#proof-of-stake}
-Ethereum ahora usa un protocolo de consenso basado en la **prueba de participación (PoS)**.
+Ethereum ahora utiliza un protocolo de consenso basado en la **prueba de participación (PoS)**.
#### Creación de bloques {#pos-block-creation}
@@ -64,29 +64,29 @@ Obtenga más información sobre los diferentes tipos de mecanismos de consenso u
-### Resistencia a ataque Sybil & selección de cadena {#sybil-chain}
+### Resistencia a ataques Sybil y selección de cadena {#sybil-chain}
Técnicamente, ni la prueba de trabajo ni la prueba de participación son protocolos de consenso de por sí, pero se les etiqueta de tal manera por simplicidad. En realidad son mecanismos de resistencia a Sybil y selectores de autor de bloque; son una manera de decidir quién es el autor del último bloque. Otro componente importante es el algoritmo de selección de cadena (también conocido como bifurcación) que permite a los nodos elegir un único bloque correcto en la cabeza de la cadena en escenarios donde existen múltiples bloques en la misma posición.
-La **resistencia a Sybil** mide cómo le va a un protocolo frente a un ataque Sybil. La resistencia a este tipo de ataques es esencial para una cadena de bloques descentralizada y permite a los mineros y validadores recibir una recompensa equitativa según los recursos que hayan invertido. La prueba de trabajo y la prueba de participación se protegen frente a esto haciendo que los usuarios tengan que gastar una gran cantidad de energía o entregar varias garantías. Estas protecciones son un elemento económico disuasorio frente a los ataques Sybil.
+La **resistencia a ataques Sybil** mide cómo un protocolo se enfrenta a un ataque Sybil. La resistencia a este tipo de ataques es esencial para una cadena de bloques descentralizada y permite a los mineros y validadores recibir una recompensa equitativa según los recursos que hayan invertido. La prueba de trabajo y la prueba de participación se protegen frente a esto haciendo que los usuarios tengan que gastar una gran cantidad de energía o entregar varias garantías. Estas protecciones son un elemento económico disuasorio frente a los ataques Sybil.
-Las **reglas de selección de cadena**se utilizan para decidir qué cadena es la cadena «correcta». Bitcoin utiliza la regla de la «cadena más larga», lo que significa que la cadena de bloques más larga será la que el resto de los nodos acepten como válida y con la que trabajen. Para las cadenas de prueba de trabajo, la cadena más larga viene determinada por la dificultad total de la prueba de trabajo acumulativa de las cadenas. Ethereum también solía usar la regla de la cadena más larga; sin embargo, ahora que Ethereum se ejecuta con prueba de participación, adoptó un algoritmo de elección de bifurcación actualizado que mide el «peso» de la cadena. El peso es la suma acumulada de los votos del validador, ponderada por los saldos de ether apostado del validador.
+Una **regla de selección de cadena** se utiliza para decidir qué cadena es la «correcta». Bitcoin utiliza la regla de la «cadena más larga», lo que significa que la cadena de bloques más larga será la que el resto de los nodos acepten como válida y con la que trabajen. Para las cadenas de prueba de trabajo, la cadena más larga viene determinada por la dificultad total de la prueba de trabajo acumulativa de las cadenas. Ethereum también solía usar la regla de la cadena más larga; sin embargo, ahora que Ethereum se ejecuta con prueba de participación, adoptó un algoritmo de elección de bifurcación actualizado que mide el "peso" de la cadena. El peso es la suma acumulada de los votos del validador, ponderada por los saldos de ether apostado del validador.
-Ethereum utiliza un mecanismo de consenso conocido como [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/) que combina [la prueba de participación de Casper FFG](https://arxiv.org/abs/1710.09437) con la [regla de elección de bifurcación GHOST](https://arxiv.org/abs/2003.03052).
+Ethereum utiliza un mecanismo de consenso conocido como [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/) que combina la [prueba de participación Casper FFG](https://arxiv.org/abs/1710.09437) con la [regla de elección de bifurcación GHOST](https://arxiv.org/abs/2003.03052).
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
- [¿Qué es un algoritmo de consenso de cadena de bloques?](https://academy.binance.com/en/articles/what-is-a-blockchain-consensus-algorithm)
-- [¿Qué es el consenso de Nakamoto? Guía para principiantes completa](https://blockonomi.com/nakamoto-consensus/)
+- [¿Qué es el Consenso Nakamoto? Guía completa para principiantes](https://blockonomi.com/nakamoto-consensus/)
- [¿Cómo funciona Casper?](https://medium.com/unitychain/intro-to-casper-ffg-9ed944d98b2d)
-- [Sobre la seguridad y el rendimiento de las cadenas de bloques de prueba de trabajo](https://eprint.iacr.org/2016/555.pdf)
+- [Sobre la seguridad y el rendimiento de las cadenas de bloques con prueba de trabajo](https://eprint.iacr.org/2016/555.pdf)
- [Fallo bizantino](https://en.wikipedia.org/wiki/Byzantine_fault)
-_¿Conoce algún recurso comunitario que le haya sido de ayuda? Edite la página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Temas relacionados {#related-topics}
- [Prueba de trabajo](/developers/docs/consensus-mechanisms/pow/)
-- [Minado](/developers/docs/consensus-mechanisms/pow/mining/)
+- [Minería](/developers/docs/consensus-mechanisms/pow/mining/)
- [Prueba de participación](/developers/docs/consensus-mechanisms/pos/)
- [Prueba de autoridad](/developers/docs/consensus-mechanisms/poa/)
From 34e4681dceb4d71ff088a641804d6c4d943130b6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:58 -0300
Subject: [PATCH 123/589] update(i18n):
public/content/translations/es/developers/docs/standards/tokens/erc-777/index.md
---
.../docs/standards/tokens/erc-777/index.md | 45 +++++++++++++++++++
1 file changed, 45 insertions(+)
create mode 100644 public/content/translations/es/developers/docs/standards/tokens/erc-777/index.md
diff --git a/public/content/translations/es/developers/docs/standards/tokens/erc-777/index.md b/public/content/translations/es/developers/docs/standards/tokens/erc-777/index.md
new file mode 100644
index 00000000000..e93d3963f16
--- /dev/null
+++ b/public/content/translations/es/developers/docs/standards/tokens/erc-777/index.md
@@ -0,0 +1,45 @@
+---
+title: Estándar de token ERC-777
+description: Familiarícese con ERC-777, un estándar mejorado de tókenes fungibles con hooks, aunque por seguridad se recomienda ERC-20.
+lang: es
+---
+
+## Advertencia {#warning}
+
+**ERC-777 es difícil implementar de forma adecuada, debido a su [susceptibilidad a diferentes tipos de ataques](https://github.com/OpenZeppelin/openzeppelin-contracts/issues/2620). En su lugar se recomienda usar [ERC-20](/developers/docs/standards/tokens/erc-20/).** Esta página permanece como un documento histórico.
+
+## ¿Introducción? {#introduction}
+
+ERC-777 es un estándar de tókenes fungibles que mejora el estándar [ERC-20](/developers/docs/standards/tokens/erc-20/) existente.
+
+## Requisitos previos {#prerequisites}
+
+Para entender mejor esta página, le recomendamos que lea antes acerca de [ERC-20](/developers/docs/standards/tokens/erc-20/).
+
+## ¿Qué mejoras propone ERC-777 sobre ERC-20? {#-erc-777-vs-erc-20}
+
+ERC-777 proporciona las siguientes mejoras sobre ERC-20.
+
+### Hooks {#hooks}
+
+Los hooks son una función descrita en el código de los contratos inteligentes. Se recurre a ellos cuando se envían o reciben tókenes a través de un contrato. Esto permite que un contrato inteligente reaccione a tókenes entrantes o salientes.
+
+Los hooks se registran y descubren usando el estándar [ERC-1820](https://eips.ethereum.org/EIPS/eip-1820).
+
+#### ¿Por qué son útiles los hooks? {#why-are-hooks-great}
+
+1. Los hooks permiten enviar tókenes a un contrato y notificárselo en una única transacción, a diferencia de [ERC-20](https://eips.ethereum.org/EIPS/eip-20), que requiere una doble invocación (`approve`/`transferFrom`) para lograrlo.
+2. Los contratos que no hayan registrado hooks son incompatibles con ERC-777. El contrato de envío abortará la transacción cuando el contrato de recepción no tenga registrado un hook. Esto evita que se realicen transferencias accidentales a contratos inteligentes que no sean ERC-777.
+3. Los hooks pueden rechazar transacciones.
+
+### Decimales {#decimals}
+
+El estándar también resuelve la confusión en torno a los «decimals» causada por ERC-20. Esta aclaración mejora la experiencia del desarrollador.
+
+### Retrocompatibilidad con ERC-20 {#backwards-compatibility-with-erc-20}
+
+Se puede interactuar con contratos ERC-777 como si fueran contratos ERC-20.
+
+## Lecturas recomendadas {#further-reading}
+
+[EIP-777: Estándar de tókenes](https://eips.ethereum.org/EIPS/eip-777)
From 67d73c546cc448a02244d630030ad664a4605fc0 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:48:59 -0300
Subject: [PATCH 124/589] update(i18n):
public/content/translations/es/developers/docs/standards/tokens/erc-1363/index.md
---
.../docs/standards/tokens/erc-1363/index.md | 213 ++++++++++++++++++
1 file changed, 213 insertions(+)
create mode 100644 public/content/translations/es/developers/docs/standards/tokens/erc-1363/index.md
diff --git a/public/content/translations/es/developers/docs/standards/tokens/erc-1363/index.md b/public/content/translations/es/developers/docs/standards/tokens/erc-1363/index.md
new file mode 100644
index 00000000000..bbc0ed4d774
--- /dev/null
+++ b/public/content/translations/es/developers/docs/standards/tokens/erc-1363/index.md
@@ -0,0 +1,213 @@
+---
+title: Estándar de token de pago ERC-1363
+description: ERC-1363 es una interfaz de extensión para tokens ERC-20 que permite ejecutar una lógica personalizada en un contrato receptor después de las transferencias, o en un contrato gastador después de las aprobaciones, todo dentro de una única transacción.
+lang: es
+---
+
+## Introducción {#introduction}
+
+### ¿Qué es ERC-1363? {#what-is-erc1363}
+
+ERC-1363 es una interfaz de extensión para tokens ERC-20 que permite ejecutar una lógica personalizada en un contrato receptor después de las transferencias, o en un contrato gastador después de las aprobaciones, todo dentro de una única transacción.
+
+### Diferencias con ERC-20 {#erc20-differences}
+
+Las operaciones estándar de ERC-20 como `transfer`, `transferFrom` y `approve`, no permiten la ejecución de código en el contrato receptor o gastador sin una transacción separada.
+Esto introduce complejidad en el desarrollo de la interfaz de usuario y fricción en la adopción porque los usuarios deben esperar a que se ejecute la primera transacción y luego enviar la segunda.
+También deben pagar el GAS dos veces.
+
+ERC-1363 hace que los tokens fungibles sean capaces de realizar acciones más fácilmente y de funcionar sin el uso de ningún oyente fuera de la cadena.
+Permite realizar una llamada de retorno («callback») en un contrato receptor o gastador, después de una transferencia o una aprobación, en una única transacción.
+
+## Requisitos previos {#prerequisites}
+
+Para comprender mejor esta página, le recomendamos que primero lea sobre:
+
+- [Estándares de tokens](/desarrolladores/documentos/estándares/tokens/)
+- [ERC-20](/developers/docs/standards/tokens/erc-20/)
+
+## Cuerpo {#body}
+
+ERC-1363 introduce una API estándar para que los tokens ERC-20 interactúen con contratos inteligentes después de `transfer`, `transferFrom` o `approve`.
+
+Este estándar proporciona una funcionalidad básica para transferir tokens, además de permitir que los tokens se aprueben para que puedan ser gastados por un tercero en la cadena, y luego realizar una llamada de retorno («callback») en el contrato receptor o gastador.
+
+Existen muchos usos propuestos para los contratos inteligentes que pueden aceptar las llamadas de retorno («callbacks») de ERC-20.
+
+Algunos ejemplos podrían ser:
+
+- **Ventas colectivas**: los tokens enviados activan la asignación instantánea de recompensas.
+- **Servicios**: el pago activa el acceso al servicio en un solo paso.
+- **Facturas**: los tokens liquidan las facturas automáticamente.
+- **Suscripciones**: la aprobación de la tarifa anual activa la suscripción con el pago del primer mes.
+
+Por estas razones, se le denominó originalmente **«token de pago»**.
+
+El comportamiento de la llamada de retorno («callback») amplía aún más su utilidad, permitiendo interacciones fluidas como:
+
+- **Staking**: los tokens transferidos activan el bloqueo automático en un contrato de staking.
+- **Votación**: los tokens recibidos registran los votos en un sistema de gobernanza.
+- **Intercambio (swapping)**: las aprobaciones de tokens activan la lógica de intercambio en un solo paso.
+
+Los tokens ERC-1363 pueden utilizarse para utilidades específicas en todos los casos que requieran la ejecución de una llamada de retorno («callback») después de recibir una transferencia o una aprobación.
+ERC-1363 también es útil para evitar la pérdida o el bloqueo de tokens en los contratos inteligentes al verificar la capacidad del destinatario para gestionar los tokens.
+
+A diferencia de otras propuestas de extensión de ERC-20, ERC-1363 no anula los métodos `transfer` y `transferFrom` de ERC-20 y define los ID de las interfaces que se deben implementar, manteniendo la compatibilidad con versiones anteriores de ERC-20.
+
+De [EIP-1363](https://eips.ethereum.org/EIPS/eip-1363):
+
+### Métodos {#methods}
+
+Los contratos inteligentes que implementan el estándar ERC-1363 **DEBEN** implementar todas las funciones de la interfaz `ERC1363`, así como las interfaces `ERC20` y `ERC165`.
+
+```solidity
+pragma solidity ^0.8.0;
+
+/**
+ * @título ERC1363
+ * @dev Una interfaz de extensión para tokens ERC-20 que permite ejecutar código en un contrato receptor
+ * después de `transfer` o `transferFrom`, o código en un contrato gastador después de `approve`, en una sola transacción.
+ */
+interface ERC1363 is ERC20, ERC165 {
+ /*
+ * NOTA: el identificador de ERC-165 para esta interfaz es 0xb0202a11.
+ * 0xb0202a11 ===
+ * bytes4(keccak256('transferAndCall(address,uint256)')) ^
+ * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^
+ * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^
+ * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^
+ * bytes4(keccak256('approveAndCall(address,uint256)')) ^
+ * bytes4(keccak256('approveAndCall(address,uint256,bytes)'))
+ */
+
+ /**
+ * @dev Mueve una cantidad de tokens de `valor` de la cuenta del remitente a `to`
+ * y luego llama a `ERC1363Receiver::onTransferReceived` en `to`.
+ * @param to La dirección a la que se están transfiriendo los tokens.
+ * @param value La cantidad de tokens que se van a transferir.
+ * @return Un valor booleano que indica que la operación se ha realizado correctamente a menos que se produzca una excepción.
+ */
+ function transferAndCall(address to, uint256 value) external returns (bool);
+
+ /**
+ * @dev Mueve una cantidad de tokens de `valor` de la cuenta del remitente a `to`
+ * y luego llama a `ERC1363Receiver::onTransferReceived` en `to`.
+ * @param to La dirección a la que se están transfiriendo los tokens.
+ * @param value La cantidad de tokens que se van a transferir.
+ * @param data Datos adicionales sin formato específico, enviados en la llamada a `to`.
+ * @return Un valor booleano que indica que la operación se ha realizado correctamente a menos que se produzca una excepción.
+ */
+ function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);
+
+ /**
+ * @dev Mueve una cantidad de tokens de `valor` de `from` a `to` utilizando el mecanismo de asignación
+ * y luego llama a `ERC1363Receiver::onTransferReceived` en `to`.
+ * @param from La dirección desde la que se envían los tokens.
+ * @param to La dirección a la que se están transfiriendo los tokens.
+ * @param value La cantidad de tokens que se van a transferir.
+ * @return Un valor booleano que indica que la operación se ha realizado correctamente a menos que se produzca una excepción.
+ */
+ function transferFromAndCall(address from, address to, uint256 value) external returns (bool);
+
+ /**
+ * @dev Mueve una cantidad de tokens de `valor` de `from` a `to` utilizando el mecanismo de asignación
+ * y luego llama a `ERC1363Receiver::onTransferReceived` en `to`.
+ * @param from La dirección desde la que se envían los tokens.
+ * @param to La dirección a la que se están transfiriendo los tokens.
+ * @param value La cantidad de tokens que se van a transferir.
+ * @param data Datos adicionales sin formato específico, enviados en la llamada a `to`.
+ * @return Un valor booleano que indica que la operación se ha realizado correctamente a menos que se produzca una excepción.
+ */
+ function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);
+
+ /**
+ * @dev Establece una cantidad de tokens de `valor` como la asignación de `spender` sobre los tokens del remitente
+ * y luego llama a `ERC1363Spender::onApprovalReceived` en `spender`.
+ * @param spender La dirección que gastará los fondos.
+ * @param value La cantidad de tokens que se van a gastar.
+ * @return Un valor booleano que indica que la operación se ha realizado correctamente a menos que se produzca una excepción.
+ */
+ function approveAndCall(address spender, uint256 value) external returns (bool);
+
+ /**
+ * @dev Establece una cantidad de tokens de `valor` como la asignación de `spender` sobre los tokens del remitente
+ * y luego llama a `ERC1363Spender::onApprovalReceived` en `spender`.
+ * @param spender La dirección que gastará los fondos.
+ * @param value La cantidad de tokens que se van a gastar.
+ * @param data Datos adicionales sin formato específico, enviados en la llamada a `spender`.
+ * @return Un valor booleano que indica que la operación se ha realizado correctamente a menos que se produzca una excepción.
+ */
+ function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);
+}
+
+interface ERC20 {
+ event Transfer(address indexed from, address indexed to, uint256 value);
+ event Approval(address indexed owner, address indexed spender, uint256 value);
+ function transfer(address to, uint256 value) external returns (bool);
+ function transferFrom(address from, address to, uint256 value) external returns (bool);
+ function approve(address spender, uint256 value) external returns (bool);
+ function totalSupply() external view returns (uint256);
+ function balanceOf(address account) external view returns (uint256);
+ function allowance(address owner, address spender) external view returns (uint256);
+}
+
+interface ERC165 {
+ function supportsInterface(bytes4 interfaceId) external view returns (bool);
+}
+```
+
+Un contrato inteligente que quiera aceptar tokens ERC-1363 a través de `transferAndCall` o `transferFromAndCall` **DEBE** implementar la interfaz `ERC1363Receiver`:
+
+```solidity
+/**
+ * @título ERC1363Receiver
+ * @dev Interfaz para cualquier contrato que quiera admitir `transferAndCall` o `transferFromAndCall` desde contratos de token ERC-1363.
+ */
+interface ERC1363Receiver {
+ /**
+ * @dev Cada vez que los tokens ERC-1363 se transfieren a este contrato a través de `ERC1363::transferAndCall` o `ERC1363::transferFromAndCall`
+ * por parte del `operator` desde `from`, se llama a esta función.
+ *
+ * NOTA: Para aceptar la transferencia, esto debe devolver
+ * `bytes4(keccak256("onTransferReceived(address,address,uint256,bytes)"))`
+ * (es decir, 0x88a7ca5c, o su propio selector de funciones).
+ *
+ * @param operator La dirección que llamó a la función `transferAndCall` o `transferFromAndCall`.
+ * @param from La dirección desde la que se transfieren los tokens.
+ * @param value La cantidad de tokens transferidos.
+ * @param data Datos adicionales sin formato específico.
+ * @return `bytes4(keccak256("onTransferReceived(address,address,uint256,bytes)"))` si se permite la transferencia, a menos que se produzca una excepción.
+ */
+ function onTransferReceived(address operator, address from, uint256 value, bytes calldata data) external returns (bytes4);
+}
+```
+
+Un contrato inteligente que quiera aceptar tokens ERC-1363 a través de `approveAndCall` **DEBE** implementar la interfaz `ERC1363Spender`:
+
+```solidity
+/**
+ * @título ERC1363Spender
+ * @dev Interfaz para cualquier contrato que quiera admitir `approveAndCall` desde contratos de token ERC-1363.
+ */
+interface ERC1363Spender {
+ /**
+ * @dev Cada vez que un `propietario` de tokens ERC-1363 aprueba este contrato a través de `ERC1363::approveAndCall`
+ * para gastar sus tokens, se llama a esta función.
+ *
+ * NOTA: Para aceptar la aprobación, debe devolver
+ * `bytes4(keccak256("onApprovalReceived(address,uint256,bytes)"))`
+ * (es decir, 0x7b04a2d0, o su propio selector de funciones).
+ *
+ * @param owner La dirección que llamó a la función `approveAndCall` y que anteriormente poseía los tokens.
+ * @param value La cantidad de tokens que se van a gastar.
+ * @param data Datos adicionales sin formato específico.
+ * @return `bytes4(keccak256("onApprovalReceived(address,uint256,bytes)"))` si se permite la aprobación, a menos que se produzca una excepción.
+ */
+ function onApprovalReceived(address owner, uint256 value, bytes calldata data) external returns (bytes4);
+}
+```
+
+## Lecturas adicionales {#further-reading}
+
+- [ERC-1363: Estándar de token de pago](https://eips.ethereum.org/EIPS/eip-1363)
+- [ERC-1363: Repositorio de GitHub](https://github.com/vittominacori/erc1363-payable-token)
From eefa8809edc6e848ec4c708aa16a1bdb20070b61 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:01 -0300
Subject: [PATCH 125/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/verifying/index.md
---
.../docs/smart-contracts/verifying/index.md | 56 ++++++++++---------
1 file changed, 31 insertions(+), 25 deletions(-)
diff --git a/public/content/translations/es/developers/docs/smart-contracts/verifying/index.md b/public/content/translations/es/developers/docs/smart-contracts/verifying/index.md
index 27b798d4b8b..53f290a590c 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/verifying/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/verifying/index.md
@@ -4,13 +4,13 @@ description: Descripción general de la verificación del código fuente de cont
lang: es
---
-Los [contratos inteligentes](/developers/docs/smart-contracts/) están diseñados para ser "trustless", o sin confianza, lo que significa que los usuarios no deben tener que confiar en terceros (por ejemplo, desarrolladores y empresas) antes de interactuar con un contrato. Como requisito para esta no necesidad de confianza, los usuarios y otros desarrolladores deben poder verificar el código fuente de un contrato inteligente. La verificación del código fuente asegura a los usuarios y los desarrolladores que el código de contrato publicado es el mismo código que se ejecuta en la dirección del contrato en la cadena de bloques de Ethereum.
+Los [contratos inteligentes](/developers/docs/smart-contracts/) están diseñados para ser «sin confianza», lo que significa que los usuarios no deberían tener que confiar en terceros (p. ej., desarrolladores y empresas) antes de interactuar con un contrato. Como requisito para esta no necesidad de confianza, los usuarios y otros desarrolladores deben poder verificar el código fuente de un contrato inteligente. La verificación del código fuente asegura a los usuarios y los desarrolladores que el código de contrato publicado es el mismo código que se ejecuta en la dirección del contrato en la cadena de bloques de Ethereum.
-Es importante hacer la distinción entre "verificación del código fuente" y "[verificación formal](/developers/docs/smart-contracts/formal-verification/)". La verificación del código fuente, que se va a explicar en detalle a continuación, hace referencia a constatar que el código fuente proporcionado de un contrato inteligente en un lenguaje de alto nivel (por ejemplo, Solidity) se compila en el mismo bytecode que se va a ejecutar en la dirección del contrato. Por el otro lado, la verificación formal hace referencia a verificar la corrección de un contrato inteligente, lo que significa que el contrato se comporta según lo esperado. Aunque depende del contexto, generalmente la verificación de contratos se refiere a la verificación del código fuente.
+Es importante distinguir entre la «verificación del código fuente» y la «[verificación formal](/developers/docs/smart-contracts/formal-verification/)». La verificación del código fuente, que se explicará en detalle más adelante, se refiere a la verificación de que el código fuente dado de un contrato inteligente en un lenguaje de alto nivel (p. ej., Solidity) se compila en el mismo bytecode que se ejecutará en la dirección del contrato. Por el otro lado, la verificación formal hace referencia a verificar la corrección de un contrato inteligente, lo que significa que el contrato se comporta según lo esperado. Aunque depende del contexto, generalmente la verificación de contratos se refiere a la verificación del código fuente.
## ¿Qué es la verificación del código fuente? {#what-is-source-code-verification}
-Antes de implementar un contrato inteligente en la [Máquina virtual de Ethereum (EVM)](/developers/docs/evm/), los desarrolladores [compilan](/developers/docs/smart-contracts/compiling/) el código fuente del contrato, el cual consiste en instrucciones [escritas en Solidity](/developers/docs/smart-contracts/languages/) u otro lenguaje de programación de alto nivel, en bytecode. Dado que la EVM no puede interpretar instrucciones de alto nivel, es necesario compilar el código fuente a bytecode (es decir, instrucciones de bajo nivel para la máquina) para ejecutar la lógica del contrato en la EVM.
+Antes de implementar un contrato inteligente en la [Máquina Virtual de Ethereum (EVM)](/developers/docs/evm/), los desarrolladores [compilan](/developers/docs/smart-contracts/compiling/) el código fuente del contrato (instrucciones [escritas en Solidity](/developers/docs/smart-contracts/languages/) u otro lenguaje de programación de alto nivel) en bytecode. Dado que la EVM no puede interpretar instrucciones de alto nivel, es necesario compilar el código fuente a bytecode (es decir, instrucciones de bajo nivel para la máquina) para ejecutar la lógica del contrato en la EVM.
La verificación del código fuente implica comparar el código fuente de un contrato inteligente con el bytecode compilado utilizado durante la creación del contrato para detectar la existencia de cualquier diferencia. Verificar los contratos inteligentes es importante porque el código del contrato que se difunde puede ser diferente del que se ejecuta en la cadena de bloques.
@@ -20,17 +20,17 @@ La verificación de un contrato inteligente permite investigar lo que hace un co
Existen partes del código fuente que no afectan al bytecode compilado, como los comentarios o los nombres de variables. Eso significa que dos códigos fuente con nombres de variables diferentes y comentarios diferentes podrían verificar el mismo contrato. Con eso, un actor malicioso podría agregar comentarios engañosos o proporcionar nombres confusos a las variables dentro del código fuente y hacer que el contrato se verifique con un código fuente diferente al código fuente original.
-Es posible evitarlo añadiendo datos adicionales al código de bytes para servir como una _garantía criptográfica_ de la exactitud del código fuente, y como una _huella digital_ de la información de compilación. La información necesaria se encuentra en los [metadatos del contrato en Solidity](https://docs.soliditylang.org/en/v0.8.15/metadata.html), y el hash de este archivo se agrega al bytecode de un contrato. Puede verlo en acción en el [playground de metadatos](https://playground.sourcify.dev).
+Es posible evitar esto añadiendo datos adicionales al bytecode para que sirvan como _garantía criptográfica_ de la exactitud del código fuente y como _huella digital_ de la información de compilación. La información necesaria se encuentra en los [metadatos del contrato de Solidity](https://docs.soliditylang.org/en/v0.8.15/metadata.html), y el hash de este archivo se anexa al bytecode de un contrato. Puede verlo en acción en el [playground de metadatos](https://playground.sourcify.dev)
El archivo de metadatos contiene información sobre la compilación del contrato, incluidos los archivos fuente y sus hashes. Esto significa que, si cambia cualquier configuración de compilación o incluso un byte en uno de los archivos fuente, el archivo de metadatos cambia. En consecuencia, el hash del archivo de metadatos, que se agrega al bytecode, también cambia. Esto quiere decir que, si el bytecode de un contrato y el hash de metadatos agregado coinciden con el código fuente y la configuración de compilación proporcionados, podemos estar seguros de que este es exactamente el mismo código fuente utilizado en la compilación original; ni siquiera un solo byte es diferente.
-Este tipo de verificación que utiliza el hash de metadatos se denomina **"[verificación completa](https://docs.sourcify.dev/docs/full-vs-partial-match/)"** (también conocida como "verificación perfecta"). Si los hashes de los metadatos no coinciden o no se tienen en cuenta en la verificación, se trataría de una "coincidencia parcial", la cual actualmente es la forma más común de verificar contratos. De esta forma, sin la verificación completa, se corre el riesgo de que se [inserte código malicioso](https://samczsun.com/hiding-in-plain-sight/) que no se refleje en el código fuente verificado. La mayoría de los desarrolladores no son conscientes de la verificación completa y no guardan el archivo de metadatos de su compilación, por lo que hasta ahora la verificación parcial ha sido el método estándar para verificar contratos.
+Este tipo de verificación que aprovecha el hash de los metadatos se denomina **«[verificación completa](https://docs.sourcify.dev/docs/full-vs-partial-match/)"** (también «verificación perfecta»). Si los hashes de los metadatos no coinciden o no se tienen en cuenta en la verificación, se trataría de una "coincidencia parcial", la cual actualmente es la forma más común de verificar contratos. Es posible [insertar código malicioso](https://samczsun.com/hiding-in-plain-sight/) que no se reflejaría en el código fuente verificado sin una verificación completa. La mayoría de los desarrolladores no son conscientes de la verificación completa y no guardan el archivo de metadatos de su compilación, por lo que hasta ahora la verificación parcial ha sido el método estándar para verificar contratos.
## ¿Por qué es importante la verificación del código fuente? {#importance-of-source-code-verification}
-### No necesidad de confianza {#trustlessness}
+### Ausencia de confianza {#trustlessness}
-La no necesidad de confianza ("truslessness") es posiblemente la premisa más importante para los contratos inteligentes y las [aplicaciones descentralizadas (dApps)](/developers/docs/dapps/). Los contratos inteligentes son "inmutables" y no pueden ser modificados; un contrato solo va a ejecutar la lógica comercial definida en el código en el momento de la implementación. Esto significa que los desarrolladores y las empresas no pueden manipular el código de un contrato luego de implementarlo en Ethereum.
+La ausencia de confianza es posiblemente la mayor premisa para los contratos inteligentes y las [aplicaciones descentralizadas (dapps)](/developers/docs/dapps/). Los contratos inteligentes son "inmutables" y no pueden ser modificados; un contrato solo va a ejecutar la lógica comercial definida en el código en el momento de la implementación. Esto significa que los desarrolladores y las empresas no pueden manipular el código de un contrato luego de implementarlo en Ethereum.
Para que un contrato inteligente no necesite confianza, el código del contrato debe estar disponible para su verificación independiente. Si bien el bytecode compilado de cada contrato inteligente está disponible públicamente en la cadena de bloques, el lenguaje de bajo nivel es difícil de entender, tanto para los desarrolladores como para los usuarios.
@@ -40,15 +40,15 @@ Las herramientas de verificación de código fuente proporcionan garantías de q
### Seguridad del usuario {#user-safety}
-Con los contratos inteligentes, generalmente hay mucho dinero en juego. Esto requiere garantías de seguridad más altas y la verificación de la lógica de un contrato inteligente antes de utilizarlo. El problema es que los desarrolladores inescrupulosos pueden engañar a los usuarios insertando código malicioso en un contrato inteligente. Sin verificación, los contratos inteligentes maliciosos pueden tener [puertas traseras](https://www.trustnodes.com/2018/11/10/concerns-rise-over-backdoored-smart-contracts), mecanismos de control de acceso controvertidos, vulnerabilidades explotables y otras cosas que ponen en riesgo la seguridad de los usuarios y que podrían pasar desapercibidas.
+Con los contratos inteligentes, generalmente hay mucho dinero en juego. Esto requiere garantías de seguridad más altas y la verificación de la lógica de un contrato inteligente antes de utilizarlo. El problema es que los desarrolladores inescrupulosos pueden engañar a los usuarios insertando código malicioso en un contrato inteligente. Sin verificación, los contratos inteligentes maliciosos pueden tener [puertas traseras](https://www.trustnodes.com/2018/11/10/concerns-rise-over-backdoored-smart-contracts), mecanismos de control de acceso controvertidos, vulnerabilidades explotables y otros elementos que ponen en peligro la seguridad del usuario y que pasarían desapercibidos.
Publicar los archivos de código fuente de un contrato inteligente facilita que las personas interesadas, como los auditores, evalúen el contrato en busca de posibles vectores de ataque. Con múltiples partes verificando de manera independiente un contrato inteligente, los usuarios tienen garantías más sólidas de su seguridad.
## Cómo verificar el código fuente de los contratos inteligentes de Ethereum {#source-code-verification-for-ethereum-smart-contracts}
-[Implementar un contrato inteligente en Ethereum](/developers/docs/smart-contracts/deploying/) requiere enviar una transacción con una carga útil de datos (código bytecode compilado) a una dirección especial. La carga útil de datos se genera compilando el código fuente, junto con los [argumentos constructor](https://docs.soliditylang.org/en/v0.8.14/contracts.html#constructor) de la instancia del contrato que se adjuntan a la carga útil de datos en la transacción. La compilación es determinista, lo que significa que siempre produce la misma salida (es decir, el bytecode del contrato) si se utilizan los mismos archivos fuente y ajustes de compilación (como por ejemplo la versión del compilador, el optimizador, etc).
+[Implementar un contrato inteligente en Ethereum](/developers/docs/smart-contracts/deploying/) requiere enviar una transacción con una carga útil de datos (bytecode compilado) a una dirección especial. La carga útil de datos se genera compilando el código fuente, más los [argumentos del constructor](https://docs.soliditylang.org/en/v0.8.14/contracts.html#constructor) de la instancia del contrato anexados a la carga útil de datos en la transacción. La compilación es determinista, lo que significa que siempre produce el mismo resultado (es decir, el bytecode del contrato) si se utilizan los mismos archivos fuente y la misma configuración de compilación (p. ej., la versión del compilador, el optimizador).
-
+
Verificar un contrato inteligente básicamente consta de los siguientes pasos:
@@ -62,46 +62,52 @@ Verificar un contrato inteligente básicamente consta de los siguientes pasos:
5. Además, si los hashes de metadatos al final del bytecode coinciden, la coincidencia será completa.
-Tenga en cuenta que esta es una descripción simplificada de la verificación y existen muchas excepciones que no funcionarían de esta manera, como sería el caso de tener [variables inmutables](https://docs.sourcify.dev/docs/immutables/).
+Tenga en cuenta que esta es una descripción simplista de la verificación y que hay muchas excepciones que no funcionarían con esto, como tener [variables inmutables](https://docs.sourcify.dev/docs/immutables/).
-## Herramientas de verificación de código fuente {#source-code-verification-tools}
+## Herramientas de verificación del código fuente {#source-code-verification-tools}
El proceso tradicional de verificar contratos puede ser complejo. Es por eso que tenemos herramientas para verificar el código fuente de los contratos inteligentes implementados en Ethereum. Estas herramientas automatizan gran parte de la verificación del código fuente y también curan contratos verificados en beneficio de los usuarios.
### Etherscan {#etherscan}
-Aunque es mayormente conocido como un [explorador de cadena de bloques de Ethereum](/developers/docs/data-and-analytics/block-explorers/), Etherscan también ofrece un [servicio de verificación de código fuente](https://etherscan.io/verifyContract) para desarrolladores y usuarios de contratos inteligentes.
+Aunque se le conoce principalmente como un [explorador de la cadena de bloques de Ethereum](/developers/docs/data-and-analytics/block-explorers/), Etherscan también ofrece un [servicio de verificación de código fuente](https://etherscan.io/verifyContract) para desarrolladores y usuarios de contratos inteligentes.
-Etherscan le permite volver a compilar el bytecode del contrato a partir de la carga útil de datos original (código fuente, dirección de la biblioteca, configuración del compilador, dirección del contrato, etc). Si el bytecode recompilado está asociado con el bytecode (y a los parámetros constructor) del contrato en la cadena, [el contrato está verificado](https://info.etherscan.com/types-of-contract-verification/).
+Etherscan le permite volver a compilar el bytecode del contrato a partir de la carga útil de datos original (código fuente, dirección de la biblioteca, configuración del compilador, dirección del contrato, etc). Si el bytecode recompilado está asociado con el bytecode (y los parámetros del constructor) del contrato en la cadena, entonces [el contrato está verificado](https://info.etherscan.com/types-of-contract-verification/).
-Una vez verificado, el código fuente de su contrato recibe una etiqueta de "Verificado" y se publica en Etherscan para que otros puedan auditarlo. También se agrega a la sección de [Contratos verificados](https://etherscan.io/contractsVerified/), que es un repositorio de contratos inteligentes con código fuente verificado.
+Una vez verificado, el código fuente de su contrato recibe una etiqueta de "Verificado" y se publica en Etherscan para que otros puedan auditarlo. También se añade a la sección [Contratos Verificados](https://etherscan.io/contractsVerified/), un repositorio de contratos inteligentes con códigos fuente verificados.
-Etherscan es la herramienta más utilizada para verificar contratos. Sin embargo, la verificación de contratos de Etherscan tiene una desventaja: no compara el **hash de metadatos** del bytecode en la cadena con el bytecode recompilado. Por lo tanto, las coincidencias en Etherscan son coincidencias parciales.
+Etherscan es la herramienta más utilizada para verificar contratos. Sin embargo, la verificación de contratos de Etherscan tiene un inconveniente: no compara el **hash de metadatos** del bytecode en la cadena y el bytecode recompilado. Por lo tanto, las coincidencias en Etherscan son coincidencias parciales.
[Más información sobre la verificación de contratos en Etherscan](https://medium.com/etherscan-blog/verifying-contracts-on-etherscan-f995ab772327).
+### Blockscout {#blockscout}
+
+[Blockscout](https://blockscout.com/) es un explorador de cadena de bloques de código abierto que también proporciona un [servicio de verificación de contratos](https://eth.blockscout.com/contract-verification) para desarrolladores y usuarios de contratos inteligentes. Como alternativa de código abierto, Blockscout ofrece transparencia en relación a cómo se realiza la verificación y permite contribuciones de la comunidad para mejorar el proceso de verificación.
+
+De forma similar a otros servicios de verificación, Blockscout le permite verificar el código fuente de su contrato recompilando el bytecode y comparándolo con el contrato implementado. Una vez verificado, su contrato recibe el estado de verificación y el código fuente pasa a estar disponible públicamente para su auditoría y para interactuar con él. Los contratos verificados también se enumeran en el [repositorio de contratos verificados](https://eth.blockscout.com/verified-contracts) de Blockscout para facilitar su consulta y descubrimiento.
+
### Sourcify {#sourcify}
-[Sourcify](https://sourcify.dev/#/verifier) es otra herramienta para verificar contratos que es de código abierto y descentralizada. Sourcify no es un explorador de bloques y solo verifica contratos en [distintas redes basadas en la Máquina virtual de Ethereum](https://docs.sourcify.dev/docs/chains). Sourcify actúa como una infraestructura pública sobre la cual otras herramientas pueden construir, y tiene como objetivo permitir interacciones con contratos más amigables para los humanos utilizando la [Interfaz Binaria de Aplicación (ABI, por sus siglas en inglés)](/developers/docs/smart-contracts/compiling/#web-applications) y comentarios [NatSpec](https://docs.soliditylang.org/en/v0.8.15/natspec-format.html) que se encuentran en el archivo de metadatos.
+[Sourcify](https://sourcify.dev/#/verifier) es otra herramienta para verificar contratos que es de código abierto y descentralizada. No es un explorador de bloques y solo verifica contratos en [diferentes redes basadas en EVM](https://docs.sourcify.dev/docs/chains). Actúa como una infraestructura pública para que otras herramientas se basen en ella, y su objetivo es permitir interacciones de contratos más fáciles de usar utilizando los comentarios de la [ABI](/developers/docs/smart-contracts/compiling/#web-applications) y [NatSpec](https://docs.soliditylang.org/en/v0.8.15/natspec-format.html) que se encuentran en el archivo de metadatos.
-A diferencia de Etherscan, Sourcify admite coincidencias completas con el hash de metadatos. Los contratos verificados se alojan en su correspondiente [repositorio público](https://docs.sourcify.dev/docs/repository/) en HTTP y en [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/#what-is-ipfs), que es un almacenamiento descentralizado [cuya dirección es determinada por su contenido](https://web3.storage/docs/concepts/content-addressing/). Esto permite obtener el archivo de metadatos de un contrato a través de IPFS, ya que el hash de metadatos añadido es un hash de IPFS.
+A diferencia de Etherscan, Sourcify admite coincidencias completas con el hash de metadatos. Los contratos verificados se sirven en su [repositorio público](https://docs.sourcify.dev/docs/repository/) en HTTP e [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/#what-is-ipfs), que es un almacenamiento descentralizado y [direccionado por contenido](https://docs.storacha.network/concepts/content-addressing/). Esto permite obtener el archivo de metadatos de un contrato a través de IPFS, ya que el hash de metadatos añadido es un hash de IPFS.
-Además, también se pueden recuperar los archivos de código fuente a través de IPFS, ya que los hashes de IPFS de estos archivos también se encuentran en los metadatos. Un contrato puede ser verificado proporcionando el archivo de metadatos y los archivos de origen a través de su API o [Interfaz de Usuario (UI)](https://sourcify.dev/#/verifier), o utilizando complementos. La herramienta de monitoreo de Sourcify también escucha las creaciones de contratos en nuevos bloques e intenta verificar los contratos si sus metadatos y archivos de origen están publicados en IPFS.
+Además, también se pueden recuperar los archivos de código fuente a través de IPFS, ya que los hashes de IPFS de estos archivos también se encuentran en los metadatos. Se puede verificar un contrato proporcionando el archivo de metadatos y los archivos fuente a través de su API o la [IU](https://sourcify.dev/#/verifier), o utilizando los plugins. La herramienta de monitoreo de Sourcify también escucha las creaciones de contratos en nuevos bloques e intenta verificar los contratos si sus metadatos y archivos de origen están publicados en IPFS.
-[Más información sobre la verificación de contratos en Sourcify](https://blog.soliditylang.org/2020/06/25/sourcify-faq/).
+[Más información sobre la verificación de contratos en Sourcify](https://soliditylang.org/blog/2020/06/25/sourcify-faq/).
-### Antiguamente {#tenderly}
+### Tenderly {#tenderly}
-La plataforma [Tenderly](https://tenderly.co/) permite a los desarrolladores de Web3 crear, probar, monitorear y operar contratos inteligentes. Al combinar herramientas de depuración con observabilidad y bloques de construcción de infraestructura, Tenderly ayuda a los desarrolladores a acelerar el desarrollo de contratos inteligentes. Para habilitar por completo las funciones de Tenderly, los desarrolladores deben realizar la [verificación del código fuente](https://docs.tenderly.co/monitoring/contract-verification) utilizando varios métodos.
+La [plataforma Tenderly](https://tenderly.co/) permite a los desarrolladores de Web3 construir, probar, monitorizar y operar contratos inteligentes. Al combinar herramientas de depuración con observabilidad y bloques de construcción de infraestructura, Tenderly ayuda a los desarrolladores a acelerar el desarrollo de contratos inteligentes. Para habilitar completamente las funciones de Tenderly, los desarrolladores necesitan [realizar la verificación del código fuente](https://docs.tenderly.co/monitoring/contract-verification) utilizando varios métodos.
Es posible verificar un contrato de forma privada o pública. Si se verifica de forma privada, el contrato inteligente es visible solo para usted (y otros miembros de su proyecto). Verificar un contrato de manera pública lo hace visible para todos los usuarios de la plataforma Tenderly.
-Puede verificar contratos utilizando el [Panel](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-a-smart-contract), el [plugin de Hardhat para Tenderly](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-the-tenderly-hardhat-plugin) o la [Línea de Comandos (CLI)](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-cli).
+Puede verificar sus contratos utilizando el [Dashboard](https://docs.tenderly.co/contract-verification), el [plugin Hardhat de Tenderly](https://docs.tenderly.co/contract-verification/hardhat) o la [CLI](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-cli).
Cuando verifica contratos a través del Panel, necesita importar el archivo fuente o el archivo de metadatos generado por el compilador de Solidity, la dirección/red y la configuración del compilador.
Usar el complemento de Hardhat para Tenderly permite tener un mayor control sobre el proceso de verificación con menos esfuerzo, lo que permite elegir entre la verificación automática (sin código) y la verificación manual (basada en código).
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Verificación del código fuente de un contrato](https://programtheblockchain.com/posts/2018/01/16/verifying-contract-source-code/)
+- [Verificación del código fuente del contrato](https://programtheblockchain.com/posts/2018/01/16/verifying-contract-source-code/)
From 397457be8657656899a96b1bb0bc146827068a7b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:03 -0300
Subject: [PATCH 126/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/languages/index.md
---
.../docs/smart-contracts/languages/index.md | 165 +++++++++---------
1 file changed, 83 insertions(+), 82 deletions(-)
diff --git a/public/content/translations/es/developers/docs/smart-contracts/languages/index.md b/public/content/translations/es/developers/docs/smart-contracts/languages/index.md
index 258fc81f45a..4033b02cb32 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/languages/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/languages/index.md
@@ -1,25 +1,25 @@
---
title: Lenguajes de contrato inteligente
-description: 'Descripción y comparación de los 2 lenguajes de contrato inteligente principales: Solidity y Vyper.'
+description: "Descripción y comparación de los 2 lenguajes de contrato inteligente principales: Solidity y Vyper."
lang: es
---
-Un gran aspecto de Ethereum es que los contratos inteligentes pueden programarse utilizando lenguajes relativamente fáciles para el programador. Si tiene experiencia con Python u otro [lenguaje entre llaves](https://wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages), puede buscar un lenguaje con una sintaxis familiar.
+Un gran aspecto de Ethereum es que los contratos inteligentes pueden programarse utilizando lenguajes relativamente fáciles para el programador. Si tienes experiencia con Python o con cualquier [lenguaje de llaves](https://wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages), puedes encontrar un lenguaje con una sintaxis familiar.
Los dos lenguajes más activos y soportados son:
- Solidity
- Vyper
-Remix IDE proporciona un entorno de desarrollo integral para crear y probar contratos tanto en Solidity como en Vyper. [Pruebe Remix IDE en el navegador](https://remix.ethereum.org) para empezar a programar.
+Remix IDE proporciona un entorno de desarrollo integral para crear y probar contratos tanto en Solidity como en Vyper. [Prueba el IDE Remix en el navegador](https://remix.ethereum.org) para empezar a programar.
-Los desarrolladores más experimentados también podrían querer usar Yul, un lenguaje intermedio para la [máquina virtual de Ethereum](/developers/docs/evm/), o Yul+, una extensión de Yul.
+Es posible que los desarrolladores con más experiencia quieran utilizar Yul, un lenguaje intermedio para la [Máquina Virtual de Ethereum](/developers/docs/evm/), o Yul+, una extensión de Yul.
Si es curioso y le gustaría ayudar a testear nuevos lenguajes que aún se encuentran en gran desarrollo, puede experimentar con Fe, un lenguaje emergente de contratos inteligentes que aún está en sus inicios.
## Requisitos previos {#prerequisites}
-El conocimiento previo de lenguajes de programación, especialmente de JavaScript o Python, puede ayudarlo a entender las diferencias en los lenguajes de los contratos inteligentes. También recomendamos que entienda los lenguajes de los contratos inteligentes como concepto antes de profundizar en las comparaciones de lenguajes. Consulte esta [Introducción a los contratos inteligentes](/developers/docs/smart-contracts/).
+El conocimiento previo de lenguajes de programación, especialmente de JavaScript o Python, puede ayudarlo a entender las diferencias en los lenguajes de los contratos inteligentes. También recomendamos que entienda los lenguajes de los contratos inteligentes como concepto antes de profundizar en las comparaciones de lenguajes. [Introducción a los contratos inteligentes](/developers/docs/smart-contracts/).
## Solidity {#solidity}
@@ -34,48 +34,48 @@ El conocimiento previo de lenguajes de programación, especialmente de JavaScrip
### Enlaces importantes {#important-links}
- [Documentación](https://docs.soliditylang.org/en/latest/)
-- [Portal de lenguaje de Solidity](https://soliditylang.org/)
+- [Portal del lenguaje Solidity](https://soliditylang.org/)
- [Solidity by Example](https://docs.soliditylang.org/en/latest/solidity-by-example.html)
- [GitHub](https://github.com/ethereum/solidity/)
-- [Sala de chat de Solidity (Glitter)](https://gitter.im/ethereum/solidity) enlazada con la [Sala de chat de Solidity (Matrix)](https://matrix.to/#/#ethereum_solidity:gitter.im)
-- [Hoja de trampas](https://reference.auditless.com/cheatsheet)
+- [Sala de chat de Gitter sobre Solidity](https://gitter.im/ethereum/solidity) conectada a la [sala de chat de Matrix sobre Solidity](https://matrix.to/#/#ethereum_solidity:gitter.im)
+- [Hoja de referencia](https://reference.auditless.com/cheatsheet)
- [Blog de Solidity](https://blog.soliditylang.org/)
- [Twitter de Solidity](https://twitter.com/solidity_lang)
-### Ejemplo de contrato {#example-contract}
+### Contrato de ejemplo {#example-contract}
```solidity
// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0;
contract Coin {
- // The keyword "public" makes variables
- // accessible from other contracts
+ // La palabra clave "public" hace que las variables
+ // sean accesibles desde otros contratos
address public minter;
mapping (address => uint) public balances;
- // Events allow clients to react to specific
- // contract changes you declare
+ // Los eventos permiten a los clientes reaccionar a los cambios específicos
+ // del contrato que declares
event Sent(address from, address to, uint amount);
- // Constructor code is only run when the contract
- // is created
+ // El código del constructor solo se ejecuta cuando se crea
+ // el contrato
constructor() {
minter = msg.sender;
}
- // Sends an amount of newly created coins to an address
- // Can only be called by the contract creator
+ // Envía una cantidad de monedas recién creadas a una dirección
+ // Solo puede ser llamado por el creador del contrato
function mint(address receiver, uint amount) public {
require(msg.sender == minter);
require(amount < 1e60);
balances[receiver] += amount;
}
- // Sends an amount of existing coins
- // from any caller to an address
+ // Envía una cantidad de monedas existentes
+ // desde cualquier persona que llame a una dirección
function send(address receiver, uint amount) public {
- require(amount <= balances[msg.sender], "Insufficient balance.");
+ require(amount <= balances[msg.sender], "Saldo insuficiente.");
balances[msg.sender] -= amount;
balances[receiver] += amount;
emit Sent(msg.sender, receiver, amount);
@@ -83,7 +83,7 @@ contract Coin {
}
```
-Este ejemplo debería darle una idea de cómo es la sintaxis de un contrato Solidity. Para ver una descripción más detallada de las funciones y variables, [consulte los documentos](https://docs.soliditylang.org/en/latest/contracts.html).
+Este ejemplo debería darle una idea de cómo es la sintaxis de un contrato Solidity. Para una descripción más detallada de las funciones y variables, [consulta la documentación](https://docs.soliditylang.org/en/latest/contracts.html).
## Vyper {#vyper}
@@ -101,98 +101,98 @@ Este ejemplo debería darle una idea de cómo es la sintaxis de un contrato Soli
- Bucles de longitud infinita
- Puntos fijos binarios
-Para obtener más información, [lea los fundamentos de Vyper](https://vyper.readthedocs.io/en/latest/index.html).
+Para obtener más información, [lee los fundamentos de Vyper](https://vyper.readthedocs.io/en/latest/index.html).
### Enlaces importantes {#important-links-1}
- [Documentación](https://vyper.readthedocs.io)
-- [Vyper por Example](https://vyper.readthedocs.io/en/latest/vyper-by-example.html)
-- [Más Vyper by Example](https://vyper-by-example.org/)
+- [Vyper by Example](https://vyper.readthedocs.io/en/latest/vyper-by-example.html)
+- [More Vyper by Example](https://vyper-by-example.org/)
- [GitHub](https://github.com/vyperlang/vyper)
- [Chat de Discord de la comunidad de Vyper](https://discord.gg/SdvKC79cJk)
-- [Hoja de trampas](https://reference.auditless.com/cheatsheet)
-- [Marcos para desarrollo de contratos inteligentes y herramientas para Vyper](/developers/docs/programming-languages/python/)
-- [VyperPunk: aprenda a asegurar y hackear contratos inteligentes de Vyper](https://github.com/SupremacyTeam/VyperPunk)
-- [Vyper Hub para desarrollo](https://github.com/zcor/vyper-dev)
-- [Ejemplos de grandes éxitos de contratos inteligentes de Vyper](https://github.com/pynchmeister/vyper-greatest-hits/tree/main/contracts)
-- [Increíbles recursos seleccionados de Vyper](https://github.com/spadebuilders/awesome-vyper)
+- [Hoja de referencia](https://reference.auditless.com/cheatsheet)
+- [Marcos de desarrollo y herramientas para contratos inteligentes de Vyper](/developers/docs/programming-languages/python/)
+- [VyperPunk: aprende a proteger y hackear contratos inteligentes de Vyper](https://github.com/SupremacyTeam/VyperPunk)
+- [Vyper Hub para el desarrollo](https://github.com/zcor/vyper-dev)
+- [Ejemplos de contratos inteligentes de grandes éxitos de Vyper](https://github.com/pynchmeister/vyper-greatest-hits/tree/main/contracts)
+- [Recursos seleccionados de Awesome Vyper](https://github.com/spadebuilders/awesome-vyper)
### Ejemplo {#example}
```python
-# Open Auction
+# Subasta abierta
-# Auction params
-# Beneficiary receives money from the highest bidder
+# Parámetros de la subasta
+# El beneficiario recibe el dinero del mejor postor
beneficiary: public(address)
auctionStart: public(uint256)
auctionEnd: public(uint256)
-# Current state of auction
+# Estado actual de la subasta
highestBidder: public(address)
highestBid: public(uint256)
-# Set to true at the end, disallows any change
+# Se establece en «true» al final, no permite ningún cambio
ended: public(bool)
-# Keep track of refunded bids so we can follow the withdraw pattern
+# Realiza un seguimiento de las pujas reembolsadas para que podamos seguir el patrón de retirada
pendingReturns: public(HashMap[address, uint256])
-# Create a simple auction with `_bidding_time`
-# seconds bidding time on behalf of the
-# beneficiary address `_beneficiary`.
+# Crea una subasta simple con un tiempo de puja de `_bidding_time`
+# segundos en nombre de
+# la dirección del beneficiario `_beneficiary`.
@external
def __init__(_beneficiary: address, _bidding_time: uint256):
self.beneficiary = _beneficiary
self.auctionStart = block.timestamp
self.auctionEnd = self.auctionStart + _bidding_time
-# Bid on the auction with the value sent
-# together with this transaction.
-# El valor solo será reembolsado si la subasta
-# no es ganada.
+# Puja en la subasta con el valor enviado
+# junto con esta transacción.
+# El valor solo se reembolsará si
+# no se gana la subasta.
@external
@payable
def bid():
- # Comprobar si el periodo de oferta ha terminado.
+ # Comprueba si el período de pujas ha terminado.
assert block.timestamp < self.auctionEnd
- # Check if bid is high enough
+ # Comprueba si la puja es lo suficientemente alta
assert msg.value > self.highestBid
- # Track the refund for the previous high bidder
+ # Realiza un seguimiento del reembolso para el anterior mejor postor
self.pendingReturns[self.highestBidder] += self.highestBid
- # Track new high bid
+ # Realiza un seguimiento de la nueva puja más alta
self.highestBidder = msg.sender
self.highestBid = msg.value
-# Withdraw a previously refunded bid. El patrón de retirada se
-# utiliza aquí para evitar un problema de seguridad. Si los reembolsos fueron directamente
-# enviados como parte de la oferta(), un contrato de licitación malicioso podría bloquear
-# esos reembolsos y así bloquear la entrada de nuevas ofertas más altas.
+# Retira una puja previamente reembolsada. El patrón de retirada se utiliza
+# aquí para evitar un problema de seguridad. Si los reembolsos se enviaran
+# directamente como parte de la puja, un contrato de puja malicioso podría bloquear
+# esos reembolsos y, por lo tanto, bloquear la entrada de nuevas pujas más altas.
@external
def withdraw():
pending_amount: uint256 = self.pendingReturns[msg.sender]
self.pendingReturns[msg.sender] = 0
send(msg.sender, pending_amount)
-# Finalizar la subasta y enviar la oferta más alta
+# Finaliza la subasta y envía la puja más alta
# al beneficiario.
-@externo
+@external
def endAuction():
- # Es una buena guía para estructurar funciones que interactúan
- # con otros contratos (es decir, ellos llaman funciones o envían ether)
- # en tres frases:
- # 1. condiciones de comprobación
- # 2. realizar acciones (condiciones potencialmente cambiantes)
- # 3. interactuando con otros contratos
- # Si estas fases se mezclan, el otro contrato podría llamar a
- # de vuelta al contrato actual y modificar el estado o causar
- # efectos (pago ether) a ser realizados varias veces.
- # Si las funciones llamadas internamente incluyen interacción con contratos externos
- # también deben considerarse interacción con
+ # Es una buena guía para estructurar las funciones que interactúan
+ # con otros contratos (es decir, llaman a funciones o envían ether)
+ # en tres fases:
+ # 1. Comprobación de condiciones
+ # 2. Realización de acciones (que pueden cambiar las condiciones)
+ # 3. Interacción con otros contratos
+ # Si estas fases se mezclan, el otro contrato podría volver a llamar
+ # al contrato actual y modificar el estado o causar
+ # que los efectos (pago de ether) se realicen varias veces.
+ # Si las funciones llamadas internamente incluyen interacción con
+ # contratos externos, también deben considerarse interacción con
# contratos externos.
# 1. Condiciones
- # Comprueba si se ha alcanzado el fin de la subasta
+ # Comprueba si se ha alcanzado el tiempo de finalización de la subasta
assert block.timestamp >= self.auctionEnd
# Comprueba si esta función ya ha sido llamada
assert not self.ended
@@ -204,7 +204,7 @@ def endAuction():
send(self.beneficiary, self.highestBid)
```
-Este ejemplo debería darle una idea de cómo es la sintaxis de contratos de Vyper. Para ver una descripción más detallada de las funciones y variables, [consulte los documentos](https://vyper.readthedocs.io/en/latest/vyper-by-example.html#simple-open-auction).
+Este ejemplo debería darle una idea de cómo es la sintaxis de contratos de Vyper. Para una descripción más detallada de las funciones y variables, [consulta la documentación](https://vyper.readthedocs.io/en/latest/vyper-by-example.html#simple-open-auction).
## Yul y Yul+ {#yul}
@@ -213,24 +213,25 @@ Si es nuevo en Ethereum y aún no ha hecho ninguna codificación con lenguajes d
**Yul**
- Lenguaje intermedio para Ethereum.
-- Es compatible con [EVM](/developers/docs/evm) y [Ewasm](https://github.com/ewasm), un WebAssembly parecido a Ethereum, y está diseñado para ser un denominador común utilizable de ambas plataformas.
-- Buen objetivo para las etapas de optimización de alto nivel, que puede beneficiar a las plataformas de EVM y eWASM.
+- Admite la [EVM](/developers/docs/evm) y [Ewasm](https://github.com/ewasm), un WebAssembly con sabor a Ethereum, y está diseñado para ser un denominador común utilizable de ambas plataformas.
+- Buen objetivo para etapas de optimización de alto nivel que pueden beneficiar a las plataformas EVM y Ewasm por igual.
**Yul+**
- Una extensión de bajo nivel y alta eficiencia para Yul.
-- Diseñado inicialmente para ser un contrato de [rollup optimista](/developers/docs/scaling/optimistic-rollups/).
+- Diseñado inicialmente para un contrato de [paquetes acumulativos optimistas](/developers/docs/scaling/optimistic-rollups/).
- Yul+ se puede considerar una propuesta de actualización experimental de Yul, que le añade nuevas funciones.
### Enlaces importantes {#important-links-2}
-- [Documentacíon de Yul](https://docs.soliditylang.org/en/latest/yul.html)
+- [Documentación de Yul](https://docs.soliditylang.org/en/latest/yul.html)
- [Documentación de Yul+](https://github.com/fuellabs/yulp)
-- [Post de introducción a Yul+](https://medium.com/@fuellabs/introducing-yul-a-new-low-level-language-for-ethereum-aa64ce89512f)
+- [Publicación de introducción a Yul+](https://medium.com/@fuellabs/introducing-yul-a-new-low-level-language-for-ethereum-aa64ce89512f)
-### Ejemplo de contrato {#example-contract-2}
+### Contrato de ejemplo {#example-contract-2}
-El siguiente ejemplo sencillo implementa una power function. Puede compilarse mediante `solc --strict-assembly --bin input.yul`. El ejemplo debe almacenarse en el archivo input.yul.
+El siguiente ejemplo sencillo implementa una power function. Se puede compilar usando `solc --strict-assembly --bin input.yul`. El ejemplo debe
+almacenarse en el archivo input.yul.
```
{
@@ -251,7 +252,7 @@ El siguiente ejemplo sencillo implementa una power function. Puede compilarse me
}
```
-Si ya tiene experiencia con contratos inteligentes, puede encontrar una implementación ERC20 completa en Yul [aquí](https://solidity.readthedocs.io/en/latest/yul.html#complete-erc20-example).
+Si ya tiene mucha experiencia con los contratos inteligentes, puede encontrar una implementación completa de ERC20 en Yul [aquí](https://solidity.readthedocs.io/en/latest/yul.html#complete-erc20-example).
## Fe {#fe}
@@ -264,11 +265,11 @@ Si ya tiene experiencia con contratos inteligentes, puede encontrar una implemen
- [GitHub](https://github.com/ethereum/fe)
- [Anuncio de Fe](https://snakecharmers.ethereum.org/fe-a-new-language-for-the-ethereum-ecosystem/)
-- [Hoja de ruta de Fe 2021](https://notes.ethereum.org/LVhaTF30SJOpkbG1iVw1jg)
-- [Chat sobre Fe de Discord](https://discord.com/invite/ywpkAXFjZH)
+- [Hoja de ruta de Fe para 2021](https://notes.ethereum.org/LVhaTF30SJOpkbG1iVw1jg)
+- [Chat de Discord de Fe](https://discord.com/invite/ywpkAXFjZH)
- [Twitter de Fe](https://twitter.com/official_fe)
-### Ejemplo de contrato {#example-contract-3}
+### Contrato de ejemplo {#example-contract-3}
El siguiente es un contrato simple implementado en Fe.
@@ -291,7 +292,7 @@ contract GuestBook:
```
-## ¿Cómo escoger? {#how-to-choose}
+## Cómo elegir {#how-to-choose}
Como sucede con cualquier otro lenguaje de programación, se trata principalmente de elegir la herramienta adecuada para el trabajo correcto, así como las preferencias personales.
@@ -299,7 +300,7 @@ Estas son algunas cosas que debe tener en cuenta si aún no ha probado ninguno d
### ¿Qué tiene de genial Solidity? {#solidity-advantages}
-- Si es principiante, encontrará muchos tutoriales y herramientas de aprendizaje por ahí. Obtenga más información al respecto en la sección [Aprender programando](/developers/learning-tools/).
+- Si es principiante, encontrará muchos tutoriales y herramientas de aprendizaje por ahí. Obtén más información sobre esto en la sección [Aprende programando](/developers/learning-tools/).
- Buenas herramientas de desarrollador disponibles.
- Solidity tiene una gran comunidad de desarrolladores, lo que significa que muy probablemente encontrará rápidamente las respuestas a sus preguntas.
@@ -314,11 +315,11 @@ Estas son algunas cosas que debe tener en cuenta si aún no ha probado ninguno d
- Lenguaje simple y funcional de bajo nivel.
- Le permite aproximarse mucho más a la EVM sin procesar, lo que puede ayudarlo a optimizar el uso de gas en los contratos.
-## Comparación de lenguajes {#language-comparisons}
+## Comparaciones de lenguajes {#language-comparisons}
-Si desea obtener comparaciones sobre la sintaxis básica, el ciclo de vida de los contratos, las interfaces, los operadores, las estructuras de datos, las funciones, el flujo de control, etc., eche un vistazo a esta [hoja de apuntes de Auditless](https://reference.auditless.com/cheatsheet/).
+Para comparaciones de sintaxis básica, el ciclo de vida del contrato, interfaces, operadores, estructuras de datos, funciones, flujo de control y más, consulta esta [hoja de referencia de Auditless](https://reference.auditless.com/cheatsheet/)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
- [Biblioteca de contratos de Solidity de OpenZeppelin](https://docs.openzeppelin.com/contracts/5.x/)
- [Solidity by Example](https://solidity-by-example.org)
From 478af6913bd7a95f83c8d204e9d4631217699505 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:04 -0300
Subject: [PATCH 127/589] update(i18n):
public/content/translations/es/contributing/translation-program/resources/index.md
---
.../translation-program/resources/index.md | 39 +++++++++++--------
1 file changed, 22 insertions(+), 17 deletions(-)
diff --git a/public/content/translations/es/contributing/translation-program/resources/index.md b/public/content/translations/es/contributing/translation-program/resources/index.md
index 6c415379e37..e5143c4d4f8 100644
--- a/public/content/translations/es/contributing/translation-program/resources/index.md
+++ b/public/content/translations/es/contributing/translation-program/resources/index.md
@@ -10,35 +10,40 @@ Puede encontrar algunas guías y herramientas útiles para los traductores de et
## Guías {#guides}
-- [Guía de estilo de traducción](/contributing/translation-program/translators-guide/) _: instrucciones y consejos para los traductores de ethereum.org_.
-- [Preguntas frecuentes sobre la traducción](/contributing/translation-program/faq/) _: Preguntas y respuestas frecuentes sobre el Programa de traducción de ethereum.org_
-- [Guía de edición en línea de Crowdin](https://support.crowdin.com/online-editor/) _: una guía detallada para utilizar el editor en línea de Crowdin y algunas de las funciones avanzadas de Crowdin_
-- [Bloques de contenido](/contributing/translation-program/content-buckets/) _: qué páginas se incluyen en cada bloque de contenido de ethereum.org_
+- [Guía de estilo de traducción](/contributing/translation-program/translators-guide/) _– instrucciones y consejos para los traductores de ethereum.org_
+- [Preguntas frecuentes sobre la traducción](/contributing/translation-program/faq/) _– preguntas y respuestas frecuentes sobre el Programa de traducción de ethereum.org_
+- [Guía del editor en línea de Crowdin](https://support.crowdin.com/online-editor/) _– una guía detallada para usar el editor en línea de Crowdin y algunas de las funciones avanzadas de Crowdin_
## Herramientas {#tools}
-- [Linguee](https://www.linguee.com/) _— buscador de traducciones y conceptos usando palabras o enunciados_
-- [Búsqueda de términos en Proz](https://www.proz.com/search/) _: base de datos de diccionarios de traducciones y glosarios de términos específicos._
-- [Eurotermbank](https://www.eurotermbank.com/) _: extensa base de datos terminológica europea en 42 idiomas_.
+- [Linguee](https://www.linguee.com/)
+ _– motor de búsqueda de traducciones y diccionario que permite buscar por palabra o frase_
+- [Proz term search](https://www.proz.com/search/)
+ _– base de datos de diccionarios de traducción y glosarios de términos especializados_
+- [Eurotermbank](https://www.eurotermbank.com/)
+ _– colecciones de terminología europea en 42 idiomas_
## Comunidades {#communities}
-- [Grupos de traducción de Discord específicos del idioma](https://discord.gg/ethereum-org) _– una iniciativa para conectar a los traductores de ethereum.org con los grupos de traducción_
-- [Grupo de traductores de chino](https://www.notion.so/Ethereum-org-05375fe0a94c4214acaf90f42ba40171) _— página de Notion para una mejor coordinación entre los traductores de chino_
+- [Grupos de traducción de Discord específicos para cada idioma](https://discord.gg/ethereum-org)
+ _– una iniciativa para conectar a los traductores de ethereum.org con los Grupos de traducción_
+- [Grupo de traductores de chino](https://www.notion.so/Ethereum-org-05375fe0a94c4214acaf90f42ba40171)
+ _– página de Notion para facilitar la coordinación entre los traductores de chino_
## Últimas actualizaciones {#latest-updates}
-Para mantenerse al día con el progreso del Programa de traducción, puede seguir el [blog de la Fundación Ethereum](https://blog.ethereum.org/):
+Para estar al día de los últimos avances del Programa de Traducción, puede seguir el [blog de la Fundación Ethereum](https://blog.ethereum.org/):
-- [Actualización de los logros de octubre del 2021](https://blog.ethereum.org/2021/10/04/translation-program-update/)
-- [Actualización de los objetivos de diciembre del 2020](https://blog.ethereum.org/2020/12/21/translation-program-milestones-updates-20/)
-- [Actualización de los objetivos de julio del 2020](https://blog.ethereum.org/2020/07/29/ethdotorg-translation-milestone/)
-- [Lanzamiento del Programa de traducción de agosto del 2019](https://blog.ethereum.org/2019/08/20/translating-ethereum-for-our-global-community/)
+- [Actualización de hitos de octubre de 2021](https://blog.ethereum.org/2021/10/04/translation-program-update/)
+- [Actualización de hitos de diciembre de 2020](https://blog.ethereum.org/2020/12/21/translation-program-milestones-updates-20/)
+- [Actualización de hitos de julio de 2020](https://blog.ethereum.org/2020/07/29/ethdotorg-translation-milestone/)
+- [Lanzamiento del Programa de Traducción en agosto de 2019](https://blog.ethereum.org/2019/08/20/translating-ethereum-for-our-global-community/)
-## Horario de atención para traductores {#office-hours}
+## Horario de consulta para traductores {#office-hours}
-Tenemos un horario de atención para traductores el segundo miércoles de cada mes. Se celebra en el canal de voz de #office-hours en el [ DIscord ethereum.org](https://discord.gg/ethereum-org), donde también puede encontrar la hora exacta y detalles adicionales.
+Tenemos un horario de atención para traductores el segundo miércoles de cada mes. Estas se llevan a cabo en el canal de voz #office-hours en el [Discord de ethereum.org](https://discord.gg/ethereum-org), donde también puede encontrar los horarios exactos y detalles adicionales.
-Las horas de oficina permiten a nuestros traductores hacer preguntas sobre el proceso de traducción, proporcionar comentarios sobre el programa, compartir sus ideas o simplemente chatear con el equipo central de ethereum.org. Por último, queremos utilizar estas llamadas para comunicar los desarrollos recientes con el Programa de Traducción y compartir consejos e instrucciones clave con nuestros colaboradores.
+Las horas de oficina permiten a nuestros traductores hacer preguntas sobre el proceso de traducción, proporcionar comentarios sobre el programa, compartir sus ideas o simplemente chatear con el equipo central de ethereum.org.
+Por último, queremos utilizar estas llamadas para comunicar los desarrollos recientes con el Programa de Traducción y compartir consejos e instrucciones clave con nuestros colaboradores.
Si es traductor de ethereum.org o desea convertirse en uno, no dude en unirse a nosotros durante una de estas sesiones.
From 3062364bb47c8ffe27c81addade193c366ebeb92 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:06 -0300
Subject: [PATCH 128/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/rust/index.md
---
.../docs/programming-languages/rust/index.md | 71 ++++++++++---------
1 file changed, 37 insertions(+), 34 deletions(-)
diff --git a/public/content/translations/es/developers/docs/programming-languages/rust/index.md b/public/content/translations/es/developers/docs/programming-languages/rust/index.md
index 6cfd2a6f56a..706c475fecf 100644
--- a/public/content/translations/es/developers/docs/programming-languages/rust/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/rust/index.md
@@ -5,59 +5,62 @@ lang: es
incomplete: true
---
-Aprenda a desarrollar para Ethereum mediante proyectos y herramientas basados en Rust
+Aprenda a desarrollar para Ethereum utilizando proyectos y herramientas basados en Rust
-Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser fiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, es decir, ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
+Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser confiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, es decir, ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
-## Empezar con contratos inteligentes y el lenguaje Solidity {#getting-started-with-smart-contracts-and-solidity}
+## Comenzar con contratos inteligentes y con el lenguaje Solidity {#getting-started-with-smart-contracts-and-solidity}
**Da los primeros pasos para integrar Rust con Ethereum**
-¿Necesitas una introducción más básica para empezar? Visite [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
+¿Necesita una introducción más básica para empezar? Visite [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
-- [Blockchain explicada](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [Cadena de bloques explicada]
+ (https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
- [Comprender los contratos inteligentes](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [Escribir el primer contrato inteligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
-- [Aprender a compilar e implementar Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [Escriba su primer contrato inteligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Aprenda a compilar e implementar Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
## Artículos para principiantes {#beginner-articles}
-- [El cliente Ethereum de Rust](https://openethereum.github.io/)\***Note que OpenEthereum [ha quedado obsoleto](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) y no se mantiene.** Úselo con precaución y preferiblemente cambie a otro cliente.
-- [Enviar una transacción a Ethereum mediante Rust](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/)
-- [Tutorial paso a paso sobre cómo escribir contratos en Rust Wasm para Kovan](https://github.com/paritytech/pwasm-tutorial)
+- [El cliente de Ethereum en Rust](https://openethereum.github.io/) \* **Tenga en cuenta que OpenEthereum [ha quedado obsoleto](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) y ya no se mantiene.** Úselo con precaución y, preferiblemente, cambie a otra implementación de cliente.
+- [Envío de transacciones a Ethereum mediante Rust](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/)
+- [Un tutorial paso a paso sobre cómo escribir contratos en Rust Wasm para Kovan](https://github.com/paritytech/pwasm-tutorial)
-## Artículos intermedios {#intermediate-articles}
+## Articulos para usuarios familiarizados {#intermediate-articles}
## Patrones de uso avanzado {#advanced-use-patterns}
-- [Biblioteca externa pwasm_ethereum para interactuar con redes similares a Ethereum](https://github.com/openethereum/pwasm-ethereum)
-- [Construir un chat descentralizado mediante JavaScript y Rust](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52)
-- [Crear una aplicación descentralizada de tareas con Vue.js & Rust](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb)
+- [Biblioteca de externos pwasm_ethereum para interactuar con redes de tipo Ethereum](https://github.com/openethereum/pwasm-ethereum)
-- [Cree una cadena de bloques en Rust](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/)
+- [Construya un chat descentralizado usando JavaScript y Rust](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52)
+
+- [Construya una aplicación de tareas descentralizada usando Vue.js y Rust](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb)
+
+- [Construya una cadena de bloques en Rust](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/)
## Proyectos y herramientas de Rust {#rust-projects-and-tools}
-- [pwasm-ethereum:](https://github.com/paritytech/pwasm-ethereum) _colección de recursos externos para interactuar con redes similares a Ethereum_
-- [Lighthouse:](https://github.com/sigp/lighthouse) _cliente de capa de consenso de Ethereum rápido_
-- [Ethereum WebAssembly:](https://ewasm.readthedocs.io/en/mkdocs/) _rediseño propuesto de la capa de ejecución de contratos inteligentes de Ethereum utilizando un subconjunto determinístico de WebAssembly_
-- [oasis_std](https://docs.rs/oasis-std/latest/oasis_std/index.html): _Referencia de la API de OASIS_
-- [Solaris:](https://github.com/paritytech/sol-rs) _arnés de pruebas unitarias de contratos inteligentes de Solidity usando la Parity Client EVM nativa._
-- [SputnikVM:](https://github.com/rust-blockchain/evm) _implementación de máquina virtual de Ethereum de Rust_
-- [Wavelet:](https://wavelet.perlin.net/docs/smart-contracts) _contrato inteligente de Wavelet en Rust_
-- [Foundry](https://github.com/foundry-rs/foundry): _Kit de herramientas para el desarrollo de aplicaciones Ethereum_
-- [Alloy](https://alloy.rs): _Bibliotecas de alto rendimiento, bien probadas y documentadas para interactuar con Ethereum y otras cadenas basadas en EVM_
-- [Ethers_rs](https://github.com/gakonst/ethers-rs): _Implementación de la biblioteca y la billetera de Ethereum_
-- [SewUp:](https://github.com/second-state/SewUp) _biblioteca para ayudarlo a crear su contrato de Ethereum WebAssembly con Rust y desarrollar en un backend común_
-- [Substreams:](https://github.com/streamingfast/substreams) _tecnología de indexación de datos de cadena de bloques con paralelización_
-- [Reth](https://github.com/paradigmxyz/reth): Reth (abreviatura de Rust Ethereum) es una nueva implementación de nodo completo de Ethereum
-- [Awesome Ethereum Rust](https://github.com/Vid201/awesome-ethereum-rust): _Una colección curada de proyectos en el ecosistema Ethereum escritos en Rust_
-
-¿Buscas más recursos? Visite [ethereum.org/developers.](/developers/)
+- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _Colección de externos para interactuar con redes de tipo Ethereum_
+- [Lighthouse](https://github.com/sigp/lighthouse) - _Cliente rápido de la capa de consenso de Ethereum_
+- [Ethereum WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/) - _Rediseño propuesto de la capa de ejecución de contratos inteligentes de Ethereum utilizando un subconjunto determinista de WebAssembly_
+- [oasis_std](https://docs.rs/oasis-std/latest/oasis_std/index.html) - _Referencia de la API de OASIS_
+- [Solaris](https://github.com/paritytech/sol-rs) - _Arnés de prueba unitaria de contratos inteligentes de Solidity que utiliza el EVM nativo del cliente de Parity._
+- [SputnikVM](https://github.com/rust-blockchain/evm) - _Implementación de la Máquina Virtual de Ethereum en Rust_
+- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _Contrato inteligente de Wavelet en Rust_
+- [Foundry](https://github.com/foundry-rs/foundry) - _Kit de herramientas para el desarrollo de aplicaciones de Ethereum_
+- [Alloy](https://alloy.rs) - _Bibliotecas de alto rendimiento, bien probadas y documentadas para interactuar con Ethereum y otras cadenas basadas en EVM._
+- [Ethers_rs](https://github.com/gakonst/ethers-rs) - _Biblioteca de Ethereum e implementación de monedero_
+- [SewUp](https://github.com/second-state/SewUp) - _Una biblioteca para ayudarle a construir su contrato de Ethereum WebAssembly con Rust como si desarrollara un backend común_
+- [Substreams](https://github.com/streamingfast/substreams) - _Tecnología de indexación de datos de cadenas de bloques paralelizada_
+- [Reth](https://github.com/paradigmxyz/reth) Reth (abreviatura de Rust Ethereum) es una nueva implementación de nodo completo de Ethereum
+- [Awesome Ethereum Rust](https://github.com/Vid201/awesome-ethereum-rust) - _Una colección curada de proyectos en el ecosistema de Ethereum escritos en Rust_
+
+¿Buscas más recursos? Consulte [ethereum.org/developers.](/developers/)
## Colaboradores de la comunidad de Rust {#rust-community-contributors}
-- [WebAssembly de Ethereum](https://gitter.im/ewasm/Lobby)
-- [Gitter de Oasis](https://gitter.im/Oasis-official/Lobby)
-- [Gitter de Parity](https://gitter.im/paritytech/parity)
+- [Ethereum WebAssembly](https://gitter.im/ewasm/Lobby)
+- [Oasis Gitter](https://gitter.im/Oasis-official/Lobby)
+- [Parity Gitter](https://gitter.im/paritytech/parity)
- [Enigma](https://discord.gg/SJK32GY)
From 7baa4ff502644f8e3206ea3f0812c4eca4a8be65 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:07 -0300
Subject: [PATCH 129/589] update(i18n):
public/content/translations/es/developers/docs/nodes-and-clients/bootnodes/index.md
---
.../developers/docs/nodes-and-clients/bootnodes/index.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/public/content/translations/es/developers/docs/nodes-and-clients/bootnodes/index.md b/public/content/translations/es/developers/docs/nodes-and-clients/bootnodes/index.md
index b876d004827..de56807c8b5 100644
--- a/public/content/translations/es/developers/docs/nodes-and-clients/bootnodes/index.md
+++ b/public/content/translations/es/developers/docs/nodes-and-clients/bootnodes/index.md
@@ -6,9 +6,9 @@ lang: es
Cuando un nuevo nodo se une a la red Ethereum, este necesita conectarse a nodos que ya están en la red para luego descubrir nuevos pares. Estos puntos de entrada en la red Ethereum se llaman nodos de arranque. Los clientes suelen tener una lista de nodos de arranque codificados en ellos. De estos nodos de arranque se suele encargar el equipo de desarrolladores de Ethereum Foundation o los propios equipos de los clientes. Tenga en cuenta que los nodos de arranque no son los mismos que los nodos estáticos. Los nodos estáticos se solicitan una y otra vez, mientras que los nodos de arranque sólo se solicitan si no hay suficientes pares para conectarse y un nodo necesita para arrancar algunas conexiones nuevas.
-## Cómo conectarse a un nodo de arranque {#connect-to-a-bootnode}
+## Conectarse a un nodo de arranque {#connect-to-a-bootnode}
-La mayoría de los clientes tienen una lista de nodos de arranque incorporados, aunque si quisiera ejecutar su propio nodo de arranque, o utilizar uno que no forme parte de la lista de codificados del cliente, tambien puede hacerlo. En este caso, puede especificarlos cuando empiece con su cliente, de la forma siguiente (el ejemplo es para Geth, por favor revise la documentación de su cliente):
+La mayoría de los clientes tienen una lista de nodos de arranque incorporada, pero también puede que desee ejecutar su propio nodo de arranque o utilizar uno que no forme parte de la lista predefinida del cliente. En este caso, puede especificarlos cuando empiece con su cliente, de la forma siguiente (el ejemplo es para Geth, por favor revise la documentación de su cliente):
```
geth --bootnodes "enode://@:"
@@ -16,9 +16,9 @@ geth --bootnodes "enode://@:"
## Ejecutar un nodo de arranque {#run-a-bootnode}
-Los nodos de arranque son nodos completos que no están detrás de una NAT ([Network Address Translation (traducción de dirección de red)](https://www.geeksforgeeks.org/network-address-translation-nat/)). Cada nodo completo puede actuar como un nodo de arranque siempre y cuando esté disponible públicamente.
+Los nodos de arranque son nodos completos que no están detrás de un NAT ([Traducción de Direcciones de Red](https://www.geeksforgeeks.org/network-address-translation-nat/)). Cada nodo completo puede actuar como un nodo de arranque siempre y cuando esté disponible públicamente.
-Cuando inicie un nodo deberá registrar su [«enodo»](/developers/docs/networking-layer/network-addresses/#enode), que es el identificador público que otros pueden usar para conectarse a su nodo.
+Cuando inicia un nodo, debería registrar su [enode](/developers/docs/networking-layer/network-addresses/#enode), que es un identificador público que otros pueden utilizar para conectarse a su nodo.
El enodo usualmente se regenera en cada reinicio, así que asegúrese de mirar la documentación de su cliente sobre cómo generar un enodo persistente para su nodo de arranque.
From 12171039ccd4141881b1e5d4b73c7748de1ef8f1 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:09 -0300
Subject: [PATCH 130/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-implement-an-erc721-market/index.md
---
.../index.md | 40 ++++++++++---------
1 file changed, 21 insertions(+), 19 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/how-to-implement-an-erc721-market/index.md b/public/content/translations/es/developers/tutorials/how-to-implement-an-erc721-market/index.md
index b5beedeed50..53e7d80b5be 100644
--- a/public/content/translations/es/developers/tutorials/how-to-implement-an-erc721-market/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-implement-an-erc721-market/index.md
@@ -3,13 +3,15 @@ title: Cómo implementar un mercado ERC-721
description: Cómo poner elementos tokenizados a la venta en un tablero descentralizado de avisos clasificados
author: "Alberto Cuesta Cañada"
tags:
- - "contratos inteligentes"
- - "erc-721"
- - "solidity"
- - "tókenes"
+ [
+ "contratos Inteligentes",
+ "erc-721",
+ "Solidity",
+ "tókenes"
+ ]
skill: intermediate
lang: es
-published: 2020-03-19
+published: 19/03/2020
source: Hackernoon
sourceUrl: https://hackernoon.com/how-to-implement-an-erc721-market-1e1a32j9
---
@@ -26,13 +28,13 @@ Con la cadena de bloques, estos mercados están listos para cambiar de nuevo, pe
El modelo de negocio de un tablero de clasificados de cadena de bloques público tendrá que ser diferente del de Ebay y compañía.
-Primero, esta [la cuestión de la descentralización](/developers/docs/web2-vs-web3/). Las plataformas existentes necesitan mantener sus propios servidores. Una plataforma descentralizada es mantenida por sus usuarios, por lo que el costo de correr la plataforma central cae a cero para el propietario de la plataforma.
+En primer lugar, está [el ángulo de la descentralización](/developers/docs/web2-vs-web3/). Las plataformas existentes necesitan mantener sus propios servidores. Una plataforma descentralizada es mantenida por sus usuarios, por lo que el costo de correr la plataforma central cae a cero para el propietario de la plataforma.
-Luego está el front-end, el sitio web o la interfaz que da acceso a la plataforma. Aquí hay muchas opciones. Los propietarios de la plataforma pueden restringir el acceso y obligar a todos a utilizar su interfaz, cobrando una tarifa. También pueden decidir abrir el acceso (Poder a la gente) y dejar que cualquiera construya interfaces para la plataforma. O pueden decidir cualquier enfoque en medio de esos dos extremos.
+Luego está el front-end, el sitio web o la interfaz que da acceso a la plataforma. Aquí hay muchas opciones. Los propietarios de la plataforma pueden restringir el acceso y obligar a todos a utilizar su interfaz, cobrando una tarifa. Los propietarios de la plataforma también pueden decidir abrir el acceso (¡Poder para el pueblo!) y dejar que cualquiera construya interfaces para la plataforma. O pueden decidir cualquier enfoque en medio de esos dos extremos.
_Los líderes empresariales con mayor visión que la mía sabrán cómo monetizar esto. Todo lo que veo es que esto es diferente del statu quo y probablemente rentable._
-Además, existe la cuestión de la automatización y los pagos. Algunas cosas pueden ser muy [efectivamente tokenizadas](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com) e intercambiadas/comercializadas en un tablero de clasificados. Los activos tokenizados se transfieren fácilmente en una cadena de bloques. Los métodos de pago altamente complejos se pueden implementar fácilmente en una cadena de bloques.
+Además, existe la cuestión de la automatización y los pagos. Algunas cosas pueden ser [tokenizadas de forma muy efectiva](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com) y negociarse en un tablón de anuncios clasificados. Los activos tokenizados se transfieren fácilmente en una cadena de bloques. Los métodos de pago altamente complejos se pueden implementar fácilmente en una cadena de bloques.
Estoy olfateando una oportunidad de negocio aquí. Un tablero de clasificados sin gastos de funcionamiento puede implementarse fácilmente, con complejas rutas de pago incluidas en cada transacción. Estoy seguro de que a alguien se le ocurrirá una idea sobre para qué usar esto.
@@ -40,9 +42,9 @@ Estoy feliz de crearlo. Echemos un vistazo al código.
## Implementación {#implementation}
-Hace algún tiempo iniciamos un [repositorio de código abierto](https://github.com/HQ20/contracts?ref=hackernoon.com) con implementaciones de ejemplos de casos de negocio y otras cosas; le sugiero que eche un vistazo.
+Hace algún tiempo iniciamos un [repositorio de código abierto](https://github.com/HQ20/contracts?ref=hackernoon.com) con ejemplos de implementaciones de casos de negocio y otras cosas interesantes, por favor, échele un vistazo.
-El código de este [Tablero de Clasificados de Ethereum](https://github.com/HQ20/contracts/tree/master/contracts/classifieds?ref=hackernoon.com) está ahí; úselo y abuse de él. Solo hay que tener en cuenta que el código no ha sido auditado y deberá hacer su propia diligencia debida antes de dejar que se ponga dinero en juego.
+El código para este [Tablón de anuncios clasificados de Ethereum](https://github.com/HQ20/contracts/tree/master/contracts/classifieds?ref=hackernoon.com) está ahí, por favor, úselo y abuse de él. Solo hay que tener en cuenta que el código no ha sido auditado y deberá hacer su propia diligencia debida antes de dejar que se ponga dinero en juego.
Los fundamentos del tablero no son complejos. Todos los anuncios del tablero serán solo una estructura con unos pocos campos:
@@ -67,9 +69,9 @@ El uso de un mapeo solo significa que tenemos que tener una identificación para
A continuación se plantea la cuestión de cuáles son esos artículos con los que tratamos, y cuál es la moneda que se utiliza para pagar la transacción.
-Para los artículos, solo vamos a pedir que implementen la interfaz [ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol?ref=hackernoon.com), que realmente es solo una forma de representar artículos del mundo real en una cadena de bloques, aunque [funciona mejor con activos digitales](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com). Vamos a especificar nuestro propio contrato ERC721 en el constructor, lo que significa que cualquier activo en nuestro tablero de anuncios necesita haber sido tokenizado de antemano.
+Para los artículos, solo vamos a pedir que implementen la interfaz [ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol?ref=hackernoon.com), que en realidad es solo una forma de representar artículos del mundo real en una blockchain, aunque [funciona mejor con activos digitales](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com). Vamos a especificar nuestro propio contrato ERC721 en el constructor, lo que significa que cualquier activo en nuestro tablero de anuncios necesita haber sido tokenizado de antemano.
-Para los pagos, vamos a hacer algo parecido. La mayoría de los proyectos de cadena de bloques definen su propia criptomoneda [ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol?ref=hackernoon.com). Otros prefieren utilizar una convencional como DAI. En este tablero de anuncios, solo tiene que decidir en la construcción cuál será su moneda. Fácil.
+Para los pagos, vamos a hacer algo parecido. La mayoría de los proyectos de blockchain definen su propia criptomoneda [ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol?ref=hackernoon.com). Otros prefieren utilizar una convencional como DAI. En este tablero de anuncios, solo tiene que decidir en la construcción cuál será su moneda. Fácil.
```solidity
constructor (
@@ -108,11 +110,11 @@ function executeTrade(uint256 _trade)
public
{
Trade memory trade = trades[_trade];
- require(trade.status == "Open", "Trade is not Open.");
+ require(trade.status == "Abierto", "El comercio no está abierto.");
currencyToken.transferFrom(msg.sender, trade.poster, trade.price);
itemToken.transferFrom(address(this), msg.sender, trade.item);
- trades[_trade].status = "Executed";
- emit TradeStatusChange(_trade, "Executed");
+ trades[_trade].status = "Ejecutado";
+ emit TradeStatusChange(_trade, "Ejecutado");
}
```
@@ -127,16 +129,16 @@ function cancelTrade(uint256 _trade)
Trade memory trade = trades[_trade];
require(
msg.sender == trade.poster,
- "Trade can be cancelled only by poster."
+ "La operación solo puede ser cancelada por el anunciante."
);
- require(trade.status == "Open", "Trade is not Open.");
+ require(trade.status == "Open", "La operación no está abierta.");
itemToken.transferFrom(address(this), trade.poster, trade.item);
trades[_trade].status = "Cancelled";
emit TradeStatusChange(_trade, "Cancelled");
}
```
-Eso es todo. Ha llegado al final de la implementación. Es bastante sorprendente lo compactos que son algunos conceptos de negocio cuando se expresan en código, y este es uno de esos casos. Revise el contrato completo [en nuestro repositorio](https://github.com/HQ20/contracts/blob/master/contracts/classifieds/Classifieds.sol).
+Eso es todo. Ha llegado al final de la implementación. Es bastante sorprendente lo compactos que son algunos conceptos de negocio cuando se expresan en código, y este es uno de esos casos. Consulte el contrato completo [en nuestro repositorio](https://github.com/HQ20/contracts/blob/master/contracts/classifieds/Classifieds.sol).
## Conclusión {#conclusion}
@@ -146,4 +148,4 @@ Los tableros de anuncios clasificados también resultan ser una herramienta fác
En este artículo, he tratado de conectar la realidad del negocio de los tableros de anuncios clasificados con la implementación tecnológica. Este conocimiento debería ayudarle a crear una visión y un mapa de ruta para la implementación si tiene las habilidades adecuadas.
-Como siempre, si quiere crear algo divertido y le gustaría recibir algún consejo, [envíeme un mensaje](https://albertocuesta.es/), será bienvenido. Siempre estoy encantado de ayudar.
+Como siempre, si está construyendo algo divertido y agradecería algún consejo, por favor, ¡[escríbame](https://albertocuesta.es/)! Siempre estoy encantado de ayudar.
From 150f0f6db6415ca8e9d9d2cf7dc3784fa9941c3c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:10 -0300
Subject: [PATCH 131/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/elixir/index.md
---
.../programming-languages/elixir/index.md | 56 +++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100644 public/content/translations/es/developers/docs/programming-languages/elixir/index.md
diff --git a/public/content/translations/es/developers/docs/programming-languages/elixir/index.md b/public/content/translations/es/developers/docs/programming-languages/elixir/index.md
new file mode 100644
index 00000000000..3bb91fbe4d0
--- /dev/null
+++ b/public/content/translations/es/developers/docs/programming-languages/elixir/index.md
@@ -0,0 +1,56 @@
+---
+title: Ethereum para programadores de Elixir
+description: Aprenda a programar para Ethereum mediante proyectos y herramientas usando en Elixir.
+lang: es
+incomplete: false
+---
+
+Aprenda a programar para Ethereum mediante proyectos y herramientas usando Elixir.
+
+Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser trustless, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Controlan activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, es decir, ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
+
+## Comenzar con contratos inteligentes y con el lenguaje Solidity {#getting-started-with-smart-contracts-and-solidity}
+
+**Dé sus primeros pasos para integrar Elixir con Ethereum**
+
+¿Necesita una introducción más básica para empezar? Visite [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
+
+- [Cadena de bloques explicada]
+ (https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [Comprender los contratos inteligentes](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [Escriba su primer contrato inteligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Aprenda a compilar e implementar Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+
+## Artículos para principiantes {#beginner-articles}
+
+- [Comprender finalmente las cuentas de Ethereum] (https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
+- [Ethers — Una biblioteca Web3 de Ethereum de primera clase para Elixir] (https://medium.com/@alisinabh/announcing-ethers-a-first-class-ethereum-web3-library-for-elixir-1d64e9409122)
+
+## Articulos para usuarios familiarizados {#intermediate-articles}
+
+- [Cómo firmar transacciones de contratos de Ethereum sin procesar con Elixir] (https://kohlerjp.medium.com/how-to-sign-raw-ethereum-contract-transactions-with-elixir-f8822bcc813b)
+- [Contratos inteligentes de Ethereum y Elixir] (https://medium.com/agile-alpha/ethereum-smart-contracts-and-elixir-c7c4b239ddb4)
+
+## Proyectos y herramientas de Elixir {#elixir-projects-and-tools}
+
+### Activos {#active}
+
+- [claves_bloque](https://github.com/ExWeb3/block_keys): implementación _BIP32 y BIP44 en Elixir (jerarquía multicuenta para carteras determinísticas)_
+- [ethereumex](https://github.com/mana-ethereum/ethereumex) - _cliente JSON-RPC de Elixir para la cadena de bloques de Ethereum_
+- [ethers](https://github.com/ExWeb3/elixir_ethers) - _Una librería Web3 completa para interactuar con contratos inteligentes en Ethereum usando Elixir
+- [ethers_kms](https://github.com/ExWeb3/elixir_ethers_kms) - _Una librería de firmas KMS para Ethers (firma de transacciones con AWS KMS)_
+- [ex_ABI](https://github.com/poanetwork/ex_abi) - _Implementación del analizador/decodificador/codificador ABI de Ethereum en Elixir_
+- [ex_keccak](https://github.com/ExWeb3/ex_keccak) - _Biblioteca de Elixir para calcular hashes Keccak SHA3-256 usando un NIF basado en el pequeño Rust tiny-keccak de crate_
+- [ex_rlp](https://github.com/mana-ethereum/ex_rlp) - _Implementación de la codificación RLP (Recursive Lenght Prefix) de Ethereum_
+
+### Archivado / Sin más mantenimiento {#archived--no-longer-maintained}
+
+- [eth](https://hex.pm/packages/eth) - _Utilidades de Ethereum para Elixir_
+- [exw3](https://github.com/hswick/exw3) - _Cliente de alto nivel del RPC de Ethereum para Elixir_
+- [mana](https://github.com/mana-ethereum/mana) - _Implementación del nodo completo de Ethereum escrito en Elixir_
+
+¿Buscas más recursos? Visite [nuestra página de inicio para desarrolladores](/developers/).
+
+## Colaboradores de la comunidad de Elixir {#elixir-community-contributors}
+
+El [canal de Elixir #ethereum en Slack](https://elixir-lang.slack.com/archives/C5RPZ3RJLhttps://elixir-lang.slack.com/archives/C5RPZ3RJL) aloja a una comunidad en rápido crecimiento y es un recurso exclusivo para discusiones sobre cualquiera de los proyectos mencionados y temas relacionados.
From 78085e05f7f9b7ae81716f504dc183a09da74922 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:12 -0300
Subject: [PATCH 132/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/python/index.md
---
.../programming-languages/python/index.md | 108 ++++++++++--------
1 file changed, 59 insertions(+), 49 deletions(-)
diff --git a/public/content/translations/es/developers/docs/programming-languages/python/index.md b/public/content/translations/es/developers/docs/programming-languages/python/index.md
index bf014fdc9dc..ce3083f7a54 100644
--- a/public/content/translations/es/developers/docs/programming-languages/python/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/python/index.md
@@ -5,86 +5,96 @@ lang: es
incomplete: true
---
-Aprenda a desarrollar para Ethereum mediante proyectos y herramientas basados en Python
+Aprenda a desarrollar para Ethereum usando proyectos y herramientas basadas en Python
-Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser confiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, lo que significa que ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
+Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser confiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, es decir, ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
-## Comenzar con los contratos inteligentes y el lenguaje Solidity {#getting-started-with-smart-contracts-and-solidity}
+## Comenzar con contratos inteligentes y con el lenguaje Solidity {#getting-started-with-smart-contracts-and-solidity}
**Da los primeros pasos para integrar Python con Ethereum**
-¿Necesitas una introducción más básica para empezar? Visita [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
+¿Necesita una introducción más básica para empezar? Visite [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
-- [Blockchain explicada](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [Cadena de bloques explicada]
+ (https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
- [Comprender los contratos inteligentes](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [Escribir el primer contrato inteligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
-- [Aprender a compilar e implementar Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [Escriba su primer contrato inteligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Aprenda a compilar e implementar Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [Informe sobre el estado de Python en la blockchain en 2023](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023)
## Artículos para principiantes {#beginner-articles}
-- [Guía del programador (Python) para Ethereum](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/)
-- [Informe sobre el estado de Python en la cadena de bloques 2023](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023)
+- [Resumen de web3.py](https://web3py.readthedocs.io/en/latest/overview.html)
+- [Un recorrido por el ecosistema Python de Ethereum](https://snakecharmers.ethereum.org/python-ecosystem/)
+- [Una guía de Ethereum para desarrolladores (de Python)](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/)
+- [Digno de un premio: una guía de hackatón de Ethereum con Python](https://snakecharmers.ethereum.org/prize-worthy/)
- [Una introducción a los contratos inteligentes con Vyper](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/)
-- [Implemente su propio token ERC20 con Python y Brownie](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58)
-- [¿Cómo desarrollar un contrato de Ethereum mediante Python Flask?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e)
+- [¿Cómo desarrollar un contrato de Ethereum usando Python y Flask?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e)
- [Introducción a Web3.py · Ethereum para desarrolladores de Python](https://www.dappuniversity.com/articles/web3-py-intro)
-- [Cómo llamar a una función de contrato inteligente mediante Python y web3.py](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py)
+- [Cómo llamar a una función de un contrato inteligente usando Python y web3.py](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py)
-## Artículos de nivel intermedio {#intermediate-articles}
+## Articulos para usuarios familiarizados {#intermediate-articles}
-- [Desarrollo de Dapp para programadores de Python](https://levelup.gitconnected.com/dapps-development-for-python-developers-f52b32b54f28)
-- [Creación de una interfaz de Python Ethereum: Parte 1](https://hackernoon.com/creating-a-python-ethereum-interface-part-1-4d2e47ea0f4d)
-- [Contratos inteligentes de Ethereum en Python: Una guía completa (ish)](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988)
-- [Utilizar Brownie y Python para implementar contratos inteligentes](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp)
-- [Crear NFT en OpenSea con Brownie](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/)
+- [Amigos de web3.py: introducción a Ape](https://snakecharmers.ethereum.org/intro-to-ape/)
+- [Desarrollo de dapps para programadores de Python](https://levelup.gitconnected.com/dapps-development-for-python-developers-f52b32b54f28)
+- [Creación de una interfaz de Python para Ethereum: parte 1](https://hackernoon.com/creating-a-python-ethereum-interface-part-1-4d2e47ea0f4d)
+- [Contratos inteligentes de Ethereum en Python: una guía (más o menos) completa](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988)
-## Patrones de uso avanzados {#advanced-use-patterns}
+## Patrones de uso avanzado {#advanced-use-patterns}
-- [Compilar, desplegar y llamar a contratos inteligentes de Ethereum mediante Python](https://yohanes.gultom.id/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/)
-- [Analizar contratos inteligentes de Solifity con Slither](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither)
-- [Tutorial fintech para la cadena de bloques: prestar y pedir prestado con Python](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/)
+- [Patrones de web3.py: suscripciones a eventos en tiempo real](https://snakecharmers.ethereum.org/subscriptions/)
+- [Patrones de web3.py: WebSocketProvider](https://snakecharmers.ethereum.org/websocketprovider/)
+- [Compilar, implementar y llamar a un contrato inteligente de Ethereum usando Python](https://yohanes.gultom.id/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/)
+- [Analizar contratos inteligentes de Solidity con Slither](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither)
+- [Tutorial de tecnología financiera en la blockchain: préstamos y empréstitos con Python](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/)
+
+## Artículos archivados
+
+- [Implemente su propio token ERC-20 con Python y Brownie](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58)
+- [Usar Brownie y Python para implementar contratos inteligentes](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp)
+- [Creación de NFT en OpenSea con Brownie](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/)
## Proyectos y herramientas de Python {#python-projects-and-tools}
### Activos: {#active}
-- [Web3.py:](https://github.com/ethereum/web3.py) _biblioteca de Python para interactuar con Ethereum_
-- [Vyper:](https://github.com/ethereum/vyper/) _lenguaje de contratos inteligentes tipo Python para la EVM_
-- [Ape:](https://github.com/ApeWorX/ape) _herramienta de desarrollo de contratos inteligentes para pythonistas, informáticos y profesionales de seguridad_
-- [py-evm:](https://github.com/ethereum/py-evm) _implementación de la máquina virtual de Ethereum_
-- [eth-tester:](https://github.com/ethereum/eth-tester) _herramientas para probar aplicaciones basadas en Ethereum_
-- [eth-utils](https://github.com/ethereum/eth-utils/): _Funciones de utilidad para trabajar con bases de código relacionadas con Ethereum_
-- [py-solc-x:](https://pypi.org/project/py-solc-x/) _wrapper de Python en torno al compilador de Solidity con soporte 0.5.x_
-- [pymaker:](https://github.com/makerdao/pymaker) _API de Python para contratos de Maker_
-- [siwe:](https://github.com/signinwithethereum/siwe-py) _inicio de sesión con Ethereum (siwe) para Python_
-- [DeFi Web3 para integraciones Ethereum:](https://github.com/tradingstrategy-ai/web3-ethereum-defi) _paquete de Python con integraciones listas para ERC-20, Uniswap y otros proyectos populares_
-- [Wake](https://getwake.io): _Un marco Python todo en uno para pruebas de contratos, fuzzing, implementación, análisis de vulnerabilidades y navegación de código (servidor de lenguajes, [Herramientas para Solidity](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity))_
+- [Web3.py](https://github.com/ethereum/web3.py) - _Biblioteca de Python para interactuar con Ethereum_
+- [Vyper](https://github.com/ethereum/vyper/) - _Lenguaje de contrato inteligente pythónico para la EVM_
+- [Ape](https://github.com/ApeWorX/ape) - _La herramienta de desarrollo de contratos inteligentes para pythonistas, científicos de datos y profesionales de la seguridad_
+- [py-evm](https://github.com/ethereum/py-evm) - _Implementación de la máquina virtual de Ethereum_
+- [eth-tester](https://github.com/ethereum/eth-tester) - _Herramientas para probar aplicaciones basadas en Ethereum_
+- [eth-utils](https://github.com/ethereum/eth-utils/) - _Funciones de utilidad para trabajar con bases de código relacionadas con Ethereum_
+- [py-solc-x](https://pypi.org/project/py-solc-x/) - _Envoltorio de Python para el compilador de Solidity solc con soporte para 0.5.x_
+- [pymaker](https://github.com/makerdao/pymaker) - _API de Python para contratos de Maker_
+- [siwe](https://github.com/signinwithethereum/siwe-py) - _Iniciar sesión con Ethereum (siwe) para Python_
+- [Web3 DeFi para integraciones de Ethereum](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _Un paquete de Python con integraciones listas para ERC-20, Uniswap y otros proyectos populares_
+- [Wake](https://getwake.io) - _Framework de Python todo en uno para pruebas de contratos, fuzzing, implementación, escaneo de vulnerabilidades y navegación de código (servidor de lenguaje - [Herramientas para Solidity](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity))_
-### Archivados/ya no mantenidos: {#archived--no-longer-maintained}
+### Archivados o sin mantenimiento: {#archived--no-longer-maintained}
-- [Trinity:](https://github.com/ethereum/trinity) _cliente Python de Ethereum_
-- [Mamba:](https://github.com/arjunaskykok/mamba) _entorno de trabajo para escribir, compilar e implementar contratos inteligentes escritos con Vyper_
-- [Brownie](https://github.com/eth-brownie/brownie): _Un entorno de trabajo de Python para implementar, probar e interactuar con contratos inteligentes de Ethereum_
-- [pydevp2p:](https://github.com/ethereum/pydevp2p) _implementación de la pila P2P de Ethereum_
-- [py-wasm:](https://github.com/ethereum/py-wasm) _implementación de Python del intérprete de WebAssembly_
+- [Trinity](https://github.com/ethereum/trinity) - _Cliente de Python para Ethereum_
+- [Mamba](https://github.com/arjunaskykok/mamba) - _Framework para escribir, compilar e implementar contratos inteligentes escritos en el lenguaje Vyper_
+- [Brownie](https://github.com/eth-brownie/brownie) - _Framework de Python para implementar, probar e interactuar con contratos inteligentes de Ethereum_
+- [pydevp2p](https://github.com/ethereum/pydevp2p) - _Implementación de la pila P2P de Ethereum_
+- [py-wasm](https://github.com/ethereum/py-wasm) - _Implementación en Python del intérprete de Web Assembly_
-¿Buscas más recursos? Visite [ethereum.org/developers](/developers/).
+¿Buscas más recursos? Consulte [ethereum.org/developers](/developers/).
## Proyectos que usan herramientas de Python {#projects-using-python-tooling}
Los siguientes proyectos basados en Ethereum utilizan las herramientas mencionadas en esta página. Los repositorios de código abierto relacionados sirven como una buena referencia para código de ejemplo y mejores prácticas.
-- [Yearn Finance](https://yearn.finance/) y el [repositorio de Yearn Vault Contracts](https://github.com/yearn/yearn-vaults)
-- [Curve](https://curve.fi/) y el [repositorio de contratos inteligentes de Curve](https://github.com/curvefi/curve-contract)
-- [BadgerDAO](https://badger.com/) y [contratos inteligentes con cadena de herramientas Brownie](https://github.com/Badger-Finance/badger-system)
-- [Sushi](https://sushi.com/) usa [Python en la gestión e implementación de sus contratos de vesting](https://github.com/sushiswap/sushi-vesting-protocols)
-- [Alpha Finance](https://alphafinance.io/), de la fama de Alpha Homora, usa [Brownie para probar e implementar contratos inteligentes](https://github.com/AlphaFinanceLab/alpha-staking-contract)
+- [Yearn Finance](https://yearn.finance/) y el [repositorio de contratos de bóvedas de Yearn](https://github.com/yearn/yearn-vaults)
+- [Curve](https://www.curve.finance/) y el [repositorio de contratos inteligentes de Curve](https://github.com/curvefi/curve-contract)
+- [BadgerDAO](https://badger.com/) y los [contratos inteligentes que usan el conjunto de herramientas de Brownie](https://github.com/Badger-Finance/badger-system)
+- [Sushi](https://sushi.com/) utiliza [Python para administrar e implementar sus contratos de adjudicación](https://github.com/sushiswap/sushi-vesting-protocols)
+- [Alpha Finance](https://alphafinance.io/), famoso por Alpha Homora, utiliza [Brownie para probar e implementar contratos inteligentes](https://github.com/AlphaFinanceLab/alpha-staking-contract)
-## Debate de la comunidad de Pyton {#python-community-contributors}
+## Discusión de la comunidad de Python {#python-community-contributors}
-- [Discord de la comunidad de Python para Ethereum](https://discord.gg/9zk7snTfWe) para Web3.py y otras discusiones sobre el marco Python
-- [Vyper Discord](https://discord.gg/SdvKC79cJk)para discusión sobre programación de contratos inteligentes en Vyper
+- [Discord de la comunidad de Python de Ethereum](https://discord.gg/9zk7snTfWe) para discusiones sobre Web3.py y otros frameworks de Python
+- [Discord de Vyper](https://discord.gg/SdvKC79cJk) para discusiones sobre la programación de contratos inteligentes con Vyper
## Otras listas agregadas {#other-aggregated-lists}
-La wiki de Vyper tiene una [increíble lista de recursos para Vyper](https://github.com/vyperlang/vyper/wiki/Vyper-tools-and-resources).
\ No newline at end of file
+La wiki de Vyper tiene una [increíble lista de recursos para Vyper](https://github.com/vyperlang/vyper/wiki/Vyper-tools-and-resources)
\ No newline at end of file
From c3d21160ae0e45724abb524cd41195f08aa06c5c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:14 -0300
Subject: [PATCH 133/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/keys/index.md
---
.../consensus-mechanisms/pos/keys/index.md | 40 +++++++++----------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/keys/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/keys/index.md
index bf573e04f89..c6ab2560b00 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/keys/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/keys/index.md
@@ -6,15 +6,15 @@ lang: es
Ethereum asegura los activos de los usuarios utilizando criptografía de claves pública-privada. La clave pública se utiliza como base para una dirección de Ethereum, es decir, es visible para el público en general y se utiliza como un identificador único. La clave privada (o «secreta») solo debe ser accesible para el propietario de una cuenta. La clave privada se utiliza para «firmar» transacciones y datos para que la criptografía pueda demostrar que el titular aprueba alguna acción de una clave privada específica.
-Las claves de Ethereum se generan utilizando [criptografía de curva elíptica](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography).
+Las claves de Ethereum se generan mediante [criptografía de curva elíptica](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography).
-No obstante, cuando Ethereum cambió de [prueba de trabajo](/developers/docs/consensus-mechanisms/pow) a [prueba de participación](/developers/docs/consensus-mechanisms/pos), se añadió un nuevo tipo de clave a Ethereum. Las claves originales siguen funcionando exactamente igual que antes: no hubo cambios en las claves basadas en curvas elípticas que protegen las cuentas. No obstante, los usuarios necesitaban un nuevo tipo de clave para participar en la prueba de participación colocando ETH y ejecutando validadores. Esta necesidad surgió de los desafíos de escalabilidad asociados con muchos mensajes que pasaban entre un gran número de validadores que requerían un método criptográfico que se pudiera agregar fácilmente para reducir la cantidad de comunicación necesaria para que la red llegara a un consenso.
+Sin embargo, cuando Ethereum pasó de la [prueba de trabajo](/developers/docs/consensus-mechanisms/pow) a la [prueba de participación](/developers/docs/consensus-mechanisms/pos), se añadió un nuevo tipo de clave a Ethereum. Las claves originales siguen funcionando exactamente igual que antes: no hubo cambios en las claves basadas en curvas elípticas que protegen las cuentas. No obstante, los usuarios necesitaban un nuevo tipo de clave para participar en la prueba de participación colocando ETH y ejecutando validadores. Esta necesidad surgió de los desafíos de escalabilidad asociados con muchos mensajes que pasaban entre un gran número de validadores que requerían un método criptográfico que se pudiera agregar fácilmente para reducir la cantidad de comunicación necesaria para que la red llegara a un consenso.
Este nuevo tipo de clave utiliza el esquema de firma [**Boneh-Lynn-Shacham (BLS)**](https://wikipedia.org/wiki/BLS_digital_signature). BLS permite una agregación muy eficiente de firmas, pero también permite la ingeniería inversa de claves de validadores individuales añadidas y es perfecto para administrar acciones entre validadores.
-## Los dos tipos de claves de validación {#two-types-of-keys}
+## Los dos tipos de claves de validador {#two-types-of-keys}
-Antes de cambiar a la prueba de participación, los usuarios de Ethereum sólo tenían una única clave privada basada en la curva elíptica para acceder a sus fondos. Con la introducción de la prueba de participación, los usuarios que deseaban ser participantes en solitario también requerían una **clave de validación** y una **clave de retirada**.
+Antes de cambiar a la prueba de participación, los usuarios de Ethereum sólo tenían una única clave privada basada en la curva elíptica para acceder a sus fondos. Con la introducción de la prueba de participación, los usuarios que deseaban ser stakers en solitario también necesitaban una **clave de validador** y una **clave de retirada**.
### La clave de validador {#validator-key}
@@ -25,7 +25,7 @@ La clave de firma del validador consta de dos elementos:
El propósito de la clave privada de validador es firmar operaciones en cadena, como propuestas de bloque y certificados. Debido a esto, estas claves deben estar en una cartera en línea.
-Esta flexibilidad tiene la ventaja de mover las claves de firma del validador muy rápidamente de un dispositivo a otro, sin embargo, si se han perdido o se han robado, un ladrón puede ser capaz de **actuar maliciosamente** de varias maneras:
+Esta flexibilidad tiene la ventaja de mover las claves de firma del validador muy rápidamente de un dispositivo a otro; sin embargo, si se pierden o son robadas, un ladrón puede **actuar maliciosamente** de varias maneras:
- Conseguir que el validador sea recortado por:
- Ser un proponente y firmar dos bloques de balizas diferentes para el mismo espacio.
@@ -33,13 +33,13 @@ Esta flexibilidad tiene la ventaja de mover las claves de firma del validador mu
- Ser un certificador y firmar dos certificaciones diferentes con el mismo objetivo.
- Forzar una salida voluntaria, lo que impide que el validador participe y otorga acceso a su saldo de ETH al propietario de la clave de retirada.
-La **clave pública del validador** se incluye en los datos de la transacción cuando un usuario deposita ETH en el contrato de depósito de participación. Esto se conoce como los _datos de depósito_ y permite a Ethereum identificar el validador.
+La **clave pública del validador** se incluye en los datos de la transacción cuando un usuario deposita ETH en el contrato de depósito de staking. Esto se conoce como los _datos de depósito_ y permite a Ethereum identificar al validador.
### Credenciales de retirada {#withdrawal-credentials}
-Cada validador tiene una propiedad conocida como _credenciales de retirada_. Este campo de 32 bytes comienza con un `0x00`, que representa las credenciales de retirada de BLS, o un `0x01`, que representa las credenciales que apuntan a una dirección de ejecución.
+Cada validador tiene una propiedad conocida como _credenciales de retirada_. Este campo de 32 bytes comienza con un `0x00`, que representa las credenciales de retirada de BLS, o con un `0x01`, que representa las credenciales que apuntan a una dirección de ejecución.
-Los validadores con `0x00` claves BLS deben actualizar estas credenciales para apuntar a una dirección de ejecución con el fin de activar el exceso de pagos de saldo o la retirada completa de la participación. Esto se puede hacer proporcionando una dirección de ejecución en los datos de depósito durante la generación inicial de la clave, _O_ utilizando la clave de retirada en un momento posterior para firmar y transmitir un mensaje `BLSToExecutionChange`.
+Los validadores con claves BLS `0x00` deben actualizar estas credenciales para que apunten a una dirección de ejecución con el fin de activar los pagos de saldo sobrante o la retirada completa del staking. Esto se puede hacer proporcionando una dirección de ejecución en los datos de depósito durante la generación inicial de la clave, _O_ usando la clave de retirada más adelante para firmar y difundir un mensaje `BLSToExecutionChange`.
### La clave de retirada {#withdrawal-key}
@@ -50,19 +50,19 @@ Al igual que las claves de validación, las claves de retirada también constan
- Clave **privada** de retirada
- Clave **pública** de retirada
-Perder esta llave antes de actualizar las credenciales de retiro al tipo `0x01` significa perder el acceso al saldo del validador. El validador todavía puede firmar certificaciones y bloqueos, ya que estas acciones requieren la clave privada del validador, sin embargo, hay poco o ningún incentivo si se pierden las claves de retirada.
+Perder esta clave antes de actualizar las credenciales de retirada al tipo `0x01` significa perder el acceso al saldo del validador. El validador todavía puede firmar certificaciones y bloqueos, ya que estas acciones requieren la clave privada del validador, sin embargo, hay poco o ningún incentivo si se pierden las claves de retirada.
La separación de las claves del validador de las claves de la cuenta de Ethereum permite que un solo usuario ejecute varios validadores.
-
+
-**Nota**: Salir de las funciones de participación y retirar el balance del validador actualmente requiere firmar un [mensaje de salida voluntaria (VEM)](https://mirror.xyz/ladislaus.eth/wmoBbUBes2Wp1_6DvP6slPabkyujSU7MZOFOC3QpErs&1) con la clave de validador. Sin embargo, [EIP-7002](https://eips.ethereum.org/EIPS/eip-7002) es una propuesta que permitirá a un usuario activar la salida de un validador y retirar su balance firmando mensajes de salida con la clave de retirada en el futuro. Esto reducirá las suposiciones de confianza al permitir que los participantes que delegan ETH a [proveedores de participación como servicio](/staking/saas/#what-is-staking-as-a-service) mantengan el control de sus fondos.
+**Nota**: Salir de las tareas de staking y retirar el saldo de un validador requiere actualmente firmar un [mensaje de salida voluntaria (VEM)](https://mirror.xyz/ladislaus.eth/wmoBbUBes2Wp1_6DvP6slPabkyujSU7MZOFOC3QpErs&1) con la clave del validador. Sin embargo, [EIP-7002](https://eips.ethereum.org/EIPS/eip-7002) es una propuesta que permitirá a un usuario activar la salida de un validador y retirar su saldo firmando mensajes de salida con la clave de retirada en el futuro. Esto reducirá las suposiciones de confianza al permitir a los stakers que delegan ETH a [proveedores de staking como servicio](/staking/saas/#what-is-staking-as-a-service) mantener el control de sus fondos.
-## Derivar claves de una frase semilla {#deriving-keys-from-seed}
+## Derivación de claves a partir de una frase semilla {#deriving-keys-from-seed}
Si cada 32 ETH en participación requiriera un nuevo conjunto de 2 claves completamente independientes, la gestión de claves se volvería rápidamente difícil de manejar, especialmente para los usuarios que ejecutan múltiples validadores. En su lugar, se pueden derivar múltiples claves de validación de un solo secreto común y el almacenamiento de ese único secreto permite el acceso a múltiples claves de validación.
-[Las frases mnemotécnicas](https://en.bitcoinwiki.org/wiki/Mnemonic_phrase) y las rutas son características prominentes que los usuarios a menudo encuentran cuando [acceden](https://ethereum.stackexchange.com/questions/19055/what-is-the-difference-between-m-44-60-0-0-and-m-44-60-0) a sus carteras. Se denomina frase mnemotécnica a una secuencia de palabras que actúan como semilla inicial para una clave privada. Cuando se combina con datos adicionales, la frase mnemotécnica genera un hash conocido como la «clave maestra». Hace pensar en la raíz de un árbol. Las ramas de esta raíz se pueden derivar utilizando una ruta jerárquica para que los nodos secundarios (hijos) puedan existir como combinaciones del hash de su nodo padre y su índice en el árbol. Lea sobre los estándares [BIP-32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) y [BIP-19](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) para la generación de claves basadas en la mnemotecnia.
+Las [mnemotécnicas](https://en.bitcoinwiki.org/wiki/Mnemonic_phrase) y las rutas son características destacadas que los usuarios suelen encontrar cuando [acceden](https://ethereum.stackexchange.com/questions/19055/what-is-the-difference-between-m-44-60-0-0-and-m-44-60-0) a sus monederos. Se denomina frase mnemotécnica a una secuencia de palabras que actúan como semilla inicial para una clave privada. Cuando se combina con datos adicionales, la frase mnemotécnica genera un hash conocido como la «clave maestra». Hace pensar en la raíz de un árbol. Las ramas de esta raíz se pueden derivar utilizando una ruta jerárquica para que los nodos secundarios (hijos) puedan existir como combinaciones del hash de su nodo padre y su índice en el árbol. Lea sobre los estándares [BIP-32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) y [BIP-19](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) para la generación de claves basadas en mnemotécnicas.
Estas rutas tienen la siguiente estructura, que les resultará familiar a los usuarios que hayan interactuado con carteras de hardware:
@@ -76,7 +76,7 @@ Los recortes en esta ruta separan los componentes de la clave privada de la sigu
master_key / purpose / coin_type / account / change / address_index
```
-Esta lógica permite a los usuarios adjuntar tantos validadores como sea posible a una sola **frase mnemotécnica**, porque la raíz del árbol puede ser común y diferenciarse luego en las ramas. El usuario puede **derivar cualquier número de llaves** de la frase mnemotécnica.
+Esta lógica permite a los usuarios adjuntar tantos validadores como sea posible a una única **frase mnemotécnica** porque la raíz del árbol puede ser común y la diferenciación puede ocurrir en las ramas. El usuario puede **derivar cualquier número de claves** de la frase mnemotécnica.
```
[m / 0]
@@ -88,13 +88,13 @@ Esta lógica permite a los usuarios adjuntar tantos validadores como sea posible
[m / 2]
```
-Cada rama está separada por un `/`, por lo que `m/2` significa comenzar con la clave maestra y seguir la rama 2. En el siguiente esquema, se utiliza una sola frase mnemotécnica para almacenar tres claves de retirada, cada una con dos validadores asociados.
+Cada rama está separada por una `/` de modo que `m/2` significa comenzar con la clave maestra y seguir la rama 2. En el siguiente esquema, se utiliza una sola frase mnemotécnica para almacenar tres claves de retirada, cada una con dos validadores asociados.
-
+
-## Más lecturas {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Publicación en el blog de Ethereum Foundation por Carl Beekhuizen](https://blog.ethereum.org/2020/05/21/keys/)
+- [Publicación del blog de la Fundación Ethereum por Carl Beekhuizen](https://blog.ethereum.org/2020/05/21/keys/)
- [Generación de claves EIP-2333 BLS12-381](https://eips.ethereum.org/EIPS/eip-2333)
-- [EIP-7002: Salidas activables por la capa de ejecución](https://web.archive.org/web/20250125035123/https://research.2077.xyz/eip-7002-unpacking-improvements-to-staking-ux-post-merge)
-- [Gestión de claves a gran escala](https://docs.ethstaker.cc/ethstaker-knowledge-base/scaled-node-operators/key-management-at-scale)
+- [EIP-7002: Salidas activadas por la capa de ejecución](https://web.archive.org/web/20250125035123/https://research.2077.xyz/eip-7002-unpacking-improvements-to-staking-ux-post-merge)
+- [Gestión de claves a escala](https://docs.ethstaker.cc/ethstaker-knowledge-base/scaled-node-operators/key-management-at-scale)
From aa75faf9bfa662cc792b03c2c3e1c504c8d43c08 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:15 -0300
Subject: [PATCH 134/589] update(i18n):
public/content/translations/es/developers/tutorials/smart-contract-security-guidelines/index.md
---
.../index.md | 73 +++++++++----------
1 file changed, 35 insertions(+), 38 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/smart-contract-security-guidelines/index.md b/public/content/translations/es/developers/tutorials/smart-contract-security-guidelines/index.md
index d11b2781fef..897fc2ba8c7 100644
--- a/public/content/translations/es/developers/tutorials/smart-contract-security-guidelines/index.md
+++ b/public/content/translations/es/developers/tutorials/smart-contract-security-guidelines/index.md
@@ -1,11 +1,8 @@
---
-title: Directrices de seguridad de contratos inteligentes
+title: Pautas de seguridad de contratos inteligentes
description: Lista de directrices de seguridad para tener en cuenta al crear una Dapp
author: "Trailofbits"
-tags:
- - "solidity"
- - "contratos inteligentes"
- - "seguridad"
+tags: [ "Solidity", "contratos Inteligentes", "seguridades" ]
skill: intermediate
lang: es
published: 2020-09-06
@@ -23,72 +20,72 @@ El diseño del contrato debe ser verse con antelación, antes de escribir cualqu
La documentación se puede escribir en diferentes niveles y debe actualizarse al implementar los contratos:
-- **Una descripción sencilla del sistema** que indique lo que hacen los contratos y cualquier suposición en la base de código.
-- **Esquema y diagramas arquitectónicos**, incluyendo las interacciones con el contrato y la máquina de estado del sistema. Las [impresoras de Slither](https://github.com/crytic/slither/wiki/Printer-documentation) pueden ayudar a generar estos esquemas.
-- **Documentación de código minuciosa**; el [formato Natspec](https://solidity.readthedocs.io/en/develop/natspec-format.html) puede usarse para Solidity.
+- **Una descripción del sistema en un inglés sencillo**, que describa lo que hacen los contratos y cualquier suposición sobre la base del código.
+- **Esquemas y diagramas de arquitectura**, incluidas las interacciones del contrato y la máquina de estados del sistema. Los [impresores de Slither](https://github.com/crytic/slither/wiki/Printer-documentation) pueden ayudar a generar estos esquemas.
+- **Documentación exhaustiva del código**, se puede utilizar el [formato Natspec](https://docs.soliditylang.org/en/develop/natspec-format.html) para Solidity.
-### Cálculo en cadena vs. fuera de cadena {#on-chain-vs-off-chain-computation}
+### Computación on-chain frente a off-chain {#onchain-vs-offchain-computation}
-- **Mantenga todo el código que se pueda fuera de cadena.** Mantenga una capa en cadena pequeña. Preprocese datos con código fuera de la cadena de tal manera que la verificación en cadena sea simple. ¿Necesito una lista ordenada? Ordene la lista fuera de la cadena y luego solo compruebe su orden dentro de la cadena.
+- **Mantenga la mayor cantidad de código que pueda off-chain.** Mantenga la capa on-chain pequeña. Preprocese los datos con código off-chain de tal manera que la verificación on-chain sea sencilla. ¿Necesito una lista ordenada? Ordene la lista fuera de la cadena y luego solo compruebe su orden dentro de la cadena.
-### Capacidad de mejora {#upgradeability}
+### Actualizabilidad {#upgradeability}
-Analizamos diferentes soluciones de mejora en [nuestra entrada de blog](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/). Tome una decisión deliberada de si admitir la capacidad de mejora o no antes de escribir cualquier código. La decisión influirá en la forma en que estructura su código. En general, se recomienda:
+Analizamos las diferentes soluciones de actualizabilidad en [nuestra publicación de blog](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/). Tome una decisión deliberada de si admitir la capacidad de mejora o no antes de escribir cualquier código. La decisión influirá en la forma en que estructura su código. En general, se recomienda:
-- **Favoreciendo la [migración de contratos](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/) sobre la capacidad de actualización. ** Los sistemas de migración tienen muchas de las mismas ventajas que los que se pueden actualizar, sin sus inconvenientes.
-- **Utilizar el patrón de separación de datos por sobre delegatecallproxy.** Si el proyecto tiene una clara separación de abstracción, la mejora mediante la separación de datos requerirá solo de unos pocos ajustes. delegatecallproxy requiere conocimientos sobre la EVM y es altamente propenso a errores.
-- **Documentar el procedimiento de migración/actualización antes de la implementación.** Si tiene que reaccionar bajo presión sin ninguna directriz, cometerá errores. Escriba el procedimiento a seguir con antelación. Debe incluir:
+- **Favorecer la [migración de contratos](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/) sobre la actualizabilidad.** Los sistemas de migración tienen muchas de las mismas ventajas que los actualizables, sin sus inconvenientes.
+- **Usar el patrón de separación de datos en lugar del patrón delegatecallproxy.** Si su proyecto tiene una clara separación de abstracción, la actualizabilidad mediante la separación de datos solo requerirá unos pocos ajustes. delegatecallproxy requiere conocimientos sobre la EVM y es altamente propenso a errores.
+- **Documente el procedimiento de migración/actualización antes del despliegue.** Si tiene que reaccionar bajo estrés sin ninguna directriz, cometerá errores. Escriba el procedimiento a seguir con antelación. Debe incluir:
- Las llamadas que inician los nuevos contratos
- Dónde se almacenan las claves y cómo acceder a ellas
- Cómo revisar la implementación. Desarrolle y pruebe un script posterior a la implementación.
-## Guías de implementación {#implementation-guidelines}
+## Directrices de implementación {#implementation-guidelines}
-**Busque simplicidad ante todo.** Use simpre la solución más simple que se adapte a su propósito. Cualquier miembro del equipo debería ser capaz de entender la solución.
+**Busque la simplicidad.** Utilice siempre la solución más sencilla que se ajuste a su propósito. Cualquier miembro del equipo debería ser capaz de entender la solución.
### Composición de funciones {#function-composition}
La arquitectura del código base debería hacer que el código sea fácil de revisar. Evite opciones arquitectónicas que disminuyan la capacidad de razonar acerca de la corrección.
- **Divida la lógica de su sistema**, ya sea a través de múltiples contratos o agrupando funciones similares (por ejemplo, autenticación, aritmética, ...).
-- **Escriba pequeñas funciones con un propósito claro.** Esto facilitará la revisión y permitirá la prueba de componentes individuales.
+- **Escriba funciones pequeñas con un propósito claro.** Esto facilitará la revisión y permitirá probar los componentes individuales.
### Herencia {#inheritance}
-- **Mantenga la herencia manejable.** La herencia debe utilizarse para dividir la lógica; sin embargo, el proyecto debe apuntar a minimizar la profundidad y el ancho del árbol de herencia.
-- **Use la [impresora de herencia](https://github.com/crytic/slither/wiki/Printer-documentation#inheritance-graph) de Slither para comprobar la jerarquía de los contratos.** La impresora de herencia ayudará a revisar el tamaño de la jerarquía.
+- **Mantenga la herencia manejable.** La herencia debe usarse para dividir la lógica, sin embargo, su proyecto debe apuntar a minimizar la profundidad y la anchura del árbol de herencia.
+- **Utilice el [impresor de herencia](https://github.com/crytic/slither/wiki/Printer-documentation#inheritance-graph) de Slither para comprobar la jerarquía de los contratos.** El impresor de herencia le ayudará a revisar el tamaño de la jerarquía.
-### Events {#events}
+### Eventos {#events}
-- **Registre todas las operaciones cruciales.** Los eventos ayudarán a depurar el contrato durante el desarrollo y monitorearlo después de la implementación.
+- **Registre todas las operaciones cruciales.** Los eventos ayudarán a depurar el contrato durante el desarrollo y a supervisarlo después del despliegue.
-### Evite inconvenientes conocidos {#avoid-known-pitfalls}
+### Evite los escollos conocidos {#avoid-known-pitfalls}
-- **Tenga presente los problemas de seguridad más comunes.** Hay muchos recursos en línea para aprender sobre problemas comunes, tales como [Ethernaut CTF](https://ethernaut.openzeppelin.com/), [Capture the Ether](https://capturetheether.com/) o [Not so smart contracts](https://github.com/crytic/not-so-smart-contracts/).
-- **Tenga en cuenta las secciones de advertencias de la [documentación de Solidity](https://solidity.readthedocs.io/en/latest/).** Las secciones de advertencias lo informarán sobre el comportamiento no obvio del lenguaje.
+- **Sea consciente de los problemas de seguridad más comunes.** Hay muchos recursos en línea para aprender sobre los problemas comunes, como [Ethernaut CTF](https://ethernaut.openzeppelin.com/), [Capture the Ether](https://capturetheether.com/) o [Not so smart contracts](https://github.com/crytic/not-so-smart-contracts/).
+- **Preste atención a las secciones de advertencias en la [documentación de Solidity](https://docs.soliditylang.org/en/latest/).** Las secciones de advertencias le informarán sobre el comportamiento no obvio del lenguaje.
### Dependencias {#dependencies}
-- **Use bibliotecas bien probadas.** Importar código de bibliotecas bien probadas reducirá la probabilidad de escribir código con errores. Si desea escribir un contrato ERC20, use [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20).
-- **Use un administrador de dependencias; evite copiar y pegar código.** Si confía en una fuente externa, entonces debe mantenerla actualizada con la fuente original.
+- **Utilice bibliotecas bien probadas.** La importación de código de bibliotecas bien probadas reducirá la probabilidad de que escriba código con errores. Si quiere escribir un contrato ERC20, utilice [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20).
+- **Utilice un gestor de dependencias; evite copiar y pegar el código.** Si depende de una fuente externa, debe mantenerla actualizada con la fuente original.
### Pruebas y verificación {#testing-and-verification}
-- **Escriba pruebas unitarias minuciosas.** Un amplio conjunto de pruebas es crucial para crear software de alta calidad.
-- **Escriba verificaciones y propiedades de [Slither](https://github.com/crytic/slither), [Echidna](https://github.com/crytic/echidna) y [Manticore](https://github.com/trailofbits/manticore) personalizadas.** Las herramientas automatizadas ayudarán a garantizar la seguridad del contrato. Revise el resto de esta guía para aprender a escribir verificaciones y propiedades eficientes.
-- **Use [crytic.io](https://crytic.io/).** Crytic se integra con Github y proporciona acceso a detectores privados de Slither, además de ejecutar comprobaciones de propiedades personalizadas desde Echidna.
+- **Escriba pruebas unitarias exhaustivas.** Un conjunto de pruebas exhaustivo es crucial para crear software de alta calidad.
+- **Escriba comprobaciones y propiedades personalizadas de [Slither](https://github.com/crytic/slither), [Echidna](https://github.com/crytic/echidna) y [Manticore](https://github.com/trailofbits/manticore).** Las herramientas automatizadas le ayudarán a garantizar que su contrato sea seguro. Revise el resto de esta guía para aprender a escribir verificaciones y propiedades eficientes.
+- **Use [crytic.io](https://crytic.io/).** Crytic se integra con GitHub, proporciona acceso a detectores privados de Slither y ejecuta comprobaciones de propiedades personalizadas de Echidna.
### Solidity {#solidity}
-- **Inclínese por Solidity 0.5 por sobre las versiones 0.4 y 0.6.** Solidity 0.5 es más seguro y tiene mejores prácticas incorporadas que la versión 0.4. Solidity 0.6 ha demostrado ser demasiado inestable para la producción y necesita tiempo para madurar.
-- **Use una versión estable para compilar; use la última versión para comprobar si hay advertencias.** Compruebe que el código no tenga problemas reportados con la última versión del compilador. Sin embargo, Solidity tiene un ciclo de liberación rápido y un historial de errores del compilador, así que no se recomienda la última versión para la implementación (ver [recomendación de versión de solc](https://github.com/crytic/slither/wiki/Detector-Documentation#recommendation-33) de Slither).
-- **No use ensamblado en línea.** El ensamblado requiere conocimientos sobre la EVM. No escriba código de EVM si no _domina_ el Yellow Paper.
+- **Prefiera Solidity 0.5 a 0.4 y 0.6.** En nuestra opinión, Solidity 0.5 es más seguro y tiene mejores prácticas integradas que la versión 0.4. Solidity 0.6 ha demostrado ser demasiado inestable para la producción y necesita tiempo para madurar.
+- **Utilice una versión estable para compilar; utilice la última versión para comprobar las advertencias.** Compruebe que su código no tiene problemas reportados con la última versión del compilador. Sin embargo, Solidity tiene un ciclo de lanzamiento rápido y un historial de errores del compilador, por lo que no recomendamos la última versión para el despliegue (consulte la [recomendación de la versión de solc](https://github.com/crytic/slither/wiki/Detector-Documentation#recommendation-33) de Slither).
+- **No utilice el ensamblador en línea.** El ensamblador requiere experiencia en EVM. No escriba código EVM si no ha _dominado_ el «libro amarillo» (yellow paper).
-## Directrices para la implementación {#deployment-guidelines}
+## Directrices de despliegue {#deployment-guidelines}
Una vez que el contrato haya sido desarrollado e implementado:
-- **Monitoree sus contratos.** Mire los registros y esté listo para reaccionar en caso de que un contrato o una billetera se vean comprometidos.
-- **Agregue la información de su contacto a [blockchain-security-contacts](https://github.com/crytic/blockchain-security-contacts).** Esta lista ayuda a terceros a contactarlo si se descubre una falla de seguridad.
-- **Proteja las billeteras de usuarios privilegiados.** Siga las [mejores prácticas](https://blog.trailofbits.com/2018/11/27/10-rules-for-the-secure-use-of-cryptocurrency-hardware-wallets/) si almacena llaves en billeteras de hardware.
-- **Tenga un plan de respuesta a incidentes.** Considere que los contratos inteligentes pueden verse vulnerados. Incluso si los contratos están libres de fallas, un atacante puede tomar el control de las claves del propietario del contrato.
+- **Supervise sus contratos.** Vigile los registros y esté preparado para reaccionar en caso de que el contrato o la billetera se vean comprometidos.
+- **Añada su información de contacto a [blockchain-security-contacts](https://github.com/crytic/blockchain-security-contacts).** Esta lista ayuda a terceros a ponerse en contacto con usted si se descubre un fallo de seguridad.
+- **Asegure las billeteras de los usuarios con privilegios.** Siga nuestras [mejores prácticas](https://blog.trailofbits.com/2018/11/27/10-rules-for-the-secure-use-of-cryptocurrency-hardware-wallets/) si almacena claves en billeteras de hardware.
+- **Tenga un plan de respuesta a incidentes.** Tenga en cuenta que sus contratos inteligentes pueden verse comprometidos. Incluso si los contratos están libres de fallas, un atacante puede tomar el control de las claves del propietario del contrato.
From 381a55fc3f5c03b39b64e4b3e59d7698cc5d1d14 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:17 -0300
Subject: [PATCH 135/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/faqs/index.md
---
.../consensus-mechanisms/pos/faqs/index.md | 44 +++++++++----------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/faqs/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/faqs/index.md
index f5353fffc96..2990c0398ac 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/faqs/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/faqs/index.md
@@ -4,7 +4,7 @@ description: Preguntas más frecuentes sobre la prueba de participación (PoS).
lang: es
---
-## ¿Qué es la prueba de participación (PoS)? {#what-is-proof-of-stake}
+## ¿Qué es la prueba de participación? {#what-is-proof-of-stake}
La prueba de participación es una clase de algoritmo que puede proporcionar seguridad a las cadenas de bloques garantizando que los usuarios que actúen de forma deshonesta pierdan activos de valor. Los sistemas de prueba de participación requieren que un conjunto de validadores pongan a disposición algún activo que pueda ser destruido si el validador incurre en algún comportamiento probadamente deshonesto. Ethereum utiliza un mecanismo de prueba de participación para proteger la cadena de bloques.
@@ -18,7 +18,7 @@ La prueba de participación requiere que los nodos, conocidos como validadores,
La prueba de trabajo consume mucha más energía, porque la actividad de minería conlleva el consumo de electricidad. La prueba de participación, por otro lado, requiere solo una cantidad muy pequeña de energía: los validadores de Ethereum incluso pueden ejecutarse en un dispositivo de baja potencia como Raspberry Pi. Se cree que el mecanismo de prueba de participación de Ethereum es más seguro que la prueba de trabajo, porque el coste del ataque es mayor y las consecuencias para un atacante son más severas.
-La prueba de trabajo frente a la prueba de participación es un tema polémico. [El blog de Vitalik Buterin](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-are-the-benefits-of-proof-of-stake-as-opposed-to-proof-of-work)y el debate entre Justin Drake y Lyn Alden ofrecen un buen resumen de los argumentos.
+La prueba de trabajo frente a la prueba de participación es un tema polémico. [El blog de Vitalik Buterin](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-are-the-benefits-of-proof-of-stake-as-opposed-to-proof-of-work) y el debate entre Justin Drake y Lyn Alden ofrecen un buen resumen de los argumentos.
@@ -26,31 +26,31 @@ La prueba de trabajo frente a la prueba de participación es un tema polémico.
Sí. Los nodos de una red de prueba de participación utilizan una pequeña cantidad de energía. Un estudio de terceros concluyó que toda la red Ethereum de prueba de participación consume alrededor de 0,0026 TWh/año (alrededor de 13.000 veces menos que los videojuegos, solo en los Estados Unidos).
-[Más sobre el consumo de energía de Ethereum](/energy-consumption/).
+[Más información sobre el consumo de energía de Ethereum](/energy-consumption/).
## ¿Es segura la prueba de participación? {#is-pos-secure}
La prueba de participación de Ethereum es muy segura. El mecanismo se investigó, desarrolló y probó rigurosamente durante ocho años antes de entrar en funcionamiento. Las garantías de seguridad son diferentes de las cadenas de bloques de prueba de trabajo. En la prueba de participación, los validadores maliciosos pueden castigarse activamente («recortarse») y ser expulsados del grupo de validadores, lo que cuesta una cantidad sustancial de ETH. Bajo prueba de trabajo, un atacante puede seguir repitiendo su ataque mientras tiene suficiente poder de hash. También es más costoso montar ataques equivalentes en la de prueba de participación de Ethereum que en la prueba de trabajo. Para que repercuta en la vivacidad de la cadena, se requiere al menos el 33 % del total de ether en participación en la red (excepto en casos de ataques muy sofisticados con una probabilidad de éxito extremadamente baja). Para controlar el contenido de futuros bloques, se requiere al menos el 51 % del total de ETH apostado, y para reescribir el historial, se necesita más del 66 % de la participación total. El protocolo Ethereum destruiría estos activos en los casos de ataque del 33 % o 51 % y por consenso social en el caso de ataque del 66 %.
-- [Más información sobre la defensa de la prueba de participación de Ethereum de atacantes](/developers/docs/consensus-mechanisms/pos/attack-and-defense)
-- [Más información sobre el diseño de prueba de participación](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51)
+- [Más información sobre cómo defender la prueba de participación de Ethereum de los atacantes](/developers/docs/consensus-mechanisms/pos/attack-and-defense)
+- [Más información sobre el diseño de la prueba de participación](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51)
## ¿La prueba de participación hace que Ethereum sea más barato? {#does-pos-make-ethereum-cheaper}
No. El costo de enviar una transacción (tarifa de gas) está determinado por un mercado de tarifas dinámicas que aumenta con más demanda de la red. El mecanismo de consenso no influye directamente en esto.
-[Más sobre el gas](/developers/docs/gas).
+[Más información sobre el gas](/developers/docs/gas).
## ¿Qué son los nodos, los clientes y los validadores? {#what-are-nodes-clients-and-validators}
Los nodos son ordenadores conectados a la red Ethereum. Los clientes son el software que ejecutan y convierten al ordenador en un nodo. Hay dos tipos de clientes: clientes de ejecución y clientes de consenso. Ambos son necesarios para crear un nodo. Un validador es un complemento opcional para un cliente de consenso que permite al nodo participar en el consenso de prueba de participación. Esto significa crear y proponer bloques cuando se seleccionan y certificar los bloques de los que se oye hablar en la red. Para ejecutar un validador, el operador del nodo debe depositar 32 ETH en el contrato de depósito.
- [Más información sobre nodos y clientes](/developers/docs/nodes-and-clients)
-- [Más información sobre las participaciones](/staking)
+- [Más información sobre el «staking»](/staking)
## ¿La prueba de participación es una idea nueva? {#is-pos-new}
-No. Un usuario de BitcoinTalk [ propuso la idea básica de prueba de participación](https://bitcointalk.org/index.php?topic=27787.0) como una actualización a Bitcoin en 2011. Eso fue once años antes de que estuviera listo para implementarse en la red principal de Ethereum. Otras cadenas implementaron la prueba de participación antes que Ethereum, pero no el mecanismo específico de Ethereum (conocido como Gasper).
+No. Un usuario en BitcoinTalk [propuso la idea básica de la prueba de participación](https://bitcointalk.org/index.php?topic=27787.0) como una actualización de Bitcoin en 2011. Eso fue once años antes de que estuviera listo para implementarse en la red principal de Ethereum. Otras cadenas implementaron la prueba de participación antes que Ethereum, pero no el mecanismo específico de Ethereum (conocido como Gasper).
## ¿Qué tiene de especial la prueba de participación de Ethereum? {#why-is-ethereum-pos-special}
@@ -60,13 +60,13 @@ Además de Casper, la prueba de participación de Ethereum utiliza un algoritmo
La combinación de Casper y LMD_GHOST se conoce como Gasper.
-[Más sobre Gasper](/developers/docs/consensus-mechanisms/pos/gasper/)
+[Más información sobre Gasper](/developers/docs/consensus-mechanisms/pos/gasper/)
## ¿Qué son los recortes? {#what-is-slashing}
Recorte es el término dado a la destrucción de parte de la participación de un validador y la expulsión de este de la red. La cantidad de ETH perdida en una escala de recortes con el número de validadores recortados significa que se castiga a los validadores confabulados más severamente que a los individuales.
-[Más información sobre los recortes](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties#slashing)
+[Más información sobre el «slashing»](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties#slashing)
## ¿Por qué los validadores necesitan 32 ETH? {#why-32-eth}
@@ -76,32 +76,32 @@ Los validadores tienen que participar con ETH para tener algo que perder si se c
Se elige de forma pseudoaleatoria a un solo validador para proponer un bloque en cada ranura utilizando un algoritmo llamado RANDAO, que mezcla un hash del proponente de bloques con una semilla que se actualiza a cada bloque. Este valor sirve para seleccionar un validador específico del conjunto de validadores totales. La selección del validador se fija con una antelación de dos épocas.
-[Más información sobre la selección del validador](/developers/docs/consensus-mechanisms/pos/block-proposal)
+[Más información sobre la selección de validadores](/developers/docs/consensus-mechanisms/pos/block-proposal)
## ¿Qué es el «grinding» de participación? {#what-is-stake-grinding}
El «griding» de participación es una categoría de ataque a las redes de prueba de participación en la que el atacante intenta sesgar el algoritmo de selección del validador a favor de sus propios validadores. Los ataques de «grinding» de participación en RANDAO requieren aproximadamente la mitad del total de ETH apostado.
-[Más información sobre el «grinding» de participación](https://eth2book.info/altair/part2/building_blocks/randomness/#randao-biasability)
+[Más información sobre el «stake grinding»](https://eth2book.info/altair/part2/building_blocks/randomness/#randao-biasability)
## ¿Qué son los recortes sociales? {#what-is-social-slashing}
El recorte social es la capacidad que la comunidad tiene para coordinar una bifurcación de la cadena de bloques en respuesta a un ataque. Permite a la comunidad recuperarse de un atacante que finaliza una cadena deshonesta. El acuchillamiento social también se puede utilizar contra los ataques de censura.
-- [Más sobre los recortes sociales](https://ercwl.medium.com/the-case-for-social-slashing-59277ff4d9c7)
-- [Vitalik Buterin sobre los recortes sociales](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-proof-of-stake)
+- [Más información sobre el «slashing» social](https://ercwl.medium.com/the-case-for-social-slashing-59277ff4d9c7)
+- [Vitalik Buterin sobre el «slashing» social](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-proof-of-stake)
## ¿Me recortarán? {#will-i-get-slashed}
Como validador, es muy difícil que le recorten a menos que tenga una mala conducta deliberadamente. El recorte sólo se implementa en casos muy específicos en los que los validadores proponen múltiples bloques para la misma ranura, o se contradicen con sus certificaciones, es muy poco probable que surjan accidentalmente.
-[Más sobre las condiciones de recorte](https://eth2book.info/altair/part2/incentives/slashing)
+[Más información sobre las condiciones de «slashing»](https://eth2book.info/altair/part2/incentives/slashing)
## ¿Cuál es el problema de no arriesgar nada? {#what-is-nothing-at-stake-problem}
El problema de nada-en-participación es un problema conceptual con algunos mecanismos de prueba de participación en los que solo hay recompensas y no hay penalizaciones. Si no hay nada que arriesgar, un validador pragmático está igualmente feliz de certificar cualquiera, o incluso múltiples, bifurcaciones de la cadena de bloques, ya que esto aumenta sus recompensas. Ethereum puede evitar esto usando condiciones de finalidad y recortando para asegurar una cadena predilecta.
-[Más información sobre el problema de nada que arriesgar](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed)
+[Más información sobre el problema de «nada en juego»](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed)
## ¿Qué es un algoritmo de elección de bifurcación? {#what-is-a-fork-choice-algorithm}
@@ -127,13 +127,13 @@ La subjetividad débil es una característica de las redes de prueba de particip
Actualmente es difícil probar la resistencia a la censura. Sin embargo, a diferencia de la prueba de trabajo, la prueba de participación ofrece la opción de coordinar recortes para castigar a los validadores de censura. Hay próximos cambios en el protocolo que separan a los constructores de bloques de los proponentes de bloques e implementan listas de transacciones que los constructores deben incluir en cada bloque. Esta propuesta se conoce como separación del constructor adecuado y ayuda a evitar que los validadores censuren las transacciones.
-[Más información sobre la separación del constructor adecuado](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Original-basic-scheme)
+[Más información sobre la separación proponente-constructor](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Original-basic-scheme)
## ¿Puede el sistema de prueba de participación de Ethereum ser atacado con un 51%? {#pos-51-attack}
Sí. La prueba de participación es vulnerable a los ataques del 51 %, al igual que la prueba de trabajo. En lugar de que el atacante requiera el 51 % de la potencia de hash de la red, el atacante requiere el 51 % del total de ETH apostado. Un atacante que acumule el 51 % de la participación total puede controlar el algoritmo de elección de bifurcación. Esto permite que el atacante censure ciertas transacciones, haga reposiciones a corto plazo y extraigar MEV reordenando los bloques a su favor.
-[Más sobre los ataques de prueba de participación](/developers/docs/consensus-mechanisms/pos/attack-and-defense)
+[Más información sobre los ataques a la prueba de participación](/developers/docs/consensus-mechanisms/pos/attack-and-defense)
## ¿Qué es la coordinación social y por qué es necesaria? {#what-is-social-coordination}
@@ -147,7 +147,7 @@ Cuantos más ETH tenga alguien en participación, más validadores puede ejecuta
## ¿La prueba de participación está más centralizada que la prueba de trabajo? {#is-pos-decentralized}
-No, la prueba de trabajo tiende a la centralización, porque los costes de la minería aumentan y fijan el precio de los particulares y luego del precio de las pequeñas empresas, y así sucesivamente. El problema actual con la prueba de participación es la influencia de los derivados de participación líquidos (LSD). Estos son tókenes que representan el ETH en participación por algún proveedor que cualquiera puede intercambiar en los mercados secundarios sin que se dejen de apostar los ETH reales. Los LSD permiten a los usuarios participar con menos de 32 ETH, pero también crean un riesgo de centralización en el que algunas grandes organizaciones pueden terminar controlando gran parte de la participación. Por esta razón [la participación en solitario](/staking/solo) es la mejor opción para Ethereum.
+No, la prueba de trabajo tiende a la centralización, porque los costes de la minería aumentan y fijan el precio de los particulares y luego del precio de las pequeñas empresas, y así sucesivamente. El problema actual con la prueba de participación es la influencia de los derivados de participación líquidos (LSD). Estos son tókenes que representan el ETH en participación por algún proveedor que cualquiera puede intercambiar en los mercados secundarios sin que se dejen de apostar los ETH reales. Los LSD permiten a los usuarios participar con menos de 32 ETH, pero también crean un riesgo de centralización en el que algunas grandes organizaciones pueden terminar controlando gran parte de la participación. Por eso, el [«staking» en solitario](/staking/solo) es la mejor opción para Ethereum.
[Más información sobre la centralización de la participación en los LSD](https://notes.ethereum.org/@djrtwo/risks-of-lsd)
@@ -163,10 +163,10 @@ No, hay varias cadenas de bloques de prueba de participación. Ninguna es idént
La Fusión fue el momento en que Ethereum apagó su mecanismo de consenso basado en la prueba de trabajo y encendió su mecanismo de consenso basado en la prueba de participación. La Fusión tuvo lugar el 15 de septiembre de 2022.
-[Más sobre la fusión](/roadmap/merge)
+[Más información sobre La Fusión](/roadmap/merge)
## ¿Qué son la vivacidad y la seguridad? {#what-are-liveness-and-safety}
-La vivacidad y la seguridad son las dos preocupaciones fundamentales de seguridad para una cadena de bloques. La vivacidad es la disponibilidad de una cadena de finalización. Si la cadena deja de finalizar o los usuarios no pueden acceder a ella fácilmente, son fallos de vivacidad. El coste excesivamente alto también podría considerarse como un fracaso de vivacidad. La seguridad se refiere a lo difícil que es atacar la cadena, es decir, finalizar los puntos de control en conflicto.
+La vivacidad y la seguridad son las dos preocupaciones fundamentales de seguridad para una cadena de bloques. La vivacidad es la disponibilidad de una cadena de finalización. Si la cadena deja de finalizar o los usuarios no pueden acceder a ella fácilmente, son fallos de vivacidad. El coste excesivamente alto también podría considerarse como un fracaso de vivacidad. La seguridad se refiere a lo difícil que es atacar la cadena, es decir, finalizar puntos de control en conflicto.
-[Más información sobre la función Casper](https://arxiv.org/pdf/1710.09437.pdf)
+[Lea más en el documento de Casper](https://arxiv.org/pdf/1710.09437.pdf)
From e8b8bd905d3b08fd0e2f2fe7265937cc61099e84 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:19 -0300
Subject: [PATCH 136/589] update(i18n):
public/content/translations/es/developers/tutorials/eip-1271-smart-contract-signatures/index.md
---
.../index.md | 64 ++++++++++---------
1 file changed, 33 insertions(+), 31 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/eip-1271-smart-contract-signatures/index.md b/public/content/translations/es/developers/tutorials/eip-1271-smart-contract-signatures/index.md
index da69649fe4b..8e7b5387f31 100644
--- a/public/content/translations/es/developers/tutorials/eip-1271-smart-contract-signatures/index.md
+++ b/public/content/translations/es/developers/tutorials/eip-1271-smart-contract-signatures/index.md
@@ -4,17 +4,19 @@ description: Una visión general de la generación y verificación de la firma d
author: Nathan H. Leung
lang: es
tags:
- - "EIP-1271"
- - "contratos inteligentes"
- - "verificación"
- - "firma"
+ [
+ "EIP-1271",
+ "contratos Inteligentes",
+ "verificación",
+ "firma"
+ ]
skill: intermediate
-published: 2023-01-12
+published: 12-1-2023
---
-El estándar [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) permite que los contratos inteligentes verifiquen las firmas.
+El estándar [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) permite a los contratos inteligentes verificar firmas.
-En este tutorial, damos una visión general de las firmas digitales, los antecedentes de EIP-1271 y la implementación específica de EIP-1271 utilizada por [Safe](https://safe.global/) (anteriormente Gnosis Safe). En conjunto, esto puede servir como punto de partida para implementar el EIP-1271 en sus propios contratos.
+En este tutorial, ofrecemos una descripción general de las firmas digitales, los antecedentes de EIP-1271 y la implementación específica de EIP-1271 utilizada por [Safe](https://safe.global/) (anteriormente Gnosis Safe). En conjunto, esto puede servir como punto de partida para implementar el EIP-1271 en sus propios contratos.
## ¿Qué es una firma?
@@ -23,8 +25,8 @@ En este contexto, una firma (más precisamente, una «firma digital») es un men
Por ejemplo, una firma digital podría tener el siguiente aspecto:
1. Mensaje: "Quiero iniciar sesión en este sitio web con mi cartera de Ethereum."
-2. Firmante: Mi dirección es `0x000... `
-3. Prueba: Aquí hay alguna prueba de que yo, `0x000... `, en realidad creé todo este mensaje (esto es generalmente algo criptográfico).
+2. Firmante: Mi dirección es `0x000…`
+3. Prueba: Aquí hay una prueba de que yo, `0x000…`, realmente creé este mensaje completo (esto suele ser algo criptográfico).
Es importante tener en cuenta que una firma digital incluye tanto un «mensaje» como una «firma».
@@ -36,11 +38,11 @@ De la misma manera, ¡una firma digital no significa nada sin un mensaje asociad
Con el fin de crear una firma digital para su uso en cadenas de bloques basadas en Ethereum, por lo general se necesita una clave privada secreta que nadie más sabe. Esto es lo que hace que su firma sea suya (nadie más puede crear la misma firma sin el conocimiento de la clave secreta).
-Su cuenta de Ethereum (p. ej., su cuenta de propiedad externa/EOA) tiene una clave privada asociada a esta y suele utilizarse cuando un sitio web o una DApp le solicita una firma (p. ej., para «Iniciar sesión con Ethereum»).
+Su cuenta de Ethereum (es decir, su cuenta de propiedad externa/EOA) tiene una clave privada asociada, y esta es la clave privada que se usa normalmente cuando un sitio web o una dapp le piden una firma (p. ej., para «Iniciar sesión con Ethereum»).
-Una aplicación puede [verificar una firma](https://docs.alchemy.com/docs/how-to-verify-a-message-signature-on-ethereum) creada utilizando una biblioteca de terceros como ethers.js [sin conocer su clave privada](https://en.wikipedia.org/wiki/Public-key_cryptography) y tener plena confianza en que _tú_ usted creó la firma.
+Una aplicación puede [verificar una firma](https://www.alchemy.com/docs/how-to-verify-a-message-signature-on-ethereum) que usted cree usando una biblioteca de terceros como ethers.js [sin conocer su clave privada](https://en.wikipedia.org/wiki/Public-key_cryptography) y tener la certeza de que fue _usted_ quien creó la firma.
-> De hecho, porque las cuentas de propiedad externa utilizan la criptografía de clave pública, ¡estas pueden ser generadas y verificadas **fuera de la cadena**! Así es como funciona la votación DAO sin gas: en vez de enviar votos en la cadena, las firmas digitales pueden ser creadas y verificadas fuera de la cadena utilizando bibliotecas criptográficas.
+> De hecho, como las firmas digitales de EOA utilizan la criptografía de clave pública, ¡pueden generarse y verificarse **fuera de la cadena**! Así es como funciona la votación de DAO sin gas: en lugar de enviar los votos en la cadena, las firmas digitales pueden crearse y verificarse fuera de la cadena utilizando bibliotecas criptográficas.
Mientras las cuentas de propiedad externa tienen una clave privada, las cuentas de contratos inteligentes no tienen ningún tipo de clave privada o secreta (entonces el «Inicio de sesión con Ethereum», entre otros, no funcionan de manera nativa sin las cuentas de contratos inteligentes).
@@ -50,17 +52,17 @@ El problema que EIP-1271 busca solucionar: ¿cómo podemos decir que la firma de
Los contratos inteligentes no tienen claves privadas que se puedan utilizar para firmar mensajes. ¿Entonces cómo podemos saber si una firma es auténtica?
-Bueno, ¡una idea es que podemos _preguntar_ al contrato inteligente si una firma es auténtica!
+Bueno, una idea es que podemos _preguntarle_ al contrato inteligente ¡si una firma es auténtica!
Lo que EIP-1271 hace es normalizar esta idea «preguntando» a un contrato inteligente si una firma proporcionada es válida.
-Un contrato donde se implementa EIP-1271 debe tener una función llamada `isValidSignature` que tiene lugar en un mensaje y una firma. Luego, el contrato puede ejecutar algo de lógica de validación (aquí la especificación no hace valer algo en específico) y luego devuelve un valor indicando si la firma es válida o no.
+Un contrato que implementa el EIP-1271 debe tener una función llamada `isValidSignature` que toma un mensaje y una firma. Luego, el contrato puede ejecutar algo de lógica de validación (aquí la especificación no hace valer algo en específico) y luego devuelve un valor indicando si la firma es válida o no.
-Si `isValidSignature` devuelve un resultado válido, es como si el contrato hablara y dijera: «¡Sí, apruebo esta firma + mensaje!».
+Si `isValidSignature` devuelve un resultado válido, es básicamente el contrato diciendo «¡sí, apruebo esta firma + mensaje!».
### Interfaz
-Aquí está la interfaz exacta en la especificación EIP-1271 (hablaremos sobre el parámetro `_hash` abajo, pero por ahora, considérleo como el mensaje que se está verificando):
+Esta es la interfaz exacta en la especificación del EIP-1271 (hablaremos del parámetro `_hash` más adelante, pero por ahora, considérelo como el mensaje que se está verificando):
```jsx
pragma solidity ^0.5.0;
@@ -71,13 +73,13 @@ contract ERC1271 {
bytes4 constant internal MAGICVALUE = 0x1626ba7e;
/**
- * @dev Should return whether the signature provided is valid for the provided hash
- * @param _hash Hash of the data to be signed
- * @param _signature Signature byte array associated with _hash
+ * @dev Debería devolver si la firma proporcionada es válida para el hash proporcionado
+ * @param _hash Hash de los datos a firmar
+ * @param _signature Matriz de bytes de la firma asociada a _hash
*
- * MUST return the bytes4 magic value 0x1626ba7e when function passes.
- * MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5)
- * MUST allow external calls
+ * DEBE devolver el valor mágico bytes4 0x1626ba7e cuando la función se ejecuta correctamente.
+ * NO DEBE modificar el estado (usando STATICCALL para solc < 0.5, modificador de vista para solc > 0.5)
+ * DEBE permitir llamadas externas
*/
function isValidSignature(
bytes32 _hash,
@@ -90,28 +92,28 @@ contract ERC1271 {
## Implementación EIP-1271 de ejemplo: Safe
-Los contratos pueden implementar `isValidSignature` de varias maneras, la especificación no dice mucho sobre la implementación exacta.
+Los contratos pueden implementar `isValidSignature` de muchas maneras; la especificación no dice mucho sobre la implementación exacta.
Un contrato destacado que implementa EIP-1271 es Safe (previamente Gnosis Safe).
-En el código de Safe, `isValidSignature` [se implementa](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol) para que las firmas se creen y comprueben en [de dos maneras:](https://ethereum.stackexchange.com/questions/122635/signing-messages-as-a-gnosis-safe-eip1271-support):
+En el código de Safe, `isValidSignature` [está implementado](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol) de modo que las firmas pueden crearse y verificarse de [dos maneras](https://ethereum.stackexchange.com/questions/122635/signing-messages-as-a-gnosis-safe-eip1271-support):
-1. Mensajes en cadena
+1. Mensajes en la cadena
1. Creación: un propietario seguro crea una nueva transacción segura para «firmar» un mensaje, pasando el mensaje como dato en la transacción. Una vez que suficientes propietarios han firmado la transacción para alcanzar el umbral multifirma, la transacción se transmite y se ejecuta. En la transacción, hay una función segura activada cuando añade el mensaje a un listado de mensajes «aprobados».
- 2. Verificación: activa `isValidSignature` en el contrato Safe y pasa el mensaje por verificar como el parámetro del mensaje y [un valor vacío para el parámetro de firma](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol#L32) (ej: `0x`). Safe verá que el parámetro de firma está vacío y en vez de verificar criptográficamente la firma, sabrá que debe continuar y revisar si el mensaje se encuentra en el listado de mensajes «aprobados».
+ 2. Verificación: llame a `isValidSignature` en el contrato de Safe y pase el mensaje a verificar como el parámetro de mensaje y [un valor vacío para el parámetro de la firma](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol#L32) (es decir, `0x`). Safe verá que el parámetro de firma está vacío y en vez de verificar criptográficamente la firma, sabrá que debe continuar y revisar si el mensaje se encuentra en el listado de mensajes «aprobados».
2. Mensajes fuera de la cadena:
- 1. Creación: un propietario seguro crea un mensaje fuera de cadena, luego solicita a otros propietarios seguros que cada uno firme el mensaje individualmente hasta que haya una cantidad suficiente de firmas para superar el umbral de aprobación multifirma.
- 2. Verificación: activa `isValidSignature`. En el parámetro mensaje, pasa el mensaje por verificar. En el parámetro firma, pasa las firmas de cada propietario seguro de manera concatenada. Safe revisará que haya suficientes firmas para cumplir el umbral **y** que cada firma es válida. Si lo es, devuelve un valor indicando que la verificación de la firma se realizó correctamente.
+ 1. Creación: el propietario de un Safe crea un mensaje fuera de la cadena, luego consigue que otros propietarios del Safe firmen el mensaje individualmente hasta que haya suficientes firmas para superar el umbral de aprobación de la multifirma.
+ 2. Verificación: llame a `isValidSignature`. En el parámetro mensaje, pasa el mensaje por verificar. En el parámetro firma, pasa las firmas de cada propietario seguro de manera concatenada. El Safe comprobará que hay suficientes firmas para cumplir el umbral **y** que cada firma es válida. Si lo es, devuelve un valor indicando que la verificación de la firma se realizó correctamente.
## ¿Qué es exactamente el parámetro `_hash`? ¿Por qué no pasar el mensaje completo?
-Puede que haya notado que la función `isValidSignature` en la [interfaz EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) no toma el mensaje en sí mismo, en su lugar toma un parámetro `_hash`. Esto significa que en vez de pasar completamente el mensaje arbitrariamente a `isValidSignature`, para un hash de 32-bytes del mensaje (generalmente keccak256).
+Puede que haya notado que la función `isValidSignature` en la [interfaz del EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) no toma el mensaje en sí, sino un parámetro `_hash`. Lo que esto significa es que, en lugar de pasar el mensaje completo de longitud arbitraria a `isValidSignature`, pasamos un hash de 32 bytes del mensaje (generalmente keccak256).
-Cada byte de Calldata, p- ej., datos del parámetro función pasados a la función de un contrato inteligente, [ cuesta 16 gas (4 gas en si hay cero bytes)](https://eips.ethereum.org/EIPS/eip-2028), por lo que puede ahorrar mucho gas si el mensaje es largo.
+Cada byte de calldata (es decir, los datos de los parámetros de la función pasados a una función del contrato inteligente) [cuesta 16 de gas (4 de gas si el byte es cero)](https://eips.ethereum.org/EIPS/eip-2028), por lo que esto puede ahorrar mucho gas si un mensaje es largo.
### Especificaciones previas de EIP-1271
-Hay especificaciones EIP-1271 en varias partes que tienen una función `isValidSignature` con un primer parámetro del tipo `bytes` (longitud arbitraria, en vez de una longitud fija de `bytes32`) y el parámetro nombre `message`. Esto es una [versión anterior](https://github.com/safe-global/safe-contracts/issues/391#issuecomment-1075427206) del estándar EIP-1271.
+Existen especificaciones de EIP-1271 en circulación que tienen una función `isValidSignature` con un primer parámetro de tipo `bytes` (longitud arbitraria, en lugar de una longitud fija `bytes32`) y nombre de parámetro `message`. Esta es una [versión más antigua](https://github.com/safe-global/safe-contracts/issues/391#issuecomment-1075427206) del estándar EIP-1271.
## ¿Cómo debería implementar EIP-1271 en mis propios contratos?
From 52e2bdfd97d5841a88195aca7a0406e81c76bf53 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:20 -0300
Subject: [PATCH 137/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/gasper/index.md
---
.../consensus-mechanisms/pos/gasper/index.md | 24 +++++++++----------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/gasper/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/gasper/index.md
index 68f3c0ad978..ac4044870b5 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/gasper/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/gasper/index.md
@@ -6,11 +6,11 @@ lang: es
Gasper es una combinación de Casper apodado el cordial aparato de finalidad («Friendly Finality Gadget» o Casper-FFG) y el algoritmo de elección de bifurcación LMD-GHOST. Juntos, estos componentes conforman el mecanismo de consenso, asegurando así la prueba de participación en Ethereum. Casper es el mecanismo que actualiza determinados bloques a «finalizado» de modo que los nuevos participantes en la red puedan estar seguros de que están sincronizando la cadena predilecta. El algoritmo de elección de bifurcación utiliza votos acumulados para asegurar que los nodos puedan seleccionar fácilmente la correcta cuando las bifurcaciones surjan en la cadena de bloques.
-**Observe** que la definición original de Casper-FFG se actualizó ligeramente para su inclusión en Gasper. En esta página consideramos la versión actualizada.
+**Nota**: La definición original de Casper-FFG se actualizó ligeramente para su inclusión en Gasper. En esta página consideramos la versión actualizada.
-## Pre requisitos
+## Pre-requisitos:
-Para entender este material es necesario leer la página de introducción en la [Prueba de participación](/developers/docs/consensus-mechanisms/pos/).
+Para comprender este material, es necesario leer la página de introducción sobre la [prueba de participación](/developers/docs/consensus-mechanisms/pos/).
## La función de Gasper {#role-of-gasper}
@@ -23,30 +23,30 @@ La finalidad es una propiedad de ciertos bloques que significa que no pueden rev
1. Dos tercios del ether total apostado deben haber votado a favor de la inclusión de ese bloque en la cadena predilecta. Esta condición actualiza el bloque a «justificado». Es poco probable que se reviertan los bloques justificados, pero pueden revertirse bajo ciertas condiciones.
2. Cuando otro bloque se justifica sobre un bloque justificado, se actualiza a «finalizado». Finalizar un bloque es un compromiso de incluir el bloque en la cadena predilecta. No se puede revertir a menos que un atacante destruya millones de ethers (miles de millones de USD).
-Estas mejoras de bloques no ocurren en todas las ranuras. En cambio, sólo se pueden justificar y finalizar los bloques de límites épocas. A estos bloques se les denomina «puntos de control». La actualización tiene en cuenta a pares de puntos de control. Un «enlace supermayoritario» debe existir entre dos puntos de control sucesivos (es decir, dos tercios del total de votos de ether apostando que el punto B es el descendiente correcto del punto de control A) para actualizar como finalizado el punto de control menos reciente y como justificado el bloque más reciente.
+Estas mejoras de bloques no ocurren en todas las ranuras. En cambio, sólo se pueden justificar y finalizar los bloques de límites épocas. A estos bloques se les denomina «puntos de control». La actualización tiene en cuenta a pares de puntos de control. Debe existir un «enlace de supermayoría» entre dos puntos de control sucesivos (es decir, dos tercios del total de ether en stake que votan que el punto de control B es el descendiente correcto del punto de control A) para actualizar el punto de control menos reciente a finalizado y el bloque más reciente a justificado.
Como la finalidad requiere un acuerdo de dos tercios de que un bloque es el predilecto, un atacante no puede crear una cadena final alternativa sin:
1. Poseer o manipular dos tercios del ether en participación.
2. Destruir al menos un tercio del total de ether en participación.
-La primera condición surge porque se necesitan dos tercios del ether en participación para finalizar una cadena. La segunda condición surge porque si dos tercios del total de la apuesta han votado a favor de ambas bifurcaciones, entonces un tercio debe haber votado por ambas. El doble voto es una condición de corte que sería castigada al máximo, y una tercera parte de la apuesta total sería destruida. A partir de mayo de 2022, esto requiere que un atacante queme alrededor de 10.000 millones de USD en ether. El algoritmo que justifica y finaliza bloques en Gasper es una forma ligeramente modificada de [Casper-FFG](https://arxiv.org/pdf/1710.09437.pdf).
+La primera condición surge porque se necesitan dos tercios del ether en participación para finalizar una cadena. La segunda condición surge porque si dos tercios del total de la apuesta han votado a favor de ambas bifurcaciones, entonces un tercio debe haber votado por ambas. El doble voto es una condición de corte que sería castigada al máximo, y una tercera parte de la apuesta total sería destruida. A partir de mayo de 2022, esto requiere que un atacante queme alrededor de 10.000 millones de USD en ether. El algoritmo que justifica y finaliza los bloques en Gasper es una forma ligeramente modificada de [Casper the Friendly Finality Gadget (Casper-FFG)](https://arxiv.org/pdf/1710.09437.pdf).
-### Incentivos y recortes {#incentives-and-slashing}
+### Incentivos y slashing {#incentives-and-slashing}
Se recompensa a los validadores por proponer y validar bloques honestamente. Ether se recompensa y añade a su participación. Por otro lado, los validadores que están ausentes y no actúan cuando se les llama, pierden estas recompensas y, a veces, una pequeña parte de su participación. Sin embargo, las sanciones por estar fuera de línea son pequeñas y, en la mayoría de los casos, equivalen a costes de oportunidad de pérdidas de recompensas. Aunque algunas acciones del validador son muy difíciles de acometer accidentalmente y son producto de alguna intención maliciosa, tal como proponer múltiples bloques para la misma ranura, certificar múltiples bloques para la misma ranura o contradecir los votos previos de los puntos de control. Se trata de comportamientos «recortables» que se penalizan con mayor dureza, que provocan la destrucción de una parte de la participación del validador y la eliminación del validador de la red de validadores. Este proceso tarda 36 días. En el primer día, hay una penalización inicial de hasta 1 ETH. Entonces el ether del validador recortado lentamente se drenará durante el período de salida, pero el 18.º día, recibe una «penalización de correlación», que es mayor cuantos más validadores se recortan durante el mismo periodo de tiempo. La penalización máxima es su apuesta completa. Estas recompensas y penalizaciones están diseñadas para compensar a los validadores honestos y desincentivar ataques en la red.
-### Pérdida por inactividad {#inactivity-leak}
+### Fuga por inactividad {#inactivity-leak}
Además de la seguridad, Gasper también proporciona «vivacidad plausible». Indica que mientras dos tercios del ether total estén votando honestamente y siguiendo el protocolo, la cadena será capaz de finalizar independientemente de cualquier otra actividad (como ataques, problemas de latencia, o recortes de recompensa). Dicho de otro modo, un tercio del total del ether apostado debe estar afectado de algún modo para evitar que la cadena finalice. En Gasper, existe una línea adicional de defensa contra un fracaso de la vivacidad, conocida como «fuga de inactividad». Este mecanismo se activa cuando la cadena no ha finalizado en más de cuatro épocas. Los validadores que no están certificando activamente a la cadena de la mayoría tienen su participación gradualmente drenada hasta que la mayoría recupera dos tercios de la apuesta total, garantizando de esta manera que los fracasos de la vivacidad sean sólo temporales.
-### Opción de bifurcación {#fork-choice}
+### Elección de la bifurcación {#fork-choice}
-La definición original de Casper-FFG incluía un algoritmo de elección de bifurcación que impuso la regla: `siga la cadena que contiene el punto de control justificado con la mayor altura`, donde altura se define como la mayor distancia desde el bloque inicial. En Gasper, la regla de elección de la bifurcación original ha quedado obsoleta a favor de un algoritmo más sofisticado llamado LMD-GHOST. Es importante darse cuenta de que en condiciones normales una regla de elección de bifurcación es innecesaria: hay un único proponedor de bloque para cada ranura, y los validadores honestos lo certifican. Sólo en casos de gran asincronía de la red o cuando un proponente de bloques deshonesto se ha equivocado, se requiere un algoritmo de elección de bifurcación. Sin embargo, cuando surgen esos casos, el algoritmo de elección de la bifurcación es una defensa crítica que asegura la cadena correcta.
+La definición original de Casper-FFG incluía un algoritmo de elección de bifurcación que imponía la regla: `follow the chain containing the justified checkpoint that has the greatest height`, donde la altura se define como la mayor distancia desde el bloque génesis. En Gasper, la regla de elección de la bifurcación original ha quedado obsoleta a favor de un algoritmo más sofisticado llamado LMD-GHOST. Es importante darse cuenta de que en condiciones normales una regla de elección de bifurcación es innecesaria: hay un único proponedor de bloque para cada ranura, y los validadores honestos lo certifican. Sólo en casos de gran asincronía de la red o cuando un proponente de bloques deshonesto se ha equivocado, se requiere un algoritmo de elección de bifurcación. Sin embargo, cuando surgen esos casos, el algoritmo de elección de la bifurcación es una defensa crítica que asegura la cadena correcta.
LMD-GHOST son las siglas de «latest message-driven greedy heaviest observed sub-tree» (o último mensaje dirigido codicioso observado del subárbol). Esta es una jerga del mundillo para definir un algoritmo que selecciona la bifurcación con el mayor peso acumulado de certificaciones como el predilecto (subárbol más pesado codicioso) y que si se reciben varios mensajes de un validador, sólo se considera el último (última unidad de mensajes). Antes de añadir el bloque más pesado a su cadena predilecta, cada validador evalúa cada bloque usando esta regla.
-## Más información {#further-reading}
+## Lecturas recomendadas {#further-reading}
-- [Gasper: combinar GHOST y Casper](https://arxiv.org/pdf/2003.03052.pdf)
-- [Casper, el cordial aparato de fidelidad](https://arxiv.org/pdf/1710.09437.pdf)
+- [Gasper: Combining GHOST and Casper](https://arxiv.org/pdf/2003.03052.pdf)
+- [Casper the Friendly Finality Gadget](https://arxiv.org/pdf/1710.09437.pdf)
From 54b6c81c1aa1c7c04d135be63c7452d59fcbb1b7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:22 -0300
Subject: [PATCH 138/589] update(i18n):
public/content/translations/es/developers/tutorials/nft-minter/index.md
---
.../developers/tutorials/nft-minter/index.md | 408 +++++++++---------
1 file changed, 205 insertions(+), 203 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/nft-minter/index.md b/public/content/translations/es/developers/tutorials/nft-minter/index.md
index 59c0308ac77..8fcee0200f1 100644
--- a/public/content/translations/es/developers/tutorials/nft-minter/index.md
+++ b/public/content/translations/es/developers/tutorials/nft-minter/index.md
@@ -3,12 +3,14 @@ title: Tutorial de minteador de NFT
description: En este tutorial, creará un minteador de NFT y aprenderá cómo crear una dapp de pila completa conectando su contrato inteligente a un frontend de React por medio de Metamask y herramientas web3.
author: "smudgil"
tags:
- - "solidity"
- - "NFT"
- - "alchemy"
- - "contratos inteligentes"
- - "frontend"
- - "Pinata"
+ [
+ "Solidity",
+ "NFT",
+ "Alchemy",
+ "contratos Inteligentes",
+ "frontend",
+ "Pinata"
+ ]
skill: intermediate
lang: es
published: 2021-10-06
@@ -22,56 +24,56 @@ Creando un minteador de NFT —una interfaz de usuario sencilla donde puede intr
- Invocar métodos de contrato inteligente desde su frontend
- Firmar transacciones usando MetaMask
-En este tutorial, usaremos [React](https://reactjs.org/) como framework de frontend. Debido a que este tutorial se centra principalmente en el desarrollo web3, no vamos a dedicar mucho tiempo a profundizar en los fundamentos de React. En su lugar, nos enfocaremos en aportar funcionalidad a nuestro proyecto.
+En este tutorial, usaremos [React](https://react.dev/) como nuestro marco de frontend. Debido a que este tutorial se centra principalmente en el desarrollo web3, no vamos a dedicar mucho tiempo a profundizar en los fundamentos de React. En su lugar, nos enfocaremos en aportar funcionalidad a nuestro proyecto.
-Como requisito previo, debe tener una comprensión básica de React, es decir, cómo funcionan los componentes, props, useState/useEffect y las llamadas a funciones básicas. Si nunca ha oído hablar de alguno de esos términos antes, tal vez quiera revisar este [tutorial de introducción a React](https://reactjs.org/tutorial/tutorial.html). Para los alumnos más visuales, recomendamos encarecidamente esta excelente serie de videos [Tutorial completo de React moderno](https://www.youtube.com/playlist?list=PL4cUxeGkcC9gZD-Tvwfod2gaISzfRiP9d) de Net Ninja.
+Como requisito previo, debe tener una comprensión básica de React, es decir, cómo funcionan los componentes, props, useState/useEffect y las llamadas a funciones básicas. Si nunca ha oído hablar de ninguno de esos términos, puede que le interese consultar este [tutorial de introducción a React](https://react.dev/learn/tutorial-tic-tac-toe). Para los aprendices más visuales, recomendamos encarecidamente esta excelente serie de vídeos [Full Modern React Tutorial](https://www.youtube.com/playlist?list=PL4cUxeGkcC9gZD-Tvwfod2gaISzfRiP9d) de Net Ninja.
Y si aún no lo ha hecho, definitivamente necesitará una cuenta de Alchemy para completar este tutorial, así como crear cualquier cosa en la cadena de bloques. Regístrese para obtener una cuenta gratuita [aquí](https://alchemy.com/).
Sin más preámbulos, ¡comencemos!
-## Aspectos básicos sobre creación de NFT {#making-nfts-101}
+## Creación de NFT 101 {#making-nfts-101}
Antes de incluso empezar a experimentar con el código, es importante entender se qué se trata crear un NFT. Implica dos pasos:
-### Publicar un contrato inteligente de NFT en la cadena de bloques de Ethereum {#publish-nft}
+### Publicar un smart contract de NFT en la blockchain de Ethereum {#publish-nft}
La mayor diferencia entre los dos estándares de contrato inteligente de NFT es que ERC-1155 es un estándar multitoken e incluye funcionalidad por lotes, mientras que ERC-721 es un estándar de un solo token, por lo tanto solo permite la transferencia de un token a la vez.
-### Invocar la función de minteo {#minting-function}
+### Llamar a la función de acuñación {#minting-function}
-Generalmente, esta función de minteo requiere pasar dos variables como parámetros, primero el `recipient`, que especifica la dirección que recibirá su NFT recién minteado, y luego el `tokenURI` del NFT, una cadena que resuelve a un documento JSON que describe los metadatos del NFT.
+Normalmente, esta función de acuñación requiere que se pasen dos variables como parámetros: primero el `recipient`, que especifica la dirección que recibirá su NFT recién acuñado, y segundo el `tokenURI` del NFT, una cadena que se resuelve en un documento JSON que describe los metadatos del NFT.
-Los metadatos de un NFT son realmente lo que le dan vida, permitiéndole tener propiedades como nombre, descripción, imagen (o un activo digital diferente) y otros atributos. Este es un [ejemplo de un tokenURI](https://gateway.pinata.cloud/ipfs/QmSvBcb4tjdFpajGJhbFAWeK3JAxCdNQLQtr6ZdiSi42V2), el cual contiene los metadatos de un NFT.
+Los metadatos de un NFT son realmente lo que le dan vida, permitiéndole tener propiedades como nombre, descripción, imagen (o un activo digital diferente) y otros atributos. Este es [un ejemplo de un tokenURI](https://gateway.pinata.cloud/ipfs/QmSvBcb4tjdFpajGJhbFAWeK3JAxCdNQLQtr6ZdiSi42V2), que contiene los metadatos de un NFT.
En este tutorial, vamos a centrarnos en la parte 2, donde invocaremos la función de minteo de un contrato inteligente de NFT existente utilizando nuestra interfaz de usuario de React.
-[Aquí hay un enlace](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE) al contrato inteligente de NFT ERC-721 que invocaremos en este tutorial. Si quiere aprender cómo lo hicimos, le recomendamos que revise nuestro otro tutorial [Cómo crear un NFT](https://docs.alchemyapi.io/alchemy/tutorials/how-to-create-an-nft).
+[Este es un enlace](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE) al smart contract del NFT ERC-721 al que llamaremos en este tutorial. Si desea saber cómo lo hicimos, le recomendamos que consulte nuestro otro tutorial, ["Cómo crear un NFT"](https://www.alchemy.com/docs/how-to-create-an-nft).
Bien, ahora que entendemos cómo es crear un NFT, ¡clonemos nuestros archivos de inicio!
-## Clone los archivos de inicio {#clone-the-starter-files}
+## Clonar los archivos de inicio {#clone-the-starter-files}
-Primero, vaya al [repositorio de GitHub nft-minter-tutorial](https://github.com/alchemyplatform/nft-minter-tutorial) para obtener los archivos de inicio de este proyecto. Clone este repositorio en su entorno local.=
+Primero, vaya al [repositorio de GitHub de nft-minter-tutorial](https://github.com/alchemyplatform/nft-minter-tutorial) para obtener los archivos de inicio para este proyecto. Clone este repositorio en su entorno local.
-Cuando abra el repositorio clonado `nft-minter-tutorial`, notará que contiene dos carpetas: `minter-starter-files` y `nft-minter`.
+Cuando abra este repositorio `nft-minter-tutorial` clonado, verá que contiene dos carpetas: `minter-starter-files` y `nft-minter`.
-- `minter-starter-files` contiene los archivos de inicio (esencialmente la interfaz de usuario de React) para este proyecto. En este tutorial, **trabajaremos en este directorio** para que vea cómo dar vida a esta UI conectándola a su billetera de Ethereum y a un contrato inteligente de NFT.
-- `nft-minter` contiene todo el tutorial completado y está disponible como **referencia** ** si se estanca.**
+- `minter-starter-files` contiene los archivos de inicio (esencialmente la interfaz de usuario de React) para este proyecto. En este tutorial, **estaremos trabajando en este directorio**, mientras aprende cómo dar vida a esta interfaz de usuario conectándola a su monedero Ethereum y a un smart contract de NFT.
+- `nft-minter` contiene el tutorial completo y está ahí para usted como **referencia** **si se atasca.**
-A continuación, abra su copia de `minter-starter-files` en su editor de código y luego vaya a la carpeta `src`.
+A continuación, abra su copia de `minter-starter-files` en su editor de código y, a continuación, navegue a su carpeta `src`.
-Todo el código que escribiremos permanecerá en la carpeta `src`. Editaremos el componente `Minter.js` y escribiremos archivos javascript adicionales para dar a nuestro proyecto funcionalidad Web3.
+Todo el código que escribiremos estará en la carpeta `src`. Estaremos editando el componente `Minter.js` y escribiendo archivos javascript adicionales para darle a nuestro proyecto la funcionalidad de Web3.
-## Paso 2: Revisar nuestros archivos de inicio {#step-2-check-out-our-starter-files}
+## Paso 2: Eche un vistazo a nuestros archivos de inicio {#step-2-check-out-our-starter-files}
Antes de empezar a programar, es importante comprobar lo que ya se nos ha proporcionado en los archivos de inicio.
-### Ejecute su proyecto de react {#get-your-react-project-running}
+### Ponga en marcha su proyecto de React {#get-your-react-project-running}
Comencemos por ejecutar el proyecto React en nuestro navegador. La belleza de React es que, una vez que tenemos nuestro proyecto corriendo en el navegador, cualquier cambio que guardemos será actualizado en vivo en el navegador.
-Para ejecutar el proyecto, vaya al directorio raíz de la carpeta `minter-starter-files` y ejecute `npm install` en su terminal para instalar las dependencias del proyecto:
+Para poner en marcha el proyecto, navegue hasta el directorio raíz de la carpeta `minter-starter-files` y ejecute `npm install` en su terminal para instalar las dependencias del proyecto:
```bash
cd minter-starter-files
@@ -90,14 +92,14 @@ Si intenta hacer clic en los botones "Connect Wallet" o "Mint NFT", notará que
### El componente Minter.js {#minter-js}
-**NOTA:** Asegúrese de estar en la carpeta `minter-starter-files` y no en la carpeta `nft-minter`.
+**NOTA:** ¡Asegúrese de que está en la carpeta `minter-starter-files` y no en la carpeta `nft-minter`!
-Volvamos a la carpeta `src` en nuestro editor y abramos el archivo `Minter.js`. Es muy importante que entendamos todo en este archivo, ya que es el componente principal en React en el que trabajaremos.
+Volvamos a la carpeta `src` de nuestro editor y abramos el archivo `Minter.js`. Es muy importante que entendamos todo en este archivo, ya que es el componente principal en React en el que trabajaremos.
En la parte superior de este archivo, tenemos nuestras variables de estado que actualizaremos después de eventos específicos.
```javascript
-//State variables
+//Variables de estado
const [walletAddress, setWallet] = useState("")
const [status, setStatus] = useState("")
const [name, setName] = useState("")
@@ -105,82 +107,82 @@ const [description, setDescription] = useState("")
const [url, setURL] = useState("")
```
-¿Nunca escuchó hablar de variables de estado o hooks de estado de React? Échale un vistazo a [estos](https://reactjs.org/docs/hooks-state.html) documentos.
+¿Nunca escuchó hablar de variables de estado o hooks de estado de React? Consulte [estos](https://legacy.reactjs.org/docs/hooks-state.html) documentos.
Esto es lo que representa cada una de las variables:
-- `walletAddress`: cadena que almacena la dirección de la billetera del usuario
-- `status`: cadena que contiene un mensaje para mostrar en la parte inferior de la interfaz de usuario
-- `name`: cadena que almacena el nombre del NFT
-- `description`: cadena que almacena la descripción del NFT
-- `url`: cadena que actúa como enlace al activo digital del NFT
+- `walletAddress`: una cadena que almacena la dirección del monedero del usuario
+- `status`: una cadena que contiene un mensaje que se mostrará en la parte inferior de la interfaz de usuario
+- `name`: una cadena que almacena el nombre del NFT
+- `description`: una cadena que almacena la descripción del NFT
+- `url`: una cadena que es un enlace al activo digital del NFT
-Después de las variables de estado, verá tres funciones no implementadas: `useEffect`, `connectWalletPressed` y `onMintPressed`. Notará que todas estas funciones son `async`, ¡eso es porque vamos a hacer llamadas asincrónicas de API en ellas! Sus nombres son epónimos con sus funcionalidades:
+Después de las variables de estado, verá tres funciones no implementadas: `useEffect`, `connectWalletPressed` y `onMintPressed`. Notará que todas estas funciones son `async`, ¡esto se debe a que haremos llamadas asíncronas a la API en ellas! Sus nombres son epónimos con sus funcionalidades:
```javascript
useEffect(async () => {
- //TODO: implement
+ //TODO: implementar
}, [])
const connectWalletPressed = async () => {
- //TODO: implement
+ //TODO: implementar
}
const onMintPressed = async () => {
- //TODO: implement
+ //TODO: implementar
}
```
-- [`useEffect`](https://reactjs.org/docs/hooks-effect.html): este es un hook de React que es invocado después de renderizar su componente. Debido a que tiene un prop `[]` de array vacío que se pasa a él (ver línea 3), solo se lo invocará en el _primer_ render del componente. Aquí llamaremos a nuestro oyente de billetera y otra función de billetera para actualizar nuestra interfaz de usuario a fin de reflejar si una billetera ya está conectada.
-- `connectWalletPressed`: esta función será invocada para conectar la billetera en MetaMask del usuario a nuestra dapp.
-- `onMintPressed`: esta función será invocada para mintear el NFT del usuario.
+- [`useEffect`](https://legacy.reactjs.org/docs/hooks-effect.html): este es un React hook que se llama después de que su componente se renderice. Debido a que tiene un prop de matriz vacía `[]` pasado (ver línea 3), solo se llamará en la _primera_ renderización del componente. Aquí llamaremos a nuestro oyente de billetera y otra función de billetera para actualizar nuestra interfaz de usuario a fin de reflejar si una billetera ya está conectada.
+- `connectWalletPressed`: esta función se llamará para conectar el monedero MetaMask del usuario a nuestra dapp.
+- `onMintPressed`: esta función se llamará para acuñar el NFT del usuario.
-Cerca del final de este archivo, tenemos la interfaz de usuario de nuestro componente. Si analiza este código cuidadosamente, notará que actualizamos nuestras variables de estado `url`, `name` y `description` cuando la entrada en sus campos de texto correspondientes cambian.
+Cerca del final de este archivo, tenemos la interfaz de usuario de nuestro componente. Si examina este código con atención, se dará cuenta de que actualizamos nuestras variables de estado `url`, `name` y `description` cuando cambia la entrada en sus correspondientes campos de texto.
-También verá que `conectWalletPressed` y `onMintPressed` son invocadas cuando se hace clic en los botones con los ID `mintButton` y `walletButton`.
+También verá que se llama a `connectWalletPressed` y a `onMintPressed` cuando se hace clic en los botones con los ID `mintButton` y `walletButton` respectivamente.
```javascript
-//the UI of our component
+//la UI de nuestro componente
return (
-
🧙♂️ Alchemy NFT Minter
+
🧙♂️ Acuñador de NFT de Alchemy
- Simply add your asset's link, name, and description, then press "Mint."
+ Simplemente añada el enlace, el nombre y la descripción de su activo y pulse "Acuñar".
{status}
@@ -189,51 +191,51 @@ return (
Finalmente, abordemos dónde se añade este componente Minter.
-Si va al archivo `App.js`, que es el componente principal de React que actúa como contenedor de todos los demás componentes, verá que nuestro componente Minter se inyecta en la línea 7.
+Si va al archivo `App.js`, que es el componente principal en React que actúa como contenedor de todos los demás componentes, verá que nuestro componente Minter se inyecta en la línea 7.
-**En este tutorial, solo editaremos el `archivo Minter.js` y añadiremos archivos en nuestra carpeta `src`.**
+**En este tutorial, solo editaremos el archivo `Minter.js` y añadiremos archivos en nuestra carpeta `src`.**
Ahora que entendemos con qué estamos trabajando, configuremos nuestra billetera de Ethereum.
-## Configure su billetera de Ethereum {#set-up-your-ethereum-wallet}
+## Configurar su monedero de Ethereum {#set-up-your-ethereum-wallet}
Para que los usuarios puedan interactuar con su contrato inteligente, necesitarán conectar su billetera de Ethereum a su dapp.
### Descargar MetaMask {#download-metamask}
-Para este tutorial, usaremos Metamask, una cartera virtual en el navegador usada para manejar la dirección de su cuenta Ethereum. Si desea más información sobre cómo funcionan las transacciones en Ethereum, eche un vistazo a [esta página](/developers/docs/transactions/).
+Para este tutorial, usaremos Metamask, una cartera virtual en el navegador usada para manejar la dirección de su cuenta Ethereum. Si quiere saber más sobre cómo funcionan las transacciones en Ethereum, consulte [esta página](/developers/docs/transactions/).
-Puede descargar y crear una cuenta Metamask gratis [aquí](https://metamask.io/download). Cuando esté creando una cuenta, o si ya tiene una, asegúrese de cambiar a la "Red de prueba Ropsten" en la parte superior derecha \(para no usar dinero real\).
+Puede descargar y crear una cuenta de MetaMask gratis [aquí](https://metamask.io/download). Cuando esté creando una cuenta, o si ya tiene una, asegúrese de cambiar a la "Red de prueba Ropsten" en la parte superior derecha \(para no usar dinero real\).
-### Añada ether a partir de un grifo {#add-ether-from-faucet}
+### Añada ether desde un Faucet {#add-ether-from-faucet}
-Para mintear nuestros NFTs (o firmar cualquier transacción en la cadena de bloques de Ethereum), necesitaremos algo de Eth de prueba (de mentira). Para obtener el Eth, puede ir al [grifo de Ropsten](https://faucet.ropsten.be/) e introducir la dirección de su cuenta de Ropsten y dar clic en "Send Ropsten Eth". Debería ver el Eth en su cuenta de MetaMask poco después.
+Para mintear nuestros NFTs (o firmar cualquier transacción en la cadena de bloques de Ethereum), necesitaremos algo de Eth de prueba (de mentira). Para obtener Eth, puede ir al [faucet de Ropsten](https://faucet.ropsten.be/) e introducir la dirección de su cuenta de Ropsten, y luego hacer clic en «Send Ropsten Eth». Debería ver el Eth en su cuenta de MetaMask poco después.
### Compruebe su saldo {#check-your-balance}
-Para verificar que nuestro saldo esté ahí, realicemos una solicitud [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) usando la [herramienta de compositor de Alchemy](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto devolverá la cantidad de Eth en nuestra billetera. Después de introducir la dirección de su cuenta de Metamask y hacer clic en «Send Request» (Enviar Solicitud), debería ver una respuesta como esta:
+Para comprobar que nuestro saldo está ahí, hagamos una solicitud [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) utilizando la [herramienta de composición de Alchemy](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto devolverá la cantidad de Eth en nuestra billetera. Después de introducir la dirección de su cuenta de Metamask y hacer clic en «Send Request», debería ver una respuesta como esta:
```text
{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}
```
-**NOTA:** Este resultado esta en wei, no en eth. Wei se usa como la denominación más pequeña de Ether. La conversión de wei a eth es: 1 eth = 10¹⁸ wei. Entonces si convertimos 0xde0b6b3a7640000 a decimal, obtenemos 1\*10¹⁸, que equivale a 1 eth.
+**NOTA:** Este resultado es en wei, no en eth. Wei se usa como la denominación más pequeña de Ether. La conversión de wei a eth es: 1 eth = 10¹⁸ wei. Entonces si convertimos 0xde0b6b3a7640000 a decimal, obtenemos 1\*10¹⁸, que equivale a 1 eth.
¡Fiu! Nuestro dinero de prueba está ahí sin problemas.
-## Conecte Metamask a su UI {#connect-metamask-to-your-UI}
+## Conecte MetaMask a su interfaz de usuario {#connect-metamask-to-your-UI}
Ahora que nuestra billetera de MetaMask está configurada, vamos a conectar nuestra dapp a ella.
-Debido a que queremos prescribir al paradigma [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller), vamos a crear un archivo separado que contenga nuestras funciones para gestionar la lógica, los datos y las reglas de nuestra dapp, para luego pasar estas funciones a nuestro frontend (nuestro componente Minter.js).
+Debido a que queremos suscribirnos al paradigma [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller), vamos a crear un archivo separado que contenga nuestras funciones para gestionar la lógica, los datos y las reglas de nuestra dapp, y luego pasar esas funciones a nuestro frontend (nuestro componente Minter.js).
-### Función `connectWallet` {#connect-wallet-function}
+### La función `connectWallet` {#connect-wallet-function}
-Para hacer eso, vamos a crear una nueva carpeta llamada `utils` en el directorio `src` y agregaremos un archivo llamado `interact.js` dentro de esta, que contendrá todas las funciones de interacción de nuestra billetera y contrato inteligente.
+Para ello, vamos a crear una nueva carpeta llamada `utils` en su directorio `src` y a añadir un archivo llamado `interact.js` dentro de ella, que contendrá todas nuestras funciones de interacción con el monedero y el smart contract.
En nuestro archivo `interact.js`, escribiremos una función `connectWallet`, que luego importaremos y llamaremos en nuestro componente `Minter.js`.
-En el archivo `interact.js`, añada lo siguiente:
+En su archivo `interact.js`, añada lo siguiente:
```javascript
export const connectWallet = async () => {
@@ -243,7 +245,7 @@ export const connectWallet = async () => {
method: "eth_requestAccounts",
})
const obj = {
- status: "👆🏽 Write a message in the text-field above.",
+ status: "👆🏽 Escriba un mensaje en el campo de texto de arriba.",
address: addressArray[0],
}
return obj
@@ -261,8 +263,8 @@ export const connectWallet = async () => {
@@ -274,26 +276,26 @@ export const connectWallet = async () => {
Analicemos lo que hace este código:
-Primero, nuestra función revisa si `window.ethereum` está activado en su navegador.
+En primer lugar, nuestra función comprueba si `window.ethereum` está habilitado en su navegador.
-`window.ethereum` es una API global inyectada por MetaMask y otros proveedores de billeteras que permite a los sitios web solicitar las cuentas de Ethereum de los usuarios. En caso de aprobación, puede leer información de la cadena de bloques a la que el usuario se encuentra conectado y sugerir al usuario que firme mensajes y transacciones. Revise la [documentación de MetaMask](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) para obtener más información.
+`window.ethereum` es una API global inyectada por MetaMask y otros proveedores de monederos que permite a los sitios web solicitar las cuentas de Ethereum de los usuarios. En caso de aprobación, puede leer información de la cadena de bloques a la que el usuario se encuentra conectado y sugerir al usuario que firme mensajes y transacciones. ¡Consulte los [documentos de MetaMask](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) para obtener más información!
-Si `window.ethereum` _no está_ presente, eso significa que MetaMask no está instalado. Esto resulta en la devolución de un objeto JSON, donde el `address` devuelto es una cadena vacía y el objeto JSX `status` muestra que el usuario debe instalar MetaMask.
+Si `window.ethereum` _no está_ presente, significa que MetaMask no está instalado. Esto da como resultado la devolución de un objeto JSON, donde la `address` devuelta es una cadena vacía, y el objeto JSX `status` transmite que el usuario debe instalar MetaMask.
-**Muchas de las funciones que escribamos mostrarán objetos JSON que podemos usar para actualizar nuestras variables de estado y UI.**
+**La mayoría de las funciones que escribamos devolverán objetos JSON que podremos utilizar para actualizar nuestras variables de estado y la interfaz de usuario.**
-Ahora, si `window.ethereum` _está_ presente, las cosas se ponen interesantes.
+Ahora, si `window.ethereum` _está_ presente, es cuando las cosas se ponen interesantes.
-Usando un bucle try/catch, trataremos de conectar con MetaMask invocando [`window.ethereum.request({ method: "eth_requestAccounts" });`](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts). La invocación de esta función abrirá MetaMask en el navegador, donde se le solicitará al usuario conectar su billetera a su dapp.
+Usando un bucle try/catch, intentaremos conectarnos a MetaMask llamando a [`window.ethereum.request({ method: "eth_requestAccounts" });`](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts). La invocación de esta función abrirá MetaMask en el navegador, donde se le solicitará al usuario conectar su billetera a su dapp.
-- Si el usuario elige conectarla, `method: "eth_requestAccounts"` devolverá un arreglo que contiene todas las direcciones de la cuenta del usuario que están conectadas a la dapp. De igual manera, nuestra función `connectWallet` devolverá un objeto JSON que contine la _primera_ `address` de este arreglo \(ver la línea 9\) y un mensaje de `status` que solicita al usuario escribir un mensaje al contrato inteligente.
-- Si el usuario rechaza la conexión, el objeto JSON tendrá una cadena vacía para la `address` devuelta y un mensaje de `status` donde se refleje que el usuario rechazó la conexión.
+- Si el usuario elige conectarse, `method: "eth_requestAccounts"` devolverá una matriz que contiene todas las direcciones de cuenta del usuario que están conectadas a la dapp. En conjunto, nuestra función `connectWallet` devolverá un objeto JSON que contiene la _primera_ `address` de esta matriz (consulte la línea 9) y un mensaje de `status` que solicita al usuario que escriba un mensaje en el smart contract.
+- Si el usuario rechaza la conexión, el objeto JSON contendrá una cadena vacía para la `address` devuelta y un mensaje de `status` que reflejará que el usuario ha rechazado la conexión.
-### Agregue la función connectWallet a su componente Minter.js {#add-connect-wallet}
+### Añadir la función connectWallet a su componente de UI Minter.js {#add-connect-wallet}
-Ahora que hemos escrito esta función `connectWallet`, vamos a conectarla con nuestro componente `Minter.js`.
+Ahora que hemos escrito esta función `connectWallet`, vamos a conectarla a nuestro componente `Minter.js.`.
-Primero, tenemos que importar nuestra función a nuestro archivo `Minter.js` agregando `import { connectWallet } from "./utils/interact.js";` en la parte superior del archivo `Minter.js`. Las primeras 11 líneas de `Minter.js` deberían lucir así:
+Primero, tendremos que importar nuestra función a nuestro archivo `Minter.js` añadiendo `import { connectWallet } from "./utils/interact.js";` en la parte superior del archivo `Minter.js`. Sus primeras 11 líneas de `Minter.js` deberían tener este aspecto:
```javascript
import { useEffect, useState } from "react";
@@ -301,7 +303,7 @@ import { connectWallet } from "./utils/interact.js";
const Minter = (props) => {
- //State variables
+ //Variables de estado
const [walletAddress, setWallet] = useState("");
const [status, setStatus] = useState("");
const [name, setName] = useState("");
@@ -309,7 +311,7 @@ const Minter = (props) => {
const [url, setURL] = useState("");
```
-Luego, dentro de nuestra función `connectWalletPressed`, llamaremos a nuestra función `connectWallet` de la siguiente manera:
+A continuación, dentro de nuestra función `connectWalletPressed`, llamaremos a nuestra función importada `connectWallet`, de esta manera:
```javascript
const connectWalletPressed = async () => {
@@ -319,11 +321,11 @@ const connectWalletPressed = async () => {
}
```
-¿Nota cómo gran parte de nuestra funcionalidad es abstraída de nuestro componente `Minter.js` del archivo `interact.js`? ¡Esto es así para cumplir con el paradigma M-V-C!
+¿Se da cuenta de cómo la mayor parte de nuestra funcionalidad se abstrae de nuestro componente `Minter.js` desde el archivo `interact.js`? ¡Esto es así para cumplir con el paradigma M-V-C!
-En `connectWalletPressed`, simplemente hacemos una llamada en espera a nuestra función `conectWallet` importada y, utilizando su respuesta, actualizamos nuestras variables `status` y `walletAddress` a través de sus hooks de estado.
+En `connectWalletPressed`, simplemente hacemos una llamada await a nuestra función `connectWallet` importada y, usando su respuesta, actualizamos nuestras variables `status` y `walletAddress` a través de sus state hooks.
-Ahora, guardemos ambos archivos `Minter.js` e `interact.js`, y probemos nuestra UI.
+Ahora, guardemos los dos archivos, `Minter.js` e `interact.js`, y probemos nuestra interfaz de usuario hasta ahora.
Abra el navegador en localhost:3000 y presione el botón "Connect Wallet" en la parte superior derecha de la página.
@@ -331,13 +333,13 @@ Si tiene MetaMask instalado, se le debería solicitar conectar su billetera a su
Debería ver que el botón de billetera ahora muestra que su dirección está conectada.
-A continuación, pruebe actualizar la página... esto es extraño. Nuestro botón de billetera nos está solicitando conectar MetaMask, aunque ya está conectado...
+A continuación, intente refrescar la página... esto es extraño. Nuestro botón de billetera nos está solicitando conectar MetaMask, aunque ya está conectado...
-¡No se preocupe! Podemos solucionarlo con facilidad implementando una función llamada `getCurrentWalletConnected`, que revisará si ya hay una dirección conectada a nuestra dapp y actualizará nuestra interfaz como corresponda.
+¡No se preocupe! Podemos solucionarlo fácilmente implementando una función llamada `getCurrentWalletConnected`, que comprobará si una dirección ya está conectada a nuestra dapp y actualizará nuestra interfaz de usuario en consecuencia.
### La función getCurrentWalletConnected {#get-current-wallet}
-En su archivo `interact.js`, agregue la siguiente función `getCurrentWalletConnected`:
+En su archivo `interact.js`, añada la siguiente función `getCurrentWalletConnected`:
```javascript
export const getCurrentWalletConnected = async () => {
@@ -349,12 +351,12 @@ export const getCurrentWalletConnected = async () => {
if (addressArray.length > 0) {
return {
address: addressArray[0],
- status: "👆🏽 Write a message in the text-field above.",
+ status: "👆🏽 Escriba un mensaje en el campo de texto de arriba.",
}
} else {
return {
address: "",
- status: "🦊 Connect to MetaMask using the top right button.",
+ status: "🦊 Conéctese a MetaMask usando el botón superior derecho.",
}
}
} catch (err) {
@@ -371,8 +373,8 @@ export const getCurrentWalletConnected = async () => {
@@ -382,23 +384,23 @@ export const getCurrentWalletConnected = async () => {
}
```
-Este código es _muy_ silimar a la función `connectWallet` que escribimos previamente.
+Este código es _muy_ similar a la función `connectWallet` que acabamos de escribir.
-La principal diferencia es que, en vez de llamar al método `eth_requestAccount`, que abre MetaMask para que el usuario conecte su billetera, aquí llamamos al método `eth_accounts`, que simplemente devuelve un arreglo que contiene las direcciones de MetaMask que se encuentran conectadas a nuestra dapp.
+La principal diferencia es que, en lugar de llamar al método `eth_requestAccounts`, que abre MetaMask para que el usuario conecte su monedero, aquí llamamos al método `eth_accounts`, que simplemente devuelve un array con las direcciones de MetaMask actualmente conectadas a nuestra dapp.
-Para ver esta función en acción, vamos a llamarla en la función `useEffect` de nuestro componente `Minter.js`.
+Para ver esta función en acción, llamémosla en la función `useEffect` de nuestro componente `Minter.js`.
-Como hicimos para `connectWallet`, debemos importar esta función de nuestro archivo `interact.js` a nuestro archivo `Minter.js`:
+Al igual que hicimos con `connectWallet`, debemos importar esta función desde nuestro archivo `interact.js` a nuestro archivo `Minter.js` de la siguiente manera:
```javascript
import { useEffect, useState } from "react"
import {
connectWallet,
- getCurrentWalletConnected, //import here
+ getCurrentWalletConnected, //importar aquí
} from "./utils/interact.js"
```
-Ahora, simplemente la llamamos en nuestra función `useEffect`:
+Ahora, simplemente lo llamamos en nuestra función `useEffect`:
```javascript
useEffect(async () => {
@@ -408,15 +410,15 @@ useEffect(async () => {
}, [])
```
-Note que usamos la respuesta de nuestra llamada a `getCurrentWalletConnected` para actualizar nuestras variables de estado `walletAddress` y `status`.
+Observe que utilizamos la respuesta de nuestra llamada a `getCurrentWalletConnected` para actualizar nuestras variables de estado `walletAddress` y `status`.
Una vez agregado este código, pruebe actualizar la ventana del navegador. El botón debería decir que está conectado y mostrar una vista previa de la dirección de su billetera conectada, incluso después de actualizar la página.
-### Implemente addWalletListener {#implement-add-wallet-listener}
+### Implementar addWalletListener {#implement-add-wallet-listener}
El último paso en la configuración de la billetera de dapp es implementar el oyente de billetera para que nuestra interfaz se actualice cuando el estado de la billetera cambie, por ejemplo, cuando el usuario se desconecte o cambie de cuenta.
-En el archivo `Minter.js`, agregue una función `addWalletListener` que luzca así:
+En su archivo `Minter.js`, añada una función `addWalletListener` que tenga el siguiente aspecto:
```javascript
function addWalletListener() {
@@ -424,10 +426,10 @@ function addWalletListener() {
window.ethereum.on("accountsChanged", (accounts) => {
if (accounts.length > 0) {
setWallet(accounts[0])
- setStatus("👆🏽 Write a message in the text-field above.")
+ setStatus("👆🏽 Escriba un mensaje en el campo de texto de arriba.")
} else {
setWallet("")
- setStatus("🦊 Connect to MetaMask using the top right button.")
+ setStatus("🦊 Conéctese a MetaMask utilizando el botón superior derecho.")
}
})
} else {
@@ -435,7 +437,7 @@ function addWalletListener() {
)
@@ -445,11 +447,11 @@ function addWalletListener() {
Analicemos rápidamente lo que sucede aquí:
-- Primero, nuestra función verifica si `window.ethereum` está habilitado \(esto es si MetaMask está instalado\).
- - Si no lo está, simplemente establecemos nuestra variable de estado `status` a una cadena JSX que solicite al usuario instalar MetaMask.
- - Si está habilitado, configuramos el oyente `window.ethereum.on("accountsChanged")` en la línea 3, que escucha cambios de estado en la billetera de MetaMask, incluyendo cuando el usuario conecte una cuenta adicional a la dapp, cambie de cuenta o desconecte una cuenta. Si hay por lo menos una cuenta conectada, la variable de estado `walletAddress` es actualizada como la primera cuenta en el arreglo `accounts` devuelto por el oyente. De lo contrario, `walletAddress` se establece como cadena vacía.
+- Primero, nuestra función comprueba si `window.ethereum` está habilitado (es decir, si MetaMask está instalado).
+ - Si no lo está, simplemente establecemos nuestra variable de estado `status` en una cadena JSX que pide al usuario que instale MetaMask.
+ - Si está habilitado, configuramos el detector `window.ethereum.on("accountsChanged")` en la línea 3 que escucha los cambios de estado en el monedero de MetaMask, que incluyen cuándo el usuario conecta una cuenta adicional a la dapp, cambia de cuenta o desconecta una cuenta. Si hay al menos una cuenta conectada, la variable de estado `walletAddress` se actualiza como la primera cuenta del array `accounts` devuelto por el detector. De lo contrario, `walletAddress` se establece como una cadena vacía.
-Finalmente, debemos llamarlo en nuestra función `useEffect`:
+Por último, debemos llamarlo en nuestra función `useEffect`:
```javascript
useEffect(async () => {
@@ -463,11 +465,11 @@ useEffect(async () => {
¡Y voilá! ¡Hemos completado la programación de nuestra funcionalidad de billetera! ¡Ahora que nuestra billetera está configurada, veamos cómo mintear nuestro NFT!
-## Aspectos básicos sobre metadatos de NFT {#nft-metadata-101}
+## Metadatos de NFT 101 {#nft-metadata-101}
Recordemos los metadatos de NFT sobre los que hablamos en el Paso 0 de este tutorial: dan vida a un NFT, permitiendo que tenga propiedades, tales como un activo digital, un nombre, una descripción y otros atributos.
-Vamos a tener que configurar estos metadatos como objeto JSON y almacenarlo para poder pasarlos como parámetro `tokenURI` cuando invoquemos la función `mintNFT` de nuestro contrato inteligente.
+Vamos a necesitar configurar estos metadatos como un objeto JSON y almacenarlos, para que podamos pasarlos como el parámetro `tokenURI` al llamar a la función `mintNFT` de nuestro smart contract.
El texto en los campos "Link to Asset", "Name" y "Description" comprenderá las diferentes propiedades de los metadatos de nuestro NFT. Formatearemos estos metadatos como un objeto JSON, pero hay un par de opciones para almacenar este objeto JSON:
@@ -475,39 +477,39 @@ El texto en los campos "Link to Asset", "Name" y "Description" comprenderá las
- Podríamos almacenarlo en un servidor centralizado, como AWS o Firebase. Pero esto iría en contra de nuestro espíritu de descentralización.
- Podríamos usar IPFS, un protocolo descentralizado y red entre pares para almacenar y compartir datos en un sistema de archivos distribuido. Como este protocolo es descentralizado y gratuito, es nuestra mejor opción.
-Para almacenar nuestros metadatos en IPFS, usaremos [Pinata](https://pinata.cloud/), una conveniente API de IPFS y kit de herramientas. En el siguiente paso, explicaremos exactamente cómo hacer esto.
+Para almacenar nuestros metadatos en IPFS, utilizaremos [Pinata](https://pinata.cloud/), una API y un conjunto de herramientas de IPFS muy prácticos. En el siguiente paso, explicaremos exactamente cómo hacer esto.
-## Use Pinata para fijar sus metadatos en IPFS {#use-pinata-to-pin-your-metadata-to-IPFS}
+## Use Pinata para anclar sus metadatos a IPFS {#use-pinata-to-pin-your-metadata-to-IPFS}
-Si no tiene una cuenta de [Pinata](https://pinata.cloud/), cree una cuenta gratuita [aquí](https://app.pinata.cloud/auth/signup) y complete los pasos para verificar su correo electrónico y su cuenta.
+Si no tiene una cuenta de [Pinata](https://pinata.cloud/), regístrese para obtener una cuenta gratuita [aquí](https://app.pinata.cloud/auth/signup) y complete los pasos para verificar su correo electrónico y su cuenta.
-### Cree su clave de API de Pinata {#create-pinata-api-key}
+### Crear su clave de API de Pinata {#create-pinata-api-key}
-Navegue a la página [https://pinata.cloud/kets](https://pinata.cloud/keys), luego seleccione el botón "New Key" en la parte superior, establezca el widget de Administrador como habilitado y asigne un nombre a su clave.
+Navegue a la página [https://pinata.cloud/keys](https://pinata.cloud/keys), luego seleccione el botón «New Key» en la parte superior, habilite el widget de administración y asigne un nombre a su clave.
Luego verá una ventana emergente con la información de su API. Asegúrese de guardar estos datos en un lugar seguro.
Ahora que nuestra clave está configurada, vamos a agregarla a nuestro proyecto para poder usarla.
-### Cree un archivo .env {#create-a-env}
+### Crear un archivo .env {#create-a-env}
-Podemos almacenar de manera segura nuestra clave y secreto de Pinata en un archivo de entorno. Vamos a instalar el [paquete dotenv](https://www.npmjs.com/package/dotenv) en el directorio del proyecto.
+Podemos almacenar de manera segura nuestra clave y secreto de Pinata en un archivo de entorno. Instalemos el [paquete dotenv](https://www.npmjs.com/package/dotenv) en el directorio de su proyecto.
-Abra una nueva pestaña en su terminal \(separada de la que está ejecutando local host\) y asegúrese de que estar en la carpeta `minter-starter-files`; luego ejecute el siguiente comando en el terminal:
+Abra una nueva pestaña en su terminal (separada de la que está ejecutando el host local) y asegúrese de que está en la carpeta `minter-starter-files`, luego ejecute el siguiente comando en su terminal:
```text
npm install dotenv --save
```
-A continuación, cree un archivo `.env` en el directorio raíz de `minter-starter-files` ingresando lo siguiente el la línea de comandos:
+A continuación, cree un archivo `.env` en el directorio raíz de sus `minter-starter-files` introduciendo lo siguiente en su línea de comandos:
```javascript
vim.env
```
-Esto abrirá el archivo `.env` en vim \(un editor de texto\). Para guardarlo, presione "esc" + ":" + "q" en el teclado en dicho orden.
+Esto abrirá su archivo `.env` en vim (un editor de texto). Para guardarlo, presione "esc" + ":" + "q" en el teclado en dicho orden.
-A continuación, en VSCode, navegue a su archivo `.env` y agregue su clave de API y secreto de API de Pinata a este, de la siguiente manera:
+A continuación, en VSCode, navegue hasta su archivo `.env` y añádale su clave API y su secreto API de Pinata, de la siguiente manera:
```text
REACT_APP_PINATA_KEY =
@@ -516,11 +518,11 @@ REACT_APP_PINATA_SECRET =
Guarde el archivo y luego estará listo para iniciar la escritura de la función para subir los metadatos JSON a IPFS.
-### Implemente pinJSONToIPFS {#pin-json-to-ipfs}
+### Implementar pinJSONToIPFS {#pin-json-to-ipfs}
-Afortunadamente para nosotros, Pinata tiene una [API específicamente para subir datos JSON a IPFS](https://docs.pinata.cloud/api-reference/endpoint/ipfs/pin-json-to-ipfs#pin-json) y un práctico ejemplo de JavaScript con axios que podemos usar, con algunas ligeras modificaciones.
+Afortunadamente para nosotros, Pinata tiene una [API específica para cargar datos JSON en IPFS](https://docs.pinata.cloud/api-reference/endpoint/ipfs/pin-json-to-ipfs#pin-json) y un práctico ejemplo de JavaScript con axios que podemos usar, con algunas ligeras modificaciones.
-En la carpeta `utils`, vamos a crear otro archivo llamado `pinata.js` y luego importar su secreto y clave de Pinata desde el archivo .env de la siguiente manera:
+En su carpeta `utils`, vamos a crear otro archivo llamado `pinata.js` y luego importar nuestro secreto y clave de Pinata desde el archivo .env de esta manera:
```javascript
require("dotenv").config()
@@ -528,7 +530,7 @@ const key = process.env.REACT_APP_PINATA_KEY
const secret = process.env.REACT_APP_PINATA_SECRET
```
-A continuación, pegue el código adicional que se encuentra abajo en su archivo `pinata.js`. ¡No se preocupe, explicaremos lo que significa todo esto!
+A continuación, pegue el código adicional de abajo en su archivo `pinata.js`. ¡No se preocupe, explicaremos lo que significa todo esto!
```javascript
require("dotenv").config()
@@ -539,7 +541,7 @@ const axios = require("axios")
export const pinJSONToIPFS = async (JSONBody) => {
const url = `https://api.pinata.cloud/pinning/pinJSONToIPFS`
- //making axios POST request to Pinata ⬇️
+ //haciendo una solicitud POST de axios a Pinata ⬇️
return axios
.post(url, JSONBody, {
headers: {
@@ -566,30 +568,30 @@ export const pinJSONToIPFS = async (JSONBody) => {
Entonces, ¿qué hace este código exactamente?
-Primero, importa [axios](https://www.npmjs.com/package/axios), un cliente HTTP basado en promesas para el navegador y node.js, que usaremos para hacer una solicitud a Pinata.
+Primero, importa [axios](https://www.npmjs.com/package/axios), un cliente HTTP basado en promesas para el navegador y node.js, que utilizaremos para hacer una solicitud a Pinata.
-Luego, tenemos nuestra función asíncrona `pinJSONToIPFS`, que toma un `JSONBody` como su entrada, además de la clave y secreto de la API de Pinata en su encabezado, todo para hacer una solicitud POST a su API de `pinJSONToIPFS`.
+Luego tenemos nuestra función asíncrona `pinJSONToIPFS`, que toma un `JSONBody` como entrada y la clave y el secreto de la API de Pinata en su cabecera, todo para hacer una solicitud POST a su API `pinJSONToIPFS`.
-- Si esta solicitud POST es exitosa, nuestra función devuelve un objeto JSON con el booleano `success` como verdadero y la `pinataUrl` donde fueron fijados nuestros metadatos. Usaremos esta `pinataUrl` devuelta como la entrada `tokenURI` a la función de minteo de nuestro contrato inteligente.
-- Si esta solicitud POST falla, la función devuelve un objeto JSON con el booleano `success` como falso y una cadena `message` que muestra el error.
+- Si esta solicitud POST tiene éxito, entonces nuestra función devuelve un objeto JSON con el booleano `success` como verdadero y el `pinataUrl` donde se anclaron nuestros metadatos. Utilizaremos este `pinataUrl` devuelto como entrada de `tokenURI` para la función de acuñación de nuestro smart contract.
+- Si esta solicitud POST falla, entonces nuestra función devuelve un objeto JSON con el booleano `success` como falso y una cadena de `message` que transmite nuestro error.
-Como sucede con los tipos de retorno de la función `connectWallet`, estamos devolviendo objetos JSON para poder usar sus parámetros con la finalidad de actualizar nuestras variables de estado e interfaz.
+Al igual que con los tipos de retorno de nuestra función `connectWallet`, estamos devolviendo objetos JSON para poder usar sus parámetros para actualizar nuestras variables de estado y la interfaz de usuario.
-## Suba el contrato inteligente {#load-your-smart-contract}
+## Cargar su smart contract {#load-your-smart-contract}
-Ahora que tenemos una manera de cargar los metadatos de nuestro NFT a IPFS a través de la función `pinJSONToIPFS`, necesitaremos una manera de cargar una instancia del contrato inteligente para invocar su función `mintNFT`.
+Ahora que tenemos una forma de subir los metadatos de nuestro NFT a IPFS a través de nuestra función `pinJSONToIPFS`, vamos a necesitar una forma de cargar una instancia de nuestro smart contract para poder llamar a su función `mintNFT`.
-Como se mencionó previamente, en este tutorial usaremos [este contrato inteligente de NFT existente](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE); sin embargo, si desea aprender cómo lo hicimos o crear uno por su cuenta, recomendamos consultar nuestro otro tutorial [Cómo crear un NFT](https://docs.alchemyapi.io/alchemy/tutorials/how-to-create-an-nft).
+Como mencionamos anteriormente, en este tutorial utilizaremos [este smart contract de NFT existente](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE); sin embargo, si le gustaría aprender cómo lo hicimos, o hacer uno usted mismo, le recomendamos encarecidamente que consulte nuestro otro tutorial, [«Cómo crear un NFT»](https://www.alchemy.com/docs/how-to-create-an-nft).
-### ABI del contrato {#contract-abi}
+### El ABI del contrato {#contract-abi}
-Si ha examinado nuestros archivos en detalle, habrá notado que en nuestro directorio `src` hay un archivo `contract-abi.json`. Un ABI es necesario para especificar qué función invocará un contrato y para asegurar que la función devolverá datos en el formato esperado.
+Si ha examinado nuestros archivos de cerca, habrá notado que en nuestro directorio `src`, hay un archivo `contract-abi.json`. Un ABI es necesario para especificar qué función invocará un contrato y para asegurar que la función devolverá datos en el formato esperado.
Tambien necesitaremos una clave de API de Alchemy y la API Web3 de Alchemy para establecer conexión con la cadena de bloques de Ethereum y cargar nuestro contrato inteligente.
-### Cree su clave API de Alchemy {#create-alchemy-api}
+### Cree su clave de API de Alchemy {#create-alchemy-api}
-Si todavía no tiene una cuenta de Alchemy, [cree una cuenta gratuita aquí](https://alchemy.com/?a=eth-org-nft-minter).
+Si aún no tiene una cuenta de Alchemy, [regístrese gratis aquí](https://alchemy.com/?a=eth-org-nft-minter).
Una vez que haya creado una cuenta de Alchemy, puede generar una clave de API creando una aplicación. Esto nos permitirá hacer solicitudes a la red de pruebas de Ropsten.
@@ -597,11 +599,11 @@ Vaya a la página "Create App" en el panel de Alchemy colocando el cursor sobre
Asigne un nombre a la aplicación (nosotros elegimos "Mi primer NFT"), ofrezca una descripción, seleccione "Staging" para el Entorno usado para la contabilidad de la aplicación y seleccione "Ropsten" para la red.
-¡Haga clic en «Crear app» y eso es todo! Su aplicación debería aparecer en el tablero de abajo.
+¡Haga clic en «Crear app» y ya está! Su aplicación debería aparecer en la siguiente tabla.
¡Genial! Ahora que hemos creado la URL HTTP de la API de Alchemy, cópiela en el portapapeles...
-… y luego vamos a agregarla al archivo `.env`. En definitiva el archivo .env debe lucir así:
+... y luego vamos a añadirla a nuestro archivo `.env`. En definitiva el archivo .env debe lucir así:
```text
REACT_APP_PINATA_KEY =
@@ -609,18 +611,18 @@ REACT_APP_PINATA_SECRET =
REACT_APP_ALCHEMY_KEY = https://eth-ropsten.alchemyapi.io/v2/
```
-Ahora que tenemos nuestro ABI de contrato y la clave de API de Alchemy, estamos listos para cargar nuestro contrato inteligente usando [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3).
+Ahora que tenemos nuestro ABI del contrato y nuestra clave de API de Alchemy, estamos listos para cargar nuestro smart contract usando [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3).
-### Configure el terminal y contrato de Alchemy Web3 {#setup-alchemy-endpoint}
+### Configurar su punto de conexión y contrato de Alchemy Web3 {#setup-alchemy-endpoint}
-Primero, si aún no lo tiene, necesita instalar [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) navegando al directorio de inicio: `nft-minter-tutorial` en el terminal:
+Primero, si aún no lo tiene, necesitará instalar [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) navegando al directorio principal: `nft-minter-tutorial` en la terminal:
```text
cd ..
npm install @alch/alchemy-web3
```
-A continuación, regresemos a nuestro archivo `interact.js`. En la parte superior del archivo, agregue el siguiente código para importar la clave de Alchemy desde el archivo .env y configurar su terminal de Alchemy Web3:
+A continuación, volvamos a nuestro archivo `interact.js`. En la parte superior del archivo, agregue el siguiente código para importar la clave de Alchemy desde el archivo .env y configurar su terminal de Alchemy Web3:
```javascript
require("dotenv").config()
@@ -629,7 +631,7 @@ const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
const web3 = createAlchemyWeb3(alchemyKey)
```
-[ Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) está construido sobre [Web3](https://docs.web3js.org/), de esta manera proporciona metodos mejorados de la API y otros beneficios importantes para que tu vida como desarrollador de Web3 sea mucho más fácil. Se diseñó para requerir una configuración mínima, por lo que puede comenzar a usarla en su aplicación de inmediato.
+[Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) es un envoltorio de [Web3.js](https://docs.web3js.org/), que proporciona métodos de API mejorados y otros beneficios cruciales para facilitar su vida como desarrollador de web3. Se diseñó para requerir una configuración mínima, por lo que puede comenzar a usarla en su aplicación de inmediato.
Ahora, agreguemos nuestro ABI de contrato y la dirección del contrato a nuestro archivo.
@@ -645,13 +647,13 @@ const contractAddress = "0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE"
Una vez que tengamos ambos, estamos listos para comenzar con el código de nuestra función de minteo.
-## Implemente la función mintNFT {#implement-the-mintnft-function}
+## Implementar la función mintNFT {#implement-the-mintnft-function}
-Dentro del archivo `interact.js`, vamos a definir nuestra función, `mintNFT`, que de forma epónima minteará nuestro NFT.
+Dentro de su archivo `interact.js`, definamos nuestra función `mintNFT`, que epónimamente acuñará nuestro NFT.
Debido a que realizaremos varias llamadas asíncronas \(a Pinata para fijar los metadatos a IPFS, a Alchemy Web3 para cargar nuestro contrato inteligente y a MetaMask para firmar las transacciones\), nuestra función también será asíncrona.
-Las tres entradas a nuestra función serán la `url` de nuestro activo digital, `name` y `description`. Agregue la siguiente firma de función debajo de la función `connectWallet`:
+Las tres entradas de nuestra función serán la `url` de nuestro activo digital, el `name` y la `description`. Añada la siguiente firma de función debajo de la función `connectWallet`:
```javascript
export const mintNFT = async (url, name, description) => {}
@@ -663,83 +665,83 @@ Naturalmente, tiene sentido tener algún tipo de manejo de errores de entrada en
```javascript
export const mintNFT = async (url, name, description) => {
- //error handling
+ //manejo de errores
if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
return {
success: false,
- status: "❗Please make sure all fields are completed before minting.",
+ status: "❗Asegúrese de que todos los campos estén completos antes de acuñar.",
}
}
}
```
-Básicamente, si cualquiera de los parámetros de entrada son una cadena vacía, devolvemos un objeto JSON donde el booleano `success` es falso y la cadena `status` muestre que deben completarse todos los campos en nuestra UI.
+Esencialmente, si alguno de los parámetros de entrada es una cadena vacía, devolvemos un objeto JSON donde el booleano `success` es falso, y la cadena `status` transmite que todos los campos de nuestra interfaz de usuario deben estar completos.
-### Subir los metadatos a IPFS {#upload-metadata-to-ipfs}
+### Cargar los metadatos a IPFS {#upload-metadata-to-ipfs}
-Una vez sabemos que sepamos que nuestros metadatos están formateados correctamente, el siguiente paso es ponerlos en un objeto JSON y subirlos a IPFS a través del `pinJSONToIPFS` que escribimos.
+Una vez que sepamos que nuestros metadatos están formateados correctamente, el siguiente paso es envolverlos en un objeto JSON y subirlos a IPFS a través de la función `pinJSONToIPFS` que escribimos.
-Para hacer eso, primero necesitamos importar la función `pinJSONToIPFS` en el archivo `interact.js`. En la parte superior de `interact.js`, vamos a agregar:
+Para ello, primero tenemos que importar la función `pinJSONToIPFS` a nuestro archivo `interact.js`. En la parte superior de `interact.js`, añadamos:
```javascript
import { pinJSONToIPFS } from "./pinata.js"
```
-Recuerde que `pinJSONToIPFS` toma un cuerpo JSON. Antes de hacer una invocación, necesitaremos formatear los parámetros `url`, `name` y `description` en un objeto JSON.
+Recuerde que `pinJSONToIPFS` toma un cuerpo JSON. Así que antes de llamarla, vamos a tener que formatear nuestros parámetros `url`, `name` y `description` en un objeto JSON.
-Actualicemos nuestro código para crear un objeto JSON llamado `metadata` y luego hacer un llamado a `pinJSONToIPFS` con este parámetro de `metadata`:
+Actualicemos nuestro código para crear un objeto JSON llamado `metadata` y luego hacer una llamada a `pinJSONToIPFS` con este parámetro `metadata`:
```javascript
export const mintNFT = async (url, name, description) => {
- //error handling
+ //manejo de errores
if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
return {
success: false,
- status: "❗Please make sure all fields are completed before minting.",
+ status: "❗Asegúrese de que todos los campos estén completos antes de acuñar.",
}
}
- //make metadata
+ //crear metadatos
const metadata = new Object()
metadata.name = name
metadata.image = url
metadata.description = description
- //make pinata call
+ //hacer llamada a pinata
const pinataResponse = await pinJSONToIPFS(metadata)
if (!pinataResponse.success) {
return {
success: false,
- status: "😢 Something went wrong while uploading your tokenURI.",
+ status: "😢 Algo salió mal al subir su tokenURI.",
}
}
const tokenURI = pinataResponse.pinataUrl
}
```
-Note que guardamos la respuesta de nuestra llamada a `pinJSONToIPFS(metadata)` en el objeto `pinataResponse`. Luego, analizamos este objeto para buscar errores.
+Observe que almacenamos la respuesta de nuestra llamada a `pinJSONToIPFS(metadata)` en el objeto `pinataResponse`. Luego, analizamos este objeto para buscar errores.
-Si hay un error, devolvemos un objeto JSON donde el booleano `success` es falso y nuestra cadena `status` transmita que nuestra llamada falló. De lo contrario, extraemos el `pinataURL` de `pinataResponse` y lo almacenamos como variable `tokenURI`.
+Si hay un error, devolvemos un objeto JSON donde el booleano `success` es falso y nuestra cadena `status` transmite que nuestra llamada ha fallado. De lo contrario, extraemos la `pinataURL` de la `pinataResponse` y la almacenamos como nuestra variable `tokenURI`.
-Ahora es momento de cargar nuestro contrato inteligente usando la API web3 de Alchemy que inicializamos en la parte superior de nuestro archivo. Agregue la siguiente línea de código al final de la función `mintNFT` para establecer el contrato en la variable global `window.contract`:
+Ahora es momento de cargar nuestro contrato inteligente usando la API web3 de Alchemy que inicializamos en la parte superior de nuestro archivo. Añada la siguiente línea de código al final de la función `mintNFT` para establecer el contrato en la variable global `window.contract`:
```javascript
window.contract = await new web3.eth.Contract(contractABI, contractAddress)
```
-Lo último por agregar en nuestra función `mintNFT` es nuestra transacción de Ethereum:
+Lo último que hay que añadir en nuestra función `mintNFT` es nuestra transacción Ethereum:
```javascript
-//set up your Ethereum transaction
+//configure su transacción de Ethereum
const transactionParameters = {
- to: contractAddress, // Required except during contract publications.
- from: window.ethereum.selectedAddress, // must match user's active address.
+ to: contractAddress, // Requerido excepto durante las publicaciones de contratos.
+ from: window.ethereum.selectedAddress, // debe coincidir con la dirección activa del usuario.
data: window.contract.methods
.mintNFT(window.ethereum.selectedAddress, tokenURI)
- .encodeABI(), //make call to NFT smart contract
+ .encodeABI(), //hacer llamada al smart contract de NFT
}
-//sign the transaction via MetaMask
+//firmar la transacción a través de MetaMask
try {
const txHash = await window.ethereum.request({
method: "eth_sendTransaction",
@@ -748,13 +750,13 @@ try {
return {
success: true,
status:
- "✅ Check out your transaction on Etherscan: https://ropsten.etherscan.io/tx/" +
+ "✅ Consulte su transacción en Etherscan: https://ropsten.etherscan.io/tx/" +
txHash,
}
} catch (error) {
return {
success: false,
- status: "😥 Something went wrong: " + error.message,
+ status: "😥 Algo salió mal: " + error.message,
}
}
```
@@ -762,54 +764,54 @@ try {
Si ya está familiarizado con las transacciones de Ethereum, notará que la estructura es muy similar a lo que ha visto.
- Primero establecemos los parámetros de las transacciones.
- - `to` especifica la dirección del receptor \(nuestro contrato inteligente\)
- - `from` especifica el firmante de la transacción \(la dirección conectada del usuario a MetaMask: `window.ethereum.selectedAddress`\)
- - `data` contiene el llamado al método `mintNFT` de nuestro contrato inteligente, que recibe nuestro `tokenURI` y la dirección de la billetera del usuario, `window.ethereum.selectedAddress` como entradas
-- Luego hacemos una llamada de espera, `window.ethereum.request`, donde le solicitamos a MetaMask firmar la transacción. Fíjese que en esta solicitud estamos especificando nuestro método eth \(eth_SentTransaction\) y pasando nuestros `transactionParameters`. En este punto, MetaMask se abrirá en el navegador y solicitará al usuario firmar o rechazar la transacción.
- - Si la transacción es exitosa, la función devolverá un objeto JSON donde el booleano `success` es establecido como verdadero y la cadena `status` solicita al usuario revisar Etherscan para ver más información sobre la transacción.
- - Si la transacción falla, la función devolverá un objeto JSON donde el booleano `success` es establecido en falso y la cadena `status` muestra el mensaje de error.
+ - `to` especifica la dirección del destinatario (nuestro smart contract)
+ - `from` especifica el firmante de la transacción (la dirección del usuario conectada a MetaMask: `window.ethereum.selectedAddress`)
+ - `data` contiene la llamada al método `mintNFT` de nuestro smart contract, que recibe nuestro `tokenURI` y la dirección del monedero del usuario, `window.ethereum.selectedAddress`, como entradas
+- Luego, hacemos una llamada `await`, `window.ethereum.request`, donde le pedimos a MetaMask que firme la transacción. Observe que, en esta solicitud, estamos especificando nuestro método eth (eth_SentTransaction) y pasando nuestros `transactionParameters`. En este punto, MetaMask se abrirá en el navegador y solicitará al usuario firmar o rechazar la transacción.
+ - Si la transacción tiene éxito, la función devolverá un objeto JSON en el que el booleano `success` se establece en verdadero y la cadena `status` indica al usuario que consulte Etherscan para obtener más información sobre su transacción.
+ - Si la transacción falla, la función devolverá un objeto JSON donde el booleano `success` se establece en falso, y la cadena `status` transmite el mensaje de error.
-En definitiva nuestra función `mintNFT` debería lucir así:
+En conjunto, nuestra función `mintNFT` debería tener este aspecto:
```javascript
export const mintNFT = async (url, name, description) => {
- //error handling
+ //manejo de errores
if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
return {
success: false,
- status: "❗Please make sure all fields are completed before minting.",
+ status: "❗Asegúrese de que todos los campos estén completos antes de acuñar.",
}
}
- //make metadata
+ //crear metadatos
const metadata = new Object()
metadata.name = name
metadata.image = url
metadata.description = description
- //pinata pin request
+ //solicitud de anclaje de pinata
const pinataResponse = await pinJSONToIPFS(metadata)
if (!pinataResponse.success) {
return {
success: false,
- status: "😢 Something went wrong while uploading your tokenURI.",
+ status: "😢 Algo salió mal al subir su tokenURI.",
}
}
const tokenURI = pinataResponse.pinataUrl
- //load smart contract
+ //cargar smart contract
window.contract = await new web3.eth.Contract(contractABI, contractAddress) //loadContract();
- //set up your Ethereum transaction
+ //configure su transacción de Ethereum
const transactionParameters = {
- to: contractAddress, // Required except during contract publications.
- from: window.ethereum.selectedAddress, // must match user's active address.
+ to: contractAddress, // Requerido excepto durante las publicaciones de contratos.
+ from: window.ethereum.selectedAddress, // debe coincidir con la dirección activa del usuario.
data: window.contract.methods
.mintNFT(window.ethereum.selectedAddress, tokenURI)
- .encodeABI(), //make call to NFT smart contract
+ .encodeABI(), //hacer llamada al smart contract de NFT
}
- //sign transaction via MetaMask
+ //firmar transacción a través de MetaMask
try {
const txHash = await window.ethereum.request({
method: "eth_sendTransaction",
@@ -818,23 +820,23 @@ export const mintNFT = async (url, name, description) => {
return {
success: true,
status:
- "✅ Check out your transaction on Etherscan: https://ropsten.etherscan.io/tx/" +
+ "✅ Consulte su transacción en Etherscan: https://ropsten.etherscan.io/tx/" +
txHash,
}
} catch (error) {
return {
success: false,
- status: "😥 Something went wrong: " + error.message,
+ status: "😥 Algo salió mal: " + error.message,
}
}
}
```
-¡Es una función gigante! Ahora solo necesitamos conectar nuestra función `mintNFT` a nuestro componente `Minter.js`...
+¡Es una función gigante! Ahora, solo tenemos que conectar nuestra función `mintNFT` a nuestro componente `Minter.js`...
-## Conecte minterNFT a nuestro frontend Minter.js {#connect-our-frontend}
+## Conectar mintNFT a nuestro frontend Minter.js {#connect-our-frontend}
-Abra el archivo `Minter.js` y actualice la línea `import { connectWallet, getCurrentWalletConnected } from "./utils/interact.js";` al inicio a:
+Abra su archivo `Minter.js` y actualice la línea `import { connectWallet, getCurrentWalletConnected } from "./utils/interact.js";` en la parte superior para que sea:
```javascript
import {
@@ -844,7 +846,7 @@ import {
} from "./utils/interact.js"
```
-Finalmente, implemente la función `onMintPressed` para hacer una llamada en espera a su función `mintNFT` importada y actualice la variable de estado `status` para reflejar si nuestra transacción se realizó correctamente o falló:
+Finalmente, implemente la función `onMintPressed` para hacer una llamada await a su función importada `mintNFT` y actualice la variable de estado `status` para reflejar si nuestra transacción tuvo éxito o falló:
```javascript
const onMintPressed = async () => {
@@ -853,13 +855,13 @@ const onMintPressed = async () => {
}
```
-## Implemente el NFT a un sitio web {#deploy-your-NFT}
+## Despliegue su NFT en un sitio web en vivo {#deploy-your-NFT}
-¿Está preparado para implementar su proyecto para que los usuarios interactúen? Revise [este tutorial](https://docs.alchemy.com/alchemy/tutorials/nft-minter/how-do-i-deploy-nfts-online) para implementar el Minteador en un sitio web.
+¿Está preparado para implementar su proyecto para que los usuarios interactúen? Consulte [este tutorial](https://docs.alchemy.com/alchemy/tutorials/nft-minter/how-do-i-deploy-nfts-online) para desplegar su acuñador en un sitio web en vivo.
Un último paso...
-## Tome el mundo de la cadena de bloques por asalto {#take-the-blockchain-world-by-storm}
+## Conquiste el mundo de la blockchain {#take-the-blockchain-world-by-storm}
¡Solo bromeaba! Ha llegado al final del tutorial.
@@ -869,6 +871,6 @@ Para recapitular, al crear un minteador de NFT, ha aprendido correctamente cómo
- Invocar métodos de contrato inteligente desde su frontend
- Firmar transacciones usando MetaMask
-Seguramente le gustaría poder mostrar los NFT minteados a través de su dapp en su billetera, así que asegúrese de revisar nuestro tutorial rápido [Cómo ver su NFT en su billetera](https://docs.alchemyapi.io/alchemy/tutorials/how-to-write-and-deploy-a-nft-smart-contract/how-to-view-your-nft-in-your-wallet).
+Presumiblemente, le gustaría poder mostrar los NFT acuñados a través de su dapp en su monedero, ¡así que asegúrese de consultar nuestro rápido tutorial [Cómo ver su NFT en su monedero](https://www.alchemy.com/docs/how-to-view-your-nft-in-your-mobile-wallet)!
-Como siempre, si tiene alguna pregunta, estamos aquí para ayudarlo en el [Discord de Alchemy](https://discord.gg/gWuC7zB). Estamos ansiosos de ver cómo aplica lo que aprendió en este tutorial en sus proyectos.
+Y, como siempre, si tiene alguna pregunta, estamos aquí para ayudarle en el [Discord de Alchemy](https://discord.gg/gWuC7zB). Estamos ansiosos de ver cómo aplica lo que aprendió en este tutorial en sus proyectos.
From b9c1de7f5569f7e90a6ed1500b719c454b63a10e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:24 -0300
Subject: [PATCH 139/589] update(i18n):
public/content/translations/es/developers/docs/data-structures-and-encoding/rlp/index.md
---
.../data-structures-and-encoding/rlp/index.md | 56 +++++++++----------
1 file changed, 28 insertions(+), 28 deletions(-)
diff --git a/public/content/translations/es/developers/docs/data-structures-and-encoding/rlp/index.md b/public/content/translations/es/developers/docs/data-structures-and-encoding/rlp/index.md
index fe6fe7eca6f..fcd9cdd048a 100644
--- a/public/content/translations/es/developers/docs/data-structures-and-encoding/rlp/index.md
+++ b/public/content/translations/es/developers/docs/data-structures-and-encoding/rlp/index.md
@@ -5,13 +5,13 @@ lang: es
sidebarDepth: 2
---
-La serialización de prefijo de longitud recursiva (RLP) se utiliza ampliamente en los clientes de ejecución de Ethereum. El RLP estandariza la transferencia de datos entre nodos en un formato de uso de espacio eficiente. El propósito de RLP es codificar matrices anidadas arbitrariamente de datos binarios, y RLP es el método de codificación principal utilizado para serializar objetos en la capa de ejecución de Ethereum. El propósito principal de RLP es codificar estructuras, con la excepción de enteros positivos, RLP delega la codificación de tipos de datos específicos (p. ej., strings, floats) a protocolos de mayor orden. Los enteros positivos deben representarse en forma binaria big-endian sin ceros iniciales (lo que hace que el valor entero cero sea equivalente a la matriz de bytes vacía). Los enteros positivos deserializados con ceros iniciales deben ser tratados como no válidos por cualquier protocolo de alto orden que utilice RLP.
+La serialización de prefijo de longitud recursiva (RLP) se utiliza ampliamente en los clientes de ejecución de Ethereum. El RLP estandariza la transferencia de datos entre nodos en un formato de uso de espacio eficiente. El propósito de RLP es codificar matrices anidadas arbitrariamente de datos binarios, y RLP es el método de codificación principal utilizado para serializar objetos en la capa de ejecución de Ethereum. El propósito principal de RLP es codificar la estructura; con la excepción de los enteros positivos, RLP delega la codificación de tipos de datos específicos (p. ej., cadenas, flotantes) a protocolos de orden superior. Los enteros positivos deben representarse en forma binaria big-endian sin ceros iniciales (lo que hace que el valor entero cero sea equivalente a la matriz de bytes vacía). Los enteros positivos deserializados con ceros iniciales deben ser tratados como no válidos por cualquier protocolo de alto orden que utilice RLP.
-Consulte más información en [La hoja amarilla de Ethereum (Apéndice B)](https://ethereum.github.io/yellowpaper/paper.pdf#page=19).
+Más información en [el libro amarillo de Ethereum (Apéndice B)](https://ethereum.github.io/yellowpaper/paper.pdf#page=19).
Para usar RLP para codificar un diccionario, las dos formas canónicas sugeridas son:
-- usar `[[k1,v1],[k2,v2]...]` con claves en orden lexicográfico
+- utilice `[[k1,v1],[k2,v2]...]` con las claves en orden lexicográfico
- usar la codificación de Patricia Tree de nivel superior como lo hace Ethereum
## Definición {#definition}
@@ -27,7 +27,7 @@ Por ejemplo, todos los siguientes son elementos:
- una cadena vacía;
- la cadena que contiene la palabra "gato";
- una lista que contiene cualquier número de cadenas;
-- y estructuras de datos más complejas como `["gato", ["cachorro", "vaca"], "caballo", [[]], "cerdo", [""], "oveja"]`.
+- y una estructura de datos más compleja como `["cat", ["puppy", "cow"], "horse", [[]], "pig", [""], "sheep"]`.
- el número `100`
Nótese que, en el contexto del resto de esta página, "string" se refiere a "cierta cantidad de bytes de datos binarios"; no se usan codificaciones especiales ni se implica conocimiento del contenido de las strings (excepto según lo requiera la regla contra enteros positivos no mínimos).
@@ -35,12 +35,12 @@ Nótese que, en el contexto del resto de esta página, "string" se refiere a "ci
La codificación RLP se define de la siguiente manera:
- En el caso de un entero positivo, se lo convierte al array de bytes más corto cuya interpretación big endian es el entero y luego se codifica como una string según las reglas siguientes.
-- Para un solo byte cuyo valor esté en el rango `[0x00, 0x7f]` (decimal `[0, 127]`), ese byte es su propia codificación RLP.
-- De lo contrario, si una cadena tiene una longitud de 0-55 bytes, la codificación RLP consta de un solo byte con el valor **0x80** (dec. 128) más la longitud de la cadena seguida de la cadena. Por lo tanto, el rango del primer byte es `[0x80, 0xb7]` (dec. `[128, 183]`).
-- Si una cadena tiene más de 55 bytes de largo, la codificación RLP consta de un solo byte con el valor **0xb7** (dec. 183) más la longitud en bytes de la longitud de la cadena en forma binaria, seguida de la longitud de la cadena, seguida de la cadena. Por ejemplo, una cadena de 1024 bytes de largo se codificaría como `\xb9\x04\x00` (dec. `185, 4, 0`) seguido de la cadena. Aquí, `0xb9` (183 + 2 = 185) como el primer byte, seguido de los 2 bytes `0x0400` (dec. 1024) que denotan la longitud de la cadena real. El rango del primer byte es, por lo tanto, `[0xb8, 0xbf]` (dec. `[184, 191]`).
+- Para un solo byte cuyo valor está en el rango `[0x00, 0x7f]` (decimal `[0, 127]`), ese byte es su propia codificación RLP.
+- De lo contrario, si una cadena tiene entre 0 y 55 bytes de longitud, la codificación RLP consiste en un solo byte con el valor **0x80** (dec. 128) más la longitud de la cadena, seguida por la cadena. El rango del primer byte es, por tanto, `[0x80, 0xb7]` (dec. `[128, 183]`).
+- Si una cadena tiene más de 55 bytes de longitud, la codificación RLP consiste en un solo byte con el valor **0xb7** (dec. 183) más la longitud en bytes de la longitud de la cadena en formato binario, seguida por la longitud de la cadena, seguida por la cadena. Por ejemplo, una cadena de 1024 bytes de longitud se codificaría como `\xb9\x04\x00` (dec. `185, 4, 0`) seguida por la cadena. Aquí, `0xb9` (183 + 2 = 185) como el primer byte, seguido por los 2 bytes `0x0400` (dec. 1024) que denotan la longitud de la cadena real. El rango del primer byte es, por tanto, `[0xb8, 0xbf]` (dec. `[184, 191]`).
- Si una string tiene una longitud mayor o igual a 2^64 bytes, no puede ser codificada.
-- Si la carga útil total de una lista (es decir, la longitud combinada de todos sus elementos codificados con RLP) es de 0-55 bytes, la codificación RLP consta de un solo byte con un valor **0xc0** más la longitud de la lista, seguida de la concatenación de las codificaciones RLP de los elementos. Por lo tanto, el rango del primer byte es `[0xc0, 0xf7]` (dec. `[192, 247]`).
-- Si la carga útil total de una lista tiene más de 55 bytes de longitud, la codificación RLP consta de un solo byte con un valor **0xf7** más la longitud en bytes de la longitud de la carga útil en forma binaria, seguida de la longitud de la carga útil, seguida de la concatenación de las codificaciones RLP de los elementos. Por lo tanto, el rango del primer byte es `[0xf8, 0xff]` (dec. `[248, 255]`).
+- Si la carga útil total de una lista (es decir, la longitud combinada de todos sus elementos codificados con RLP) es de 0 a 55 bytes, la codificación RLP consiste en un solo byte con el valor **0xc0** más la longitud de la carga útil seguida de la concatenación de las codificaciones RLP de los elementos. El rango del primer byte es, por tanto, `[0xc0, 0xf7]` (dec. `[192, 247]`).
+- Si la carga útil total de una lista tiene más de 55 bytes de longitud, la codificación RLP consiste en un solo byte con el valor **0xf7** más la longitud en bytes de la longitud de la carga útil en formato binario, seguida por la longitud de la carga útil, seguida por la concatenación de las codificaciones RLP de los elementos. El rango del primer byte es, por tanto, `[0xf8, 0xff]` (dec. `[248, 255]`).
En el código, esto es:
@@ -62,7 +62,7 @@ def encode_length(L, offset):
elif L < 256**8:
BL = to_binary(L)
return chr(len(BL) + offset + 55) + BL
- raise Exception("input too long")
+ raise Exception("entrada demasiado larga")
def to_binary(x):
if x == 0:
@@ -74,36 +74,36 @@ def to_binary(x):
- la cadena "dog" = [ 0x83, 'd', 'o', 'g' ]
- la lista [ "cat", "dog" ] = `[ 0xc8, 0x83, 'c', 'a', 't', 0x83, 'd', 'o', 'g' ]`
-- la cadena vacía ("null") = `[ 0x80 ]`
+- la cadena vacía ('null') = `[ 0x80 ]`
- la lista vacía = `[ 0xc0 ]`
- el entero 0 = `[ 0x80 ]`
- el byte '\\x00' = `[ 0x00 ]`
- el byte '\\x0f' = `[ 0x0f ]`
- los bytes '\\x04\\x00' = `[ 0x82, 0x04, 0x00 ]`
-- la [representación teórica de conjunto](http://en.wikipedia.org/wiki/Set-theoretic_definition_of_natural_numbers) de tres, `[ [], [[]], [], [[]] ] ] = [ 0xc7, 0xc0, 0xc1, 0xc0, 0xc3, 0xc0, 0xc1, 0xc0 ]`
-- la cadena "Lorem ipsum dolor sit amet, consectetur adipisicing elit" = `[ 0xb8, 0x38, 'L', 'o', 'r', 'e', 'm', ' ', ... , 'e', 'l', 'i', 't' ]`
+- la [representación teórica de conjuntos](http://en.wikipedia.org/wiki/Set-theoretic_definition_of_natural_numbers) de tres, `[ [], [[]], [ [], [[]] ] ] = [ 0xc7, 0xc0, 0xc1, 0xc0, 0xc3, 0xc0, 0xc1, 0xc0 ]`
+- la cadena "Lorem ipsum dolor sit amet, consectetur adipisicing elit" = `[ 0xb8, 0x38, 'L', 'o', 'r', 'e', 'm', ' ', ...` `, 'e', 'l', 'i', 't' ]`
-## Decodificación RLP {#rlp-decoding}
+## Descodificación RLP {#rlp-decoding}
De acuerdo con las reglas y el proceso de codificación RLP, la entrada de la decodificación RLP se considera una matriz de datos binarios. El proceso de decodificación RLP es el siguiente:
-1. de acuerdo con el primer byte (es decir, el prefijo) de los datos de entrada y la decodificación del tipo de datos, la longitud de los datos reales y el desplazamiento;
+1. según el primer byte (es decir, prefijo) de los datos de entrada y decodificando el tipo de datos, la longitud de los datos reales y el desplazamiento;
-2. de acuerdo con el tipo y offset de datos, decodificar los datos según corresponda, respetando la regla de codificación mínima para enteros positivos;
+2. de acuerdo con el tipo y offset de datos, decodificar los datos según corresponda, respetando la regla de codificación mínima para enteros positivos;
-3. continuar decodificando el resto de la entrada.
+3. continuar decodificando el resto de la entrada.
Entre ellos, las reglas de decodificación de tipos de datos y desplazamiento son las siguientes:
-1. los datos son una cadena si el rango del primer byte (es decir, el prefijo) es [0x00, 0x7f], y la cadena es exactamente el primer byte en sí;
+1. los datos son una cadena si el rango del primer byte (es decir, el prefijo) es [0x00, 0x7f], y la cadena es exactamente el primer byte;
-2. los datos son una cadena si el rango del primer byte es [0x80, 0xb7], y la cadena cuya longitud es igual al primer byte menos 0x80 sigue al primer byte;
+2. los datos son una cadena si el rango del primer byte es [0x80, 0xb7], y la cadena cuya longitud es igual al primer byte menos 0x80 sigue al primer byte;
-3. los datos son una cadena si el rango del primer byte es [0xb8, 0xbf], y la longitud de la cadena cuya longitud en bytes es igual al primer byte menos 0xb7 sigue al primer byte, y la cadena sigue la longitud de la cadena;
+3. los datos son una cadena si el rango del primer byte es [0xb8, 0xbf], y la longitud de la cadena cuya longitud en bytes es igual al primer byte menos 0xb7 sigue al primer byte, y la cadena sigue la longitud de la cadena;
-4. los datos son una lista si el rango del primer byte es [0xc0, 0xf7], y la concatenación de las codificaciones RLP de todos los elementos de la lista cuya carga útil total es igual al primer byte menos 0xc0 sigue al primer byte;
+4. los datos son una lista si el rango del primer byte es [0xc0, 0xf7], y la concatenación de las codificaciones RLP de todos los elementos de la lista cuya carga útil total es igual al primer byte menos 0xc0 sigue al primer byte;
-5. los datos son una lista si el rango del primer byte es [0xf8, 0xff], y la carga útil total de la lista cuya longitud es igual al primer byte menos 0xf7 sigue al primer byte, y la concatenación de las codificaciones RLP de todos los elementos de la lista sigue la carga útil total de la lista;
+5. los datos son una lista si el rango del primer byte es [0xf8, 0xff], y la carga útil total de la lista cuya longitud es igual al primer byte menos 0xf7 sigue al primer byte, y la concatenación de las codificaciones RLP de todos los elementos de la lista sigue la carga útil total de la lista;
En el código, esto es:
@@ -123,7 +123,7 @@ def rlp_decode(input):
def decode_length(input):
length = len(input)
if length == 0:
- raise Exception("input is null")
+ raise Exception("la entrada es nula")
prefix = ord(input[0])
if prefix <= 0x7f:
return (0, 1, str)
@@ -141,23 +141,23 @@ def decode_length(input):
lenOfListLen = prefix - 0xf7
listLen = to_integer(substr(input, 1, lenOfListLen))
return (1 + lenOfListLen, listLen, list)
- raise Exception("input does not conform to RLP encoding form")
+ raise Exception("la entrada no se ajusta a la forma de codificación RLP")
def to_integer(b):
length = len(b)
if length == 0:
- raise Exception("input is null")
+ raise Exception("la entrada es nula")
elif length == 1:
return ord(b[0])
return ord(substr(b, -1)) + to_integer(substr(b, 0, -1)) * 256
```
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
- [RLP en Ethereum](https://medium.com/coinmonks/data-structure-in-ethereum-episode-1-recursive-length-prefix-rlp-encoding-decoding-d1016832f919)
-- [Ethereum bajo el capó: RLP](https://medium.com/coinmonks/ethereum-under-the-hood-part-3-rlp-decoding-df236dc13e58)
+- [Ethereum por dentro: RLP](https://medium.com/coinmonks/ethereum-under-the-hood-part-3-rlp-decoding-df236dc13e58)
- [Coglio, A. (2020). Prefijo de longitud recursiva de Ethereum en ACL2. arXiv preprint arXiv:2009.13769.](https://arxiv.org/abs/2009.13769)
## Temas relacionados {#related-topics}
-- [Patricia merkle trie](/developers/docs/data-structures-and-encoding/patricia-merkle-trie)
+- [Árbol de Merkle Patricia](/developers/docs/data-structures-and-encoding/patricia-merkle-trie)
From fc5211b30619c0c0911ef579af850f582c07a10b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:26 -0300
Subject: [PATCH 140/589] update(i18n):
public/content/translations/es/developers/tutorials/guide-to-smart-contract-security-tools/index.md
---
.../index.md | 107 +++++++++---------
1 file changed, 52 insertions(+), 55 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/guide-to-smart-contract-security-tools/index.md b/public/content/translations/es/developers/tutorials/guide-to-smart-contract-security-tools/index.md
index 40f364147df..14e5ec93d99 100644
--- a/public/content/translations/es/developers/tutorials/guide-to-smart-contract-security-tools/index.md
+++ b/public/content/translations/es/developers/tutorials/guide-to-smart-contract-security-tools/index.md
@@ -3,103 +3,100 @@ title: Una guía de herramientas de seguridad para contratos inteligentes
description: Una descripción general de tres técnicas diferentes de prueba y análisis de programas
author: "Trailofbits"
lang: es
-tags:
- - "solidity"
- - "contratos inteligentes"
- - "seguridad"
+tags: [ "Solidity", "contratos Inteligentes", "seguridades" ]
skill: intermediate
-published: 2020-09-07
+published: 07-09-2020
source: Desarrollar contratos seguros
sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis
---
-Vamos a usar tres técnicas distintas para el análisis de pruebas y programas:
+Vamos a utilizar tres técnicas distintas de prueba y análisis de programas:
-- **Análisis estático con [Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/).** Todas las rutas del programa se abordan y analizan al mismo tiempo, a través de diferentes presentaciones del programa (por ejemplo, control-flow-graph).
-- **Fuzzing (auditorías de seguridad) con [Echidna](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/).** El código se ejecuta con una generación pseudoaleatoria de transacciones. El fuzzer tratará de encontrar una secuencia de transacciones para infringir una propiedad determinada.
-- **Ejecución simbólica con [Manticore](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/).** Una técnica de verificación formal, que traduce cada ruta de ejecución a una fórmula matemática, en la que se pueden comprobar las restricciones superiores.
+- **Análisis estático con [Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/).** Todas las rutas del programa se aproximan y analizan al mismo tiempo, a través de diferentes presentaciones del programa (p. ej., grafo de flujo de control).
+- **Fuzzing con [Echidna](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/).** El código se ejecuta con una generación pseudoaleatoria de transacciones. El fuzzer intentará encontrar una secuencia de transacciones que infrinja una propiedad determinada.
+- **Ejecución simbólica con [Manticore](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/).** Una técnica de verificación formal que traduce cada ruta de ejecución a una fórmula matemática sobre la que se pueden comprobar las restricciones.
-Cada técnica tiene ventajas y obstáculos que serán útiles en [casos específicos](#determining-security-properties):
+Cada técnica tiene ventajas e inconvenientes, y será útil en [casos específicos](#determining-security-properties):
-| Técnica | Herramienta | Uso | Velocidad | Errores perdidos | Falsas alarmas |
-| ------------------- | ----------- | --------------------------------- | --------- | ---------------- | -------------- |
-| Análisis estáticos | Slither | CLI & scripts | segundos | moderado | bajo |
-| Fuzzing | Echidna | Propiedades de Solidity | minutos | bajo | ninguno |
-| Ejecución simbólica | Manticore | Propiedades de Solidity & scripts | horas | ninguno | ninguno |
+| Técnica | Herramienta | Uso | Velocidad | Errores no detectados | Falsas alarmas |
+| ------------------- | ----------- | --------------------------------- | --------- | --------------------- | -------------- |
+| Análisis estático | Slither | CLI y scripts | segundos | moderado | bajo |
+| Fuzzing | Echidna | Propiedades de Solidity | minutos | bajo | ninguno |
+| Ejecución simbólica | Manticore | Propiedades de Solidity y scripts | horas | ninguno\* | ninguno |
-- si todas las rutas son exploradas sin tiempo de espera
+\* si se exploran todas las rutas sin que se agote el tiempo de espera
-**Slither** analiza los contratos en segundos, sin embargo, el análisis estático puede conducir a falsas alarmas y será menos adecuado para comprobaciones complejas (ej., controles aritméticos). Ejecute Slither a través de la API para acceder a los detectores incorporados o a través de la API para comprobaciones definidas por el usuario.
+**Slither** analiza los contratos en segundos; sin embargo, el análisis estático puede provocar falsas alarmas y será menos adecuado para verificaciones complejas (p. ej., verificaciones aritméticas). Ejecute Slither a través de la API para un acceso sencillo a los detectores integrados o a través de la API para verificaciones definidas por el usuario.
-**Echidna** necesita funcionar durante varios minutos y solo producirá verdaderos positivos. Echidna comprueba las propiedades de seguridad proporcionadas por el usuario, escritas en Solidity. Podría perderse errores, ya que se basa en una exploración aleatoria.
+**Echidna** necesita ejecutarse durante varios minutos y solo producirá verdaderos positivos. Echidna verifica las propiedades de seguridad proporcionadas por el usuario, escritas en Solidity. Podría no detectar errores, ya que se basa en una exploración aleatoria.
-**Manticore** realiza el análisis de «peso más pesado». Al igual que Echidna, Manticore verifica las propiedades proporcionadas por el usuario. Necesitará más tiempo para funcionar, pero puede demostrar la validez de una propiedad y no comunicará falsas alarmas.
+**Manticore** realiza el análisis de "mayor peso". Al igual que Echidna, Manticore verifica las propiedades proporcionadas por el usuario. Necesitará más tiempo para ejecutarse, pero puede demostrar la validez de una propiedad y no informará de falsas alarmas.
## Flujo de trabajo sugerido {#suggested-workflow}
-Comience con los detectores incorporados de Slither para asegurarse de que no haya errores simples ahora o que se introduzcan más tarde. Utilice Slither para comprobar propiedades relacionadas con la herencia, dependencias variables y problemas estructurales. A medida que vaya creciendo el código, utilice Echidna para probar propiedades más complejas de la máquina de estado. Revise de nuevo Slither para desarrollar comprobaciones personalizadas para protecciones no disponibles de Solidity, como la protección contra una función que se anula. Por último, utilice Manticore para realizar una verificación específica de las propiedades de seguridad crítica, por ejemplo, operaciones aritméticas.
+Comience con los detectores integrados de Slither para asegurarse de que no haya errores simples ahora ni se introduzcan más adelante. Utilice Slither para verificar propiedades relacionadas con la herencia, las dependencias de variables y los problemas estructurales. A medida que el código base crece, utilice Echidna para probar propiedades más complejas de la máquina de estados. Vuelva a utilizar Slither para desarrollar verificaciones personalizadas para protecciones que no están disponibles en Solidity, como la protección contra la sobreescritura de una función. Por último, utilice Manticore para realizar una verificación dirigida de las propiedades de seguridad críticas, p. ej., las operaciones aritméticas.
-- Utilice el CLI de Slither para detectar problemas comunes.
-- Utilice Echidna para probar propiedades de seguridad de alto nivel de su contrato.
-- Utilice Slither para escribir comprobaciones estáticas personalizadas.
-- Utilice Manticore una vez que desee una garantía profunda de las propiedades de seguridad críticas.
+- Use la CLI de Slither para detectar problemas comunes
+- Use Echidna para probar las propiedades de seguridad de alto nivel de su contrato
+- Use Slither para escribir verificaciones estáticas personalizadas
+- Use Manticore cuando quiera una garantía profunda de las propiedades de seguridad críticas
-**Una aclaración sobre las pruebas unitarias**. Las pruebas unitarias son necesarias para construir software de alta calidad. Sin embargo, estas técnicas no son las más adecuadas para encontrar defectos de seguridad. Se suelen utilizar para probar comportamientos positivos del código (ej., que el código funciona como se esperaba en el contexto normal), mientras que los defectos de seguridad tienden a residir en casos extremos que los desarrolladores no consideraron. En nuestro estudio de docenas de revisiones de seguridad de contratos inteligentes, [la cobertura de prueba unitaria no tuvo efecto en el número o gravedad de defectos de seguridad](https://blog.trailofbits.com/2019/08/08/246-findings-from-our-smart-contract-audits-an-executive-summary/) que encontramos en el código de nuestro cliente.
+**Una nota sobre las pruebas unitarias**. Las pruebas unitarias son necesarias para crear software de alta calidad. Sin embargo, estas técnicas no son las más adecuadas para encontrar fallos de seguridad. Normalmente se utilizan para probar los comportamientos positivos del código (es decir, que el código funciona como se espera en el contexto normal), mientras que los fallos de seguridad tienden a residir en casos límite que los desarrolladores no tuvieron en cuenta. En nuestro estudio de docenas de revisiones de seguridad de contratos inteligentes, [la cobertura de las pruebas unitarias no tuvo ningún efecto en el número o la gravedad de los fallos de seguridad](https://blog.trailofbits.com/2019/08/08/246-findings-from-our-smart-contract-audits-an-executive-summary/) que encontramos en el código de nuestros clientes.
-## Determinar propiedades de seguridad {#determining-security-properties}
+## Determinación de las propiedades de seguridad {#determining-security-properties}
-Para probar y verificar eficazmente su código, debe identificar las áreas que necesitan atención. Como sus recursos destinados a seguridad son limitados, es importante hacer frente a las partes débiles o de alto valor de su código base para optimizar su esfuerzo. El modelado de amenazas puede ser útil. Considere revisar:
+Para probar y verificar eficazmente su código, debe identificar las áreas que necesitan atención. Dado que los recursos que se dedican a la seguridad son limitados, es importante delimitar las partes débiles o de gran valor de su código base para optimizar su esfuerzo. El modelado de amenazas puede ayudar. Considere revisar:
-- [Evaluaciones de riesgo rápidas](https://infosec.mozilla.org/guidelines/risk/rapid_risk_assessment.html) (nuestro enfoque preferido cuando hay poco tiempo)
-- [Guía de modelos de amenazas del sistema central de datos](https://csrc.nist.gov/publications/detail/sp/800-154/draft) (también conocido como NIST 800-154)
-- [Modelos de amenazas de Shostack](https://www.amazon.com/Threat-Modeling-Designing-Adam-Shostack/dp/1118809998)
-- [STRIDE](https://wikipedia.org/wiki/STRIDE_(security)) / [DREAD](https://wikipedia.org/wiki/DREAD_(risk_assessment_model))
+- [Rapid Risk Assessments](https://infosec.mozilla.org/guidelines/risk/rapid_risk_assessment.html) (nuestro enfoque preferido cuando hay poco tiempo)
+- [Guide to Data-Centric System Threat Modeling](https://csrc.nist.gov/pubs/sp/800/154/ipd) (también conocido como NIST 800-154)
+- [Shostack threat modeling](https://www.amazon.com/Threat-Modeling-Designing-Adam-Shostack/dp/1118809998)
+- [STRIDE](https://wikipedia.org/wiki/STRIDE_\(security\)) / [DREAD](https://wikipedia.org/wiki/DREAD_\(risk_assessment_model\))
- [PASTA](https://wikipedia.org/wiki/Threat_model#P.A.S.T.A.)
-- [Uso de afirmaciones](https://blog.regehr.org/archives/1091)
+- [Use of Assertions](https://blog.regehr.org/archives/1091)
### Componentes {#components}
Saber lo que quiere comprobar también le ayudará a seleccionar la herramienta correcta.
-Las áreas extensas que suelen ser relevantes para los contratos inteligentes incluyen:
+Las áreas generales que suelen ser relevantes para los contratos inteligentes incluyen:
-- **Máquina de estado.** La mayoría de los contratos pueden representarse como una máquina de estado. Considere comprobar que (1) No se puede alcanzar un estado no válido, (2) si puede alcanzarse un estado válido, y (3) ningún estado retiene el contrato.
+- **Máquina de estados.** La mayoría de los contratos pueden representarse como una máquina de estados. Considere verificar que (1) no se pueda alcanzar ningún estado no válido, (2) si un estado es válido, que se pueda alcanzar, y (3) ningún estado bloquee el contrato.
- - Echidna y Manticore son las herramientas para favorecer la prueba de especificaciones de las máquinas del estado.
+ - Echidna y Manticore son las herramientas recomendadas para probar las especificaciones de la máquina de estados.
-- **Controles de acceso.** Si tu sistema tiene usuarios privilegiados (por ejemplo, un propietario, controladores...) debes asegurarte de que (1) cada usuario solo pueda realizar las acciones autorizadas y (2) ningún usuario pueda bloquear acciones de un usuario más privilegiado.
+- **Controles de acceso.** Si su sistema tiene usuarios con privilegios (p. ej., un propietario, controladores, ...) debe asegurarse de que (1) cada usuario solo pueda realizar las acciones autorizadas y (2) ningún usuario pueda bloquear acciones de un usuario con más privilegios.
- - Slither, Echidna y Manticore pueden comprobar si hay controles de acceso correctos. Por ejemplo, Slither puede comprobar que sólo las funciones de la lista blanca carecen del modificador onlyOwner. Echidna y Manticore son útiles para un control de acceso más complejo, como un permiso dado sólo si el contrato alcanza un estado determinado.
+ - Slither, Echidna y Manticore pueden verificar la corrección de los controles de acceso. Por ejemplo, Slither puede comprobar que solo las funciones de la lista blanca carecen del modificador onlyOwner. Echidna y Manticore son útiles para un control de acceso más complejo, como un permiso que se concede solo si el contrato alcanza un estado determinado.
-- **Operaciones aritméticas.** Comprobar la integridad de las operaciones aritméticas es crucial. Sin embargo, usar `SafeMath` en todas partes es un buen paso para prevenir el flujo excesivo/deficiente. Debe tener en cuenta otros defectos aritméticos, incluidas las cuestiones del redondeo y de los fallos que retienen el contrato.
+- **Operaciones aritméticas.** Comprobar la solidez de las operaciones aritméticas es fundamental. Usar SafeMath en todas partes es un buen paso para evitar el desbordamiento/subdesbordamiento; sin embargo, aún debe considerar otros fallos aritméticos, incluidos los problemas de redondeo y los fallos que bloquean el contrato.
- - Manticore es la mejor opción en este caso. Echidna se puede usar si la aritmética está fuera del alcance del solucionador SMT.
+ - Manticore es la mejor opción aquí. Se puede usar Echidna si la aritmética está fuera del alcance del solucionador SMT.
-- **Corrección de herencia.** Los contratos de Solidity dependen en gran medida de la herencia múltiple. Errores como una función en paralelo sin llamada `super` y una orden de linearización de c3 mal interpretadas pueden cometerse fácilmente.
+- **Corrección de la herencia.** Los contratos de Solidity dependen en gran medida de la herencia múltiple. Se pueden cometer fácilmente errores, como una función de shadowing que carezca de una llamada a super y un orden de linealización c3 mal interpretado.
- - Slither es la herramienta perfecta para garantizar la detección de estos problemas.
+ - Slither es la herramienta para garantizar la detección de estos problemas.
-- **Interacciones externas.** Los contratos interactúan entre sí, y algunos contratos externos no deben ser de confianza. Por ejemplo, si su contrato se basa en oráculos externos, ¿seguirá siendo seguro si la mitad de los oráculos disponibles están en peligro?
+- **Interacciones externas.** Los contratos interactúan entre sí, y no se debe confiar en algunos contratos externos. Por ejemplo, si su contrato depende de oráculos externos, ¿seguirá siendo seguro si la mitad de los oráculos disponibles están comprometidos?
- - Manticore y Echidna son la mejor opción para probar las interacciones externas con sus contratos. Manticore tiene un mecanismo integrado para cerrar contratos externos.
+ - Manticore y Echidna son la mejor opción para probar las interacciones externas con sus contratos. Manticore tiene un mecanismo integrado para crear stubs de contratos externos.
-- **Conformidad estándar.** Los estándares Ethereum (por ejemplo, ERC20) tienen un historial de defectos en su diseño. Tenga en cuenta las limitaciones del estándar sobre el que está construyendo.
+- **Conformidad con el estándar.** Los estándares de Ethereum (p. ej., ERC20) tienen un historial de fallos en su diseño. Sea consciente de las limitaciones del estándar sobre el que está construyendo.
- Slither, Echidna y Manticore le ayudarán a detectar desviaciones de un estándar determinado.
-### Hoja de trucos para selección de herramientas {#tool-selection-cheatsheet}
+### Chuleta para la selección de herramientas {#tool-selection-cheatsheet}
-| Componente | Herramientas | Ejemplos |
-| ----------------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Máquina de estado | Echidna, Manticore | |
-| Control de acceso | Slither, Echidna, Manticore | [Ejercicio 2 de Slither](https://github.com/crytic/slither/blob/7f54c8b948c34fb35e1d61adaa1bd568ca733253/docs/src/tutorials/exercise2.md), [Ejercicio 2 de Echidna](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/exercises/Exercise-2.md) |
-| Operaciones aritméticas | Manticore, Echidna | [Ejercicio 1 de Echidna](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/exercises/Exercise-1.md), [Ejercicios 1-3 de Manticore](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore/exercises) |
-| Corrección de herencia | Slither | [Slither ejercicio 1](https://github.com/crytic/slither/blob/7f54c8b948c34fb35e1d61adaa1bd568ca733253/docs/src/tutorials/exercise1.md) |
-| Interacciones externas | Manticore, Echidna | |
-| Cumplimiento estándar | Slither, Echidna, Manticore | [`slither-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) |
+| Componente | Herramientas | Ejemplos |
+| --------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Máquina de estados | Echidna, Manticore | |
+| Control de acceso | Slither, Echidna, Manticore | [Ejercicio 2 de Slither](https://github.com/crytic/slither/blob/7f54c8b948c34fb35e1d61adaa1bd568ca733253/docs/src/tutorials/exercise2.md), [Ejercicio 2 de Echidna](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/exercises/Exercise-2.md) |
+| Operaciones aritméticas | Manticore, Echidna | [Ejercicio 1 de Echidna](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/exercises/Exercise-1.md), [Ejercicios 1 - 3 de Manticore](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore/exercises) |
+| Corrección de la herencia | Slither | [Ejercicio 1 de Slither](https://github.com/crytic/slither/blob/7f54c8b948c34fb35e1d61adaa1bd568ca733253/docs/src/tutorials/exercise1.md) |
+| Interacciones externas | Manticore, Echidna | |
+| Conformidad con el estándar | Slither, Echidna, Manticore | [`slither-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) |
-Se tendrán que revisar otras áreas dependiendo de sus objetivos, aunque estas áreas de enfoque generales son un buen comienzo para cualquier sistema de contratos inteligentes.
+Será necesario verificar otras áreas en función de sus objetivos, pero estas áreas de enfoque generales son un buen punto de partida para cualquier sistema de contratos inteligentes.
-Nuestras auditorías públicas contienen ejemplos de propiedades verificadas o probadas. Piense en leer las secciones de `Pruebas automáticas y verificación` de los siguientes informes para revisar las propiedades de seguridad del mundo real:
+Nuestras auditorías públicas contienen ejemplos de propiedades verificadas o probadas. Considere la posibilidad de leer las secciones de Pruebas y verificación automatizadas de los siguientes informes para revisar las propiedades de seguridad del mundo real:
- [0x](https://github.com/trailofbits/publications/blob/master/reviews/0x-protocol.pdf)
- [Balancer](https://github.com/trailofbits/publications/blob/master/reviews/BalancerCore.pdf)
From 2d0495ddefe9d91a3fec1c170365c0018eb924cd Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:27 -0300
Subject: [PATCH 141/589] update(i18n):
public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
---
.../index.md | 179 +++++++++---------
1 file changed, 93 insertions(+), 86 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
index d2f000e9aeb..8d49e1afc7b 100644
--- a/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
+++ b/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
@@ -1,33 +1,32 @@
---
title: Introducción a Ethereum para desarrolladores de Python, parte 1
-description: Una introducción al desarrollo de Ethereum, especialmente útil para los que tienen conocimiento del lenguaje de programación Python
+description: Una introducción al desarrollo de Ethereum, especialmente útil para quienes tienen conocimientos del lenguaje de programación Python
author: Marc Garreau
lang: es
-tags:
- - "python"
- - "web3.py"
+tags: [ "python", "web3.py" ]
skill: beginner
published: 2020-09-08
source: Encantadores de serpientes
sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/
---
-Entonces, ¿ha oído hablar acerca de ese tal Ethereum y está listo para indagar hasta el fondo de qué se trata? En esta entrada descubrirá de un vistazo algunos fundamentos de la cadena de bloques, para luego pasar a interactuar con un nodo simulado de Ethereum a través de la lectura de datos de bloques, de la comprobación de saldos de las cuentas y del envío de transacciones. A lo largo del descubrimiento, destacaremos las diferencias entre las formas tradicionales de construir aplicaciones y de este nuevo paradigma descentralizado.
+Entonces, ¿ha oído hablar sobre Ethereum y está listo para adentrarse en la madriguera del conejo? En esta publicación se tratarán rápidamente algunos conceptos básicos de la cadena de bloques y, después, podrá interactuar con un nodo de Ethereum simulado: leerá datos de bloques, comprobará saldos de cuentas y enviará transacciones. En el proceso, destacaremos las diferencias entre las formas tradicionales de crear aplicaciones y este nuevo paradigma descentralizado.
-## Prerrequisitos (fáciles) {#soft-prerequisites}
+## Requisitos (no estrictos) {#soft-prerequisites}
-Esta entrada pretende ser accesible a un amplio abanico de desarrolladores. [Se incluirán herramientas de Python](/desarrolladores/docs/programming-languages/python/), pero solamente para conducir las ideas, no pasa nada si no es desarrollador de Python. Sin embargo, sí que voy a hacer algunas suposiciones sobre lo que ya sabe, para que podamos explorar rápidamente las partes específicas de Ethereum.
+Esta publicación aspira a ser accesible para una amplia gama de desarrolladores. Las [herramientas de Python](/developers/docs/programming-languages/python/) estarán involucradas, pero solo son un vehículo para las ideas; no hay problema si usted no es un desarrollador de Python. Sin embargo, haré algunas suposiciones sobre lo que ya sabe, para que podamos pasar rápidamente a los bits específicos de Ethereum.
-Supuestos:
+Suposiciones:
-- Sabe cómo moverse en un terminal,
-- Ha escrito unas cuantas líneas de código en Python,
-- Tiene la versión 3.6 o superior de Python instalada en su computadora (se recomienda el uso de un [entorno virtual](https://realpython.com/effective-python-environment/#virtual-environments)), y
-- ha utilizado `pip`, el instalador de paquetes de Python. De nuevo, aunque no reúna todos estos requisitos, o no tenga pensado reproducir el código de este artículo, es probable que pueda seguirlo sin problemas.
+- Sabe cómo moverse en una terminal,
+- Ha escrito algunas líneas de código de Python,
+- La versión 3.6 de Python o superior está instalada en su máquina (se recomienda encarecidamente el uso de un [entorno virtual](https://realpython.com/effective-python-environment/#virtual-environments)), y
+- ha usado `pip`, el instalador de paquetes de Python.
+ Una vez más, si alguno de estos puntos no es cierto, o si no planea reproducir el código de este artículo, es probable que pueda seguirlo sin problemas.
-## Expliquemos brevemente en qué consisten las cadenas de bloques {#blockchains-briefly}
+## Cadenas de bloques, en resumen {#blockchains-briefly}
-Hay muchas maneras de describir Ethereum, pero en su esencia es una cadena de bloques. Las cadenas de bloques se componen de una serie de bloques, así que empecemos por ahí. En términos sencillos, cada bloque de la cadena de bloques de Ethereum, no es más que algunos metadatos y una lista de transacciones. En el formato JSON, se parece a esto:
+Hay muchas maneras de describir Ethereum, pero en su esencia es una cadena de bloques. Las cadenas de bloques se componen de una serie de bloques, así que empecemos por ahí. En los términos más sencillos, cada bloque en la cadena de bloques de Ethereum es solo una serie de metadatos y una lista de transacciones. En formato JSON, tiene un aspecto similar a este:
```json
{
@@ -39,104 +38,108 @@ Hay muchas maneras de describir Ethereum, pero en su esencia es una cadena de bl
}
```
-Cada [bloque](/developers/docs/blocks/) tiene una referencia al bloque anterior; el `parentHash` es el hash a ese bloque previo.
+Cada [bloque](/developers/docs/blocks/) tiene una referencia al bloque que lo precede; el `parentHash` es simplemente el hash del bloque anterior.
-Nota: Ethereum hace un uso regular de las funciones hash para producir valores de tamaño fijo («hashes»). Los hashes desempeñan un importante papel en Ethereum; por ahora, puede considerarlos como identificadores únicos.
+Nota: Ethereum hace un uso regular de las funciones hash para producir valores de tamaño fijo («hashes»). Los hashes desempeñan un papel importante en Ethereum, pero por ahora puede considerarlos como identificadores únicos.
-
+
-_Una cadena de bloques es esencialmente una lista enlazada; cada bloque hace referencia a otro anterior._
+_Una cadena de bloques es esencialmente una lista enlazada; cada bloque hace referencia al bloque anterior._
-Esta estructura de datos no es nada novedosa, pero las reglas (p. ej., protocolos peer-to-peer) que gobiernan la red sí lo son. No hay una autoridad central; una red de pares debe colaborar para sostenerla, y competir para decidir qué transacciones se incluirán en el siguiente bloque. Por tanto, cuando quiera enviar dinero a un amigo, necesitará emitir esa transacción a la red y luego esperar a que esta se incluya en un próximo bloque.
+Esta estructura de datos no es nada novedosa, pero las reglas (es decir, los protocolos entre pares) que gobiernan la red sí lo son. No hay una autoridad central; la red de pares debe colaborar para sostener la red y competir para decidir qué transacciones incluir en el siguiente bloque. Entonces, cuando quiera enviar algo de dinero a un amigo, tendrá que transmitir esa transacción a la red y luego esperar a que se incluya en un bloque futuro.
-La única forma en que la cadena de bloques puede verificar que el dinero se ha enviado, realmente, de un usuario a otro, es usando una moneda nativa (es decir, creada y gobernada por) esa cadena de bloques. En Ethereum, esta moneda se denomina ether, y la cadena de bloques de Ethereum contiene el único registro oficial de los balances de cuentas.
+La única forma de que la cadena de bloques verifique que el dinero se envió realmente de un usuario a otro es usar una moneda nativa de esa cadena de bloques (es decir, creada y gobernada por ella). En Ethereum, esta moneda se llama ether y la cadena de bloques de Ethereum contiene el único registro oficial de los saldos de las cuentas.
## Un nuevo paradigma {#a-new-paradigm}
-Este nuevo conjunto de tecnologías descentralizadas ha generado nuevas herramientas para desarrolladores. Estas herramientas existen en muchos lenguajes de programación, pero las veremos a través de la lente de Python. Repito: aunque no use Python, no debería ser un problema seguirlo.
+Esta nueva pila de tecnología descentralizada ha generado nuevas herramientas para desarrolladores. Existen herramientas de este tipo en muchos lenguajes de programación, pero las veremos a través de la lente de Python. Para reiterar: aunque Python no sea su lenguaje de elección, no debería tener muchos problemas para seguir la explicación.
-Los desarrolladores de Python que quieran interactuar con Ethereum seguramente quieran usar [Web3.py](https://web3py.readthedocs.io/). Web3.py es una biblioteca que simplifica la forma en la que puede conectarse a un nodo de Ethereum para luego enviar y recibir datos de él.Nota: «nodo de Ethereum» y «cliente de Ethereum» se usan de forma indistinta. En cualquier caso, se refiere al software que ejecuta un participante de la red Ethereum. Este software puede leer datos de bloques, recibir actualizaciones cuando se agregan nuevos bloques a la cadena, transmitir nuevas transacciones y más. Técnicamente, el cliente es el software y el nodo es la computadora que ejecuta el software.
+Los desarrolladores de Python que quieren interactuar con Ethereum probablemente recurran a [Web3.py](https://web3py.readthedocs.io/). Web3.py es una biblioteca que simplifica enormemente la forma en que puede conectarse a un nodo de Ethereum, para luego enviar y recibir datos de él.
-Los [clientes de Ethereum](/developers/docs/nodes-and-clients/) pueden configurarse para que sean accesibles por [IPC](https://wikipedia.org/wiki/Inter-process_communication), HTTP o Websockets, por lo que Web3.py necesitará reflejar esta configuración. Web3.py se refiere a estas opciones de conexión como **proveedores**. Tendrá que elegir uno de los tres proveedores para vincular la instancia de Web3.py a su nodo.
+Nota: «nodo de Ethereum» y «cliente de Ethereum» se usan indistintamente. En cualquier caso, se refiere al software que ejecuta un participante en la red de Ethereum. Este software puede leer datos de bloques, recibir actualizaciones cuando se añaden nuevos bloques a la cadena, transmitir nuevas transacciones y mucho más. Técnicamente, el cliente es el software y el nodo es la computadora que ejecuta el software.
-
+Los [clientes de Ethereum](/developers/docs/nodes-and-clients/) pueden configurarse para ser accesibles mediante [IPC](https://wikipedia.org/wiki/Inter-process_communication), HTTP o Websockets, por lo que Web3.py deberá reflejar esta configuración. Web3.py se refiere a estas opciones de conexión como **proveedores**. Tendrá que elegir uno de los tres proveedores para vincular la instancia de Web3.py a su nodo.
-_Configure el nodo de Ethereum y Web3.py para que se comuniquen por el mismo protocolo (IPC en este diagrama)._
+
-Cuando Web3.py esté configurado correctamente, puede empezar a interactuar con la cadena de bloques. He aquí hay un par de ejemplos de uso de Web3.py como avance de lo que está por venir:
+_Configure el nodo de Ethereum y Web3.py para que se comuniquen a través del mismo protocolo, por ejemplo, IPC en este diagrama._
+
+Una vez que Web3.py esté configurado correctamente, puede comenzar a interactuar con la cadena de bloques. Aquí tiene un par de ejemplos de uso de Web3.py como anticipo de lo que está por venir:
```python
-# read block data:
+# leer datos del bloque:
w3.eth.get_block('latest')
-# send a transaction:
+# enviar una transacción:
w3.eth.send_transaction({'from': ..., 'to': ..., 'value': ...})
```
## Instalación {#installation}
-En este tutorial, trabajaremos solo con el intérprete de Python. No crearemos ningún directorio, archivo, clases o funciones.Nota: en los ejemplos de abajo, los comandos que empiezan con `$` están destinados a ser ejecutados en la terminal. (No escriba el símbolo `$`, ya que sólo significa el inicio de la línea)
+En esta guía, trabajaremos únicamente con un intérprete de Python. No crearemos ningún directorio, archivo, clase o función.
+
+Nota: En los ejemplos siguientes, los comandos que comienzan con `$` deben ejecutarse en la terminal. (No escriba el `$`, solo significa el inicio de la línea)
-Primero, instale [IPython](https://ipython.org/) para tener un entorno fácil de usar para explorar. IPython ofrece el autocompletado mediante la tecla de tabulación —entre otras características—, haciendo mucho más fácil ver qué es posible con Web3.py.
+Primero, instale [IPython](https://ipython.org/) para tener un entorno amigable en el que explorar. IPython ofrece la función de autocompletar con la tecla de tabulación, entre otras características, lo que hace que sea mucho más fácil ver lo que es posible hacer con Web3.py.
```bash
pip install ipython
```
-Web3.py se publica bajo el nombre `web3`. Instálelo de la siguiente manera:
+Web3.py se publica con el nombre `web3`. Instálelo de la siguiente manera:
```bash
pip install web3
```
-Una cosa más: vamos a simular una cadena de bloques posteriormente, lo que requerirá un par de dependencias más. Puede instalarlos todos mediante:
+Una cosa más: más adelante vamos a simular una cadena de bloques, lo que requiere un par de dependencias más. Puede instalarlas a través de:
```bash
pip install 'web3[tester]'
```
-¡Ya está listo para comenzar!
+¡Ya está todo listo para empezar!
-Nota: El paquete `web3[tester]` funciona hasta la versión de Python 3.10.xx
+Nota: El paquete `web3[tester]` funciona hasta Python 3.10.xx
-## Crear un proceso aislado {#spin-up-a-sandbox}
+## Iniciar un entorno de pruebas {#spin-up-a-sandbox}
-Abra un nuevo entorno de Python ejecutando `ipython` en su terminal. Esto es comparable a ejecutar `python`, pero tiene más funciones.
+Abra un nuevo entorno de Python ejecutando `ipython` en su terminal. Esto es comparable a ejecutar `python`, pero viene con muchas más funciones.
```bash
ipython
```
-Esto imprimirá información sobre las versiones de Python e IPython que ejecute. Después, verá un mensaje esperando que escriba algo:
+Esto imprimirá alguna información sobre las versiones de Python e IPython que está ejecutando, y luego debería ver un indicador esperando una entrada:
```python
In [1]:
```
-Ahora está viendo una consola interactiva de Python. Básicamente es un sandbox, o entorno de pruebas, para experimentar. Si ha llegado hasta aquí, es hora de importar Web3.py:
+Ahora está viendo un shell interactivo de Python. Básicamente, es un entorno de pruebas para experimentar. Si ha llegado hasta aquí, es hora de importar Web3.py:
```python
In [1]: from web3 import Web3
```
-## Presentamos el módulo Web3 {#introducing-the-web3-module}
+## Presentación del módulo Web3 {#introducing-the-web3-module}
-Además de ser una puerta de enlace a Ethereum, el módulo [Web3](https://web3py.readthedocs.io/en/stable/overview.html#base-api) ofrece algunas prácticas funciones. Exploremos algunas.
+Además de ser una puerta de enlace a Ethereum, el módulo [Web3](https://web3py.readthedocs.io/en/stable/overview.html#base-api) ofrece algunas funciones de utilidad. Exploremos un par de ellas.
-En una aplicación que interactúe con Ethereum, normalmente necesitará convertir las denominaciones de las monedas. El modulo Web3 proporciona un par de métodos de ayuda solo para esto [from_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.from_wei) y [to_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.to_wei).
+En una aplicación de Ethereum, comúnmente necesitará convertir denominaciones de moneda. El módulo Web3 proporciona un par de métodos de ayuda para esto: [from_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.from_wei) y [to_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.to_wei).
-Nota: los ordenadores no son nada precisos en el manejo de números decimales. Para solucionarlo, los desarrolladores suelen almacenar valores de dólares en centavos. Por ejemplo, un artículo con un precio de 5,99 $ suele almacenarse en la base de datos como 599.
+Nota: Las computadoras son notoriamente malas manejando matemática decimal. Para evitar esto, los desarrolladores suelen almacenar las cantidades en dólares en céntimos. Por ejemplo, un artículo con un precio de 5,99 $ puede almacenarse en la base de datos como 599.
-Se usa un patrón similar cuando se escriben transacciones en ether. Sin embargo, en vez de dos puntos decimales, ¡ether tiene 18! La denominación más pequeña de ether se llama wei: ese es el valor especificado cuando se envían transacciones.
+Se utiliza un patrón similar al manejar transacciones en ether. Sin embargo, en lugar de dos decimales, ¡el ether tiene 18! La denominación más pequeña de ether se llama wei, así que ese es el valor que se especifica al enviar transacciones.
-1 ether = 1.000.000.000.000.000.000 wei
+1 ether = 1000000000000000000 wei
1 wei = 0,000000000000000001 ether
-Pruebe convertir algunos valores a y desde wei. Tenga en cuenta que [hay nombres para muchas de las denominaciones](https://web3py.readthedocs.io/en/stable/troubleshooting.html#how-do-i-convert-currency-denominations) entre ether y wei. Una de las más conocidas es **gwei**, ya que es como suelen representarse las comisiones de las transacciones.
+Pruebe a convertir algunos valores a y desde wei. Tenga en cuenta que [existen nombres para muchas de las denominaciones](https://web3py.readthedocs.io/en/stable/troubleshooting.html#how-do-i-convert-currency-denominations) entre ether y wei. Una de las más conocidas es el **gwei**, ya que suele ser la forma en que se representan las comisiones de las transacciones.
```python
In [2]: Web3.to_wei(1, 'ether')
@@ -146,49 +149,50 @@ In [3]: Web3.from_wei(500000000, 'gwei')
Out[3]: Decimal('0.5')
```
-Otros métodos de utilidad en el módulo Web3 incluyen conversores de formato de datos (p. ej., [`toHex`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toHex)), ayudantes de dirección (p. ej., [`isAddress`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.isAddress)) y funciones hash (p. ej., [`keccak`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.keccak)). Explicaremos muchos de estos más adelante en la serie. Para ver todos los métodos y funciones disponibles, utilice el autocompletador de IPython escribiendo `Web3` y presionando la tecla Tab dos veces después del punto.
+Otros métodos de utilidad del módulo Web3 incluyen convertidores de formato de datos (p. ej., [`toHex`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toHex)), funciones de ayuda para direcciones (p. ej., [`isAddress`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.isAddress)) y funciones de hash (p. ej., [`keccak`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.keccak)). Muchos de ellos se tratarán más adelante en la serie. Para ver todos los métodos y propiedades disponibles, utilice la función de autocompletado de IPython escribiendo `Web3`. y pulsando la tecla de tabulación dos veces después del punto.
-## Hable con la cadena {#talk-to-the-chain}
+## Hablar con la cadena {#talk-to-the-chain}
-Los métodos de conveniencia son encantadores, pero pasemos a la cadena de bloques. El siguiente paso es configurar Web3.py para establecer comunicación con un nodo Ethereum. Aquí tenemos la opción de utilizar los proveedores IPC, HTTP o Websocket.
+Los métodos de utilidad son estupendos, pero pasemos a la cadena de bloques. El siguiente paso es configurar Web3.py para que se comunique con un nodo de Ethereum. Aquí tenemos la opción de usar los proveedores de IPC, HTTP o Websocket.
-No seguiremos este camino, pero un ejemplo de flujo de trabajo completo utilizando el proveedor HTTP podría ser este:
+No seguiremos este camino, pero un ejemplo de un flujo de trabajo completo usando el proveedor HTTP podría ser algo como esto:
-- Descargue un nodo Ethereum, por ejemplo, [Geth](https://geth.ethereum.org/).
-- Inicie Geth en una ventana de terminal y espere a que sincronice la red. El puerto HTTP predeterminado es `8545`, pero es configurable.
-- Haga que Web3 se conecte al nodo a través de HTTP, en `localhost:8545`. `w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))`
+- Descargar un nodo de Ethereum, p. ej., [Geth](https://geth.ethereum.org/).
+- Inicie Geth en una ventana de la terminal y espere a que se sincronice con la red. El puerto HTTP por defecto es `8545`, pero es configurable.
+- Indique a Web3.py que se conecte al nodo a través de HTTP, en `localhost:8545`.
+ `w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))`
- Use la instancia `w3` para interactuar con el nodo.
-Si bien es una forma "real" de hacerlo, el proceso de sincronización lleva horas y es innecesario si solo quiere un entorno de desarrollo. Web3.py expone un cuarto proveedor para este propósito, el **EthereumTesterProvider**. Este proveedor de pruebas se vincula a un nodo de Ethereum simulado con permisos relajados y dinero falso para experimentar.
+Aunque esta es una forma «real» de hacerlo, el proceso de sincronización tarda horas y es innecesario si solo quiere un entorno de desarrollo. Web3.py expone un cuarto proveedor para este propósito, el **EthereumTesterProvider**. Este proveedor de prueba se enlaza a un nodo de Ethereum simulado con permisos relajados y moneda falsa para jugar.
-
+
-_El EthereumTesterProvider se conecta a un nodo simulado y es práctico para entornos de desarrollo rápidos._
+_El EthereumTesterProvider se conecta a un nodo simulado y es útil para entornos de desarrollo rápidos._
-Ese nodo simulado se llama [eth-tester](https://github.com/ethereum/eth-tester) y lo instalamos como parte del comando `pip install web3[tester]`. Configurar Web3.py para utilizar este proveedor de pruebas es así de sencillo:
+Ese nodo simulado se llama [eth-tester](https://github.com/ethereum/eth-tester) y lo instalamos como parte del comando `pip install web3[tester]`. Configurar Web3.py para usar este proveedor de prueba es tan simple como:
```python
In [4]: w3 = Web3(Web3.EthereumTesterProvider())
```
-¡Ya está listo para navegar por la cadena! Eso no es algo que la gente suela decir. Me lo acabo de inventar. Veamos rápidamente de qué se trata.
+¡Ahora está listo para surfear por la cadena! Eso no es algo que la gente diga. Me lo acabo de inventar. Hagamos un recorrido rápido.
-## Explicación rápida {#the-quick-tour}
+## El recorrido rápido {#the-quick-tour}
-Lo primero de todo es hacer una verificación:
+Primero lo primero, una comprobación de estado:
```python
In [5]: w3.is_connected()
Out[5]: True
```
-A decir verdad, como usamos el proveedor de pruebas, esta no es una prueba muy valiosa, pero si falla, es muy posible que haya escrito algo incorrecto al instanciar la variable `w3`. Compruebe bien que haya incluido los paréntesis internos, es decir: `Web3.EthereumTesterProvider()`.
+Como estamos usando el proveedor de prueba, esta no es una prueba muy valiosa, pero si falla, es probable que haya escrito algo mal al instanciar la variable `w3`. Vuelva a comprobar que ha incluido los paréntesis internos, es decir, `Web3.EthereumTesterProvider()`.
-## Punto n.º1 de la explicación: [cuentas](/developers/docs/accounts/) {#tour-stop-1-accounts}
+## Parada del recorrido n.º 1: [cuentas](/developers/docs/accounts/) {#tour-stop-1-accounts}
-Por conveniencia, el proveedor de prubas creó algunas cuentas y las cargó previamente con ether de prueba.
+Para mayor comodidad, el proveedor de prueba creó algunas cuentas y las precargó con ether de prueba.
-Primero, veamos una lista de las cuentas:
+Primero, veamos una lista de esas cuentas:
```python
In [6]: w3.eth.accounts
@@ -197,25 +201,25 @@ Out[6]: ['0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf',
'0x6813Eb9362372EEF6200f3b1dbC3f819671cBA69', ...]
```
-Si ejecuta este comando, debería ver una lista de diez cadenas que comienzan con `0x`. Cada una es una **dirección pública** y es, de alguna manera, análoga al número de cuenta de una cuenta corriente. Esa es la dirección que le daría a alguien que quisiera enviarle ether.
+Si ejecuta este comando, debería ver una lista de diez cadenas que comienzan con `0x`. Cada una es una **dirección pública** y es, en cierto modo, análoga al número de una cuenta corriente. Proporcionaría esta dirección a alguien que quisiera enviarle ether.
-Como se ha mencionado, el proveedor de pruebas ha cargado previamente cada una de estas cuentas con ether de prueba. Veamos cuánto hay en la primera cuenta:
+Como se mencionó, el proveedor de prueba ha precargado cada una de estas cuentas con algo de ether de prueba. Averigüemos cuánto hay en la primera cuenta:
```python
In [7]: w3.eth.get_balance(w3.eth.accounts[0])
Out[7]: 1000000000000000000000000
```
-¡Un montón de ceros! Antes de que vaya corriendo a un banco falso, recuerde la lección sobre las denominaciones de monedas que vimos antes. Los valores de ether se representan en la menor denominación: wei. Convierta eso a ether:
+¡Son muchos ceros! Antes de que se vaya riendo camino al banco falso, recuerde la lección anterior sobre las denominaciones de la moneda. Los valores de ether se representan en la denominación más pequeña, el wei. Convierta eso a ether:
```python
In [8]: w3.from_wei(1000000000000000000000000, 'ether')
Out[8]: Decimal('1000000')
```
-Un millón de ether de prueba; nada mal.
+Un millón de ether de prueba, nada mal.
-## Parada n.º2 de la explicación: datos de bloque {#tour-stop-2-block-data}
+## Parada del recorrido n.º 2: datos del bloque {#tour-stop-2-block-data}
Echemos un vistazo al estado de esta cadena de bloques simulada:
@@ -230,15 +234,15 @@ Out[9]: AttributeDict({
})
```
-Veremos que aparece mucha información sobre un bloque, pero lo más importante es:
+Se devuelve mucha información sobre un bloque, pero solo hay un par de cosas que señalar aquí:
-- El número del bloque es cero, al margen de cuando se haya configurado el proveedor de pruebas. A diferencia de la red real de Ethereum, que añade un nuevo bloque cada 12 segundos, esta simulación esperará hasta que usted le dé algo de trabajo que hacer.
-- `transactions` es una lista vacía debido a lo que decimos arriba: aún no hemos hecho nada. Este primer bloque es un **bloque vacío**, usado solo para iniciar la cadena.
-- Observe que `parentHash` es simplemente un montón de bytes vacíos. Esto significa que es el primer bloque en la cadena, también conocido como un **bloque génesis**.
+- El número de bloque es cero, sin importar hace cuánto tiempo configuró el proveedor de prueba. A diferencia de la red real de Ethereum, que añade un nuevo bloque cada 12 segundos aproximadamente, esta simulación esperará hasta que le dé algo de trabajo que hacer.
+- `transactions` es una lista vacía, por la misma razón: todavía no hemos hecho nada. Este primer bloque es un **bloque vacío**, solo para iniciar la cadena.
+- Observe que el `parentHash` es solo un montón de bytes vacíos. Esto significa que es el primer bloque de la cadena, también conocido como el **bloque génesis**.
-## Parada n.º3 de la explicación: [transacciones](/developers/docs/transactions/) {#tour-stop-3-transactions}
+## Parada del recorrido n.º 3: [transacciones](/developers/docs/transactions/) {#tour-stop-3-transactions}
-Estamos estancados en el bloque cero hasta que haya una transacción pendiente, así que démosle una. Envíe algo de ether de prueba desde una cuenta a otra:
+Estamos atascados en el bloque cero hasta que haya una transacción pendiente, así que vamos a crear una. Envíe unos cuantos ether de prueba de una cuenta a otra:
```python
In [10]: tx_hash = w3.eth.send_transaction({
@@ -249,13 +253,16 @@ In [10]: tx_hash = w3.eth.send_transaction({
})
```
-Este es típicamente el punto donde esperaría varios segundos para que su transacción se incluya en un nuevo bloque. El proceso completo suele ser algo así:
+Este es normalmente el punto en el que esperaría varios segundos para que su transacción se incluya en un nuevo bloque. El proceso completo es algo así:
-1. Envíe una transacción y mantenga el hash de la transacción. Hasta que el bloque que contiene la transacción sea creado y emitido, la transacción estará “pendiente”. `tx_hash = w3.eth.send_transaction({ … })`
-2. Esperar a que la transacción se incluya en un bloque: `w3.eth.wait_for_transaction_receipt(tx_hash)`
-3. Continúe con la lógica de la aplicación. Para ver la transacción satisfactoria: `w3.eth.get_transaction(tx_hash)`
+1. Envíe una transacción y guarde el hash de la transacción. Hasta que el bloque que contiene la transacción se crea y se difunde, la transacción está «pendiente».
+ `tx_hash = w3.eth.send_transaction({ … })`
+2. Espere a que la transacción se incluya en un bloque:
+ `w3.eth.wait_for_transaction_receipt(tx_hash)`
+3. Continúe con la lógica de la aplicación. Para ver la transacción exitosa:
+ `w3.eth.get_transaction(tx_hash)`
-Nuestro entorno simulado añadirá la transacción en un nuevo bloque de manera instantánea, por lo que podremos ver inmediatamente la transacción:
+Nuestro entorno simulado añadirá la transacción a un nuevo bloque al instante, por lo que podemos ver la transacción inmediatamente:
```python
In [11]: w3.eth.get_transaction(tx_hash)
@@ -270,9 +277,9 @@ Out[11]: AttributeDict({
})
```
-Aquí encontrará algunos detalles que le resultarán familiares: los campos `from`, `to` y `value` deben coincidir con el contenido de nuestra consulta `send_transaction`. El otro aspecto tranquilizador es que esta transacción se incluyó como la primera transacción (`'transactionIndex': 0`) dentro del bloque número 1.
+Verá algunos detalles familiares aquí: los campos `from`, `to` y `value` deberían coincidir con las entradas de nuestra llamada a `send_transaction`. El otro dato tranquilizador es que esta transacción fue incluida como la primera transacción (`'transactionIndex': 0`) en el bloque número 1.
-También podemos verificar fácilmente el éxito de esta transacción revisando los saldos o balances de las dos cuentas implicadas. Deben haber pasado tres ether de una cuenta a otra.
+También podemos verificar fácilmente el éxito de esta transacción comprobando los saldos de las dos cuentas involucradas. Tres ether deberían haberse movido de una a otra.
```python
In [12]: w3.eth.get_balance(w3.eth.accounts[0])
@@ -282,12 +289,12 @@ In [13]: w3.eth.get_balance(w3.eth.accounts[1])
Out[13]: 1000003000000000000000000
```
-¡El último parece ser correcto! El saldo ha pasado de 1.000.000 a 1.000.003 ether. Pero, ¿qué pasó con la primera cuenta? Parece que perdió algo más de tres ether. Desafortunadamente, nada en esta vida es gratis; hacer uso de la red pública de Ethereum requiere compensar a las personas que cumplen con su rol de apoyo. Se dedujo una pequeña comisión de transacción de la cuenta que envió la transacción: esta comisión es la cantidad de gas quemado (21.000 unidades de gas para una transferencia de ETH) multiplicada por una tarifa base que varía según la actividad de la red más una propina que va al validador que incluye la transacción en un bloque.
+¡El último se ve bien! El saldo pasó de 1 000 000 a 1 000 003 de ether. ¿Pero qué pasó con la primera cuenta? Parece haber perdido un poco más de tres ether. Por desgracia, nada en la vida es gratis, y usar la red pública de Ethereum requiere que compense a sus pares por su papel de apoyo. Se dedujo una pequeña comisión por transacción de la cuenta que la envió; esta comisión es la cantidad de gas quemado (21 000 unidades de gas para una transferencia de ETH) multiplicada por una tarifa base que varía según la actividad de la red más una propina que va para el validador que incluye la transacción en un bloque.
-Más información sobre el [gas](/developers/docs/gas/#post-london)
+Más sobre el [gas](/developers/docs/gas/#post-london)
-Nota: en la red pública, el coste de las comisiones por transacción es variable, este se basa en la demanda de la red y en la rapidez con la que se desee procesar una transacción. Si quiere saber cómo se calculan las comisiones, lea mi artículo anterior, en donde describo cómo se incluyen las transacciones en un bloque.
+Nota: En la red pública, las comisiones por transacción son variables y se basan en la demanda de la red y en la rapidez con la que desee que se procese una transacción. Si está interesado en un desglose de cómo se calculan las comisiones, consulte mi publicación anterior sobre cómo se incluyen las transacciones en un bloque.
-## Tómese un respiro {#and-breathe}
+## Y respire {#and-breathe}
-Después de todo lo que hemos aprendido hasta ahora, es un buen momento para hacer una pausa. Todavía hay mucho por indagar, por lo que continuaremos explorando en la parte 2 de esta serie. Algunos conceptos que trataremos posteriormente: conectarse a un nodo real, contratos inteligentes y tokens. ¿Tiene alguna pregunta? Si la tiene, adelante, ¡pregúntemela! Sus comentarios ayudarán a definir el camino a seguir. Puede hacer solicitudes a través de [Twitter](https://twitter.com/wolovim).
+Llevamos un rato con esto, así que este parece un buen lugar para tomar un descanso. La madriguera del conejo continúa, y seguiremos explorando en la segunda parte de esta serie. Algunos conceptos que están por venir: conexión a un nodo real, contratos inteligentes y tokens. ¿Tiene más preguntas? ¡Hágamelo saber! Sus comentarios influirán en la dirección que tomemos a partir de ahora. Las peticiones son bienvenidas a través de [Twitter](https://twitter.com/wolovim).
From 004cdfca3dc58bf2761638fcfa6f7466c99712e9 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:29 -0300
Subject: [PATCH 142/589] update(i18n):
public/content/translations/es/developers/docs/nodes-and-clients/client-diversity/index.md
---
.../client-diversity/index.md | 95 ++++++++++++-------
1 file changed, 59 insertions(+), 36 deletions(-)
diff --git a/public/content/translations/es/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/translations/es/developers/docs/nodes-and-clients/client-diversity/index.md
index 2886d6df786..2b61ff26d2f 100644
--- a/public/content/translations/es/developers/docs/nodes-and-clients/client-diversity/index.md
+++ b/public/content/translations/es/developers/docs/nodes-and-clients/client-diversity/index.md
@@ -7,13 +7,13 @@ sidebarDepth: 2
El software ejecutado por el cliente, controla el comportamiento de un nodo de Ethereum. Hay diferentes niveles de producción de clientes de Ethereum, cada uno de ellos desarrollado y mantenido en varios idiomas por diferentes equipos. Los clientes han sido construidos con especificaciones similares que permiten la comunicación entre ellos, compartir rasgos comunes y ofrecer una experiencia al cliente similar. No obstante, en estos momentos, la distribución de clientes en los nodos no es del todo uniforme como para que el reforzamiento de la red opere a su máximo potencial. Idóneamente, los usuarios se dividen de manera uniforme a través de varios clientes para generar tanta diversidad de clientes como sea posible en la red.
-## Prerrequisitos {#prerequisites}
+## Requisitos previos {#prerequisites}
-Si aún quiere profundizar sobre qué son los nodos y clientes, acceda a la sección de [nodos y clientes](/developers/docs/nodes-and-clients/). Las capas de [ejecución](/glossary/#execution-layer) y [consenso](/glossary/#consensus-layer) se describen en el glosario.
+Si aún no entiende qué son los nodos y los clientes, consulte [nodos y clientes](/developers/docs/nodes-and-clients/). Las capas de [ejecución](/glossary/#execution-layer) y [consenso](/glossary/#consensus-layer) se definen en el glosario.
## ¿Por qué existen múltiples clientes? {#why-multiple-clients}
-La existencia de clientes múltiples, desarrollados y mantenidos de manera independiente se debe a que la diversidad de clientes permite que la red sea más resiliente frente a ataques o errores. Los clientes múltiples son una baza singular para Ethereum. Otras cadenas de bloques dependen de la infalibilidad de un solo cliente. Sin embargo, no es una tarea simple mantener múltiples clientes disponibles, ya que la comunidad debe adoptarlos y la cantidad de nodos disponibles deberá distribuirse lo más uniformemente posible entre ellos.
+La existencia de clientes múltiples, desarrollados y mantenidos de manera independiente se debe a que la diversidad de clientes permite que la red sea más resiliente frente a ataques o errores. Los clientes múltiples son una baza singular para Ethereum. Otras cadenas de bloques dependen de la infalibilidad de un solo cliente. Sin embargo, no basta con tener múltiples clientes disponibles; tienen que ser adoptados por la comunidad y el total de nodos activos debe distribuirse de forma relativamente equitativa entre ellos.
## ¿Por qué es tan importante la diversidad de clientes? {#client-diversity-importance}
@@ -25,13 +25,13 @@ Un error producido en un solo cliente es menos arriesgado para la red cuando se
### Resiliencia frente a los ataques {#resilience}
-La diversidad de clientes también ofrece una mayor resiliencia frente a los ataques. Por ejemplo, si un ataque se dirige [a un cliente en particular](https://twitter.com/vdWijden/status/1437712249926393858) y a una ramificación específica de la cadena es poco probable que tenga éxito, ya que es muy improbable que otros clientes puedan verse afectados de la misma manera y que la cadena predilecta se mantenga incorrupta. La poca diversidad de clientes aumenta el riesgo de hackeos dirigidos al cliente dominante. Se ha probado que la diversidad de clientes es una forma de defensa de vital importancia ante ataques maliciosos contra la red. Por ejemplo, el ataque de servicios denegados de Shanghai de 2016 tuvo lugar debido a que los atacantes lograron forzar al cliente dominante (Geth), haciéndolo ejecutar una operación de disco ralentizado i/o decenas de miles de veces por bloque. Gracias a que clientes alternativos se encontraban en línea sin compartir los puntos débiles, Ethereum pudo resistir el ataque y continuar operando mientras se lograban reparar los fallos en Geth.
+La diversidad de clientes también ofrece una mayor resiliencia frente a los ataques. Por ejemplo, es poco probable que un ataque que [engañe a un cliente particular](https://twitter.com/vdWijden/status/1437712249926393858) para que siga una rama particular de la cadena tenga éxito, porque es poco probable que otros clientes sean explotables de la misma manera y la cadena canónica permanezca intacta. La poca diversidad de clientes aumenta el riesgo de hackeos dirigidos al cliente dominante. Se ha probado que la diversidad de clientes es una forma de defensa de vital importancia ante ataques maliciosos contra la red. Por ejemplo, el ataque de servicios denegados de Shanghai de 2016 tuvo lugar debido a que los atacantes lograron forzar al cliente dominante (Geth), haciéndolo ejecutar una operación de disco ralentizado i/o decenas de miles de veces por bloque. Gracias a que clientes alternativos se encontraban en línea sin compartir los puntos débiles, Ethereum pudo resistir el ataque y continuar operando mientras se lograban reparar los fallos en Geth.
### Finalidad de la prueba de participación {#finality}
Un error en un cliente de consenso con más del 33 % de los nodos de Ethereum podría impedir que la capa de consenso finalizara, lo que significa que los usuarios no podrían confiar en que las transacciones no se revirtieran o cambiarían en algún momento. Esto podría ser bastante problemático para muchas de las aplicaciones contruidas en Ethereum, especialmente las DeFi.
- Peor aún, un error crítico en un cliente con dos tercios de mayoría haría que la cadena se dividiera y finalizara de manera incorrecta, haciendo que un gran número de validadores se vieran involucrados en una cadena inválida. Si los validadores quisieran reincorporarse a la cadena correcta, se verían afectados por recortes o por un lento y costoso proceso de retirada y reactivación voluntaria. La magnitud de los recortes aumenta en función del número de nodos culpables, con un máximo de dos tercios de la mayoría (32 ETH) recortados.
+ Peor aún, un error crítico en un cliente con una mayoría de dos tercios podría hacer que la cadena se divida y finalice incorrectamente, lo que llevaría a que un gran conjunto de validadores se quedara atascado en una cadena no válida. Si los validadores quisieran reincorporarse a la cadena correcta, se verían afectados por recortes o por un lento y costoso proceso de retirada y reactivación voluntaria. La magnitud de los recortes aumenta en función del número de nodos culpables, con un máximo de dos tercios de la mayoría (32 ETH) recortados.
A pesar de que es poco probable que se den estas situaciones, el ecosistema de Ethereum puede mitigar dichos riesgos igualando la distribución de clientes a través de los nodos activos. Idóneamente, ningún cliente de consenso podría alcanzar una participación del 33 % del total de los nodos.
@@ -39,71 +39,94 @@ A pesar de que es poco probable que se den estas situaciones, el ecosistema de E
La tenencia de clientes mayoritarios también conlleva un costo humano. Esto supondría una sobrecarga de estrés y responsabilidades a un equipo de desarrollo a pequeña escala. Mientras haya menos diversidad de clientes, mayor será la carga de responsabilidades adjudicadas a los desarrolladores a cargo del cliente mayoritario. Distribuir la responsabilidad entre múltiples equipos favorece el bienestar tanto de los nodos de la red de Ethereum como de las personas involucradas.
-## Diversidad actual de clientes {#current-client-diversity}
+## Diversidad de clientes actual {#current-client-diversity}
- _Diagrama de datos de [ethernodes.org](https://ethernodes.org) y [clientdiversity.org](https://clientdiversity.org/)_
+### Clientes de ejecución {#execution-clients-breakdown}
-Los dos gráficos de la parte superior muestran capturas del estado actual de la diversidad de clientes para las capas de ejecución y consenso (en el momento de su redacción en enero de 2022). La capa de ejecución está abrumadoramente dominada por [Geth](https://geth.ethereum.org/), [Open Ethereum](https://openethereum.github.io/) en un lejano segundo lugar, [Erigon](https://github.com/ledgerwatch/erigon) en tercero y [Nethermind](https://nethermind.io/) en el cuarto, además de la participación de otros clientes cuya participación representa menos del 1 % en la red. En la capa de consenso, el cliente de usado con mayor frecuencia es [Prysm](https://prysmaticlabs.com/#projects). A pesar de no ser tan predominante como Geth, representa más del 60 % de la red. [Lighthouse](https://lighthouse.sigmaprime.io/) y [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) acaparan el 20 % y 14 % respectivamente, mientras que el uso del resto de los clientes es poco común.
+
-Los datos de la capa de ejecución se obtuvieron de [Ethernodes](https://ethernodes.org) el 23 de enero de 2022. Los datos sobre la capa de consenso provienen de [Michael Sproul](https://github.com/sigp/blockprint). Los datos de clientes de consenso son más difíciles de obtener, porque los clientes de la capa de consenso no siempre tienen rastros inequívocos que se pueden utilizar para identificarlos. La información se ha creado gracias a un algoritmo de clasificación que en algunas ocasiones confunde a algunos de los clientes minoritarios (vea [aquí](https://twitter.com/sproulM_/status/1440512518242197516) para detalles adicionales). En el diagrama de la parte superior, estas clasificaciones ambiguas se indican con una etiqueta (p. ej.,: Nimbus/Teku). No obstante, es evidente que la mayoría de la red se ejecuta con Prysm. Los datos son una muestra de un determinado grupo de bloques (específicamente de los bloques baliza situados entre las ranuras 2048001 y 2164916) en los que el predominio de Prysm es relativamente mayor, sobrepasando el 68 %. A pesar de que solo son capturas, los valores presentes en el diagrama ofrecen una visión generalizada del estado actual de la diversidad de clientes.
+### Clientes de consenso {#consensus-clients-breakdown}
-Los datos actualizados de diversidad de clientes para la capa de consenso ahora están disponibles en [clientdiversity.org](https://clientdiversity.org/).
+
-## Capa de ejecución {#execution-layer}
-
-Hasta el momento, el foco de la discusión sobre la diversidad de clientes se centraba en la capa de consenso. Sin embargo, actualmente, el cliente de ejecución [Geth](https://geth.ethereum.org), se encuentra a cargo de cerca del 85 % del total de los nodos. Estos son porcentajes críticos, tanto para el cliente de consenso como para el de ejecución. Por ejemplo, un error en Geth que afecte el manejo de las transacciones o un error en la construcción de la carga útil de ejecución podría generar una finalización de transacciones problemática o con errores para los clientes de consenso. Así pues, Ethereum podría ser mucho más saludable con una distribución más equitativa de clientes de ejecución, en donde, idóneamente, no haya ningún cliente con más del 33 % de la participación en la red.
-
-## Uso de clientes minoritarios {#use-minority-client}
+Este diagrama puede estar desactualizado. Visite [ethernodes.org](https://ethernodes.org) y [clientdiversity.org](https://clientdiversity.org) para obtener información actualizada.
-Para abordar la diversidad de clientes y escoger un cliente minoritario no solo se necesitan usuarios individuales, sino también reservas de minería/validación e instituciones como grandes DApps e intercambios para intercambiar clientes también. A pesar de ello, todos los usuarios pueden participar en el proceso de reequilibrar las disparidades actuales y normalizar el uso de todo el software disponible de Ethereum. Tras La Fusión, todos los operadores de nodo deberán ejecutar un cliente de ejecución y un cliente de consenso. Escoger alguna de las combinaciones de clientes sugeridas a continuación, ayudará a aumentar la diversidad de clientes.
+Los dos gráficos circulares de arriba muestran instantáneas de la diversidad de clientes actual para las capas de ejecución y de consenso (en el momento de la redacción, en octubre de 2025). La diversidad de clientes ha mejorado con los años, y la capa de ejecución ha visto una reducción en el dominio de [Geth](https://geth.ethereum.org/), con [Nethermind](https://www.nethermind.io/nethermind-client) en un cercano segundo lugar, [Besu](https://besu.hyperledger.org/) en tercero y [Erigon](https://github.com/ledgerwatch/erigon) en cuarto, mientras que otros clientes comprenden menos del 3 % de la red. El cliente más utilizado en la capa de consenso, [Lighthouse](https://lighthouse.sigmaprime.io/), está bastante cerca del segundo más utilizado. [Prysm](https://prysmaticlabs.com/#projects) y [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) representan ~31 % y ~14 % respectivamente, y otros clientes se usan con poca frecuencia.
-### Clientes de ejecución {#execution-clients}
+Los datos de la capa de ejecución se obtuvieron de [supermajority.info](https://supermajority.info/) el 26 de octubre de 2025. Los datos de los clientes de consenso se obtuvieron de [Michael Sproul](https://github.com/sigp/blockprint). Los datos de clientes de consenso son más difíciles de obtener, porque los clientes de la capa de consenso no siempre tienen rastros inequívocos que se pueden utilizar para identificarlos. Los datos se generaron utilizando un algoritmo de clasificación que a veces confunde a algunos de los clientes minoritarios (consulte [aquí](https://twitter.com/sproulM_/status/1440512518242197516) para obtener más detalles). En el diagrama anterior, estas clasificaciones ambiguas se tratan con una etiqueta de «uno u otro» (p. ej., Nimbus/Teku). No obstante, es evidente que la mayoría de la red se ejecuta con Prysm. A pesar de que solo son capturas, los valores presentes en el diagrama ofrecen una visión generalizada del estado actual de la diversidad de clientes.
-[Besu](https://www.hyperledger.org/use/besu)
+Los datos actualizados sobre la diversidad de clientes para la capa de consenso ya están disponibles en [clientdiversity.org](https://clientdiversity.org/).
-[Nethermind](https://downloads.nethermind.io/)
+## Capa de ejecución {#execution-layer}
-[Erigon](https://github.com/ledgerwatch/erigon)
+Hasta el momento, el foco de la discusión sobre la diversidad de clientes se centraba en la capa de consenso. Sin embargo, el cliente de ejecución [Geth](https://geth.ethereum.org) representa actualmente alrededor del 85 % de todos los nodos. Estos son porcentajes críticos, tanto para el cliente de consenso como para el de ejecución. Por ejemplo, un error en Geth que afecte el manejo de las transacciones o un error en la construcción de la carga útil de ejecución podría generar una finalización de transacciones problemática o con errores para los clientes de consenso. Así pues, Ethereum podría ser mucho más saludable con una distribución más equitativa de clientes de ejecución, en donde, idóneamente, no haya ningún cliente con más del 33 % de la participación en la red.
-[Go-Ethereum](https://geth.ethereum.org/)
+## Usar un cliente minoritario {#use-minority-client}
-### Clientes de consenso {#consensus-clients}
+Abordar la diversidad de clientes requiere algo más que la elección de clientes minoritarios por parte de usuarios individuales: requiere que los grupos de validadores y las instituciones, como las principales dapps y plataformas de intercambio, también cambien de clientes. A pesar de ello, todos los usuarios pueden participar en el proceso de reequilibrar las disparidades actuales y normalizar el uso de todo el software disponible de Ethereum. Tras La Fusión, todos los operadores de nodo deberán ejecutar un cliente de ejecución y un cliente de consenso. Escoger alguna de las combinaciones de clientes sugeridas a continuación, ayudará a aumentar la diversidad de clientes.
-[Nimbus](https://nimbus.team/)
-
-[Lighthouse](https://github.com/sigp/lighthouse)
+### Clientes de ejecución {#execution-clients}
-[Teku](https://consensys.net/knowledge-base/ethereum-2/teku/)
+- [Besu](https://www.hyperledger.org/use/besu)
+- [Nethermind](https://downloads.nethermind.io/)
+- [Erigon](https://github.com/ledgerwatch/erigon)
+- [Go-Ethereum](https://geth.ethereum.org/)
+- [Reth](https://reth.rs/)
-[Lodestar](https://github.com/ChainSafe/lodestar)
+### Clientes de consenso {#consensus-clients}
-[Prysm](https://prysm.offchainlabs.com/docs/)
+- [Nimbus](https://nimbus.team/)
+- [Lighthouse](https://github.com/sigp/lighthouse)
+- [Teku](https://consensys.io/teku)
+- [Lodestar](https://github.com/ChainSafe/lodestar)
+- [Prysm](https://prysm.offchainlabs.com/docs/)
+- [Grandine](https://docs.grandine.io/)
-Los usuarios técnicos pueden acelerar este proceso con tutoriales y documentación relacionada a clientes minoritarios, invitando a otros operadores de nodos a migrar alejándose de los clientes dominantes. Las guías para migrar a un cliente de consenso minoritario están disponibles en [clientdiversity.org](https://clientdiversity.org/).
+Los usuarios técnicos pueden acelerar este proceso con tutoriales y documentación relacionada a clientes minoritarios, invitando a otros operadores de nodos a migrar alejándose de los clientes dominantes. Hay guías disponibles para cambiar a un cliente de consenso minoritario en [clientdiversity.org](https://clientdiversity.org/).
-## Paneles de control de diversidad de clientes {#client-diversity-dashboards}
+## Paneles de diversidad de clientes {#client-diversity-dashboards}
Hay varios paneles que ofrecen estadísticas en tiempo real sobre la diversidad de clientes en las capas de consenso y ejecución.
**Capa de consenso:**
- [Rated.network](https://www.rated.network/)
-- [clientdiversity.org](https://clientdiversity.org/) **/Capa de ejecución:**
+- [clientdiversity.org](https://clientdiversity.org/)
+
+**Capa de ejecución:**
- [supermajority.info](https://supermajority.info//)
- [Ethernodes](https://ethernodes.org/)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
- [Diversidad de clientes en la capa de consenso de Ethereum](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA)
-- [Fusión de Ethereum: ejecute el cliente mayoritario bajo su propio riesgo!](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html), _Dankrad Fiest, 24 de marzo de 2022_
+- [La Fusión de Ethereum: ¡Use el cliente mayoritario bajo su propio riesgo!](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html) – _Dankrad Fiest, 24 de marzo de 2022_
- [La importancia de la diversidad de clientes](https://our.status.im/the-importance-of-client-diversity/)
- [Lista de servicios de nodos de Ethereum](https://ethereumnodes.com/)
-- [Las cinco razones que explican el problema de la diversidad de clientes](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08)
-- [La diversidad de Ethereum y cómo resolverla (YouTube)](https://www.youtube.com/watch?v=1hZgCaiqwfU)
+- [Los «cinco porqués» del problema de la diversidad de clientes](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08)
+- [Diversidad en Ethereum y cómo resolverla (YouTube)](https://www.youtube.com/watch?v=1hZgCaiqwfU)
- [clientdiversity.org](https://clientdiversity.org/)
## Temas relacionados {#related-topics}
-- [Cómo ejecutar un nodo de Ethereum](/run-a-node/)
+- [Ejecutar un nodo de Ethereum](/run-a-node/)
- [Nodos y clientes](/developers/docs/nodes-and-clients/)
From 7b47c06d092ee75efe80560d7dd1d64b3faea07f Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:31 -0300
Subject: [PATCH 143/589] update(i18n):
public/content/translations/es/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
---
.../nodes-as-a-service/index.md | 202 ++++++++++--------
1 file changed, 107 insertions(+), 95 deletions(-)
diff --git a/public/content/translations/es/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/public/content/translations/es/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
index f1bc594a339..f433b7df88f 100644
--- a/public/content/translations/es/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
+++ b/public/content/translations/es/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
@@ -7,17 +7,17 @@ sidebarDepth: 2
## Introducción {#Introduction}
-Ejecutar su propio [ nodo de Ethereum](/developers/docs/nodes-and-clients/#what-are-nodes-and-clients) puede ser desafiante, especialmente al principio o durante una escalada rápida. Hay un [número de servicios](#popular-node-services) que ejecutan infraestructuras de nodo optimizadas para ti; así podrás centrarte en desarrollar tu producto o aplicación. Te explicaremos el funcionamiento de los servicios de nodos, las ventajas y desventajas de usarlos, y haremos una lista con los proveedores por si estás interesado en ponerte en marcha.
+Ejecutar su propio [nodo de Ethereum](/developers/docs/nodes-and-clients/#what-are-nodes-and-clients) puede ser un desafío, especialmente al empezar o al escalar rápidamente. Existen [varios servicios](#popular-node-services) que ejecutan infraestructuras de nodos optimizadas para usted, de modo que pueda centrarse en desarrollar su aplicación o producto. Te explicaremos el funcionamiento de los servicios de nodos, las ventajas y desventajas de usarlos, y haremos una lista con los proveedores por si estás interesado en ponerte en marcha.
## Requisitos previos {#prerequisites}
-Si aún no entiende claramente lo que son los nodos y los clientes, consulte [Nodos y clientes](/developers/docs/nodes-and-clients/).
+Si aún no entiende qué son los nodos y los clientes, consulte [Nodos y clientes](/developers/docs/nodes-and-clients/).
## Participantes {#stakoooooooooooooors}
-Los participantes en solitario deben ejecutar su propia infraestructura en lugar de depender de otros proveedores. Esto conlleva la ejecución de un cliente de ejecución acoplado con un cliente de consenso. Antes de [La Fusión](/roadmap/merge), se podía ejecutar un cliente de consenso solo y servirse de un proveedor centralizado para ejecutar los datos. Esto ya no se puede hacer, ahora un participante en solitario debe ejecutar ambos clientes. Sin embargo, hay servicios disponibles para facilitar este proceso.
+Los participantes en solitario deben ejecutar su propia infraestructura en lugar de depender de otros proveedores. Esto conlleva la ejecución de un cliente de ejecución acoplado con un cliente de consenso. Antes de [La fusión](/roadmap/merge), era posible ejecutar solo un cliente de consenso y utilizar un proveedor centralizado para los datos de ejecución; esto ya no es posible: un participante en solitario debe ejecutar ambos clientes. Sin embargo, hay servicios disponibles para facilitar este proceso.
-[Descubra más cosas sobre un nodo en ejecución](/developers/docs/nodes-and-clients/run-a-node/).
+[Más información sobre cómo ejecutar un nodo](/developers/docs/nodes-and-clients/run-a-node/).
Los servicios descritos en esta página hacen referencia a nodos que no se estén apostando.
@@ -25,13 +25,13 @@ Los servicios descritos en esta página hacen referencia a nodos que no se esté
Los proveedores de servicios de nodos ejecutan clientes de nodos distribuidos sin que usted se dé cuenta, por lo tanto usted no tiene que hacerlo.
-Estos servicios suelen proporcionar una clave de API, que puede usar para escribir y leer desde la cadena de bloques. Suelen incluir acceso a las [redes de prueba](/developers/docs/networks/#ethereum-testnets)además de la red principal.
+Estos servicios suelen proporcionar una clave de API, que puede usar para escribir y leer desde la cadena de bloques. A menudo incluyen acceso a las [redes de prueba de Ethereum](/developers/docs/networks/#ethereum-testnets), además de a la red principal.
Algunos servicios le ofrecen su propio nodo exclusivo que ellos gestionan en su nombre, mientras que otros usan equilibradores de carga para distribuir la actividad a través de los nodos.
Casi todos los servicios de nodos son extremadamente fáciles de integrar, incluyen cambios de una línea en su código para intercambiar su nodo autoalojado, o incluso cambiar entre los mismos servicios.
-Muchas veces, los servicios de nodos ejecutan una serie de [clientes de nodos](/developers/docs/nodes-and-clients/#execution-clients) y [tipos](/developers/docs/nodes-and-clients/#node-types), lo que le permite acceder a los nodos de los archivos y completos, además de tener acceso a los métodos específicos de los clientes en una API.
+A menudo, los servicios de nodos ejecutan una variedad de [clientes de nodo](/developers/docs/nodes-and-clients/#execution-clients) y [tipos](/developers/docs/nodes-and-clients/#node-types), lo que le permite acceder a nodos completos y de archivo, además de a los métodos específicos del cliente en una API.
Es importante remarcar que los servicios de nodos no almacenan ni deben almacenar sus claves o información privadas.
@@ -45,15 +45,15 @@ Ejecutar sus propios nodos puede ser muy caro: desde el almacenamiento al ancho
Al utilizar un servicio de nodos, centraliza el aspecto infraestructural de su producto. Por este motivo, los proyectos que se basan en la descentralización como uno de sus puntos fuertes quizá prefieran utilizar nodos autoalojados que externalizarlos a un tercero.
-Obtenga más información aquí sobre [las ventajas de ejecutar su propio nodo](/developers/docs/nodes-and-clients/#benefits-to-you).
+[Más información sobre los beneficios de ejecutar su propio nodo](/developers/docs/nodes-and-clients/#benefits-to-you).
## Servicios de nodos populares {#popular-node-services}
A continuación se incluye una lista con algunos de los proveedores de nodos de Ethereum más populares. Si nota que falta alguno, puede añadirlo. Cada servicio de nodos ofrece diferentes beneficios y características, además de niveles gratuitos o de pago. Te recomendamos que investigues cuáles se adaptan mejor a tus necesidades antes de tomar una decisión.
- [**Alchemy**](https://alchemy.com/)
- - [Documentos](https://docs.alchemyapi.io/)
- - Características
+ - [Documentación](https://www.alchemy.com/docs/)
+ - Funciones
- El mayor nivel gratis con un cómputo de 300 millones de unidades al mes (~30M getLatestBlock requests)
- Compatibilidad multicadena para Polygon, Starknet, Optimism, Arbitrum
- Funciona con ~70 % de las mayores DApps de Ethereum y volumen de transacciones de DeFi
@@ -64,9 +64,22 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Acceso intregrado a un grifo de red de pruebas
- Comunidad constructora activa en Discord con 18.000 usuarios
+- [**Allnodes**](https://www.allnodes.com/)
+ - [Documentación](https://docs.allnodes.com/)
+ - Funciones
+ - Sin límites de tarifa con el token PublicNode creado en la página de la cartera de Allnodes.
+ - Puntos de conexión RPC gratuitos y centrados en la privacidad (más de 100 cadenas de bloques) en [PublicNode](https://www.publicnode.com)
+ - Nodos dedicados sin límites de velocidad para más de 90 cadenas de bloques
+ - Nodos de archivo exclusivos para más de 30 cadenas de bloques
+ - Disponible en 3 regiones (EE. UU., UE, Asia)
+ - Instantáneas para más de 100 cadenas de bloques en [PublicNode](https://www.publicnode.com/snapshots)
+ - Soporte técnico 24/7 con SLA de tiempo de actividad del 99,90%-99,98% (depende del plan).
+ - Precio por hora
+ - Pague con tarjeta de crédito, PayPal o Crypto
+
- [**All That Node**](https://allthatnode.com/)
- - [Documentos](https://docs.allthatnode.com/)
- - Características
+ - [Documentación](https://docs.allthatnode.com/)
+ - Funciones
- 50.000 solicitudes por día con nivel gratuito
- Soporte para más de 40 protocolos
- Compatibilidad con las API JSON-RPC (EVM, Tendermint), REST y Websocket
@@ -78,8 +91,8 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Actualizaciones automáticas
- [**Amazon Managed Blockchain**](https://aws.amazon.com/managed-blockchain/)
- - [Documentos](https://aws.amazon.com/managed-blockchain/resources/)
- - Características
+ - [Documentación](https://aws.amazon.com/managed-blockchain/resources/)
+ - Funciones
- Nodos de Ethereum completamente gestionados
- Disponible en seis regiones
- JSON-RPC sobre HTTP y WebSockets seguros
@@ -88,8 +101,8 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Go-ethereum y Lighthouse
- [**Ankr**](https://www.ankr.com/)
- - [Documentos](https://docs.ankr.com/)
- - Características
+ - [Documentación](https://docs.ankr.com/)
+ - Funciones
- Protocolo Ankr: acceso abierto a los puntos de conexión de la API RPC pública para más de ocho cadenas.
- Carga del saldo y supervisión del estado del nodo como pasarela rápida y segura al nodo disponible más cercano.
- Nivel prémium que habilita el punto de conexión WSS y límite de tasa ilimitado
@@ -101,8 +114,8 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Asistencia directa
- [**Blast**](https://blastapi.io/)
- - [Documentos](https://docs.blastapi.io/)
- - Características
+ - [Documentación](https://docs.blastapi.io/)
+ - Funciones
- Compatible con RPC y WSS
- Alojamiento de nodo multiregión
- Infraestructura descentralizada
@@ -118,25 +131,25 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- [**BlockDaemon**](https://blockdaemon.com/)
- [Documentación](https://ubiquity.docs.blockdaemon.com/)
- Beneficios
- - Tablero
+ - Panel de control
- Base por nodo
- Analíticas
- [**BlockPI**](https://blockpi.io/)
- - [Documentos](https://docs.blockpi.io/)
- - Características
- - Estructura de nodos distriduida & robusta
+ - [Documentación](https://docs.blockpi.io/)
+ - Funciones
+ - Estructura de nodos robusta y distribuida
- Puntos de conexión RPC, HTTPS y WSS
- Paquete de registro gratuito y abono mensual
- Método de trazabilidad + Soporte de datos de archivos
- Paquetes con una validez de hasta 90 días
- Plan personalizado y pago en función del uso
- - Pagar en cripto
- - Soporte directo & Soporte técnico
+ - Pago en criptomoneda
+ - Soporte directo y soporte técnico
- [**Chainbase**](https://www.chainbase.com/)
- - [Documentos](https://docs.chainbase.com)
- - Características
+ - [Documentación](https://docs.chainbase.com)
+ - Funciones
- Servicio de RPC de alta disponibilidad, velóz y escalable
- Compatibilidad con multicadena
- Tarifas gratuitas
@@ -144,8 +157,8 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Proporciona servicios de datos de la cadena de bloques más allá de RPC
- [**Chainstack**](https://chainstack.com/)
- - [Documentos](https://docs.chainstack.com/)
- - Características
+ - [Documentación](https://docs.chainstack.com/)
+ - Funciones
- Nodos compartidos libres
- Nodos de archivo compartidos
- Compatible con GraphQL
@@ -156,24 +169,24 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Precio por hora
- Soporte directo 24/7
-- [**DRPC**](https://drpc.org/)
- - [Documentos](https://docs.drpc.org/)
- - Características
- - Nodos RPC descentralizados
- - Proveedores de más de 15 nodos
- - Saldo del nodo
- - Unidades de cómputo ilimitadas al mes en la categoría gratuita
- - Verificación de datos
- - Terminales personalizados
- - Terminales HTTP y WSS
- - Claves ilimitadas (gratuitas y de pago)
- - Opciones de retroceso flexible
- - [Extremo público](https://eth.drpc.org)
- - Nodos de archivos compartidos libres
+- [**dRPC**](https://drpc.org/)
+ - [Documentación](https://drpc.org/docs)
+ - NodeCloud: Infraestructura RPC Plug-n-play a partir de 10 $ (USD): máxima velocidad, sin límites
+ - Características de NodeCloud:
+ - Soporte de API para 185 redes
+ - Piscina distribuida de más de 40 proveedores
+ - Cobertura global con nueve (9) geoclústeres
+ - Sistema de balanceo de carga impulsado por IA
+ - Precios de tarifa plana de pago por uso: sin subidas, sin vencimiento, sin permanencia
+ - Claves ilimitadas, ajustes granulares de claves, roles de equipo, protección de front-end
+ - Tarifa plana para métodos de 20 unidades de cómputo (UC) por método
+ - [Lista de cadenas de puntos de conexión públicos](https://drpc.org/chainlist)
+ - [Calculadora de precios](https://drpc.org/pricing#calculator)
+ - NodeCore: stack de código abierto para organizaciones que desean un control total
- [**GetBlock**](https://getblock.io/)
- - [Documentos](https://getblock.io/docs/get-started/authentication-with-api-key/)
- - Características
+ - [Documentación](https://getblock.io/docs/get-started/authentication-with-api-key/)
+ - Funciones
- Acceso a más de 40 nodos de la cadena de bloques
- 40.000 solicitudes gratuitas diarias
- Número ilimitado de claves de API
@@ -184,7 +197,7 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Soporte técnico
- [**InfStones**](https://infstones.com/)
- - Características
+ - Funciones
- Opción de nivel gratuito
- Escalabilidad en función del uso
- Analíticas
@@ -196,38 +209,38 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Acceso a más de 50 nodos de la cadena de bloques
- [**Infura**](https://infura.io/)
- - [Documentos](https://infura.io/docs)
- - Características
+ - [Documentación](https://infura.io/docs)
+ - Funciones
- Opción de nivel gratuito
- Escalabilidad en función del uso
- Datos de archivo de pago
- - Soporte directo
+ - Asistencia directa
- Panel de control
- [**Kaleido**](https://kaleido.io/)
- [Documentación](https://docs.kaleido.io/)
- - Características
+ - Funciones
- Categoría de inicio gratuita
- Despliegue de nodo de Ethereum en un clic
- - Clientes y algoritmos personalizables (Geth, Quorum & Besu || PoA, IBFT & Raft)
+ - Clientes y algoritmos personalizables (Geth, Quorum y Besu || PoA, IBFT y Raft)
- Más de 500 API administrativas y de servicio
- Interfaz RESTful para envío de transacciones de Ethereum (Apache Kafka respaldado)
- Flujos salientes para la entrega del evento (Apache Kafka respaldado)
- - Colección exhaustiva de servicios auxiliares y «fuera de cadena» (por ejemplo, transporte bilateral de mensajes cifrados)
+ - Amplia colección de servicios "fuera de la cadena" y auxiliares (p. ej., transporte de mensajería cifrada bilateral)
- Incorporación de la red sencilla con gobernanza y control de acceso basado en funciones
- Gestión sofisticada de usuarios tanto para administradores como para usuarios finales
- Infraestructura altamente escalable, resistente y de grado empresarial
- Gestión de claves privadas HSM en la nube
- Tethering en la red principal Ethereum
- ISO 27k y SOC 2, Certificaciones de tipo 2
- - Configuración dinámica de tiempo de ejecución (por ejemplo, añadiendo integraciones en la nube, alterando entradas de nodos, etc.)
+ - Configuración dinámica en tiempo de ejecución (p. ej., añadir integraciones en la nube, alterar las entradas de los nodos, etc.)
- Compatible con multinube, multiregión y modelos de despliegue híbrido
- Precios simples por hora basados en tasación SaaS
- Soporte 24/7 y SLA
- [**Lava Network**](https://www.lavanet.xyz/)
- - [Documentos](https://docs.lavanet.xyz/)
- - Características
+ - [Documentación](https://docs.lavanet.xyz/)
+ - Funciones
- Uso gratuito de la red de prueba
- Redundancia decentralizada para elevado tiempo de actividad
- Código abierto
@@ -238,8 +251,8 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Compatibilidad con multicadena
- [**Moralis**](https://moralis.io/)
- - [Documentos](https://docs.moralis.io/)
- - Características
+ - [Documentación](https://docs.moralis.io/)
+ - Funciones
- Nodos compartidos libres
- Nodos de archivos compartidos libres
- Enfoque centrado en la privacidad (sin políticas de registros)
@@ -248,19 +261,19 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Panel de control
- SDK exclusivo de Ethereum
- Terminales de conexión de API exclusivas
- - Soporte técnico directo
+ - Asistencia técnica directa
-- [**MegaNode de NodeReal**](https://nodereal.io/)
- - [Documentos](https://docs.nodereal.io/docs/introduction)
- - Características
+- [**NodeReal MegaNode**](https://nodereal.io/)
+ - [Documentación](https://docs.nodereal.io/docs/introduction)
+ - Funciones
- Servicios de API RPC de confianza, rápidos y escalables
- API mejorada para desarrolladores de Web3
- Compatibilidad con multicadena
- Comience gratis
- [**NOWNodes**](https://nownodes.io/)
- - [Documentos](https://documenter.getpostman.com/view/13630829/TVmFkLwy)
- - Características
+ - [Documentación](https://documenter.getpostman.com/view/13630829/TVmFkLwy)
+ - Funciones
- Acceso a más de 50 nodos de la cadena de bloques
- Clave API gratuita
- Exploradores de bloques
@@ -270,15 +283,15 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Copias de seguridad, archivos, documentos compartidos y nodos dedicados
- [**Pocket Network**](https://www.pokt.network/)
- - [Documentos](https://docs.pokt.network/home/)
- - Características
+ - [Documentación](https://docs.pokt.network/home/)
+ - Funciones
- Protocolo RPC descentralizado y mercado
- 1 millón de solicitudes por día en la categoría gratuita (por terminal, máx. 2)
- - [Terminales públicas](https://docs.pokt.network/developers/public-endpoints)
+ - [Puntos de conexión públicos](https://docs.pokt.network/developers/public-endpoints)
- Programa Pre-Stake+ (si necesita más de 1 millón de solicitudes por día)
- Compatibilidad con más de 15 cadenas de bloques
- Más de 6.400 nodos que generan Pocket Network (POKT) por alojar aplicaciones
- - Nodo de archivo, nodo de archivo con trazabilidad, & Compatibilidad con el nodo de la red de prueba
+ - Nodo de archivo, nodo de archivo con rastreo y soporte de nodo de red de prueba
- Diversidad de clientes para nodos de red principal de Ethereum
- Ningún punto único de error
- Sin tiempo de inactividad
@@ -288,15 +301,15 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Escale infinitamente el número de solicitides por día y nodos por hora en función del uso
- La opción más privada y resistente a la censura
- Soporte práctico para desarrolladores
- - [Portal Pocket](https://bit.ly/ETHorg_POKTportal): panel de control y analíticas
+ - Panel de control y análisis de [Pocket Portal](https://bit.ly/ETHorg_POKTportal)
- [**QuickNode**](https://www.quicknode.com)
- - [Documentos](https://www.quicknode.com/docs/)
- - Características
- - Soporte técnico 24/7 & desarrollo de la comunidad de Discord
+ - [Documentación](https://www.quicknode.com/docs/)
+ - Funciones
+ - Soporte técnico 24/7 y comunidad de desarrolladores en Discord
- Geoequilibrado, multinube/metal, red de baja latencia
- Compatibilidad con multicadena (Optism, Arbitrum, Poligon + otros 11)
- - Capas intermedias para velocidad & estabilidad (enrutamiento de reuniones, caché, indexación)
+ - Capas intermedias para mayor velocidad y estabilidad (enrutamiento de llamadas, caché, indexación)
- Supervisión de contratos inteligentes a través de Webhooks
- Panel de control intuitivo, suite de analíticas, compositor de RPC
- Funciones de seguridad avanzadas (JWT, ocultación, elaboración de lista blanca)
@@ -305,22 +318,22 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Adecuado para desarrolladores y empresas
- [**Rivet**](https://rivet.cloud/)
- - [Documentos](https://rivet.readthedocs.io/en/latest/)
- - Características
+ - [Documentación](https://rivet.readthedocs.io/en/latest/)
+ - Funciones
- Opción de nivel gratuito
- Escalabilidad en función del uso
- [**SenseiNode**](https://senseinode.com)
- - [Documentos](https://docs.senseinode.com/)
- - Características
+ - [Documentación](https://docs.senseinode.com/)
+ - Funciones
- Nodos dedicados y compartidos
- Panel de control
- Alojamiento fuera de AWS en múltiples proveedores de alojamiento por diferentes ubicaciones en América Latina
- Clientes Prism y Lighthouse
- [**SettleMint**](https://console.settlemint.com/)
- - [Documentos](https://docs.settlemint.com/)
- - Características
+ - [Documentación](https://docs.settlemint.com/)
+ - Funciones
- Prueba gratuita
- Escalabilidad en función del uso
- Compatible con GraphQL
@@ -332,9 +345,9 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Precio por hora
- Asistencia directa
-- [**Antiguamente**](https://tenderly.co/web3-gateway)
- - [Documentos](https://docs.tenderly.co/web3-gateway/web3-gateway)
- - Características
+- [**Tenderly**](https://tenderly.co/web3-gateway)
+ - [Documentación](https://docs.tenderly.co/web3-gateway/web3-gateway)
+ - Funciones
- Categoría gratuita que incluye 25 millones de unidades Tenderly por mes
- Acceso libre a datos históricos
- Carga de flujos de trabajo con mucho texto de lectura hasta 8 veces más rápidas
@@ -347,10 +360,10 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Cómoda y sencilla gestion de claves de acceso
- Soporte de ingeniería dedicado por chat, correo electrónico y Discord
-- [**Vista de token**](https://services.tokenview.io/)
- - [Documentos](https://services.tokenview.io/docs?type=nodeService)
- - Características
- - Soporte técnico 24/7 & comunidad de desarrolladores en Telegram
+- [**Tokenview**](https://services.tokenview.io/)
+ - [Documentación](https://services.tokenview.io/docs?type=nodeService)
+ - Funciones
+ - Soporte técnico 24/7 y comunidad de desarrolladores en Telegram
- Compatibilidad con multicadena (Bitcoin, Ethereum, Tron, BNB Smart Chain, Ethereum Classic)
- Tanto los terminales RPC como WSS están abiertos al uso
- Acceso ilimitado para archivar datos API
@@ -360,8 +373,8 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Soporte externo para requisitos de comportamiento adicionales
- [**Watchdata**](https://watchdata.io/)
- - [Documentos](https://docs.watchdata.io/)
- - Características
+ - [Documentación](https://docs.watchdata.io/)
+ - Funciones
- Fiabilidad de datos
- Conexión ininterrumpida sin tiempos de inactividad
- Automatización de procesos
@@ -372,8 +385,8 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- Velocidades de procesamiento altas
- [**ZMOK**](https://zmok.io/)
- - [Documentos](https://docs.zmok.io/)
- - Características
+ - [Documentación](https://docs.zmok.io/)
+ - Funciones
- Se ejecuta como un servicio
- Transacciones globales como zona de espera con métodos de búsqueda/filtrado
- Tarifa ilimitada de transacciones y gas infinito por enviar transacciones
@@ -381,26 +394,25 @@ A continuación se incluye una lista con algunos de los proveedores de nodos de
- El mejor precio por garantía de llamada API
- [**Zeeve**](https://www.zeeve.io/)
- - [Documentos](https://www.zeeve.io/docs/)
- - Características
+ - [Documentación](https://www.zeeve.io/docs/)
+ - Funciones
- Plataforma de automatización sin código de grado empresarial que proporciona implementación, supervisión y gestión de nodos y redes de la cadena de bloques.
- - Compatibilidad con más de 30 protocolos & integraciones, entre otras funciones
+ - Más de 30 protocolos e integraciones compatibles, y se siguen añadiendo más
- Servicios de infraestructura Web3 de valor añadido como el almacenamiento descentralizado, la identidad descentralizada y API de datos de la cadena de bloques del libro mayor para casos de uso en el mundo real
- El soporte 24/7 y el seguimiento proactivo garantizan el buen estado de los nodos todo el tiempo.
- Los terminales RPC ofrecen acceso autenticado a las API, gestión sin complicaciones con panel de control intuitivo y análisis
- Proporciona tanto una nube gestionada, como opciones de nuebe propias de libre elección y es compatible con los principales proveedores de nube, como AWS, Azure, Google Cloud, Digital Ocean y en las instalaciones.
- Utilizamos el enrutamiento inteligente para elegir siempre el nodo más cercano a su usuario
-
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
- [Lista de servicios de nodos de Ethereum](https://ethereumnodes.com/)
## Temas relacionados {#related-topics}
-- [ Nodos y clientes](/developers/docs/nodes-and-clients/)
+- [Nodos y clientes](/developers/docs/nodes-and-clients/)
## Tutoriales relacionados {#related-tutorials}
-- [Primeros pasos con el desarrollo de Ethereum usando Alchemy](/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/)
-- [Guía para enviar transacciones usando web3 y Alchemy](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)
+- [Introducción al desarrollo en Ethereum con Alchemy](/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/)
+- [Guía para enviar transacciones con web3 y Alchemy](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)
From 9ed2dc6cdd8b1f853893599d96d030e4767c8535 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:33 -0300
Subject: [PATCH 144/589] update(i18n):
public/content/translations/es/developers/docs/scaling/zk-rollups/index.md
---
.../docs/scaling/zk-rollups/index.md | 144 +++++++++---------
1 file changed, 74 insertions(+), 70 deletions(-)
diff --git a/public/content/translations/es/developers/docs/scaling/zk-rollups/index.md b/public/content/translations/es/developers/docs/scaling/zk-rollups/index.md
index ded2f19fb86..5f060174538 100644
--- a/public/content/translations/es/developers/docs/scaling/zk-rollups/index.md
+++ b/public/content/translations/es/developers/docs/scaling/zk-rollups/index.md
@@ -1,44 +1,44 @@
---
-title: Zero-knowledge Rollups
-description: 'Introducción a las pruebas de conocimiento cero: una solución de escalabilidad que utiliza la comunidad de Ethereum.'
+title: Agrupaciones de conocimiento cero
+description: "Introducción a las pruebas de conocimiento cero: una solución de escalabilidad que utiliza la comunidad de Ethereum."
lang: es
---
-Las pruebas de conocimiento cero (ZK-rollups) son soluciones [soluciones de escalabilidad](/developers/docs/scaling/) de segunda capa que incrementan el rendimiento de la red principal de Ethereum, gracias a que mueven la gran mayoría del trabajo computacional y el almacenamiento fuera de la cadena principal. Los ZK-rollups pueden procesar miles de transacciones en un lote y luego pasar solo algunos de los datos mínimos y necesarios hacia la red principal. Estos datos en resúmen, definen los cambios que deben hacerse en Ethereum, y realizar pruebas criptográficas de que esos cambios y resultados finales son correctos.
+Los rollups de conocimiento cero (ZK-rollups) son [soluciones de escalabilidad](/developers/docs/scaling/) de capa 2 que aumentan el rendimiento en la red principal de Ethereum al mover la computación y el almacenamiento del estado fuera de la cadena. Los ZK-rollups pueden procesar miles de transacciones en un lote y luego pasar solo algunos de los datos mínimos y necesarios hacia la red principal. Estos datos en resúmen, definen los cambios que deben hacerse en Ethereum, y realizar pruebas criptográficas de que esos cambios y resultados finales son correctos.
## Requisitos previos {#prerequisites}
-Debe haber leído y comprendido el tema [Escalamiento de Ethereum](/developers/docs/scaling/) y [capa 2](/layer-2).
+Debería haber leído y entendido nuestra página sobre el [escalado de Ethereum](/developers/docs/scaling/) y la [capa 2](/layer-2).
## ¿Qué son las pruebas de conocimiento cero (ZK)? {#what-are-zk-rollups}
-**Pruebas de conocimiento cero (ZK-rollups)** son paquetes acumulativos que «enrollan» las transacciones para que se ejecuten fuera de la cadena principal. La computación fuera de la cadena principal reduce la cantidad de datos que tienen que procesarse en la cadena de bloques. Los operadores de ZK-rollups presentan un resumen de los cambios necesarios para representar todas las transacciones en un lote en lugar de enviar cada transacción individualmente. También llevan a cabo [pruebas de su validez](/glossary/#validity-proof) para demostrar la exactitud de sus cambios y resultados finales.
+**Los rollups de conocimiento cero (ZK-rollups)** agrupan (o «enrollan») las transacciones en lotes que se ejecutan fuera de la cadena. La computación fuera de la cadena reduce la cantidad de datos que se deben registrar en la cadena de bloques. Los operadores de ZK-rollups presentan un resumen de los cambios necesarios para representar todas las transacciones en un lote en lugar de enviar cada transacción individualmente. También producen [pruebas de validez](/glossary/#validity-proof) para demostrar la corrección de sus cambios.
-El estado de los ZK-rollups se mantendrá en un contrato inteligente desplegado en la red Ethereum. Para actualizar este estado, los nodos desplegables de ZK-rollup deberán presentar una prueba de su validez para la verificación. Como se ha mencionado, la prueba de validez es una garantía criptográfica de que el cambio de estado propuesto por el rollup es realmente el resultado verdadero de la ejecución de las transacciones. Esto significa que los ZK-rollups solo necesitan proporcionar pruebas de validez para llevar a cabo y completar las transacciones en Ethereum, en lugar de publicar todo el historial en la cadena principal como los [rollups optimistas](/developers/docs/scaling/optimistic-rollups/).
+El estado de los ZK-rollups se mantendrá en un contrato inteligente desplegado en la red Ethereum. Para actualizar este estado, los nodos desplegables de ZK-rollup deberán presentar una prueba de su validez para la verificación. Como se ha mencionado, la prueba de validez es una garantía criptográfica de que el cambio de estado propuesto por el rollup es realmente el resultado verdadero de la ejecución de las transacciones. Esto significa que los ZK-rollups solo necesitan proporcionar pruebas de validez para finalizar las transacciones en Ethereum, en lugar de publicar todos los datos de la transacción en la cadena como los [rollups optimistas](/developers/docs/scaling/optimistic-rollups/).
-La ejecucíon tardará poco tiempo, ya que cuando se mueven los activos de un ZK-rollup a Ethereum, las transacciones se ejecutan una vez validada y verificada su validez. Por el contrario, retirar fondos de los Rollups Optimistas está sujeto a un retraso para permitir a cualquiera desafiar la transacción a [prueba de fraude](/glossary/#fraud-proof).
+La ejecucíon tardará poco tiempo, ya que cuando se mueven los activos de un ZK-rollup a Ethereum, las transacciones se ejecutan una vez validada y verificada su validez. Por el contrario, la retirada de fondos de los rollups optimistas está sujeta a una demora para permitir que cualquiera pueda impugnar la transacción de salida con una [prueba de fraude](/glossary/#fraud-proof).
-Los ZK-rollups escriben transacciones en Ethereum como `calldata` (o datos de llamada). En los `calldata` se almacenan los datos incluidos en las llamadas externas a funciones del contrato inteligente. La información en `calldata` se publica en la cadena de bloques, permitiendo que cualquiera reconstruya el estado del rollup de forma independiente. Los ZK-rollup utilizan técnicas de compresión para reducir los datos de las transacciones: por ejemplo, las cuentas están representadas por un índice en lugar de una dirección, que ahorra unos 28 bytes en datos. La publicación de datos dentro de la cadena tiene un coste significativo para los rollups, por lo que la compresión de datos puede reducir las tarifas para los usuarios.
+Los ZK-rollups escriben las transacciones en Ethereum como `calldata`. `calldata` es donde se almacenan los datos que se incluyen en las llamadas externas a las funciones de los contratos inteligentes. La información en `calldata` se publica en la cadena de bloques, lo que permite que cualquiera pueda reconstruir el estado del rollup de forma independiente. Los ZK-rollup utilizan técnicas de compresión para reducir los datos de las transacciones: por ejemplo, las cuentas están representadas por un índice en lugar de una dirección, que ahorra unos 28 bytes en datos. La publicación de datos dentro de la cadena tiene un coste significativo para los rollups, por lo que la compresión de datos puede reducir las tarifas para los usuarios.
## ¿Cómo interactúan los ZK-rollups con Ethereum? {#zk-rollups-and-ethereum}
-Los ZK-rollup tienen un protocolo que se encuentra fuera de la cadena y que funciona apoyándose en la cadena de bloque de Ethereum, la cual ese gestiona mdiante contratos inteligentes dentro de la misma cadena de bloque. Los ZK-rollups ejecutan transacciones fuera de la red principal, aunque realizan lotes de transacciones periódicamente fuera de la cadena a un contrato de rollup dentro de la cadena. Este registro de transacciones es inmutable, al igual que ocurre en la cadena de bloque de Ethereum y forma la cadena de ZK-rollups.
+Una cadena de ZK-rollup es un protocolo fuera de la cadena que opera sobre la cadena de bloques de Ethereum y se gestiona mediante contratos inteligentes dentro de la misma. Los ZK-rollups ejecutan transacciones fuera de la red principal, pero periódicamente registran lotes de transacciones fuera de la cadena a un contrato rollup dentro de la cadena de bloques. Este registro de transacciones es inmutable, al igual que ocurre en la cadena de bloque de Ethereum y forma la cadena de ZK-rollups.
La arquitectura central de los ZK-rollups está compuesta por los siguientes componentes:
-1. **Contratos en cadena**: Tal y como se ha mencionado, el protocolo ZK-rollup está controlado por contratos inteligentes que se ejecutan en Ethereum. Esto incluye el contrato principal que almacena los bloques acumulables, realiza un seguimiento de los depósitos y supervisa las actualizaciones del estado. Otro contrato en cadena (el contrato de verificación) verifica las pruebas de conocimiento cero presentadas por los productores en bloque. Por lo tanto, Ethereum sirve como capa base o «capa 1» para el ZK-rollup.
+1. **Contratos en cadena**: como se ha mencionado, el protocolo del ZK-rollup se controla mediante contratos inteligentes que se ejecutan en Ethereum. Esto incluye el contrato principal que almacena los bloques acumulables, realiza un seguimiento de los depósitos y supervisa las actualizaciones del estado. Otro contrato en cadena (el contrato verificador) verifica las pruebas de conocimiento cero enviadas por los productores de bloques. Por lo tanto, Ethereum sirve como capa base o «capa 1» para el ZK-rollup.
-2. **Máquina virtual fuera de la cadena (VM)**: Mientras que el protocolo ZK-rollup vive en Ethereum, la ejecución de transacciones y el almacenamiento de estado ocurren en una máquina virtual separada independiente de la [EVM](/developers/docs/evm/). Esta máquina virtual fuera de la cadena es el entorno de ejecución para las transacciones en el ZK-rollup y sirve de capa secundaria o «capa 2» para el protocolo ZK-rollup. Las pruebas de validez verificadas en la red principal de Ethereum garantizan la corrección de las transiciones de estado en la máquina virtual fuera de la cadena.
+2. **Máquina virtual fuera de la cadena (VM)**: aunque el protocolo ZK-rollup reside en Ethereum, la ejecución de la transacción y el almacenamiento del estado se producen en una máquina virtual independiente de la [EVM](/developers/docs/evm/). Esta VM fuera de la cadena es el entorno de ejecución para transacciones en el ZK-rollup y sirve como capa secundaria (o capa 2) para el protocolo ZK-rollup. Las pruebas de validez verificadas en la red principal de Ethereum garantizan la corrección de las transiciones de estado en la VM fuera de la cadena.
-Los ZK-rollups son «soluciones híbridas de escalabilidad», protocolos fuera de la cadena que operan de forma independiente pero derivan seguridad de Ethereum. Específicamente, la red Ethereum impone la validez de las actualizaciones de estado en el ZK-rollup y garantiza la disponibilidad de datos detrás de cada actualización del estado del rollup. Como resultado, los ZK-rollups se consideran más seguros que puras soluciones de escalabilidad fuera de la cadena, como [cadenas laterales](/developers/docs/scaling/sidechains/), que son responsables de sus propiedades de seguridad, o [validiums](/developers/docs/scaling/validium/), que también verifican las transacciones en Ethereum con pruebas de validez, pero almacenan los datos de las transacciones en otro.
+ZK-rollups son «soluciones de escalabilidad híbrida»: protocolos fuera de la cadena que operan de forma independiente, pero aplican la seguridad de Ethereum. Específicamente, la red Ethereum impone la validez de las actualizaciones de estado en el ZK-rollup y garantiza la disponibilidad de datos detrás de cada actualización del estado del rollup. Como resultado, los ZK-rollups son considerablemente más seguros que las soluciones de escalabilidad puramente fuera de la cadena, como las [cadenas laterales](/developers/docs/scaling/sidechains/), que son responsables de sus propias propiedades de seguridad, o los [validiums](/developers/docs/scaling/validium/), que también verifican las transacciones en Ethereum con pruebas de validez, pero almacenan los datos de las transacciones en otro lugar.
Los ZK-rollups se basan en el protocolo principal de Ethereum para lo siguiente:
-### Disponibilidad de datos {#data-availability}
+### Disponibilidad de los datos {#data-availability}
-Los ZK-rollups publican datos de estado para cada transacción procesada fuera de la cadena a Ethereum. Con estos datos, es posible que las personas o las empresas reproduzcan el estado del rollup y validen la cadena por sí mismas. Ethereum pone estos datos a disposición de todos los participantes de la red como `calldata`.
+ZK-rollups publica datos de estado para cada transacción procesada fuera de la cadena a Ethereum. Con estos datos, es posible que las personas o las empresas reproduzcan el estado del rollup y validen la cadena por sí mismas. Ethereum pone estos datos a disposición de todos los participantes de la red como `calldata`.
-Los ZK-rollups no necesitan publicar muchos datos de transacciones en cadena, porque las pruebas de validez ya verifican la autenticidad de las transiciones de estado. Sin embargo, el almacenamiento de datos en cadena sigue siendo importante, porque permite una verificación independiente y sin autorización del estado de la cadena L2, lo que a su vez permite a cualquier persona enviar lotes de transacciones, evitando que operadores maliciosos censuren o congelen la cadena.
+ZK-rollups no necesitan publicar muchos datos de transacciones en cadena, porque las pruebas de validez ya verifican la autenticidad de las transiciones de estado. Sin embargo, el almacenamiento de datos en cadena sigue siendo importante porque permite la verificación independiente sin permiso del estado de la cadena L2, lo que a su vez permite a cualquiera enviar lotes de transacciones, evitando que los operadores maliciosos censuren o congelen la cadena.
Se requiere en cadena para que los usuarios interactúen con el rollup. Sin acceso a los datos de estado, los usuarios no pueden consultar el saldo de su cuenta o iniciar transacciones (por ejemplo, retiradas) que se basen en la información sobre el estado.
@@ -58,19 +58,19 @@ Como medida de seguridad, los ZK-rollups permiten a los usuarios enviar transacc
Los usuarios del ZK-rollup firman las transacciones y las envían a los operadores de L2 para su procesamiento e inclusión en el siguiente lote. En algunos casos, el operador es una entidad centralizada, llamada secuenciador, que ejecuta transacciones, las añade en lotes y las envía a L1. El secuenciador de este sistema es la única entidad a la que se le permite producir bloques L2 y añadir transacciones acumuladas al contrato de ZK-rollup.
-Otros ZK-rollups pueden rotar el rol de operador utilizando un conjunto de validadores [prueba de participación](/developers/docs/consensus-mechanisms/pos/). Los posibles operadores depositan fondos en el contrato de rollup. El tamaño de cada participación influye en las posibilidades que el participante tiene de ser seleccionado para producir el próximo lote de rollup. La participación del operador se puede reducir si actúa de forma maliciosa, lo que los incentiva a publicar bloques válidos.
+Otros ZK-rollups pueden rotar el rol de operador utilizando un conjunto de validadores de [prueba de participación](/developers/docs/consensus-mechanisms/pos/). Los posibles operadores depositan fondos en el contrato de rollup. El tamaño de cada participación influye en las posibilidades que el participante tiene de ser seleccionado para producir el próximo lote de rollup. La participación del operador se puede reducir si actúa de forma maliciosa, lo que los incentiva a publicar bloques válidos.
-#### Cómo los ZK-rollups publican datos de transacciones en Ethereum {#how-zk-rollups-publish-transaction-data-on-ethereum}
+#### Cómo publican los ZK-rollups los datos de las transacciones en Ethereum {#how-zk-rollups-publish-transaction-data-on-ethereum}
-Tal y como se ha explicado, los datos de las transacciones se publican en Ethereum como `calldata` (o datos de llamada). `Calldata` es un área de datos en un contrato inteligente que se utiliza para pasar argumentos a una función y se comporta de manera similar a una [memoria](/developers/docs/smart-contracts/anatomy/#memory). Si bien los `calldata` no se almacenan como parte del estado de Ethereum, persisten en la cadena como parte de los [registros de historial de la cadena Ethereum](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs). `Calldata` no afecta al estado de Ethereum, por lo que es una forma barata de almacenar datos en cadena.
+Como se ha explicado, los datos de las transacciones se publican en Ethereum como `calldata`. `calldata` es un área de datos en un contrato inteligente que se utiliza para pasar argumentos a una función y se comporta de forma similar a la [memoria](/developers/docs/smart-contracts/anatomy/#memory). Aunque `calldata` no se almacena como parte del estado de Ethereum, persiste en la cadena como parte de los [registros de historial](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs) de la cadena de Ethereum. `calldata` no afecta al estado de Ethereum, lo que lo convierte en una forma barata de almacenar datos en la cadena.
-La palabra clave `calldata` a menudo identifica el método de contrato inteligente que llama una transacción y contiene entradas para el método en forma de una secuencia arbitraria de bytes. Los ZK-rollups utilizan los `calldata` para publicar datos de transacciones comprimidas en cadena; el operador rollup simplemente añade un nuevo lote llamando a la función requerida en el contrato rollup y pasa los datos comprimidos como argumentos de función. Esto ayuda a reducir los costes de los usuarios, ya que gran parte de las tarifas de los rollups se destinan al almacenamiento de datos de transacciones en la cadena.
+La palabra clave `calldata` a menudo identifica el método del contrato inteligente al que llama una transacción y contiene las entradas para el método en forma de una secuencia arbitraria de bytes. Los ZK-rollups utilizan `calldata` para publicar datos de transacciones comprimidos en la cadena; el operador del rollup simplemente añade un nuevo lote llamando a la función requerida en el contrato del rollup y pasa los datos comprimidos como argumentos de la función. Esto ayuda a reducir los costes de los usuarios, ya que gran parte de las tarifas de los rollups se destinan al almacenamiento de datos de transacciones en la cadena.
### Compromisos de estado {#state-commitments}
-El estado del ZK-rollup, que incluye cuentas y saldos L2, se representa como un [árbol de Merkle](/whitepaper/#merkle-trees). Un hash criptográfico de la raíz del árbol Merkle (raíz Merkle) se almacena en el contrato en cadena, lo que permite que el protocolo rollup realice un seguimiento de los cambios en el estado del ZK rollup.
+El estado del ZK-rollup, que incluye cuentas y saldos de la capa 2, se representa como un [árbol de Merkle](/whitepaper/#merkle-trees). Un hash criptográfico de la raíz del árbol Merkle (raíz Merkle) se almacena en el contrato en la cadena, lo que permite que el protocolo rollup rastree los cambios en el estado del ZK-rollup.
-Las transacciones del rollup pasan a un nuevo estado después de la ejecución de un nuevo conjunto de transacciones. El operador que inició la transición de estado debe calcular una nueva raíz de estado y someterse al contrato en cadena. Si el contrato de verificador autentica la prueba de validez asociada con el lote, la nueva raíz de Merkle se convierte en la raíz de estado canónico del ZK-rollup.
+Las transacciones del rollup pasan a un nuevo estado después de la ejecución de un nuevo conjunto de transacciones. El operador que inició la transición de estado debe calcular una nueva raíz de estado y someterse al contrato en la cadena. Si el contrato de verificador autentica la prueba de validez asociada con el lote, la nueva raíz de Merkle se convierte en la raíz de estado canónico del ZK-rollup.
Además de calcular las raíces de estado, el operador ZK-rollup también crea una raíz de lote, la raíz de un árbol de Merkle que comprende todas las transacciones en un lote. Cuando se envía un nuevo lote, el contrato acumulable almacena la raíz del lote, lo que permite a los usuarios probar que una transacción (por ejemplo, una solicitud de retirada) se ha incluido en el lote. Los usuarios tendrán que proporcionar los detalles de la transacción, la raíz del lote y una [prueba de Merkle](/developers/tutorials/merkle-proofs-for-offline-data-integrity/) que muestre la ruta de inclusión.
@@ -80,27 +80,27 @@ La nueva raíz de estado que el operador de ZK-rollup envía al contrato L1 es e
Pero el contrato de rollup no aceptará automáticamente el compromiso de estado propuesto hasta que el operador demuestre que la nueva raíz de Merkle es resultante de las actualizaciones correctas del estado del rollup. El operador de ZK-rollup hace esto produciendo una prueba de validez, un compromiso criptográfico sucinto que verifica la exactitud de las transacciones por lotes.
-Las pruebas de validez permiten a las partes probar la exactitud de una declaración sin revelar la declaración en sí, por lo tanto, también se llaman pruebas de conocimiento cero. Los ZK-rollups utilizan pruebas de validez para confirmar la corrección de las transiciones de estado fuera de la cadena sin tener que volver a ejecutar transacciones en Ethereum. Estas pruebas pueden venir en forma de un [ZK-SNARK](https://arxiv.org/abs/2202.06877) (Argumento de conocimiento no interactivo sucinto de conocimiento cero) o [ZK-STARK](https://eprint.iacr.org/2018/046) (argumento de conocimiento transparente escalable de conocimiento cero).
+Las pruebas de validez permiten a las partes probar la exactitud de una declaración sin revelar la declaración en sí, por lo tanto, también se llaman pruebas de conocimiento cero. Los ZK-rollups utilizan pruebas de validez para confirmar la corrección de las transiciones de estado fuera de la cadena sin tener que volver a ejecutar transacciones en Ethereum. Estas pruebas pueden presentarse en forma de un [ZK-SNARK](https://arxiv.org/abs/2202.06877) (argumento de conocimiento sucinto no interactivo de conocimiento cero) o un [ZK-STARK](https://eprint.iacr.org/2018/046) (argumento de conocimiento escalable y transparente de conocimiento cero).
-Tanto los SNARK como los STARK ayudan a dar fe de la integridad de la computación fuera de la cadena en los ZK-rollups, aunque cada tipo de prueba tiene sus propias características.
+Tanto los SNARK como los STARK ayudan a dar fe de la integridad de la computación fuera de la cadena en los ZK-rollups, aunque cada tipo de prueba tiene funcionalidades particulares.
-**ZK-SNARK**
+**ZK-SNARKs**
Para que el protocolo ZK-SNARK funcione, es necesario crear una cadena de referencia común (CRS): el CRS proporciona parámetros públicos para probar y verificar las pruebas de validez. La seguridad del sistema de pruebas depende de la configuración del CRS; si la información utilizada para crear parámetros públicos cae en posesión de operadores maliciosos, pueden ser capaces de generar pruebas de falsa validez.
-Algunos ZK-rollups intentan resolver este problema mediante el uso de una [ceremonia de cálculo multipartidista (MPC)](https://zkproof.org/2021/06/30/setup-ceremonies/amp/), que involucra a personas de confianza para generar parámetros públicos para el circuito ZK-SNARK. Cada parte contribuye con cierta aleatoriedad (conocido como «residuo tóxico») a la construcción del CRS, que deben destruir inmediatamente.
+Algunos ZK-rollups intentan resolver este problema utilizando una [ceremonia de computación multipartita (MPC)](https://zkproof.org/2021/06/30/setup-ceremonies/amp/), en la que participan personas de confianza, para generar parámetros públicos para el circuito ZK-SNARK. Cada parte contribuye con cierta aleatoriedad (conocido como «residuo tóxico») a la construcción del CRS, que deben destruir inmediatamente.
Las configuraciones de confianza se utilizan porque aumentan la seguridad de la configuración de CRS. Mientras un participante honesto destruya su aportación, la seguridad del sistema ZK-SNARK está garantizada. Aún así, este enfoque requiere confiar en los involucrados para eliminar la aleatoriedad de su muestra y no socavar las garantías de seguridad del sistema.
Dejando a un lado las suposiciones de confianza, los ZK-SNARK son populares por sus pequeños tamaños de prueba y su verificación en tiempo constante. Como la verificación de pruebas en L1 constituye el mayor coste a la hora de operar un ZK-rollup, los L2 utilizan ZK-SNARKs para generar pruebas que se pueden verificar de forma rápida y económica en la red principal.
-**ZK-STARK**
+**ZK-STARKs**
-Al igual que los ZK-SNARK, los ZK-STARK demuestran la validez del cálculo fuera de la cadena sin revelar las entradas. Sin embargo, los ZK-STARK se consideran una mejora de los ZK-SNARK debido a su escalabilidad y transparencia.
+Al igual que los ZK-SNARK, los ZK-STARK demuestran la validez de los cálculos fuera de la cadena sin revelar las entradas de datos. Sin embargo, los ZK-STARK se consideran una mejora de los ZK-SNARK debido a su escalabilidad y transparencia.
Los ZK-STARK son «transparentes», ya que pueden funcionar sin la configuración de confianza de una cadena de referencia común (CRS). En su lugar, los ZK-STARK se basan en la aleatoriedad verificable públicamente para establecer parámetros para generar y verificar pruebas.
-Los ZK-STARK también proporcionan más escalabilidad, ya que el tiempo necesario para probar y verificar las pruebas de validez aumenta _cuasilíneamente_ en relación con la complejidad del cálculo subyacente. Con ZK-SNARK, los tiempos de prueba y verificación escalan _linealmente_ en relación con el tamaño del cálculo subyacente. Esto significa que los ZK-STARK requieren menos tiempo que los ZK-SNARK para probar y verificar cuando se trata de grandes conjuntos de datos, lo que los hace útiles para aplicaciones de gran volumen.
+Los ZK-STARKs también proporcionan más escalabilidad porque el tiempo necesario para probar y verificar las pruebas de validez aumenta de forma _cuasilineal_ en relación con la complejidad de la computación subyacente. Con los ZK-SNARKs, los tiempos de prueba y verificación escalan de forma _lineal_ en relación con el tamaño de la computación subyacente. Esto significa que los ZK-STARK requieren menos tiempo que los ZK-SNARK para probar y verificar cuando se trata de grandes conjuntos de datos, lo que los hace útiles para aplicaciones de gran volumen.
Los ZK-STARK también son seguros contra los ordenadores cuánticos, mientras que se cree que la criptografía de curva elíptica (ECC) utilizada en los ZK-SNARK es susceptible a los ataques de computación cuántica. La desventaja de los ZK-STARK es que producen unos tamaños de prueba más grandes que son más caros de verificar en Ethereum.
@@ -136,13 +136,13 @@ El circuito de prueba ZK se repite en todo el lote de transacciones, verificando
Después de que el circuito de prueba verifique la exactitud de las actualizaciones de estado, el operador L2 presenta la prueba de validez calculada al contrato de verificación en L1. El circuito de verificación del contrato verifica la validez de la prueba y también comprueba las entradas públicas que forman parte de la prueba:
-- **Raíz de preestado**: La antigua raíz de estado del ZK-rollup (es decir, antes de que se ejecutaran las transacciones por lotes), que refleja el último estado válido conocido de la cadena L2.
+- **Raíz del estado previo**: la raíz del estado anterior del ZK-rollup (es decir, antes de que se ejecutaran las transacciones por lotes), que refleja el último estado válido conocido de la cadena de capa 2.
-- **Raíz de posestado**: La nueva raíz de estado de ZK-rollup (es decir, después de la ejecución de transacciones por lotes), que refleja el estado más reciente de la cadena L2. La raíz posterior al estado es la raíz final derivada después de aplicar actualizaciones de estado en el circuito de prueba.
+- **Raíz del estado posterior**: la nueva raíz del estado del ZK-rollup (es decir, después de la ejecución de las transacciones por lotes), que refleja el estado más reciente de la cadena de capa 2. La raíz posterior al estado es la raíz final derivada después de aplicar actualizaciones de estado en el circuito de prueba.
-- **Raíz del lote**: La raíz de Merkle del lote, derivada de _merklizing_ transacciones en el lote y el hash de la raíz del árbol.
+- **Raíz de lote**: la raíz de Merkle del lote, que se obtiene _merklizando_ las transacciones del lote y aplicando una función hash a la raíz del árbol.
-- **Entradas de transacción**: Datos asociados con las transacciones ejecutadas como parte del lote enviado.
+- **Entradas de la transacción**: datos asociados a las transacciones ejecutadas como parte del lote enviado.
Si la prueba satisface el circuito (es decir, es válida), significa que existe una secuencia de transacciones válidas que hacen la transición del rollup del estado anterior (criptada criptográficamente por la raíz preestado) a un nuevo estado (criptada criptográficamente por la raíz posterior al estado). Si la raíz de preestado coincide con la raíz almacenada en el contrato de rollup, y la prueba es válida, el contrato de rollup toma la raíz de posestado de la prueba y actualiza su árbol de estado para reflejar el estado cambiado del rollup.
@@ -164,11 +164,11 @@ Una retirada de un ZK-rollup a L1 es sencillo. El usuario inicia la transacción
El contrato rollup hace un hash de los datos de la transacción, comprueba si la raíz del lote existe y utiliza la prueba de Merkle para comprobar si el hash de la transacción es parte de la raíz del lote. Después, el contrato ejecuta la transacción de salida y envía los fondos a la dirección elegida por el usuario en L1.
-## ZK-rollups y compatibilidad con EVM {#zk-rollups-and-evm-compatibility}
+## Los ZK-rollups y la compatibilidad con la EVM {#zk-rollups-and-evm-compatibility}
-A diferencia de los rollups optimistas, los ZK-rollups no son fácilmente compatibles con la [Máquina Virtual Ethereum (EVM)](/developers/docs/evm/). Es más difícil demostrar el cálculo EVM de propósito general en circuitos y requiere más recursos que demostrar cálculos sencillos (como la transferencia de tókenes descrita anteriormente).
+A diferencia de los rollups optimistas, los ZK-rollups no son compatibles de forma nativa con la [Máquina virtual de Ethereum (EVM)](/developers/docs/evm/). Es más difícil demostrar el cálculo EVM de propósito general en circuitos y requiere más recursos que demostrar cálculos sencillos (como la transferencia de tókenes descrita anteriormente).
-Sin embargo, [los avances en la tecnología de conocimiento cero](https://hackmd.io/@yezhang/S1_KMMbGt#Why-possible-now) están desperdiciando un renovado interés en envolver el cálculo EVM en pruebas de conocimiento cero. Estos esfuerzos están orientados a crear una implementación de EVM de conocimiento cero (zkEVM) que pueda verificar de manera eficiente la corrección de la ejecución del programa. Un zkEVM recrea los códigos de operación EVM existentes para la prueba/verificación en los circuitos, lo que permite ejecutar contratos inteligentes.
+Sin embargo, los [avances en la tecnología de conocimiento cero](https://hackmd.io/@yezhang/S1_KMMbGt#Why-possible-now) están despertando un interés renovado en envolver la computación de la EVM en pruebas de conocimiento cero. Estos esfuerzos están orientados a crear una implementación de EVM de conocimiento cero (zkEVM) que pueda verificar de manera eficiente la corrección de la ejecución del programa. Un zkEVM recrea los códigos de operación EVM existentes para la prueba/verificación en los circuitos, lo que permite ejecutar contratos inteligentes.
Al igual que el EVM, zkEVM transita entre estados después de que se realice el cálculo en algunas entradas. La diferencia es que el zkEVM también crea pruebas de conocimiento cero para verificar la corrección de cada paso de la ejecución del programa. Las pruebas de validez podrían verificar la exactitud de las operaciones que tocan el estado de la máquina virtual (memoría, pila, almacenamiento) y el cálculo en sí (es decir, ¿la operación utilizó los códigos de operación correctos y los ejecutó correctamente?).
@@ -178,21 +178,21 @@ Se espera que la introducción de los ZK-rollups compatibles con EVM ayude a los
La cantidad que los usuarios pagan por las transacciones en los ZK-rollups depende de la tarifa de gas, al igual que en la red principal de Ethereum. Sin embargo, las tarifas de gas funcionan de manera diferente en L2 y están influidas por los siguientes costes:
-1. **Escritura de estado**: Hay un costo fijo por escribir al estado de Ethereum (es decir, enviar una transacción en la cadena de bloques de Ethereum). Los ZK-rollups reducen este coste al agrupar las transacciones y distribuir los costes fijos entre múltiples usuarios.
+1. **Escritura de estado**: existe un coste fijo por escribir en el estado de Ethereum (es decir, enviar una transacción en la cadena de bloques de Ethereum). Los ZK-rollups reducen este coste al agrupar las transacciones y distribuir los costes fijos entre múltiples usuarios.
-2. **Publicación de datos**: los ZK-rollups publican datos de estado para cada transacción a Ethereum como `calldata`. Los costes de `calldata` se rigen actualmente por [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), que estipula un coste de 16 de gas para bytes distintos de cero y 4 de gas para cero bytes de `calldata`, respectivamente. El coste pagado en cada transacción está influenciado por la cantidad de `calldata` que deben publicarse en la cadena para ello.
+2. **Publicación de datos**: los ZK-rollups publican los datos de estado de cada transacción en Ethereum como `calldata`. Los costes de `calldata` se rigen actualmente por la [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), que estipula un coste de 16 de gas para los bytes que no son cero y 4 de gas para los bytes que son cero de `calldata`, respectivamente. El coste que se paga en cada transacción depende de la cantidad de `calldata` que se necesite publicar en la cadena para ella.
-3. **Tarifas del operador de Capa 2**: Esta es la cantidad pagada al operador de rollup como compensación por los costos computacionales incurridos en el procesamiento de transacciones, al igual que las [tarifas de prioridad de transacción (propinas)](/developers/docs/gas/#how-are-gas-fees-calculated) en la Red principal de Ethereum.
+3. **Comisiones del operador de la capa 2**: es el importe que se paga al operador del rollup como compensación por los costes computacionales en los que se incurre al procesar las transacciones, de forma muy parecida a las ["comisiones de prioridad (propinas)" de las transacciones](/developers/docs/gas/#how-are-gas-fees-calculated) en la red principal de Ethereum.
-4. **Generación y verificación de pruebas**: Los operadores de ZK-rollup deben producir pruebas de validez para los lotes de transacciones, lo que requiere muchos recursos. Verificar las pruebas de conocimiento cero en la red principal también cuesta gas (~ 500.000 gas).
+4. **Generación y verificación de pruebas**: los operadores de ZK-rollup deben producir pruebas de validez para los lotes de transacciones, lo cual consume muchos recursos. Verificar las pruebas de conocimiento cero en la red principal también cuesta gas (~ 500.000 gas).
-Además de las transacciones por lotes, los ZK-rollups reducen las tarifas para los usuarios al comprimir los datos de las transacciones. Puede [ver una visión general en tiempo real](https://l2fees.info/) de lo que cuesta usar los ZK-rollups en Ethereum.
+Además de las transacciones por lotes, los ZK-rollups reducen las tarifas para los usuarios al comprimir los datos de las transacciones. Puede [ver un resumen en tiempo real](https://l2fees.info/) de lo que cuesta usar los ZK-rollups de Ethereum.
## ¿Cómo se escalan los ZK-rollups a Ethereum? {#scaling-ethereum-with-zk-rollups}
-### Compresión de datos de transacción {#transaction-data-compression}
+### Compresión de los datos de las transacciones {#transaction-data-compression}
-Los ZK-rollups amplían el rendimiento en la capa base de Ethereum tomando el cálculo fuera de la cadena, aunque el verdadero impulso para la escalabilidad proviene de la compresión de los datos de las transacciones. El [tamaño del bloque](/developers/docs/blocks/#block-size) de Ethereum limita los datos que cada bloque puede contener y, por extensión, el número de transacciones procesadas por bloque. Al comprimir los datos relacionados con las transacciones, los ZK-rollups aumentan significativamente el número de transacciones procesadas por bloque.
+Los ZK-rollups amplían el rendimiento en la capa base de Ethereum llevando el cálculo fuera de la cadena, pero el verdadero impulso para la escalabilidad proviene de la compresión de los datos de las transacciones. El [tamaño de bloque](/developers/docs/blocks/#block-size) de Ethereum limita la cantidad de datos que puede contener cada bloque y, por extensión, el número de transacciones que se procesan por bloque. Al comprimir los datos relacionados con las transacciones, los ZK-rollups aumentan significativamente el número de transacciones procesadas por bloque.
Los ZK-rollups pueden comprimir los datos de las transacciones mejor que los rollups optimistas, ya que no tienen que publicar todos los datos necesarios para validar cada transacción. Solo tienen que publicar los datos mínimos necesarios para reconstruir el último estado de las cuentas y los saldos en la lista acumulada.
@@ -204,19 +204,19 @@ Actualmente, las pruebas de validez se generan bloque por bloque y se envían al
Sin embargo, las pruebas recursivas permiten finalizar varios bloques con una prueba de validez. Esto se debe a que el circuito de prueba agrega recursivamente múltiples pruebas de bloque hasta que se crea una prueba final. El operador de L2 presenta esta prueba recursiva, y si el contrato la acepta, todos los bloques relevantes se finalizarán al instante. Con las pruebas recursivas, aumenta el número de transacciones de ZK-rollup que se pueden finalizar en Ethereum a intervalos.
-### Pros y contras de los ZK-rollups {#zk-rollups-pros-and-cons}
+### Ventajas y desventajas de los ZK-rollups {#zk-rollups-pros-and-cons}
-| Ventajas | Desventajas |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Las pruebas de validez garantizan la exactitud de las transacciones fuera de la cadena y evitan que los operadores ejecuten transiciones de estado no válidas. | El coste asociado con el cálculo y la verificación de las pruebas de validez es sustancial y puede aumentar las tarifas para los usuarios de rollup. |
-| Ofrece una finalización de transacción más rápida, ya que las actualizaciones del estado se aprueban una vez que se verifican las pruebas de validez en L1. | Construir ZK-rollups compatibles con EVM es difícil debido a la complejidad de la tecnología de conocimiento cero. |
-| Se basa en mecanismos criptográficos sin confianza para la seguridad, no en la honestidad de los actores incentivados como con [rollups optimistas](/developers/docs/scaling/optimistic-rollups/#optimistic-pros-and-cons). | La producción de pruebas de validez requiere hardware especializado, que puede fomentar el control centralizado de la cadena por parte de algunas partes. |
-| Almacena los datos necesarios para recuperar el estado fuera de la cadena en L1, lo que garantiza la seguridad, la resistencia a la censura y la descentralización. | Los operadores centralizados (secuenciadores) pueden influir en el orden de las transacciones. |
-| Los usuarios se benefician de una mayor eficiencia de capital y pueden retirar fondos de L2 sin demoras. | Los requisitos de hardware pueden reducir el número de participantes que pueden obligar a la cadena a progresar, aumentando el riesgo de que los operadores maliciosos congelen el estado del rollup y censuren a los usuarios. |
-| No depende de las suposiciones de vitalidad y los usuarios no tienen que validar la cadena para proteger sus fondos. | Algunos sistemas de prueba (por ejemplo, ZK-SNARK) requieren una configuración de confianza que, si se maneja mal, podría comprometer el modelo de seguridad de un ZK-rollup. |
-| Una mejor compresión de datos puede ayudar a reducir los costes de publicación de `calldata` en Ethereum y minimizar las tarifas de aumento de datos para los usuarios. | |
+| Pros | Contras |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Las pruebas de validez garantizan la corrección de las transacciones fuera de la cadena y evitan que los operadores ejecuten transiciones de estado no válidas. | El coste asociado con el cálculo y la verificación de las pruebas de validez es sustancial y puede aumentar las tarifas para los usuarios de rollup. |
+| Ofrece una finalización de transacción más rápida, ya que las actualizaciones del estado se aprueban una vez que se verifican las pruebas de validez en L1. | Construir ZK-rollups compatibles con EVM es difícil debido a la complejidad de la tecnología de conocimiento cero. |
+| Se basa en mecanismos criptográficos sin confianza para la seguridad, no en la honestidad de los actores incentivados como en el caso de los [rollups optimistas](/developers/docs/scaling/optimistic-rollups/#optimistic-pros-and-cons). | La producción de pruebas de validez requiere hardware especializado, que puede fomentar el control centralizado de la cadena por parte de algunas partes. |
+| Almacena los datos necesarios para recuperar el estado fuera de la cadena en L1, lo que garantiza la seguridad, la resistencia a la censura y la descentralización. | Los operadores centralizados (secuenciadores) pueden influir en el orden de las transacciones. |
+| Los usuarios se benefician de una mayor eficiencia de capital y pueden retirar fondos de L2 sin demoras. | Los requisitos de hardware pueden reducir el número de participantes que pueden obligar a la cadena a progresar, aumentando el riesgo de que los operadores maliciosos congelen el estado del rollup y censuren a los usuarios. |
+| No depende de las suposiciones de vitalidad y los usuarios no tienen que validar la cadena para proteger sus fondos. | Algunos sistemas de prueba (por ejemplo, ZK-SNARK) requieren una configuración de confianza que, si se maneja mal, podría comprometer el modelo de seguridad de un ZK-rollup. |
+| Una mejor compresión de los datos puede ayudar a reducir los costes de publicación de `calldata` en Ethereum y minimizar las comisiones del rollup para los usuarios. | |
-### Explicación visual de los ZK-rollups {#zk-video}
+### Una explicación visual de los ZK-rollups {#zk-video}
Vea una explicación de Finematics de los ZK-rollups:
@@ -226,28 +226,32 @@ Vea una explicación de Finematics de los ZK-rollups:
Los proyectos que trabajan en zkEVM incluyen:
-- **[zkEVM](https://github.com/privacy-scaling-explorations/zkevm-specs)**_: zkEVM es un proyecto financiado por la Ethereum Foundation para desarrollar un rollup de ZK compatible con la EVM y un mecanismo para generar pruebas de validez para los bloques de Ethereum. _
+- **[zkEVM](https://github.com/privacy-scaling-explorations/zkevm-specs)**: _un proyecto financiado por la Fundación Ethereum para desarrollar un ZK-rollup compatible con la EVM y un mecanismo para generar pruebas de validez para los bloques de Ethereum._
-- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)**: _es un ZK Rollup descentralizado en la red principal de Ethereum que trabaja en una máquina virtual Ethereum de conocimiento cero (zkEVM) que ejecuta transacciones de Ethereum de una manera transparente, incluidos contratos inteligentes con validaciones a prueba de conocimiento cero. _
+- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)**: _es un ZK-rollup descentralizado en la red principal de Ethereum que funciona sobre una máquina virtual de Ethereum de conocimiento cero (zkEVM) que ejecuta transacciones de Ethereum de forma transparente, incluidos los contratos inteligentes con validaciones de prueba de conocimiento cero._
-- **[Scroll](https://scroll.io/blog/zkEVM)**: _Scroll es una empresa impulsada por la tecnología que trabaja en la construcción de una solución nativa zkEVM Layer 2 para Ethereum. _
+- **[Scroll](https://scroll.io/blog/zkEVM)**: _Scroll es una empresa de base tecnológica que trabaja en la creación de una solución nativa de capa 2 zkEVM para Ethereum._
-- **[Taiko](https://taiko.xyz)**: _Taiko es un complemento ZK descentralizado y equivalente a Ethereum (un [Tipo 1 ZK-EVM](https://vitalik.eth.limo/general/2022/08/04/zkevm.html)). _
+- **[Taiko](https://taiko.xyz)**: _Taiko es un ZK-rollup descentralizado y equivalente a Ethereum (un [ZK-EVM de tipo 1](https://vitalik.eth.limo/general/2022/08/04/zkevm.html))._
-- **[ZKsync](https://docs.zksync.io/)**_: ZKsync Era es un rollup de ZK compatible con la EVM creado por Matter Labs, impulsado por su propio zkEVM. _
+- **[ZKsync](https://docs.zksync.io/)**: _ZKsync Era es un ZK-rollup compatible con la EVM creado por Matter Labs e impulsado por su propia zkEVM._
-- **[Starknet](https://starkware.co/starknet/)**_: StarkNet es una solución de escalabilidad de capa 2 compatible con la EVM creada por StarkWare. _
+- **[Starknet](https://starkware.co/starknet/)**: _StarkNet es una solución de escalabilidad de capa 2 compatible con la EVM y creada por StarkWare._
-- **[Morph](https://www.morphl2.io/)**_: Morph es una solución de escalado de rollups híbrida que utiliza la prueba de ZK para abordar el problema del desafío del estado de la capa 2. _
+- **[Morph](https://www.morphl2.io/)**: _Morph es una solución de escalabilidad de rollup híbrido que utiliza la prueba de conocimiento cero para abordar el problema del desafío de estado de la capa 2._
-## Bibliografía para profundizar sobre los ZK-rollups {#further-reading-on-zk-rollups}
+- **[Linea](https://linea.build)**: _Linea es una capa 2 zkEVM equivalente a Ethereum, creada por Consensys y totalmente alineada con el ecosistema de Ethereum._
-- [¿Qué son los rollups de conocimiento cero (ZK)?](https://coinmarketcap.com/alexandria/glossary/zero-knowledge-rollups)
-- [¿Qué son las pruebas de conocimiento cero (ZK)?](https://alchemy.com/blog/zero-knowledge-rollups)
-- [STARK frente a SNARK](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/)
-- [¿Qué es un zkEVM?](https://www.alchemy.com/overviews/zkevm)
-- [Tipos ZK-EVM: equivalente a Ethereum, equivalente a EVM, Tipo 1, Tipo 4 y otras palabras de moda crípticas](https://taiko.mirror.xyz/j6KgY8zbGTlTnHRFGW6ZLVPuT0IV0_KmgowgStpA0K4)
-- [Introducción a zkEVM](https://hackmd.io/@yezhang/S1_KMMbGt)
-- [Recursos increíbles de zkEVM](https://github.com/LuozhuZhang/awesome-zkevm)
-- [ZK-SNARKS bajo el capó](https://vitalik.eth.limo/general/2017/02/01/zk_snarks.html)
-- [¿Cómo son posibles los SNARK?](https://vitalik.eth.limo/general/2021/01/26/snarks.html)
+## Lecturas adicionales sobre los ZK-rollups {#further-reading-on-zk-rollups}
+
+- [¿Qué son los rollups de conocimiento cero?](https://coinmarketcap.com/alexandria/glossary/zero-knowledge-rollups)
+- [¿Qué son los rollups de conocimiento cero?](https://alchemy.com/blog/zero-knowledge-rollups)
+- [La guía práctica de los rollups de Ethereum](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
+- [STARKs frente a SNARKs](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/)
+- [¿Qué es una zkEVM?](https://www.alchemy.com/overviews/zkevm)
+- [Tipos de ZK-EVM: equivalentes a Ethereum, equivalentes a EVM, tipo 1, tipo 4 y otras palabras de moda crípticas](https://taiko.mirror.xyz/j6KgY8zbGTlTnHRFGW6ZLVPuT0IV0_KmgowgStpA0K4)
+- [Introducción a la zkEVM](https://hackmd.io/@yezhang/S1_KMMbGt)
+- [¿Qué son las L2 ZK-EVM?](https://linea.mirror.xyz/qD18IaQ4BROn_Y40EBMTUTdJHYghUtdECscSWyMvm8M)
+- [Recursos geniales sobre la zkEVM](https://github.com/LuozhuZhang/awesome-zkevm)
+- [El funcionamiento interno de los ZK-SNARKs](https://vitalik.eth.limo/general/2017/02/01/zk_snarks.html)
+- [¿Cómo son posibles los SNARKs?](https://vitalik.eth.limo/general/2021/01/26/snarks.html)
From 982e373ba62a01d896c49a921d920fdd6e2c31c7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:35 -0300
Subject: [PATCH 145/589] update(i18n):
public/content/translations/es/contributing/translation-program/playbook/index.md
---
.../translation-program/playbook/index.md | 317 ++++++++++++++++++
1 file changed, 317 insertions(+)
create mode 100644 public/content/translations/es/contributing/translation-program/playbook/index.md
diff --git a/public/content/translations/es/contributing/translation-program/playbook/index.md b/public/content/translations/es/contributing/translation-program/playbook/index.md
new file mode 100644
index 00000000000..b46b8bb744d
--- /dev/null
+++ b/public/content/translations/es/contributing/translation-program/playbook/index.md
@@ -0,0 +1,317 @@
+---
+title: Manual de estrategias para programas de traducción
+lang: es
+description: Una recopilación de consejos y consideraciones importantes para implantar un programa de traducción
+---
+
+# Manual de estrategias para programas de traducción {#translation-program-playbook}
+
+El inglés es uno de los idiomas más hablados del mundo y es, con diferencia, el idioma más estudiado del mundo. Dado que el inglés es el idioma más utilizado en internet —especialmente en las redes sociales— y que los lenguajes de programación multilingües son escasos, la mayor parte del contenido del ámbito de las cadenas de bloques está escrito originalmente en inglés.
+
+Sin embargo, dado que más de 6.000 millones de personas en el mundo (más del 75 % de la población) no hablan inglés, esto supone un obstáculo enorme para el acceso a Ethereum para la gran mayoría de la población mundial.
+
+Por este motivo, cada vez son más los proyectos en este ámbito que quieren traducir su contenido a diferentes idiomas y localizarlos para comunidades globales.
+
+Ofrecer contenido multilingüe es una forma sencilla y eficaz de hacer crecer su comunidad global, proporcionar formación a personas que no hablan inglés, garantizar que su contenido y sus comunicaciones llegan a un público más amplio e introducir a más personas a este sector.
+
+Esta guía tiene como objetivo abordar los retos y las ideas erróneas más comunes sobre la localización de contenidos. Proporciona una guía paso a paso para gestionar el contenido, el proceso de traducción y revisión, el control de calidad, la búsqueda de traductores y otros aspectos fundamentales del proceso de localización.
+
+## Gestión del contenido {#content-management}
+
+Por gestión de contenidos de traducción se entiende el proceso de automatización del flujo de trabajo de traducción, que elimina la necesidad de realizar tareas manuales repetitivas, mejora la eficiencia y la calidad, permite un mejor control y facilita la colaboración.
+
+Existen muchos enfoques diferentes para la gestión de contenido en el proceso de localización, dependiendo del contenido y de sus necesidades.
+
+La forma básica de gestionar el contenido es crear archivos bilingües que contengan el texto de origen y el texto de destino. Rara vez se utiliza esto en la traducción, ya que no ofrece ventajas significativas, aparte de la simplicidad.
+
+Las agencias de traducción suelen utilizar programas de gestión de la traducción o herramientas de localización en su día a día, ya que proporcionan funciones para la gestión de proyectos y permiten un mayor control sobre los archivos, el contenido y los traductores.
+
+Entérese de más cosas sobre la gestión de contenidos:
+
+[Trados para la gestión de la traducción](https://www.trados.com/solutions/translation-management/)
+
+[Phrase para la gestión de contenido multilingüe](https://phrase.com/blog/posts/multilingual-content-management/)
+
+### Programas de gestión de la traducción {#translation-management-software}
+
+Existen muchos programas de gestión de la traducción y herramientas de localización, y la elección del programa depende principalmente de sus necesidades.
+
+Aunque algunos proyectos deciden no utilizar sistemas de traducción automátoca y prefieren gestionar las traducciones manualmente —ya sea directamente en archivos bilingües o en servicios de alojamiento, como GitHub—, esto reduce drásticamente el control, la productividad, la calidad, la escalabilidad y las posibilidades de colaboración. Este enfoque podría ser más beneficioso para proyectos de traducción a pequeña escala o puntuales.
+
+Echemos un vistazo rápido a algunas de las herramientas de gestión de la traducción más potentes y ampliamente utilizadas:
+
+**Las mejores para colaborar y externalizar tareas de forma abierta**
+
+[Crowdin](https://crowdin.com/)
+
+- Gratuito para proyectos de código abierto (número ilimitado de cadenas y proyectos)
+- Memoria de traducción y glosario disponibles en todos los planes
+- Más de 60 formatos de archivo admitidos, más de 70 integraciones de API
+
+[Lokalise](https://lokalise.com/)
+
+- Gratis para 2 miembros del equipo, planes de pago para más colaboradores (número limitado de cadenas en la mayoría de planes)
+- Memoria de traducción y glosario disponibles en algunos planes de pago
+- Más de 30 formatos de archivo admitidos, más de 40 integraciones de API
+
+[Transifex](https://www.transifex.com/)
+
+- Solo planes de pago (número de cadenas limitado para la mayoría de los planes)
+- Memoria de traducción y glosario disponibles en todos los planes de pago
+- Más de 30 formatos de archivo admitidos, más de 20 integraciones de API
+
+[Phrase](https://phrase.com/)
+
+- Solo planes de pago (número ilimitado de cadenas en todos los planes, número limitado de proyectos y miembros de equipo)
+- Memoria de traducción y glosario disponibles en algunos planes de pago
+- Más de 40 formatos de archivo soportados, más de 20 integraciones de API
+
+[Smartcat](https://www.smartcat.com/)
+
+- Plan básico gratuito con funciones avanzadas de pago (número ilimitado de cadenas y proyectos en todos los planes)
+- Memoria de traducción y glosario disponibles en todos los planes
+- Más de 60 formatos de archivo admitidos, más de 20 integraciones de API
+
+[POEditor](https://poeditor.com/)
+
+- Gratis para proyectos de código abierto (número limitado de cadenas para todos los proyectos, ilimitado para proyectos de código abierto)
+- Memoria de traducción y glosario disponibles en planes de pago
+- Más de 20 formatos de archivo admitidos, más de 10 integraciones de API
+
+... por citar algunas.
+
+**Herramientas de traducción profesionales**
+
+[SDL Trados Studio](https://www.trados.com/products/trados-studio/)
+
+- Planes de pago para traductores autónomos y equipos
+- Herramienta de traducción asistida por ordenador muy eficiente y programa de productividad para traductores
+
+[MemoQ](https://www.memoq.com/)
+
+- Versión gratuita limitada disponible con varios planes de pago para funciones avanzadas
+- Programa de gestión de traducciones para empresas, proveedores de servicios lingüísticos y traductores
+
+[Memsource](https://www.memsource.com/)
+
+- Gratis para traductores individuales con varios planes de pago para equipos
+- Traducción asistida por ordenador basada en la nube y sistema de gestión de traducciones
+
+... por citar algunas.
+
+Conozca mejor los programas de gestión de la traducción:
+
+[Definición de Wikipedia de sistemas de gestión de la traducción](https://en.wikipedia.org/wiki/Translation_management_system)
+
+[Phrase sobre las 7 cosas que todo programa de gestión de traducciones debería tener](https://phrase.com/blog/posts/7-things-every-translation-management-software-should-have/)
+
+[MemoQ sobre qué es un sistema de gestión de la traducción](https://www.memoq.com/tools/what-is-a-translation-management-system)
+
+[La lista de Gengo de los 16 mejores sistemas de gestión de la traducción](https://gengo.com/translator-product-updates/16-best-translation-management-systems/)
+
+## Flujo de trabajo {#workflow}
+
+En el ámbito de la traducción, el flujo de trabajo de traducción puede tener dos significados diferentes, ambos en cierto modo relacionados entre sí, y puede requerir consideraciones importantes para su proyecto.
+
+A continuación, explicaremos ambos.
+
+**Significado n.º 1**
+
+Probablemente, esta sea la forma más habitual de concebir los flujos de trabajo de traducción y lo primero que nos viene a la mente al oír la palabra «flujo de trabajo».
+
+En sí, se concibe como «flujo de trabajo» desde que se empieza a pensar en traducciones hasta que utiliza el contenido traducido en su producto.
+
+En este caso, un ejemplo de flujo de trabajo sería:
+
+1. **Preparar los archivos para la traducción**. Parece sencillo, pero hay que tener en cuenta un par de cosas importantes. En este paso, debería tener un plan claro sobre cómo debería funcionar todo el proceso.
+
+- _¿Qué tipo de archivos usará? ¿En qué formato quiere recibir sus archivos traducidos?_
+ - Si su contenido está disponible en formato DOCX o MD, el proceso será mucho más sencillo que si traduce una versión en PDF de su documento técnico u otros documentos.
+- _¿Qué herramientas de localización admiten este formato de archivo? ¿Puede traducirse el archivo de forma que conserve el formato original?_
+ - No todos los tipos de archivo admiten la localización directa (por ejemplo, archivos PDF, archivos de imagen), y no todas las herramientas de localización admiten todos los tipos de archivo.
+- _¿Quién traducirá el contenido? ¿Encargará traducciones profesionales o contará con voluntarios?_
+ - Esto afecta a una serie de decisiones que debe tomar. Por ejemplo, los traductores profesionales se sienten más cómodos trabajando con herramientas de localización avanzadas que los voluntarios.
+- _¿Qué espera de los profesionales de la lengua? Si utiliza los servicios de un proveedor de servicios lingüísticos, ¿qué espera este de usted?_
+ - Este es el paso para asegurarse de que sus objetivos, expectativas y plazos estén alineados.
+- _¿Es igual de importante todo el contenido por traducir? ¿Debería traducirse algún contenido antes que otro?_
+ - Hay algunas formas de priorizar ciertos contenidos, que deberían traducirse e implementarse primero. Por ejemplo, si tiene mucho contenido que traducir, puede utilizar un control de versiones para asegurarse de que los traductores sepan qué deben priorizar.
+
+2. **Compartir los archivos para su traducción**. Este paso también requiere una reflexión de todo el proceso, y no es tan sencillo como enviar los archivos de origen a un proveedor de servicios lingüísticos.
+
+- _¿Quién traducirá el contenido? ¿Cuánta gente participará en este proceso?_
+ - Si tiene previsto utilizar una herramienta de localización, este paso se simplifica, ya que puede cargar los archivos de origen directamente en la herramienta. Esto también es aplicable si el proceso de traducción se lleva a cabo en el servidor de alojamiento, ya que los archivos de origen no necesitan exportarse a ningún sitio.
+- _¿Los archivos de origen se gestionarán manualmente o se puede automatizar este proceso?_
+ - La mayoría de las herramientas de localización permiten algún tipo de integración o automatización del proceso de gestión de archivos. Por otro lado, si trabaja con traductores independientes y no utiliza una herramienta de localización, enviar manualmente los archivos de origen a cientos o miles de traductores no es un proceso escalable.
+- _¿Qué herramientas se usarán para la localización?_
+ - La respuesta a esta pregunta determinará cómo enfocará todo lo demás. Elegir la herramienta adecuada puede ayudarle a automatizar la gestión de contenidos, gestionar la memoria de la traducción y el glosario, gestionar a los traductores, realizar un seguimiento del progreso de la traducción/revisión, etc. Así que dedique tiempo a informarse antes sobre qué herramienta quiere utilizar. Si no tiene previsto utilizar una herramienta de localización, todo lo anterior deberá realizarse manualmente.
+- _¿Cuánto tiempo durará el proceso de traducción? ¿Cuánto costará?_
+ - A estas alturas, ya debería estar listo para compartir los archivos de origen con el proveedor de servicios lingüísticos o el grupo de traductores. El proveedor de servicios lingüísticos puede ayudarle a analizar el recuento de palabras y proporcionarle un presupuesto, incluyendo las tarifas y el plazo para el proceso de traducción.
+- _¿Tiene pensado realizar cambios/actualizar el contenido de origen durante este proceso?_
+ - Si su contenido es dinámico y cambia con frecuencia, cualquier cambio o actualización puede interrumpir el proceso de traducción. El uso de una memoria de traducción puede ayudar a paliar esto de manera significativa, aunque sigue siendo importante pensar en cómo funcionará el proceso y cómo puede evitar que el avance de los traductores se demore.
+
+3. **Gestión del proceso de traducción**. Su trabajo no termina cuando el contenido de origen se le entrega al proveedor de servicios lingüísticos o a los traductores. Para garantizar unas traducciones de buena calidad, los creadores de contenido deben involucrarse lo máximo posible en el proceso de traducción.
+
+- _¿Cómo tiene pensado comunicarse con los traductores?_
+ - Si tiene previsto utilizar una herramienta de localización, la comunicación puede tener lugar directamente en la herramienta. También se recomienda establecer un canal de comunicación alternativo con los traductores, ya que es posible que se sientan más cómodos para comunicarse y las herramientas de mensajería permiten una comunicación más fluida.
+- _¿Cómo gestionará las dudas y consultas de los traductores? ¿Quién debería responder a esas preguntas?_
+ - Los traductores (tanto profesionales como no profesionales) suelen ponerse en contacto con preguntas y solicitudes de aclaración o de contexto adicional, así como aportar comentarios e ideas para mejorar el contenido. Responder a estas preguntas a menudo puede llevar a una mayor implicación y a una mejor calidad del contenido traducido. También es muy útil proporcionarles tantos recursos como sea posible (por ejemplo, guías, consejos, directrices terminológicas, listas de preguntas frecuentes, etc.).
+- _¿Cómo gestionará el proceso de revisión? ¿Desea externalizarlo o tiene la capacidad de realizar revisiones internamente?_
+ - Aunque no son siempre necesarias, las revisiones son una parte integral de un proceso de traducción óptimo. Normalmente, lo más fácil es externalizar el proceso de revisión mediante revisores profesionales. Sin embargo, si tiene cuenta con un equipo internacional grande, las revisiones o el control de la calidad también se pueden gestionar internamente.
+
+4. **Implementar el contenido traducido**. La última parte del flujo de trabajo, aunque sigue siendo importante tenerla en cuenta con antelación.
+
+- _¿Se completarán todas las traducciones al mismo tiempo?_
+ - Si no es así, debería pensar qué traducciones deberían priorizarse, cómo realizar un seguimiento de las traducciones en curso y cómo gestionar la implementación mientras se realizan las traducciones.
+- _¿Cómo se le entregará el contenido traducido? ¿En qué formato estará?_
+ - Esta es una consideración importante, independientemente del enfoque que utilice. Las herramientas de localización le permiten mantener el control sobre el formato del archivo de destino y el proceso de exportación, y suelen permitir la automatización, por ejemplo, al posibilitar la integración con el servidor de alojamiento.
+- _¿Cómo implementará las traducciones en su proyecto?_
+ - En algunos casos, esto podría ser tan sencillo como subir el archivo traducido o añadirlo a sus documentos. Sin embargo, en proyectos más complejos, como traducciones de sitios web o aplicaciones, debe asegurarse de que el código admita varios idiomas y definir con antelación cómo se gestionará el proceso de implementación.
+- _¿Qué ocurre si el formato es diferente al de origen?_
+ - Análogamente a lo explicado anteriormente, si está traduciendo archivos de texto simple, probablemente el formato no tenga una importancia vital. Sin embargo, con archivos más complejos, como el contenido de un sitio web o una aplicación, el formato y el código deben ser idénticos al original para que puedan inmplementarse en su proyecto. De lo contrario, los archivos de destino deberán editarse, ya sea por los traductores o por sus desarrolladores.
+
+**Significado n.º 2**
+
+Un flujo de trabajo de traducción alternativo, que no tiene en cuenta las decisiones ni los enfoques internos. La consideración principal aquí es el flujo del contenido en sí mismo.
+
+En este caso, un ejemplo de flujo de trabajo sería:
+
+1. _Traducción → Implementación_
+
+- Un flujo de trabajo más sencillo, en el que la traducción probablemente será realizada por humanos, ya que no hay ningún proceso de revisión o control de la calidad para evaluar la calidad y editar las traducciones antes de su implementación.
+- En este flujo de trabajo es importante que los traductores puedan mantener un cierto nivel de calidad, lo que requerirá recursos adecuados y comunicación entre los gestores del proyecto y los traductores.
+
+2. _Traducción → Revisión → Implementación_
+
+- Un flujo de trabajo más avanzado, que incluye un proceso de revisión y edición, para garantizar que la calidad de las traducciones sea aceptable y sistemática.
+- Existen varios enfoques para este flujo de trabajo, en el que las traducciones las podrían realizar traductores profesionales o voluntarios, mientras que el proceso de revisión probablemente correría a cargo de revisores profesionales, familiarizados con todas las reglas gramaticales y ortográficas que deben respetarse en la lengua de destino.
+
+3. _Traducción → Revisión → Control de calidad → Implementación_
+
+- El flujo de trabajo óptimo para garantizar el máximo nivel de calidad. Aunque el control de la calidad no siempre es necesario, podría resultar útil para que usted tenga una mejor idea de la calidad del texto traducido tras la traducción y la revisión.
+- Con este flujo de trabajo, las traducciones podrían realizarlas exclusivamente voluntarios o incluso mediante traducción automática. El proceso de revisión corre a cargo de traductores profesionales, mientras que del control de la calidad puede encargarse un proveedor de servicios lingüísticos o hacerlo internamente, si cuenta con empleados que sean hablantes nativos de los idiomas de destino.
+
+Conozca mejor los flujos de trabajo de traducción:
+
+[Normas del contenido sobre las cinco fases del flujo de trabajo de traducción](https://contentrules.com/creating-translation-workflow/)
+
+[Smartling sobre qué es la gestión del flujo de trabajo de traducción](https://www.smartling.com/resources/101/what-is-translation-workflow-management/)
+
+[RixTrans sobre el flujo de trabajo de traducción](https://www.rixtrans.com/translation-workflow)
+
+## Gestión de la terminología{#terminology-management}
+
+Establecer un plan claro sobre cómo gestionar la terminología es uno de los pasos más importantes para garantizar la calidad y coherencia de sus traducciones, y así ahorrar tiempo a sus traductores.
+
+En el ámbito de la traducción, esto se conoce como gestión de la terminología y es uno de los servicios clave que los proveedores de servicios lingüísticos ofrecen a sus clientes, además del acceso a su equipo de especialistas lingüísticos y de la gestión de contenidos.
+
+Se entiende por gestión de la terminología el proceso de identificación, recopilación y gestión de la terminología que es importante para su proyecto y que siempre debe traducirse de forma correcta y coherente.
+
+Hay una serie de pasos que se deben seguir a la hora de considerar la gestión terminológica:
+
+- Identificar los términos clave que deben incluirse en la base terminológica.
+- Crear un glosario de términos y su definición.
+- Traducir los términos y añadirlos al glosario.
+- Revisar y aprobar las traducciones.
+- Gestionar el glosario y actualizarlo con nuevos términos, que sean relevantes para la traducción.
+
+Conozca más a fondo la gestión de la terminología:
+
+[Trados sobre la gestión terminológica](https://www.trados.com/solutions/terminology-management/translation-101-what-is-terminology-management.html)
+
+[Language Scientific sobre por qué la gestión terminológica es importante](https://www.languagescientific.com/terminology-management-why-it-matters/#:~:text=Terminology%20management%20is%20the%20process,are%20related%20to%20each%20other.)
+
+[Clear Words Translation sobre qué es la gestión terminológica y por qué es importante](http://clearwordstranslations.com/language/en/what-is-terminology-management/)
+
+### Memorias de traducción y glosarios {#tm-and-glossary}
+
+La memoria de traducción y el glosario son herramientas importantes en la industria de la traducción y algo en lo que se apoyan la mayoría de los proveedores de servicios lingüísticos.
+
+Veamos qué significan estos términos y en qué se diferencian entre sí:
+
+**Memoria de traducción**: una base de datos que almacena automáticamente segmentos o cadenas, incluyendo bloques de texto más largos, frases completas, párrafos y términos individuales, así como sus traducciones actuales y anteriores en cada idioma.
+
+La mayoría de herramientas de localización, sistemas de gestión de la traducción y herramientas de traducción asistida por ordenador llevan memorias de traducción integradas, que normalmente pueden exportarse y también utilizarse con otras herramientas similares.
+
+Entre las ventajas de utilizar una memoria de traducción destacan una mayor rapidez en la traducción, emparejado con una mejor calidad, la capacidad de conservar ciertas traducciones al actualizar o cambiar el contenido de origen y menores costes de traducción para contenidos repetitivos.
+
+Las memorias de traducción funcionan basándose en un porcentaje de coincidencia entre diferentes segmentos y suelen ser de gran utilidad cuando dos segmentos contienen más del 50 % del contenido idéntico. También se utilizan para traducir automáticamente segmentos repetitivos, que coinciden al 100 %, eliminando así la necesidad de traducir contenido idéntico más de una vez.
+
+Informarse más sobre las memorias de traducción:
+
+[Memsource sobre las memorias de traducción](https://www.memsource.com/translation-memory/)
+
+[Smartling explica lo que es una memoria de traducción](https://www.smartling.com/resources/101/what-is-translation-memory/)
+
+**Glosario**: una lista de términos importantes o sensibles, su definición, sus funciones y traducciones generalizadas. La principal diferencia entre un glosario y una memoria de traducción es que el glosario no se crea automáticamente, ni contiene traducciones de frases completas.
+
+La mayoría de las herramientas de localización, sistemas de gestión de la traducción y herramientas de traducción asistida por ordenador llevan glosarios integrados que se pueden actualizar para asegurarse de que contienen la terminología importante para su proyecto. Al igual que la memoria de traducción, el glosario normalmente puede exportarse y utilizarse en otras herramientas de localización.
+
+Antes de empezar su proyecto de traducción, es muy recomendable dedicar algo de tiempo a crear un glosario para sus traductores y revisores. El uso de un glosario garantiza que los términos importantes se traduzcan correctamente, proporciona a los traductores el contexto necesario y garantiza la coherencia en las traducciones.
+
+Aunque los glosarios suelen contener traducciones generalizadas en los idiomas de destino, también son útiles sin ellas. Incluso sin traducciones generalizadas, un glosario puede incluir definiciones de términos técnicos, resaltar términos que no deben traducirse e informar a los traductores de si un término específico se utiliza como sustantivo, verbo, nombre propio o cualquier otra categoría gramatical.
+
+Leer más sobre glosarios:
+
+[Lionbridge sobre lo que es un glosario de traducción](http://info.lionbridge.com/rs/lionbridge/images/Lionbridge%20FAQ_Glossary_2013.pdf)
+
+[Transifex sobre glosarios](https://docs.transifex.com/glossary/glossary)
+
+Si no tiene pensado utilizar una herramienta de localización para su proyecto, es probable que no pueda utilizar una memoria de traducción ni un glosario (podría crear un glosario o una base de datos terminológica en un archivo Excel; sin embargo, los glosarios automatizados evitan que los traductores tengan que buscar manualmente los términos y sus definiciones).
+
+Esto significa que todo el contenido repetitivo y parecido tendría que traducirse manualmente una y otra vez. Además, los traductores tendrían que consultar si un determinado término debe traducirse o no, cómo se utiliza en el texto y si un término ya tiene una traducción generalizada.
+
+_¿Quiere utilizar la memoria de traducción y el glosario de ethereum.org en su proyecto? Póngase en contacto con nosotros a través de translations@ethereum.org._
+
+## Contacto con traductores {#translator-outreach}
+
+**Trabajar con un proveedor de servicios lingüísticos**
+
+Si trabaja con un proveedor de servicios lingüísticos y sus traductores profesionales, es posible que esta sección no sea demasiado relevante para usted.
+
+En este caso, es importante elegir un proveedor de servicios lingüísticos con capacidad de proporcionar todos los servicios que necesita (por ejemplo, traducción, revisión, control de calidad) en muchos idiomas.
+
+Aunque puede resultar tentador elegir un proveedor de servicios lingüísticos basándose únicamente en los precios que ofrece, es importante tener en cuenta que los proveedores de servicios lingüísticos más grandes tienen precios más elevados por una razón.
+
+- Tienen decenas de miles de traductores en su base de datos, lo que significa que podrán encargarle su proyecto a traductores con la experiencia y los conocimientos necesarios en su sector específico (es decir, traductores especializados).
+- Tienen una dilatada experiencia en la traducción de diferentes proyectos y en la satisfacción de las diversas necesidades de sus clientes. Esto significa que estarán más dispuestos a adaptarse a su flujo de trabajo particular, ofrecerán sugerencias valiosas y posibles mejoras para su proceso de traducción, y satisfacerán sus necesidades, requisitos y plazos.
+- La mayoría de los proveedores de servicios lingüísticos más importantes también tienen sus propias herramientas de localización, memorias de traducción y glosarios que puede utilizar. Si no es así, al menos cuentan con suficientes profesionales en su equipo para garantizar que sus traductores estén familiarizados y sean capaces de trabajar con cualquier herramienta de localización que desee utilizar.
+
+En el [informe Nimdzi 100 de 2021](https://www.nimdzi.com/nimdzi-100-top-lsp/) puede encontrar una comparación detallada de los mayores proveedores de servicios lingüísticos del mundo, algunos detalles sobre cada uno de ellos y análisis por categorías sobre los servicios que prestan, datos geográficos, etc.
+
+**Trabajar con traductores no profesionales**
+
+Puede que trabaje con traductores no profesionales y busque voluntarios que le ayuden a traducir.
+
+Hay varias formas de contactar con personas e invitarlas a unirse a su proyecto. Esto dependerá en gran medida de su producto y del tamaño de la comunidad con la que ya cuente.
+
+A continuación, enumeramos algunas formas de incorporar voluntarios:
+
+**Captar el interés de los voluntarios**. Aunque este aspecto se trata en cierta medida en los siguientes puntos, ponerse en contacto con posibles voluntarios y asegurarse de que conocen su iniciativa de traducción puede ser efectivo de por sí.
+
+Muchas gente quiere participar y contribuir a sus proyectos favoritos, pero a menudo no ven una forma clara de hacerlo sin ser un desarrollador o tener conocimientos técnicos especiales. Si consigue dar a conocer su proyecto, es probable que muchas personas bilingües se animen a participar.
+
+**Buscar dentro de su comunidad**. La mayoría de los proyectos en este sector ya tienen comunidades grandes y activas. Probablemente, muchos miembros de su comunidad apreciarían la oportunidad de contribuir al proyecto de una manera sencilla.
+
+Aunque contribuir a proyectos de código abierto suele obedecer a una motivación intrínseca, también es una experiencia de aprendizaje fantástica. Cualquier persona interesada en conocer mejor su proyecto probablemente estaría encantada de participar en un programa de traducción como voluntaria, ya que le permitiría combinar el hecho de haber contribuido a algo que le importa con una intensa experiencia de aprendizaje práctico.
+
+**Mencionar la iniciativa en su producto**. Si su producto es popular y lo utiliza un gran número de personas, destacar su programa de traducción y animar a los usuarios a participar mientras utilizan el producto puede resultar muy eficaz.
+
+Esto podría ser tan sencillo como añadir un anuncio o una ventana emergente con una llamada a la acción para su producto en aplicaciones y sitios web. Resulta ser tremendamente eficaz, porque su público objetivo es su comunidad, que está compuesta por las personas que es más probable que se involucren, en primer lugar.
+
+**Redes sociales**. Las redes sociales pueden ser una forma eficaz de dar a conocer su programa de traducción y llegar a los miembros de su comunidad, así como a otras personas que aún no forman parte de ella.
+
+Si tiene un servidor de Discord o un canal de Telegram, es fácil utilizarlo como canal de divulgación, de comunicación con sus traductores y de reconocimiento a sus colaboradores.
+
+Plataformas como X (anteriormente Twitter) también pueden ser útiles para incorporar a nuevos miembros de la comunidad y reconocer públicamente a sus colaboradores.
+
+La Linux Foundation ha creado un extenso [Informe sobre la encuesta para colaboradores de FOSS de 2020](https://www.linuxfoundation.org/wp-content/uploads/2020FOSSContributorSurveyReport_121020.pdf), que analiza a los colaboradores de código abierto y sus motivaciones.
+
+## Conclusión {#conclusion}
+
+Este documento contiene algunas consideraciones clave que todo programa de traducción debe tener en cuenta. No es en modo alguno una guía exhaustiva, aunque puede ayudar a cualquier persona sin experiencia en la industria de la traducción a organizar un programa de traducción para su proyecto.
+
+Si está buscando instrucciones más detalladas, así como un análisis más concreto de las diferentes herramientas, procesos y aspectos críticos de la gestión de un programa de traducción, algunos de los proveedores de servicios lingüísticos más importantes mantienen blogs y suelen publicar artículos sobre diferentes aspectos del proceso de localización. Estos son los mejores recursos si desea profundizar en cualquiera de los temas anteriores y entender cómo funciona el proceso de localización a nivel profesional.
+
+Al final de cada sección se incluyen algunos enlaces relevantes; sin embargo, puede encontrar muchos otros recursos en internet.
+
+Para propuestas de colaboración o información adicional, enseñanzas y ver las buenas prácticas recomendadas, gracias al mantenimiento del programa de traducción de ethereum.org, no dude en contactarnos escribiéndonos a translations@ethereum.org.
From 85636c7ecb4ec319c63d85517503648e4d0b8628 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:37 -0300
Subject: [PATCH 146/589] update(i18n):
public/content/translations/es/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
---
.../index.md | 178 +++++++++---------
1 file changed, 88 insertions(+), 90 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md b/public/content/translations/es/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
index 2d2a9b940b9..a7af4d6277e 100644
--- a/public/content/translations/es/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
+++ b/public/content/translations/es/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
@@ -1,11 +1,8 @@
---
-title: Enviar transacciones usando la Web3
-description: "Esta es un guia apta para principiantes sobre cómo enviar transacciones de Ethereum usando la Web3. Hay tres pasos esenciales para enviar una transacción a la cadena de bloques de Ethereum, que son: crear, firmar y emitir. Analizaremos los tres."
+title: Envío de transacciones con Web3
+description: "Esta es una guía para principiantes sobre cómo enviar transacciones de Ethereum con Web3. Hay tres pasos principales para enviar una transacción a la blockchain de Ethereum: crear, firmar y transmitir. Repasaremos los tres."
author: "Elan Halpern"
-tags:
- - "transacciones"
- - "web3.js"
- - "alchemy"
+tags: [ "transacciones", "web3.js", "Alchemy" ]
skill: beginner
lang: es
published: 2020-11-04
@@ -13,124 +10,124 @@ source: Documentos de Alchemy
sourceUrl: https://docs.alchemy.com/alchemy/tutorials/sending-txs
---
-Esta es un guia apta para principiantes sobre cómo enviar transacciones de Ethereum usando la Web3. Hay tres pasos esenciales para enviar una transacción a la cadena de bloques de Ethereum, que son: crear, firmar y emitir. Explicaremos los tres pasos y esperamos responder a cualquier duda que puedas tener. En este tutorial, usaremos [Alchemy](https://www.alchemy.com/) para enviar nuestras transacciones a la red de Ethereum. Puede [crear una cuenta de Alchemy aquí](https://auth.alchemyapi.io/signup).
+Esta es una guía para principiantes sobre cómo enviar transacciones de Ethereum con Web3. Hay tres pasos principales para enviar una transacción a la blockchain de Ethereum: crear, firmar y transmitir. Repasaremos los tres, ¡esperamos responder cualquier pregunta que pueda tener! En este tutorial, usaremos [Alchemy](https://www.alchemy.com/) para enviar nuestras transacciones a la cadena de Ethereum. Puede [crear una cuenta gratuita de Alchemy aquí](https://auth.alchemyapi.io/signup).
-**NOTA:** Esta guía es para firmar sus transacciones en el _backend_ para su aplicación. Si quiere integrar la firma de sus transacciones en el frontend, consulte[Integrar Web3 con un proveedor de navegador](https://docs.alchemy.com/reference/api-overview#with-a-browser-provider).
+**NOTA:** Esta guía es para firmar sus transacciones en el _backend_ de su aplicación. Si desea integrar la firma de sus transacciones en el frontend, consulte la integración de [Web3 con un proveedor de navegador](https://docs.alchemy.com/reference/api-overview#with-a-browser-provider).
-## Los fundamentos {#the-basics}
+## Conceptos básicos {#the-basics}
-Como la mayoría de desarrolladores de cadena de bloques cuando comienzan, es posible que haya indagado sobre cómo enviar una transacción (algo que debería ser muy sencillo) y que se haya topado con una gran cantidad de guías, cada una de ellas diciendo cosas diferentes, que le dejan a uno un poco aturdido y confundido. Por lo tanto, si se encuentra en esa situación, no desespere. ¡Todos lo hemos pasado por ello en algún momento! Así que, antes de comenzar, aclaremos algunos puntos:
+Como la mayoría de los desarrolladores de blockchain al empezar, puede que haya investigado cómo enviar una transacción (algo que debería ser bastante sencillo) y se haya encontrado con un montón de guías, cada una diciendo cosas diferentes, dejándolo un poco abrumado y confundido. Si se encuentra en esa situación, no se preocupe, ¡todos hemos pasado por eso en algún momento! Así que, antes de empezar, aclaremos algunas cosas:
-### 1\. Alchemy no almacena sus claves privadas {#alchemy-does-not-store-your-private-keys}
+### 1. Alchemy no almacena sus claves privadas {#alchemy-does-not-store-your-private-keys}
-- Esto significa que Alchemy no puede firmar ni enviar transacciones en su nombre. Es así por motivos de seguridad. Alchemy nunca le pedirá que comparta su clave privada, ni tampoco debería compartir nunca su clave privada con un nodo alojado (ni con nadie).
-- Puede leer desde la cadena de bloques usando la API del nucleo de Alchemy, pero para escribirlo, necesitará usar algo más para firmar sus transacciones antes de enviarlas mediante Alchemy (esto es lo mismo para cualquier otro [servicio de nodo](/developers/docs/nodes-and-clients/nodes-as-a-service/)).
+- Esto significa que Alchemy no puede firmar ni enviar transacciones en su nombre. Esto se debe a razones de seguridad. Alchemy nunca le pedirá que comparta su clave privada, y usted nunca debería compartir su clave privada con un nodo alojado (ni con nadie).
+- Puede leer de la blockchain con la API principal de Alchemy, pero para escribir en ella necesitará usar otra cosa para firmar sus transacciones antes de enviarlas a través de Alchemy (esto es igual para cualquier otro [servicio de nodo](/developers/docs/nodes-and-clients/nodes-as-a-service/)).
-### 2\. ¿Qué es un «signatario»? {#what-is-a-signer}
+### 2. ¿Qué es un «firmante»? {#what-is-a-signer}
-- Los firmantes firmarán las transacciones por usted con su clave privada. En este tutorial, nosotros usaremos [Alchemy Web3](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3) para firmar nuestra transacción, aunque también puede usar cualquier otra biblioteca Web 3.
-- En el frontend, un buen ejemplo de firmante sería [MetaMask](https://metamask.io/), que firmará y enviará las transacciones en su nombre.
+- Los firmantes firmarán las transacciones por usted utilizando su clave privada. En este tutorial usaremos [Alchemy web3](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3) para firmar nuestra transacción, pero también podría usar cualquier otra biblioteca de web3.
+- En el frontend, un buen ejemplo de un firmante sería [MetaMask](https://metamask.io/), que firmará y enviará las transacciones en su nombre.
-### 3\. ¿Por qué tengo que firmar mis transacciones? {#why-do-i-need-to-sign-my-transactions}
+### 3. ¿Por qué necesito firmar mis transacciones? {#why-do-i-need-to-sign-my-transactions}
-- Todo usuario que quiera enviar una transacción en la red Ethereum debe firmarla (utilizando su clave privada), para validar que la transacción proviene de quien afirma proceder.
-- Es sumamente importante proteger esta clave privada, ya que tener acceso a ella otorga el control absoluto de su cuenta de Ethereum y le permite a usted (o a cualquier persona con acceso) realizar transacciones en su nombre.
+- Cada usuario que quiera enviar una transacción en la red Ethereum debe firmar la transacción (usando su clave privada), para validar que el origen de la transacción es quien dice ser.
+- Es muy importante proteger esta clave privada, ya que tener acceso a ella le otorga el control total sobre su cuenta de Ethereum, lo que le permite a usted (o a cualquiera con acceso) realizar transacciones en su nombre.
-### 4\. ¿Cómo puedo proteger mi clave privada? {#how-do-i-protect-my-private-key}
+### 4. ¿Cómo protejo mi clave privada? {#how-do-i-protect-my-private-key}
-- Hay muchas formas de proteger tu clave privada y de utilizarla para enviar transacciones. En este tutorial utilizaremos un archivo `.env`. Sin embargo, también puede utilizar un proveedor independiente que almacene claves privadas, utilizar un banco de claves u otras opciones.
+- Existen muchas maneras de proteger su clave privada y usarla para enviar transacciones. En este tutorial utilizaremos un archivo `.env`. Sin embargo, también podría usar un proveedor independiente que almacene claves privadas, usar un archivo de almacén de claves, u otras opciones.
-### 5\. ¿Cuál es la diferencia entre `eth_sendTransaction` y `eth_sendRawTransaction`? {#difference-between-send-and-send-raw}
+### 5. ¿Cuál es la diferencia entre `eth_sendTransaction` y `eth_sendRawTransaction`? {#difference-between-send-and-send-raw}
-`eth_sendTransaction` y `eth_sendRawTransaction` son funciones de la API de Ethereum que emiten una transacción en la red de Ethereum para que se añada a un nuevo bloque. Se diferencian en cómo gestionan la firma de las transacciones.
+`eth_sendTransaction` y `eth_sendRawTransaction` son dos funciones de la API de Ethereum que transmiten una transacción a la red Ethereum para que sea añadida a un bloque futuro. Se diferencian en la forma en que gestionan la firma de las transacciones.
-- [`eth_sendTransaction`](https://docs.web3js.org/api/web3-eth/function/sendTransaction) se utiliza para enviar transacciones _sin firmar_, lo que significa que el nodo al que se envía debe gestionar su clave privada para que pueda firmar la transacción antes de difundirla en la cadena. Dado que Alchemy no almacena las claves privadas de los usuarios, no utilizamos este método.
-- [`eth_sendRawTransaction`](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction) se utiliza para emitir las transacciones que ya han sido firmadas. Esto significa que primero debes usar [`signTransaction(tx, private_key)`](https://docs.web3js.org/api/web3-eth-accounts/function/signTransaction), y luego enviar el resultado a `eth_sendRawTransaction`.
+- [`eth_sendTransaction`](https://docs.web3js.org/api/web3-eth/function/sendTransaction) se utiliza para enviar transacciones _sin firmar_, lo que significa que el nodo al que las envía debe gestionar su clave privada para poder firmar la transacción antes de transmitirla a la cadena. Dado que Alchemy no guarda las claves privadas de los usuarios, no soporta este método.
+- [`eth_sendRawTransaction`](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction) se utiliza para transmitir transacciones que ya han sido firmadas. Esto significa que primero tiene que usar [`signTransaction(tx, private_key)`](https://docs.web3js.org/api/web3-eth-accounts/function/signTransaction), y luego pasar el resultado a `eth_sendRawTransaction`.
-Cuando se utiliza web3, se puede acceder a `eth_sendRawTransaction` a través de la función [web3.eth.sendSignedTransaction](https://docs.web3js.org/api/web3-eth/function/sendSignedTransaction).
+Cuando se usa web3, se accede a `eth_sendRawTransaction` llamando a la función [web3.eth.sendSignedTransaction](https://docs.web3js.org/api/web3-eth/function/sendSignedTransaction).
-Esto es lo que vamos a usar en este tutorial.
+Esto es lo que usaremos en este tutorial.
-### 6\. ¿Qué es la biblioteca Web3? {#what-is-the-web3-library}
+### 6. ¿Qué es la biblioteca web3? {#what-is-the-web3-library}
-- Web3.js es una biblioteca de «wrappers» o programas que rodean las funciones estándar JSON-RPC que son muy comunes en el desarrollo de Ethereum.
-- Hay muchas blibiotecas en Web3 para diferentes lenguajes. En este tutorial usaremos [Alchemy Web3](https://docs.alchemy.com/reference/api-overview) que está desarrollado en JavaScript. Puede consultar [aquí](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries) otras opciones, como [ethers.js](https://docs.ethers.org/v5/).
+- Web3.js es una biblioteca contenedora (wrapper) de las llamadas JSON-RPC estándar que es bastante común usar en el desarrollo de Ethereum.
+- Hay muchas bibliotecas web3 para diferentes lenguajes. En este tutorial, usaremos [Alchemy Web3](https://docs.alchemy.com/reference/api-overview), que está escrito en JavaScript. Puede consultar otras opciones [aquí](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries) como [ethers.js](https://docs.ethers.org/v5/).
-Bien, ahora que ya hemos resuelto algunas de estas dudas, comencemos con el tutorial. ¡No dude preguntar sus dudas en cualquier momento a través del canal [discord](https://discord.gg/gWuC7zB) de Alchemy!
+Bien, ahora que hemos aclarado algunas de estas preguntas, pasemos al tutorial. ¡No dude en hacer preguntas en cualquier momento en el [Discord](https://discord.gg/gWuC7zB) de Alchemy!
-### 7\. ¿Cómo enviar transacciones seguras, privadas y con gas optimizado? {#how-to-send-secure-gas-optimized-and-private-transactions}
+### 7. ¿Cómo enviar transacciones seguras, privadas y con optimización del gas? {#how-to-send-secure-gas-optimized-and-private-transactions}
-- [Alchemy tiene un conjunto de API para transacciones](https://docs.alchemy.com/reference/transact-api-quickstart). Puede usarlas para enviar transacciones reforzadas, simular transacciones antes de que ocurran, enviar transacciones privadas y transacciones con gas optimizado.
-- También puede utilizar la [API de Notify](https://docs.alchemy.com/docs/alchemy-notify) para recibir alertas cuando su transacción se toma desde la zona de espera y se añade a la cadena.
+- [Alchemy tiene un conjunto de API de Transact](https://docs.alchemy.com/reference/transact-api-quickstart). Puede usarlas para enviar transacciones reforzadas, simular transacciones antes de que ocurran, enviar transacciones privadas y enviar transacciones con optimización de gas
+- También puede usar la [API Notify](https://docs.alchemy.com/docs/alchemy-notify) para recibir una alerta cuando su transacción se extraiga del mempool y se añada a la cadena
-**NOTA:** Para consultar esta guía, debe tener una cuenta de Alchemy, una dirección de Ethereum o una cartera MetaMask, NodeJs, y npm instaladas. De lo contrario, siga estos pasos:
+**NOTA:** Esta guía requiere una cuenta de Alchemy, una dirección de Ethereum o una billetera de MetaMask, y tener NodeJs y npm instalados. Si no es así, siga estos pasos:
-1. [Cree una cuenta gratuita de Alchemy](https://auth.alchemyapi.io/signup)
-2. [Crea una cuenta de Metamask](https://metamask.io/) (u obtenga una dirección de Ethereum)
-3. [Siga estos pasos para instalar NodeJs y NPM](https://docs.alchemy.com/alchemy/guides/alchemy-for-macs)
+1. [Crear una cuenta gratuita de Alchemy](https://auth.alchemyapi.io/signup)
+2. [Crear una cuenta de MetaMask](https://metamask.io/) (u obtener una dirección de Ethereum)
+3. [Siga estos pasos para instalar NodeJs y NPM](https://docs.alchemy.com/alchemy/guides/alchemy-for-macs)
## Pasos para enviar su transacción {#steps-to-sending-your-transaction}
-### 1\. Crea una aplicación de Alchemy en la red de pruebas de Sepolia {#create-an-alchemy-app-on-the-sepolia-testnet}
+### 1. Crear una aplicación de Alchemy en la red de prueba Sepolia {#create-an-alchemy-app-on-the-sepolia-testnet}
-Vaya a su [panel de control de Alchemy](https://dashboard.alchemyapi.io/) y cree una nueva aplicación, seleccionando Sepolia (u otra red de pruebas) para su red.
+Vaya a su [Panel de control de Alchemy](https://dashboard.alchemyapi.io/) y cree una nueva aplicación, eligiendo Sepolia (o cualquier otra red de prueba) para su red.
-### 2\. Solicitar ETH desde un grifo Sepolia {#request-eth-from-sepolia-faucet}
+### 2. Solicitar ETH del faucet de Sepolia {#request-eth-from-sepolia-faucet}
-Sigue las instrucciones en el [faucet (o grifo) Sepolia de Alchemy](https://www.sepoliafaucet.com/) para recibir ETH. Asegúrese de incluir su dirección Ethereum de **Sepolia** (desde MetaMask) y no otra red. Después de seguir las indicaciones, compruebe dos veces que ha recibido los ETH en su cartera.
+Siga las instrucciones en el [faucet de Sepolia de Alchemy](https://www.sepoliafaucet.com/) para recibir ETH. Asegúrese de incluir su dirección de Ethereum de **Sepolia** (de MetaMask) y no la de otra red. Después de seguir las instrucciones, verifique que ha recibido los ETH en su billetera.
-### 3\. Crea un nuevo directorio de proyecto y `cd` en él {#create-a-new-project-direction}
+### 3. Crear un nuevo directorio de proyecto y entrar en él con `cd` {#create-a-new-project-direction}
-Cree un nuevo directorio de proyecto desde la ventana de comandos (terminal para macs) y navega hasta ella:
+Cree un nuevo directorio de proyecto desde la línea de comandos (terminal para Mac) y navegue hasta él:
```
mkdir sendtx-example
cd sendtx-example
```
-### 4\. Instale Alchemy Web3 (o cualquier biblioteca en Web3) {#install-alchemy-web3}
+### 4. Instalar Alchemy Web3 (o cualquier biblioteca web3) {#install-alchemy-web3}
-Ejecute el siguiente comando en el directorio del proyecto que instalará [Alchemy Web3](https://docs.alchemy.com/reference/api-overview):
+Ejecute el siguiente comando en su directorio de proyecto para instalar [Alchemy Web3](https://docs.alchemy.com/reference/api-overview):
-Observe que si quiere utilizar la biblioteca de ethers.js, [debe seguir estas instrucciones](https://docs.alchemy.com/docs/how-to-send-transactions-on-ethereum).
+Nota: si desea usar la biblioteca ethers.js, [siga las instrucciones aquí](https://docs.alchemy.com/docs/how-to-send-transactions-on-ethereum).
```
npm install @alch/alchemy-web3
```
-### 5\. Instala dotenv {#install-dotenv}
+### 5. Instalar dotenv {#install-dotenv}
-Utilizaremos un archivo `.env` para almacenar de manera segura nuestra clave API y clave privada.
+Usaremos un archivo `.env` para almacenar de forma segura nuestra clave de API y nuestra clave privada.
```
npm install dotenv --save
```
-### 6\. Cree el archivo `.env` {#create-the-dotenv-file}
+### 6. Crear el archivo `.env` {#create-the-dotenv-file}
-Cree un archivo `.env` en el directorio de su proyecto y añada lo siguiente (sustituyendo "`your-api-url`" y "`your-private-key`")
+Cree un archivo `.env` en su directorio de proyecto y añada lo siguiente (reemplazando «`your-api-url`» y «`your-private-key`»)
-- Para encontrar la URL de la API de Alchemy, vaya a la página de información de la aplicación que acaba de crear en su panel de control, haga clic en «Ver clave» en la esquina superior derecha y obtenga la URL HTTP.
-- Para encontrar su clave privada utilizando Metamask, consulte esta [guía](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key).
+- Para encontrar su URL de la API de Alchemy, vaya a la página de detalles de la aplicación que acaba de crear en su panel de control, haga clic en «View Key» (Ver clave) en la esquina superior derecha y copie la URL HTTP.
+- Para encontrar su clave privada usando MetaMask, consulte esta [guía](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key).
```
-API_URL = "your-api-url"
-PRIVATE_KEY = "your-private-key"
+API_URL = "su-url-de-api"
+PRIVATE_KEY = "su-clave-privada"
```
-¡No exponga su .env! Asegúrese de que nunca comparte ni expone su archivo .env con nadie, si ello conlleva revelar sus secretos. Si está haciendo un control de la versión, añada .env a un archivo gitignore.
+¡No haga commit de .env! Por favor, asegúrese de no compartir ni exponer nunca su archivo .env a nadie, ya que al hacerlo estaría comprometiendo sus secretos. Si está usando un sistema de control de versiones, añada su .env a un archivo gitignore.
-### 7\. Cree el archivo `sendTx.js` {#create-sendtx-js}
+### 7. Crear el archivo `sendTx.js` {#create-sendtx-js}
-Vale, ahora que su información confidencial ya está protegida en un archivo `.env`, iniciemos la programación. Para nuestro ejemplo de envío de transacción, enviaremos ETH de vuelta al grifo Sepolia.
+Genial, ahora que tenemos nuestros datos sensibles protegidos en un archivo `.env`, empecemos a programar. Para nuestro ejemplo de envío de transacción, enviaremos ETH de vuelta al faucet de Sepolia.
-Cree un archivo `sendTx.js`, que es donde configuraremos y enviaremos nuestra transacción de muestra, y añádale las siguientes líneas de código:
+Cree un archivo `sendTx.js`, que es donde configuraremos y enviaremos nuestra transacción de ejemplo, y añádale las siguientes líneas de código:
```
async function main() {
@@ -138,25 +135,25 @@ async function main() {
const { API_URL, PRIVATE_KEY } = process.env;
const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
const web3 = createAlchemyWeb3(API_URL);
- const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: replace this address with your own public address
+ const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: reemplace esta dirección con su propia dirección pública
- const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // nonce starts counting from 0
+ const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // el nonce empieza a contar desde 0
const transaction = {
- 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // faucet address to return eth
+ 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // dirección del faucet para devolver ETH
'value': 1000000000000000000, // 1 ETH
'gas': 30000,
'nonce': nonce,
- // optional data field to send message or execute smart contract
+ // campo de datos opcional para enviar un mensaje o ejecutar un contrato inteligente
};
const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY);
web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) {
if (!error) {
- console.log("🎉 The hash of your transaction is: ", hash, "\n Check Alchemy's Mempool to view the status of your transaction!");
+ console.log("🎉 El hash de su transacción es: ", hash, "\n ¡Revise el Mempool de Alchemy para ver el estado de su transacción!");
} else {
- console.log("❗Something went wrong while submitting your transaction:", error)
+ console.log("❗Algo salió mal al enviar su transacción:", error)
}
});
}
@@ -164,47 +161,48 @@ async function main() {
main();
```
-Asegúrese de reemplazar la dirección en la **línea 6** por su propia dirección pública.
+Asegúrese de reemplazar la dirección de la **línea 6** por su propia dirección pública.
-Ahora, antes de pasar a la ejecución de este código, hablaremos sobre algunos de los componentes.
+Ahora, antes de ejecutar este código, hablemos de algunos de sus componentes.
-- `nonce`: la especificación del nonce se utiliza para hacer un seguimiento del número de transacciones enviadas desde su dirección. La necesitamos por motivos de seguridad y para evitar [ataques repetitivos](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce). Para conocer el número de transacciones enviadas desde su dirección, utilizamos [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount).
-- `transaction`: la transacción tiene algunos aspectos que debemos especificar.
- - `to`: Es la dirección a la que queremos enviar ETH. En este caso, estamos enviando ETH de regreso al [grifo Sepolia](https://sepoliafaucet.com/) al que inicialmente le solicitamos.
- - `value`: Esta es la cantidad que deseamos enviar, especificada en Wei, donde 10^18 Wei = 1 ETH
- - `gas`: hay numerosas formas de determinar la cantidad correcta de gas que se debe incluir en la transacción. Incluso, Alchemy tiene un [webhook del precio de del gas](https://docs.alchemyapi.io/guides/alchemy-notify#address-activity-1) que informa cuando el precio del gas se encuentra dentro de un límite determinado. Una buena práctica para transacciones en la red principal consiste en consultar una calculadora de gas como [ETH Gas Station](https://ethgasstation.info/) para determinar la cantidad correcta de gas por añadir. La cantidad mínima de gas que utiliza una operación en Ethereum es de 21.000; por tanto, y para asegurarnos de que nuestra transacción se ejecute, añadiremos 30.000.
- - `nonce`: consulte la definición anteriormente mencionada. Nonce empieza a contar desde cero.
- - [OPTIONAL] datos: utilizado para enviar información adicional con su transferencia, o para activar un contrato inteligente ―no requerido para transferencias de saldo― consulte la nota de abajo.
-- `signedTx`: para firmar nuestro objeto de transacción utilizaremos el método `signTransaction` con nuestra `PRIVATE_KEY`
-- `sendSignedTransaction`: una vez que tenemos una transacción firmada, podemos enviarla para que se incluya en un bloque posterior utilizando `sendSignedTransaction`
+- `nonce`: La especificación del nonce se utiliza para hacer un seguimiento del número de transacciones enviadas desde su dirección. Lo necesitamos por motivos de seguridad y para prevenir [ataques de repetición](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce). Para obtener el número de transacciones enviadas desde su dirección, usamos [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount).
+- `transaction`: El objeto de la transacción tiene algunos aspectos que debemos especificar
+ - `to`: Esta es la dirección a la que queremos enviar ETH. En este caso, vamos a devolver ETH al [faucet de Sepolia](https://sepoliafaucet.com/) del que lo solicitamos inicialmente.
+ - `value`: Esta es la cantidad que deseamos enviar, especificada en wei, donde 10^18 wei = 1 ETH
+ - `gas`: Hay many maneras de determinar la cantidad correcta de gas a incluir en su transacción. Alchemy incluso tiene un [webhook de precios de gas](https://docs.alchemyapi.io/guides/alchemy-notify#address-activity-1) para notificarle cuando el precio del gas cae por debajo de un cierto umbral. Para las transacciones de la red principal, es una buena práctica consultar un estimador de gas como [ETH Gas Station](https://ethgasstation.info/) para determinar la cantidad correcta de gas que se debe incluir. 21000 es la cantidad mínima de gas que usará una operación en Ethereum, así que para asegurar que nuestra transacción se ejecute, ponemos 30000 aquí.
+ - `nonce`: consulte la definición de nonce anterior. El nonce empieza a contar desde cero.
+ - [OPCIONAL] data: Se usa para enviar información adicional con su transferencia o para llamar a un contrato inteligente; no es necesario para transferencias de saldo. Consulte la nota a continuación.
+- `signedTx`: Para firmar nuestro objeto de transacción usaremos el método `signTransaction` con nuestra `PRIVATE_KEY`
+- `sendSignedTransaction`: Una vez que tengamos una transacción firmada, podemos enviarla para que se incluya en un bloque posterior usando `sendSignedTransaction`
-**Una nota sobre los datos** Hay dos tipos principales de transacciones que se pueden enviar en Ethereum.
+**Nota sobre los datos**
+Hay dos tipos principales de transacciones que se pueden enviar en Ethereum.
-- Transferencia de saldo: enviar ETC de una dirección a otra. No se requiere ningún campo de datos, sin embargo, si desea enviar información adicional junto a su transacción, puede incluir esa información en formato HEX en este campo.
- - Por ejemplo, digamos que queremos escribir el hash de un documento IPFS a la cadena de Ethereum para darle una fecha y hora inmutable. Nuestro campo de datos debe mostrarse como datos: `web3.utils.toHex(‘IPFS hash‘)`. Ahora cualquiera puede consultar la cadena y ver cuándo se añadió el documento.
-- Transacción de contrato inteligente: ejecute algún código de contrato inteligente en la cadena. En este caso, el campo de datos debería tener la función inteligente que desee ejecutar, junto a cualquier parámetro.
- - Para un ejemplo práctico, consulte el paso 8 en este [Tutorial abierto a todos los públicos](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#step-8-create-the-transaction).
+- Transferencia de saldo: Enviar ETH de una dirección a otra. No se requiere el campo de datos; sin embargo, si desea enviar información adicional junto con su transacción, puede incluir esa información en formato HEX en este campo.
+ - Por ejemplo, digamos que quisiéramos escribir el hash de un documento IPFS en la cadena de Ethereum para darle una marca de tiempo inmutable. Nuestro campo de datos debería verse así: data: `web3.utils.toHex('hash IPFS')`. Y ahora cualquiera puede consultar la cadena y ver cuándo se añadió ese documento.
+- Transacción de contrato inteligente: Ejecutar código de un contrato inteligente en la cadena. En este caso, el campo de datos debe contener la función inteligente que desea ejecutar, junto con los parámetros.
+ - Para un ejemplo práctico, consulte el paso 8 en este [Tutorial de «Hola, mundo»](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#step-8-create-the-transaction).
-### 8\. Ejecuta el código usando `node sendTx.js` {#run-the-code-using-node-sendtx-js}
+### 8. Ejecute el código usando `node sendTx.js` {#run-the-code-using-node-sendtx-js}
-Navegue hasta la terminal o línea de comandos y ejecute:
+Vuelva a su terminal o línea de comandos y ejecute:
```
node sendTx.js
```
-### 9\. Consulta tu transacción en el Mempool {#see-your-transaction-in-the-mempool}
+### 9. Ver su transacción en el Mempool {#see-your-transaction-in-the-mempool}
-Abra la página de la [Zona de espera](https://dashboard.alchemyapi.io/mempool) en su panel de control de Alchemy y filtre la aplicación que creó para encontrar su transacción. Aquí es donde podemos ver la transición de nuestra transacción desde un estado pendiente a un estado acuñado (si tiene éxito) o a un estado descartado si no tiene éxito. Asegúrese de conservarlo en «Todos» para reflejar las transacciones «acuñadas», «pendientes» y «descartadas». También puede buscar su transacción por transacciones enviadas a la dirección `0x31b98d14007bdee637298086988a0bbd31184523` .
+Abra la [página de Mempool](https://dashboard.alchemyapi.io/mempool) en su panel de Alchemy y filtre por la aplicación que creó para encontrar su transacción. Aquí es donde podemos ver la transición de nuestra transacción de un estado pendiente a un estado minado (si tiene éxito) o a un estado descartado si no lo tiene. Asegúrese de mantenerlo en «All» (Todos) para que capture las transacciones «mined» (minadas), «pending» (pendientes) y «dropped» (descartadas). También puede buscar su transacción buscando las transacciones enviadas a la dirección `0x31b98d14007bdee637298086988a0bbd31184523`.
-Para ver los detalles de su transacción una vez que la haya encontrado, seleccione el hash de tx, que debería llevarle a una pantalla parecida a esta:
+Para ver los detalles de su transacción una vez que la haya encontrado, seleccione el hash de la transacción, que debería llevarle a una vista como esta:
-
+
-Aquí puede ver su transacción en Etherscan pulsando el icono dentro de un círculo rojo.
+Desde ahí, puede ver su transacción en Etherscan haciendo clic en el icono rodeado en rojo.
-**¡Enhorabuena! Acabas de realizar tu primera transacción en Ethereum con Alchemy 🎉**
+**¡Yupi!** Acaba de enviar su primera transacción de Ethereum con Alchemy 🎉\*\*
-_Si desea ver comentarios y sugerencias sobre esta guía, envíe un mensaje a Elan en el canal [Discord](https://discord.gg/A39JVCM) de Alchemy._
+_Para enviar comentarios y sugerencias sobre esta guía, envíe un mensaje a Elan en el [Discord](https://discord.gg/A39JVCM) de Alchemy._
_Publicado originalmente en [https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy](https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy)_
From bbc75a26acf0a8e8b74a120fa2cd271657e75fc4 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:38 -0300
Subject: [PATCH 147/589] update(i18n):
public/content/translations/es/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
---
.../index.md | 36 +++++++++----------
1 file changed, 17 insertions(+), 19 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md b/public/content/translations/es/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
index 67b28a17092..5f7de9a92b7 100644
--- a/public/content/translations/es/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
+++ b/public/content/translations/es/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
@@ -1,10 +1,8 @@
---
-title: Configure web3.js para usar la cadena de bloques de Ethereum en JavaScript
-description: Cómo usar un contrato inteligente para interactuar con un token a través del lenguaje Solidity.
+title: Configurar web3.js para usar la cadena de bloques de Ethereum en JavaScript
+description: Aprenda cómo configurar la librería web3.js para interactuar con la cadena de bloques de Ethereum desde aplicaciones de JavaScript.
author: "jdourlens"
-tags:
- - "web3.js"
- - "javascript"
+tags: [ "web3.js", "JavaScript" ]
skill: beginner
lang: es
published: 2020-04-11
@@ -13,15 +11,15 @@ sourceUrl: https://ethereumdev.io/setup-web3js-to-use-the-ethereum-blockchain-in
address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
---
-En este tutorial, veremos cómo comenzar con [web3.js](https://web3js.readthedocs.io/) para interactuar con la cadena de bloques de Ethereum. Web3.js se puede utilizar tanto en frontends como en backends para leer datos de la cadena de bloques o realizar transacciones, e incluso implementar contrato inteligentes.
+En este tutorial, veremos cómo empezar con [web3.js](https://web3js.readthedocs.io/) para interactuar con la cadena de bloques de Ethereum. Web3.js se puede utilizar tanto en frontends como en backends para leer datos de la cadena de bloques, realizar transacciones e incluso implementar contratos inteligentes.
-El primer paso es incluir web3.js en su proyecto. Para usarlo en una página web, puede importar la biblioteca directamente usando un CDN como JSDelivr.
+El primer paso es incluir web3.js en su proyecto. Para usarlo en una página web, puede importar la biblioteca directamente usando una CDN como JSDeliver.
```html
```
-Si prefiere instalar la biblioteca para usarla en su proyecto de backend o un frontend que use compilación, puede instalarla usando npm:
+Si prefiere instalar la biblioteca para usarla en su backend o en un proyecto de frontend que use un proceso de compilación, puede instalarla usando npm:
```bash
npm install web3 --save
@@ -33,19 +31,19 @@ Luego, para importar Web3.js en un script de Node.js o en un proyecto de fronten
const Web3 = require("web3")
```
-Ahora que incluimos la biblioteca en el proyecto, necesitamos inicializarla. Su proyecto necesita poder comunicarse con la cadena de bloques. La mayoría de las bibliotecas de Ethereum se comunican con un [nodo](/developers/docs/nodes-and-clients/) a través de llamadas RPC. Para iniciar nuestro proveedor de Web3, crearemos una instancia de Web3 pasando como constructor la URL del proveedor. Si tiene un nodo o una [instancia de ganache ejecutándose en la computadora](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/), se verá así:
+Ahora que hemos incluido la biblioteca en el proyecto, necesitamos inicializarla. Su proyecto necesita poder comunicarse con la cadena de bloques. La mayoría de las bibliotecas de Ethereum se comunican con un [nodo](/developers/docs/nodes-and-clients/) a través de llamadas RPC. Para iniciar nuestro proveedor de Web3, crearemos una instancia de Web3 pasando como constructor la URL del proveedor. Si tiene un nodo o una [instancia de ganache ejecutándose en su computadora](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/), se verá así:
```js
const web3 = new Web3("http://localhost:8545")
```
-Si le gustaría acceder directamente a un nodo alojado, puede encontrar opciones de [nodos como servicio](/developers/docs/nodes-and-clients/nodes-as-a-service).
+Si desea acceder directamente a un nodo alojado, puede encontrar opciones en [nodos como servicio](/developers/docs/nodes-and-clients/nodes-as-a-service).
```js
const web3 = new Web3("https://cloudflare-eth.com")
```
-Para probar que nuestra instancia de Web3 se haya configurado correctamente, trataremos de recuperar el último número de bloque usando la función `getBlockNumber`. Esta función acepta una devolución de llamada como parámetro y devuelve el número de bloque como un número entero.
+Para probar que hemos configurado correctamente nuestra instancia de Web3, intentaremos recuperar el número del último bloque usando la función `getBlockNumber`. Esta función acepta una devolución de llamada como parámetro y devuelve el número de bloque como un número entero.
```js
var Web3 = require("web3")
@@ -56,7 +54,7 @@ web3.eth.getBlockNumber(function (error, result) {
})
```
-Si ejecuta este programa, simplemente imprimirá el último número de bloque: la parte superior de la cadena de bloques. También puede usar llamadas a la función `await/async` para evitar anidar devoluciones de llamada en el código:
+Si ejecuta este programa, simplemente imprimirá el último número de bloque: la parte superior de la cadena de bloques. También puede usar llamadas a funciones `await/async` para evitar anidar devoluciones de llamada en su código:
```js
async function getBlockNumber() {
@@ -70,25 +68,25 @@ getBlockNumber()
Puede ver todas las funciones disponibles en la instancia de Web3 en [la documentación oficial de web3.js](https://docs.web3js.org/).
-La mayoría de las bibliotecas Web3 son asíncronas porque, en segundo plano, la biblioteca realiza llamadas JSON RPC al nodo que devuelve el resultado.
+La mayoría de las bibliotecas Web3 son asíncronas porque, en segundo plano, la biblioteca realiza llamadas JSON-RPC al nodo que devuelve el resultado.
-Si está trabajando en el navegador, algunas billeteras inyectan directamente una instancia de Web3 y debería tratar de usarla cuando sea posible, especialmente si planea interactuar con la dirección de Ethereum del usuario para hacer transacciones.
+Si está trabajando en el navegador, algunas billeteras inyectan directamente una instancia de Web3 y debería tratar de usarla siempre que sea posible, especialmente si planea interactuar con la dirección de Ethereum del usuario para realizar transacciones.
-Este es el fragmento de código para detectar si una billetera de MetaMask está disponible e intentar activarla si lo está. Más tarde, le permitirá leer el saldo del usuario y le permitirá a este validar las transacciones que le gustaría hacerle en la cadena de bloques de Ethereum:
+Este es el fragmento de código para detectar si una billetera de MetaMask está disponible e intentar activarla si lo está. Más adelante, esto le permitirá leer el saldo del usuario y habilitarlo para que valide las transacciones que usted desee que realice en la cadena de bloques de Ethereum:
```js
if (window.ethereum != null) {
state.web3 = new Web3(window.ethereum)
try {
- // Request account access if needed
+ // Solicitar acceso a la cuenta si es necesario
await window.ethereum.enable()
- // Accounts now exposed
+ // Cuentas ahora expuestas
} catch (error) {
- // User denied account access...
+ // El usuario denegó el acceso a la cuenta...
}
}
```
-Existen alternativas a web3.js como [Ethers.js](https://docs.ethers.io/) y son muy usadas. En el siguiente tutorial, veremos [cómo escuchar fácilmente nuevos bloques entrantes en la cadena de bloques y ver lo que contienen](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/).
+Existen alternativas a web3.js, como [Ethers.js](https://docs.ethers.io/), que también se usan con frecuencia. En el próximo tutorial, veremos [cómo escuchar fácilmente los nuevos bloques que llegan a la cadena de bloques y ver qué contienen](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/).
From 4d1fc0e6f0328cd6526f0b5f74bcce4261beaab5 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:40 -0300
Subject: [PATCH 148/589] update(i18n):
public/content/translations/es/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
---
.../index.md | 74 ++++++++++---------
1 file changed, 38 insertions(+), 36 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md b/public/content/translations/es/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
index 804d5cb4073..62d3105a3dc 100644
--- a/public/content/translations/es/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
+++ b/public/content/translations/es/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
@@ -1,22 +1,24 @@
---
-title: "Tutorial de Waffle \"Hola, Mundo\" con hardhat y ethers"
-description: Haga su primer proyecto de Waffle con hardhat y ethers.js
+title: "Tutorial de Waffle «Hola, mundo» con Hardhat y ethers"
+description: Cree su primer proyecto de Waffle con Hardhat y ethers.js
author: "MiZiet"
tags:
- - "waffle"
- - "contratos inteligentes"
- - "solidity"
- - "pruebas"
- - "hardhat"
- - "ethers.js"
+ [
+ "waffle",
+ "contratos Inteligentes",
+ "Solidity",
+ "pruebas",
+ "hardhat",
+ "ethers.js"
+ ]
skill: beginner
lang: es
published: 2020-10-16
---
-En este tutorial de [Waffle](https://ethereum-waffle.readthedocs.io), aprenderemos cómo configurar un proyecto de contrato inteligente simple "Hola, Mundo" usando [hardhat](https://hardhat.org/) y [ethers](https://docs.ethers.io/v5/). Luego aprenderemos cómo añadir una nueva funcionalidad a nuestro contrato inteligente y cómo hacer pruebas con Waffle.
+En este tutorial de [Waffle](https://ethereum-waffle.readthedocs.io), aprenderemos a configurar un proyecto simple de contrato inteligente «Hola, mundo», utilizando [hardhat](https://hardhat.org/) y [ethers.js](https://docs.ethers.io/v5/). Luego aprenderemos cómo añadir una nueva funcionalidad a nuestro contrato inteligente y cómo probarlo con Waffle.
-Empecemos por la creación de un nuevo proyecto:
+Empecemos creando un nuevo proyecto:
```bash
yarn init
@@ -40,7 +42,7 @@ o
npm install -D hardhat @nomiclabs/hardhat-ethers ethers @nomiclabs/hardhat-waffle ethereum-waffle chai
```
-El siguiente paso es crear un proyecto de hardhat de muestra ejecutando `npx hardhat`.
+El siguiente paso es crear un proyecto de muestra de Hardhat ejecutando `npx hardhat`.
```bash
888 888 888 888 888
@@ -60,9 +62,9 @@ Create an empty hardhat.config.js
Quit
```
-Seleccione `Create a sample project`.
+Seleccione `Create a sample project`
-La estructura del proyecto debería verse así:
+La estructura de nuestro proyecto debería verse así:
```
MyWaffleProject
@@ -81,14 +83,14 @@ MyWaffleProject
### Ahora hablemos de algunos de estos archivos: {#now-lets-talk}
-- Greeter.sol: nuestro contrato inteligente escrito en solidity;
+- Greeter.sol: nuestro contrato inteligente escrito en Solidity;
```solidity
contract Greeter {
string greeting;
constructor(string memory _greeting) public {
-console.log("Deploying a Greeter with greeting:", _greeting);
+console.log("Desplegando un Greeter con el saludo:", _greeting);
greeting = _greeting;
}
@@ -97,7 +99,7 @@ return greeting;
}
function setGreeting(string memory _greeting) public {
-console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
+console.log("Cambiando el saludo de '%s' a '%s'", greeting, _greeting);
greeting = _greeting;
}
}
@@ -105,15 +107,15 @@ greeting = _greeting;
Nuestro contrato inteligente se puede dividir en tres partes:
-1. constructor: donde declaramos una variable de tipo cadena llamada `greeting`;
-2. función greet: una función que devolverá el `greeting` al ser invocada;
+1. constructor: donde declaramos una variable de tipo cadena llamada `greeting`,
+2. función greet: una función que devolverá el `greeting` al ser invocada,
3. función setGreeting: una función que nos permite cambiar el valor de `greeting`.
- sample-test.js: nuestro archivo de pruebas
```js
describe("Greeter", function () {
- it("Should return the new greeting once it's changed", async function () {
+ it("Debería devolver el nuevo saludo una vez que se ha cambiado", async function () {
const Greeter = await ethers.getContractFactory("Greeter")
const greeter = await Greeter.deploy("Hello, world!")
@@ -126,34 +128,34 @@ describe("Greeter", function () {
})
```
-### El siguiente paso consiste en compilar nuestro contrato y ejecutar pruebas: {#compiling-and-testing}
+### El siguiente paso consiste en compilar nuestro contrato y ejecutar las pruebas: {#compiling-and-testing}
-Las pruebas de Waffle usan Mocha (un framework de pruebas) con Chai (una biblioteca de afirmaciones). Todo lo que tiene que hacer es ejecutar `npx hardhat test` y esperar a que aparezca el siguiente mensaje.
+Las pruebas de Waffle utilizan Mocha (un marco de pruebas) con Chai (una biblioteca de aserciones). Todo lo que tiene que hacer es ejecutar `npx hardhat test` y esperar a que aparezca el siguiente mensaje.
```bash
✓ Should return the new greeting once it's changed
```
-### Todo se ve bien hasta ahora, vamos a añadir un poco más de complejidad a nuestro proyecto {#adding-complexity}
+### Todo parece ir bien hasta ahora. Añadamos un poco más de complejidad a nuestro proyecto {#adding-complexity}
-Imagine una situación en la que alguien añade una cadena vacía como saludo. No sería un saludo cálido, ¿cierto?
-Asegurémonos de que eso no suceda:
+Imagine una situación en la que alguien añade una cadena vacía como saludo. No sería un saludo muy cálido, ¿verdad?
+Asegurémonos de que eso no ocurra:
-Queremos usar `revert` de solidity cuando alguien pase una cadena vacía. Algo bueno es que podemos probar esta funcionalidad fácilmente con el emparejador de chai de Waffle `to.be.revertedWith()`.
+Queremos usar el `revert` de Solidity cuando alguien pase una cadena vacía. Lo bueno es que podemos probar fácilmente esta funcionalidad con el comparador de Chai de Waffle `to.be.revertedWith()`.
```js
-it("Should revert when passing an empty string", async () => {
+it("Debería revertir al pasar una cadena vacía", async () => {
const Greeter = await ethers.getContractFactory("Greeter")
const greeter = await Greeter.deploy("Hello, world!")
await greeter.deployed()
await expect(greeter.setGreeting("")).to.be.revertedWith(
- "Greeting should not be empty"
+ "El saludo no debe estar vacío"
)
})
```
-Parece que nuestra nueva prueba no pasó:
+Parece que nuestra nueva prueba no ha pasado:
```bash
Deploying a Greeter with greeting: Hello, world!
@@ -168,23 +170,23 @@ Changing greeting from 'Hello, world!' to ''
1 failing
```
-Vamos a implementar esta funcionalidad en nuestro contrato inteligente:
+Implementemos esta funcionalidad en nuestro contrato inteligente:
```solidity
-require(bytes(_greeting).length > 0, "Greeting should not be empty");
+require(bytes(_greeting).length > 0, "El saludo no debe estar vacío");
```
Ahora, nuestra función setGreeting se ve así:
```solidity
function setGreeting(string memory _greeting) public {
-require(bytes(_greeting).length > 0, "Greeting should not be empty");
-console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
+require(bytes(_greeting).length > 0, "El saludo no debe estar vacío");
+console.log("Cambiando el saludo de '%s' a '%s'", greeting, _greeting);
greeting = _greeting;
}
```
-Vamos a ejecutar pruebas de nuevo:
+Ejecutemos las pruebas de nuevo:
```bash
✓ Should return the new greeting once it's changed (1467ms)
@@ -193,10 +195,10 @@ Vamos a ejecutar pruebas de nuevo:
2 passing (2s)
```
-¡Felicidades! Lo logró :)
+¡Enhorabuena! ¡Lo ha conseguido! :)
### Conclusión {#conclusion}
-Hicimos un proyecto sencillo con Waffle, Hardhat y ethers.js. Aprendimos a crear un proyecto, añadir una prueba e implementar nuevas funcionalidades.
+Hemos creado un proyecto sencillo con Waffle, Hardhat y ethers.js. Hemos aprendido a configurar un proyecto, añadir una prueba e implementar una nueva funcionalidad.
-Para ver más excelentes emparejadores de chai para probar su contrato inteligente, consulte los [documentos oficiales de Waffle](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html).
+Para ver más comparadores de Chai excelentes con los que probar sus contratos inteligentes, consulte la [documentación oficial de Waffle](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html).
From cd01840e490f1cb64e92ddefa192c5fe0c25793a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:41 -0300
Subject: [PATCH 149/589] update(i18n):
public/content/translations/es/developers/docs/data-availability/blockchain-data-storage-strategies/index.md
---
.../blockchain-data-storage-strategies/index.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/public/content/translations/es/developers/docs/data-availability/blockchain-data-storage-strategies/index.md b/public/content/translations/es/developers/docs/data-availability/blockchain-data-storage-strategies/index.md
index c831721b092..ac10c6e21bd 100644
--- a/public/content/translations/es/developers/docs/data-availability/blockchain-data-storage-strategies/index.md
+++ b/public/content/translations/es/developers/docs/data-availability/blockchain-data-storage-strategies/index.md
@@ -16,7 +16,7 @@ Existen varias formas para guardar información ya sea directamente en la cadena
La elección de qué mecanismos usar está basada en diversos criterios:
- La fuente de la información. La información en calldata no puede provenir directamente de la cadena de bloques.
-- El destino de la información. El Calldata solo está disponible en la transacción que inicia. Los eventos no son accesibles en la cadena.
+- El destino de la información. El Calldata solo está disponible en la transacción que lo incluye. Los eventos no son accesibles en la cadena.
- ¿Cuánto inconveniente es aceptable? Las computadoras que ejecuta un nodo de plena escala tienen la capacidad de procesar más que un cliente ligero en una aplicación que está siendo ejecutada desde un navegador.
- ¿Es necesario que todos los nodos puedan fácilmente acceder a la información?
- Requerimientos de seguridad.
@@ -35,7 +35,7 @@ Las soluciones diferentes presentadas tienen todas una excelente integridad, dad
## Requisitos previos {#prerequisites}
-Para continuar leyendo, debería tener un buen entendimiento de [los fundamentos de la cadena de bloques](/developers/docs/intro-to-ethereum/). Esta página asume también que el lector tiene familiaridad con los [bloques](/developers/docs/blocks/), las [transacciones](/developers/docs/transactions/) y otros temas relevantes.
+Para continuar leyendo, debería tener un buen entendimiento de [los fundamentos de la cadena de bloques](es/developers/docs/intro-to-ethereum/). Esta página asume también que el lector tiene familiaridad con los [bloques](/developers/docs/blocks/), las [transacciones](/developers/docs/transactions/) y otros temas relevantes.
## Blobs EIP-4844 {#eip-4844-blobs}
@@ -64,7 +64,7 @@ Calldata se refiere a los bytes enviados como parte de las transacciones. Se gua
Este es el método más económico para lograr almacenar datos en la cadena de bloques de forma permanente. El costo per byte es 4 gas de ejecución (en caso de que el byte sea 0) o 16 gas (para cualquier otro valor). Si los datos están comprimidos, práctica estándar, entonces cada byte tiene igual probabilidad, por lo que el costo promedio es de aproximadamente 15,95 gas por byte.
-Al momento de la escritura de este artículo, los precios son 12 gwei/gas y 2300 $/ETH, esto es, un costo aproximado de 45 centavos por kilobyte. Dado que esta era la forma más económica previo a la implementación de EIP-4844, este es el método que los rollups utilizaban para guardan información de las transacciones, que debe estar disponible para los [desafíos de falla](https://docs.optimism.io/stack/protocol/overview#fault-proofs), pero no necesita ser directamente accesible en la cadena.
+En el momento de escribir esto, los precios son 12 gwei/gas y 2300 $/ETH, lo que significa que el coste es aproximadamente de 45 centavos por kilobyte. Dado que esta era la forma más económica previo a la implementación de EIP-4844, este es el método que los rollups utilizaban para guardan información de las transacciones, que debe estar disponible para los [desafíos de falla](https://docs.optimism.io/stack/protocol/overview#fault-proofs), pero no necesita ser directamente accesible en la cadena.
Estas son las direcciones para ver las transacciones publicadas por algunos rollups reconocidos.
From ff730f73ea5c70f5e5308e2ef20e169603b02456 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:43 -0300
Subject: [PATCH 150/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
---
.../index.md | 214 +++++++++---------
1 file changed, 111 insertions(+), 103 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md b/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
index c7269723d78..8762d2530b8 100644
--- a/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
@@ -4,11 +4,13 @@ description: Cómo usar Manticore para encontrar automáticamente errores en con
author: Trailofbits
lang: es
tags:
- - "solidity"
- - "contratos inteligentes"
- - "seguridad"
- - "pruebas"
- - "verificación formal"
+ [
+ "Solidity",
+ "contratos Inteligentes",
+ "seguridades",
+ "pruebas",
+ "verificación formal"
+ ]
skill: advanced
published: 2020-01-13
source: Desarrollar contratos seguros
@@ -19,18 +21,18 @@ El objetivo de este tutorial es mostrar cómo se usa Manticore para encontrar er
## Instalación {#installation}
-Manticore requiere >= python 3.6. Se puede instalar a través de pip o usando docker.
+Manticore requiere >= python 3.6. Se puede instalar a través de pip o usando Docker.
-### Manticore a través de docker {#manticore-through-docker}
+### Manticore a través de Docker {#manticore-through-docker}
```bash
docker pull trailofbits/eth-security-toolbox
docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox
```
-_El comando de arriba ejecuta eth-security-toolbox en un docker que tiene acceso a su directorio actual. Puede cambiar los archivos desde su host y correr las herramientas dentro de los archivos desde el docker._
+_El comando anterior ejecuta eth-security-toolbox en un Docker que tiene acceso a su directorio actual. Puede cambiar los archivos desde su host y ejecutar las herramientas en los archivos desde el Docker_
-Dentro del docker, ejecute:
+Dentro de Docker, ejecute:
```bash
solc-select 0.5.11
@@ -45,9 +47,9 @@ pip3 install --user manticore
Se recomienda solc 0.5.11.
-### Ejecución de un script {#running-a-script}
+### Ejecutar un script {#running-a-script}
-Para ejecutar un script de python con python 3:
+Para ejecutar un script de Python con Python 3:
```bash
python3 script.py
@@ -55,24 +57,24 @@ python3 script.py
## Introducción a la ejecución simbólica dinámica {#introduction-to-dynamic-symbolic-execution}
-### Descripción breve de la ejecución simbólica dinámica {#dynamic-symbolic-execution-in-a-nutshell}
+### Ejecución simbólica dinámica en pocas palabras {#dynamic-symbolic-execution-in-a-nutshell}
-La ejecución simbólica dinámica (DSE) es una técnica de análisis de programas que explora un espacio de estados con un alto grado de conciencia semántica. Esta técnica se basa en el descubrimiento de "rutas del programa" representadas con fórmulas matemáticas denominadas `path predicates`. Conceptualmente, esta técnica opera en predicados de ruta en dos pasos:
+La ejecución simbólica dinámica (DSE) es una técnica de análisis de programas que explora un espacio de estados con un alto grado de conciencia semántica. Esta técnica se basa en el descubrimiento de «rutas del programa», representadas como fórmulas matemáticas llamadas `path predicates`. Conceptualmente, esta técnica opera en predicados de ruta en dos pasos:
-1. Contruyéndolos con restricciones sobre la entrada del programa.
-2. Usándolos para generar entradas del programa para ejecutar las rutas asociadas.
+1. Se construyen usando restricciones en la entrada del programa.
+2. Se usan para generar entradas de programa que harán que se ejecuten las rutas asociadas.
-Este enfoque previene falsos positivos porque todos los estados de programa identificados se pueden activar durante la ejecución concreta. Por ejemplo, si el análisis encuentra un desbordamiento de enteros, se garantiza que sea reproducible.
+Este enfoque no produce falsos positivos, en el sentido de que todos los estados del programa identificados pueden activarse durante la ejecución concreta. Por ejemplo, si el análisis encuentra un desbordamiento de enteros, se garantiza que es reproducible.
### Ejemplo de predicado de ruta {#path-predicate-example}
-Para conocer el funcionamiento de la DSE, considere el siguiente ejemplo:
+Para hacerse una idea de cómo funciona la DSE, considere el siguiente ejemplo:
```solidity
function f(uint a){
if (a == 65) {
- // A bug is present
+ // Hay un error
}
}
@@ -83,30 +85,30 @@ Como `f()` contiene dos rutas, una DSE construirá dos predicados de ruta difere
- Ruta 1: `a == 65`
- Ruta 2: `Not (a == 65)`
-Cada predicado de ruta es una fórmula matemática que puede ser dada a un [resolutor de SMT](https://wikipedia.org/wiki/Satisfiability_modulo_theories), que intentará resolver la ecuación. En `Path 1`, el resolutor dirá que la ruta puede ser explorada con `a = 65`. En `Path 2`, el resolutor puede dar a `a` cualquier valor distinto de 65, por ejemplo, `a = 0`.
+Cada predicado de ruta es una fórmula matemática que puede darse a un llamado [resolutor SMT](https://wikipedia.org/wiki/Satisfiability_modulo_theories), que intentará resolver la ecuación. Para la `Ruta 1`, el resolutor dirá que la ruta se puede explorar con `a = 65`. Para la `Ruta 2`, el resolutor puede dar a `a` cualquier valor que no sea 65, por ejemplo, `a = 0`.
### Verificación de propiedades {#verifying-properties}
-Manticore permite control pleno sobre toda la ejecución de cada ruta. Como resultado, permite añadir restricciones arbitrarias a casi cualquier cosa. Este control permite la creación de propiedades en el contrato.
+Manticore permite un control total sobre toda la ejecución de cada ruta. Como resultado, le permite añadir restricciones arbitrarias a casi cualquier cosa. Este control permite la creación de propiedades en el contrato.
Considere el siguiente ejemplo:
```solidity
function unsafe_add(uint a, uint b) returns(uint c){
- c = a + b; // no overflow protection
+ c = a + b; // sin protección contra desbordamientos
return c;
}
```
-Aquí solo hay un camino para explorar en la función:
+Aquí solo hay una ruta para explorar en la función:
- Ruta 1: `c = a + b`
-Usando Manticore se puede comprobar si hay desbordamiento y añadir restricciones al predicado de ruta:
+Con Manticore, puede comprobar si hay desbordamiento y añadir restricciones al predicado de ruta:
- `c = a + b AND (c < a OR c < b)`
-Si es posible encontrar un valor de `a` y `b` donde el predicado de ruta de arriba sea factible, significa que se ha encontrado un desbordamiento. Por ejemplo, el solucionador puede generar la entrada `a = 10 , b = MAXUINT256`.
+Si es posible encontrar una valoración de `a` y `b` para la cual el predicado de ruta anterior sea factible, significa que ha encontrado un desbordamiento. Por ejemplo, el resolutor puede generar la entrada `a = 10, b = MAXUINT256`.
Si considera una versión corregida:
@@ -123,13 +125,13 @@ La fórmula asociada con la comprobación de desbordamiento sería:
- `c = a + b AND (c >= a) AND (c=>b) AND (c < a OR c < b)`
-Esta fórmula no se puede resolver; en otro estadio esto es una **prueba** de que en `safe_add`, `c` siempre aumentará.
+Esta fórmula no puede resolverse; en otras palabras, es una **prueba** de que en `safe_add`, `c` siempre aumentará.
-DSE es por consiguiente una potente herramienta que puede verificar restricciones arbitrarias en el código.
+Por lo tanto, la DSE es una potente herramienta que puede verificar restricciones arbitrarias en su código.
-## Ejecutar con Manticore {#running-under-manticore}
+## Ejecución en Manticore {#running-under-manticore}
-Veamos cómo explorar un contrato inteligente con la API de Manticore. El objetivo es el siguiente contrato inteligente [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
+Veremos cómo explorar un contrato inteligente con la API de Manticore. El objetivo es el siguiente contrato inteligente [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
```solidity
pragma solidity >=0.4.24 <0.6.0;
@@ -145,13 +147,13 @@ contract Simple {
### Ejecutar una exploración independiente {#run-a-standalone-exploration}
-Puede ejecutar Manticore directamente en el contrato inteligente con el siguiente comando (`project` puede ser un Solidity File o un directorio de proyecto):
+Puede ejecutar Manticore directamente en el contrato inteligente con el siguiente comando (`project` puede ser un archivo de Solidity o un directorio de proyecto):
```bash
$ manticore project
```
-Obtendrá la salida o resultado de casos de prueba como este (el orden puede cambiar):
+Obtendrá una salida de casos de prueba como esta (el orden puede cambiar):
```
...
@@ -166,35 +168,36 @@ Obtendrá la salida o resultado de casos de prueba como este (el orden puede cam
...
```
-Sin información adicional, Manticore explorará el contrato con nuevas transacciones simbólicas hasta que no explore nuevas rutas en el contrato. Manticore no ejecuta nuevas transacciones después de una fallida (por ejemplo: después de una reversión).
+Sin información adicional, Manticore explorará el contrato con nuevas transacciones simbólicas
+hasta que ya no explore nuevas rutas en el contrato. Manticore no ejecuta nuevas transacciones después de una que falle (p. ej., después de una reversión).
-Manticore mostrará la información en un directorio `mcore_*`. Entre otras cosas, encontrará en este directorio:
+Manticore enviará la información a un directorio `mcore_*`. Entre otras cosas, encontrará en este directorio:
- `global.summary`: cobertura y advertencias del compilador
-- `test_XXXX.summary`: cobertura, última instrucción, saldos de cuenta por caso de prueba
-- `test_XXXX.tx`: lista detallada de transacciones por caso de prueba
+- `test_XXXXX.summary`: cobertura, última instrucción, saldos de cuenta por caso de prueba
+- `test_XXXXX.tx`: lista detallada de transacciones por caso de prueba
-Aquí Manticore encontró 7 casos de prueba que corresponden a (el orden de nombres de archivo puede cambiar):
+Aquí Manticore encuentra 7 casos de prueba, que corresponden a (el orden de los nombres de archivo puede cambiar):
-| | Transacción 0 | Transacción 1 | Transacción 2 | Resultado |
-|:--------------------:|:--------------------:|:----------------:| ---------------- |:---------:|
-| **test_00000000.tx** | Creación de contrato | f(!=65) | f(!=65) | DETENER |
-| **test_00000001.tx** | Creación de contrato | función fallback | | REVERT |
-| **test_00000002.tx** | Creación de contrato | | | RETURN |
-| **test_00000003.tx** | Creación de contrato | f(65) | | REVERT |
-| **test_00000004.tx** | Creación de contrato | f(!=65) | | DETENER |
-| **test_00000005.tx** | Creación de contrato | f(!=65) | f(65) | REVERT |
-| **test_00000006.tx** | Creación de contrato | f(!=65) | función fallback | REVERT |
+| | Transacción 0 | Transacción 1 | Transacción 2 | Resultado |
+| :-------------------------------------------------------: | :-------------------: | :------------------------: | -------------------------- | :-------: |
+| **test_00000000.tx** | Creación del contrato | f(!=65) | f(!=65) | DETENER |
+| **test_00000001.tx** | Creación del contrato | función fallback | | REVERT |
+| **test_00000002.tx** | Creación del contrato | | | RETURN |
+| **test_00000003.tx** | Creación del contrato | f(65) | | REVERT |
+| **test_00000004.tx** | Creación del contrato | f(!=65) | | DETENER |
+| **test_00000005.tx** | Creación del contrato | f(!=65) | f(65) | REVERT |
+| **test_00000006.tx** | Creación del contrato | f(!=65) | función fallback | REVERT |
-_Resumen de exploración f(!=65) muestra que f llamó con cualquier valor diferente a 65._
+_Resumen de exploración: f(!=65) denota que se llamó a f con cualquier valor distinto de 65._
-Como se ve, Manticore genera un caso de prueba único para cada transacción exitosa o revertida.
+Como puede observar, Manticore genera un caso de prueba único para cada transacción exitosa o revertida.
-Use la marca `--quick-mode` si desea una exploración rápida de código (deshabilita los detectores de errores, el cálculo de gas, etc.).
+Use el indicador `--quick-mode` si desea una exploración rápida del código (desactiva los detectores de errores, el cómputo de gas, etc.).
### Manipular un contrato inteligente a través de la API {#manipulate-a-smart-contract-through-the-api}
-Esta sección describe los detalles para manipular un contrato inteligente a través de la API de Python de Manticore. Puede crear un nuevo archivo con la extensión de python `*.py` y escribir el código necesario agregando los comandos de la API (los aspectos básicos se describen a continuación) en este archivo y luego ejecutarlo con el comando `$ python3 *.py`. También puede ejecutar los siguientes comandos directamente en la consola de python; para ejecutar la consola use el comando `$ python3`.
+Esta sección describe los detalles para manipular un contrato inteligente a través de la API de Python de Manticore. Puede crear un nuevo archivo con la extensión de Python `*.py` y escribir el código necesario agregando los comandos de la API (cuyos fundamentos se describirán a continuación) en este archivo y luego ejecutarlo con el comando `$ python3 *.py`. También puede ejecutar los comandos siguientes directamente en la consola de Python; para ejecutar la consola, use el comando `$ python3`.
### Creación de cuentas {#creating-accounts}
@@ -206,13 +209,13 @@ from manticore.ethereum import ManticoreEVM
m = ManticoreEVM()
```
-Se crea una cuenta sin contrato con [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account):
+Se crea una cuenta que no es de contrato mediante [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account):
```python
user_account = m.create_account(balance=1000)
```
-Se puede implementar un contrato de Solidity usando [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract):
+Se puede desplegar un contrato de Solidity mediante [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract):
```solidity
source_code = '''
@@ -225,24 +228,24 @@ contract Simple {
}
}
'''
-# Initiate the contract
+# Iniciar el contrato
contract_account = m.solidity_create_contract(source_code, owner=user_account)
```
#### Resumen {#summary}
-- Puede crear cuentas de usuario y contratos con [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) y [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract).
+- Puede crear cuentas de usuario y de contrato con [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) y [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract).
### Ejecución de transacciones {#executing-transactions}
Manticore admite dos tipos de transacción:
-- Transacción en bruto (raw): se exploran todas las funciones
+- Transacción sin procesar: se exploran todas las funciones
- Transacción con nombre: solo se explora una función
-#### Transacción en bruto {#raw-transaction}
+#### Transacción sin procesar {#raw-transaction}
-La transacción en bruto se ejecuta usando [m.transaction](https://manticore.readthedocs.io/en/latest/evm.html?highlight=transaction#manticore.ethereum.ManticoreEVM.transaction):
+Una transacción sin formato se ejecuta usando [m.transaction](https://manticore.readthedocs.io/en/latest/evm.html?highlight=transaction#manticore.ethereum.ManticoreEVM.transaction):
```python
m.transaction(caller=user_account,
@@ -251,10 +254,10 @@ m.transaction(caller=user_account,
value=value)
```
-El invocante, la dirección, los datos o el valor de la transacción pueden ser tanto concretos como simbólicos:
+El llamador, la dirección, los datos o el valor de la transacción pueden ser concretos o simbólicos:
- [m.make_symbolic_value](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_value#manticore.ethereum.ManticoreEVM.make_symbolic_value) crea un valor simbólico.
-- [m.make_symbolic_buffer(size)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_buffer#manticore.ethereum.ManticoreEVM.make_symbolic_buffer) crea un array de bytes simbólico.
+- [m.make_symbolic_buffer(size)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_buffer#manticore.ethereum.ManticoreEVM.make_symbolic_buffer) crea una matriz de bytes simbólica.
Por ejemplo:
@@ -267,38 +270,39 @@ m.transaction(caller=user_account,
value=symbolic_value)
```
-Si los datos son simbólicos, Manticore explorará todas las funciones del contrato durante la ejecución de la transacción. Es útil ver la explicación de la función Fallback en el artículo [Hands on the Ethernaut CTF](https://blog.trailofbits.com/2017/11/06/hands-on-the-ethernaut-ctf/) para entender cómo funciona la selección de funciones.
+Si los datos son simbólicos, Manticore explorará todas las funciones del contrato durante la ejecución de la transacción. Será útil ver la explicación de la función fallback en el artículo [Hands on the Ethernaut CTF](https://blog.trailofbits.com/2017/11/06/hands-on-the-ethernaut-ctf/) para comprender cómo funciona la selección de funciones.
#### Transacción con nombre {#named-transaction}
-Las funciones pueden ejecutarse a través de su nombre. Para ejecutar `f(uint var)` con un valor simbólico, de user_account y con 0 ether, use:
+Las funciones pueden ejecutarse a través de su nombre.
+Para ejecutar `f(uint var)` con un valor simbólico, desde `user_account` y con 0 ether, use:
```python
symbolic_var = m.make_symbolic_value()
contract_account.f(symbolic_var, caller=user_account, value=0)
```
-Si `value` de la transacción no se especifica, es 0 por defecto.
+Si el `valor` de la transacción no se especifica, es 0 por defecto.
#### Resumen {#summary-1}
- Los argumentos de una transacción pueden ser concretos o simbólicos
-- Una transacción en bruto explorará todas las funciones
+- Una transacción sin formato explorará todas las funciones
- La función puede ser llamada por su nombre
-### Workspace {#workspace}
+### Espacio de trabajo {#workspace}
-`m.workspace` es el directorio usado como directorio de salida para todos los archivos generados:
+`m.workspace` es el directorio utilizado como directorio de salida para todos los archivos generados:
```python
print("Results are in {}".format(m.workspace))
```
-### Terminar la exploración {#terminate-the-exploration}
+### Finalizar la exploración {#terminate-the-exploration}
Para detener la exploración, use [m.finalize()](https://manticore.readthedocs.io/en/latest/evm.html?highlight=finalize#manticore.ethereum.ManticoreEVM.finalize). No se deben enviar más transacciones cuando se llama a este método, y Manticore genera casos de prueba para cada una de las rutas exploradas.
-### Resumen: ejecutar con Manticore {#summary-running-under-manticore}
+### Resumen: Ejecución en Manticore {#summary-running-under-manticore}
Reuniendo los pasos previos, obtenemos:
@@ -317,14 +321,14 @@ symbolic_var = m.make_symbolic_value()
contract_account.f(symbolic_var)
print("Results are in {}".format(m.workspace))
-m.finalize() # stop the exploration
+m.finalize() # detener la exploración
```
-Todo el código de arriba que encuentra en [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)
+Puede encontrar todo el código anterior en [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)
-## Obtener throwing paths {#getting-throwing-paths}
+## Obtención de las rutas que fallan {#getting-throwing-paths}
-Ahora generaremos entradas específicas para las rutas que plantean una excepción en `f()`. El objetivo sigue siendo el contrato inteligente [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
+Ahora generaremos entradas específicas para las rutas que generan una excepción en `f()`. El objetivo es el siguiente contrato inteligente [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
```solidity
pragma solidity >=0.4.24 <0.6.0;
@@ -337,17 +341,17 @@ contract Simple {
}
```
-### Uso de información de estado {#using-state-information}
+### Uso de la información de estado {#using-state-information}
-Cada ruta ejecutada tiene un estado en la cadena de bloques. Un estado está listo o es aniquilado, lo que significa que alcanza una instrucción THROW o REVERT:
+Cada ruta ejecutada tiene su estado de la cadena de bloques. Un estado está listo o está terminado, lo que significa que llega a una instrucción THROW o REVERT:
-- [m.ready_states](https://manticore.readthedocs.io/en/latest/states.html#accessing): la lista de estados que están listos (no ejecutaron un REVERT/INVALID)
-- [m.killed_states](https://manticore.readthedocs.io/en/latest/states.html#accessings): lista de estados aniquilados
+- [m.ready_states](https://manticore.readthedocs.io/en/latest/states.html#accessing): la lista de estados que están listos (no ejecutaron una REVERT/INVALID)
+- [m.killed_states](https://manticore.readthedocs.io/en/latest/states.html#accessings): la lista de estados que están terminados
- [m.all_states](https://manticore.readthedocs.io/en/latest/states.html#accessings): todos los estados
```python
for state in m.all_states:
- # do something with state
+ # hacer algo con el estado
```
Puede acceder a la información de estado. Por ejemplo:
@@ -356,16 +360,16 @@ Puede acceder a la información de estado. Por ejemplo:
- `state.platform.transactions`: la lista de transacciones
- `state.platform.transactions[-1].return_data`: los datos devueltos por la última transacción
-Los datos devueltos por la última transacción son un array que puede convertirse en un valor con ABI.deserialize, por ejemplo:
+Los datos devueltos por la última transacción son una matriz, que se puede convertir en un valor con `ABI.deserialize`, por ejemplo:
```python
data = state.platform.transactions[0].return_data
data = ABI.deserialize("uint", data)
```
-### Cómo generar testcase {#how-to-generate-testcase}
+### Cómo generar un caso de prueba {#how-to-generate-testcase}
-Use [m.generate_testcase(state, name)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=generate_testcase#manticore.ethereum.ManticoreEVM.generate_testcase) para generar el testcase:
+Use [m.generate_testcase(state, name)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=generate_testcase#manticore.ethereum.ManticoreEVM.generate_testcase) para generar el caso de prueba:
```python
m.generate_testcase(state, 'BugFound')
@@ -373,13 +377,13 @@ m.generate_testcase(state, 'BugFound')
### Resumen {#summary-2}
-- Se puede iterar sobre el estado con m.all_state
+- Puede iterar sobre el estado con `m.all_states`
- `state.platform.get_balance(account.address)` devuelve el saldo de la cuenta
- `state.platform.transactions` devuelve la lista de transacciones
-- `transaction.return_data` corresponde a los datos devueltos
+- `transaction.return_data` son los datos devueltos
- `m.generate_testcase(state, name)` genera entradas para el estado
-### Resumen: obtener Throwing Path {#summary-getting-throwing-path}
+### Resumen: Obtención de la ruta de lanzamiento {#summary-getting-throwing-path}
```python
from manticore.ethereum import ManticoreEVM
@@ -395,7 +399,7 @@ contract_account = m.solidity_create_contract(source_code, owner=user_account)
symbolic_var = m.make_symbolic_value()
contract_account.f(symbolic_var)
-## Check if an execution ends with a REVERT or INVALID
+## Comprobar si una ejecución finaliza con REVERT o INVALID
for state in m.terminated_states:
last_tx = state.platform.transactions[-1]
if last_tx.result in ['REVERT', 'INVALID']:
@@ -403,13 +407,14 @@ for state in m.terminated_states:
m.generate_testcase(state, 'ThrowFound')
```
-Todo el código anterior que puede encontrar en el [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)
+Puede encontrar todo el código anterior en [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)
-_Note que podríamos haber generado un script mucho más simple, ya que todos los estados devueltos por terminated_state tienen REVERT o INVALID en su resultado: este ejemplo solo estaba destinado a demostrar cómo manipular la API._
+_Tenga en cuenta que podríamos haber generado un script mucho más simple, ya que todos los estados devueltos por `terminated_states` tienen REVERT o INVALID en su resultado: este ejemplo solo tenía la intención de demostrar cómo manipular la API._
## Adición de restricciones {#adding-constraints}
-Veremos cómo restringir la exploración. Supondremos que la documentación de `f()` indica que la función nunca es llamada con `a == 65`, así que cualquier error con `a == 65` no es un error real. El objetivo sigue siendo el contrato inteligente [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
+Veremos cómo restringir la exploración. Asumiremos que la
+documentación de `f()` establece que la función nunca se llama con `a == 65`, por lo que cualquier error con `a == 65` no es un error real. El objetivo es el siguiente contrato inteligente [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
```solidity
pragma solidity >=0.4.24 <0.6.0;
@@ -424,22 +429,22 @@ contract Simple {
### Operadores {#operators}
-El módulo sobre [Operadores](https://github.com/trailofbits/manticore/blob/master/manticore/core/smtlib/operators.py) facilita la manipulación de restricciones y provee, entre otras cosas:
+El módulo [Operators](https://github.com/trailofbits/manticore/blob/master/manticore/core/smtlib/operators.py) facilita la manipulación de restricciones; entre otros, proporciona:
- Operators.AND,
- Operators.OR,
-- Operators.UGT (sin firma mayores que),
-- Operators.UGE (sin firma mayores que o iguales a),
-- Operators.ULT (sin firma menores que),
-- Operators.ULE (sin firma menores o iguales a).
+- Operators.UGT (mayor que sin signo),
+- Operators.UGE (mayor o igual que sin signo),
+- Operators.ULT (menor que sin signo),
+- Operators.ULE (menor o igual que sin signo).
-Para importar el módulo, use:
+Para importar el módulo, use lo siguiente:
```python
from manticore.core.smtlib import Operators
```
-`Operators.CONCAT` se usa para concatenar un array a un valor. Por ejemplo, el return_data de una transacción necesita cambiarse a un valor para ser comprobado contra otro valor:
+`Operators.CONCAT` se usa para concatenar una matriz a un valor. Por ejemplo, el `return_data` de una transacción necesita cambiarse a un valor para ser comprobado contra otro valor:
```python
last_return = Operators.CONCAT(256, *last_return)
@@ -451,7 +456,8 @@ Puede usar restricciones globalmente o para un estado específico.
#### Restricción global {#state-constraint}
-Use `m.constran(constraint)` para agregar una restricción global. Por ejemplo, puede llamar a un contrato desde una dirección simbólica y restringir esta dirección para que sean valores específicos:
+Use `m.constrain(constraint)` para agregar una restricción global.
+Por ejemplo, puede llamar a un contrato desde una dirección simbólica y restringir esta dirección a valores específicos:
```python
symbolic_address = m.make_symbolic_value()
@@ -464,21 +470,23 @@ m.transaction(caller=user_account,
#### Restricción de estado {#state-constraint}
-Use [state.constrain(constraint)](https://manticore.readthedocs.io/en/latest/states.html?highlight=StateBase#manticore.core.state.StateBase.constrain) para añadir una restricción a un estado específico. Se puede usar para restringir el estado después de su exploración para verificar alguna propiedad en él.
+Use [state.constrain(constraint)](https://manticore.readthedocs.io/en/latest/states.html?highlight=StateBase#manticore.core.state.StateBase.constrain) para añadir una restricción a un estado específico.
+Se puede usar para restringir el estado después de su exploración para comprobar alguna propiedad en él.
-### Restricción de verificación {#checking-constraint}
+### Comprobación de restricciones {#checking-constraint}
-Use `solver.check(state.restricints)` para saber si una restricción todavía es viable. Por ejemplo, esto restringirá symbolic_value para que sea diferente de 65 y comprobará si el estado es todavía viable:
+Use `solver.check(state.constraints)` para saber si una restricción sigue siendo factible.
+Por ejemplo, lo siguiente restringirá `symbolic_value` para que sea diferente de 65 y comprobará si el estado sigue siendo factible:
```python
state.constrain(symbolic_var != 65)
if solver.check(state.constraints):
- # state is feasible
+ # el estado es factible
```
-### Resumen: adición de restricciones {#summary-adding-constraints}
+### Resumen: Adición de restricciones {#summary-adding-constraints}
-Al añadir restricción al código anterior, se obtiene:
+Al añadir una restricción al código anterior, se obtiene:
```python
from manticore.ethereum import ManticoreEVM
@@ -499,18 +507,18 @@ contract_account.f(symbolic_var)
no_bug_found = True
-## Check if an execution ends with a REVERT or INVALID
+## Comprobar si una ejecución finaliza con REVERT o INVALID
for state in m.terminated_states:
last_tx = state.platform.transactions[-1]
if last_tx.result in ['REVERT', 'INVALID']:
- # we do not consider the path were a == 65
+ # no consideramos la ruta donde a == 65
condition = symbolic_var != 65
if m.generate_testcase(state, name="BugFound", only_if=condition):
- print(f'Bug found, results are in {m.workspace}')
+ print(f'Error encontrado, los resultados están en {m.workspace}')
no_bug_found = False
if no_bug_found:
- print(f'No bug found')
+ print(f'No se encontró ningún error')
```
-Todo el código anterior que puede encontrar en el [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)
+Puede encontrar todo el código anterior en [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)
From 7bde07253fdeb688243d7494d51e26a0444c1887 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:45 -0300
Subject: [PATCH 151/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/formal-verification/index.md
---
.../formal-verification/index.md | 115 +++++++++---------
1 file changed, 58 insertions(+), 57 deletions(-)
diff --git a/public/content/translations/es/developers/docs/smart-contracts/formal-verification/index.md b/public/content/translations/es/developers/docs/smart-contracts/formal-verification/index.md
index f35d960f00f..ed4256733e0 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/formal-verification/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/formal-verification/index.md
@@ -4,7 +4,7 @@ description: Visión general de la verificación formal de los contratos intelig
lang: es
---
-Los [contratos inteligentes](/developers/docs/smart-contracts/) están haciendo posible crear aplicaciones descentralizadas, sin confianza y robustas que introduzcan nuevos casos de uso y proporcionen valor a los usuarios. Debido a que los contratos inteligentes manejan grandes cantidades de valor, la seguridad es una consideración crítica para los desarrolladores.
+[Los contratos inteligentes](/developers/docs/smart-contracts/) hacen posible crear aplicaciones descentralizadas, sin confianza y robustas que introducen nuevos casos de uso y desbloquean el valor para los usuarios. Debido a que los contratos inteligentes manejan grandes cantidades de valor, la seguridad es una consideración crítica para los desarrolladores.
La verificación formal es una de las técnicas recomendadas para mejorar la [seguridad de los contratos inteligentes](/developers/docs/smart-contracts/security/). La verificación formal, que utiliza [métodos formales](https://www.brookings.edu/techstream/formal-methods-as-a-path-toward-better-cybersecurity/) para especificar, diseñar y verificar programas, se ha utilizado durante años para garantizar la corrección de los sistemas críticos de hardware y software.
@@ -26,7 +26,7 @@ Se utilizan diferentes técnicas para modelar contratos inteligentes para la ver
Los modelos de alto nivel se centran en la relación entre los contratos inteligentes y los agentes externos, como las cuentas de propiedad externa (EOA), las cuentas de contratos y el entorno de la cadena de bloques. Dichos modelos son útiles para definir propiedades que especifican cómo debe comportarse un contrato en respuesta a ciertas interacciones del usuario.
-Por el contrario, otros modelos formales se centran en el comportamiento de bajo nivel de un contrato inteligente. Si bien los modelos de alto nivel pueden ayudar a razonar sobre la funcionalidad de un contrato, es posible que no puedan capturar detalles sobre el funcionamiento interno de la implementación. Los modelos de bajo nivel aplican una vista de caja blanca (white-box view) al análisis del programa y se basan en representaciones de nivel más bajo de aplicaciones de contratos inteligentes, como rastreos de programas y [gráficos de flujo de control](https://en.wikipedia.org/wiki/Control-flow_graph), para razonar sobre las propiedades relevantes para la ejecución de un contrato.
+Por el contrario, otros modelos formales se centran en el comportamiento de bajo nivel de un contrato inteligente. Si bien los modelos de alto nivel pueden ayudar a razonar sobre la funcionalidad de un contrato, es posible que no puedan capturar detalles sobre el funcionamiento interno de la implementación. Los modelos de bajo nivel aplican una vista de caja blanca al análisis de programas y se basan en representaciones de nivel inferior de las aplicaciones de contratos inteligentes, como trazas de programas y [grafos de flujo de control](https://en.wikipedia.org/wiki/Control-flow_graph), para razonar sobre las propiedades relevantes para la ejecución de un contrato.
Los modelos de bajo nivel se consideran ideales, ya que representan la ejecución real de un contrato inteligente en el entorno de ejecución de Ethereum (es decir, la [EVM](/developers/docs/evm/)). Las técnicas de modelado de bajo nivel son especialmente útiles para establecer propiedades de seguridad críticas en contratos inteligentes y detectar posibles vulnerabilidades.
@@ -34,7 +34,7 @@ Los modelos de bajo nivel se consideran ideales, ya que representan la ejecució
Una especificación es simplemente un requisito técnico que un sistema en particular debe cumplir. En la programación, las especificaciones representan ideas generales sobre la ejecución de un programa (es decir, lo que el programa debe hacer).
-En el contexto de los contratos inteligentes, las especificaciones formales se refieren a _propiedades_: descripciones formales de los requisitos que un contrato debe cumplir. Tales propiedades se describen como "invariantes" y representan afirmaciones lógicas sobre la ejecución de un contrato que deben seguir siendo verdaderas en todas las circunstancias posibles, sin ninguna excepción.
+En el contexto de los contratos inteligentes, las especificaciones formales se refieren a _propiedades_, descripciones formales de los requisitos que un contrato debe satisfacer. Tales propiedades se describen como "invariantes" y representan afirmaciones lógicas sobre la ejecución de un contrato que deben seguir siendo verdaderas en todas las circunstancias posibles, sin ninguna excepción.
Por lo tanto, podemos pensar en una especificación formal como una colección de declaraciones escritas en un lenguaje formal que describen la ejecución prevista de un contrato inteligente. Las especificaciones cubren las propiedades de un contrato y definen cómo debe comportarse el contrato en diferentes circunstancias. El propósito de la verificación formal es determinar si un contrato inteligente posee estas propiedades (invariantes) y que estas propiedades no se violen durante la ejecución.
@@ -44,55 +44,55 @@ Las especificaciones formales son fundamentales para desarrollar implementacione
Las especificaciones formales permiten el razonamiento matemático sobre la corrección de la ejecución de un programa. Al igual que con los modelos formales, las especificaciones formales pueden capturar propiedades de alto nivel o el comportamiento de bajo nivel de la implementación de un contrato.
-Las especificaciones formales se derivan utilizando elementos de [lógica del programa](https://en.wikipedia.org/wiki/Logic_programming), que permiten un razonamiento formal sobre las propiedades de un programa. Una lógica de programa tiene reglas formales que expresan (en lenguaje matemático) el comportamiento esperado de un programa. Se utilizan varias lógicas de programa para crear especificaciones formales, incluyendo [lógica de alcanzabilidad](https://en.wikipedia.org/wiki/Reachability_problem), [lógica temporal](https://en.wikipedia.org/wiki/Temporal_logic) y [lógica de Hoare](https://en.wikipedia.org/wiki/Hoare_logic).
+Las especificaciones formales se derivan utilizando elementos de la [lógica de programas](https://en.wikipedia.org/wiki/Logic_programming), que permiten el razonamiento formal sobre las propiedades de un programa. Una lógica de programa tiene reglas formales que expresan (en lenguaje matemático) el comportamiento esperado de un programa. Se utilizan varias lógicas de programas para crear especificaciones formales, incluyendo la [lógica de alcanzabilidad](https://en.wikipedia.org/wiki/Reachability_problem), la [lógica temporal](https://en.wikipedia.org/wiki/Temporal_logic) y la [lógica de Hoare](https://en.wikipedia.org/wiki/Hoare_logic).
-Las especificaciones formales para los contratos inteligentes se pueden clasificar ampliamente como **especificaciones de alto nivel** o **especificaciones de bajo nivel**. Independientemente de a qué categoría pertenezca una especificación, debe describir de manera adecuada e inequívoca la propiedad del sistema que se desea analizar.
+Las especificaciones formales para los contratos inteligentes se pueden clasificar en términos generales como especificaciones **de alto nivel** o **de bajo nivel**. Independientemente de a qué categoría pertenezca una especificación, debe describir de manera adecuada e inequívoca la propiedad del sistema que se desea analizar.
### Especificaciones de alto nivel {#high-level-specifications}
-Como su nombre lo indica, una especificación de alto nivel (también llamada "especificación orientada a modelos") describe el comportamiento de alto nivel de un programa. Las especificaciones de alto nivel modelan un contrato inteligente como una [máquina de estado finito](https://en.wikipedia.org/wiki/Finite-state_machine) (FSM), que puede hacer la transición entre estados mediante la realización de operaciones, con la lógica temporal utilizada para definir propiedades formales para el modelo FSM.
+Como su nombre lo indica, una especificación de alto nivel (también llamada "especificación orientada a modelos") describe el comportamiento de alto nivel de un programa. Las especificaciones de alto nivel modelan un contrato inteligente como una [máquina de estados finitos](https://en.wikipedia.org/wiki/Finite-state_machine) (FSM), que puede hacer la transición entre estados mediante la realización de operaciones, con la lógica temporal utilizada para definir propiedades formales para el modelo FSM.
-[Las lógicas temporales](https://en.wikipedia.org/wiki/Temporal_logic) son "reglas para razonar sobre proposiciones calificadas en términos de tiempo (por ejemplo, "Tengo _siempre_ hambre" o "Yo _eventualmente_ tendré hambre")." Cuando se aplican a la verificación formal, las lógicas temporales se utilizan para hacer afirmaciones sobre el comportamiento correcto de los sistemas modelados como máquinas de estado. Específicamente, una lógica temporal describe los estados futuros en los que puede estar un contrato inteligente y cómo hace la transición entre estados.
+[Las lógicas temporales](https://en.wikipedia.org/wiki/Temporal_logic) son "reglas para razonar sobre proposiciones calificadas en términos de tiempo (p. ej., "Yo _siempre_ tengo hambre" o "Yo _finalmente_ tendré hambre")." Cuando se aplican a la verificación formal, las lógicas temporales se utilizan para hacer afirmaciones sobre el comportamiento correcto de los sistemas modelados como máquinas de estado. Específicamente, una lógica temporal describe los estados futuros en los que puede estar un contrato inteligente y cómo hace la transición entre estados.
-Las especificaciones de alto nivel generalmente capturan dos propiedades temporales críticas para los contratos inteligentes: **seguridad** y **vitalidad**. Las propiedades de seguridad representan la idea de que "nunca pasa nada malo" y generalmente expresan invariancia. Una propiedad de seguridad puede definir requisitos generales de software, como la ausencia de [deadlock](https://www.techtarget.com/whatis/definition/deadlock), o expresar propiedades específicas del dominio para los contratos (por ejemplo, invariantes en el control de acceso para funciones, valores admisibles de variables de estado o condiciones para transferencias de tokens).
+Las especificaciones de alto nivel generalmente capturan dos propiedades temporales críticas para los contratos inteligentes: **seguridad** y **vitalidad**. Las propiedades de seguridad representan la idea de que "nunca pasa nada malo" y generalmente expresan invariancia. Una propiedad de seguridad puede definir requisitos generales de software, como la ausencia de [interbloqueo](https://www.techtarget.com/whatis/definition/deadlock), o expresar propiedades específicas del dominio para los contratos (p. ej., invariantes en el control de acceso para funciones, valores admisibles de variables de estado o condiciones para las transferencias de tokens).
-Tomemos por ejemplo este requisito de seguridad que cubre las condiciones para usar el `transfer()` o `transferFrom()` en los contratos de tokens ERC-20: _"El saldo de un remitente nunca es inferior a la cantidad solicitada de tokens que se enviarán". _. Esta descripción en lenguaje natural de un invariante de contrato se puede traducir en una especificación formal (matemática), que luego se puede comprobar rigurosamente para verificar su validez.
+Tomemos por ejemplo este requisito de seguridad que cubre las condiciones para usar `transfer()` o `transferFrom()` en contratos de token ERC-20: _"El saldo de un remitente nunca es inferior a la cantidad solicitada de tokens que se enviarán"_. Esta descripción en lenguaje natural de un invariante de contrato se puede traducir en una especificación formal (matemática), que luego se puede comprobar rigurosamente para verificar su validez.
-Las propiedades de vitalidad afirman que "algo bueno finalmente sucede" y se refieren a la capacidad de un contrato para progresar por diferentes estados. Un ejemplo de una propiedad de vitalidad es la "liquidez", que se refiere a la capacidad de un contrato para transferir sus saldos a usuarios a petición. Si se viola esta propiedad, los usuarios no podrían retirar los activos almacenados en el contrato, como lo que sucedió con el [incidente de la billetera de Parity](https://www.cnbc.com/2017/11/08/accidental-bug-may-have-frozen-280-worth-of-ether-on-parity-wallet.html).
+Las propiedades de vitalidad afirman que "algo bueno finalmente sucede" y se refieren a la capacidad de un contrato para progresar por diferentes estados. Un ejemplo de una propiedad de vitalidad es la "liquidez", que se refiere a la capacidad de un contrato para transferir sus saldos a usuarios a petición. Si esta propiedad se viola, los usuarios no podrían retirar los activos almacenados en el contrato, como lo que sucedió con el [incidente de la billetera Parity](https://www.cnbc.com/2017/11/08/accidental-bug-may-have-frozen-280-worth-of-ether-on-parity-wallet.html).
### Especificaciones de bajo nivel {#low-level-specifications}
Las especificaciones de alto nivel toman como punto de partida un modelo de estado finito de un contrato y definen las propiedades deseadas de este modelo. En contraste, las especificaciones de bajo nivel (también llamadas "especificaciones orientadas a propiedades") a menudo modelan programas (contratos inteligentes) como sistemas que constan de una colección de funciones matemáticas y describen el comportamiento correcto de dichos sistemas.
-En términos más simples, las especificaciones de bajo nivel analizan _rastros del programa_ e intentan definir las propiedades de un contrato inteligente sobre estos rastros. Los rastros, o pistas, se refieren a secuencias de ejecuciones de funciones que alteran el estado de un contrato inteligente; por lo tanto, las especificaciones de bajo nivel ayudan a especificar los requisitos para la ejecución interna de un contrato.
+En términos más simples, las especificaciones de bajo nivel analizan las _trazas de programa_ e intentan definir las propiedades de un contrato inteligente sobre estas trazas. Los rastros, o pistas, se refieren a secuencias de ejecuciones de funciones que alteran el estado de un contrato inteligente; por lo tanto, las especificaciones de bajo nivel ayudan a especificar los requisitos para la ejecución interna de un contrato.
Las especificaciones formales de bajo nivel se pueden dar como propiedades de estilo Hoare o invariantes en las rutas de ejecución.
### Propiedades de estilo Hoare {#hoare-style-properties}
-La [lógica de Hoare](https://en.wikipedia.org/wiki/Hoare_logic) proporciona un conjunto de reglas formales para razonar sobre la corrección de los programas, incluidos los contratos inteligentes. Una propiedad de estilo Hoare está representada por un triple Hoare `{P}c{Q}`, donde `c` es un programa y `P` y `Q` son predicados sobre el estado del `c` (es decir, el programa), descrito formalmente como _precondiciones_ y _poscondiciones_, respectivamente.
+[La lógica de Hoare](https://en.wikipedia.org/wiki/Hoare_logic) proporciona un conjunto de reglas formales para razonar sobre la corrección de los programas, incluidos los contratos inteligentes. Una propiedad de estilo Hoare se representa mediante una tripleta de Hoare `{P}c{Q}`, donde `c` es un programa y `P` y `Q` son predicados sobre el estado de `c` (es decir, el programa), descritos formalmente como _precondiciones_ y _poscondiciones_, respectivamente.
Una precondición es un predicado que describe las condiciones requeridas para la correcta ejecución de una función; los usuarios que invocan o llaman al contrato deben cumplir con este requisito. Una poscondición es un predicado que describe la condición que una función establece si se ejecuta correctamente; los usuarios pueden esperar que esta condición sea verdadera después de invocar la función. Un _invariante_ en la lógica de Hoare es un predicado que se conserva mediante la ejecución de una función (es decir, no cambia).
-Las especificaciones de estilo Hoare pueden garantizar _corrección parcial_ o _corrección total_. La implementación de la función de un contrato es "parcialmente correcta" si la condición previa es verdadera antes de que se ejecute la función, y si la ejecución termina, la poscondición también es verdadera. La prueba de corrección total se obtiene si una condición previa es verdadera antes de que se ejecute la función, se garantiza que la ejecución terminará y, cuando lo hace, la poscondición se mantiene verdadera.
+Las especificaciones de estilo Hoare pueden garantizar la _corrección parcial_ o la _corrección total_. La implementación de la función de un contrato es "parcialmente correcta" si la condición previa es verdadera antes de que se ejecute la función, y si la ejecución termina, la poscondición también es verdadera. La prueba de corrección total se obtiene si una condición previa es verdadera antes de que se ejecute la función, se garantiza que la ejecución terminará y, cuando lo hace, la poscondición se mantiene verdadera.
Obtener una prueba de corrección total es difícil, ya que algunas ejecuciones pueden retrasarse antes de terminar, o nunca terminar en absoluto. Dicho esto, la cuestión de si la ejecución termina es posiblemente un punto discutible, ya que el mecanismo de gas de Ethereum evita bucles de programa infinitos (la ejecución termina con éxito o termina debido a un error de "sin gas").
Las especificaciones de contratos inteligentes creadas utilizando la lógica de Hoare tendrán condiciones previas, poscondiciones e invariantes definidos para la ejecución de funciones y bucles en un contrato. Las precondiciones a menudo incluyen la posibilidad de entradas erróneas a una función, con condiciones posteriores que describen la respuesta esperada a dichas entradas (por ejemplo, lanzar una excepción específica). De esta manera, las propiedades de estilo Hoare son efectivas para garantizar la corrección de las implementaciones de contratos.
-Muchos marcos de verificación formal utilizan especificaciones de estilo Hoare para probar la corrección semántica de las funciones. También es posible añadir propiedades de estilo Hoare (como aserciones) directamente al código del contrato utilizando las declaraciones `require` y `assert` en Solidity.
+Muchos marcos de verificación formal utilizan especificaciones de estilo Hoare para probar la corrección semántica de las funciones. También es posible añadir propiedades de estilo Hoare (como aserciones) directamente al código del contrato utilizando las sentencias `require` y `assert` en Solidity.
-Las declaraciones `require` expresan una condición previa o invariante y a menudo se utilizan para validar las entradas del usuario, mientras que `assert` captura una poscondición necesaria para la seguridad. Por ejemplo, se puede lograr un control de acceso adecuado para las funciones (un ejemplo de una propiedad de seguridad) utilizando `require` como una comprobación previa de la identidad de la cuenta invocante. Del mismo modo, un invariante sobre los valores permitidos de las variables de estado en un contrato (por ejemplo, el número total de tokens en circulación) se puede proteger de la violación mediante el uso de `assert` para confirmar el estado del contrato después de la ejecución de la función.
+Las sentencias `require` expresan una precondición o invariante y se utilizan a menudo para validar las entradas del usuario, mientras que `assert` captura una poscondición necesaria para la seguridad. Por ejemplo, se puede lograr un control de acceso adecuado para las funciones (un ejemplo de una propiedad de seguridad) utilizando `require` como una comprobación de precondición sobre la identidad de la cuenta que realiza la llamada. Del mismo modo, un invariante sobre los valores permitidos de las variables de estado en un contrato (p. ej., el número total de tokens en circulación) puede protegerse contra violaciones utilizando `assert` para confirmar el estado del contrato después de la ejecución de la función.
-### Propiedades de nivel de rastreo {#trace-level-properties}
+### Propiedades a nivel de traza {#trace-level-properties}
Las especificaciones basadas en rastros o pistas describen las operaciones que hacen la transición de un contrato entre diferentes estados y las relaciones entre estas operaciones. Como se explicó anteriormente, los rastros son secuencias de operaciones que alteran el estado de un contrato de una manera particular.
-Este enfoque se basa en el modelo de contratos inteligentes como sistemas de transición de estados con algunos estados predefinidos (descritos por variables de estado) junto con un conjunto de transiciones predefinidas (descritas por funciones de contrato). Además, un [gráfico de flujo de control](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/) (CFG), que es una representación gráfica del flujo de ejecución de un programa, se utiliza a menudo para describir la semántica operativa de un contrato. Aquí, cada rastro se representa como una ruta en el gráfico de flujo de control.
+Este enfoque se basa en el modelo de contratos inteligentes como sistemas de transición de estados con algunos estados predefinidos (descritos por variables de estado) junto con un conjunto de transiciones predefinidas (descritas por funciones de contrato). Además, un [grafo de flujo de control](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/) (CFG), que es una representación gráfica del flujo de ejecución de un programa, se utiliza a menudo para describir la semántica operativa de un contrato. Aquí, cada rastro se representa como una ruta en el gráfico de flujo de control.
Principalmente, las especificaciones de nivel de rastreo se utilizan para razonar sobre los patrones de ejecución interna en los contratos inteligentes. Al crear especificaciones de nivel de rastreo, afirmamos las rutas de ejecución admisibles (es decir, transiciones de estado) para un contrato inteligente. Usando técnicas, como la ejecución simbólica, podemos verificar formalmente que la ejecución nunca siga un camino no definido en el modelo formal.
-Usemos un ejemplo de un contrato de [DAO](/dao/) que tiene algunas funciones de acceso público para describir las propiedades a nivel de rastreo. Aquí, asumimos que el contrato de DAO permite a los usuarios realizar las siguientes operaciones:
+Usemos un ejemplo de un contrato de una [DAO](/dao/) que tiene algunas funciones de acceso público para describir las propiedades a nivel de traza. Aquí, asumimos que el contrato de DAO permite a los usuarios realizar las siguientes operaciones:
- Depositar fondos
@@ -100,7 +100,7 @@ Usemos un ejemplo de un contrato de [DAO](/dao/) que tiene algunas funciones de
- Reclamar un reembolso si no votan una propuesta
-Ejemplos de propiedades de nivel de rastreo podrían ser _"los usuarios que no depositan fondos no pueden votar sobre una propuesta"_ o _"los usuarios que no voten sobre una propuesta siempre deben poder reclamar un reembolso"_. Ambas propiedades afirman secuencias de ejecución preferidas (la votación no puede ocurrir _antes_ de depositar fondos, y reclamar un reembolso no puede ocurrir _después_ de votar sobre una propuesta).
+Ejemplos de propiedades a nivel de traza podrían ser _"los usuarios que no depositan fondos no pueden votar en una propuesta"_ o _"los usuarios que no votan en una propuesta siempre deben poder reclamar un reembolso"_. Ambas propiedades afirman secuencias de ejecución preferidas (la votación no puede ocurrir _antes_ de depositar fondos y la reclamación de un reembolso no puede ocurrir _después_ de votar en una propuesta).
## Técnicas para la verificación formal de contratos inteligentes {#formal-verification-techniques}
@@ -108,19 +108,19 @@ Ejemplos de propiedades de nivel de rastreo podrían ser _"los usuarios que no d
La comprobación de modelos es una técnica de verificación formal en la que un algoritmo compara un modelo formal de un contrato inteligente con sus especificaciones. En la comprobación de modelos, los contratos inteligentes a menudo se representan como sistemas de transición de estado, mientras que las propiedades en estados de contrato permisibles se definen utilizando la lógica temporal.
-La comprobación de modelos requiere crear una representación matemática abstracta de un sistema (es decir, un contrato) y expresar las propiedades de este sistema utilizando fórmulas basadas en [lógica proposicional](https://www.baeldung.com/cs/propositional-logic). Esto simplifica la tarea del algoritmo de verificación del modelo, es decir, demostrar que un modelo matemático satisface una fórmula lógica dada.
+La comprobación de modelos requiere crear una representación matemática abstracta de un sistema (es decir, un contrato) y expresar las propiedades de este sistema utilizando fórmulas basadas en la [lógica proposicional](https://www.baeldung.com/cs/propositional-logic). Esto simplifica la tarea del algoritmo de verificación del modelo, es decir, demostrar que un modelo matemático satisface una fórmula lógica dada.
-La comprobación de modelos en la verificación formal se utiliza principalmente para evaluar las propiedades temporales que describen el comportamiento de un contrato a lo largo del tiempo. Las propiedades temporales de los contratos inteligentes incluyen _seguridad_ y _vitalidad_, que explicamos anteriormente.
+La comprobación de modelos en la verificación formal se utiliza principalmente para evaluar las propiedades temporales que describen el comportamiento de un contrato a lo largo del tiempo. Las propiedades temporales para los contratos inteligentes incluyen la _seguridad_ y la _vitalidad_, que explicamos anteriormente.
-Por ejemplo, una propiedad de seguridad relacionada con el control de acceso (por ejemplo, _Solo el propietario del contrato puede invocar `selfdestruct`_) se puede escribir en lógica formal. En lo sucesivo, el algoritmo de comprobación de modelos puede verificar si el contrato cumple con esta especificación formal.
+Por ejemplo, una propiedad de seguridad relacionada con el control de acceso (p. ej., _Solo el propietario del contrato puede llamar a `selfdestruct`_) se puede escribir en lógica formal. En lo sucesivo, el algoritmo de comprobación de modelos puede verificar si el contrato cumple con esta especificación formal.
La comprobación de modelos utiliza la exploración espacial de estado, lo que implica la construcción de todos los estados posibles de un contrato inteligente y el intento de encontrar estados alcanzables que resulten en violaciones de propiedad. Sin embargo, esto puede conducir a un número infinito de estados (conocidos como el "problema de la explosión de estado"), por lo que los verificadores de modelos se basan en técnicas de abstracción para hacer posible el análisis eficiente de los contratos inteligentes.
-### Prueba de teorema {#theorem-proving}
+### Demostración de teoremas {#theorem-proving}
La prueba de teorema es un método de razonamiento matemático sobre la corrección de los programas, incluidos los contratos inteligentes. Implica transformar el modelo del sistema de un contrato y sus especificaciones en fórmulas matemáticas (declaraciones lógicas).
-El objetivo de la prueba de teorema es verificar la equivalencia lógica entre estas afirmaciones. La "equivalencia lógica" (también llamada "doble implicación lógica") es un tipo de relación entre dos declaraciones de tal manera que la primera declaración es verdadera _si y solo si_ la segunda declaración es verdadera.
+El objetivo de la prueba de teorema es verificar la equivalencia lógica entre estas afirmaciones. La "equivalencia lógica" (también llamada "biimplicación lógica") es un tipo de relación entre dos enunciados tal que el primer enunciado es verdadero _si y solo si_ el segundo enunciado es verdadero.
La relación requerida (equivalencia lógica) entre las declaraciones sobre el modelo de un contrato y su propiedad se formula como una declaración demostrable (llamada teorema). Usando un sistema formal de inferencia, el verificador de teoremas automatizado puede verificar la validez del teorema. En otras palabras, un verificador de teoremas puede probar de manera concluyente que el modelo de un contrato inteligente coincide con precisión con sus especificaciones.
@@ -130,13 +130,13 @@ Como resultado, a menudo se requiere asistencia humana para guiar al verificador
### Ejecución simbólica {#symbolic-execution}
-La ejecución simbólica es un método para analizar un contrato inteligente mediante la ejecución de funciones utilizando _valores simbólicos_ (por ejemplo, `x > 5`) en lugar de _valores concretos_ (por ejemplo, `x == 5`). Como técnica de verificación formal, la ejecución simbólica se utiliza para razonar formalmente sobre las propiedades de nivel de rastreo en el código de un contrato.
+La ejecución simbólica es un método para analizar un contrato inteligente mediante la ejecución de funciones utilizando _valores simbólicos_ (p. ej., `x > 5`) en lugar de _valores concretos_ (p. ej., `x == 5`). Como técnica de verificación formal, la ejecución simbólica se utiliza para razonar formalmente sobre las propiedades de nivel de rastreo en el código de un contrato.
-La ejecución simbólica representa un rastreo de ejecución como una fórmula matemática sobre los valores de entrada simbólicos, también llamado _predicado de ruta_. Se utiliza un [solucionador SMT](https://en.wikipedia.org/wiki/Satisfiability_modulo_theories) para comprobar si un predicado de ruta es "satisfacible" (es decir, existe un valor que puede satisfacer la fórmula). Si una ruta vulnerable es satisfacible, el solucionador SMT generará un valor concreto que active la ejecución hacia esa ruta.
+La ejecución simbólica representa una traza de ejecución como una fórmula matemática sobre valores de entrada simbólicos, que también se denomina _predicado de ruta_. Se utiliza un [solucionador SMT](https://en.wikipedia.org/wiki/Satisfiability_modulo_theories) para comprobar si un predicado de ruta es "satisfacible" (es decir, si existe un valor que pueda satisfacer la fórmula). Si una ruta vulnerable es satisfacible, el solucionador SMT generará un valor concreto que active la ejecución hacia esa ruta.
-Supongamos que la función de un contrato inteligente toma como entrada un valor `uint` (`x`) y se revierte cuando `x` es mayor que `5` y también menor que `10`. Encontrar un valor para `x` que desencadene el error utilizando un procedimiento de prueba normal requeriría ejecutar docenas de casos de prueba (o más) sin la garantía de encontrar realmente una entrada que desencadene un error.
+Supongamos que la función de un contrato inteligente toma como entrada un valor `uint` (`x`) y se revierte cuando `x` es mayor que `5` y también menor que `10`. Encontrar un valor para `x` que desencadene el error utilizando un procedimiento de prueba normal requeriría ejecutar docenas de casos de prueba (o más) sin la garantía de encontrar realmente una entrada que desencadene el error.
-Por el contrario, una herramienta de ejecución simbólica ejecutaría la función con el valor simbólico: `X > 5 ∧ X < 10` (es decir, `x` es mayor que 5 Y `x` es menor que 10). El predicado de ruta asociado `x = X > 5 ∧ X < 10` se daría luego a un solucionador SMT para que lo resuelva. Si un valor en particular satisface la fórmula `x = X > 5 ∧ X < 10`, el solucionador SMT lo calculará; por ejemplo, el solucionador podría producir `7` como valor para `x`.
+Por el contrario, una herramienta de ejecución simbólica ejecutaría la función con el valor simbólico: `X > 5 ∧ X < 10` (es decir, `x` es mayor que 5 Y `x` es menor que 10). El predicado de ruta asociado `x = X > 5 ∧ X < 10` se le daría a un solucionador SMT para que lo resuelva. Si un valor particular satisface la fórmula `x = X > 5 ∧ X < 10`, el solucionador SMT lo calculará; por ejemplo, el solucionador podría producir `7` como valor para `x`.
Debido a que la ejecución simbólica se basa en las entradas en un programa, y el conjunto de entradas para explorar todos los estados alcanzables es potencialmente infinito, sigue siendo una forma de prueba. Sin embargo, como se muestra en el ejemplo, la ejecución simbólica es más eficiente que las pruebas regulares para encontrar entradas que desencadenen violaciones de propiedades.
@@ -152,15 +152,16 @@ function safe_add(uint x, uint y) returns(uint z){
require(z>=y);
return z;
+}
```
-Un rastreo de ejecución que resulte en un desbordamiento de enteros tendría que satisfacer la fórmula: `z = x + y AND (z >= x) AND (z=>y) AND (z < x OR z < y)`. Es poco probable que se resuelva una fórmula de este tipo, por lo que servirá como prueba matemática de que la función `safe_add` nunca resulte en el desbordamiento de enteros.
+Una traza de ejecución que da como resultado un desbordamiento de enteros necesitaría satisfacer la fórmula: `z = x + y AND (z >= x) AND (z >= y) AND (z < x OR z < y)` Es poco probable que se resuelva tal fórmula, por lo que sirve como prueba matemática de que la función `safe_add` nunca se desborda.
-### ¿Por qué usar la verificación formal para los contratos inteligentes? {#benefits-of-formal-verification}
+### ¿Por qué usar la verificación formal para los contratos inteligentes? Beneficios de la verificación formal {#benefits-of-formal-verification}
#### Necesidad de fiabilidad {#need-for-reliability}
-La verificación formal se utiliza para evaluar la corrección de los sistemas críticos para la seguridad cuya falla puede tener consecuencias devastadoras, como la muerte, lesiones o la ruina financiera. Los contratos inteligentes son aplicaciones de alto valor que controlan enormes cantidades de valor, y simples errores en el diseño pueden conducir a [pérdidas irrecuperables para los usuarios](https://www.freecodecamp.org/news/a-hacker-stole-31m-of-ether-how-it-happened-and-what-it-means-for-ethereum-9e5dc29e33ce/amp/). Sin embargo, la verificación formal de un contrato antes de la implementación puede aumentar las garantías de que funcionará como se espera una vez que se ejecute en la cadena de bloques.
+La verificación formal se utiliza para evaluar la corrección de los sistemas críticos para la seguridad cuya falla puede tener consecuencias devastadoras, como la muerte, lesiones o la ruina financiera. Los contratos inteligentes son aplicaciones de alto valor que controlan enormes cantidades de valor, y los errores simples en el diseño pueden conducir a [pérdidas irrecuperables para los usuarios](https://www.freecodecamp.org/news/a-hacker-stole-31m-of-ether-how-it-happened-and-what-it-means-for-ethereum-9e5dc29e33ce/amp/). Sin embargo, la verificación formal de un contrato antes de la implementación puede aumentar las garantías de que funcionará como se espera una vez que se ejecute en la cadena de bloques.
La fiabilidad es una cualidad muy deseada en cualquier contrato inteligente, especialmente porque el código implementado en la máquina virtual de Ethereum (EVM) suele ser inmutable. Dado que las actualizaciones posteriores al lanzamiento no son fácilmente accesibles, la necesidad de garantizar la fiabilidad de los contratos hace necesaria una verificación formal. La verificación formal es capaz de detectar problemas complicados, como desbordamientos hacia arriba y hacia abajo, el reingreso y optimizaciones de gas deficientes, que los auditores y los verificadores pueden pasar por alto.
@@ -170,7 +171,7 @@ Las pruebas de programa son el método más común para demostrar que un contrat
No obstante, este enfoque no puede probar la ejecución correcta de valores de entrada que no formen parte de la muestra. Por lo tanto, probar un contrato puede ayudar a detectar errores (es decir, si algunas rutas de código no devuelven los resultados deseados durante la ejecución), pero **no puede probar de manera concluyente la ausencia de errores**.
-Por el contrario, la verificación formal puede demostrar formalmente que un contrato inteligente cumple con los requisitos para un rango infinito de ejecuciones _sin_ ejecutar el contrato en absoluto. Esto requiere crear una especificación formal que describa con precisión los comportamientos correctos del contrato y desarrollar un modelo formal (matemático) del sistema del contrato. Así, podremos seguir un procedimiento de prueba formal para comprobar la coherencia entre el modelo del contrato y su especificación.
+Por el contrario, la verificación formal puede demostrar formalmente que un contrato inteligente satisface los requisitos para un rango infinito de ejecuciones _sin_ ejecutar el contrato en absoluto. Esto requiere crear una especificación formal que describa con precisión los comportamientos correctos del contrato y desarrollar un modelo formal (matemático) del sistema del contrato. Así, podremos seguir un procedimiento de prueba formal para comprobar la coherencia entre el modelo del contrato y su especificación.
Con la verificación formal, la cuestión de verificar si la lógica comercial de un contrato satisface los requisitos es una proposición matemática que puede ser probada o refutada. Al probar formalmente una proposición, podemos verificar un número infinito de casos de prueba con un número finito de pasos. De esta manera, la verificación formal tiene mejores perspectivas de demostrar que un contrato es funcionalmente correcto con respecto a una especificación.
@@ -182,7 +183,7 @@ Los contratos inteligentes, al menos hasta cierto punto, cumplen con ambos requi
### Ciclo de desarrollo más rápido {#faster-development-cycle}
-Las técnicas de verificación formal, como la verificación de modelos y la ejecución simbólica, son generalmente más eficientes que el análisis regular del código de los contratos inteligentes (realizado durante pruebas o auditorías). Esto se debe a que la verificación formal se basa en valores simbólicos para probar las afirmaciones ("¿qué pasa si un usuario intenta retirar _n_ ether?") a diferencia de las pruebas que utilizan valores concretos ("¿qué pasa si un usuario intenta retirar 5 ethers?").
+Las técnicas de verificación formal, como la verificación de modelos y la ejecución simbólica, son generalmente más eficientes que el análisis regular del código de los contratos inteligentes (realizado durante pruebas o auditorías). Esto se debe a que la verificación formal se basa en valores simbólicos para probar las aserciones ("¿y si un usuario intenta retirar _n_ ether?") a diferencia de las pruebas que utilizan valores concretos ("¿qué pasa si un usuario intenta retirar 5 ethers?").
Las variables de entrada simbólicas pueden cubrir múltiples clases de valores concretos, por lo que los enfoques de verificación formal prometen más cobertura de código en un período de tiempo más corto. Cuando se utiliza de manera efectiva, la verificación formal puede acelerar el ciclo de desarrollo para los desarrolladores.
@@ -190,7 +191,7 @@ La verificación formal también mejora el proceso de creación de aplicaciones
## Desventajas de la verificación formal {#drawbacks-of-formal-verification}
-### Coste del trabajo manual {#cost-of-manual-labor}
+### Costo del trabajo manual {#cost-of-manual-labor}
La verificación formal, especialmente la verificación semiautomatizada en la que un humano guía al verificador para obtener pruebas de corrección, requiere un trabajo manual considerable. Además, la creación de especificaciones formales es una actividad compleja que requiere un alto nivel de habilidad.
@@ -206,78 +207,78 @@ Si las especificaciones están mal escritas, las violaciones de las propiedades
La verificación formal tiene una serie de problemas de rendimiento. Por ejemplo, los problemas de explosión de estado y ruta encontrados durante la comprobación de modelos y la comprobación simbólica, respectivamente, pueden afectar a los procedimientos de verificación. Además, las herramientas de verificación formal a menudo utilizan solucionadores SMT y otros solucionadores de restricciones en su capa subyacente, y estos solucionadores se basan en procedimientos computacionalmente intensivos.
-Además, no siempre es posible que los verificadores de programas determinen si una propiedad (descrita como una fórmula lógica) se puede satisfacer o no (el "[problema de decidibilidad](https://en.wikipedia.org/wiki/Decision_problem)") porque es posible que un programa nunca termine. Como tal, podría ser imposible probar algunas propiedades para un contrato, incluso si está bien especificado.
+Además, no siempre es posible que los verificadores de programas determinen si una propiedad (descrita como una fórmula lógica) se puede satisfacer o no (el "[problema de decidibilidad](https://en.wikipedia.org/wiki/Decision_problem)"), porque es posible que un programa nunca termine. Como tal, podría ser imposible probar algunas propiedades para un contrato, incluso si está bien especificado.
-## Herramientas de verificación formal para contratos inteligentes de Ethereum {#formal-verification-tools}
+## Herramientas de verificación formal para los contratos inteligentes de Ethereum {#formal-verification-tools}
### Lenguajes de especificación para crear especificaciones formales {#specification-languages}
-**Act**: _*Act permite la especificación de actualizaciones de almacenamiento, pre/poscondiciones e invariantes del contrato. Su conjunto de herramientas también tiene backends de prueba capaces de probar muchas propiedades a través de Coq, solucionadores SMT o hevm.**
+**Act**: __Act permite la especificación de actualizaciones de almacenamiento, precondiciones/poscondiciones e invariantes de contrato.__ Su conjunto de herramientas también tiene backends de prueba capaces de probar muchas propiedades a través de Coq, solucionadores SMT o hevm.\*_
- [GitHub](https://github.com/ethereum/act)
-- [Documentación](https://ethereum.github.io/act/)
+- [Documentación](https://github.com/argotorg/act)
-**Scribble:** _*Scribble transforma las anotaciones de código del lenguaje de especificación de Scribble en afirmaciones concretas que comprueban la especificación. **
+**Scribble**: __Scribble transforma las anotaciones de código en el lenguaje de especificación Scribble en aserciones concretas que comprueban la especificación.__
- [Documentación](https://docs.scribble.codes/)
-**Dafny:** _*Dafny es un lenguaje de programación listo para la verificación que se basa en anotaciones de alto nivel para razonar y demostrar la corrección del código.**
+**Dafny**: __Dafny es un lenguaje de programación listo para la verificación que se basa en anotaciones de alto nivel para razonar y demostrar la corrección del código.__
- [GitHub](https://github.com/dafny-lang/dafny)
### Verificadores de programas para comprobar la corrección {#program-verifiers}
-**Certora Prover:** _Certora Prover es una herramienta de verificación formal automática para comprobar la corrección del código en contratos inteligentes. Las especificaciones están escritas en CVL (Certora Verification Language), y las violaciones de propiedad se detectan mediante una combinación de análisis estático y resolución de restricciones. _
+**Certora Prover**: _Certora Prover es una herramienta de verificación formal automática para comprobar la corrección del código en los contratos inteligentes._ Las especificaciones se escriben en CVL (Certora Verification Language), y las violaciones de las propiedades se detectan mediante una combinación de análisis estático y resolución de restricciones._
- [Sitio web](https://www.certora.com/)
- [Documentación](https://docs.certora.com/en/latest/index.html)
-**Solidity SMTChecker:** _*El SMTChecker de Solidity es un comprobador de modelos integrado basado en SMT (Satisfiability Modulo Theories) y resolución de Horn. Confirma si el código fuente de un contrato coincide con las especificaciones durante la compilación y comprueba estáticamente las violaciones de las propiedades de seguridad. **
+**SMTChecker de Solidity**: __El SMTChecker de Solidity es un comprobador de modelos integrado basado en SMT (Teorías de Satisfacibilidad Módulo) y resolución de Horn.__ Confirma si el código fuente de un contrato coincide con las especificaciones durante la compilación y comprueba estáticamente las violaciones de las propiedades de seguridad.\*_
- [GitHub](https://github.com/ethereum/solidity)
-**solc-verify:** _*solc-verify es una versión extendida del compilador de Solidity que puede realizar una verificación formal automatizada en el código de Solidity utilizando anotaciones y verificación de programa modular. **
+**solc-verify**: __solc-verify es una versión extendida del compilador de Solidity que puede realizar una verificación formal automatizada en el código de Solidity utilizando anotaciones y verificación modular de programas.__
- [GitHub](https://github.com/SRI-CSL/solidity)
-**KEVM:** _*KEVM es una semántica formal de la máquina virtual de Ethereum (EVM) escrita en el marco K. KEVM es ejecutable y puede probar ciertas afirmaciones relacionadas con propiedades utilizando la lógica de accesibilidad. **
+**KEVM**: __KEVM es una semántica formal de la Máquina Virtual de Ethereum (EVM) escrita en el marco K.__ KEVM es ejecutable y puede demostrar ciertas aserciones relacionadas con propiedades utilizando la lógica de alcanzabilidad.\*_
- [GitHub](https://github.com/runtimeverification/evm-semantics)
- [Documentación](https://jellopaper.org/)
-### Marcos lógicos para la prueba de teoremas {#theorem-provers}
+### Marcos lógicos para la demostración de teoremas {#theorem-provers}
-**Isabelle:** _Isabelle/HOL es un asistente de prueba que permite expresar fórmulas matemáticas en lenguaje formal y proporciona herramientas para probar esas fórmulas. La aplicación principal es la formalización de pruebas matemáticas y, en particular, la verificación formal, que incluye probar la corrección de hardware o software informático y probar las propiedades de lenguajes y protocolos informáticos. _
+**Isabelle**: _Isabelle/HOL es un asistente de pruebas que permite expresar fórmulas matemáticas en un lenguaje formal y proporciona herramientas para demostrar esas fórmulas._ La aplicación principal es la formalización de pruebas matemáticas y, en particular, la verificación formal, que incluye demostrar la corrección del hardware o software informático y demostrar las propiedades de los lenguajes y protocolos informáticos._
- [GitHub](https://github.com/isabelle-prover)
- [Documentación](https://isabelle.in.tum.de/documentation.html)
-**Coq:** _Coq es un verificador de teoremas interactivo que le permite definir programas utilizando teoremas y generar de forma interactiva pruebas de corrección revisadas por máquina. _
+**Rocq**: _Rocq es un demostrador de teoremas interactivo que le permite definir programas utilizando teoremas y generar interactivamente pruebas de corrección comprobadas por máquina._
-- [GitHub](https://github.com/coq/coq)
-- [Documentación](https://coq.github.io/doc/v8.13/refman/index.html)
+- [GitHub](https://github.com/rocq-prover/rocq)
+- [Documentación](https://rocq-prover.org/docs)
-### Herramientas basadas en la ejecución simbólica para detectar patrones vulnerables en contratos inteligentes {#symbolic-execution-tools}
+### Herramientas basadas en la ejecución simbólica para detectar patrones vulnerables en los contratos inteligentes {#symbolic-execution-tools}
-**Manticore:** _*Manticore es una herramienta de ejecución simbólica para el análisis de contratos inteligentes*. *
+**Manticore**: __Una herramienta para analizar el bytecode de la EVM basada en la ejecución simbólica_._
- [GitHub](https://github.com/trailofbits/manticore)
- [Documentación](https://github.com/trailofbits/manticore/wiki)
-**hevm:** _*hevm es un motor de ejecución simbólica y comprobador de equivalencia para el bytecode de EVM. **
+**hevm**: __hevm es un motor de ejecución simbólica y un verificador de equivalencia para el bytecode de la EVM.__
- [GitHub](https://github.com/dapphub/dapptools/tree/master/src/hevm)
-**Mito:** _Una herramienta de ejecución simbólica para detectar vulnerabilidades en los contratos inteligentes de Ethereum_
+**Mythril**: _Una herramienta de ejecución simbólica para detectar vulnerabilidades en los contratos inteligentes de Ethereum_
- [GitHub](https://github.com/ConsenSys/mythril-classic)
- [Documentación](https://mythril-classic.readthedocs.io/en/develop/)
-## Para mayor información {#further-reading}
+## Lecturas adicionales {#further-reading}
- [Cómo funciona la verificación formal de los contratos inteligentes](https://runtimeverification.com/blog/how-formal-verification-of-smart-contracts-works/)
-- [Cómo la verificación formal puede garantizar contratos inteligentes sin errores](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1)
-- [Visión general de los proyectos de verificación formal en el ecosistema de Ethereum](https://github.com/leonardoalt/ethereum_formal_verification_overview)
+- [Cómo la verificación formal puede garantizar contratos inteligentes impecables](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1)
+- [Una descripción general de los proyectos de verificación formal en el ecosistema de Ethereum](https://github.com/leonardoalt/ethereum_formal_verification_overview)
- [Verificación formal de extremo a extremo del contrato inteligente de depósito de Ethereum 2.0](https://runtimeverification.com/blog/end-to-end-formal-verification-of-ethereum-2-0-deposit-smart-contract/)
-- [Verificar formalmente el contrato inteligente más popular del mundo](https://www.zellic.io/blog/formal-verification-weth)
+- [Verificación formal del contrato inteligente más popular del mundo](https://www.zellic.io/blog/formal-verification-weth)
- [SMTChecker y la verificación formal](https://docs.soliditylang.org/en/v0.8.15/smtchecker.html)
From 24cc1c172d598bbde9eaca59a3e34d99b5f962f7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:47 -0300
Subject: [PATCH 152/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md
---
.../pos/weak-subjectivity/index.md | 20 +++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md
index aa982e3e616..02abcfe385d 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md
@@ -1,24 +1,24 @@
---
-title: Subjetividad debil
+title: Subjetividad débil
description: Una explicacion de la subjetividad debil y su función en PoS Ethereum.
lang: es
---
La subjetividad en la cadena de bloques hace referencia a la confianza social en la información para acordar el estado actual. Puede haber múltiples bifurcaciones válidas que se elijan de acuerdo a la información recopilada de otros pares de la red. La conversión es la objetividad que se refiere a las cadenas en las que sólo existe una cadena válida posible sobre la que todos los nodos necesariamente estarán de acuerdo aplicando sus reglas codificadas. También existe un tercer estado, conocido como subjetividad débil. Esto se refiere a una cadena que puede progresar objetivamente después de que alguna semilla inicial de información se recupere socialmente.
-## Pre requisitos {#prerequisites}
+## Requisitos previos {#prerequisites}
-Para entender esta página, es necesario primero familiarizarse con los fundamentos de la [Prueba de participación](/developers/docs/consensus-mechanisms/pos/).
+Para entender esta página es necesario entender primero los fundamentos de la [prueba de participación](/developers/docs/consensus-mechanisms/pos/).
## ¿Qué problemas resuelve la subjetividad débil? {#problems-ws-solves}
La subjetividad es inherente a las cadenas de bloques de prueba de participación porque la selección de la cadena correcta de múltiples bifurcaciones se realiza contando los votos históricos. Esto expone la cadena de bloques a varios vectores de ataque, incluidos los ataques de largo alcance en los que los nodos que participaron muy temprano en la cadena mantienen una bifurcación alternativa que liberan mucho más tarde para su propio beneficio. Alternativamente, si el 33 % de los validadores retiran su participación pero continúan certificando y produciendo bloques, podrían generar una bifurcación alternativa que entre en conflicto con la cadena predilecta. Los nuevos nodos o nodos que han estado fuera de línea durante mucho tiempo podrían no ser conscientes de que estos validadores atacantes han retirado sus fondos, por lo que los atacantes podrían engañarlos para que sigan una cadena incorrecta. Ethereum puede resolver estos vectores de ataque imponiendo restricciones que disminuyen los aspectos subjetivos del mecanismo y, por lo tanto, confía en las suposiciones, al mínimo.
-## Puntos de control de subjetividad débiles {#ws-checkpoints}
+## Puntos de control de subjetividad débil {#ws-checkpoints}
-La subjetividad débil se implementa en la prueba de participación de Ethereum mediante el uso de «puntos de control de subjetividad débiles». Estos son declaraciones de que todos los nodos de la red están de acuerdo en pertenecer a la cadena predilecta. Sirven el mismo propósito de «verdad universal» para los bloques originales, excepto que no se encuentran en la posición original en la cadena de bloques. El algoritmo de elección de bifurcación confía en que el estado de la cadena de bloques definido en ese punto de control sea correcto y verifica de forma independiente y objetiva la cadena a partir de ese momento. Los puntos de control actúan como «límites de reversión» porque los bloques localizados antes de los puntos de control de subjetividad débil no se pueden cambiar. Esto socava los ataques de largo alcance simplemente al definir que las bifurcaciones de largo alcance no son válidas como parte del diseño del mecanismo. Asegurarse de que los puntos de control de subjetividad débiles estén separados por una distancia más pequeña que el período de retirada del validador garantiza que un validador que bifurca la cadena sea recortado al menos una cantidad de umbral antes de que puedan retirar su participación y que los validadores cuya participación haya sido retirada no puedan engañar a los nuevos participantes en bifurcaciones incorrectas.
+La subjetividad débil se implementa en la prueba de participación de Ethereum mediante el uso de «puntos de control de subjetividad débiles». Estos son declaraciones de que todos los nodos de la red están de acuerdo en pertenecer a la cadena predilecta. Sirven para el mismo objetivo de «verdad universal» que el bloque génesis, con la excepción de que no se encuentran en la posición génesis en la cadena de bloques. El algoritmo de elección de bifurcación confía en que el estado de la cadena de bloques definido en ese punto de control sea correcto y verifica de forma independiente y objetiva la cadena a partir de ese momento. Los puntos de control actúan como «límites de reversión» porque los bloques localizados antes de los puntos de control de subjetividad débil no se pueden cambiar. Esto socava los ataques de largo alcance simplemente al definir que las bifurcaciones de largo alcance no son válidas como parte del diseño del mecanismo. Asegurarse de que los puntos de control de subjetividad débiles estén separados por una distancia más pequeña que el período de retirada del validador garantiza que un validador que bifurca la cadena sea recortado al menos una cantidad de umbral antes de que puedan retirar su participación y que los validadores cuya participación haya sido retirada no puedan engañar a los nuevos participantes en bifurcaciones incorrectas.
-## Diferencia entre los puntos de control de subjetividad débiles y los bloques finalizados {#difference-between-ws-and-finalized-blocks}
+## Diferencia entre los puntos de control de subjetividad débil y los bloques finalizados {#difference-between-ws-and-finalized-blocks}
Los nodos de Ethereum tratan de manera diferente los bloques finalizados y los puntos de control de subjetividad débiles. Si un nodo se da cuenta de dos bloques finalizados que compiten, entonces se rompe entre los dos: no tiene forma de identificar automáticamente cuál es la bifurcación predilecta. Esto es sintomático de un fracaso de consenso. En contraste, un nodo simplemente rechaza cualquier bloque que entre en conflicto con su punto de control de subjetividad débil. Desde la perspectiva del nodo, el punto de control de subjetividad débil representa una verdad absoluta que no puede ser socavada por el nuevo conocimiento de sus pares.
@@ -30,10 +30,10 @@ Un punto de control de subjetividad débil puede incluso venir como parte del so
Finalmente, se pueden solicitar puntos de control de otros nodos; tal vez otro usuario de Ethereum que ejecute un nodo completo pueda proporcionar un punto de control que los validadores puedan verificar con los datos de un explorador de bloques. En general, confiar en el proveedor de un punto de control de subjetividad débil puede considerarse tan problemático como confiar en los desarrolladores del cliente. Se requiere una confianza general baja. Es importante tener en cuenta que estas consideraciones solo se vuelven importantes en el muy poco probable caso de que la mayoría de los validadores conspiren para producir una bifurcación alternativa de la cadena de bloques. En cualquier otra circunstancia, solo hay una cadena de Ethereum para elegir.
-## Más información {#further-reading}
+## Lecturas recomendadas {#further-reading}
-- [Debilidad subjetiva en Eth2](https://notes.ethereum.org/@adiasg/weak-subjectvity-eth2)
+- [Subjetividad débil en Eth2](https://notes.ethereum.org/@adiasg/weak-subjectvity-eth2)
- [Vitalik: Cómo aprendí a amar la subjetividad débil](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/)
-- [Subjetividad débil (documentos de Teku)](https://docs.teku.consensys.io/concepts/weak-subjectivity)
-- [Guía de subjetividad débil, Fase-0](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/weak-subjectivity.md)
+- [Subjetividad débil (documentación de Teku)](https://docs.teku.consensys.io/concepts/weak-subjectivity)
+- [Guía de subjetividad débil de la fase 0](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/weak-subjectivity.md)
- [Análisis de la subjetividad débil en Ethereum 2.0](https://github.com/runtimeverification/beacon-chain-verification/blob/master/weak-subjectivity/weak-subjectivity-analysis.pdf)
From f9f6d0d8c7cced9f580383d20c887ae7e78c6a14 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:49 -0300
Subject: [PATCH 153/589] update(i18n):
public/content/translations/es/developers/docs/scaling/optimistic-rollups/index.md
---
.../docs/scaling/optimistic-rollups/index.md | 168 +++++++++---------
1 file changed, 85 insertions(+), 83 deletions(-)
diff --git a/public/content/translations/es/developers/docs/scaling/optimistic-rollups/index.md b/public/content/translations/es/developers/docs/scaling/optimistic-rollups/index.md
index 3da3c071151..d176901d521 100644
--- a/public/content/translations/es/developers/docs/scaling/optimistic-rollups/index.md
+++ b/public/content/translations/es/developers/docs/scaling/optimistic-rollups/index.md
@@ -1,26 +1,26 @@
---
title: Rollups optimistas
-description: 'Una introducción a los rollups optimistas: una solución de escalabilidad utilizada por la comunidad Ethereum.'
+description: "Una introducción a los rollups optimistas: una solución de escalabilidad utilizada por la comunidad Ethereum."
lang: es
---
-Los rollups optimistas son protocolos de capa 2 (L2) diseñados para ampliar el rendimiento de la capa base de Ethereum. Reducen el cómputo en la cadena principal de Ethereum al procesar las transacciones fuera de la cadena, ofreciendo mejoras significativas en la velocidad de procesamiento. A diferencia de otras soluciones de escalabilidad, como [cadenas laterales](/developers/docs/scaling/sidechains/), los rollups optimistas derivan la seguridad de la red principal publicando los resultados de las transacciones en cadena, o [cadenas de plasma](/developers/docs/scaling/plasma/), que también verifican las transacciones en Ethereum con pruebas de fraude, pero almacenan los datos de las transacciones en otros lugares.
+Los rollups optimistas son protocolos de capa 2 (L2) diseñados para ampliar el rendimiento de la capa base de Ethereum. Reducen la computación en la cadena principal de Ethereum procesando transacciones fuera de cadena, lo que ofrece mejoras significativas en la velocidad de procesamiento. A diferencia de otras soluciones de escalabilidad, como las [cadenas laterales](/developers/docs/scaling/sidechains/), los rollups optimistas derivan la seguridad de la red principal al publicar los resultados de las transacciones en la cadena, o las [cadenas de plasma](/developers/docs/scaling/plasma/), que también verifican las transacciones en Ethereum con pruebas de fraude, pero almacenan los datos de las transacciones en otro lugar.
Como la computación es la parte lenta y costosa del uso de Ethereum, los rollups optimistas pueden ofrecer mejoras de hasta 10-100x en la escalabilidad. Los rollups optimistas también escriben transacciones en Ethereum como `calldata` o en [blobs](/roadmap/danksharding/), lo que reduce los costos de gas para los usuarios.
## Requisitos previos {#prerequisites}
-Debería haber leído y entendido nuestras páginas sobre [escalabilidad de Ethereum](/developers/docs/scaling/) y [capa 2](/layer-2/).
+Debería haber leído y entendido las páginas donde hablamos de [Escalabilidad en Ethereum](/developers/docs/scaling/) y [Capa 2](/layer-2/).
## ¿Qué es un rollup optimista? {#what-is-an-optimistic-rollup}
-Un rollup optimista es un enfoque para escalar Ethereum que implica pasar la computación y el almacenamiento de estado fuera de la cadena. Los rollups optimistas ejecutan transacciones fuera de Ethereum, pero publican los datos de las transacciones en la Red principal como `calldata` o en [blobs](/roadmap/danksharding/).
+Un rollup optimista es un enfoque para escalar Ethereum que implica pasar la computación y el almacenamiento de estado fuera de la cadena. Los rollups optimistas ejecutan transacciones fuera de Ethereum, pero publican los datos de las transacciones en la red principal como `calldata` o en [blobs](/roadmap/danksharding/).
-Los operadores de rollup optimistas agrupan múltiples transacciones fuera de la cadena en grandes lotes antes de enviarlas a Ethereum. Este enfoque permite distribuir los costes fijos entre múltiples transacciones en cada lote, reduciendo así las tarifas para los usuarios finales. Los rollups optimistas también utilizan técnicas de compresión para reducir la cantidad de datos publicados en Ethereum.
+Los operadores de rollup optimista agrupan múltiples transacciones fuera de la cadena en grandes lotes antes de enviarlas a Ethereum. Este enfoque permite distribuir los costes fijos entre múltiples transacciones en cada lote, reduciendo así las tarifas para los usuarios finales. Los rollups optimistas también utilizan técnicas de compresión para reducir la cantidad de datos publicados en Ethereum.
-Los rollups optimistas se consideran «optimistas» porque asumen que las transacciones fuera de la cadena son válidas y no publican pruebas de validez para los lotes de transacciones publicados en la cadena. Esto separa los rollups optimistas de los [rollups de conocimiento cero](/developers/docs/scaling/zk-rollups) que publican [pruebas criptográficas de validez](/glossary/#validity-proof) para transacciones fuera de la cadena.
+Los rollups optimistas se consideran «optimistas» porque asumen que las transacciones fuera de la cadena son válidas y no publican pruebas de validez para los lotes de transacciones publicados en la cadena. Esto diferencia a los rollups optimistas de los [rollups de conocimiento cero](/developers/docs/scaling/zk-rollups) que publican [pruebas de validez](/glossary/#validity-proof) criptográficas para transacciones fuera de la cadena.
-En cambio, los rollups optimistas se basan en un esquema de prueba de fraude para detectar casos en los que las transacciones no se calculan correctamente. Después de enviar un lote de rollup en Ethereum, hay una ventana de tiempo (llamada período de desafío) durante la cual cualquiera puede desafiar los resultados de una transacción rollup calculando una [prueba de fraude](/glossary/#fraud-proof).
+En cambio, los rollups optimistas se basan en un esquema de prueba de fraude para detectar casos en los que las transacciones no se calculan correctamente. Después de que se envía un lote de rollup en Ethereum, hay una ventana de tiempo (llamada período de desafío) durante la cual cualquiera puede impugnar los resultados de una transacción de rollup calculando una [prueba de fraude](/glossary/#fraud-proof).
Si la prueba de fraude tiene éxito, el protocolo rollup vuelve a ejecutar la(s) transacción(es) y actualiza el estado del rollup en consecuencia. El otro efecto de una prueba de fraude exitosa es que el secuenciador responsable de incluir la transacción ejecutada incorrectamente en un bloque reciba una penalización.
@@ -28,25 +28,25 @@ Si el lote de rollup permanece sin impugnar (es decir, todas las transacciones s
## ¿Cómo interactúan los rollups optimistas con Ethereum? {#optimistic-rollups-and-Ethereum}
-Los rollups optimistas son [soluciones de escalabilidad fuera de la cadena](/developers/docs/scaling/#off-chain-scaling) creadas para operar sobre Ethereum. Cada rollup optimista lo administra un conjunto de contratos inteligentes desplegados en la red Ethereum. Los rollups optimistas procesan las transacciones fuera de la cadena principal de Ethereum, pero publican las transacciones fuera de la cadena (en lotes) en un contrato rollup en cadena. Al igual que la cadena de bloques de Ethereum, este registro de transacciones es inmutable y forma la «cadena de rollup optimista».
+Los rollups optimistas son [soluciones de escalabilidad fuera de la cadena](/developers/docs/scaling/#offchain-scaling) creadas para operar sobre Ethereum. Cada rollup optimista lo administra un conjunto de contratos inteligentes desplegados en la red Ethereum. Los rollups optimistas procesan las transacciones fuera de la cadena principal de Ethereum, pero publican transacciones fuera de la cadena (en bloques) en un contrato de rollup en cadena. Al igual que la cadena de bloques de Ethereum, este registro de transacciones es inmutable y forma la «cadena de rollup optimista».
La arquitectura de un rollup optimista comprende las siguientes partes:
-**Contratos en cadena**: La operación de los rollups optimistas está controlada por contratos inteligentes que se ejecutan en Ethereum. Esto incluye contratos que almacenan bloques de rollup, monitorean las actualizaciones de estado en el rollup y rastrean los depósitos de los usuarios. En este sentido, Ethereum sirve como capa base o «capa 1» para los rollups optimistas.
+**Contratos en cadena**: La operación del rollup optimista está controlada por contratos inteligentes que se ejecutan en Ethereum. Esto incluye contratos que almacenan bloques de rollup, monitorean las actualizaciones de estado en el rollup y rastrean los depósitos de los usuarios. En este sentido, Ethereum sirve como capa base o «capa 1» para los rollups optimistas.
-**Máquina virtual fuera de cadena (VM)**: Aunque los contratos que gestionan el protocolo de rollup optimista se ejecutan en Ethereum, el protocolo rollup realiza el cálculo y el almacenamiento de estado en otra máquina virtual separada de la [Máquina virtual Ethereum](/developers/docs/evm/). En la máquina virtual fuera de la cadena se activan las aplicaciones y se ejecutan los cambios de estado; sirve de capa superior o «capa 2» para un rollup optimista.
+**Máquina virtual (VM) fuera de la cadena**: Aunque los contratos que gestionan el protocolo del rollup optimista se ejecutan en Ethereum, el protocolo del rollup realiza el cálculo y el almacenamiento de estado en otra máquina virtual separada de la [máquina virtual de Ethereum](/developers/docs/evm/). En la máquina virtual fuera de cadena residen las aplicaciones y se ejecutan los cambios de estado; sirve como la capa superior (o capa 2) para un rollup optimista.
-Como los rollups optimistas están diseñados para ejecutar programas escritos o compilados para la EVM, la máquina virtual fuera de la cadena incorpora muchas especificaciones de diseño de la EVM. Además, las pruebas de fraude calculadas en cadena permiten que la red Ethereum refuerce el cumplimiento de la validez de los cambios de estado calculados en la máquina virtual fuera de la cadena VM.
+Como los rollups optimistas están diseñados para ejecutar programas escritos o compilados para la EVM, la máquina virtual fuera de la cadena incorpora muchas especificaciones de diseño de la EVM. Además, las pruebas de fraude computadas en la cadena permiten a la red de Ethereum hacer cumplir la validez de los cambios de estado computados en la VM fuera de la cadena.
-Los rollups optimistas pueden definirse como «soluciones de escalado híbridas» porque, aunque existen como protocolos separados, sus propiedades de seguridad se derivan de Ethereum. Entre otras cosas, Ethereum garantiza la exactitud del cálculo fuera de cadena de un rollup y la disponibilidad de datos detrás del cálculo. Esto hace que los rollups optimistas sean más seguros que los protocolos de escalabilidad fuera de la cadena (por ejemplo, [cadenas laterales](/developers/docs/scaling/sidechains/)) cuya seguridad no depende de Ethereum.
+Los rollups optimistas pueden definirse como «soluciones de escalabilidad híbridas» porque, aunque existen como protocolos separados, sus propiedades de seguridad se derivan de Ethereum. Entre otras cosas, Ethereum garantiza la exactitud del cálculo fuera de cadena de un rollup y la disponibilidad de los datos detrás del cálculo. Esto hace que los rollups optimistas sean más seguros que los protocolos de escalabilidad puramente fuera de la cadena (p. ej., [cadenas laterales](/developers/docs/scaling/sidechains/)) que no dependen de Ethereum para su seguridad.
Los rollups optimistas se basan en el protocolo principal de Ethereum para lo siguiente:
-### Disponibilidad de datos {#data-availability}
+### Disponibilidad de los datos {#data-availability}
-Como se mencionó, los rollups optimistas publican datos de transacciones en Ethereum como `calldata` o [blobs](/roadmap/danksharding/). Dado que la ejecución de la cadena de rollup se basa en las transacciones enviadas, cualquier persona puede usar esta información, anclada en la capa base de Ethereum, para ejecutar el estado del acumulable y verificar la exactitud de las transiciones de estado.
+Como se mencionó, los rollups optimistas publican datos de transacciones en Ethereum como `calldata` o en [blobs](/roadmap/danksharding/). Dado que la ejecución de la cadena de rollup se basa en las transacciones enviadas, cualquier persona puede usar esta información, anclada en la capa base de Ethereum, para ejecutar el estado del acumulable y verificar la exactitud de las transiciones de estado.
-[La disponibilidad de los datos](/developers/docs/data-availability/) es crítica porque sin acceso a los datos estatales, los retadores no pueden construir pruebas de fraude para disputar operaciones rollup no válidas. Al proporcionar Ethereum disponibilidad de datos, se reduce el riesgo de que los operadores de rollup se salgan con la suya mediante actos maliciosos (por ejemplo, la presentación de bloques no válidos).
+La [disponibilidad de los datos](/developers/docs/data-availability/) es crítica porque, sin acceso a los datos de estado, los retadores no pueden construir pruebas de fraude para disputar operaciones de rollup no válidas. Al proporcionar Ethereum disponibilidad de datos, se reduce el riesgo de que los operadores de rollup se salgan con la suya mediante actos maliciosos (por ejemplo, la presentación de bloques no válidos).
### Resistencia a la censura {#censorship-resistance}
@@ -64,19 +64,19 @@ Los rollups optimistas resuelven este problema obligando a los operadores a publ
- Los usuarios también pueden enviar sus transacciones en L1 en lugar del secuenciador, en cuyo caso el secuenciador tiene que incluir la transacción dentro de un cierto margen de tiempo para continuar produciendo bloques válidos.
-### Resolución {#settlement}
+### Liquidación {#settlement}
Otro papel que desempeña Ethereum en el contexto de los rollups optimistas es el de capa de asentamiento. Una capa de liquidación ancla todo el ecosistema de la cadena de bloques, establece la seguridad y proporciona una finalidad objetiva si se produce una disputa en otra cadena (rollups optimistas en este caso) que requiera arbitraje.
-La red principal de Ethereum proporciona un centro de rollups optimistas para verificar pruebas de fraude y resolver disputas. Además, las transacciones realizadas en el rollup solo son finales _después de_ que se acepte el bloque rollup en Ethereum. Una vez que una transacción rollup se compromete con la capa base de Ethereum, no se puede revertir (excepto en el caso altamente improbable de una reorganización de la cadena).
+La red principal de Ethereum proporciona un centro de rollups optimistas para verificar pruebas de fraude y resolver disputas. Además, las transacciones realizadas en el rollup solo son definitivas _después_ de que el bloque del rollup sea aceptado en Ethereum. Una vez que una transacción rollup se compromete con la capa base de Ethereum, no se puede revertir (excepto en el caso altamente improbable de una reorganización de la cadena).
## ¿Cómo funcionan los rollups optimistas? {#how-optimistic-rollups-work}
-### Ejecución de transacciones y agregación {#transaction-execution-and-aggregation}
+### Ejecución y agregación de transacciones {#transaction-execution-and-aggregation}
Los usuarios envían transacciones a los «operadores», que son nodos responsables de procesar las transacciones en el rollup optimista. También conocido como «validador» o «agregador», el operador añade las transacciones, comprime los datos subyacentes y publica el bloque en Ethereum.
-Aunque cualquiera puede convertirse en validador, los validadores de rollup optimistas deben proporcionar un vínculo antes de que bloques, al igual que un [sistema de prueba de participación](/developers/docs/consensus-mechanisms/pos/). Este enlace se puede recortar si el validador publica un bloque no válido o se basa en un bloque antiguo pero no válido (incluso si su bloque es válido). De esta manera, los rollups optimistas utilizan incentivos criptoeconómicos para garantizar que los validadores actúen con honestidad.
+Aunque cualquiera puede convertirse en un validador, los validadores de rollups optimistas deben proporcionar una fianza antes de producir bloques, de forma muy parecida a un [sistema de prueba de participación](/developers/docs/consensus-mechanisms/pos/). Este enlace se puede recortar si el validador publica un bloque no válido o se basa en un bloque antiguo pero no válido (incluso si su bloque es válido). De esta manera, los rollups optimistas utilizan incentivos criptoeconómicos para garantizar que los validadores actúen con honestidad.
Se espera que otros validadores de la cadena de rollup optimista ejecuten las transacciones enviadas utilizando su copia del estado del rollup. Si el estado final de un validador es diferente del estado propuesto por un operador, puede empezar un proceso de cuestionamiento y computar una prueba de fraude.
@@ -86,31 +86,31 @@ El secuenciador es diferente de un operador de rollup regular, porque tienen un
#### Envío de bloques de rollup a Ethereum {#submitting-blocks-to-ethereum}
-Como se ha mencionado anteriormente, el operador de un rollup optimista agrupa las transacciones fuera de la cadena en un lote y las envía a Ethereum para su certificación notarial. Este proceso consiste en comprimir los datos relacionados con las transacciones y publicarlos en Ethereum como `calldata` o en blobs.
+Como se ha mencionado anteriormente, el operador de un rollup optimista agrupa las transacciones fuera de la cadena en un lote y lo envía a Ethereum para su certificación notarial. Este proceso implica comprimir datos relacionados con transacciones y publicarlos en Ethereum como `calldata` o en blobs.
-`Calldata` es un área no modificable y no persistente en un contrato inteligente que se comporta principalmente como [memoria](/developers/docs/smart-contracts/anatomy/#memory). Si bien `calldata` persiste en la cadena como parte de los [registros del historial de la cadena de bloques](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs), no se almacena como parte del estado de Ethereum. Debido a que `calldata` no toca ninguna parte del estado de Ethereum, es más barato que el estado para almacenar datos en la cadena.
+`calldata` es un área no modificable y no persistente en un contrato inteligente que se comporta principalmente como la [memoria](/developers/docs/smart-contracts/anatomy/#memory). Aunque `calldata` persiste en la cadena como parte de los [registros del historial](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs) de la cadena de bloques, no se almacena como parte del estado de Ethereum. Debido a que `calldata` no toca ninguna parte del estado de Ethereum, es más barato para almacenar datos en la cadena que el estado.
-La palabra clave `calldata` también se utiliza en Solidity para pasar argumentos a una función de contrato inteligente en el momento de la ejecución. `Calldata` identifica la función que se activa durante una transacción y le proporciona información a la función en forma de una secuencia arbitraria de bytes.
+La palabra clave `calldata` también se usa en Solidity para pasar argumentos a una función de un contrato inteligente en el momento de la ejecución. `calldata` identifica la función que se llama durante una transacción y contiene las entradas para la función en forma de una secuencia arbitraria de bytes.
-En el contexto de las rollups optimistas, `calldata` se utiliza para enviar datos de transacción comprimidos al contrato en cadena. El operador de rollup añade un nuevo lote llamando a la función requerida en el contrato de rollup y pasando los datos comprimidos como argumentos de función. El uso de `calldata` reduce las tarifas de usuario, ya que la mayoría de los costes en los que incurren provienen del almacenamiento de datos en cadena.
+En el contexto de los rollups optimistas, `calldata` se usa para enviar datos de transacciones comprimidos al contrato en la cadena. El operador de rollup añade un nuevo lote llamando a la función requerida en el contrato de rollup y pasando los datos comprimidos como argumentos de función. El uso de `calldata` reduce las tarifas de los usuarios, ya que la mayoría de los costos en los que incurren los rollups provienen de almacenar datos en la cadena.
-Aquí está [un ejemplo](https://etherscan.io/tx/0x9102bfce17c58b5fc1c974c24b6bb7a924fb5fbd7c4cd2f675911c27422a5591) de un envío de lotes de rollup para mostrar cómo funciona este concepto. El secuenciador invocó el método `appendSequencerBatch()` y pasó los datos comprimidos de la transacción como entradas usando `calldata`.
+Aquí hay [un ejemplo](https://eth.blockscout.com/tx/0x9102bfce17c58b5fc1c974c24b6bb7a924fb5fbd7c4cd2f675911c27422a5591) de un envío de lote de rollup para mostrar cómo funciona este concepto. El secuenciador invocó el método `appendSequencerBatch()` y pasó los datos de la transacción comprimidos como entradas usando `calldata`.
Algunos rollups ahora utilizan blobs para publicar lotes de transacciones en Ethereum.
-Los blobs son no modificables y no persistentes (al igual que `calldata`), pero se podan del historial después de ~18 días. Para obtener más información sobre los blobs, consulte [Danksharding](/roadmap/danksharding).
+Los blobs no son modificables ni persistentes (al igual que `calldata`), pero se podan del historial después de ~18 días. Para más información sobre los blobs, consulte [Danksharding](/roadmap/danksharding).
### Compromisos de estado {#state-commitments}
-En cualquier momento, el estado del rollup optimista (cuentas, saldos, código de contrato, etc.) se organiza como un [árbol de Merkle](/whitepaper/#merkle-trees) denominado «árbol de estado». La raíz de este árbol de Merkle (raíz de estado), que hace referencia al último estado del rollup, se agrupa y se almacena en el contrato de rollup. Cada transición de estado en la cadena produce un nuevo estado de rollup, con el que un operador se compromete calculando una nueva raíz de estado.
+En cualquier momento, el estado del rollup optimista (cuentas, saldos, código del contrato, etc.) se organiza como un [árbol de Merkle](/whitepaper/#merkle-trees) llamado un «árbol de estado». La raíz de este árbol de Merkle (raíz de estado), que hace referencia al último estado del rollup, se agrupa y se almacena en el contrato de rollup. Cada transición de estado en la cadena produce un nuevo estado de rollup, con el que un operador se compromete calculando una nueva raíz de estado.
-Al publicar lotes, el operador debe enviar tanto las antiguas raíces de estado como las nuevas raíces de estado. Si la raíz de estado anterior coincide con la raíz de estado existente en el contrato en cadena, esta última se descarta y se reemplaza con la nueva raíz de estado.
+Al publicar lotes, el operador debe enviar tanto las antiguas raíces de estado como las nuevas raíces de estado. Si la raíz de estado antigua coincide con la raíz de estado existente en el contrato de cadena, esta última se descarta y se reemplaza con la nueva raíz de estado.
-El operador de rollup también debe confirmar una raíz de Merkle para el propio lote de transacciones. Esto permite a cualquier persona probar la inclusión de una transacción en el lote (en L1) presentando una [prueba de Merkle](/developers/tutorials/merkle-proofs-for-offline-data-integrity/).
+El operador de rollup también debe confirmar una raíz de Merkle para el propio lote de transacciones. Esto permite a cualquiera probar la inclusión de una transacción en el lote (en L1) presentando una [prueba de Merkle](/developers/tutorials/merkle-proofs-for-offline-data-integrity/).
Los compromisos de estado, especialmente las raíces de estado, son necesarios para demostrar la corrección de los cambios de estado en un rollup optimista. El contrato de rollup acepta nuevas raíces de estado de los operadores inmediatamente después de que se publiquen, pero más tarde puede eliminar raíces de estado no válidas para restaurar el rollup a su estado correcto.
-### Demostración de fraude {#fraud-proving}
+### Prueba de fraude {#fraud-proving}
Como se ha explicado anteriormente, los rollups optimistas permiten a cualquier persona publicar bloques sin proporcionar pruebas de validez. Sin embargo, para garantizar que la cadena siga siendo segura, los rollups optimistas especifican una ventana de tiempo durante la cual cualquiera puede disputar una transición de estado. Por lo tanto, a los bloques rollup se les denomina «afirmaciones», ya que cualquiera puede disputar su validez.
@@ -118,13 +118,13 @@ Si alguien disputa una afirmación, entonces el protocolo de rollup iniciará el
Los esquemas de prueba interactivos de una sola ronda reproducen las transacciones en disputa en L1 para detectar aserciones no válidas. El protocolo rollup emula la reejecución de la transacción en disputa en L1 (Ethereum) utilizando un contrato de verificador, y la raíz de estado calculada determina quién gana el desafío. Si la afirmación del retador sobre el estado correcto del rollup es acertada, se le penaliza al operador por la reducción de su fianza.
-Sin embargo, volver a ejecutar transacciones en L1 para detectar el fraude requiere la publicación de compromisos de estado para transacciones individuales y aumenta los datos de rollups que deben publicarse en cadena. La repetición de las transacciones también incurre en importantes costes de gas. Por estas razones, los rollups optimistas están cambiando a pruebas interactivas de varias rondas, lo que logra el mismo objetivo (es decir, detectar operaciones de rollup no válidas) con más eficiencia.
+Sin embargo, la reejecución de transacciones en L1 para detectar el fraude requiere la publicación de compromisos estatales para transacciones individuales y aumenta los rollups de datos que deben publicarse en cadena. La repetición de las transacciones también incurre en importantes costes de gas. Por estas razones, los rollups optimistas están cambiando a pruebas interactivas de varias rondas, lo que logra el mismo objetivo (es decir, detectar operaciones de rollup no válidas) con más eficiencia.
-#### Demostración interactiva de varias rondas {#multi-round-interactive-proving}
+#### Prueba interactiva multirronda {#multi-round-interactive-proving}
La prueba interactiva de varias rondas implica un protocolo de ida y vuelta entre el afirmador y el retador, supervisado por un contrato de verificador L1, que en última instancia decide quién miente. Después de que un nodo L2 desafía una afirmación, se requiere que el afirmador divida la afirmación en disputa en dos mitades iguales. Cada afirmación individual en este caso contendrá tantos pasos de cálculo como la otra.
-El retador elegirá entonces qué afirmación quiere desafiar. El proceso de división (llamado «protocolo de bisección») continúa hasta que ambas partes disputan una afirmación sobre un _único_ paso de ejecución. En este punto, el contrato L1 resolverá la disputa evaluando la instrucción (y su resultado) para pillar a la parte fraudulenta.
+El retador elegirá entonces qué afirmación quiere desafiar. El proceso de división (llamado «protocolo de bisección») continúa hasta que ambas partes disputan una aserción sobre un _único_ paso de ejecución. En este punto, el contrato L1 resolverá la disputa evaluando la instrucción (y su resultado) para pillar a la parte fraudulenta.
El afirmador debe proporcionar una «prueba de un solo paso» que verifique la validez del cálculo de un solo paso en disputa. Si el afirmador no proporciona la prueba de un solo paso, o el verificador L1 considera que la prueba no es válida, pierde el desafío.
@@ -132,47 +132,47 @@ Algunos apuntes sobre este tipo de prueba de fraude:
1. La prueba de fraude interactiva de varias rondas se considera eficiente porque minimiza el trabajo que la cadena L1 debe hacer en el arbitraje de disputas. En lugar de reproducir toda la transacción, la cadena L1 solo necesita volver a ejecutar un paso en la ejecución del rollup.
-2. Los protocolos de bisección reducen la cantidad de datos publicados en la cadena (no es necesario publicar confirmaciones de estado para cada transacción). Además, las transacciones rollup optimistas no están limitadas por el límite de gas de Ethereum. Por el contrario, los rollups optimistas que vuelven a ejecutar transacciones deben asegurarse de que una transacción L2 tenga un límite de gas más bajo para emular su ejecución dentro de una sola transacción de Ethereum.
+2. Los protocolos de bisección reducen la cantidad de datos publicados en cadena (sin necesidad de publicar confirmaciones de estado para cada transacción). Además, las transacciones rollup optimistas no están limitadas por el límite de gas de Ethereum. Por el contrario, los rollups optimistas que vuelven a ejecutar transacciones deben asegurarse de que una transacción L2 tenga un límite de gas más bajo para emular su ejecución dentro de una sola transacción de Ethereum.
3. Parte del vínculo del afirmador malicioso se otorga al retador, mientras que la otra parte se quema. La quema evita la connivencia entre los validadores; si dos validadores conspiran para iniciar desafíos falsos, aún perderán una parte considerable de toda la participación.
4. La prueba interactiva de varias rondas requiere que ambas partes (el afirmador y el retador) hagan movimientos dentro de la ventana de tiempo especificada. El hecho de no actuar antes de que venza la fecha límite hace que la parte incumplida pierda el desafío.
-#### ¿Por qué las pruebas de fraude son importantes para los rollups optimistas? {#fraud-proof-benefits}
+#### Por qué las pruebas de fraude son importantes para los rollups optimistas {#fraud-proof-benefits}
Las pruebas de fraude son importantes porque facilitan la _finalidad sin confianza_ en los rollups optimistas. La finalidad sin confianza es una calidad de los rollups optimistas que garantiza que se confirme una transacción siempre y cuando sea válida.
Los nodos maliciosos pueden intentar retrasar la confirmación de un bloque de rollup válido iniciando desafíos falsos. Sin embargo, las pruebas de fraude demostrarán a la larga la validez del bloque de rollup y harán que se confirme.
-Esto también se relaciona con otra propiedad de seguridad de los rollups optimistas: la validez de la cadena se basa en la existencia de _un_ nodo honesto. El nodo honesto puede avanzar en la cadena correctamente, ya sea publicando afirmaciones válidas o disputando afirmaciones no válidas. En cualquier caso, los nodos maliciosos que entran en disputas con el nodo honesto perderán sus participaciones durante el proceso de prueba de fraude.
+Esto también se relaciona con otra propiedad de seguridad de los rollups optimistas: la validez de la cadena depende de la existencia de _un_ nodo honesto. El nodo honesto puede avanzar en la cadena correctamente, ya sea publicando afirmaciones válidas o disputando afirmaciones no válidas. En cualquier caso, los nodos maliciosos que entran en disputas con el nodo honesto perderán sus participaciones durante el proceso de prueba de fraude.
-### Interoperabilidad de L1/L2 {#l1-l2-interoperability}
+### Interoperabilidad L1/L2 {#l1-l2-interoperability}
-Los rollups optimistas están diseñados para la interoperabilidad con la red principal de Ethereum y permiten a los usuarios pasar mensajes y datos arbitrarios entre L1 y L2. También son compatibles con la EVM, por lo que pueden portar [dapps](/developers/docs/dapps/) existentes a rollups optimistas o crear nuevas dapps utilizando las herramientas de desarrollo de Ethereum.
+Los rollups optimistas están diseñados para la interoperabilidad con la red principal de Ethereum y permiten a los usuarios pasar mensajes y datos arbitrarios entre L1 y L2. También son compatibles con la EVM, por lo que puede portar [dapps](/developers/docs/dapps/) existentes a rollups optimistas o crear nuevas dapps utilizando herramientas de desarrollo de Ethereum.
#### 1. Movimiento de activos {#asset-movement}
##### Claves para entrar en el rollup
-Para usar un rollup optimista, los usuarios depositan ETH, tókenes ERC-20 y otros activos aceptados en el contrato [puente](/developers/docs/bridges/) de la lista acumulada en L1. El contrato puente transmitirá la transacción a L2, donde se acuña una cantidad equivalente de activos y se envía a la dirección elegida por el usuario en el rollup optimista.
+Para usar un rollup optimista, los usuarios depositan ETH, tokens ERC-20 y otros activos aceptados en el contrato del [puente](/developers/docs/bridges/) del rollup en L1. El contrato puente transmitirá la transacción a L2, donde se acuña una cantidad equivalente de activos y se envía a la dirección elegida por el usuario en el rollup optimista.
-Las transacciones generadas por el usuario (como un depósito L1 > L2) generalmente se ponen en la cola hasta que el secuenciador las vuelve a enviar al contrato de rollup. Sin embargo, para preservar la resistencia a la censura, los rollups optimistas permiten a los usuarios enviar una transacción directamente al contrato rollup en cadena si se ha retrasado más allá del tiempo máximo permitido.
+Las transacciones generadas por el usuario (como un depósito L1 > L2) generalmente se ponen en cola hasta que el secuenciador las reenvía al contrato del rollup. Sin embargo, para preservar la resistencia a la censura, los rollups optimistas permiten a los usuarios enviar una transacción directamente al contrato rollup en cadena si se ha retrasado más allá del tiempo máximo permitido.
Algunos rollups optimistas adoptan un enfoque más directo para evitar que los secuenciadores censuren a los usuarios. Aquí, un bloque se define por todas las transacciones enviadas al contrato L1 desde el bloque anterior (por ejemplo, depósitos), además de las transacciones procesadas en la cadena rollup. Si un secuenciador ignora una transacción L1, publicará la (probablemente) incorrecta raíz de estado; por lo tanto, los secuenciadores no pueden retrasar los mensajes generados por el usuario una vez publicados en L1.
##### Claves para salir del rollup
-Retirarse de un rollup optimista a Ethereum es más difícil debido al esquema de prueba de fraude. Si un usuario inicia una transacción L2 > L1 para retirar fondos depositados en L1, debe esperar hasta que transcurra el período de desafío, que dura aproximadamente siete días. Sin embargo, el proceso de retirada en sí es bastante sencillo.
+Retirarse de un rollup optimista a Ethereum es más difícil debido al esquema de prueba de fraude. Si un usuario inicia una transacción L2 > L1 para retirar fondos en custodia en L1, debe esperar a que transcurra el período de desafío, que dura aproximadamente siete días. Sin embargo, el proceso de retirada en sí es bastante sencillo.
Después de que se inicie la solicitud de retiro en el rollup L2, la transacción se incluye en el siguiente lote, mientras que los activos del usuario en el rollup se queman. Una vez que el lote se publica en Ethereum, el usuario puede computar una prueba de Merkle que verifique la inclusión de su transacción de salida en el bloque. Entonces es cuestión de esperar a través del período de retraso para finalizar la transacción en L1 y retirar fondos a la red principal.
-Para evitar esperar una semana antes de retirar fondos a Ethereum, los usuarios de rollups optimistas pueden emplear a un **proveedor de liquidez** (LP). Un proveedor de liquidez asume la propiedad de una retirada pendiente de L2 y paga al usuario en L1 (a cambio de una tarifa).
+Para evitar esperar una semana antes de retirar fondos a Ethereum, los usuarios de rollups optimistas pueden emplear un **proveedor de liquidez** (LP). Un proveedor de liquidez asume la propiedad de una retirada pendiente de L2 y paga al usuario en L1 (a cambio de una tarifa).
Los proveedores de liquidez pueden comprobar la validez de la solicitud de retirada del usuario (ejecutando la cadena ellos mismos) antes de liberar fondos. De esta manera, tienen la garantía de que la transacción se confirmará eventualmente (es decir, una finalidad sin confianza).
#### 2. Compatibilidad con la EVM {#evm-compatibility}
-Para los desarrolladores, la ventaja de los rollups optimistas es su compatibilidad, o, mejor dicho, la equivalencia con la [Máquina Virtual de Ethereum (EVM)](/developers/docs/evm/). Los rollups compatibles con EVM cumplen con las especificaciones de la[Hoja amarilla de Ethereum](https://ethereum.github.io/yellowpaper/paper.pdf) y admiten el EVM a nivel de código de bytes.
+Para los desarrolladores, la ventaja de los rollups optimistas es su compatibilidad —o, mejor aún, su equivalencia— con la [Máquina Virtual de Ethereum (EVM)](/developers/docs/evm/). Los rollups compatibles con la EVM cumplen con las especificaciones del [Libro Amarillo de Ethereum](https://ethereum.github.io/yellowpaper/paper.pdf) y son compatibles con la EVM a nivel de bytecode.
La compatibilidad con EVM en los rollups optimistas tiene los siguientes beneficios:
@@ -182,7 +182,7 @@ ii. Los desarrolladores y los equipos de proyecto que utilizan rollups optimista
Es importante utilizar las herramientas existentes, porque se han sometido a auditorías, depuraciones y optimizaciones a lo largo de los años. También elimina la necesidad de que los desarrolladores de Ethereum aprendan a construir con una pila de desarrollo completamente nueva.
-#### 3. Llamadas de contrato entre cadenas {#cross-chain-contract-calls}
+#### 3. Llamadas a contratos entre cadenas {#cross-chain-contract-calls}
Los usuarios (cuentas de propiedad externa) interactúan con los contratos L2 enviando una transacción al contrato de rollup o haciendo que un secuenciador o validador lo haga por ellos. Los rollups optimistas también permiten que las cuentas de contratos en Ethereum interactúen con los contratos L2 utilizando contratos puente para transmitir mensajes y pasar datos entre L1 y L2. Esto significa que puede programar un contrato L1 en la red principal de Ethereum para invocar funciones que pertenecen a contratos en un rollup optimista L2.
@@ -190,64 +190,64 @@ Las llamadas de contrato de cadena cruzada ocurren de forma asíncrona, lo que s
Un ejemplo de una llamada de contrato entre cadenas es el depósito de tókenes descrito anteriormente. Un contrato en L1 pone en garantía los tókenes del usuario y envía un mensaje a un contrato L2 emparejado para acuñar una cantidad igual de tókenes en el rollup.
-A medida que las llamadas de mensajes entre cadenas ocasionan la ejecución del contrato, el remitente generalmente debe cubrir los [costes de gas](/developers/docs/gas/) para el cálculo. Es recomendable establecer un límite de gas alto para evitar que la transacción falle en la cadena deseada. Una situación de puenteo de tókenes es un buen ejemplo; si el lado L1 de la transacción (depositar los tókenes) funciona, pero el lado L2 (acuñar nuevos tókenes) falla debido a la baja cantidad de gas, el depósito se vuelve irrecuperable.
+Como las llamadas a mensajes entre cadenas dan como resultado la ejecución de un contrato, generalmente se requiere que el remitente cubra los [costos de gas](/developers/docs/gas/) para la computación. Es recomendable establecer un límite de gas alto para evitar que la transacción falle en la cadena deseada. Una situación de puenteo de tókenes es un buen ejemplo; si el lado L1 de la transacción (depositar los tókenes) funciona, pero el lado L2 (acuñar nuevos tókenes) falla debido a la baja cantidad de gas, el depósito se vuelve irrecuperable.
-Por último, debemos tener en cuenta que las llamadas de mensajes L2 > L1 entre contratos deben tener en cuenta los retrasos (las llamadas L1 > L2 generalmente se ejecutan después de unos minutos). Esto se debe a que los mensajes enviados a la red principal desde el rollup optimista no se pueden ejecutar hasta que caduque la ventana de desafío.
+Finalmente, debemos tener en cuenta que las llamadas a mensajes L2 > L1 entre contratos deben tener en cuenta los retrasos (las llamadas L1 > L2 se ejecutan normalmente después de algunos minutos). Esto se debe a que los mensajes enviados a la red principal desde el rollup optimista no se pueden ejecutar hasta que caduque la ventana de desafío.
## ¿Cómo funcionan las comisiones de rollups optimistas? {#how-do-optimistic-rollup-fees-work}
-Los rollups optimistas utilizan un esquema de tarifas de gas, al igual que Ethereum, para indicar cuánto pagan los usuarios por transacción. Las tarifas cobradas en los rollups optimistas dependen de los siguientes componentes:
+Los rollups optimistas utilizan un esquema de tarifas de gas, al igual que Ethereum, para indicar cuánto pagan los usuarios por transacción. Las tarifas que se cobran en los rollups optimistas dependen de los siguientes componentes:
-1. **Escritura de estado**: Los rollups optimistas publican datos de transacciones y encabezados de bloque (que constan de hash de encabezado de bloque anterior, raíz de estado, raíz por lotes) en Ethereum como un `blob`, u "objeto grande binario" (binary large object). [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) introdujo una solución rentable para incluir datos en cadena. Un `blob` es un nuevo campo de transacción que permite que los rollups publiquen datos de transición de estado comprimidos en la Capa 1 de Ethereum. A diferencia de `calldata`, que se queda permanentemente en la cadena, los blobs son de corta duración y se pueden podar de los clientes después de [4096 épocas](https://github.com/ethereum/consensus-specs/blob/81f3ea8322aff6b9fb15132d050f8f98b16bdba4/configs/mainnet.yaml#L147) (aproximadamente 18 días). Al usar blobs para publicar lotes de transacciones comprimidas, los rollups optimistas pueden reducir significativamente el costo de escribir transacciones en la Capa 1.
+1. **Escritura de estado**: Los rollups optimistas publican los datos de la transacción y los encabezados de bloque (que consisten en el hash del encabezado del bloque anterior, la raíz de estado y la raíz del lote) en Ethereum como un `blob` u «objeto binario grande». [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) introdujo una solución rentable para incluir datos en la cadena. Un `blob` es un nuevo campo de transacción que permite a los rollups publicar datos de transición de estado comprimidos en Ethereum L1. A diferencia de `calldata`, que permanece permanentemente en la cadena, los blobs son de corta duración y pueden ser podados de los clientes después de [4096 épocas](https://github.com/ethereum/consensus-specs/blob/81f3ea8322aff6b9fb15132d050f8f98b16bdba4/configs/mainnet.yaml#L147) (aproximadamente 18 días). Al usar blobs para publicar lotes de transacciones comprimidas, los rollups optimistas pueden reducir significativamente el costo de escribir transacciones en la Capa 1.
-2. **Gas de blob utilizado**: Las transacciones que cargan blobs emplean un mecanismo de tarifas dinámico similar al introducido por [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559). La tarifa de gas para las transacciones de tipo 3 tiene en cuenta la tarifa base para los blobs, que es determinada por la red en función de la demanda de espacio de blobs y el uso de espacio de blobs de la transacción que se envía.
+2. **Gas de blob utilizado**: las transacciones que contienen blobs emplean un mecanismo de tarifas dinámico similar al introducido por [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559). La tarifa de gas para las transacciones de tipo 3 tiene en cuenta la tarifa base para los blobs, que es determinada por la red en función de la demanda de espacio de blobs y el uso de espacio de blobs de la transacción que se envía.
-3. **Tarifas de operador L2**: Esta es la cantidad pagada a los nodos rollup como compensación por los costes computacionales incurridos en el procesamiento de transacciones, al igual que las tarifas de gas en Ethereum. Los nodos de rollups cobran comosiones de transacción más bajas, ya que los L2 tienen mayores capacidades de procesamiento y no se enfrentan a las congestiones de la red que obligan a los validadores de Ethereum a priorizar las transacciones con comisiones más altas.
+3. **Tarifas del operador de L2**: esta es la cantidad que se paga a los nodos del rollup como compensación por los costos computacionales incurridos en el procesamiento de transacciones, de forma muy parecida a las tarifas de gas en Ethereum. Los nodos de rollups cobran comosiones de transacción más bajas, ya que los L2 tienen mayores capacidades de procesamiento y no se enfrentan a las congestiones de la red que obligan a los validadores de Ethereum a priorizar las transacciones con comisiones más altas.
-Los rollups optimistas aplican varios mecanismos para reducir las tarifas a los usuarios, incluyendo el procesamiento por lotes de transacciones y la compresión de `calldata` para reducir los costes de publicación de datos. Puede consultar el [rastreador de comisiones L2](https://l2fees.info/) para obtener una visión general en tiempo real de cuánto cuesta usar los rollups optimistas basados en Ethereum.
+Los rollups optimistas aplican varios mecanismos para reducir las tarifas para los usuarios, incluido el procesamiento de transacciones por lotes y la compresión de `calldata` para reducir los costos de publicación de datos. Puede consultar el [seguidor de tarifas L2](https://l2fees.info/) para obtener una descripción general en tiempo real de cuánto cuesta usar los rollups optimistas basados en Ethereum.
## ¿Cómo escalan los rollups optimistas a Ethereum? {#scaling-ethereum-with-optimistic-rollups}
-Como se explicó, los rollups optimistas publican datos de transacciones comprimidos en Ethereum para garantizar la disponibilidad de los datos. La capacidad de comprimir los datos publicados en cadena es crucial para escalar el rendimiento en Ethereum con aumentos de rollups optimistas.
+Como se explicó, los rollups optimistas publican datos de transacciones comprimidos en Ethereum para garantizar la disponibilidad de los datos. La capacidad de comprimir los datos publicados en cadena es crucial para escalar el rendimiento en Ethereum con rollups optimistas.
-La cadena principal de Ethereum pone límites a la cantidad de bloques de datos que pueden contener, denominados en unidades de gas (el [tamaño promedio del bloque](/developers/docs/blocks/#block-size) es de 15 millones de gas). Si bien esto restringe la cantidad de gas que puede usar cada transacción, también significa que podemos aumentar las transacciones procesadas por bloque reduciendo los datos relacionados con las transacciones, mejorando directamente la escalabilidad.
+La cadena principal de Ethereum establece límites sobre la cantidad de datos que los bloques pueden contener, denominados en unidades de gas (el [tamaño de bloque promedio](/developers/docs/blocks/#block-size) es de 15 millones de gas). Si bien esto restringe la cantidad de gas que puede usar cada transacción, también significa que podemos aumentar las transacciones procesadas por bloque reduciendo los datos relacionados con las transacciones, mejorando directamente la escalabilidad.
-Los rollups optimistas utilizan varias técnicas para lograr la compresión de los datos de las transacciones y mejorar las tasas de TPS. Por ejemplo, este [artículo](https://vitalik.eth.limo/general/2021/01/05/rollup.html) compara los datos que una transacción básica de usuario (envío de ether) genera en la red principal con la cantidad de datos que genera la misma transacción en un rollup:
+Los rollups optimistas utilizan varias técnicas para lograr la compresión de los datos de las transacciones y mejorar las tasas de TPS. Por ejemplo, este [artículo](https://vitalik.eth.limo/general/2021/01/05/rollup.html) compara los datos que una transacción de usuario básica (envío de ether) genera en la red principal con la cantidad de datos que la misma transacción genera en un rollup:
-| Parámetro | Ethereum (L1) | Rollup (L2) |
-| ------------- | ----------------------- | ------------- |
-| Nonce | ~3 | 0 |
-| Precio de gas | ~8 | 0-0,5 |
-| Gas | 3 | 0-0,5 |
-| A | 21 | 4 |
-| Valor | 9 | ~3 |
-| Firma | ~68 (2 + 33 + 33) | ~0,5 |
-| De | 0 (recuperado de firma) | 4 |
-| **Total** | **~112 bytes** | **~12 bytes** |
+| Parámetro | Ethereum (L1) | Rollup (L2) |
+| ------------- | ---------------------------------------------------- | ------------------------------ |
+| Nonce | ~3 | 0 |
+| Precio de gas | ~8 | 0-0,5 |
+| Gas | 3 | 0-0,5 |
+| A | 21 | 4 |
+| Valor | 9 | ~3 |
+| Firma | ~68 (2 + 33 + 33) | ~0,5 |
+| De | 0 (recuperado de firma) | 4 |
+| **Total** | **~112 bytes** | **~12 bytes** |
Hacer algunos cálculos aproximados sobre estas cifras puede ayudar a mostrar las mejoras de escalabilidad que ofrece un rollup optimista:
-1. El tamaño deseado para cada bloque es de 15 millones de gas y cuesta 16 gas verificar un byte de datos. Dividir el tamaño medio del bloque entre 16 gases (15.000.000/16) muestra que el bloque medio puede contener **937.500 bytes de datos**.
-2. Si una transacción rollup básica utiliza 12 bytes, entonces el bloque medio de Ethereum puede procesar **78.125 transacciones de rollup** (937.5000/12) o **39 lotes rollup** (si cada lote tiene un promedio de 2.000 transacciones).
-3. Si se produce un nuevo bloque en Ethereum cada 15 segundos, entonces las velocidades de procesamiento del rollup ascenderían a aproximadamente **5,208 transacciones por segundo**. Esto se hace dividiendo el número de transacciones de rollup básicas que un bloque de Ethereum puede contener (**78.125**) entre el tiempo promedio del bloque (**15 segundos**).
+1. El tamaño deseado para cada bloque es de 15 millones de gas y cuesta 16 gas verificar un byte de datos. Dividir el tamaño de bloque promedio por 16 de gas (15 000 000/16) muestra que el bloque promedio puede contener **937 500 bytes de datos**.
+2. Si una transacción de rollup básica usa 12 bytes, entonces el bloque promedio de Ethereum puede procesar **78 125 transacciones de rollup** (937 500/12) o **39 lotes de rollup** (si cada lote contiene un promedio de 2000 transacciones).
+3. Si se produce un nuevo bloque en Ethereum cada 15 segundos, la velocidad de procesamiento del rollup ascendería a aproximadamente **5208 transacciones por segundo**. Esto se hace dividiendo el número de transacciones de rollup básicas que un bloque de Ethereum puede contener (**78 125**) por el tiempo de bloque promedio (**15 segundos**).
Esta es una estimación bastante optimista, dado que las transacciones rollup optimistas no pueden incluir un bloque completo en Ethereum. Sin embargo, puede dar una idea aproximada de la cantidad de ganancias de escalabilidad que los rollups optimistas pueden permitir a los usuarios de Ethereum (las implementaciones actuales ofrecen hasta 2.000 TPS).
-Se espera que la introducción de la [fragmentación de datos](/roadmap/danksharding/) en Ethereum mejore la escalabilidad en los rollups optimistas. Debido a que las transacciones rollup deben compartir espacio de bloques con otras transacciones no acumuladas, su capacidad de procesamiento está limitada por el rendimiento de datos en la cadena principal de Ethereum. El Danksharding aumentará el espacio disponible de las cadenas L2 para publicar datos por bloque, utilizando almacenamiento «blob» más barato e impermanente en lugar de un costoso y permanente `CALLDATA`.
+Se espera que la introducción de la [fragmentación de datos](/roadmap/danksharding/) en Ethereum mejore la escalabilidad en los rollups optimistas. Debido a que las transacciones rollup deben compartir espacio de bloques con otras transacciones no acumuladas, su capacidad de procesamiento está limitada por el rendimiento de datos en la cadena principal de Ethereum. Danksharding aumentará el espacio disponible para que las cadenas L2 publiquen datos por bloque, utilizando un almacenamiento de «blob» más económico e impermanente en lugar del costoso y permanente `CALLDATA`.
-### Pros y contras de los rollups optimistas {#optimistic-rollups-pros-and-cons}
+### Ventajas y desventajas de los rollups optimistas {#optimistic-rollups-pros-and-cons}
-| Ventajas | Desventajas |
-| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Ofrecen notables mejoras en la escalabilidad sin sacrificar la seguridad o la falta de confianza. | Retrasos en la finalidad de la transacción debido a posibles desafíos de fraude. |
-| Los datos de las transacciones se almacenan en la cadena de capa 1, lo que mejora la transparencia, la seguridad, la resistencia a la censura y la descentralización. | Los operadores de rollup centralizados (secuenciadores) pueden influir en el orden de las transacciones. |
-| La prueba de fraude garantiza la finalidad sin confianza y permite a las minorías honestas asegurar la cadena. | Si no hay nodos honestos, un operador malicioso puede robar fondos mediante la publicación de bloques y compromisos de estado no válidos. |
-| Las pruebas de fraude informáticas están abiertas al nodo L2 regular, a diferencia de las pruebas de validez (utilizadas en los ZK-rollups) que requieren hardware especial. | El modelo de seguridad se basa en al menos un nodo honesto que ejecute transacciones rollup y envíe pruebas de fraude para impugnar las transiciones de estado no válidas. |
-| Los rollups se benefician de la «vialidad sin confianza» (cualquiera puede obligar a la cadena a avanzar ejecutando transacciones y publicando afirmaciones) | Los usuarios deben esperar a que caduque el período de desafío de una semana antes de retirar los fondos de vuelta a Ethereum. |
-| Los rollups optimistas se basan en incentivos criptoeconómicos bien diseñados para aumentar la seguridad en la cadena. | Los rollups deben publicar todos los datos de las transacciones en cadena, lo que puede aumentar los costes. |
-| La compatibilidad con EVM y Solidity permite a los desarrolladores portar contratos inteligentes nativos de Ethereum a rollups o usar herramientas existentes para crear nuevas dapps. | |
+| Pros | Contras |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| Ofrecen notables mejoras en la escalabilidad sin sacrificar la seguridad o la falta de confianza. | Retrasos en la finalidad de la transacción debido a posibles desafíos de fraude. |
+| Los datos de las transacciones se almacenan en la cadena de capa 1, lo que mejora la transparencia, la seguridad, la resistencia a la censura y la descentralización. | Los operadores de rollup centralizados (secuenciadores) pueden influir en el orden de las transacciones. |
+| La prueba de fraude garantiza la finalidad sin confianza y permite a las minorías honestas asegurar la cadena. | Si no hay nodos honestos, un operador malicioso puede robar fondos mediante la publicación de bloques y compromisos de estado no válidos. |
+| Las pruebas de fraude informáticas están abiertas al nodo L2 regular, a diferencia de las pruebas de validez (utilizadas en los ZK-rollups) que requieren hardware especial. | El modelo de seguridad se basa en al menos un nodo honesto que ejecute transacciones rollup y envíe pruebas de fraude para impugnar las transiciones de estado no válidas. |
+| Los rollups se benefician de la «vialidad sin confianza» (cualquiera puede obligar a la cadena a avanzar ejecutando transacciones y publicando afirmaciones) | Los usuarios deben esperar a que caduque el período de desafío de una semana antes de retirar los fondos de vuelta a Ethereum. |
+| Los rollups optimistas se basan en incentivos criptoeconómicos bien diseñados para aumentar la seguridad en la cadena. | Los rollups deben publicar todos los datos de las transacciones en cadena, lo que puede aumentar los costes. |
+| La compatibilidad con EVM y Solidity permite a los desarrolladores portar contratos inteligentes nativos de Ethereum a rollups o usar herramientas existentes para crear nuevas dapps. | |
-### Explicación visual de los rollups optimistas {#optimistic-video}
+### Una explicación visual de los rollups optimistas {#optimistic-video}
¿Retiene usted mejor las cosas cuando las ve? Vea una explicación de Finematics de los rollups optimistas:
@@ -256,8 +256,10 @@ Se espera que la introducción de la [fragmentación de datos](/roadmap/dankshar
## Bibliografía para profundizar sobre los rollups optimistas
- [¿Cómo funcionan los rollups optimistas? (La guía completa)](https://www.alchemy.com/overviews/optimistic-rollups)
-- [¿Qué es un rollup de cadena de bloques?: introducción técnica](https://www.ethereum-ecosystem.com/blog/what-is-a-blockchain-rollup-a-technical-introduction)
-- [Guía esencial sobre Arbitrum](https://www.bankless.com/the-essential-guide-to-arbitrum)
-- [¿Cómo funcionan realmente los rollup optimistas?](https://www.paradigm.xyz/2021/01/how-does-optimism-s-rollup-really-work)
-- [Análisis detallado de OVM](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52)
-- [¿Qué es la máquina virtual optimista?](https://www.alchemy.com/overviews/optimistic-virtual-machine)
+- [¿Qué es un rollup de cadena de bloques? Una introducción técnica](https://www.ethereum-ecosystem.com/blog/what-is-a-blockchain-rollup-a-technical-introduction)
+- [La guía esencial de Arbitrum](https://www.bankless.com/the-essential-guide-to-arbitrum)
+- [La guía práctica de los rollups de Ethereum](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
+- [El estado de las pruebas de fraude en las L2 de Ethereum](https://web.archive.org/web/20241124154627/https://research.2077.xyz/the-state-of-fraud-proofs-in-ethereum-l2s)
+- [¿Cómo funciona realmente el rollup de Optimism?](https://www.paradigm.xyz/2021/01/how-does-optimism-s-rollup-really-work)
+- [OVM: un análisis en profundidad](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52)
+- [¿Qué es la Máquina Virtual Optimista?](https://www.alchemy.com/overviews/optimistic-virtual-machine)
From 2a5733b931ac07f33b4a4953b3a69900b856f6ee Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:50 -0300
Subject: [PATCH 154/589] update(i18n):
public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md
---
.../terms-and-conditions/index.md | 43 +++++++++++++++++++
1 file changed, 43 insertions(+)
create mode 100644 public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md
diff --git a/public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md b/public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md
new file mode 100644
index 00000000000..44a9a22e230
--- /dev/null
+++ b/public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md
@@ -0,0 +1,43 @@
+---
+title: Términos y condiciones
+lang: es
+template: translatatón
+---
+
+El Concurso de Traducción de Ethereum.org, también conocido como el «Translatatón», es una iniciativa experimental del equipo de ethereum.org para incentivar y recompensar las contribuciones al programa de traducción de ethereum.org.
+
+## Modificación y terminación {#modification-and-termination}
+
+Nos reservamos el derecho de modificar las reglas o de dar por terminado el Translatatón en cualquier momento y sin previo aviso. Todos los cambios entrarán en vigor inmediatamente después de su anuncio.
+
+## Elegibilidad, evaluación y premios {#eligibility-judging-and-prizes}
+
+La determinación de la elegibilidad, la metodología de puntuación y evaluación y la distribución de premios son de nuestra única e irrevocable discreción.
+
+## Privacidad de los datos {#data-privacy}
+
+Al enviar el formulario de solicitud, los solicitantes y participantes confirman que han leído y aceptan nuestra Política de Privacidad y consienten en compartir con nosotros la información solicitada, que puede incluir información que constituya datos personales. Mantendremos la confidencialidad de toda la información proporcionada, a excepción de los nombres de usuario de Crowdin y las imágenes de perfil proporcionados por los participantes, que podrán utilizarse en anuncios públicos relacionados con los resultados del concurso y los ganadores.
+
+## Estándares de traducción {#translation-standards}
+
+El uso de herramientas de traducción automática, según lo determinemos a nuestra entera discreción, podrá dar lugar a la descalificación del concurso. Además, la presentación de traducciones incorrectas o imprecisas, según lo determinemos a nuestra entera discreción, puede dar lugar a la inelegibilidad para la consideración de los premios. Asimismo, cualquier contribución a cadenas que ya hayan sido traducidas o revisadas, según lo determinemos a nuestra entera discreción, no se incluirá en la puntuación final de los participantes. Nos reservamos el derecho de tomar tales determinaciones, las cuales serán definitivas y vinculantes.
+
+## Propiedad intelectual {#intellectual-property}
+
+Los participantes aceptan que, al presentar un trabajo de traducción durante el Translatatón, conceden a la Ethereum Foundation una licencia irrevocable, no exclusiva y libre de regalías para usar, reproducir, distribuir, exhibir, modificar, adaptar, crear obras derivadas y alterar de cualquier otro modo su trabajo de traducción. Asimismo, los participantes aceptan que sus trabajos de traducción podrán ponerse a disposición del público en el sitio web ethereum.org bajo una licencia de código abierto, incluida una licencia Creative Commons, que permite a otros usar, compartir y desarrollar el trabajo.
+
+## Impuestos {#taxes}
+
+Cualquier implicación fiscal derivada de la recepción de los premios es responsabilidad exclusiva del receptor del premio.
+
+## Países bajo sanciones integrales {#comprehensively-sanctioned-countries}
+
+Los participantes de regiones o países que estén sujetos a sanciones internacionales integrales (incluidos, entre otros, Irán, Cuba, Siria, Corea del Norte y las regiones de Crimea, la República Popular de Donetsk y la República Popular de Lugansk de Ucrania) no serán elegibles para participar.
+
+## Exención de responsabilidad {#waiter-of-liability}
+
+Los participantes aceptan que la Ethereum Foundation, sus filiales y todos sus respectivos funcionarios, directores, empleados y agentes no tendrán responsabilidad alguna por lesiones, pérdidas o daños de cualquier tipo que surjan de su participación en el Translatatón o en relación con ella.
+
+## Ley aplicable {#governing-law}
+
+Cualquier disputa o reclamación que surja del Translatatón o se relacione con este (en cada caso, incluidas las disputas o reclamaciones no contractuales), se regirá e interpretará de conformidad con las leyes de Suiza, sin dar efecto a ninguna disposición o norma de elección o conflicto de leyes (ya sea de Suiza o de cualquier otra jurisdicción).
From 10aba1eee6a87fc25b8e87d05187ae16fd83ec03 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:52 -0300
Subject: [PATCH 155/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
---
.../dagger-hashimoto/index.md | 108 +++++++++---------
1 file changed, 52 insertions(+), 56 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
index 4a83a27882e..49585dd5c1e 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
@@ -1,35 +1,36 @@
---
title: Dagger Hashimoto
-description: Un examen detallado del algoritmo Dagger-Hashimoto.
+description: |
+ Un examen detallado del algoritmo Dagger-Hashimoto.
lang: es
---
-Dagger Hashimoto fue la implementación y especificación de investigación original para el algoritmo de minería de Ethereum. Dagger Hashimoto fue reemplazado por [Ethash](#ethash). El minado se desactivó por completo en [La Fusión](/roadmap/merge/) el 15 de septiembre de 2022. Desde entonces, Ethereum se ha asegurado a través de un mecanismo [de prueba de participación](/developers/docs/consensus-mechanisms/pos) en su lugar. Esta página es de interés histórico: la información que contiene ya no es relevante para Ethereum después de La Fusión.
+Dagger Hashimoto fue la implementación y especificación de investigación original para el algoritmo de minería de Ethereum. Dagger-Hashimoto fue sustituido por [Ethash](#ethash). La minería se desactivó por completo en [The Merge](/roadmap/merge/) el 15 de septiembre de 2022. Desde entonces, Ethereum se ha protegido utilizando un mecanismo de [prueba de participación](/developers/docs/consensus-mechanisms/pos) en su lugar. Esta página es de interés histórico: la información que contiene ya no es relevante para Ethereum después de La Fusión.
-## Pre-requisitos: {#prerequisites}
+## Requisitos previos {#prerequisites}
-Para entender mejor está página, le recomendamos leer primero acerca del [consenso de prueba de trabajo](/developers/docs/consensus-mechanisms/pow), [la minería](/developers/docs/consensus-mechanisms/pow/mining), y [los algoritmos de minado](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms).
+Para entender mejor esta página, le recomendamos que primero lea sobre el [consenso de prueba de trabajo](/developers/docs/consensus-mechanisms/pow), la [minería](/developers/docs/consensus-mechanisms/pow/mining) y los [algoritmos de minería](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms).
-## Dagger Hashimoto {#dagger-hashimoto}
+## Dagger-Hashimoto {#dagger-hashimoto}
Dagger-Hashimoto tiene como objetivo satisfacer dos objetivos:
-1. **Resistencia ASIC**: El beneficio de crear hardware especializado para el algoritmo debe ser lo más pequeño posible
-2. **Verificabilidad para clientes ligeros**: Un bloque debe ser verificable de forma eficiente por un cliente ligero.
+1. **Resistencia a ASIC**: el beneficio de crear un hardware especializado para el algoritmo debe ser lo más pequeño posible
+2. **Verificabilidad del cliente ligero**: un bloque debe poder ser verificado de manera eficiente por un cliente ligero.
Con una modificación adicional, también especificamos cómo cumplir un tercer objetivo si se desea, pero a costa de una complejidad adicional:
-**Almacenamiento de la cadena completa**: La minería debería requerir el almacenamiento del estado completo de la cadena de bloques (debido a la estructura irregular de la triada de estados de Ethereum, anticipamos que será posible realizar alguna poda, en particular de algunos contratos utilizados con frecuencia, pero queremos minimizarla).
+**Almacenamiento de la cadena completa**: la minería debería requerir el almacenamiento del estado completo de la cadena de bloques (debido a la estructura irregular del trie de estado de Ethereum, anticipamos que será posible realizar alguna poda, especialmente de algunos contratos de uso frecuente, pero queremos minimizar esto).
-## Generación de grafos acíclicos dirigidos (o DAG) {#dag-generation}
+## Generación de DAG {#dag-generation}
-El código del algoritmo se define en Python a continuación. Primero, damos `encode_int` para organizar ints sin firmar de precisión especificada a las cadenas. También se da su inverso:
+El código del algoritmo se define en Python a continuación. Primero, proporcionamos `encode_int` para serializar enteros sin signo de precisión especificada en cadenas. También se da su inverso:
```python
NUM_BITS = 512
def encode_int(x):
- "Encode an integer x as a string of 64 characters using a big-endian scheme"
+ "Codifica un entero x como una cadena de 64 caracteres utilizando un esquema big-endian"
o = ''
for _ in range(NUM_BITS / 8):
o = chr(x % 256) + o
@@ -37,7 +38,7 @@ def encode_int(x):
return o
def decode_int(s):
- "Unencode an integer x from a string using a big-endian scheme"
+ "Descodifica un entero x a partir de una cadena utilizando un esquema big-endian"
x = 0
for c in s:
x *= 256
@@ -45,7 +46,7 @@ def decode_int(s):
return x
```
-A continuación, asumimos que `sha3` es una función que toma un entero y genera un entero, y `dbl_sha3` es una función de doble SHA3; si se convierte este código de referencia en una implementación, use:
+A continuación, suponemos que `sha3` es una función que toma un entero y devuelve otro entero, y `dbl_sha3` es una función doble-sha3; si convierte este código de referencia en una implementation, utilice:
```python
from pyethereum import utils
@@ -65,26 +66,25 @@ def dbl_sha3(x):
Los parámetros utilizados para el algoritmo son:
```python
-SAFE_PRIME_512 = 2**512 - 38117 # Largest Safe Prime less than 2**512
+SAFE_PRIME_512 = 2**512 - 38117 # El número primo seguro más grande menor que 2**512
params = {
- "n": 4000055296 * 8 // NUM_BITS, # Size of the dataset (4 Gigabytes); MUST BE MULTIPLE OF 65536
- "n_inc": 65536, # Increment in value of n per period; MUST BE MULTIPLE OF 65536
- # with epochtime=20000 gives 882 MB growth per year
- "cache_size": 2500, # Size of the light client's cache (can be chosen by light
- # client; not part of the algo spec)
- "diff": 2**14, # Difficulty (adjusted during block evaluation)
- "epochtime": 100000, # Length of an epoch in blocks (how often the dataset is updated)
- "k": 1, # Number of parents of a node
- "w": w, # Used for modular exponentiation hashing
- "accesses": 200, # Number of dataset accesses during hashimoto
- "P": SAFE_PRIME_512 # Safe Prime for hashing and random number generation
+ "n": 4000055296 * 8 // NUM_BITS, # Tamaño del conjunto de datos (4 Gigabytes); DEBE SER MÚLTIPLO DE 65536
+ "n_inc": 65536, # Incremento en el valor de n por período; DEBE SER MÚLTIPLO DE 65536
+ # con epochtime=20000 da un crecimiento de 882 MB por año
+ "cache_size": 2500, # Tamaño de la caché del cliente ligero (puede ser elegido por el cliente ligero; no es parte de la especificación del algoritmo)
+ "diff": 2**14, # Dificultad (ajustada durante la evaluación del bloque)
+ "epochtime": 100000, # Duración de una época en bloques (con qué frecuencia se actualiza el conjunto de datos)
+ "k": 1, # Número de padres de un nodo
+ "w": w, # Utilizado para el hash de exponenciación modular
+ "accesses": 200, # Número de accesos al conjunto de datos durante hashimoto
+ "P": SAFE_PRIME_512 # Número primo seguro para el hash y la generación de números aleatorios
}
```
-`P` En este caso es un número primo elegido de tal manera que `log2(P)` es solo un poco menos de 512, lo que corresponde a los 512 bits que hemos estado usando para representar nuestros números. Tenga en cuenta que solo necesita almacenarse la segunda mitad del DAG, por lo que el requisito de RAM de facto comienza en 1 GB y crece 441 MB por año.
+`P`, en este caso, es un número primo elegido de tal manera que `log₂(P)` es solo un poco menor que 512, lo que corresponde a los 512 bits que hemos estado utilizando para representar nuestros números. Tenga en cuenta que solo necesita almacenarse la segunda mitad del DAG, por lo que el requisito de RAM de facto comienza en 1 GB y crece 441 MB por año.
-### Construcción del grafo de Dagger {#dagger-graph-building}
+### Construcción del grafo Dagger {#dagger-graph-building}
La primitiva de construcción del grafo de Dagger se define de la siguiente manera:
@@ -101,7 +101,7 @@ def produce_dag(params, seed, length):
return o
```
-Esencialmente, comienza con un grafo como un único nodo, `SHA3 (semilla)`, y a partir de ahí comienza a agregar secuencialmente otros nodos basados en nodos anteriores aleatorios. Cuando se crea un nuevo nodo, se calcula una potencia modular de la semilla para seleccionar aleatoriamente algunos índices menores de `i` (using `x % i` above), y los valores de los nodos en esos índices se utilizan en un cálculo para generar un nuevo valor para `x`, que luego se introduce en una pequeña función de prueba de trabajo (basada en XOR) para generar finalmente el valor del grafo en el índice `i`. La explicación detrás de este diseño en particular es forzar el acceso secuencial del DAG; el siguiente valor del DAG al que se accederá no se puede determinar hasta que se conozca el valor actual. Por último, la exponenciación modular codifica aún más el resultado.
+Esencialmente, inicia un grafo como un único nodo, `sha3(seed)`, y a partir de ahí comienza a agregar secuencialmente otros nodos basados en nodos anteriores aleatorios. Cuando se crea un nuevo nodo, se calcula una potencia modular de la semilla para seleccionar aleatoriamente algunos índices menores que `i` (usando `x % i` arriba), y los valores de los nodos en esos índices se usan en un cálculo para generar un nuevo valor para `x`, que luego se introduce en una pequeña función de prueba de trabajo (basada en XOR) para generar finalmente el valor del grafo en el índice `i`. La explicación detrás de este diseño en particular es forzar el acceso secuencial del DAG; el siguiente valor del DAG al que se accederá no se puede determinar hasta que se conozca el valor actual. Por último, la exponenciación modular codifica aún más el resultado.
Este algoritmo se basa en varios resultados de la teoría de números. Consulte el Apéndice a continuación para ver la explicación.
@@ -131,11 +131,11 @@ def quick_calc(params, seed, p):
return quick_calc_cached(p)
```
-Esencialmente, consiste sencillamente en reescribir el algoritmo anterior que elimina el bucle de cálculo de los valores de todo el DAG y reemplaza la búsqueda de nodo anterior con una llamada recursiva o una búsqueda de caché. Tenga en cuenta que para `k=1` la caché es innecesaria, aunque una optimización adicional en realidad precalcula los primeros miles de valores del DAG y los mantiene como una caché estática para los cálculos; consulte el apéndice para una implementación de código relacionado.
+Esencialmente, consiste sencillamente en reescribir el algoritmo anterior que elimina el bucle de cálculo de los valores de todo el DAG y reemplaza la búsqueda de nodo anterior con una llamada recursiva o una búsqueda de caché. Tenga en cuenta que para `k=1` la caché es innecesaria, aunque una optimización adicional precalcula los primeros miles de valores del DAG y los mantiene como una caché estática para los cálculos; consulte el apéndice para una implementación de código de esto.
## Doble búfer de DAG {#double-buffer}
-En un cliente completo, se utiliza un [_búfer doble_](https://wikipedia.org/wiki/Multiple_buffering) de 2 DAG producido por la fórmula anterior. La idea es que los DAG se produzcan cada `época` número de bloques de acuerdo con los parámetros anteriores. En lugar de que el cliente use el último DAG producido, usa el anterior. El beneficio de esto es que permite que los DAG se reemplacen con el tiempo sin necesidad de incorporar un paso en el que los mineros de repente tengan que volver a calcular todos los datos. De lo contrario, existe el potencial de una desaceleración temporal abrupta en el procesamiento de la cadena a intervalos regulares y un aumento notable de la centralización. Por lo tanto, el ataque de 51 % se arriesga dentro de esos pocos minutos, antes de que se vuelvan a calcular todos los datos.
+En un cliente completo, se utiliza un [_doble búfer_](https://wikipedia.org/wiki/Multiple_buffering) de 2 DAG producidos por la fórmula anterior. La idea es que los DAG se producen cada `epochtime` número de bloques de acuerdo con los parámetros anteriores. En lugar de que el cliente use el último DAG producido, usa el anterior. El beneficio de esto es que permite que los DAG se reemplacen con el tiempo sin necesidad de incorporar un paso en el que los mineros de repente tengan que volver a calcular todos los datos. De lo contrario, existe el potencial de una desaceleración temporal abrupta en el procesamiento de la cadena a intervalos regulares y un aumento notable de la centralización. Por lo tanto, el ataque de 51 % se arriesga dentro de esos pocos minutos, antes de que se vuelvan a calcular todos los datos.
El algoritmo utilizado para generar el conjunto de DAG usado para calcular el trabajo de un bloque es el siguiente:
@@ -164,7 +164,7 @@ def get_daggerset(params, block):
dagsz = get_dagsize(params, block)
seedset = get_seedset(params, block)
if seedset["front_hash"] <= 0:
- # No back buffer is possible, just make front buffer
+ # No es posible un búfer de fondo, solo crear un búfer de frente
return {"front": {"dag": produce_dag(params, seedset["front_hash"], dagsz),
"block_number": 0}}
else:
@@ -254,56 +254,52 @@ Además, tenga en cuenta que Dagger-Hashimoto impone requisitos adicionales en e
- Para que la verificación de dos capas funcione, un encabezado de bloque debe tener tanto el nonce como el valor medio previo a SHA3.
- En algún lugar, un encabezado de bloque debe almacenar el SHA3 del conjunto de semillas actual.
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-_¿Conoce algún recurso en la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Apéndice {#appendix}
-Como se señaló anteriormente, el RNG utilizado para la generación de DAG se basa en algunos resultados de la teoría de números. En primer lugar, nos aseguramos de que el RNG de Lehmer que es la base de la variable `picker` tenga un período amplio. En segundo lugar, mostramos que `pow(x,3,P)` no asignará `x` a `1` ni `P-1` siempre que `x ∈ [2,P-2]` para comenzar. Por último, mostramos que `pow(x,3,P)` tiene una baja tasa de colisión cuando se trata como una función de hashing.
+Como se señaló anteriormente, el RNG utilizado para la generación de DAG se basa en algunos resultados de la teoría de números. Primero, garantizamos que el GNA de Lehmer, que es la base de la variable `picker`, tenga un período amplio. Segundo, mostramos que `pow(x,3,P)` no mapeará `x` a `1` o `P-1` siempre que `x ∈ [2,P-2]` para empezar. Finalmente, mostramos que `pow(x,3,P)` tiene una baja tasa de colisión cuando se trata como una función de hash.
-### Generador de números aleatorios Lehmer {#lehmer-random-number}
+### Generador de números aleatorios de Lehmer {#lehmer-random-number}
-Si bien la función `produce_dag` no necesita producir números aleatorios imparciales, una amenaza potencial es que `seed**i % P` solo toma un puñado de valores. Esto podría proporcionar una ventaja para que los mineros reconozcan el patrón sobre aquellos que no lo hacen.
+Si bien la función `produce_dag` no necesita producir números aleatorios insesgados, una amenaza potencial es que `seed**i % P` solo tome un puñado de valores. Esto podría proporcionar una ventaja para que los mineros reconozcan el patrón sobre aquellos que no lo hacen.
-Para evitarlo, se apela a un resultado de la teoría de los números. Un [_Safe Prime_](https://en.wikipedia.org/wiki/Safe_prime) se define como un primo `P` de tal manera que `(P-1)/2` también es primo. El _order_ de un miembro `x` del [multiplicative group](https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n) `ℤ/nℤ` se define como el `m` mínimo, de tal manera que
xᵐ mod P ≡ 1
+Para evitarlo, se apela a un resultado de la teoría de los números. Un [_Número primo seguro_](https://en.wikipedia.org/wiki/Safe_prime) se define como un número primo `P` tal que `(P-1)/2` también es primo. El _orden_ de un miembro `x` del [grupo multiplicativo](https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n) `ℤ/nℤ` se define como el `m` mínimo tal que
xᵐ mod P ≡ 1
Dadas estas definiciones, tenemos:
-> Observación n.º 1 Deje que `x` sea miembro del grupo multiplicativo `ℤ/Pℤ` para un primo seguro `P`. Si `x mod P ≠ 1 mod P` y `x mod P ≠ P-1 mod P`, entonces el orden de `x` es bien `P-1` o `(P-1)/2`.
+> Observación n.º 1 Sea `x` un miembro del grupo multiplicativo `ℤ/Pℤ` para un número primo seguro `P`. Si `x mod P ≠ 1 mod P` y `x mod P ≠ P-1 mod P`, entonces el orden de `x` es `P-1` o `(P-1)/2`.
-_Prueba_. Dado que `P` es un primo seguro, entonces por \[Teorema de Lagrange\]\[lagrange\] tenemos que el orden de `x` es bien `1`, `2`, `(P-1)/2`, o `P-1`.
+_Demostración_. Dado que `P` es un número primo seguro, entonces por el [Teorema de Lagrange][lagrange] tenemos que el orden de `x` es `1`, `2`, `(P-1)/2` o `P-1`.
-El orden de `x` no puede ser `1`, ya que según el pequeño teorema de Fermat tenemos:
+El orden de `x` no puede ser `1`, ya que por el Pequeño Teorema de Fermat tenemos:
xP-1 mod P ≡ 1
-Por lo tanto, `x` debe ser una identidad multiplicadora de `ℤ/nℤ`, que es única. Dado que asumimos que `x ≠ 1` por suposición, esto no es posible.
+Por lo tanto, `x` debe ser una identidad multiplicativa de `ℤ/nℤ`, que es única. Dado que asumimos que `x ≠ 1` por suposición, esto no es posible.
-El orden de `x` no puede ser `2` a menos que `x = P-1`, ya que esto violaría que `P` sea primo.
+El orden de `x` no puede ser `2` a menos que `x = P-1`, ya que esto violaría que `P` es primo.
-A partir de la proposición anterior, podemos reconocer que la iteración de `(picker * init) % P` tendrá una longitud de ciclo de al menos `(P-1)/2`. Esto se debe a que seleccionamos `P` para ser un número primo seguro aproximadamente igual a una potencia más alta de dos, y `init` está en el intervalo `[2,2**256+1]`. Dada la magnitud de `P`, nunca deberíamos esperar un ciclo de exponenciación modular.
+A partir de la proposición anterior, podemos reconocer que iterar `(picker * init) % P` tendrá una longitud de ciclo de al menos `(P-1)/2`. Esto se debe a que seleccionamos `P` para que sea un número primo seguro aproximadamente igual a una potencia superior de dos, y `init` está en el intervalo `[2,2**256+1]`. Dada la magnitud de `P`, nunca deberíamos esperar un ciclo de la exponenciación modular.
-Cuando asignamos la primera celda del DAG (la variable etiquetada `init`), calculamos `pow(sha3(seed) + 2, 3, P)`. A primera vista, esto no garantiza que el resultado no sea ni `1` ni `P-1`. Sin embargo, dado que `P-1` es un primo seguro, tenemos la siguiente garantía adicional, que es una consecuencia de la Observación 1:
+Cuando estamos asignando la primera celda en el DAG (la variable etiquetada como `init`), calculamos `pow(sha3(seed) + 2, 3, P)`. A primera vista, esto no garantiza que el resultado no sea ni `1` ni `P-1`. Sin embargo, como `P-1` es un número primo seguro, tenemos la siguiente garantía adicional, que es un corolario de la Observación 1:
-> Observación n.º 2 Deje que `x` sea miembro del grupo multiplidor `ℤ/Pℤ` para un número primo seguro `P`, y deje que `w` sea un número natural. Si `x mod P ≠ 1 mod P` y `x mod P ≠ P-1 mod P`, así como `w mod P ≠ P-1 mod P` y `w mod P ≠ 0 mod P`, entonces `xw mod`
+> Observación n.º 2 Sea `x` un miembro del grupo multiplicativo `ℤ/Pℤ` para un número primo seguro `P`, y sea `w` un número natural. Si `x mod P ≠ 1 mod P` y `x mod P ≠ P-1 mod P`, así como `w mod P ≠ P-1 mod P` y `w mod P ≠ 0 mod P`, entonces `xʷ mod P ≠ 1 mod P` y `xʷ mod P ≠ P-1 mod P`
-### La exponenciación modular como función hash {#modular-exponentiation}
+### Exponenciación modular como función de hash {#modular-exponentiation}
-Para ciertos valores de `P` y `w`, la función `pow (x, w, P)` puede tener muchas colisiones. Por ejemplo, `pow (x,9,19)` solo toma valores `{1,18}`.
+Para ciertos valores de `P` y `w`, la función `pow(x, w, P)` puede tener muchas colisiones. Por ejemplo, `pow(x,9,19)` solo toma los valores `{1,18}`.
-Dado que `P` es primo, entonces se puede elegir un `w apropiado` para una función de hashing de exponenciación modular usando el siguiente resultado:
+Dado que `P` es primo, se puede elegir un `w` apropiado para una función de hash de exponenciación modular usando el siguiente resultado:
-> Observación n.º 3 Deje que `P` sea primo; `w` y `P-1` son relativamente primos si y solo si para ambos `a` y `b` en `ℤ/Pℤ`:
->
->
-> `aw mod P ≡ bw mod P` si y solo si `a mod P ≡ b mod P`
->
+> Observación n.º 3 Sea `P` un número primo; `w` y `P-1` son coprimos si y solo si para todo `a` y `b` en `ℤ/Pℤ`:
`aʷ mod P ≡ bʷ mod P` si y solo si `a mod P ≡ b mod P`
-Por lo tanto, dado que `P` es primo y `w` es relativamente primo a `P-1`, tenemos que `|{pow (x, w, P) : x ∈ ℤ}| = P`, lo que implica que la función de hashing tiene la tasa de colisión mínima posible.
+Por lo tanto, dado que `P` es primo y `w` es coprimo con `P-1`, tenemos que `|{pow(x, w, P) : x ∈ ℤ}| = P`, lo que implica que la función de hash tiene la mínima tasa de colisión posible.
-En el caso especial de que `P` sea un primo seguro como hemos seleccionado, entonces `P-1` solo tiene los factores 1, 2, `(P-1)/2` y `P-1`. Dado que `P` > 7, sabemos que 3 es relativamente primo para `P-1`, por lo que `w=3` satisface la propuesta anterior.
+En el caso especial de que `P` sea un número primo seguro como hemos seleccionado, entonces `P-1` solo tiene los factores 1, 2, `(P-1)/2` y `P-1`. Dado que `P` > 7, sabemos que 3 es coprimo con `P-1`, por lo tanto `w=3` satisface la proposición anterior.
-## Algoritmo de evaluación basado en caché más eficiente {#cache-based-evaluation}
+## Algoritmo de evaluación más eficiente basado en caché {#cache-based-evaluation}
```python
def quick_calc(params, seed, p):
From c758684bc42ffe6445cb9b24e4c84e598da83bfd Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:54 -0300
Subject: [PATCH 156/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/security/index.md
---
.../docs/smart-contracts/security/index.md | 310 +++++++++---------
1 file changed, 155 insertions(+), 155 deletions(-)
diff --git a/public/content/translations/es/developers/docs/smart-contracts/security/index.md b/public/content/translations/es/developers/docs/smart-contracts/security/index.md
index de57f10ff3a..dc071f87d9f 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/security/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/security/index.md
@@ -1,36 +1,36 @@
---
-title: Seguridad en contratos inteligentes
+title: Seguridad de los contratos inteligentes
description: Resumen de lineamientos para crear contratos inteligentes seguros en Ethereum
lang: es
---
Los contratos inteligentes son extremadamente flexibles y capaces de controlar grandes cantidades de valor y datos, además de ejecutar lógica inmutable con base en el código implementado en la cadena de bloques. Esto ha creado un vibrante ecosistema de aplicaciones que no necesitan confianza (trustless) y descentralizadas que ofrecen muchas ventajas sobre los sistemas antiguos. También representan oportunidades para los atacantes que buscan obtener beneficios explotando las vulnerabilidades de los contratos inteligentes.
-Las cadenas de bloques públicas como Ethereum complican aún más la cuestión de la seguridad de los contratos inteligentes. El código de los contratos ya implementado _por lo general_ no puede cambiarse para corregir fallas de seguridad, mientras que los activos robados de los contratos inteligentes son extremadamente difíciles de rastrear y en su mayor parte irrecuperables debido a la inmutabilidad.
+Las cadenas de bloques públicas como Ethereum complican aún más la cuestión de la seguridad de los contratos inteligentes. El código de un contrato ya implementado _normalmente_ no se puede cambiar para reparar fallos de seguridad, mientras que los activos robados de los contratos inteligentes son extremadamente difíciles de rastrear y, en su mayoría, irrecuperables debido a la inmutabilidad.
-Aunque las cifras varían, se estima que la cantidad total de valor robado o perdido debido a defectos de seguridad en los contratos inteligentes supera fácilmente los USD 1000 millones de dólares. Esto incluye incidentes de alto perfil, tal como el [hackeo a la DAO](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/) (3,6 millones de ETH robados, por valor de más de USD 1000 millones a precios actuales), el [hackeo de la billetera multifirma de Parity](https://www.coindesk.com/markets/2017/07/19/30-million-ether-reported-stolen-due-to-parity-wallet-breach) (USD 30M perdidos a manos de hackers) y el [problema de billeteras congeladas de Parity](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether) (mas de USD 300M en ETH bloqueados para siempre).
+Aunque las cifras varían, se estima que la cantidad total de valor robado o perdido debido a defectos de seguridad en los contratos inteligentes supera fácilmente los USD 1000 millones de dólares. Esto incluye incidentes de alto perfil, como el [hackeo de la DAO](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/) (3,6 millones de ETH robados, con un valor de más de 1000 millones de USD a precios actuales), el [hackeo de la billetera multifirma de Parity](https://www.coindesk.com/markets/2017/07/19/30-million-ether-reported-stolen-due-to-parity-wallet-breach) (30 millones de USD perdidos por los hackers) y el [problema de la billetera congelada de Parity](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether) (más de 300 millones de USD en ETH bloqueados para siempre).
Los problemas mencionados anteriormente hacen que sea imperativo que los desarrolladores inviertan esfuerzos en la creación de contratos inteligentes seguros, robustos y resistentes. La seguridad de los contratos inteligentes es un asunto serio que todo desarrollador hará bien en aprender. Esta guía abordará consideraciones de seguridad para los desarrolladores de Ethereum y explorará recursos para mejorar la seguridad de los contratos inteligentes.
## Requisitos previos {#prerequisites}
-Asegúrese de estar familiarizado con los [principios fundamentales del desarrollo de contratos inteligentes](/developers/docs/smart-contracts/) antes de abordar la seguridad.
+Asegúrese de estar familiarizado con los [fundamentos del desarrollo de contratos inteligentes](/developers/docs/smart-contracts/) antes de abordar la seguridad.
-## Pautas para crear contratos inteligentes seguros en Ethereum {#smart-contract-security-guidelines}
+## Directrices para crear contratos inteligentes de Ethereum seguros {#smart-contract-security-guidelines}
-### 1. Diseñar controles de acceso apropiados {#design-proper-access-controls}
+### 1. Diseñar controles de acceso adecuados {#design-proper-access-controls}
-En los contratos inteligentes, las funciones definidas como `public` o `external` pueden ser invocadas por cualquier cuenta de propiedad externa (EOA) o cuentas asociadas a otros contratos. Especificar la visibilidad pública de las funciones es necesario si quiere que otros interactúen con su contrato. Por su parte, las funciones marcadas como `private` solo pueden ser invocadas por funciones dentro del contrato inteligente y no por cuentas externas. Dar a todos los participantes de la red acceso a las funciones del contrato puede causar problemas, especialmente si esto significa que cualquiera pueda realizar operaciones sensibles (por ejemplo, mintear nuevos tokens).
+En los contratos inteligentes, las funciones marcadas como `public` o `external` pueden ser llamadas por cualquier cuenta de propiedad externa (EOA) o cuenta de contrato. Especificar la visibilidad pública de las funciones es necesario si quiere que otros interactúen con su contrato. Sin embargo, las funciones marcadas como `private` solo pueden ser llamadas por funciones dentro del contrato inteligente y no por cuentas externas. Dar a todos los participantes de la red acceso a las funciones del contrato puede causar problemas, especialmente si esto significa que cualquiera pueda realizar operaciones sensibles (por ejemplo, mintear nuevos tokens).
-Para evitar el uso no autorizado de las funciones de los contratos inteligentes, es necesario implementar controles de acceso seguros. Los mecanismos de control de acceso restringen la capacidad de utilizar ciertas funciones de un contrato inteligente a las entidades aprobadas, como las cuentas responsables de la gestión del contrato. El ** patrón Ownable** y **role-based control** son dos patrones útiles para implementar el control de acceso en los contratos inteligentes:
+Para evitar el uso no autorizado de las funciones de los contratos inteligentes, es necesario implementar controles de acceso seguros. Los mecanismos de control de acceso restringen la capacidad de utilizar ciertas funciones de un contrato inteligente a las entidades aprobadas, como las cuentas responsables de la gestión del contrato. El **patrón Ownable** y el **control basado en roles** son dos patrones útiles para implementar el control de acceso en los contratos inteligentes:
#### Patrón Ownable {#ownable-pattern}
-En el patrón Ownable, se establece una dirección como "propietaria" del contrato durante el proceso de creación del contrato. A las funciones protegidas se les asigna un modificador `OnlyOwner`, que asegura que el contrato autentique la identidad de la dirección invocante antes de ejecutar la función. Las llamadas o invocaciones a funciones protegidas desde otras direcciones distintas a la del propietario del contrato siempre se revierten, lo que impide el acceso no deseado.
+En el patrón Ownable, se establece una dirección como "propietaria" del contrato durante el proceso de creación del contrato. A las funciones protegidas se les asigna un modificador `OnlyOwner`, que asegura que el contrato autentique la identidad de la dirección que llama antes de ejecutar la función. Las llamadas o invocaciones a funciones protegidas desde otras direcciones distintas a la del propietario del contrato siempre se revierten, lo que impide el acceso no deseado.
#### Control de acceso basado en roles {#role-based-access-control}
-Registrar una única dirección como `Owner` en un contrato inteligente introduce el riesgo de centralización y representa un punto único de falla. Si las claves de la cuenta del propietario se ven comprometidas, los atacantes pueden atacar el contrato. Es por ello que utilizar un patrón de control de acceso basado en roles con múltiples cuentas administrativas puede ser una mejor opción.
+Registrar una única dirección como `Owner` en un contrato inteligente introduce el riesgo de centralización y representa un único punto de fallo. Si las claves de la cuenta del propietario se ven comprometidas, los atacantes pueden atacar el contrato. Es por ello que utilizar un patrón de control de acceso basado en roles con múltiples cuentas administrativas puede ser una mejor opción.
En el control de acceso basado en roles, el acceso a funciones sensibles se distribuye entre un conjunto de participantes de confianza. Por ejemplo, una cuenta puede encargarse de mintear tokens, mientras que otra cuenta realiza actualizaciones o pausa el contrato. Al descentralizar el control de acceso de esta manera, se eliminan los puntos únicos de falla y se reducen los supuestos de confianza para los usuarios.
@@ -40,15 +40,15 @@ Otro enfoque para implementar un control de acceso seguro es utilizar una [cuent
El uso de una cuenta multifirma para el control de acceso introduce una capa adicional de seguridad, ya que las acciones en el contrato de destino requieren el consentimiento de varias partes. Esto es particularmente útil si es necesario utilizar el patrón Ownable, ya que hace más difícil que un atacante o un insider deshonesto manipule las funciones sensibles del contrato con fines maliciosos.
-### 2. Uso de declaraciones require(), assert() y revert() para proteger las operaciones de un contrato {#use-require-assert-revert}
+### 2. Use las sentencias `require()`, `assert()` y `revert()` para proteger las operaciones del contrato {#use-require-assert-revert}
-Como se ha mencionado, cualquiera puede invocar funciones públicas de su contrato inteligente una vez que se implementa en la cadena de bloques. Dado que no se puede saber de antemano cómo van a interactuar las cuentas externas con un contrato, lo ideal es implementar protecciones internas contra las operaciones problemáticas antes de la implementación. Se puede imponer un comportamiento correcto en los contratos inteligentes utilizando las declaraciones o sentencias `require()`, `assert()` y `revert()` para activar excepciones y revertir los cambios de estado si la ejecución no satisface ciertos requisitos.
+Como se ha mencionado, cualquiera puede invocar funciones públicas de su contrato inteligente una vez que se implementa en la cadena de bloques. Dado que no se puede saber de antemano cómo van a interactuar las cuentas externas con un contrato, lo ideal es implementar protecciones internas contra las operaciones problemáticas antes de la implementación. Puede imponer un comportamiento correcto en los contratos inteligentes utilizando las sentencias `require()`, `assert()` y `revert()` para activar excepciones y revertir los cambios de estado si la ejecución no satisface ciertos requisitos.
-**`require()`**: `require` se define al inicio de las funciones y garantiza que se cumplan las condiciones predefinidas antes de que se ejecute la función invocada. Una declaración `require` puede utilizarse para validar las entradas del usuario, comprobar las variables de estado o autenticar la identidad de la cuenta invocante antes de progresar con una función.
+**`require()`**: `require` se define al inicio de las funciones y garantiza que se cumplan las condiciones predefinidas antes de que se ejecute la función llamada. Una sentencia `require` puede utilizarse para validar las entradas del usuario, comprobar las variables de estado o autenticar la identidad de la cuenta que llama antes de progresar con una función.
-**`assert()`**: `assert()` se utiliza para detectar errores internos y comprobar las violaciones de "invariantes" en su código. Una invariante es una afirmación lógica sobre el estado de un contrato que debe ser cierta para todas las ejecuciones de la función. Un ejemplo de invariante es el total suministro máximo o el saldo de un contrato de tokens. El uso de `assert()` asegura que su contrato nunca alcance un estado vulnerable, y si lo hace, todos los cambios en las variables de estado se revierten.
+**`assert()`**: `assert()` se utiliza para detectar errores internos y comprobar las violaciones de «invariantes» en su código. Una invariante es una afirmación lógica sobre el estado de un contrato que debe ser cierta para todas las ejecuciones de la función. Un ejemplo de invariante es el total suministro máximo o el saldo de un contrato de tokens. El uso de `assert()` asegura que su contrato nunca alcance un estado vulnerable, y si lo hace, todos los cambios en las variables de estado se revierten.
-**`revert()`**: `revert()` puede utilizarse en una declaración if-else que desencadene una excepción si no se cumple la condición requerida. El contrato de ejemplo que se muestra a continuación utiliza `revert()` para proteger la ejecución de las funciones:
+**`revert()`**: `revert()` puede utilizarse en una sentencia if-else que desencadene una excepción si no se cumple la condición requerida. El contrato de ejemplo que se muestra a continuación utiliza `revert()` para proteger la ejecución de las funciones:
```
pragma solidity ^0.8.4;
@@ -58,8 +58,8 @@ contract VendingMachine {
error Unauthorized();
function buy(uint amount) public payable {
if (amount > msg.value / 2 ether)
- revert("Not enough Ether provided.");
- // Perform the purchase.
+ revert("No se ha proporcionado suficiente Ether.");
+ // Realizar la compra.
}
function withdraw() public {
if (msg.sender != owner)
@@ -70,19 +70,19 @@ contract VendingMachine {
}
```
-### 3. Probar contratos inteligentes y verificar que el código sea correcto {#test-smart-contracts-and-verify-code-correctness}
+### 3. Probar contratos inteligentes y verificar la corrección del código {#test-smart-contracts-and-verify-code-correctness}
La inmutabilidad del código que se ejecuta en la [Máquina virtual de Ethereum](/developers/docs/evm/) implica que los contratos inteligentes exijan un mayor nivel de evaluación de la calidad durante la fase de desarrollo. Probar el contrato de forma exhaustiva y observar cualquier resultado inesperado mejorará mucho la seguridad y protegerá a los usuarios a largo plazo.
-El método habitual es escribir pruebas de unidades pequeñas utilizando datos simulados que se espera que el contrato reciba de los usuarios. [Hacer pruebas unitarias](/developers/docs/smart-contracts/testing/#unit-testing) es bueno para probar la funcionalidad de ciertas funciones y asegurar que un contrato inteligente funcione como se espera.
+El método habitual es escribir pruebas de unidades pequeñas utilizando datos simulados que se espera que el contrato reciba de los usuarios. Las [pruebas unitarias](/developers/docs/smart-contracts/testing/#unit-testing) son adecuadas para probar la funcionalidad de ciertas funciones y garantizar que un contrato inteligente funcione como se espera.
Desafortunadamente, las pruebas unitarias son poco efectivas para mejorar la seguridad de los contratos inteligentes cuando se utilizan de forma aislada. Una prueba unitaria puede demostrar que una función se ejecuta correctamente para datos simulados, pero son tan eficaces como las pruebas que se escriben. Esto dificulta la detección de casos límite y vulnerabilidades que podrían romper la seguridad de su contrato inteligente.
-Una mejor estrategia es combinar las pruebas unitarias con pruebas basadas en propiedades realizadas mediante [análisis estáticos y dinámicos](/developers/docs/smart-contracts/testing/#static-dynamic-analysis). El análisis estático se basa en representaciones de bajo nivel, como [gráficos de flujo de control](https://en.wikipedia.org/wiki/Control-flow_graph) y [árboles sintácticos abstractos](https://deepsource.io/glossary/ast/) para analizar los estados alcanzables de un programa y las rutas de ejecución. Mientras tanto, técnicas de análisis dinámicos, como las [auditorías de seguridad (fuzzing) de contratos inteligentes](https://www.cyfrin.io/blog/smart-contract-fuzzing-and-invariants-testing-foundry), ejecutan un código de contrato con valores de introducción aleatorios que infringen las propiedades de seguridad.
+Un mejor enfoque es combinar las pruebas unitarias con pruebas basadas en propiedades realizadas mediante [análisis estáticos y dinámicos](/developers/docs/smart-contracts/testing/#static-dynamic-analysis). El análisis estático se basa en representaciones de bajo nivel, como [gráficos de flujo de control](https://en.wikipedia.org/wiki/Control-flow_graph) y [árboles sintácticos abstractos](https://deepsource.io/glossary/ast/) para analizar los estados alcanzables de un programa y las rutas de ejecución. Mientras tanto, las técnicas de análisis dinámico, como el [fuzzing de contratos inteligentes](https://www.cyfrin.io/blog/smart-contract-fuzzing-and-invariants-testing-foundry), ejecutan código de contrato con valores de entrada aleatorios para detectar operaciones que violan las propiedades de seguridad.
La [verificación formal](/developers/docs/smart-contracts/formal-verification) es otra técnica para verificar las propiedades de seguridad en los contratos inteligentes. A diferencia de las pruebas habituales, la verificación formal puede demostrar de forma concluyente la ausencia de errores en un contrato inteligente. Esto se consigue creando una especificación formal que capture las propiedades de seguridad deseadas y demostrando que un modelo formal de los contratos se adhiera a esta especificación.
-### 4. Solicitar una revisión independiente de su código {#get-independent-code-reviews}
+### 4. Pida una revisión independiente de su código {#get-independent-code-reviews}
Después de probar su contrato, es bueno pedir a otros que comprueben el código fuente para detectar cualquier problema de seguridad. Las pruebas no descubrirán todas las fallas de un contrato inteligente, pero conseguir una revisión independiente aumenta la posibilidad de detectar vulnerabilidades.
@@ -95,15 +95,15 @@ Dicho esto, hay que evitar tratar las auditorías como una bala de plata. Las au
- [Consejos y trucos de auditoría de contratos inteligentes](https://twitter.com/tinchoabbate/status/1400170232904400897) - _@tinchoabbate_
- [Aproveche al máximo su auditoría](https://inference.ag/blog/2023-08-14-tips/) - _Inference_
-#### Dar recompensas por detección de errores {#bug-bounties}
+#### Recompensas por errores {#bug-bounties}
La creación de un programa de recompensas por errores es otro enfoque para implementar revisiones de código externas. Un bug bounty es una recompensa económica que se da a las personas (normalmente hackers de sombrero blanco) que descubren vulnerabilidades en una aplicación.
-Cuando se utilizan correctamente, las recompensas por errores ofrecen a los miembros de la comunidad de hackers un incentivo para inspeccionar su código en busca de fallas críticas. Un ejemplo de la vida real es el "bug del dinero infinito" que habría permitido a un atacante crear una cantidad ilimitada de Ether en [Optimism](https://www.optimism.io/), un protocolo de [Capa 2](/layer-2/) que se ejecuta en Ethereum. Afortunadamente, un hacker de sombrero blanco [descubrió la falla](https://www.saurik.com/optimism.html) y notificó al equipo, [obteniendo un premio grande en el proceso](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/).
+Cuando se utilizan correctamente, las recompensas por errores ofrecen a los miembros de la comunidad de hackers un incentivo para inspeccionar su código en busca de fallas críticas. Un ejemplo de la vida real es el «error del dinero infinito» que habría permitido a un atacante crear una cantidad ilimitada de ether en [Optimism](https://www.optimism.io/), un protocolo de [capa 2](/layer-2/) que se ejecuta en Ethereum. Afortunadamente, un hacker de sombrero blanco [descubrió el fallo](https://www.saurik.com/optimism.html) y se lo notificó al equipo, [ganando una gran recompensa en el proceso](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/).
-Una estrategia útil es establecer el pago de un programa de recompensas por fallas en proporción a la cantidad de fondos en juego. Descrito como el "[scaling bug bounty](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)", este enfoque proporciona incentivos financieros para que los individuos revelen responsablemente las vulnerabilidades en lugar de explotarlas.
+Una estrategia útil es establecer el pago de un programa de recompensas por fallas en proporción a la cantidad de fondos en juego. Descrito como la «[recompensa por error de escalabilidad](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)», este enfoque proporciona incentivos financieros para que los individuos revelen responsablemente las vulnerabilidades en lugar de explotarlas.
-### 5. Seguir las mejores prácticas durante el desarrollo del contrato inteligente {#follow-smart-contract-development-best-practices}
+### 5. Siga las mejores prácticas durante el desarrollo de contratos inteligentes {#follow-smart-contract-development-best-practices}
La existencia de auditorías y recompensas por errores no lo exime de la responsabilidad de escribir código de alta calidad. La sólida seguridad en los contratos inteligentes empieza por seguir procesos de diseño y desarrollo adecuados:
@@ -113,29 +113,29 @@ La existencia de auditorías y recompensas por errores no lo exime de la respons
- Asegurarse de que las pull requests tengan al menos un revisor independiente; si trabaja en solitario en un proyecto, considere la posibilidad de buscar a otros desarrolladores e intercambiar revisiones de código
-- Utilizar un [entorno de desarrollo](/developers/docs/frameworks/) para probar, compilar e implementar contratos inteligentes
+- Utilice un [entorno de desarrollo](/developers/docs/frameworks/) para probar, compilar e implementar contratos inteligentes.
-- Ejecute su código mediante herramientas básicas de análisis de código, como [Cyfrin Aaderyn](https://github.com/Cyfrin/aderyn), Mythril y Slither. En principio, debería hacer esto antes de combinar cada pull request y comparar las diferencias en el resultado
+- Ejecute su código mediante herramientas básicas de análisis de código, como [Cyfrin Aderyn](https://github.com/Cyfrin/aderyn), Mythril y Slither. En principio, debería hacer esto antes de combinar cada pull request y comparar las diferencias en el resultado
- Asegurarse de que el código se compile sin errores y que el compilador de Solidity no emita advertencias
-- Documentar adecuadamente su código (utilizando [NatSpec](https://solidity.readthedocs.io/en/develop/natspec-format.html)) y describir los detalles de la arquitectura del contrato en un lenguaje fácil de entender. Esto facilitará que otros auditen y revisen su código
+- Documente adecuadamente su código (utilizando [NatSpec](https://solidity.readthedocs.io/en/develop/natspec-format.html)) y describa los detalles de la arquitectura del contrato en un lenguaje fácil de entender. Esto facilitará que otros auditen y revisen su código
-### 6. Implementar planes sólidos de recuperación de desastres {#implement-disaster-recovery-plans}
+### 6. Implemente planes sólidos de recuperación de desastres {#implement-disaster-recovery-plans}
El diseño de controles de acceso seguros, la implementación de modificadores de funciones y otras sugerencias pueden mejorar la seguridad de los contratos inteligentes, pero no pueden descartar la posibilidad de explotaciones maliciosas. Crear contratos inteligentes seguros requiere “prepararse para el fracaso” y tener un plan de respaldo para responder eficazmente a los ataques. Un plan adecuado de recuperación de desastres incorporará algunos o todos los siguientes componentes:
-#### Actualizaciones del contrato {#contract-upgrades}
+#### Actualizaciones de contrato {#contract-upgrades}
Si bien los contratos inteligentes de Ethereum son inmutables de forma predeterminada, es posible lograr cierto grado de mutabilidad usando patrones de actualización. La actualización de contratos es necesaria en los casos en que una falla crítica haga inutilizable su viejo contrato e implementar nueva lógica sea la opción más viable.
-Los mecanismos de actualización de contratos funcionan de forma diferente, pero el “patrón de proxy” es una de las formas más populares. Los [patrones de proxy](https://www.cyfrin.io/blog/upgradeable-proxy-smart-contract-pattern) dividen el estado de una aplicación y la lógica entre _dos_ contratos. El primer contrato (llamado “contrato proxy”) almacena variables de estado (p. ej., los balances de los usuarios), mientras que el segundo contrato (llamado “contrato de lógica”) contiene el código para la ejecución de las funciones del contrato.
+Los mecanismos de actualización de contratos funcionan de forma diferente, pero el “patrón de proxy” es una de las formas más populares. Los [patrones de proxy](https://www.cyfrin.io/blog/upgradeable-proxy-smart-contract-pattern) dividen el estado y la lógica de una aplicación entre _dos_ contratos. El primer contrato (llamado “contrato proxy”) almacena variables de estado (p. ej., los balances de los usuarios), mientras que el segundo contrato (llamado “contrato de lógica”) contiene el código para la ejecución de las funciones del contrato.
-Las cuentas interactúan con el contrato proxy, que envía todas las llamadas de función al contrato de lógica usando la llamada de bajo nivel [`delegatecall()`](https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html?highlight=delegatecall#delegatecall-callcode-and-libraries). A diferencia de una llamada de mensaje normal, `delegatecall()` asegura que el código que se ejecuta en la dirección del contrato de lógica sea ejecutado en el contexto del contrato de llamada. Esto significa que el contrato de lógica siempre escribirá en el almacenamiento del proxy (en lugar de su propio almacenamiento) y que los valores originales de `msg. ender` y `msg.value` serán preservados.
+Las cuentas interactúan con el contrato de proxy, que envía todas las llamadas de función al contrato de lógica utilizando la llamada de bajo nivel [`delegatecall()`](https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html?highlight=delegatecall#delegatecall-callcode-and-libraries). A diferencia de una llamada de mensaje normal, `delegatecall()` asegura que el código que se ejecuta en la dirección del contrato de lógica se ejecute en el contexto del contrato que realiza la llamada. Esto significa que el contrato de lógica siempre escribirá en el almacenamiento del proxy (en lugar de su propio almacenamiento) y que los valores originales de `msg.sender` y `msg.value` se conservarán.
Delegar llamadas al contrato de lógica requiere almacenar su dirección en el almacenamiento del contrato proxy. Por lo tanto, actualizar la lógica del contrato es solo cuestión de implementar otro contrato de lógica y almacenar la nueva dirección en el contrato proxy. A medida que las llamadas subsiguientes al contrato proxy se enruten automáticamente al nuevo contrato de lógica, habrá “actualizado” el contrato sin modificar realmente el código.
-[Más información sobre la actualización de contratos](/developers/docs/smart-contracts/upgrading/).
+[Más sobre la actualización de contratos](/developers/docs/smart-contracts/upgrading/).
#### Paradas de emergencia {#emergency-stops}
@@ -149,10 +149,10 @@ La opción nuclear es implementar una función de “parada de emergencia” que
3. Una entidad que tiene acceso a la función de parada de emergencia, que establece la variable booleana en `true`. Para evitar acciones maliciosas, las llamadas a esta función se pueden restringir a una dirección de confianza (por ejemplo, el propietario del contrato).
-Una vez que el contrato active la parada de emergencia, no se podrán invocar ciertas funciones. Esto se logra envolviendo funciones selectas en un modificador que haga referencia a la variable global. A continuación se muestra [un ejemplo](https://github.com/fravoll/solidity-patterns/blob/master/EmergencyStop/EmergencyStop.sol) que describe una implementación de este patrón en los contratos:
+Una vez que el contrato active la parada de emergencia, no se podrán invocar ciertas funciones. Esto se logra envolviendo funciones selectas en un modificador que haga referencia a la variable global. A continuación, se muestra [un ejemplo](https://github.com/fravoll/solidity-patterns/blob/master/EmergencyStop/EmergencyStop.sol) que describe una implementación de este patrón en contratos:
```solidity
-// This code has not been professionally audited and makes no promises about safety or correctness. Use at your own risk.
+// Este código no ha sido auditado profesionalmente y no ofrece garantías sobre su seguridad o corrección. Úselo bajo su propio riesgo.
contract EmergencyStop {
@@ -169,7 +169,7 @@ contract EmergencyStop {
}
modifier onlyAuthorized {
- // Check for authorization of msg.sender here
+ // Compruebe aquí la autorización de msg.sender
_;
}
@@ -182,48 +182,48 @@ contract EmergencyStop {
}
function deposit() public payable stoppedInEmergency {
- // Deposit logic happening here
+ // Lógica de depósito aquí
}
function emergencyWithdraw() public onlyWhenStopped {
- // Emergency withdraw happening here
+ // Retiro de emergencia aquí
}
}
```
Este ejemplo muestra las características básicas de las paradas de emergencia:
-- `isStopped` es un booleano que evalúa como `false` al principio y `true` cuando el contrato entra en modo de emergencia.
+- `isStopped` es un booleano que se evalúa como `false` al principio y `true` cuando el contrato entra en modo de emergencia.
-- Los modificadores de funciones `onlyWhenStopped` y `stoppedInEmergency` comprueban la variable `isStopped`. `stoppedInEmergency` se utiliza para controlar las funciones que deberían ser inaccesibles cuando el contrato es vulnerable (por ejemplo, `deposit()`). Las llamadas a estas funciones simplemente se revertirán.
+- Los modificadores de funciones `onlyWhenStopped` y `stoppedInEmergency` comprueban la variable `isStopped`. `stoppedInEmergency` se utiliza para controlar las funciones que deberían ser inaccesibles cuando el contrato es vulnerable (p. ej., `deposit()`). Las llamadas a estas funciones simplemente se revertirán.
-`onlyWhenStopped` se utiliza para funciones que deben ser invocables durante una emergencia (por ejemplo, `emergencyWithdraw()`). Tales funciones pueden ayudar a resolver la situación, de ahí su exclusión de la lista de "funciones restringidas".
+`onlyWhenStopped` se utiliza para funciones que deben poder ser llamadas durante una emergencia (p. ej., `emergencyWithdraw()`). Tales funciones pueden ayudar a resolver la situación, de ahí su exclusión de la lista de "funciones restringidas".
-El uso de una funcionalidad de parada de emergencia proporciona un recurso efectivo para hacer frente a vulnerabilidades graves en su contrato inteligente. No obstante, aumenta la necesidad de que los usuarios confíen en que los desarrolladores no lo activen por razones de su interés. Con este fin, la descentralización del control de la parada de emergencia, ya sea sometiéndola a un mecanismo de votación en cadena, un bloqueo de tiempo o la aprobación de una billetera multifirma, son posibles soluciones.
+El uso de una funcionalidad de parada de emergencia proporciona un recurso efectivo para hacer frente a vulnerabilidades graves en su contrato inteligente. No obstante, aumenta la necesidad de que los usuarios confíen en que los desarrolladores no lo activen por razones de su interés. Con este fin, existen varias soluciones, como descentralizar el control de la parada de emergencia, ya sea sometiéndolo a un mecanismo de votación en cadena, a un bloqueo temporal, o a la aprobación de una cartera multifirma.
-#### Monitoreo de eventos {#event-monitoring}
+#### Supervisión de eventos {#event-monitoring}
Los [eventos](https://docs.soliditylang.org/en/v0.8.15/contracts.html#events) le permiten realizar un seguimiento de las llamadas a las funciones de un contrato inteligente y supervisar los cambios en las variables de estado. Es ideal programar su contrato inteligente para que emita un evento cada vez que alguna parte realice una acción crítica para la seguridad (por ejemplo, retirar fondos).
-El registro de eventos y su supervisión fuera de la cadena proporciona información sobre las operaciones del contrato y ayuda a un descubrimiento más rápido de acciones maliciosas. Esto significa que su equipo puede responder más rápido a los hackeos y tomar medidas para mitigar el impacto en los usuarios, como pausar funciones o realizar una actualización.
+Registrar eventos y supervisarlos fuera de la cadena proporciona información sobre las operaciones del contrato y facilita una detección más rápida de acciones maliciosas. Esto significa que su equipo puede responder más rápido a los hackeos y tomar medidas para mitigar el impacto en los usuarios, como pausar funciones o realizar una actualización.
También puede optar por una herramienta de monitoreo lista para usar que reenvíe automáticamente alertas cada vez que alguien interactúe con sus contratos. Estas herramientas le permitirán crear alertas personalizadas basadas en diferentes activadores, como el volúmen de transacciones, la frecuencia de las llamadas a funciones o las funciones específicas involucradas. Por ejemplo, podría programar una alerta que llegue cuando la cantidad retirada en una misma transacción supere un umbral en particular.
### 7. Diseñar sistemas de gobernanza seguros {#design-secure-governance-systems}
-Es posible que desee descentralizar su aplicación entregando el control de los contratos inteligentes básicos a los miembros de la comunidad. En este caso, el sistema de contratos inteligentes incluirá un módulo de gobernanza, es decir, un mecanismo que permita a los miembros de la comunidad aprobar acciones administrativas a través de un sistema de gobernanza en cadena. Por ejemplo, los titulares de tokens pueden votar por una propuesta para actualizar un contrato proxy a una nueva implementación.
+Es posible que desee descentralizar su aplicación entregando el control de los contratos inteligentes básicos a los miembros de la comunidad. En este caso, el sistema de contratos inteligentes incluirá un módulo de gobernanza—un mecanismo que permite a los miembros de la comunidad aprobar acciones administrativas a través de un sistema de gobernanza en cadena. Por ejemplo, los titulares de tokens pueden votar por una propuesta para actualizar un contrato proxy a una nueva implementación.
-La gobernanza descentralizada puede ser beneficiosa, especialmente porque alinea los intereses de los desarrolladores y los usuarios finales. A pesar de todo, los mecanismos de gobernanza de contratos inteligentes pueden introducir nuevos riesgos si se implementan incorrectamente. Un escenario plausible es si un atacante adquiere un enorme poder de voto (medido por el número de tokens mantenidos) mediante la obtención de un [préstamo flash](/defi/#flash-loans) y obliga a aceptar una propuesta maliciosa.
+La gobernanza descentralizada puede ser beneficiosa, especialmente porque alinea los intereses de los desarrolladores y los usuarios finales. A pesar de todo, los mecanismos de gobernanza de contratos inteligentes pueden introducir nuevos riesgos si se implementan incorrectamente. Un escenario plausible es que un atacante adquiera un enorme poder de voto (medido en número de tókenes en su poder) mediante la obtención de un [préstamo flash](/defi/#flash-loans) e impulse una propuesta maliciosa.
-Una manera de prevenir problemas relacionados con la gobernanza en cadena es [usar un bloqueo de tiempo o timelock](https://blog.openzeppelin.com/protect-your-users-with-smart-contract-timelocks/). Un bloqueo de tiempo impide que un contrato inteligente ejecute ciertas acciones hasta que pase una cantidad específica de tiempo. Otras estrategias incluyen asignar un "peso de votación" a cada token en función de cuánto tiempo ha estado bloqueado, o medir el poder de voto de una dirección en un período histórico (por ejemplo, 2-3 bloques en el pasado) en lugar del bloque actual. Ambos métodos reducen la posibilidad de acumular rápidamente el poder de voto para cambiar los votos en cadena.
+Una forma de evitar problemas relacionados con la gobernanza en cadena es [usar un bloqueo de tiempo](https://blog.openzeppelin.com/protect-your-users-with-smart-contract-timelocks/). Un bloqueo de tiempo impide que un contrato inteligente ejecute ciertas acciones hasta que pase una cantidad específica de tiempo. Otras estrategias incluyen asignar un "peso de votación" a cada token en función de cuánto tiempo ha estado bloqueado, o medir el poder de voto de una dirección en un período histórico (por ejemplo, 2-3 bloques en el pasado) en lugar del bloque actual. Ambos métodos reducen la posibilidad de acumular rápidamente poder de voto para manipular las votaciones en cadena.
-Obtenga más información sobre [diseño de sistemas de gobernanza seguros](https://blog.openzeppelin.com/smart-contract-security-guidelines-4-strategies-for-safer-governance-systems/), [diferentes mecanismos de votación en las DAO](https://hackernoon.com/governance-is-the-holy-grail-for-daos) y [los vectores de ataque comunes de DAO que aprovechan DeFi](https://dacian.me/dao-governance-defi-attacks) en los enlaces compartidos.
+Puede encontrar más información sobre cómo [diseñar sistemas de gobernanza seguros](https://blog.openzeppelin.com/smart-contract-security-guidelines-4-strategies-for-safer-governance-systems/), sobre los [diferentes mecanismos de votación en las DAO](https://hackernoon.com/governance-is-the-holy-grail-for-daos) y sobre [los vectores de ataque comunes a las DAO que aprovechan las DeFi](https://dacian.me/dao-governance-defi-attacks) en los enlaces compartidos.
### 8. Reducir la complejidad del código al mínimo {#reduce-code-complexity}
Los desarrolladores de software tradicionales están familiarizados con el principio KISS ("mantenlo simple, estúpido") (Keep it simple stupid), que desaconseja introducir complejidad innecesaria en el diseño de software. Esto sigue la idea de pensamiento de hace tiempo de que "los sistemas complejos fallan de maneras complejas" y son más susceptibles a errores costosos.
-Mantener las cosas simples es de particular importancia a la hora de escribir contratos inteligentes, dado que los contratos inteligentes están controlando potencialmente grandes cantidades de valor. Un consejo para lograr simplicidad al escribir contratos inteligentes es reutilizar bibliotecas existentes, como [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/), siempre que sea posible. Debido a que estas bibliotecas han sido ampliamente auditadas y probadas por los desarrolladores, su uso reduce las posibilidades de introducir errores al escribir nuevas funcionalidades desde cero.
+Mantener las cosas simples es de particular importancia a la hora de escribir contratos inteligentes, dado que los contratos inteligentes están controlando potencialmente grandes cantidades de valor. Un consejo para lograr la simplicidad al escribir contratos inteligentes es reutilizar las bibliotecas existentes, como los [Contratos de OpenZeppelin](https://docs.openzeppelin.com/contracts/5.x/), siempre que sea posible. Debido a que estas bibliotecas han sido ampliamente auditadas y probadas por los desarrolladores, su uso reduce las posibilidades de introducir errores al escribir nuevas funcionalidades desde cero.
Otro consejo común es escribir pequeñas funciones y mantener los contratos modulares dividiendo la lógica empresarial entre múltiples contratos. Escribir código más simple no solo reduce la superficie de ataque en un contrato inteligente, sino que también hace que sea más fácil razonar sobre la corrección del sistema general y detectar posibles errores de diseño temprano.
@@ -231,14 +231,14 @@ Otro consejo común es escribir pequeñas funciones y mantener los contratos mod
#### Reentrada {#reentrancy}
-La EVM no permite la concurrencia, lo que significa que dos contratos involucrados en una llamada de mensaje no pueden ejecutarse simultáneamente. Una llamada externa pausa la ejecución y la memoria del contrato de llamada hasta que la llamada regresa, momento en el que la ejecución procede normalmente. Este proceso se puede describir formalmente como la transferencia de [flujo de control](https://www.computerhope.com/jargon/c/contflow.htm) a otro contrato.
+La EVM no permite la concurrencia, lo que significa que dos contratos involucrados en una llamada de mensaje no pueden ejecutarse simultáneamente. Una llamada externa pausa la ejecución y la memoria del contrato de llamada hasta que la llamada regresa, momento en el que la ejecución procede normalmente. Este proceso se puede describir formalmente como la transferencia del [flujo de control](https://www.computerhope.com/jargon/c/contflow.htm) a otro contrato.
Aunque en su mayor parte resulta inofensivo, la transferencia del flujo de control a contratos sin confianza puede causar problemas, como el reingreso o reentrada. Un ataque de reentrada ocurre cuando un contrato malicioso vuelve a llamar a un contrato vulnerable antes de que se complete la invocación de la función original. Este tipo de ataque se explica mejor con un ejemplo.
-Considere un simple contrato inteligente ("Víctima") que permita a cualquier persona depositar y retirar Ether:
+Piense en un contrato inteligente sencillo («víctima») que permite a cualquiera depositar y retirar ether:
```solidity
-// This contract is vulnerable. Do not use in production
+// Este contrato es vulnerable. No lo use en producción
contract Victim {
mapping (address => uint256) public balances;
@@ -256,15 +256,15 @@ contract Victim {
}
```
-Este contrato expone una función `withdraw()` para permitir a los usuarios retirar ETH previamente depositados en el contrato. Al procesar un retiro, el contrato realiza las siguientes operaciones:
+Este contrato expone una función `withdraw()` para permitir a los usuarios retirar el ETH previamente depositado en el contrato. Al procesar un retiro, el contrato realiza las siguientes operaciones:
1. Comprueba el saldo de ETH del usuario
2. Envía fondos a la dirección de llamada
3. Restablece su saldo a 0, evitando retiros adicionales del usuario
-La función `withdraw()` en el contrato `Victim` sigue un patrón de "comprobaciones-interacciones-efectos". _comprueba_ si se cumplen las condiciones necesarias para la ejecución (es decir, el usuario tiene un saldo de ETH positivo) y realiza la _interacción_ enviando ETH a la dirección de la persona que llama, antes de aplicar los _efectos_ de la transacción (es decir, reduciendo el saldo del usuario).
+La función `withdraw()` en el contrato `Victim` sigue un patrón de «comprobaciones-interacciones-efectos». _Comprueba_ si se cumplen las condiciones necesarias para la ejecución (es decir, que el usuario tiene un saldo de ETH positivo) y realiza la _interacción_ enviando ETH a la dirección de la persona que llama, antes de aplicar los _efectos_ de la transacción (es decir, reduciendo el saldo del usuario).
-Si se invoca `withdraw()` desde una cuenta de propiedad externa (EOA), la función se ejecuta como se espera: `msg.sender.call.value()` envía ETH al invocante. Sin embargo, si `msg.sender` es una cuenta de contrato inteligente que llama a `withdraw()`, el envío de fondos usando `msg.sender.call.value()` también activará el código almacenado en esa dirección para que se ejecute.
+Si se llama a `withdraw()` desde una cuenta de propiedad externa (EOA), la función se ejecuta como se espera: `msg.sender.call.value()` envía ETH a la persona que llama. Sin embargo, si `msg.sender` es una cuenta de contrato inteligente que llama a `withdraw()`, el envío de fondos usando `msg.sender.call.value()` también activará el código almacenado en esa dirección para que se ejecute.
Imagine que este es el código implementado en la dirección del contrato:
@@ -289,26 +289,26 @@ Este contrato está diseñado para hacer tres cosas:
2. Depositar 1 ETH en el contrato de la víctima
3. Retirar el 1 ETH almacenado en el contrato inteligente
-No hay nada malo aquí, excepto que `Attacker` tiene otra función que llama a `withdraw()` en `Victim` de nuevo si el gas que queda del entrante `msg.sender.call.value` es más de 40.000. Esto le da al `Attacker` la capacidad de volver a ingresar a `Victim` y retirar más fondos _antes_ de que se complete la primera invocación de `withdraw`. El ciclo se ve así:
+No hay nada malo aquí, excepto que `Attacker` tiene otra función que vuelve a llamar a `withdraw()` en `Victim` si el gas que queda de la entrada `msg.sender.call.value` es superior a 40 000. Esto le da a `Attacker` la capacidad de volver a entrar en `Victim` y retirar más fondos _antes_ de que se complete la primera invocación de `withdraw`. El ciclo se ve así:
```solidity
-- Attacker's EOA calls `Attacker.beginAttack()` with 1 ETH
-- `Attacker.beginAttack()` deposits 1 ETH into `Victim`
-- `Attacker` calls `withdraw() in `Victim`
-- `Victim` checks `Attacker`’s balance (1 ETH)
-- `Victim` sends 1 ETH to `Attacker` (which triggers the default function)
-- `Attacker` calls `Victim.withdraw()` again (note that `Victim` hasn’t reduced `Attacker`’s balance from the first withdrawal)
-- `Victim` checks `Attacker`’s balance (which is still 1 ETH because it hasn’t applied the effects of the first call)
-- `Victim` sends 1 ETH to `Attacker` (which triggers the default function and allows `Attacker` to reenter the `withdraw` function)
-- The process repeats until `Attacker` runs out of gas, at which point `msg.sender.call.value` returns without triggering additional withdrawals
-- `Victim` finally applies the results of the first transaction (and subsequent ones) to its state, so `Attacker`’s balance is set to 0
+- La EOA del atacante llama a `Attacker.beginAttack()` con 1 ETH
+- `Attacker.beginAttack()` deposita 1 ETH en `Victim`
+- `Attacker` llama a `withdraw()` en `Victim`
+- `Victim` comprueba el saldo de `Attacker` (1 ETH)
+- `Victim` envía 1 ETH a `Attacker` (lo que activa la función predeterminada)
+- `Attacker` vuelve a llamar a `Victim.withdraw()` (tenga en cuenta que `Victim` no ha reducido el saldo de `Attacker` desde el primer retiro)
+- `Victim` comprueba el saldo de `Attacker` (que sigue siendo 1 ETH porque no ha aplicado los efectos de la primera llamada)
+- `Victim` envía 1 ETH a `Attacker` (lo que activa la función predeterminada y permite a `Attacker` volver a entrar en la función `withdraw`)
+- El proceso se repite hasta que `Attacker` se queda sin gas, momento en el que `msg.sender.call.value` regresa sin activar retiros adicionales
+- `Victim` finalmente aplica los resultados de la primera transacción (y las posteriores) a su estado, por lo que el saldo de `Attacker` se establece en 0
```
-El resumen es que, debido a que el saldo de la persona que llama no se establece en 0 hasta que se complete la ejecución de la función, las invocaciones posteriores tendrán éxito y permitirán que la persona que llame retire su saldo varias veces. Este tipo de ataque se puede utilizar para drenar un contrato inteligente de sus fondos, como lo que sucedió en el [hackeo de 2016 de DAO](https://www.coindesk.com/learn/understanding-the-dao-attack). Los ataques de reentrada siguen siendo un problema crítico para los contratos inteligentes hoy en día, como muestran las [listas públicas de explotaciones de reentrada](https://github.com/pcaversaccio/reentrancy-attacks).
+El resumen es que, debido a que el saldo de la persona que llama no se establece en 0 hasta que se complete la ejecución de la función, las invocaciones posteriores tendrán éxito y permitirán que la persona que llame retire su saldo varias veces. Este tipo de ataque puede usarse para vaciar los fondos de un contrato inteligente, como ocurrió en el [hackeo de la DAO en 2016](https://www.coindesk.com/learn/understanding-the-dao-attack). Los ataques de reentrada siguen siendo un problema crítico para los contratos inteligentes hoy en día, como muestran las [listas públicas de explotaciones de reentrada](https://github.com/pcaversaccio/reentrancy-attacks).
##### Cómo prevenir los ataques de reentrada
-Un enfoque para lidiar con la reentrada es seguir el patrón [checks-effects-interactions](https://docs.soliditylang.org/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern) (comprobaciones-efectos-interacciones). Este patrón ordena la ejecución de las funciones de manera que lo primero sea el código que realiza las comprobaciones necesarias antes de progresar con la ejecución, luego venga el código que manipula el estado del contrato y finalmente venga el código que interactúa con otros contratos o EOA.
+Un enfoque para tratar la reentrada es seguir el [patrón de comprobaciones-efectos-interacciones](https://docs.soliditylang.org/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern). Este patrón ordena la ejecución de las funciones de manera que lo primero sea el código que realiza las comprobaciones necesarias antes de progresar con la ejecución, luego venga el código que manipula el estado del contrato y finalmente venga el código que interactúa con otros contratos o EOA.
El patrón de comprobaciones-efecto-interacción se utiliza en una versión revisada del contrato `Victim` que se muestra a continuación:
@@ -323,7 +323,7 @@ contract NoLongerAVictim {
}
```
-Este contrato realiza una _comprobación_ del saldo del usuario, aplica los _efectos_ de la función `withdraw()` (estableciendo el saldo del usuario en 0) y procede a realizar la _interacción_ (enviando ETH a la dirección del usuario). Esto garantiza que el contrato actualice su almacenamiento antes de la llamada externa, eliminando la condición de reentrada que permitió el primer ataque. El contrato `Attacker` todavía podría volver a llamar a `NoLongerAvictim`, pero dado que `balances[msg.sender]` se ha establecido en 0, los retiros adicionales generarán un error.
+Este contrato realiza una _comprobación_ del saldo del usuario, aplica los _efectos_ de la función `withdraw()` (restableciendo el saldo del usuario a 0) y procede a realizar la _interacción_ (enviando ETH a la dirección del usuario). Esto garantiza que el contrato actualice su almacenamiento antes de la llamada externa, eliminando la condición de reentrada que permitió el primer ataque. El contrato `Attacker` todavía podría volver a llamar a `NoLongerAVictim`, pero dado que `balances[msg.sender]` se ha establecido en 0, los retiros adicionales generarán un error.
Otra opción es usar un bloqueo de exclusión mutua (comúnmente descrito como "mutex") que bloquee una parte del estado de un contrato hasta que se complete la invocación de una función. Esto se implementa utilizando una variable booleana que se establece en `true` antes de que la función se ejecute y se revierte a `false` después de realizar la invocación. Como se ve en el siguiente ejemplo, el uso de un mutex protege una función contra las llamadas recursivas mientras la invocación original todavía se está procesando, deteniendo efectivamente la reentrada.
@@ -335,18 +335,18 @@ contract MutexPattern {
mapping(address => uint256) public balances;
modifier noReentrancy() {
- require(!locked, "Blocked from reentrancy.");
+ require(!locked, "Bloqueado por reentrada.");
locked = true;
_;
locked = false;
}
- // This function is protected by a mutex, so reentrant calls from within `msg.sender.call` cannot call `withdraw` again.
- // The `return` statement evaluates to `true` but still evaluates the `locked = false` statement in the modifier
+ // Esta función está protegida por un mutex, por lo que las llamadas reentrantes desde `msg.sender.call` no pueden volver a llamar a `withdraw`.
+ // La sentencia `return` se evalúa como `true`, pero aun así evalúa la sentencia `locked = false` en el modificador
function withdraw(uint _amount) public payable noReentrancy returns(bool) {
- require(balances[msg.sender] >= _amount, "No balance to withdraw.");
+ require(balances[msg.sender] >= _amount, "No hay saldo que retirar.");
balances[msg.sender] -= _amount;
- bool (success, ) = msg.sender.call{value: _amount}("");
+ (bool success, ) = msg.sender.call{value: _amount}("");
require(success);
return true;
@@ -354,32 +354,32 @@ contract MutexPattern {
}
```
-También puede utilizar un sistema de [pull payments](https://docs.openzeppelin.com/contracts/5.x/api/security#PullPayment) que requiera que los usuarios retiren fondos de los contratos inteligentes, en lugar de un sistema de "pagos push" que envíe fondos a las cuentas. Esto elimina la posibilidad de activar inadvertidamente el código en direcciones desconocidas (y también puede prevenir ciertos ataques de denegación de servicio).
+También puede utilizar un sistema de [pagos pull](https://docs.openzeppelin.com/contracts/5.x/api/security#PullPayment) que requiera que los usuarios retiren fondos de los contratos inteligentes, en lugar de un sistema de «pagos push» que envíe fondos a las cuentas. Esto elimina la posibilidad de activar inadvertidamente el código en direcciones desconocidas (y también puede prevenir ciertos ataques de denegación de servicio).
-#### Desbordamiento de enteros {#integer-underflows-and-overflows}
+#### Subdesbordamientos y desbordamientos de enteros {#integer-underflows-and-overflows}
-Un desbordamiento de enteros, o valor superior al aceptable (en inglés, overflow), se produce cuando los resultados de una operación aritmética sobrepasan el rango aceptable de valores, lo que hace que el resultado se corra al valor representable más bajo. Por ejemplo, un `uint8` solo puede almacenar valores de hasta 2^8-1=255. Las operaciones aritméticas que resulten en valores superiores a `255` se desbordarán y restablecerán `uint` a `0`, de manera similar a como el odómetro de un coche se restablece a 0 una vez que alcanza el kilometraje máximo (999.999).
+Un desbordamiento de enteros, o valor superior al aceptable (en inglés, overflow), se produce cuando los resultados de una operación aritmética sobrepasan el rango aceptable de valores, lo que hace que el resultado se corra al valor representable más bajo. Por ejemplo, un `uint8` solo puede almacenar valores de hasta 2^8-1=255. Las operaciones aritméticas que resulten en valores superiores a `255` se desbordarán y restablecerán `uint` a `0`, de manera similar a como el odómetro de un coche se restablece a 0 una vez que alcanza el kilometraje máximo (999999).
-Los desbordamientos de enteros ocurren también a la inversa: los resultados de una operación aritmética pueden caer por debajo del rango aceptable (underflow). Digamos que intentó disminuir `0` en un `uint8`; el resultado simplemente se revertiría al valor máximo representable (`255`).
+Los subdesbordamientos de enteros se producen por razones similares: los resultados de una operación aritmética caen por debajo del rango aceptable. Digamos que intentó disminuir `0` en un `uint8`; el resultado simplemente se revertiría al valor máximo representable (`255`).
Tanto los desbordamientos de enteros hacia arriba o hacia abajo (overflows y undeflows) pueden conducir a cambios inesperados en las variables de estado de un contrato y dar lugar a una ejecución no planificada. A continuación se muestra un ejemplo que muestra cómo un atacante puede explotar el desbordamiento aritmético de overflow en un contrato inteligente para realizar una operación no válida:
```
pragma solidity ^0.7.6;
-// This contract is designed to act as a time vault.
-// User can deposit into this contract but cannot withdraw for at least a week.
-// User can also extend the wait time beyond the 1 week waiting period.
+// Este contrato está diseñado para actuar como una bóveda de tiempo.
+// El usuario puede depositar en este contrato pero no puede retirar durante al menos una semana.
+// El usuario también puede ampliar el tiempo de espera más allá del período de espera de 1 semana.
/*
-1. Deploy TimeLock
-2. Deploy Attack with address of TimeLock
-3. Call Attack.attack sending 1 ether. You will immediately be able to
- withdraw your ether.
-
-What happened?
-Attack caused the TimeLock.lockTime to overflow and was able to withdraw
-before the 1 week waiting period.
+1. Implemente TimeLock
+2. Implemente Attack con la dirección de TimeLock
+3. Llame a Attack.attack enviando 1 ether. Podrá retirar su ether
+ de inmediato.
+
+¿Qué ha ocurrido?
+Attack provocó el desbordamiento de TimeLock.lockTime y pudo retirar
+antes del período de espera de 1 semana.
*/
contract TimeLock {
@@ -396,14 +396,14 @@ contract TimeLock {
}
function withdraw() public {
- require(balances[msg.sender] > 0, "Insufficient funds");
- require(block.timestamp > lockTime[msg.sender], "Lock time not expired");
+ require(balances[msg.sender] > 0, "Fondos insuficientes");
+ require(block.timestamp > lockTime[msg.sender], "El tiempo de bloqueo no ha expirado");
uint amount = balances[msg.sender];
balances[msg.sender] = 0;
(bool sent, ) = msg.sender.call{value: amount}("");
- require(sent, "Failed to send Ether");
+ require(sent, "Error al enviar Ether");
}
}
@@ -419,11 +419,11 @@ contract Attack {
function attack() public payable {
timeLock.deposit{value: msg.value}();
/*
- if t = current lock time then we need to find x such that
+ si t = tiempo de bloqueo actual, entonces necesitamos encontrar x tal que
x + t = 2**256 = 0
- so x = -t
+ así que x = -t
2**256 = type(uint).max + 1
- so x = type(uint).max + 1 - t
+ así que x = type(uint).max + 1 - t
*/
timeLock.increaseLockTime(
type(uint).max + 1 - timeLock.lockTime(address(this))
@@ -435,142 +435,142 @@ contract Attack {
##### Cómo prevenir los desbordamientos hacia arriba y hacia abajo
-A partir de la versión 0.8.0, el compilador de Solidity rechaza el código que da como resultado desbordamientos de enteros, tanto overflows como underflows. No obstante, los contratos compilados con una versión inferior del compilador deben realizar comprobaciones de funciones que impliquen operaciones aritméticas o utilizar una biblioteca (por ejemplo, [SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math)) que compruebe los desbordamientos en ambos sentidos.
+A partir de la versión 0.8.0, el compilador de Solidity rechaza el código que da como resultado desbordamientos de enteros, tanto overflows como underflows. Sin embargo, los contratos compilados con una versión inferior del compilador deben realizar comprobaciones de funciones que impliquen operaciones aritméticas o utilizar una biblioteca (p. ej., [SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math)) que compruebe los subdesbordamientos/desbordamientos.
#### Manipulación de oráculos {#oracle-manipulation}
-Los [oráculos](/developers/docs/oracles/) obtienen información fuera de la cadena y la envían en cadena para que los contratos inteligentes la usen. Con los oráculos, puede diseñar contratos inteligentes que interactúen con sistemas fuera de la cadena, como los mercados de capitales, ampliando en gran medida su aplicación.
+Los [oráculos](/developers/docs/oracles/) obtienen información fuera de la cadena y la envían a la cadena para que los contratos inteligentes la utilicen. Con los oráculos, puedes diseñar contratos inteligentes que interoperan con sistemas fuera de la cadena, como los mercados de capitales, ampliando enormemente sus aplicaciones.
-Pero si el oráculo está dañado y envía información incorrecta en cadena, los contratos inteligentes se ejecutarán en función de entradas erróneas, lo que puede causar problemas. Esta es la base del "problema del oráculo", que se refiere a la tarea de asegurarse de que la información de un oráculo de cadena de bloques sea precisa, actualizada y oportuna.
+No obstante, si el oráculo se corrompe y envía información incorrecta a la cadena, los contratos inteligentes se ejecutarán en base a datos erróneos, lo que puede causar problemas. Esta es la base del "problema del oráculo", que se refiere a la tarea de asegurarse de que la información de un oráculo de cadena de bloques sea precisa, actualizada y oportuna.
-Una preocupación de seguridad relacionada es el uso de un oráculo en cadena, como un exchange descentralizado, para obtener el precio al contado de un activo. Las plataformas de préstamos en la industria de las [finanzas descentralizadas (DeFi)](/defi/) a menudo hacen esto para determinar el valor del colateral de un usuario para determinar cuánto puede pedir prestado.
+Una cuestión inquietante relativa a la seguridad es usar un oráculo en cadena, como un intercambio descentralizado, para obtener el precio al contado de un activo. Las plataformas de préstamos en la industria de las [finanzas descentralizadas (DeFi)](/defi/) a menudo hacen esto para determinar el valor del colateral de un usuario y así establecer cuánto puede pedir prestado.
-Los precios de los DEX suelen ser precisos, en gran parte debido a que los arbitradores restauran la paridad en los mercados. No obstante, están abiertos a la manipulación, especialmente si el oráculo en cadena calcula los precios de los activos en función de los patrones comerciales históricos (como suele ser el caso).
+Los precios de los DEX suelen ser precisos, en gran parte debido a que los arbitradores restauran la paridad en los mercados. Sin embargo, están expuestos a manipulaciones, especialmente si el oráculo en cadena calcula los precios de los activos en función de patrones históricos de negociación (como suele ser el caso).
Por ejemplo, un atacante podría inflar artificialmente el precio al contado de un activo obteniendo un préstamo flash justo antes de interactuar con su contrato de préstamo. Consultar el precio del activo en el DEX devolvería un valor más alto de lo normal (debido a la gran "orden de compra" del atacante que sesga la demanda del activo), lo que le permitiría pedir prestado más de lo permitido. Tales "ataques de préstamos flash" se han utilizado para explotar la dependencia de los oráculos de precios entre las aplicaciones DeFi, lo que ha costado a los protocolos millones en fondos perdidos.
##### Cómo prevenir la manipulación de los oráculos
-El requisito mínimo para [evitar la manipulación del oráculo](https://www.cyfrin.io/blog/price-oracle-manipultion-attacks-with-examples) consiste en utilizar una red de oráculo descentralizada que obtiene información de múltiples fuentes para evitar un único punto de error. En la mayoría de los casos, los oráculos descentralizados tienen incentivos criptoeconómicos incorporados para alentar a los nodos de oráculos a que pasen información correcta, lo que los hace más seguros que los oráculos centralizados.
+El requisito mínimo para [evitar la manipulación de oráculos](https://www.cyfrin.io/blog/price-oracle-manipultion-attacks-with-examples) es utilizar una red de oráculos descentralizada que consulte información de múltiples fuentes para evitar puntos únicos de fallo. En la mayoría de los casos, los oráculos descentralizados tienen incentivos criptoeconómicos incorporados para alentar a los nodos de oráculos a que pasen información correcta, lo que los hace más seguros que los oráculos centralizados.
-Si planea consultar a un oráculo en cadena precios de activos, considere el uso de uno que implemente un mecanismo de precio promedio ponderado en el tiempo (TWAP). Un [Oráculo TWAP](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) consulta el precio de un activo en dos puntos diferentes en el tiempo (que puede modificar) y calcula el precio al contado en función del promedio obtenido. La elección de períodos de tiempo más largos protege su protocolo contra la manipulación de precios, ya que los pedidos grandes ejecutados recientemente no pueden afectar a los precios de los activos.
+Si planea consultar a un oráculo en cadena para obtener precios de activos, piense en usar uno que implemente un mecanismo de precio medio ponderado en el tiempo (TWAP). Un [oráculo TWAP](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) consulta el precio de un activo en dos puntos diferentes en el tiempo (que usted puede modificar) y calcula el precio al contado en función del promedio obtenido. La elección de períodos de tiempo más largos protege su protocolo contra la manipulación de precios, ya que los pedidos grandes ejecutados recientemente no pueden afectar a los precios de los activos.
## Recursos de seguridad de contratos inteligentes para desarrolladores {#smart-contract-security-resources-for-developers}
### Herramientas para analizar contratos inteligentes y verificar la corrección del código {#code-analysis-tools}
-- **[Herramientas y bibliotecas de prueba:](/developers/docs/smart-contracts/testing/#testing-tools-and-libraries)** _Colección de herramientas y bibliotecas estándar de la industria para realizar pruebas unitarias, análisis estático y análisis dinámico en contratos inteligentes. _
+- **[Herramientas y bibliotecas de prueba](/developers/docs/smart-contracts/testing/#testing-tools-and-libraries)** - _Colección de herramientas y bibliotecas estándar de la industria para realizar pruebas unitarias y análisis estáticos y dinámicos en contratos inteligentes._
-- **[Herramientas de verificación formal:](/developers/docs/smart-contracts/formal-verification/#formal-verification-tools)** _Herramientas para verificar la corrección funcional en contratos inteligentes y comprobar invariantes. _
+- **[Herramientas de verificación formal](/developers/docs/smart-contracts/formal-verification/#formal-verification-tools)** - _Herramientas para verificar la corrección funcional en los contratos inteligentes y comprobar las invariantes._
-- **[Servicios de auditoría de contratos inteligentes:](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)** _Lista de organizaciones que proporcionan servicios de auditoría de contratos inteligentes para proyectos de desarrollo de Ethereum. _
+- **[Servicios de auditoría de contratos inteligentes](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)** - _Listado de organizaciones que prestan servicios de auditoría de contratos inteligentes para proyectos de desarrollo de Ethereum._
-- **[Plataformas de recompensa por errores:](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)** _Plataformas para coordinar recompensas de errores y premiar la notificación responsable de vulnerabilidades críticas en los contratos inteligentes._
+- **[Plataformas de recompensas por errores](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)** - _Plataformas para coordinar recompensas por errores y premiar la divulgación responsable de vulnerabilidades críticas en los contratos inteligentes._
-- **[Fork Checker:](https://forkchecker.hashex.org/)** _Una herramienta en línea gratuita para comprobar toda la información disponible sobre un contrato bifurcado. _
+- **[Fork Checker](https://forkchecker.hashex.org/)** - _Una herramienta en línea gratuita para comprobar toda la información disponible sobre un contrato bifurcado._
-- **[ABI Encoder:](https://abi.hashex.org/)** _Servicio en línea gratuito para codificar funciones de contratos y argumentos constructor de Solidity. _
+- **[ABI Encoder](https://abi.hashex.org/)** - _Un servicio en línea gratuito para codificar las funciones de su contrato de Solidity y los argumentos del constructor._
-- **[Aderyn](https://github.com/Cyfrin/aderyn)**: _Analizador estático de Solidity, que atraviesa los Árboles de Sintaxis Abstracta (AST) para identificar vulnerabilidades sospechosas e imprimir problemas en un formato de reducción fácil de consumir._
+- **[Aderyn](https://github.com/Cyfrin/aderyn)** - _Analizador estático de Solidity, que recorre los Árboles de sintaxis abstracta (AST) para señalar posibles vulnerabilidades e imprimir los problemas en un formato Markdown fácil de consumir._
-### Herramientas para monitorear contratos inteligentes {#smart-contract-monitoring-tools}
+### Herramientas para supervisar contratos inteligentes {#smart-contract-monitoring-tools}
-- **[Tenderly Real-Time Alerting:](https://tenderly.co/alerting/)** _Una herramienta para recibir notificaciones en tiempo real cuando ocurren eventos inusuales o inesperados en sus contratos inteligentes o billeteras. _
+- **[Alertas en tiempo real de Tenderly](https://tenderly.co/monitoring)** - _Una herramienta para recibir notificaciones en tiempo real cuando se produzcan eventos inusuales o inesperados en sus contratos inteligentes o billeteras._
### Herramientas para la administración segura de contratos inteligentes {#smart-contract-administration-tools}
-- **[Safe:](https://safe.global/)** _Billetera de contrato inteligente que se ejecuta en Ethereum y requiere un número mínimo de personas para aprobar una transacción antes de que pueda ocurrir (M de N). _
+- **[Safe](https://safe.global/)** - _Billetera de contrato inteligente que se ejecuta en Ethereum y que requiere que un número mínimo de personas apruebe una transacción antes de que pueda ocurrir (M de N)._
-- **[Contratos OpenZeppelin:](https://docs.openzeppelin.com/contracts/5.x/)** _Bibliotecas de contratos para implementar funciones administrativas, incluida la propiedad del contrato, actualizaciones, controles de acceso, gobernanza, pausa y otras._
+- **[Contratos de OpenZeppelin](https://docs.openzeppelin.com/contracts/5.x/)** - _Bibliotecas de contratos para implementar funciones administrativas, que incluyen la propiedad del contrato, las actualizaciones, los controles de acceso, la gobernanza, la capacidad de pausa y mucho más._
### Servicios de auditoría de contratos inteligentes {#smart-contract-auditing-services}
-- **[ConsenSys Diligence:](https://consensys.net/diligence/)** _Servicio de auditoría de contratos inteligentes que ayuda a los proyectos de todo el ecosistema de cadenas de bloques a garantizar que sus protocolos estén listos para su lanzamiento y creados para proteger a los usuarios._
+- **[ConsenSys Diligence](https://diligence.consensys.io/)** - _Servicio de auditoría de contratos inteligentes que ayuda a los proyectos de todo el ecosistema de cadenas de bloques a garantizar que sus protocolos estén listos para su lanzamiento y creados para proteger a los usuarios._
-- **[CertiK:](https://www.certik.com/)** _Firma de seguridad de cadenas de bloques pionera en el uso de tecnología de verificación formal de vanguardia en contratos inteligentes y redes de cadena de bloques._
+- **[CertiK](https://www.certik.com/)** - _Firma de seguridad de cadenas de bloques pionera en el uso de tecnología de verificación formal de vanguardia en contratos inteligentes y redes de cadena de bloques._
-- **[Trail of Bits:](https://www.trailofbits.com/)** _Empresa de ciberseguridad que combina la investigación de seguridad con una mentalidad de atacante para reducir el riesgo y fortalecer el código._
+- **[Trail of Bits](https://www.trailofbits.com/)** - _Empresa de ciberseguridad que combina la investigación de seguridad con una mentalidad de atacante para reducir el riesgo y fortalecer el código._
-- **[PeckShield:](https://peckshield.com/)** _Empresa de seguridad de cadena de bloques que ofrece productos y servicios para la seguridad, privacidad y facilidad de uso de todo el ecosistema de cadena de bloques._
+- **[PeckShield](https://peckshield.com/)** - _Empresa de seguridad de cadena de bloques que ofrece productos y servicios para la seguridad, privacidad y facilidad de uso de todo el ecosistema de la cadena de bloques._
-- **[QuantStamp:](https://quantstamp.com/)** _Servicio de auditoría que facilita la adopción general de la tecnología de cadena de bloques a través de servicios de seguridad y evaluación de riesgos._
+- **[QuantStamp](https://quantstamp.com/)** - _Servicio de auditoría que facilita la adopción general de la tecnología de cadena de bloques a través de servicios de seguridad y evaluación de riesgos._
-- **[OpenZeppelin:](https://www.openzeppelin.com/security-audits)** _Empresa de seguridad de contratos inteligentes que proporciona auditorías de seguridad para sistemas distribuidos._
+- **[OpenZeppelin](https://www.openzeppelin.com/security-audits)** - _Empresa de seguridad de contratos inteligentes que proporciona auditorías de seguridad para sistemas distribuidos._
-- **[Runtime Verification:](https://runtimeverification.com/)** _Empresa de seguridad especializada en el modelado formal y la verificación de contratos inteligentes._
+- **[Runtime Verification](https://runtimeverification.com/)** - _Empresa de seguridad especializada en el modelado formal y la verificación de contratos inteligentes._
-- **[Hacken:](https://hacken.io)** _Auditor de ciberseguridad Web3 que aporta el enfoque de 360 grados a la seguridad de la cadena de bloques. _
+- **[Hacken](https://hacken.io)** - _Auditor de ciberseguridad de Web3 que aporta un enfoque de 360 grados a la seguridad de la cadena de bloques._
-- **[Nethermind:](https://www.nethermind.io/smart-contract-audits)** _Servicios de auditoría de Solidity y Cairo que garantizan la integridad de los contratos inteligentes y la seguridad de los usuarios en Ethereum y Starknet._
+- **[Nethermind](https://www.nethermind.io/smart-contract-audits)** - _Servicios de auditoría de Solidity y Cairo que garantizan la integridad de los contratos inteligentes y la seguridad de los usuarios en Ethereum y Starknet._
-- **[HashEx:](https://hashex.org/)** _HashEx se centra en la auditoría de cadena de bloques y contratos inteligentes para garantizar la seguridad de las criptomonedas, proporcionando servicios como el desarrollo de contratos inteligentes, las pruebas de penetración y la consultoría de cadenas de bloques. _
+- **[HashEx](https://hashex.org/)** - _HashEx se centra en la auditoría de cadena de bloques y contratos inteligentes para garantizar la seguridad de las criptomonedas, proporcionando servicios como el desarrollo de contratos inteligentes, las pruebas de penetración y la consultoría de cadenas de bloques._
-- **[Code4rena:](https://code4rena.com/)** _Plataforma de auditoría competitiva que incentiva a los expertos en seguridad de contratos inteligentes a encontrar vulnerabilidades y ayudar a que la Web3 sea más segura._
+- **[Code4rena](https://code4rena.com/)** - _Plataforma de auditoría competitiva que incentiva a los expertos en seguridad de contratos inteligentes a encontrar vulnerabilidades y ayudar a que la web3 sea más segura._
-- **[CodeHawks](https://codehawks.com/)**: _plataforma de auditorías competitivas que aloja licitaciones de auditorías de contratos inteligentes para investigadores de seguridad._
+- **[CodeHawks](https://codehawks.com/)** - _Plataforma de auditorías competitivas que aloja licitaciones de auditorías de contratos inteligentes para investigadores de seguridad._
-- **[Cyfrin:](https://cyfrin.io)** _Plataforma de seguridad web3 que incuba la seguridad criptográfica a través de productos y servicios de auditoría de contratos inteligentes._
+- **[Cyfrin](https://cyfrin.io)** - _Potencia de seguridad de Web3, que incuba la seguridad criptográfica a través de productos y servicios de auditoría de contratos inteligentes._
-- **[ImmuneBytes](https://immunebytes.com/smart-contract-audit/)**: _empresa de seguridad en Web3 que ofrece auditorías de seguridad para sistemas de cadena de bloque mediante un equipo de auditores expertos y las mejores herramientas existentes._
+- **[ImmuneBytes](https://immunebytes.com/smart-contract-audit/)** - _Firma de seguridad de Web3 que ofrece auditorías de seguridad para sistemas de cadena de bloques a través de un equipo de auditores experimentados y las mejores herramientas de su clase._
-- **[Oxorio:](https://oxor.io/)** _Auditorías de contratos inteligentes y servicios de seguridad de cadena de bloques con experiencia en EVM, Solidity, ZK y tecnología de cadena cruzada para empresas criptográficas y proyectos DeFi._
+- **[Oxorio](https://oxor.io/)** - _Auditorías de contratos inteligentes y servicios de seguridad de cadena de bloques con experiencia en EVM, Solidity, ZK y tecnología de cadena cruzada para empresas criptográficas y proyectos DeFi._
-- **[Inference:](https://inference.ag/)** _Empresa de auditoría de seguridad especializada en auditoría de contratos inteligentes para cadenas de bloques basadas en EVM. Gracias a sus auditores expertos, identifican posibles problemas y sugieren soluciones prácticas para solucionarlos antes de la implementación._
+- **[Inference](https://inference.ag/)** - _Empresa de auditoría de seguridad especializada en auditoría de contratos inteligentes para cadenas de bloques basadas en EVM._ Gracias a sus auditores expertos, identifican posibles problemas y sugieren soluciones prácticas para solucionarlos antes de la implementación._
### Plataformas de recompensas por errores {#bug-bounty-platforms}
-- **[Immunefi:](https://immunefi.com/)** _Plataforma de recompensas de errores para contratos inteligentes y proyectos DeFi donde los investigadores de seguridad revisan el código, revelan vulnerabilidades, obtienen incentivos económicos y hacen que las criptomonedas sean más seguras. _
+- **[Immunefi](https://immunefi.com/)** - _Plataforma de recompensas por errores para contratos inteligentes y proyectos DeFi donde los investigadores de seguridad revisan el código, revelan vulnerabilidades, obtienen incentivos económicos y hacen que las criptomonedas sean más seguras._
-- **[HackerOne:](https://www.hackerone.com/)** _Plataforma de coordinación de vulnerabilidades y recompensas por errores que conecta a las empresas con evaluadores de penetración e investigadores de ciberseguridad. _
+- **[HackerOne](https://www.hackerone.com/)** - _Plataforma de coordinación de vulnerabilidades y recompensas por errores que conecta a las empresas con evaluadores de penetración e investigadores de ciberseguridad._
-- **[HackenProof:](https://hackenproof.com/)** _Plataforma experta de recompensas por errores para proyectos criptográficos (DeFi, Smart Contracts, Wallets, CEX y más), donde profesionales de seguridad proporcionan servicios de triaje y a los investigadores se les paga por informes de errores relevantes y verificados. _
+- **[HackenProof](https://hackenproof.com/)** - _Plataforma experta de recompensas por errores para proyectos criptográficos (DeFi, contratos inteligentes, billeteras, CEX y más), donde profesionales de seguridad proporcionan servicios de triaje y a los investigadores se les paga por informes de errores relevantes y verificados._
-- **[Sherlock:](https://www.sherlock.xyz/)** _Asegurador en Web3 para la seguridad de los contratos inteligentes, con pagos para auditores gestionados a través de contratos inteligentes para garantizar que los errores relevantes se paguen de manera justa._
+- **[Sherlock](https://www.sherlock.xyz/)** - _Asegurador en Web3 para la seguridad de los contratos inteligentes, con pagos para auditores gestionados a través de contratos inteligentes para garantizar que los errores relevantes se paguen de manera justa._
-- **[CodeHawks:](https://www.codehawks.com/)** _Plataforma de recompensas por errores competitivas donde los auditores participan en concursos y desafíos de seguridad, y (pronto) en sus propias auditorías privadas._
+- **[CodeHawks](https://www.codehawks.com/)** - _Plataforma de recompensas por errores competitiva donde los auditores participan en concursos y desafíos de seguridad, y (pronto) en sus propias auditorías privadas._
-### Publicaciones de vulnerabilidades y explotaciones conocidas en los contratos inteligentes {#common-smart-contract-vulnerabilities-and-exploits}
+### Publicaciones de vulnerabilidades y explotaciones conocidas de contratos inteligentes {#common-smart-contract-vulnerabilities-and-exploits}
-- **[ConsenSys: ataques conocidos de contratos inteligentes:](https://consensysdiligence.github.io/smart-contract-best-practices/attacks/)** _ Explicación para principiantes de las vulnerabilidades de contratos más importantes, con código de ejemplo para la mayoría de los casos. _
+- **[ConsenSys: ataques conocidos de contratos inteligentes](https://consensysdiligence.github.io/smart-contract-best-practices/attacks/)** - _Explicación para principiantes de las vulnerabilidades de contrato más importantes, con código de ejemplo para la mayoría de los casos._
-- **[Registro SWC:](https://swcregistry.io/)** _Lista curada de elementos de Common Weakness Enumeration (CWE) que se aplican a los contratos inteligentes de Ethereum._
+- **[Registro SWC](https://swcregistry.io/)** - _Lista seleccionada de elementos de la enumeración de debilidades comunes (CWE) que se aplican a los contratos inteligentes de Ethereum._
-- **[Rekt:](https://rekt.news/)** _Publicación actualizada regularmente de hackeos y explotaciones cripto de alto perfil, junto con informes detallados post-mortem. _
+- **[Rekt](https://rekt.news/)** - _Publicación actualizada regularmente de hackeos y explotaciones de criptomonedas de alto perfil, junto con informes post-mortem detallados._
-### Desafíos para aprender sobre seguridad en los contratos inteligentes {#challenges-for-learning-smart-contract-security}
+### Desafíos para aprender sobre seguridad de contratos inteligentes {#challenges-for-learning-smart-contract-security}
-- **[Awesome BlockSec CTF:](https://github.com/blockthreat/blocksec-ctfs)** _Lista curada de juegos de guerra de seguridad de cadena de bloques, desafíos, y competencias y escritos de soluciones de [Capture The Flag](https://www.webopedia.com/definitions/ctf-event/amp/)._
+- **[Awesome BlockSec CTF](https://github.com/blockthreat/blocksec-ctfs)** - _Lista seleccionada de wargames de seguridad de la cadena de bloques, desafíos y competiciones de [Capture The Flag](https://www.webopedia.com/definitions/ctf-event/amp/) y soluciones._
-- **[Damn Vulnerable DeFi:](https://www.damnvulnerabledefi.xyz/)** _Juego de guerra para aprender sobre seguridad de ofensiva en contratos inteligentes DeFi y desarrollar habilidades en la búsqueda de errores y la auditoría de seguridad. _
+- **[Damn Vulnerable DeFi](https://www.damnvulnerabledefi.xyz/)** - _Juego de guerra para aprender sobre seguridad ofensiva en contratos inteligentes de DeFi y desarrollar habilidades en la búsqueda de errores y la auditoría de seguridad._
-- **[Ethernaut:](https://ethernaut.openzeppelin.com/)** _Juego de guerra basado en la Web3/Solidity donde cada nivel es un contrato inteligente que necesita ser "hackeado". _
+- **[Ethernaut](https://ethernaut.openzeppelin.com/)** - _Juego de guerra basado en Web3/Solidity donde cada nivel es un contrato inteligente que necesita ser «hackeado»._
-- **[HackenProof x HackTheBox:](https://app.hackthebox.com/tracks/HackenProof-Track)** _Desafío de piratería de contrato inteligente, ambientado en una aventura de fantasía. La finalización exitosa del desafío también da acceso a un programa privado de recompensas por errores._
+- **[HackenProof x HackTheBox](https://app.hackthebox.com/tracks/HackenProof-Track)** - _Desafío de piratería de contrato inteligente, ambientado en una aventura de fantasía._ La finalización exitosa del desafío también da acceso a un programa privado de recompensas por errores._
-### Mejores prácticas para proteger contratos inteligentes {#smart-contract-security-best-practices}
+### Mejores prácticas para proteger los contratos inteligentes {#smart-contract-security-best-practices}
-- **[ConsenSys: mejores prácticas de seguridad de contratos inteligentes de Ethereum:](https://consensys.github.io/smart-contract-best-practices/)** _Lista exhaustiva de directrices para proteger contratos inteligentes de Ethereum._
+- **[ConsenSys: mejores prácticas de seguridad de contratos inteligentes de Ethereum](https://consensys.github.io/smart-contract-best-practices/)** - _Lista exhaustiva de directrices para proteger contratos inteligentes de Ethereum._
-- **[Nascent: Kit de herramientas de seguridad simple:](https://github.com/nascentxyz/simple-security-toolkit)** _Colección de guías prácticas centradas en la seguridad y listas de verificación para el desarrollo de contratos inteligentes._
+- **[Nascent: kit de herramientas de seguridad simple](https://github.com/nascentxyz/simple-security-toolkit)** - _Colección de guías prácticas centradas en la seguridad y listas de verificación para el desarrollo de contratos inteligentes._
-- **[Solidity Patterns:](https://fravoll.github.io/solidity-patterns/)** _Recopilación útil de patrones seguros y de mejores prácticas para el lenguaje de programación de contratos inteligentes Solidity. _
+- **[Patrones de Solidity](https://fravoll.github.io/solidity-patterns/)** - _Recopilación útil de patrones seguros y de mejores prácticas para el lenguaje de programación de contratos inteligentes Solidity._
-- **[Documentos de Solidity: Consideraciones de seguridad:](https://docs.soliditylang.org/en/v0.8.16/security-considerations.html)** _Directrices para escribir contratos inteligentes seguros con Solidity. _
+- **[Documentos de Solidity: consideraciones de seguridad](https://docs.soliditylang.org/en/v0.8.16/security-considerations.html)** - _Directrices para escribir contratos inteligentes seguros con Solidity._
-- **[Estándar de verificación de seguridad de contratos inteligentes:](https://github.com/securing/SCSVS)** _Lista de verificación de catorce partes creada para estandarizar la seguridad de los contratos inteligentes para desarrolladores, arquitectos, revisores y proveedores de seguridad. _
+- **[Estándar de verificación de seguridad de contratos inteligentes](https://github.com/securing/SCSVS)** - _Lista de verificación de catorce partes creada para estandarizar la seguridad de los contratos inteligentes para desarrolladores, arquitectos, revisores y proveedores de seguridad._
-- **[Aprenda sobre seguridad y auditorías de contratos inteligentes:](https://updraft.cyfrin.io/courses/security) _Curso definitivo de seguridad y auditoría de contratos inteligentes creado para desarrolladores de contratos inteligentes que buscan mejorar sus buenas prácticas de seguridad y convertirse en investigadores de seguridad._
+- **[Aprenda sobre seguridad y auditoría de contratos inteligentes](https://updraft.cyfrin.io/courses/security)** - _El curso definitivo de seguridad y auditoría de contratos inteligentes, creado para desarrolladores de contratos inteligentes que buscan mejorar sus prácticas de seguridad y convertirse en investigadores de seguridad._
### Tutoriales sobre seguridad de contratos inteligentes {#tutorials-on-smart-contract-security}
- [Cómo escribir contratos inteligentes seguros](/developers/tutorials/secure-development-workflow/)
-- [Cómo usar Slither para encontrar errores en contratos inteligentes](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
+- [Cómo usar Slither para encontrar errores en los contratos inteligentes](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
-- [Cómo utilizar Manticore para encontrar errores en contratos inteligentes](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
+- [Cómo usar Manticore para encontrar errores en los contratos inteligentes](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
-- [Pautas de seguridad de contratos inteligentes](/developers/tutorials/smart-contract-security-guidelines/)
+- [Directrices de seguridad para los contratos inteligentes](/developers/tutorials/smart-contract-security-guidelines/)
-- [Cómo integrar de forma segura su contrato de tokens con tokens arbitrarios](/developers/tutorials/token-integration-checklist/)
+- [Cómo integrar de forma segura su contrato de token con tokens arbitrarios](/developers/tutorials/token-integration-checklist/)
-- [Cyfrin Updraft: curso completo sobre seguridad de contratos inteligentes y auditoría](https://updraft.cyfrin.io/courses/security)
+- [Cyfrin Updraft - curso completo sobre seguridad y auditoría de contratos inteligentes](https://updraft.cyfrin.io/courses/security)
From 0dcfef4717c54880e56552c7b6e893861d81b0d9 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:57 -0300
Subject: [PATCH 157/589] update(i18n):
public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md
---
.../uniswap-v2-annotated-code/index.md | 625 +++++++++---------
1 file changed, 321 insertions(+), 304 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md
index 56b547f553e..0539b655b58 100644
--- a/public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md
+++ b/public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md
@@ -1,9 +1,8 @@
---
title: "Un recorrido por el contrato Uniswap-v2"
-description: '¿Cómo funciona el contrato Uniswap-v2? ¿Por qué esta escrito de esta manera?'
+description: ¿Cómo funciona el contrato Uniswap-v2? ¿Por qué está escrito de esa manera?
author: Ori Pomerantz
-tags:
- - "solidity"
+tags: [ "Solidity" ]
skill: intermediate
published: 2021-05-01
lang: es
@@ -11,104 +10,106 @@ lang: es
## Introducción {#introduction}
-[Uniswap V2](https://uniswap.org/whitepaper.pdf) puede crear un mercado de intercambio entre dos tókenes ERC-20 cualquiera. En este artículo vamos a revisar el código fuente de los contratos que implementan este protocolo y ver por qué están escritos de esta manera.
+[Uniswap v2](https://app.uniswap.org/whitepaper.pdf) puede crear un mercado de intercambio entre dos tókenes ERC-20 cualesquiera. En este artículo revisaremos el código fuente de los contratos que implementan este protocolo y veremos por qué están escritos de esta manera.
### ¿Qué hace Uniswap? {#what-does-uniswap-do}
-Básicamente hay dos tipos de usuario: los proveedores de liquidez y los que compran y venden.
+Básicamente, hay dos tipos de usuarios: los proveedores de liquidez y los traders.
-Los _proveedores de liquidez_ proporcionan la reserva con los dos tókenes que se pueden intercambiar (los llamaremos **Token0** y **Token1**). A cambio, estos reciben un tercer token que representa la propiedad parcial de la reserva, llamado _token de liquidez_.
+Los _proveedores de liquidez_ proporcionan a la reserva los dos tókenes que se pueden intercambiar (los llamaremos **Token0** y **Token1**). A cambio, reciben un tercer token que representa la propiedad parcial de la reserva, llamado _token de liquidez_.
-Los _traders_ envían un tipo de token al grupo y reciben el otro (por ejemplo, envían un **Token0** y reciben un **Token1**) del grupo proporcionado por los proveedores de liquidez. El tipo de cambio viene determinado por el número relativo del **Token0** y del **Token1** que tiene el grupo. Además, la reserva toma un pequeño porcentaje como recompensa para la reserva de liquidez.
+Los _traders_ envían un tipo de token a la reserva y reciben el otro (por ejemplo, envían **Token0** y reciben **Token1**) de la reserva proporcionada por los proveedores de liquidez. El tipo de cambio se determina por la cantidad relativa de **Token0** y **Token1** que tiene la reserva. Además, la reserva toma un pequeño porcentaje como recompensa para el fondo de liquidez.
-Cuando los proveedores de liquidez quieren recuperar sus activos, pueden quemar los tókenes de la reserva y así recuperar sus tókenes, incluyendo su parte de la recompensa.
+Cuando los proveedores de liquidez quieren recuperar sus activos, pueden quemar los tókenes de la reserva y recibir de vuelta sus tókenes, incluida su parte de las recompensas.
-[Haga clic aquí para ver una descripción completa](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/swaps/).
+[Haga clic aquí para obtener una descripción más completa](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/swaps/).
-### ¿Por qué V2? ¿Por qué no V3? {#why-v2}
+### ¿Por qué v2? ¿Por qué no v3? {#why-v2}
-[Uniswap V3](https://uniswap.org/whitepaper-v3.pdf) es una actualización mucho más complicada que la V2. Es más fácil aprender la V2 primero y luego pasar a la V3.
+[Uniswap v3](https://app.uniswap.org/whitepaper-v3.pdf) es una actualización mucho más complicada que la v2. Es más fácil aprender primero v2 y luego pasar a v3.
-### Contratos Principales vs Contratos Periféricos {#contract-types}
+### Contratos principales frente a contratos periféricos {#contract-types}
-Uniswap v2 se divide en dos componentes: uno principal y otro periférico. Esta división permite que los contratos principales —que guardan los activos— y, por lo tanto _tienen_ que ser seguros, simples y fáciles de auditar. Toda la funcionalidad adicional que necesitan los agentes pueden proporcionarla los contratos periféricos.
+Uniswap v2 se divide en dos componentes, uno principal y otro periférico. Esta división permite que los contratos principales, que contienen los activos y, por lo tanto, _tienen_ que ser seguros, sean más simples y fáciles de auditar. Toda la funcionalidad adicional que requieren los traders puede ser proporcionada por los contratos periféricos.
-## Flujos de control y de datos {#flows}
+## Flujos de datos y de control {#flows}
Este es el flujo de datos y de control que se produce cuando se realizan las tres acciones principales de Uniswap:
-1. Intercambio entre diferentes tókenes
-2. Aporte liquidez al mercado, y será recompensado con el intercambio de un par de tókenes de liquidez ERC-20
-3. Queme los tókenes de liquidez ERC-20, y recupere los tókenes ERC-20 de intercambio de par permite a los agentes que intercambien.
+1. Intercambiar entre diferentes tókenes
+2. Añadir liquidez al mercado y ser recompensado con tókenes de liquidez ERC-20 de intercambio de pares
+3. Quemar tókenes de liquidez ERC-20 y recuperar los tókenes ERC-20 que el intercambio de pares permite que los traders intercambien
-### Intercambiar {#swap-flow}
+### Intercambio {#swap-flow}
-Este es el flujo más común, utilizado por los agentes:
+Este es el flujo más común, utilizado por los traders:
-#### Solicitante {#caller}
+#### Emisor {#caller}
-1. Proporciona a la cuenta periférica una asignación en el importe por canjear.
-2. Activar una de las muchas funciones de intercambio de los contratos periféricos (que depende de si hay ETH involucrados o no, si el trader especifica la cantidad de tókenes por depositar, o la cantidad de tókenes por recuperar, etc.). Cada función de intercambio acepta una `ruto`, una matriz de intercambios por la que pasar.
+1. Proporcionar a la cuenta periférica una asignación por el importe que se va a intercambiar.
+2. Llamar a una de las muchas funciones de intercambio del contrato periférico (cuál dependerá de si hay ETH involucrado o no, si el trader especifica la cantidad de tókenes a depositar o la cantidad de tókenes a recuperar, etc.).
+ Cada función de intercambio acepta una `path` (ruta), una matriz de intercambios por los que pasar.
#### En el contrato periférico (UniswapV2Router02.sol) {#in-the-periphery-contract-uniswapv2router02-sol}
-3. Identifique, durante el proceso, las cantidades que se necesitan negociar en cada intercambio.
-4. Se repite por el camino. Por cada intercambio producido durante el proceso, se envia el token de entrada, y luego se activa la función de `intercambio`. En la mayoría de los casos, la dirección de destino para los tókenes es el siguiente par en la ruta. En el intercambio final, es la dirección proporcionada por el agente.
+3. Identificar las cantidades que se deben negociar en cada intercambio a lo largo de la ruta.
+4. Iterar sobre la ruta. Por cada intercambio en el camino, envía el token de entrada y luego llama a la función `swap` del intercambio.
+ En la mayoría de los casos, la dirección de destino de los tókenes es el siguiente intercambio de par en la ruta. En el intercambio final, es la dirección proporcionada por el trader.
#### En el contrato principal (UniswapV2Pair.sol) {#in-the-core-contract-uniswapv2pairsol-2}
-5. Verifique que no se está estafando el contrato principal y que puede mantener la suficiente liquidez despúes del intercambio.
-6. Compruebe cuántos tókenes adicionales tiene, además de las reservas conocidas. Esa cantidad, es el numero de tókenes de entrada recibidos para intercambiar.
-7. Envíe los tókenes de salida al destino.
-8. Active `_update` para actualizar la cantidad de reserva
+5. Verificar que el contrato principal no está siendo engañado y que puede mantener suficiente liquidez después del intercambio.
+6. Ver cuántos tókenes adicionales tenemos además de las reservas conocidas. Esa cantidad es el número de tókenes de entrada que recibimos para intercambiar.
+7. Enviar los tókenes de salida al destino.
+8. Llamar a `_update` para actualizar las cantidades de la reserva
-#### Retomando los contratos periféricos (UniswapV2Router02.sol) {#back-in-the-periphery-contract-uniswapv2router02-sol}
+#### De vuelta en el contrato periférico (UniswapV2Router02.sol) {#back-in-the-periphery-contract-uniswapv2router02-sol}
-9. Realice cualquier limpieza necesaria (por ejemplo, quemar tókenes WETH para recuperar ETH para enviar al comprador o vendedor).
+9. Realizar cualquier limpieza necesaria (por ejemplo, quemar tókenes WETH para recuperar ETH y enviarlos al trader).
### Añadir liquidez {#add-liquidity-flow}
-#### Solicitante {#caller-2}
+#### Emisor {#caller-2}
-1. Proporcione a las cuentas periféricas una cantidad adicional para añadirla a la reserva de liquidez.
-2. Active una de las funciones `addLiquidity` del contrato periférico.
+1. Proporcionar a la cuenta periférica una asignación en las cantidades que se añadirán al fondo de liquidez.
+2. Llamar a una de las funciones `addLiquidity` del contrato periférico.
#### En el contrato periférico (UniswapV2Router02.sol) {#in-the-periphery-contract-uniswapv2router02sol-2}
-3. Cree un nuevo par de intercambio si es necesario.
-4. Si hay un par de intercambio existente, calcule la cantidad de tókenes que debe añadir. Se supone que este valor es idéntico para ambos tókenes, es decir, la misma relación entre tókenes nuevos y existentes.
-5. Compruebe si los importes son aceptables (los solicitantes pueden especificar un importe mínimo, por debajo del cual prefieren no añadir liquidez).
-6. Active el contrato principal.
+3. Crear un nuevo intercambio de pares si es necesario.
+4. Si existe un intercambio de pares, calcular la cantidad de tókenes a añadir. Se supone que este es un valor idéntico para ambos tókenes, por lo que se mantiene la misma proporción de tókenes nuevos con respecto a los existentes.
+5. Comprobar si las cantidades son aceptables (los emisores pueden especificar una cantidad mínima por debajo de la cual prefieren no añadir liquidez).
+6. Llamar al contrato principal.
#### En el contrato principal (UniswapV2Pair.sol) {#in-the-core-contract-uniswapv2pairsol-2}
-7. Acumule tókenes de liquidez y envíelos al solicitante.
-8. Active `_update` para actualizar la cantidad de reserva
+7. Acuñar tókenes de liquidez y enviarlos al emisor
+8. Llamar a `_update` para actualizar las cantidades de la reserva
-### Suprimir la liquidez {#remove-liquidity-flow}
+### Retirar liquidez {#remove-liquidity-flow}
-#### Solicitante {#caller-3}
+#### Emisor {#caller-3}
-1. Proporcione a la cuenta periférica una cantidad de tókenes de liquidez para quemar a cambio de los tókenes subyacentes.
-2. Active una de las funciones `removeLiquidity` del contrato periférico.
+1. Proporcionar a la cuenta periférica una asignación de tókenes de liquidez para ser quemados a cambio de los tókenes subyacentes.
+2. Llamar a una de las funciones `removeLiquidity` del contrato periférico.
#### En el contrato periférico (UniswapV2Router02.sol) {#in-the-periphery-contract-uniswapv2router02sol-3}
-3. Envíe los tókenes de liquidez al intercambio de par.
+3. Enviar los tókenes de liquidez al intercambio de pares.
#### En el contrato principal (UniswapV2Pair.sol) {#in-the-core-contract-uniswapv2pairsol-3}
-4. Envíe a la dirección de destino los tókenes subyacentes proporcionales a los tókenes quemados. Por ejemplo, si hay 1.000 tókenes A en la reserva, 500 tókenes B y 90 tókenes de liquidez, y recibimos 9 tókenes para quemar, estamos quemando el 10 % de los tókenes de liquidez, por lo tanto, enviamos al usuario 100 tókenes A y 50 tókenes B.
-5. Queme los tókenes de liquidez.
-6. Active `_update` para actualizar la cantidad de reserva
+4. Enviar a la dirección de destino los tókenes subyacentes en proporción a los tókenes quemados. Por ejemplo, si hay 1000 tókenes A en la reserva, 500 tókenes B y 90 tókenes de liquidez, y recibimos 9 tókenes para quemar, estamos quemando el 10 % de los tókenes de liquidez, por lo que devolvemos al usuario 100 tókenes A y 50 tókenes B.
+5. Quemar los tókenes de liquidez.
+6. Llamar a `_update` para actualizar las cantidades de la reserva
## Los contratos principales {#core-contracts}
-Estos son los contratos seguros que mantienen la liquidez.
+Estos son los contratos seguros que contienen la liquidez.
### UniswapV2Pair.sol {#UniswapV2Pair}
-[Este contrato](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Pair.sol) implementa una reserva real que intercambia tókenes. Esta es la principal función de Uniswap.
+[Este contrato](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Pair.sol) implementa la reserva real que intercambia tókenes. Es la funcionalidad principal de Uniswap.
```solidity
pragma solidity =0.5.16;
@@ -122,27 +123,28 @@ import './interfaces/IUniswapV2Factory.sol';
import './interfaces/IUniswapV2Callee.sol';
```
-Estas son todas las interfaces que el contrato necesita conocer, ya sea porque el contrato las implementa (`IUniswapV2Pair` and `UniswapV2ERC20`) o porque activa los contratos que las implementan.
+Estas son todas las interfaces que el contrato necesita conocer, ya sea porque el contrato las implementa (`IUniswapV2Pair` y `UniswapV2ERC20`) o porque llama a contratos que las implementan.
```solidity
contract UniswapV2Pair is IUniswapV2Pair, UniswapV2ERC20 {
```
-Este contrado hereda de `UniswapV2ERC20`, que proporciona las funciones de ERC-20 para los tókenes de liquidez.
+Este contrato hereda de `UniswapV2ERC20`, que proporciona las funciones ERC-20 para los tókenes de liquidez.
```solidity
using SafeMath for uint;
```
-La [biblioteca SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math) se usa para evitar excedentes y faltantes. Esto es importante, porque de otra manera podría darse una situación donde un valor debería ser `-1`, pero en cambio es `2^256-1`.
+La [librería SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math) se utiliza para evitar desbordamientos y subdesbordamientos. Esto es importante porque, de lo contrario, podríamos terminar en una situación en la que un valor debería ser `-1`, pero en su lugar es `2^256-1`.
```solidity
using UQ112x112 for uint224;
```
-Muchos de los cálculos en el contrato de reserva requieren fracciones. Sin embargo, la EVM no admite fracciones. La solución que encontró Uniswap es usar valores de 224 bits, con 112 bits para la parte íntegra y 112 bits para las fracciones. Entonces `1.0` se representa como `2^112`, `1,5` se representa como `2^112 + 2^111`, etc.
+Muchos cálculos en el contrato de la reserva requieren fracciones. Sin embargo, la EVM no admite fracciones.
+La solución que encontró Uniswap es usar valores de 224 bits, con 112 bits para la parte entera y 112 bits para la fracción. Por lo tanto, `1.0` se representa como `2^112`, `1.5` se representa como `2^112 + 2^111`, etc.
-Más detalles sobre esta biblioteca están disponibles [ en el siguiente documento](#FixedPoint).
+Hay más detalles sobre esta librería [más adelante en el documento](#FixedPoint).
#### Variables {#pair-vars}
@@ -150,67 +152,67 @@ Más detalles sobre esta biblioteca están disponibles [ en el siguiente documen
uint public constant MINIMUM_LIQUIDITY = 10**3;
```
-Para evitar casos de división entre cero, hay un número mínimo de tókenes de liquidez que siempre existe (aunque son propiedad de la cuenta cero). Ese número es **LIQUIDEZ_MINIMA** mil.
+Para evitar casos de división por cero, hay un número mínimo de tókenes de liquidez que siempre existen (pero son propiedad de la cuenta cero). Ese número es **MINIMUM_LIQUIDITY**, mil.
```solidity
bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));
```
-Este es el seleccionador de ABI para la función de transferencia de ERC-20. Se usa para transferir tókenes ERC-20 en dos cuentas de token.
+Este es el selector de ABI para la función de transferencia de ERC-20. Se utiliza para transferir tókenes ERC-20 en las dos cuentas de tókenes.
```solidity
address public factory;
```
-Este es el contrato de fábrica que crea esta reserva. Cada reserva es un intercambio entre dos tókenes ERC-20, la fábrica es el punto central que conecta todas estas reservas.
+Este es el contrato de fábrica que creó esta reserva. Cada reserva es un intercambio entre dos tókenes ERC-20; la fábrica es un punto central que conecta todas estas reservas.
```solidity
address public token0;
address public token1;
```
-Existen direcciones de los contratos para los dos tipos de tókenes ERC-20 que esta reserva puede intercambiar.
+Son las direcciones de los contratos para los dos tipos de tókenes ERC-20 que esta reserva puede intercambiar.
```solidity
uint112 private reserve0; // uses single storage slot, accessible via getReserves
uint112 private reserve1; // uses single storage slot, accessible via getReserves
```
-Los fondos que tiene la reserva para cada tipo de token. Asumimos que los dos representan el mismo monto de valor y por ello cada token0 vale reserve1/reserve0 token1's.
+Las reservas que la reserva tiene para cada tipo de token. Asumimos que los dos representan la misma cantidad de valor y, por lo tanto, cada token0 vale reserve1/reserve0 de token1.
```solidity
uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves
```
-La marca de tiempo para el último bloque en el que el intercambio ocurre se usa para rastrear los tipos de cambio a través del tiempo.
+La marca de tiempo del último bloque en el que se produjo un intercambio, utilizada para rastrear los tipos de cambio a lo largo del tiempo.
-Uno de los gastos de gas más grandes de los contratos Ethereum es el almacenamiento, que persiste de una activación del contrato a la siguiente. Cada celda de almacenamiento mide 256 bits. Por lo tanto, tres variables, `reserve0`, `reserve1` y `blockTimestampLast` se asignan de tal manera que un único valor de almacenamiento puede incluir las tres (112 112 32=256).
+Uno de los mayores gastos de gas de los contratos de Ethereum es el almacenamiento, que persiste de una llamada del contrato a la siguiente. Cada celda de almacenamiento tiene 256 bits de longitud. Por lo tanto, tres variables, `reserve0`, `reserve1` y `blockTimestampLast`, se asignan de tal manera que un único valor de almacenamiento puede incluirlas a las tres (112+112+32=256).
```solidity
uint public price0CumulativeLast;
uint public price1CumulativeLast;
```
-Estas variables mantienen los costes acumulados para cada token (cada uno en término del otro). Se pueden utilizar para calcular el tipo de cambio medio durante un periodo de tiempo.
+Estas variables contienen los costes acumulados para cada token (cada uno en términos del otro). Se pueden utilizar para calcular el tipo de cambio promedio durante un período de tiempo.
```solidity
uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event
```
-La manera en que el intercambio de pares decide la tasa de cambio entre token0 y token1 consiste en mantener el múltiplo de las dos reservas constante durante las transacciones. Este valor es `kLast`. Cambia cuando un proveedor de liquidez deposita o retira tókenes, e incrementa ligeramente por la comisión del mercado del 0,3%.
+La forma en que el intercambio de pares decide el tipo de cambio between token0 y token1 es mantener constante el múltiplo de las dos reservas durante las operaciones. `kLast` es este valor. Cambia cuando un proveedor de liquidez deposita o retira tókenes, y aumenta ligeramente debido a la comisión de mercado del 0,3 %.
-He aquí un ejemplo. Tenga en cuenta que, en aras de la simplicidad, la tabla solo tiene tres dígitos tras el punto decimal, e ignoramos la comisión de negociación del 0,3 %, por eso los números no son precisos.
+Aquí tiene un ejemplo sencillo. Tenga en cuenta que, para simplificar, la tabla solo tiene tres dígitos después del punto decimal e ignoramos la comisión de negociación del 0,3 %, por lo que los números no son precisos.
-| Evento | reserve0 | reserve1 | reserve0 \* reserve1 | Tipo de cambio medio (token1 / token0) |
-| ------------------------------------------------- | ---------:| ---------:| ----------------------:| -------------------------------------- |
-| Configuración inicial | 1.000,000 | 1.000,000 | 1.000,000 | |
-| Agente A intercambia 50 token0 por 47,619 token1 | 1.050,000 | 952.381 | 1.000,000 | 0,952 |
-| Agente B intercambia 10 token0 por 8,984 token1 | 1.060,000 | 943,396 | 1.000,000 | 0,898 |
-| Agente C intercambia 40 token0 por 34,305 token1 | 1.100,000 | 909,090 | 1.000,000 | 0,858 |
-| Agente D intercambia 100 token1 por 109,01 token0 | 990,990 | 1.009,090 | 1.000,000 | 0,917 |
-| Agente E intercambia 10 token0 por 10,079 token1 | 1.000,990 | 999.010 | 1.000,000 | 1.008 |
+| Evento | reserva0 | reserva1 | reserva0 \* reserva1 | Tipo de cambio promedio (token1 / token0) |
+| ---------------------------------------------------- | -------: | -------: | ----------------------------------------: | ------------------------------------------------------------ |
+| Configuración inicial | 1000,000 | 1000,000 | 1.000.000 | |
+| El trader A intercambia 50 token0 por 47,619 token1 | 1050,000 | 952,381 | 1.000.000 | 0,952 |
+| El trader B intercambia 10 token0 por 8,984 token1 | 1060,000 | 943,396 | 1.000.000 | 0,898 |
+| El trader C intercambia 40 token0 por 34,305 token1 | 1100,000 | 909,090 | 1.000.000 | 0,858 |
+| El trader D intercambia 100 token1 por 109,01 token0 | 990,990 | 1009,090 | 1.000.000 | 0,917 |
+| El trader E intercambia 10 token0 por 10,079 token1 | 1000,990 | 999,010 | 1.000.000 | 1,008 |
-Al proveer los agentes más token0, el valor relativo del token1 incrementa y vice versa, en función de la oferta y demanda.
+A medida que los traders proporcionan más token0, el valor relativo del token1 aumenta, y viceversa, en función de la oferta y la demanda.
#### Bloqueo {#pair-lock}
@@ -218,35 +220,36 @@ Al proveer los agentes más token0, el valor relativo del token1 incrementa y vi
uint private unlocked = 1;
```
-Hay una clase de vulnerabilidades de seguridad que están basadas en [abusos de reentrada](https://medium.com/coinmonks/ethernaut-lvl-10-re-entrancy-walkthrough-how-to-abuse-execution-ordering-and-reproduce-the-dao-7ec88b912c14). Uniswap necesita transferir tókenes ERC-20 arbitrarios, lo que significa activar los contratos ERC-20 que podrían intentar abusar del mercado Uniswap que los activa. Al tener una variable `unlocked` como parte del contrato, podemos evitar la activación de las funciones mientras se están ejecutando (dentro de la misma transacción).
+Hay una clase de vulnerabilidades de seguridad que se basan en el [abuso de reentrada](https://medium.com/coinmonks/ethernaut-lvl-10-re-entrancy-walkthrough-how-to-abuse-execution-ordering-and-reproduce-the-dao-7ec88b912c14). Uniswap necesita transferir tókenes ERC-20 arbitrarios, lo que significa llamar a contratos ERC-20 que pueden intentar abusar del mercado de Uniswap que los llama.
+Al tener una variable `unlocked` como parte del contrato, podemos evitar que se llamen funciones mientras se están ejecutando (dentro de la misma transacción).
```solidity
modifier lock() {
```
-Esta función es un [ modificador](https://docs.soliditylang.org/en/v0.8.3/contracts.html#function-modifiers), una función que se envuelve alrededor de otra función para cambiar de alguna manera su comportamiento.
+Esta función es un [modificador](https://docs.soliditylang.org/en/v0.8.3/contracts.html#function-modifiers), una función que envuelve a una función normal para cambiar su comportamiento de alguna manera.
```solidity
require(unlocked == 1, 'UniswapV2: LOCKED');
unlocked = 0;
```
-Si `unlocked` es igual a uno, configúrelo a cero. Si ya es cero, revierta la activación y trúnquela.
+Si `unlocked` es igual a uno, se establece en cero. Si ya es cero, se revierte la llamada y se produce un fallo.
```solidity
_;
```
-En un modificador `_;` es la función de activación original (con todos los parámetros). Esto significa que la activación de la función solo ocurre si la variable `unlocked` tenía asignado 1 cuando se activó, y mientras se ejecuta, el valor de `unlocked` es 0.
+En un modificador, `_;` es la llamada a la función original (con todos los parámetros). Aquí significa que la llamada a la función solo ocurre si `unlocked` era uno cuando se llamó, y mientras se ejecuta, el valor de `unlocked` es cero.
```solidity
unlocked = 1;
}
```
-Después de que la función principal retorne, libere el bloqueo.
+Después de que la función principal devuelva un valor, se libera el bloqueo.
-#### Funciones variadas {#pair-misc}
+#### Miscelánea funciones {#pair-misc}
```solidity
function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {
@@ -256,37 +259,37 @@ Después de que la función principal retorne, libere el bloqueo.
}
```
-Esta función proporciona a los solicitantes el estado actual del intercambio. Nótese que las funciones de Solidity [pueden proporcionar valores múltiples](https://docs.soliditylang.org/en/v0.8.3/contracts.html#returning-multiple-values).
+Esta función proporciona a los emisores el estado actual del intercambio. Tenga en cuenta que las funciones de Solidity [pueden devolver múltiples valores](https://docs.soliditylang.org/en/v0.8.3/contracts.html#returning-multiple-values).
```solidity
function _safeTransfer(address token, address to, uint value) private {
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));
```
-Esta función interna transfiere una cantidad de tókenes ERC-20 desde el intercambio a alguien más. `SELECTOR` especifica que la función que estamos activando es `transfer(address,uint)` (véase la definición arriba).
+Esta función interna transfiere una cantidad de tókenes ERC-20 del intercambio a otra persona. `SELECTOR` especifica que la función que estamos llamando es `transfer(address,uint)` (consulte la definición anterior).
-Para evitar el tener que importar una interfaz para la función del token, creamos «manualmente» la activación usando una de las [ funciones de ABI](https://docs.soliditylang.org/en/v0.8.3/units-and-global-variables.html#abi-encoding-and-decoding-functions).
+Para evitar tener que importar una interfaz para la función del token, creamos «manualmente» la llamada usando una de las [funciones de ABI](https://docs.soliditylang.org/en/v0.8.3/units-and-global-variables.html#abi-encoding-and-decoding-functions).
```solidity
require(success && (data.length == 0 || abi.decode(data, (bool))), 'UniswapV2: TRANSFER_FAILED');
}
```
-Hay dos maneras en las que una tranferencia ERC-20 puede informar de un fallo:
+Hay dos formas en que una llamada de transferencia de ERC-20 puede informar de un fallo:
-1. Revertir. Si la activación de un contrato externo se revierte, el valor de retorno booleano es `false`.
-2. Termina de forma normal, pero informa de un fracaso. En ese caso, el buffer de valor devuelto tiene una longitud diferente de cero, y cuando se decodifica como un valor booleano es `false`.
+1. Revertir. Si una llamada a un contrato externo se revierte, el valor de retorno booleano es `false`
+2. Terminar normalmente pero informar de un fallo. En ese caso, el búfer de valor de retorno tiene una longitud distinta de cero y, cuando se decodifica como un valor booleano, es `false`
-Si ocurre alguna de estas condiciones, reviértala.
+Si se da alguna de estas condiciones, revertir.
-#### Events {#pair-events}
+#### Eventos {#pair-events}
```solidity
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
```
-Estos dos eventos se emiten cuando un proveedor de liquidez deposita liquidez (`Mint`) o retira la liquidez (`Quemar`). En cualquier caso, los montos de Token0 y Token1 que se depositan o retiran son parte del evento, así como la identidad de la cuenta que los activó (`sender`). En caso de retirada, el evento además incluye al objetivo que recibió los tókenes (`to`) que puede no ser el mismo que el emisor.
+Estos dos eventos se emiten cuando un proveedor de liquidez deposita liquidez (`Mint`) o la retira (`Burn`). En cualquier caso, las cantidades de token0 y token1 que se depositan o retiran forman parte del evento, así como la identidad de la cuenta que nos llamó (`sender`). En el caso de una retirada, el evento también incluye el objetivo que recibió los tókenes (`to`), que puede no ser el mismo que el emisor.
```solidity
event Swap(
@@ -299,17 +302,18 @@ Estos dos eventos se emiten cuando un proveedor de liquidez deposita liquidez (`
);
```
-El evento se emite cuando un agente intercambia un token por otro. Nuevamente, el emisor y el destinatario pueden no coincidir. Cada token puede ser enviado al Exchange o recibido desde allí.
+Este evento se emite cuando un trader intercambia un token por otro. Una vez más, el emisor y el destino pueden no ser los mismos.
+Cada token puede enviarse al intercambio o recibirse de él.
```solidity
event Sync(uint112 reserve0, uint112 reserve1);
```
-Finalmente, `Sync` se emite cada vez que se añaden o retiran tókenes, sin importar la razón, para proveer la información de reserva más actualizada (y por lo tanto el tipo de cambio).
+Finalmente, `Sync` se emite cada vez que se agregan o retiran tókenes, independientemente del motivo, para proporcionar la información de reserva más reciente (y, por lo tanto, el tipo de cambio).
#### Funciones de configuración {#pair-setup}
-Se supone que estas funciones se llaman una vez cuando se establece el nuevo par de intercambio.
+Se supone que estas funciones se deben llamar una vez cuando se configura el nuevo intercambio de pares.
```solidity
constructor() public {
@@ -317,7 +321,7 @@ Se supone que estas funciones se llaman una vez cuando se establece el nuevo par
}
```
-El constructor se asegura de que mantengamos el seguimiento de la dirección de la fábrica que creó el par. `initialize` y la tasa de fábrica (si existe) requieren esta información.
+El constructor se asegura de que hagamos un seguimiento de la dirección de la fábrica que creó el par. Esta información es necesaria para `initialize` y para la comisión de la fábrica (si existe)
```solidity
// called once by the factory at time of deployment
@@ -328,9 +332,9 @@ El constructor se asegura de que mantengamos el seguimiento de la dirección de
}
```
-Esta función le permite a la fábrica (y sólo a la fábrica) especificar los dos tókenes ERC-20 que este par intercambiará.
+Esta función permite a la fábrica (y solo a la fábrica) especificar los dos tókenes ERC-20 que este par intercambiará.
-#### Funciones de actualización interna {#pair-update-internal}
+#### Funciones de actualización internas {#pair-update-internal}
##### \_update
@@ -339,13 +343,13 @@ Esta función le permite a la fábrica (y sólo a la fábrica) especificar los d
function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private {
```
-Se realiza esta función cada vez que se depositan o retiran tókenes.
+Esta función se llama cada vez que se depositan o retiran tókenes.
```solidity
require(balance0 <= uint112(-1) && balance1 <= uint112(-1), 'UniswapV2: OVERFLOW');
```
-Si el balance0 o el balance1 (uint256) es mayor que uint112(-1) (=2^112-1) (por lo que overflows & se vuelve a 0 cuando se convierte en uint112) se niegan a continuar el \_update para prevenir excedentes. Con un token normal que puede subdividirse en 10^18 unidades, esto significa que cada intercambio está limitado a alrededor de 5,1\*10^15 de cada token. Hasta ahora no ha presentado ningún problema.
+Si balance0 o balance1 (uint256) es mayor que uint112(-1) (=2^112-1) (por lo que se desborda y vuelve a 0 cuando se convierte a uint112), se niega a continuar la \_actualización para evitar desbordamientos. Con un token normal que se puede subdividir en 10^18 unidades, esto significa que cada intercambio está limitado a unos 5.1\*10^15 de cada token. Hasta ahora eso no ha sido un problema.
```solidity
uint32 blockTimestamp = uint32(block.timestamp % 2**32);
@@ -353,7 +357,7 @@ Si el balance0 o el balance1 (uint256) es mayor que uint112(-1) (=2^112-1) (por
if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
```
-Si el tiempo transcurrido no es cero, significa que somos la primera transacción de cambio en este bloque. En ese caso, tenemos que actualizar los acumuladores de costes.
+Si el tiempo transcurrido no es cero, significa que somos la primera transacción de intercambio en este bloque. En ese caso, tenemos que actualizar los acumuladores de costes.
```solidity
// * never overflows, and + overflow is desired
@@ -362,20 +366,20 @@ Si el tiempo transcurrido no es cero, significa que somos la primera transacció
}
```
-Cada acumulador de coste se actualiza con el último costo (reserva del otro token/reserva de este token) por el tiempo transcurrido en segundos. Para obtener el precio medio, se lee el precio acumulado en dos puntos en el tiempo y se divide entre la diferencia de tiempo entre ellos. Por ejemplo, asumir esta secuencia de eventos:
+Cada acumulador de coste se actualiza con el último coste (reserva del otro token/reserva de este token) multiplicado por el tiempo transcurrido en segundos. Para obtener un precio promedio, se lee el precio acumulado en dos puntos en el tiempo y se divide por la diferencia de tiempo entre ellos. Por ejemplo, asuma esta secuencia de eventos:
-| Evento | reserve0 | reserve1 | marca de tiempo | Tipo de cambio marginal (reserve1 / reserve0) | price0CumulativeLast |
-| -------------------------------------------------------------- | ---------:| ---------:| --------------- | ---------------------------------------------:| ----------------------------:|
-| Configuración inicial | 1.000,000 | 1.000,000 | 5.000 | 1,000 | 0 |
-| Agente A deposita 50 token0 y obtiene de vuelta 47,619 token 1 | 1.050,000 | 952.381 | 5.020 | 0,907 | 20 |
-| Agente B deposita 10 token0 y obtiene de vuelta 8,984 token1 | 1.060,000 | 943,396 | 5.030 | 0,890 | 20+10\*0,907 = 29,07 |
-| Agente C deposita 40 token0 y obyiene de vuelta 34,305 token1 | 1.100,000 | 909,090 | 5.100 | 0,826 | 29,07+70\*0,890 = 91,37 |
-| Agente D deposita 100 token1 y obtiene de vuelta 109,01 token0 | 990,990 | 1.009,090 | 5.110 | 1,018 | 91,37+10\*0,826 = 99,63 |
-| Agente E deposita 10 token0 y obtiene de vuelta 10,079 token1 | 1.000,990 | 999.010 | 5.150 | 0,998 | 99,63+40\*1,1018 = 143,702 |
+| Evento | reserva0 | reserva1 | marca de tiempo | Tipo de cambio marginal (reserva1 / reserva0) | price0CumulativeLast |
+| ---------------------------------------------------------------- | -------: | -------: | --------------- | ---------------------------------------------------------------: | -------------------------: |
+| Configuración inicial | 1000,000 | 1000,000 | 5000 | 1,000 | 0 |
+| El trader A deposita 50 token0 y recibe 47,619 token1 de vuelta | 1050,000 | 952,381 | 5020 | 0,907 | 20 |
+| El trader B deposita 10 token0 y recibe 8,984 token1 de vuelta | 1060,000 | 943,396 | 5030 | 0,890 | 20+10\*0,907 = 29,07 |
+| El trader C deposita 40 token0 y recibe 34,305 token1 de vuelta | 1100,000 | 909,090 | 5100 | 0,826 | 29,07+70\*0,890 = 91,37 |
+| El trader D deposita 100 token1 y recibe 109,01 token0 de vuelta | 990,990 | 1009,090 | 5110 | 1,018 | 91,37+10\*0,826 = 99,63 |
+| El trader E deposita 10 token0 y recibe 10,079 token1 de vuelta | 1000,990 | 999,010 | 5150 | 0,998 | 99,63+40\*1,1018 = 143,702 |
-Pongamos que queremos calcular el precio medio de **Token0** entre entre la marca de tiempo 5.030 y 5.150. La diferencia en el valor de `price0Cumulative` es 143,702-29,07=114,632. Este es el promedio a o largo de dos minutos (120 segundos). Por lo tanto, el precio medio es de 114,632/120 = 0,955.
+Supongamos que queremos calcular el precio promedio de **Token0** entre las marcas de tiempo 5030 y 5150. La diferencia en el valor de `price0Cumulative` es 143,702-29,07=114,632. Este es el promedio a lo largo de dos minutos (120 segundos). Así que el precio promedio es 114,632/120 = 0,955.
-Este cálculo de precios es la razón por la que necesitamos conocer los antiguos tamaños de reserva.
+Este cálculo de precios es la razón por la que necesitamos conocer los tamaños de reserva antiguos.
```solidity
reserve0 = uint112(balance0);
@@ -394,22 +398,23 @@ Finalmente, actualice las variables globales y emita un evento `Sync`.
function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
```
-En Uniswap 2.0 los agentes pagan una comisión del 0,30 % por usar el mercado. La mayoría de esas comisiones (el 0,25 % de la operación) siempre va a los proveedores de liquidez. El 0,05 % restante puede ir a los proveedores de liquidez o a una dirección especificada por la fábrica como una comisión del protocolo, el cual le paga a Uniswap por el esfuerzo de desarrollo.
+En Uniswap 2.0 los traders pagan una comisión del 0,30 % por usar el mercado. La mayor parte de esa comisión (0,25 % de la operación) siempre va a los proveedores de liquidez. El 0,05 % restante puede ir a los proveedores de liquidez o a una dirección especificada por la fábrica como una comisión del protocolo, que paga a Uniswap por su esfuerzo de desarrollo.
-Para reducir estos cálculos (y por lo tanto los costes de gas), esta comisión sólo se calcula cuando se añade o elimina la liquidez de la reserva, en lugar de hacerlo en cada transacción.
+Para reducir los cálculos (y, por lo tanto, los costes de gas), esta comisión solo se calcula cuando se añade o elimina liquidez de la reserva, en lugar de en cada transacción.
```solidity
address feeTo = IUniswapV2Factory(factory).feeTo();
feeOn = feeTo != address(0);
```
-Lea el destino de las comisiones de la fábrica. Si es cero, entonces no hay ninguna comisión de protocolo y no hay necesidad de calcularla.
+Leer el destino de la comisión de la fábrica. Si es cero, entonces no hay ninguna comisión de protocolo y no hay necesidad de calcularla.
```solidity
uint _kLast = kLast; // gas savings
```
-La variable del estado `kLast` se encuentra en el almacenamiento, por lo que tendrá un valor entre diferentes activaciones al contrato. El acceso al almacenamiento es mucho más caro que el acceso a la memoria volátil que se libera cuando finaliza la activación de función al contrato, por lo que utilizamos una variable interna para ahorrar gas.
+La variable de estado `kLast` se encuentra en el almacenamiento, por lo que tendrá un valor entre diferentes llamadas al contrato.
+El acceso al almacenamiento es mucho más caro que el acceso a la memoria volátil que se libera cuando finaliza la llamada de función al contrato, por lo que utilizamos una variable interna para ahorrar en gas.
```solidity
if (feeOn) {
@@ -424,7 +429,7 @@ Los proveedores de liquidez obtienen su parte simplemente por la apreciación de
if (rootK > rootKLast) {
```
-Si hay nueva liquidez sobre la que cobrar una tasa de protocolo. Puede ver la función raíz cuadrada [más adelante en este articulo](#Math).
+Si hay nueva liquidez sobre la que cobrar una comisión de protocolo. Puede ver la función de raíz cuadrada [más adelante en este artículo](#Math)
```solidity
uint numerator = totalSupply.mul(rootK.sub(rootKLast));
@@ -432,7 +437,7 @@ Si hay nueva liquidez sobre la que cobrar una tasa de protocolo. Puede ver la fu
uint liquidity = numerator / denominator;
```
-Este cálculo complicado de las comisiones se explica en [el informe](https://uniswap.org/whitepaper.pdf) en la página 5. Sabemos que entre el tiempo en que se calculó `kLast` y el presente no ha añadido ni eliminado ninguna liquidez (porque ejecutamos este cálculo cada vez que se añade o elimina liquidez, antes de que cambie realmente), por eso cualquier cambio en `reserve0 * reserve1` tiene que provenir de las comisiones de transacción (sin ellas mantendremos `reserve0 * reserve1` constante).
+Este complicado cálculo de comisiones se explica en [el libro blanco](https://app.uniswap.org/whitepaper.pdf) en la página 5. Sabemos que entre el momento en que se calculó `kLast` y el presente no se añadió ni eliminó liquidez (porque ejecutamos este cálculo cada vez que se añade o elimina liquidez, antes de que cambie realmente), por lo que cualquier cambio en `reserve0 * reserve1` tiene que provenir de las comisiones de transacción (sin ellas mantendríamos `reserve0 * reserve1` constante).
```solidity
if (liquidity > 0) _mint(feeTo, liquidity);
@@ -440,7 +445,7 @@ Este cálculo complicado de las comisiones se explica en [el informe](https://un
}
```
-Use la función `UniswapV2ERC20._mint` para crear los tókenes de liquidez adicionales y dárselos a la dirección `feeTo`.
+Utilice la función `UniswapV2ERC20._mint` para crear los tókenes de liquidez adicionales y asignarlos a `feeTo`.
```solidity
} else if (_kLast != 0) {
@@ -449,26 +454,27 @@ Use la función `UniswapV2ERC20._mint` para crear los tókenes de liquidez adici
}
```
-Si no hay tasa establecida `kLast` a cero (en caso de ser otro valor). Cuando se escribió este contrato, había una función de [reembolso de gas](https://eips.ethereum.org/EIPS/eip-3298) que animaba a los contratos a reducir el tamaño total del estado de Ethereum al eliminar el almacenamiento que no necesitaban. Este código recibe ese reembolso cuando sea posible.
+Si no hay ninguna comisión, establezca `kLast` en cero (si no lo está ya). Cuando se escribió este contrato, había una [función de reembolso de gas](https://eips.ethereum.org/EIPS/eip-3298) que animaba a los contratos a reducir el tamaño total del estado de Ethereum poniendo a cero el almacenamiento que no necesitaban.
+Este código obtiene ese reembolso cuando es posible.
#### Funciones accesibles externamente {#pair-external}
-Tenga en cuenta que mientras que cualquier transacción o contrato _puede_ activar estas funciones, están diseñadas para activarse desde el contrato de la periferia. Si las activa directamente, no podrá hacer trampas al intercambio de pares, pero podrá perder valor por un error.
+Tenga en cuenta que, si bien cualquier transacción o contrato _puede_ llamar a estas funciones, están diseñadas para ser llamadas desde el contrato periférico. Si las llama directamente, no podrá engañar al intercambio de pares, pero podría perder valor por un error.
-##### mint (acuñar)
+##### acuñar
```solidity
// this low-level function should be called from a contract which performs important safety checks
function mint(address to) external lock returns (uint liquidity) {
```
-Esta función se activa cuando un proveedor de liquidez añade liquidez a la reserva. Se acuñan tókenes de liquidez adicionales como recompensa. Debe activarse desde un [contrato de periferia](#UniswapV2Router02) que lo activa después de añadir la liquidez en la misma transacción (para que nadie más pueda presentar una transacción que reclame la nueva liquidez antes que el dueño legítimo).
+Esta función se llama cuando un proveedor de liquidez añade liquidez a la reserva. Se acuñan tókenes de liquidez adicionales como recompensa. Debe llamarse desde [un contrato periférico](#UniswapV2Router02) que lo llama después de añadir la liquidez en la misma transacción (para que nadie más pueda presentar una transacción que reclame la nueva liquidez antes que el propietario legítimo).
```solidity
(uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
```
-Esta es la manera de leer los resultados de una función de Solidity que devuelve múltiples valores. Descartamos los últimos valores devueltos, la marca de tiempo del bloque, porque no los necesitamos.
+Esta es la forma de leer los resultados de una función de Solidity que devuelve múltiples valores. Descartamos los últimos valores devueltos, la marca de tiempo del bloque, porque no la necesitamos.
```solidity
uint balance0 = IERC20(token0).balanceOf(address(this));
@@ -483,7 +489,7 @@ Obtenga los saldos actuales y vea cuánto se añadió de cada tipo de token.
bool feeOn = _mintFee(_reserve0, _reserve1);
```
-Calcule las comisiones del protocolo por cobrar, si las hay, y acuñe los tókenes de liquidez respectivos. Debido a que los parámetros de `_mintFee` son los valores de reserva antiguos, la tasa se calcula con precisión basándose solo en los cambios de la reserva debido a las tasas.
+Calcular las comisiones del protocolo a cobrar, si las hay, y acuñar los tókenes de liquidez correspondientes. Como los parámetros de `_mintFee` son los valores antiguos de la reserva, la comisión se calcula con precisión basándose únicamente en los cambios de la reserva debidos a las comisiones.
```solidity
uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
@@ -492,35 +498,36 @@ Calcule las comisiones del protocolo por cobrar, si las hay, y acuñe los tóken
_mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens
```
-Si este es el primer depósito, cree tókenes de `MINIMUM_LIQUIDITY` y envíelos a la dirección cero para bloquearlos. Estos nunca se pueden canjear, lo que significa que la reserva nunca se vaciará completamente (esto nos salva de la división de cero en algunos lugares). El valor de `MINIMUM_LIQUIDITY` es un millar, que considerando que la mayoría de ERC-20 están subdivididos en unidades de 10^-18'th de un token, como ETH se divide en wei, es 10^-15 al valor de un solo token. No es un coste elevado.
+Si este es el primer depósito, cree tókenes de MINIMUM_LIQUIDITY y envíelos a la dirección cero para bloquearlos. Estos nunca se pueden canjear, lo que significa que la reserva nunca se vaciará completamente (esto nos salva de la división por cero en algunos lugares). El valor de `MINIMUM_LIQUIDITY` es mil, que considerando que la mayoría de los ERC-20 se subdividen en unidades de 10^-18 de un token, como el ETH se divide en wei, es 10^-15 del valor de un solo token. No es un coste elevado.
En el momento del primer depósito no conocemos el valor relativo de los dos tókenes, así que simplemente multiplicamos las cantidades y tomamos una raíz cuadrada, suponiendo que el depósito nos proporciona el mismo valor en ambos tókenes.
-Podemos confiar en esto, porque es de interés para el depositante proporcionar el mismo valor, para evitar perder valor debido a arbitrajes. Pongamos que el valor de nuestros dos tókenes es idéntico, pero nuestro depositante ha depositado 4 veces más del **Token1** que del **Token0**. Un agente puede usar el hecho de que el intercambio de pares piensa que el **Token0** es más valioso para extraer valor de él.
+Podemos confiar en esto porque al depositante le interesa proporcionar el mismo valor, para evitar perder valor por el arbitraje.
+Digamos que el valor de los dos tókenes es idéntico, pero nuestro depositante depositó cuatro veces más **Token1** que **Token0**. Un trader puede utilizar el hecho de que el intercambio de pares piense que el **Token0** es más valioso para extraer valor de él.
-| Evento | reserve0 | reserve1 | reserve0 \* reserve1 | Valor de la reserva (reserve0 + reserve1) |
-| -------------------------------------------------------------- | --------:| --------:| ----------------------:| -----------------------------------------:|
-| Configuración inicial | 8 | 32 | 256 | 40 |
-| El agente depósita 8 tókenes **Token0**, obtiene 16 **Token1** | 16 | 16 | 256 | 32 |
+| Evento | reserva0 | reserva1 | reserva0 \* reserva1 | Valor de la reserva (reserva0 + reserva1) |
+| -------------------------------------------------------------- | -------: | -------: | -------------------: | -----------------------------------------------------------: |
+| Configuración inicial | 8 | 32 | 256 | 40 |
+| El trader deposita 8 tókenes **Token0** y recibe 16 **Token1** | 16 | 16 | 256 | 32 |
-Como puede ver, el agente ganó 8 tókenes extra, que provienen de una reducción en el valor de la reserva, lastimando al depositante que los posee.
+Como puede ver, el trader ganó 8 tókenes extra, que provienen de una reducción en el valor de la reserva, perjudicando al depositante que la posee.
```solidity
} else {
liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);
```
-Con cada depósito posterior ya conocemos el tipo de cambio entre ambos activos, y esperamos que los proveedores de liquidez proporcionen el mismo valor en ambos. Si no lo hacen, les damos tókenes de liquidez en función del valor menor que proporcionaron como castigo.
+Con cada depósito posterior ya conocemos el tipo de cambio entre los dos activos, y esperamos que los proveedores de liquidez proporcionen el mismo valor en ambos. Si no lo hacen, les damos tókenes de liquidez en función del valor menor que proporcionaron como castigo.
-Ya sea el depósito inicial o uno posterior, el número de tókenes de liquidez que proporcionamos es igual a la raíz cuadrada del cambio en `reserve0*reserve1` y el valor del token de liquidez no cambia (a menos que obtengamos un depósito que no tenga los mismos valores de ambos tipos, en cuyo caso la «multa» se comparte). Este es otro ejemplo con dos tokens que tienen el mismo valor. con tres buenos depósitos y uno malo (depósito de un solo tipo de token, por lo que no produce ningún token de liquidez).
+Tanto si se trata del depósito inicial como de uno posterior, el número de tókenes de liquidez que proporcionamos es igual a la raíz cuadrada del cambio en `reserve0*reserve1` y el valor del token de liquidez no cambia (a menos que obtengamos un depósito que no tenga valores iguales de ambos tipos, en cuyo caso la «multa» se distribuye). Aquí hay otro ejemplo con dos tókenes que tienen el mismo valor, con tres depósitos buenos y uno malo (depósito de un solo tipo de token, por lo que no produce ningún token de liquidez).
-| Evento | reserve0 | reserve1 | reserve0 \* reserve1 | Valor de la reserva (reserve0 + reserve1) | Tókenes de liquidez acuñados para este depósito | Tókenes de liquidez totales | valor de cada token de liquidez |
-| -------------------------- | --------:| --------:| ----------------------:| -----------------------------------------:| -----------------------------------------------:| ---------------------------:| -------------------------------:|
-| Configuración inicial | 8,000 | 8,000 | 64 | 16,000 | 8 | 8 | 2,000 |
-| Depósito 4 para cada tipo | 12,000 | 12,000 | 144 | 24,000 | 4 | 12 | 2,000 |
-| Depósito 2 para cada tipo | 14,000 | 14,000 | 196 | 28,000 | 2 | 14 | 2,000 |
-| Depósito de valor desigual | 18,000 | 14,000 | 252 | 32,000 | 0 | 14 | ~2,286 |
-| Después del arbitraje | ~15,874 | ~15,874 | 252 | ~31,748 | 0 | 14 | ~2,267 |
+| Evento | reserva0 | reserva1 | reserva0 \* reserva1 | Valor de la reserva (reserva0 + reserva1) | Tókenes de liquidez acuñados para este depósito | Total de tókenes de liquidez | valor de cada token de liquidez |
+| ---------------------------- | ----------------------: | ----------------------: | -------------------: | -----------------------------------------------------------: | ----------------------------------------------: | ---------------------------: | ------------------------------: |
+| Configuración inicial | 8,000 | 8,000 | 64 | 16,000 | 8 | 8 | 2,000 |
+| Deposite cuatro de cada tipo | 12,000 | 12,000 | 144 | 24,000 | 4 | 12 | 2,000 |
+| Deposite dos de cada tipo | 14,000 | 14,000 | 196 | 28,000 | 2 | 14 | 2,000 |
+| Depósito de valor desigual | 18,000 | 14,000 | 252 | 32,000 | 0 | 14 | ~2,286 |
+| Después del arbitraje | ~15,874 | ~15,874 | 252 | ~31,748 | 0 | 14 | ~2,267 |
```solidity
}
@@ -528,7 +535,7 @@ Ya sea el depósito inicial o uno posterior, el número de tókenes de liquidez
_mint(to, liquidity);
```
-Use la función `UniswapV2ERC20._mint` para crear realmente la liquidez adicional de tókenes y dárselos a la cuenta correcta.
+Utilice la función `UniswapV2ERC20._mint` para crear realmente la liquidez adicional de tókenes y dárselos a la cuenta correcta.
```solidity
@@ -540,14 +547,15 @@ Use la función `UniswapV2ERC20._mint` para crear realmente la liquidez adiciona
Actualice las variables de estado (`reserve0`, `reserve1`, y si es necesario `kLast`) y emita el evento apropiado.
-##### burn (quemar)
+##### quemar
```solidity
// this low-level function should be called from a contract which performs important safety checks
function burn(address to) external lock returns (uint amount0, uint amount1) {
```
-Esta función se activa cuando se retira liquidez y es preciso «quemar» los tókenes de liquidez apropiados. También debería activarse [desde una cuenta de la periferia](#UniswapV2Router02).
+Esta función se llama cuando se retira liquidez y es preciso quemar los tókenes de liquidez apropiados.
+También debería llamarse [desde una cuenta periférica](#UniswapV2Router02).
```solidity
(uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
@@ -558,7 +566,7 @@ Esta función se activa cuando se retira liquidez y es preciso «quemar» los t
uint liquidity = balanceOf[address(this)];
```
-El contrato de la periferia transfirió la liquidez por quemar a este contrato antes de activarla. De esa manera sabemos cuánta liquidez quemar, y podemos asegurarnos de que se quema.
+El contrato periférico transfirió la liquidez a quemar a este contrato antes de la llamada. De esa manera sabemos cuánta liquidez quemar y podemos asegurarnos de que se quema.
```solidity
bool feeOn = _mintFee(_reserve0, _reserve1);
@@ -584,16 +592,16 @@ El proveedor de liquidez recibe un valor igual de ambos tókenes. De esta manera
```
-El resto de las funciones `burn` es una imagen espejo de la función `mint` citada anteriormente.
+El resto de la función `burn` es una imagen especular de la función `mint` anterior.
-##### swap (intercambio)
+##### intercambiar
```solidity
// this low-level function should be called from a contract which performs important safety checks
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external lock {
```
-Esta función también se supone que debe activarse desde [un contrato de periferia](#UniswapV2Router02).
+Se supone que esta función también se llama desde [un contrato periférico](#UniswapV2Router02).
```solidity
require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT');
@@ -605,7 +613,8 @@ Esta función también se supone que debe activarse desde [un contrato de perife
{ // scope for _token{0,1}, avoids stack too deep errors
```
-Las variables locales pueden almacenarse en la memoria o, si no hay demasiadas, directamente en la pila. Si podemos limitar el número, así usaremos la pila que gaste menos gas. Si desea conocer más detalles, consulte [el protocolo, las especificaciones formales de Ethereum](https://ethereum.github.io/yellowpaper/paper.pdf), pág. 26, ecuación 298.
+Las variables locales se pueden almacenar en la memoria o, si no hay demasiadas, directamente en la pila.
+Si podemos limitar el número para usar la pila, usaremos menos gas. Para más detalles, consulte [el libro amarillo, las especificaciones formales de Ethereum](https://ethereum.github.io/yellowpaper/paper.pdf), p. 26, ecuación 298.
```solidity
address _token0 = token0;
@@ -615,13 +624,13 @@ Las variables locales pueden almacenarse en la memoria o, si no hay demasiadas,
if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens
```
-Esta tranferencia es optimista, ya que transferimos una vez que estamos seguros de que se cumplen todas las condiciones. Esto puede hacerse en Ethereum, porque si las condiciones no se cumplen más tarde en la activación, revertimos cualquier cambio que haya creado.
+Esta transferencia es optimista, porque transferimos antes de estar seguros de que se cumplen todas las condiciones. Esto está bien en Ethereum porque si las condiciones no se cumplen más tarde en la llamada, la revertimos junto con cualquier cambio que haya creado.
```solidity
if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data);
```
-Informe al receptor sobre el intercambio, si así lo solicita.
+Informar al receptor sobre el intercambio si se solicita.
```solidity
balance0 = IERC20(_token0).balanceOf(address(this));
@@ -629,7 +638,7 @@ Informe al receptor sobre el intercambio, si así lo solicita.
}
```
-Obtén los saldos actuales. El contrato de la periferia nos envía los tókenes antes de llamarnos para el intercambio. Esto facilita que el contrato compruebe que no está siendo engañado, una comprobación de que _tiene_ que pasar en el contrato central (porque se nos puede activar mediante otras entidades que no sean nuestro contrato de periferia).
+Obtenga los saldos actuales. El contrato periférico nos envía los tókenes antes de llamarnos para el intercambio. Esto facilita que el contrato compruebe que no está siendo engañado, una comprobación que _tiene_ que ocurrir en el contrato principal (porque podemos ser llamados por otras entidades además de nuestro contrato periférico).
```solidity
uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;
@@ -641,7 +650,7 @@ Obtén los saldos actuales. El contrato de la periferia nos envía los tókenes
require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K');
```
-Esta es una comprobación para asegurarnos de que no perdemos en el intercambio. No hay ningún impedimento en el que un intercambio deba reducir `reserve0*reserve1`. Aquí es donde también garantizamos que se esté enviando una tarifa del 0,3 % en el intercambio; antes de que la comprobación verifique el valor de K, multiplicamos ambos saldos por 1.000 y le restamos las cantidades multiplicadas por 3, esto nos da que el 0,3 % (3/1.000 = 0,003 = 0,3 %) se está deduciendo del saldo antes de comparar su valor K con el valor actual de reservas K.
+Esta es una comprobación para asegurarnos de que no perdemos en el intercambio. No hay ninguna circunstancia en la que un intercambio deba reducir `reserve0*reserve1`. Aquí es también donde nos aseguramos de que se envíe una comisión del 0,3 % en el intercambio; antes de comprobar el valor de K, multiplicamos ambos saldos por 1000 y le restamos las cantidades multiplicadas por 3, lo que significa que se deduce un 0,3 % (3/1000 = 0,003 = 0,3 %) del saldo antes de comparar su valor K con el valor K de las reservas actuales.
```solidity
}
@@ -651,16 +660,17 @@ Esta es una comprobación para asegurarnos de que no perdemos en el intercambio.
}
```
-Actualice `reserve0` y `reserve1`y, si es necesario, los acumuladores de precio y la marca de tiempo y emita un evento.
+Actualice `reserve0` y `reserve1`, y si es necesario los acumuladores de precio y la marca de tiempo, y emita un evento.
-##### Sync o Skim
+##### Sincronizar o desnatar
-Es posible que los saldos reales no estén sincronizados con las reservas que el par de intercambio cree tener. No hay forma de retirar tókenes sin el consentimiento del contrato, pero los depósitos son un asunto diferente. Una cuenta puede transferir tókenes al intercambio sin activar a `mint` o `swap`.
+Es posible que los saldos reales se desincronicen con las reservas que el intercambio de pares cree que tiene.
+No hay forma de retirar tókenes sin el consentimiento del contrato, pero los depósitos son un asunto diferente. Una cuenta puede transferir tókenes al intercambio sin llamar a `mint` o `swap`.
En ese caso hay dos soluciones:
-- `sync`, actualice las reservas de los saldos actuales.
-- `skim`, retier la cantidad extra. Tenga en cuenta que cualquier cuenta puede ejecutar `skim` porque no sabemos quién depositó los tókenes. Esta información se emite en un evento, no obstante a los eventos no se puede acceder desde la cadena de bloques.
+- `sync`, actualizar las reservas a los saldos actuales
+- `skim`, retirar la cantidad extra. Tenga en cuenta que cualquier cuenta puede llamar a `skim` porque no sabemos quién depositó los tókenes. Esta información se emite en un evento, pero los eventos no son accesibles desde la cadena de bloques.
```solidity
// force balances to match reserves
@@ -682,7 +692,7 @@ En ese caso hay dos soluciones:
### UniswapV2Factory.sol {#UniswapV2Factory}
-[Este contrato](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Factory.sol) implementa pares de intercambio.
+[Este contrato](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Factory.sol) crea los intercambios de pares.
```solidity
pragma solidity =0.5.16;
@@ -695,7 +705,8 @@ contract UniswapV2Factory is IUniswapV2Factory {
address public feeToSetter;
```
-Estas variables de estado son necesarias para implementar las comisiones del protocolo (ver [el papel blanco](https://uniswap.org/whitepaper.pdf), p. 5). La dirección `feeTo` acumula los tókenes de liquidez por la tarifa del protocolo, y `feeToSetter` es la dirección permitida para cambiar `feeTo` a una dirección diferente.
+Estas variables de estado son necesarias para implementar la comisión del protocolo (consulte [el libro blanco](https://app.uniswap.org/whitepaper.pdf), p. 5).
+La dirección `feeTo` acumula los tókenes de liquidez para la comisión del protocolo, y `feeToSetter` es la dirección autorizada a cambiar `feeTo` por una dirección diferente.
```solidity
mapping(address => mapping(address => address)) public getPair;
@@ -704,17 +715,18 @@ Estas variables de estado son necesarias para implementar las comisiones del pro
Estas variables registran los pares, los intercambios entre dos tipos de tókenes.
-El primero, `getPair`, es un mapeo que identifica un contrato de intercambio de pares basado en los dos tókenes ERC-20 que intercambia. Los tókenes ERC-20 se identifican por las direcciones de los contratos que los implementan, por lo que las claves y el valor son direcciones en su totalidad. Para obtener la dirección del par de intercambio que le permite pasar de `tokenA` a `tokenB`, utilice `getPair[][]` (o al revés).
+La primera, `getPair`, es una asignación que identifica un contrato de intercambio de pares basado en los dos tókenes ERC-20 que intercambia. Los tókenes ERC-20 se identifican por las direcciones de los contratos que los implementan, por lo que las claves y el valor son todos direcciones. Para obtener la dirección del intercambio de pares que le permite convertir de `tokenA` a `tokenB`, utilice `getPair[][]` (o al revés).
-La segunda variable, `allpairs`, es una matriz que incluye todas las direcciones de los intercambios de pares creados por esta fábrica. En Ethereum no se puede repetir el contenido de un mapeo, ni obtener una lista de todas las claves, por lo que esta variable es la única forma de saber qué intercambios gestiona esta fábrica.
+La segunda variable, `allPairs`, es una matriz que incluye todas las direcciones de los intercambios de pares creados por esta fábrica. En Ethereum no se puede iterar sobre el contenido de una asignación, ni obtener una lista de todas las claves, por lo que esta variable es la única forma de saber qué intercambios gestiona esta fábrica.
-Aviso: la razón por la que no se pueden repetir todas las claves de un mapeo es que el almacenamiento de datos contractuales resulta _costoso_, por lo que cuanto menos utilicemos, mejor; y cuanto menos los cambiemos, mejor. Puede crear [ mapeos que soporten la iteración](https://github.com/ethereum/dapp-bin/blob/master/library/iterable_mapping.sol), pero requieren almacenamiento extra para una lista de claves. En la mayoría de las aplicaciones no es necesario.
+Nota: la razón por la que no se pueden iterar todas las claves de una asignación es que el almacenamiento de datos del contrato es _costoso_, por lo que cuanto menos lo usemos, mejor, y cuanto menos lo cambiemos
+, mejor. Puede crear [asignaciones que admitan la iteración](https://github.com/ethereum/dapp-bin/blob/master/library/iterable_mapping.sol), pero requieren almacenamiento adicional para una lista de claves. En la mayoría de las aplicaciones no se necesita.
```solidity
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
```
-Este evento se emite cuando se crea una nuevo intercambio de pares. Incluye las direcciones de los tókenes, la dirección de intercambio de pares y el número total de intercambios gestionados por la fábrica.
+Este evento se emite cuando se crea un nuevo intercambio de pares. Incluye las direcciones de los tókenes, la dirección del intercambio de pares y el número total de intercambios gestionados por la fábrica.
```solidity
constructor(address _feeToSetter) public {
@@ -722,7 +734,7 @@ Este evento se emite cuando se crea una nuevo intercambio de pares. Incluye las
}
```
-Lo único que hace el constructor es especificar `feeToSetter`. Las fábricas empiezan sin tasa, y sólo `feeSetter` puede cambiar eso.
+Lo único que hace el constructor es especificar el `feeToSetter`. Las fábricas empiezan sin comisión, y solo `feeSetter` puede cambiar eso.
```solidity
function allPairsLength() external view returns (uint) {
@@ -730,33 +742,35 @@ Lo único que hace el constructor es especificar `feeToSetter`. Las fábricas em
}
```
-Esta función muestra el número de pares de intercambio.
+Esta función devuelve el número de pares de intercambio.
```solidity
function createPair(address tokenA, address tokenB) external returns (address pair) {
```
-Esta es la función principal de la fábrica: crear un intercambio de pares entre dos tókenes ERC-20. Ten en cuenta que cualquiera puede ejecutar a esta función. No necesita permiso de Uniswap para crear un nuevo intercambio de pares.
+Esta es la función principal de la fábrica, crear un intercambio de pares entre dos tókenes ERC-20. Tenga en cuenta que cualquiera puede llamar a esta función. No necesita permiso de Uniswap para crear un nuevo intercambio de pares.
```solidity
require(tokenA != tokenB, 'UniswapV2: IDENTICAL_ADDRESSES');
(address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
```
-Queremos que la dirección del nuevo intercambio sea de carácter concluyente, de modo que pueda calcularse de antemano fuera de la cadena (esto puede ser útil para las [transacciones de capa 2](/developers/docs/layer-2-scaling/)). Para ello necesitamos seguir un orden consistente de las direcciones de los tókenes, independientemente del orden en que los hayamos recibido, así que los ordenamos aquí.
+Queremos que la dirección del nuevo intercambio sea determinista, para que pueda calcularse por adelantado fuera de la cadena (esto puede ser útil para [las transacciones de capa 2](/developers/docs/scaling/)).
+Para ello necesitamos tener un orden consistente de las direcciones de los tókenes, independientemente del orden en que los hayamos recibido, así que los ordenamos aquí.
```solidity
require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS');
require(getPair[token0][token1] == address(0), 'UniswapV2: PAIR_EXISTS'); // single check is sufficient
```
-Las reservas de liquidez más grandes son mejores que los pequeñas, porque tienen precios más estables. No queremos tener más de una reserva de liquidez por par de tókenes. Si ya existe un intercambio, no es necesario crear otro para el mismo par.
+Los fondos de liquidez grandes son mejores que los pequeños, porque tienen precios más estables. No queremos tener más de un fondo de liquidez por par de tókenes. Si ya existe un intercambio, no es necesario crear otro para el mismo par.
```solidity
bytes memory bytecode = type(UniswapV2Pair).creationCode;
```
-Para crear un nuevo contrato, necesitamos el código que lo crea (tanto la función que lo construye, como el código que escribe a la memoria el código de bytes de la EVM del contrato actual). Por lo general, en Solidity sólo usamos `addr = new ()` y el compilador se encarga de todo, pero para tener una dirección de contrato determinista necesitamos usar [el código de operación CREATE2](https://eips.ethereum.org/EIPS/eip-1014). Cuando se escribió este código, el código de operación Solidity aún no lo soportaba, por lo que era necesario obtener manualmente el código. Esto ya no es un problema, porque [Solidity ahora soporta CREATE2](https://docs.soliditylang.org/en/v0.8.3/control-structures.html#salted-contract-creations-create2).
+Para crear un nuevo contrato, necesitamos el código que lo crea (tanto la función constructora como el código que escribe en la memoria el código de bytes de la EVM del contrato real). Normalmente en Solidity solo usamos `addr = new ()` y el compilador se encarga de todo por nosotros, pero para tener una dirección de contrato determinista necesitamos usar [el código de operación CREATE2](https://eips.ethereum.org/EIPS/eip-1014).
+Cuando se escribió este código, ese código de operación aún no era compatible con Solidity, por lo que era necesario obtener el código manualmente. Esto ya no es un problema, porque [Solidity ahora es compatible con CREATE2](https://docs.soliditylang.org/en/v0.8.3/control-structures.html#salted-contract-creations-create2).
```solidity
bytes32 salt = keccak256(abi.encodePacked(token0, token1));
@@ -765,23 +779,22 @@ Para crear un nuevo contrato, necesitamos el código que lo crea (tanto la funci
}
```
-Cuando Solidity aún no soporta un código de operación, podemos activarlo usando el [montaje en línea](https://docs.soliditylang.org/en/v0.8.3/assembly.html).
+Cuando un código de operación aún no es compatible con Solidity, podemos llamarlo usando [ensamblado en línea](https://docs.soliditylang.org/en/v0.8.3/assembly.html).
```solidity
IUniswapV2Pair(pair).initialize(token0, token1);
```
-Active la función `initialize` para informar al intercambio cuáles son los dos tókenes que este intercambia.
+Llamar a la función `initialize` para indicar al nuevo intercambio qué dos tókenes intercambia.
```solidity
getPair[token0][token1] = pair;
getPair[token1][token0] = pair; // populate mapping in the reverse direction
allPairs.push(pair);
emit PairCreated(token0, token1, pair, allPairs.length);
- }
```
-Guarde el nuevo par de información en las variables de estado y transmita un evento para informar al mundo sobre el nuevo intercambio de pares.
+Guarde la información del nuevo par en las variables de estado y emita un evento para informar al mundo del nuevo intercambio de pares.
```solidity
function setFeeTo(address _feeTo) external {
@@ -796,13 +809,14 @@ Guarde el nuevo par de información en las variables de estado y transmita un ev
}
```
-Estas dos funciones permiten a `feeSetter` controlar la tarifa receptora (si la hay) y cambia `feeSetter` a una nueva dirección.
+Estas dos funciones permiten a `feeSetter` controlar el destinatario de la comisión (si lo hay) y cambiar `feeSetter` a una nueva dirección.
### UniswapV2ERC20.sol {#UniswapV2ERC20}
-[Este contrato](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol) implementa el token de liquidez ERC-20. Este es bastante similar al [contrato ERC-20 de OpenZeppelin](/developers/tutorials/erc20-annotated-code), por lo que solo explicaré la parte que es diferente, la funcionalidad `permit`.
+[Este contrato](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol) implementa el token de liquidez ERC-20. Es similar al [contrato ERC-20 de OpenZeppelin](/developers/tutorials/erc20-annotated-code), por lo que solo explicaré la parte que es diferente, la funcionalidad de `permit`.
-Las transacciones en Ethereum cuestan ether (ETH), que equivale a dinero real. Si tiene tókenes ERC-20 pero no ETH, no puede enviar transacciones, por lo que no puede hacer nada con ellos. Una solución para evitar este problema son las [metatransacciones](https://docs.uniswap.org/contracts/v2/guides/smart-contract-integration/supporting-meta-transactions). El propietario de los tókenes firma una transacción que le permite a alguien retirar tókenes fuera de la cadena y enviarlos por medio de Internet al receptor. El receptor, que tiene ETH, luego envía el permiso en nombre del propietario.
+Las transacciones en Ethereum cuestan ether (ETH), que equivale a dinero real. Si tiene tókenes ERC-20 pero no ETH, no puede enviar transacciones, por lo que no puede hacer nada with ellos. Una solución para evitar este problema son las [metatransacciones](https://docs.uniswap.org/contracts/v2/guides/smart-contract-integration/supporting-meta-transactions).
+El propietario de los tókenes firma una transacción que permite a otra persona retirar tókenes fuera de la cadena y la envía a través de Internet al destinatario. El destinatario, que sí tiene ETH, envía el permiso en nombre del propietario.
```solidity
bytes32 public DOMAIN_SEPARATOR;
@@ -810,13 +824,13 @@ Las transacciones en Ethereum cuestan ether (ETH), que equivale a dinero real. S
bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
```
-Este hash es el [identificador para el tipo de transacción](https://eips.ethereum.org/EIPS/eip-712#rationale-for-typehash). El único que soportamos aquí es `Permit` con estos parámetros.
+Este hash es el [identificador del tipo de transacción](https://eips.ethereum.org/EIPS/eip-712#rationale-for-typehash). El único que admitimos aquí es `Permit` with estos parámetros.
```solidity
mapping(address => uint) public nonces;
```
-No es conveniente para un receptor falsificar una firma digital. Sin embargo, es trivial enviar la misma transacción dos veces (esto es una forma de [ataque de repetición](https://wikipedia.org/wiki/Replay_attack)). Para evitarlo, usamos [nonce](https://wikipedia.org/wiki/Cryptographic_nonce). Si el nonce de un nuevo `Permit` no es mayor que el último usado, se asume que este no es válido.
+No es factible que un destinatario falsifique una firma digital. Sin embargo, es trivial enviar la misma transacción dos veces (esto es una forma de [ataque de repetición](https://wikipedia.org/wiki/Replay_attack)). Para evitarlo, utilizamos un [nonce](https://wikipedia.org/wiki/Cryptographic_nonce). Si el nonce de un nuevo `Permit` no es uno más que el último utilizado, asumimos que no es válido.
```solidity
constructor() public {
@@ -826,7 +840,7 @@ No es conveniente para un receptor falsificar una firma digital. Sin embargo, es
}
```
-Este es el código para recuperar el [identificador de cadena](https://chainid.network/). Este usa un dialecto ensamblado por la EVM llamado [Yul](https://docs.soliditylang.org/en/v0.8.4/yul.html). Recuerde que en la versión actual de Yul necesita usar `chainid()`, no `chainid`.
+Este es el código para recuperar el [identificador de cadena](https://chainid.network/). Utiliza un dialecto de ensamblado de EVM llamado [Yul](https://docs.soliditylang.org/en/v0.8.4/yul.html). Tenga en cuenta que en la versión actual de Yul tiene que usar `chainid()`, no `chainid`.
```solidity
DOMAIN_SEPARATOR = keccak256(
@@ -841,19 +855,19 @@ Este es el código para recuperar el [identificador de cadena](https://chainid.n
}
```
-Calcule el [separador de dominio](https://eips.ethereum.org/EIPS/eip-712#rationale-for-domainseparator) para EIP-712.
+Calcular el [separador de dominio](https://eips.ethereum.org/EIPS/eip-712#rationale-for-domainseparator) para EIP-712.
```solidity
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
```
-Esta es la función que implementa los permisos. Esta recibe como parámetros los campos relevantes y los tres valores escalables para [la firma](https://yos.io/2018/11/16/ethereum-signatures/) (v, r y s).
+Esta es la función que implementa los permisos. Recibe como parámetros los campos relevantes y los tres valores escalares para [la firma](https://yos.io/2018/11/16/ethereum-signatures/) (v, r y s).
```solidity
require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');
```
-No acepte transacciones fuera del límite de tiempo.
+No acepte transacciones después de la fecha límite.
```solidity
bytes32 digest = keccak256(
@@ -865,15 +879,15 @@ No acepte transacciones fuera del límite de tiempo.
);
```
-`abi.encodePacked(...)` es el mensaje que esperamos obtener. Sabemos que el nonce debería estar, por lo que es necesario obtenerlo como parámetro.
+`abi.encodePacked(...)` es el mensaje que esperamos recibir. Sabemos cuál debe ser el nonce, por lo que no es necesario que lo obtengamos como parámetro.
-El algoritmo de firma de Ethereum espera obtener 256 bits para firmar y poder usar la función de hash `keccak256`.
+El algoritmo de firma de Ethereum espera obtener 256 bits para firmar, por lo que usamos la función hash `keccak256`.
```solidity
address recoveredAddress = ecrecover(digest, v, r, s);
```
-Desde el resumen y la firma podemos obtener la dirección que la firmó usando [ecrecover](https://coders-errand.com/ecrecover-signature-verification-ethereum/).
+A partir del resumen y la firma podemos obtener la dirección que lo firmó usando [ecrecover](https://coders-errand.com/ecrecover-signature-verification-ethereum/).
```solidity
require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');
@@ -882,19 +896,20 @@ Desde el resumen y la firma podemos obtener la dirección que la firmó usando [
```
-Si todo está bien, trate esto como [una aprobación ERC-20](https://eips.ethereum.org/EIPS/eip-20#approve).
+Si todo está bien, trátelo como [una aprobación de ERC-20](https://eips.ethereum.org/EIPS/eip-20#approve).
## Los contratos periféricos {#periphery-contracts}
-Los contratos periféricos son la API (interfaz del programa de aplicación) para Uniswap. Estos están disponibles para activaciones externas, ya sea desde otros contratos o aplicaciones descentralizadas. Podría activar los contratos principales directamente, pero es más complicado y podría perder valor si comete un error. Los contratos principales solo contienen pruebas para asegurarnos de que no están trucados, no revisiones sanitarias para otras cosas. Estos están en la periferia, por lo que pueden actualizarse según se necesite.
+Los contratos periféricos son la API (interfaz de programación de aplicaciones) de Uniswap. Están disponibles para llamadas externas, ya sea desde otros contratos o aplicaciones descentralizadas. Podría llamar a los contratos principales directamente, pero es más complicado y podría perder valor si comete un error. Los contratos principales solo contienen pruebas para asegurarse de que no están siendo engañados, no comprobaciones de seguridad para nadie más. Estos están en la periferia para que puedan actualizarse según sea necesario.
### UniswapV2Router01.sol {#UniswapV2Router01}
-[Este contrato](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router01.sol) tiene problemas y [no debería utilizarse](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/router-01). Afortunadamente, los contratos periféricos no tienen estado y no almacenan ningún activo, lo que los hace fáciles de desaprobar y sugerir a las personas usar `UniswapV2Router02` en su lugar.
+[Este contrato](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router01.sol) tiene problemas y [ya no debería usarse](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/router-01). Por suerte, los contratos periféricos no tienen estado y no contienen ningún activo, por lo que es fácil dejarlo obsoleto y sugerir que se use el reemplazo, `UniswapV2Router02`, en su lugar.
### UniswapV2Router02.sol {#UniswapV2Router02}
-En la mayoría de los casos, usaría Uniswap a través de [este contrato](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router02.sol). [Aquí](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/router-02) puede ver cómo usarlo.
+En la mayoría de los casos, usaría Uniswap a través de [este contrato](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router02.sol).
+Puede ver cómo usarlo [aquí](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/router-02).
```solidity
pragma solidity =0.6.6;
@@ -909,7 +924,7 @@ import './interfaces/IERC20.sol';
import './interfaces/IWETH.sol';
```
-La mayoría de estos los hemos encontrado antes o son muy obvios. La única excepción es `IWETH.sol`. Uniswap v2 permite el intercambio de cualquier par de tókenes ERC-20, pero ether (ETH) no es un token ERC-20. Este antecede al estándar y se transfiere usando mecanismos únicos. Para habilitar el uso de ETH en contratos aplicables a los tókenes ERC-20, las personas pueden usar el contrato [wrapped ether (WETH)](https://weth.io/). Puede enviar ETH a este contrato y este acuña una cantidad equivalente de WETH. También puede quemar WETH y obtener ETH después de esto.
+La mayoría de estos los hemos encontrado antes o son bastante obvios. La única excepción es `IWETH.sol`. Uniswap v2 permite intercambios para cualquier par de tókenes ERC-20, pero ether (ETH) en sí mismo no es un token ERC-20. Es anterior al estándar y se transfiere mediante mecanismos únicos. Para permitir el uso de ETH en contratos que se aplican a tókenes ERC-20, la gente ideó el contrato [ether envuelto (WETH)](https://weth.tkn.eth.limo/). Usted envía ETH a este contrato y este le acuña una cantidad equivalente de WETH. O puede quemar WETH y recuperar ETH.
```solidity
contract UniswapV2Router02 is IUniswapV2Router02 {
@@ -919,7 +934,7 @@ contract UniswapV2Router02 is IUniswapV2Router02 {
address public immutable override WETH;
```
-El enrutador necesita conocer qué fábrica debe usar y para transacciones que requieren WETH, qué contrato de WETH debe usar. Estos valores son [inmutables](https://docs.soliditylang.org/en/v0.8.3/contracts.html#constant-and-immutable-state-variables), lo que significa que sólo se pueden establecer en el constructor. Esto le proporciona a los usuarios la garantía de que nadie podría cambiarlos para apuntar a contratos poco honestos.
+El enrutador necesita saber qué fábrica usar y, para las transacciones que requieren WETH, qué contrato WETH usar. Estos valores son [inmutables](https://docs.soliditylang.org/en/v0.8.3/contracts.html#constant-and-immutable-state-variables), lo que significa que solo se pueden establecer en el constructor. Esto da a los usuarios la confianza de que nadie podrá cambiarlos para que apunten a contratos menos honestos.
```solidity
modifier ensure(uint deadline) {
@@ -928,7 +943,7 @@ El enrutador necesita conocer qué fábrica debe usar y para transacciones que r
}
```
-Este modificador se asegura de que las transacciones con límite de tiempo («si puede, haga X antes del tiempo X») no sucedan antes de su límite de tiempo.
+Este modificador se asegura de que las transacciones con límite de tiempo («haga X antes de la hora Y si puede») no ocurran después de su límite de tiempo.
```solidity
constructor(address _factory, address _WETH) public {
@@ -945,11 +960,11 @@ El constructor solo establece las variables de estado inmutables.
}
```
-Esta función se activa cuando canjeamos tókenes del contrato WETH en ETH. Sólo el contrato WETH que usamos está autorizado para hacer eso.
+Esta función se llama cuando canjeamos tókenes del contrato WETH de nuevo en ETH. Solo el contrato WETH que usamos está autorizado a hacerlo.
#### Añadir liquidez {#add-liquidity}
-Estas funciones agregan tókenes al intercambio de pares, que incrementa la reserva de liquidez.
+Estas funciones agregan tókenes al intercambio de pares, lo que aumenta el fondo de liquidez.
```solidity
@@ -957,14 +972,14 @@ Estas funciones agregan tókenes al intercambio de pares, que incrementa la rese
function _addLiquidity(
```
-Esta función se usa para calcular la cantidad de tókenes A y B que se debería depositar en el intercambio de pares.
+Esta función se utiliza para calcular la cantidad de tókenes A y B que deben depositarse en el intercambio de pares.
```solidity
address tokenA,
address tokenB,
```
-Estas son las direcciones de los contratos de token ERC-20.
+Estas son las direcciones de los contratos de tókenes ERC-20.
```solidity
uint amountADesired,
@@ -978,28 +993,28 @@ Estas son las cantidades que el proveedor de liquidez quiere depositar. También
uint amountBMin
```
-Estas son las cantidades mínimas aceptadas para depositar. Si la transacción no se puede realizar con estas cantidades o más, debe revertirla. Si no quiere esta característica, especifique únicamente cero.
+Estas son las cantidades mínimas aceptables para depositar. Si la transacción no puede realizarse con estas cantidades o más, reviértala. Si no quiere esta función, simplemente especifique cero.
-Los proveedores de liquidez especifican un mínimo, por lo general, porque ellos quieren limitar la transacción a un tipo de cambio que es cercano al actual. Si el tipo de cambio fluctúa demasiado, podría significar que cambien los valores subyacentes y quieran decidir manualmente qué hacer.
+Los proveedores de liquidez especifican un mínimo, por lo general, porque quieren limitar la transacción a un tipo de cambio cercano al actual. Si el tipo de cambio fluctúa demasiado, podría significar noticias que cambien los valores subyacentes, y querrán decidir manualmente qué hacer.
-Por ejemplo, imagine un caso donde el tipo de cambio es de uno a uno y el proveedor de liquidez especifica estos valores:
+Por ejemplo, imagine un caso en el que el tipo de cambio es de uno a uno y el proveedor de liquidez especifica estos valores:
| Parámetro | Valor |
-| -------------- | -----:|
-| amountADesired | 1.000 |
-| amountBDesired | 1.000 |
+| -------------- | ----: |
+| amountADesired | 1000 |
+| amountBDesired | 1000 |
| amountAMin | 900 |
| amountBMin | 800 |
-Mientras el tipo de cambio se encuentre entre 0,9 y 1,25, la transacción se realiza. Si el tipo de cambio está fuera de ese rango, la transacción se cancela.
+Mientras el tipo de cambio se mantenga entre 0,9 y 1,25, la transacción se realiza. Si el tipo de cambio sale de ese rango, la transacción se cancela.
-El motivo de esta precaución es que las transacciones no son inmediatas, usted las envías y, eventualmente, un validador las incluirá en un bloque (a menos que su precio de gas sea muy bajo, en cuyo caso necesitará enviar otra transacción con el mismo valor y un precio de gas más alto para sobrescribirla). No puedes controlar lo que sucede durante el intervalo entre el envío y la inclusión.
+El motivo de esta precaución es que las transacciones no son inmediatas, usted las envía y, finalmente, un validador las incluirá en un bloque (a menos que su precio de gas sea muy bajo, en cuyo caso necesitará enviar otra transacción con el mismo nonce y un precio de gas más alto para sobrescribirla). No puede controlar lo que sucede durante el intervalo entre el envío y la inclusión.
```solidity
) internal virtual returns (uint amountA, uint amountB) {
```
-La función muestra las cantidades que el proveedor de liquidez debería depositar para tener una proporción igual a la proporción actual entre reservas.
+La función devuelve las cantidades que el proveedor de liquidez debe depositar para tener una relación igual a la relación actual entre las reservas.
```solidity
// create the pair if it doesn't exist yet
@@ -1008,7 +1023,7 @@ La función muestra las cantidades que el proveedor de liquidez debería deposit
}
```
-Si no hay un intercambio para este par de tókenes, créelo.
+Si aún no existe un intercambio para este par de tókenes, créelo.
```solidity
(uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);
@@ -1021,14 +1036,14 @@ Obtenga las reservas actuales en el par.
(amountA, amountB) = (amountADesired, amountBDesired);
```
-Si las reservas actuales están vacías, entonces esto es un nuevo intercambio de pares. Las cantidades por depositar deberían ser exactamente iguales a las que el proveedor de liquidez desea proporcionar.
+Si las reservas actuales están vacías, este es un nuevo intercambio de pares. Las cantidades a depositar deben ser exactamente las mismas que las que el proveedor de liquidez desea proporcionar.
```solidity
} else {
uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);
```
-Si necesitamos ver de cuánto serían las cantidades, obtenemos el valor adecuado usando [esta función](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/libraries/UniswapV2Library.sol#L35). Queremos la misma proporción de las reservas actuales.
+Si necesitamos ver qué cantidades habrá, obtenemos la cantidad óptima usando [esta función](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/libraries/UniswapV2Library.sol#L35). Queremos la misma proporción que las reservas actuales.
```solidity
if (amountBOptimal <= amountBDesired) {
@@ -1036,7 +1051,7 @@ Si necesitamos ver de cuánto serían las cantidades, obtenemos el valor adecuad
(amountA, amountB) = (amountADesired, amountBOptimal);
```
-Si `amountBOptimal` es menor que la cantidad que el proveedor de liquidez quiere depositar, esto significa que el token B es más valioso que lo que el depositante piensa, por lo que se requiere una cantidad menor.
+Si `amountBOptimal` es menor que la cantidad que el proveedor de liquidez quiere depositar, significa que el token B es actualmente más valioso de lo que cree el depositante de liquidez, por lo que se requiere una cantidad menor.
```solidity
} else {
@@ -1046,13 +1061,13 @@ Si `amountBOptimal` es menor que la cantidad que el proveedor de liquidez quiere
(amountA, amountB) = (amountAOptimal, amountBDesired);
```
-Si la cantidad óptima B es mayor que la cantidad B deseada, esto significa que los tókenes B son menos valiosos que lo que el depositante de liquidez piensa, por lo que se requiere una cantidad más alta. Sin embargo, la cantidad deseada es un máximo, por lo que no podemos hacer eso. En su lugar, calculamos el número óptimo de tókenes A para la cantidad deseada de tókenes B.
+Si la cantidad óptima de B es mayor que la cantidad deseada de B, significa que los tókenes B son actualmente menos valiosos de lo que cree el depositante de liquidez, por lo que se requiere una cantidad mayor. Sin embargo, la cantidad deseada es un máximo, por lo que no podemos hacer eso. En su lugar, calculamos el número óptimo de tókenes A para la cantidad deseada de tókenes B.
-Al unirlo todo, obtenemos este gráfico. Pongamos que está intentando depositar mil tókenes A (línea azul) y mil tókenes B (línea roja). El eje x es el tipo de cambio, A/B. Si x=1, son iguales en valor y deposita mil de cada uno. Si x=2, A es el doble del valor de B (obtienes dos tókenes B por cada token A), por lo que deposita mil tókenes B, pero solo 500 tókenes A. Si x=0.5, la situación se invierte, mil tókenes A y quinientos tókenes B.
+Al juntar todo, obtenemos este gráfico. Supongamos que está intentando depositar mil tókenes A (línea azul) y mil tókenes B (línea roja). El eje x es el tipo de cambio, A/B. Si x=1, tienen el mismo valor y deposita mil de cada uno. Si x=2, A vale el doble que B (se obtienen dos tókenes B por cada token A), por lo que se depositan mil tókenes B, pero solo 500 tókenes A. Si x=0.5, la situación se invierte, mil tókenes A y quinientos tókenes B.
-
+
-Podría depositar liquidez directamente en el contrato principal (usando [UniswapV2Pair::mint](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Pair.sol#L110)), pero el contrato principal solo verifica que no está siendo engañado en sí mismo, por lo que corre el riesgo de perder valor si el tipo de cambio cambia entre el momento en que envía su transacción y el momento en que se ejecuta. Si utiliza el contrato periférico, calcule la cantidad que debe depositar y deposítela inmediatamente, para que el tipo de cambio no cambie y no pierda nada.
+Podría depositar liquidez directamente en el contrato principal (usando [UniswapV2Pair::mint](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Pair.sol#L110)), pero el contrato principal solo comprueba que no está siendo engañado, por lo que corre el riesgo de perder valor si el tipo de cambio cambia entre el momento en que envía su transacción y el momento en que se ejecuta. Si utiliza el contrato periférico, este calcula la cantidad que debe depositar y la deposita inmediatamente, para que el tipo de cambio no cambie y no pierda nada.
```solidity
function addLiquidity(
@@ -1066,9 +1081,10 @@ Podría depositar liquidez directamente en el contrato principal (usando [Uniswa
uint deadline
```
-Esta función puede activarse mediante una transacción para depositar liquidez. La mayoría de los parámetros son los mismos que en `_addLiquidity` anterior, con dos excepciones:
+Esta función puede ser llamada por una transacción para depositar liquidez. La mayoría de los parámetros son los mismos que en `_addLiquidity` anterior, con dos excepciones:
-. `to` es la dirección que obtiene los nuevos tókenes de liquidez acuñados para mostrar la parte de la reserva del proveedor de liquidez . `fecha límite` es un límite de tiempo para la transacción
+. `to` es la dirección que obtiene los nuevos tókenes de liquidez acuñados para mostrar la parte del fondo del proveedor de liquidez
+. `deadline` es un límite de tiempo en la transacción
```solidity
) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
@@ -1076,21 +1092,20 @@ Esta función puede activarse mediante una transacción para depositar liquidez.
address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
```
-Calculamos las cantidades para depositar realmente y luego encontramos la dirección del fondo de liquidez. Para ahorrar gas, no hacemos esto preguntando a la fábrica, sino usando la función de biblioteca `pairFor` (ver más abajo en las bibliotecas)
+Calculamos las cantidades a depositar realmente y luego encontramos la dirección del fondo de liquidez. Para ahorrar gas no lo hacemos preguntando a la fábrica, sino usando la función de librería `pairFor` (ver más abajo en librerías)
```solidity
TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
```
-Transfiera las cantidades correctas de tókenes del usuario al intercambio de pares.
+Transferir las cantidades correctas de tókenes del usuario al intercambio de pares.
```solidity
liquidity = IUniswapV2Pair(pair).mint(to);
- }
```
-A cambio, dé los tókenes de liquidez de la dirección `to` para la propiedad parcial del grupo. La función `mint` del contrato principal ve cuántos tókenes adicionales tiene (en comparación con los que tenía la última vez que cambió la liquidez) y la liquidez de las acuñaciones en consecuencia.
+A cambio, dé a la dirección `to` tókenes de liquidez para la propiedad parcial de la reserva. La función `mint` del contrato principal ve cuántos tókenes adicionales tiene (en comparación con los que tenía la última vez que cambió la liquidez) y acuña liquidez en consecuencia.
```solidity
function addLiquidityETH(
@@ -1098,7 +1113,7 @@ A cambio, dé los tókenes de liquidez de la dirección `to` para la propiedad p
uint amountTokenDesired,
```
-Cuando un proveedor de liquidez quiere proporcionar liquidez a un intercambio de par Token/ETH, hay algunas diferencias. El contrato maneja la envoltura del ETH para el proveedor de liquidez. No hay necesidad de especificar cuántos ETH quiere depositar el usuario, porque el usuario solo los envía con la transacción (la cantidad está disponible en `msg.value`).
+Cuando un proveedor de liquidez quiere proporcionar liquidez a un intercambio de pares Token/ETH, hay algunas diferencias. El contrato gestiona el empaquetado del ETH para el proveedor de liquidez. No es necesario especificar cuántos ETH quiere depositar el usuario, porque este simplemente los envía con la transacción (la cantidad está disponible en `msg.value`).
```solidity
uint amountTokenMin,
@@ -1120,7 +1135,7 @@ Cuando un proveedor de liquidez quiere proporcionar liquidez a un intercambio de
assert(IWETH(WETH).transfer(pair, amountETH));
```
-Para depositar el ETH, el contrato primero lo envuelve en WETH y luego transfiere el WETH al par. Tenga en cuenta que la transferencia está envuelta en una `reinvindicación`. Esto significa que si la transferencia falla, esta activación de contrato también falla y, por lo tanto, la envoltura realmente no ocurre.
+Para depositar el ETH, el contrato primero lo envuelve en WETH y luego transfiere el WETH al par. Tenga en cuenta que la transferencia está envuelta en un `assert`. Esto significa que si la transferencia falla, esta llamada de contrato también falla y, por lo tanto, la envoltura realmente no ocurre.
```solidity
liquidity = IUniswapV2Pair(pair).mint(to);
@@ -1131,9 +1146,9 @@ Para depositar el ETH, el contrato primero lo envuelve en WETH y luego transfier
El usuario ya nos ha enviado el ETH, por lo que si queda algo extra (porque el otro token es menos valioso de lo que el usuario pensaba), tenemos que emitir un reembolso.
-#### Suprimir la liquidez {#remove-liquidity}
+#### Retirar liquidez {#remove-liquidity}
-Estas funciones eliminarán la liquidez y lo devolverán al proveedor de liquidez.
+Estas funciones eliminarán la liquidez y la devolverán al proveedor de liquidez.
```solidity
// **** REMOVE LIQUIDITY ****
@@ -1148,7 +1163,7 @@ Estas funciones eliminarán la liquidez y lo devolverán al proveedor de liquide
) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {
```
-El caso más sencillo de eliminar la liquidez. Hay una cantidad mínima de cada token que el proveedor de liquidez acepta, y debe ocurrir antes de la fecha límite.
+El caso más sencillo de eliminación de liquidez. Hay una cantidad mínima de cada token que el proveedor de liquidez acepta, y debe ocurrir antes de la fecha límite.
```solidity
address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
@@ -1168,7 +1183,7 @@ Cuando una función devuelve varios valores, pero solo estamos interesados en al
(amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
```
-Traduce las cantidades de la forma en que el contrato principal las devuelve (primero el token de dirección inferior) a la forma en que el usuario las espera (correspondiente a `tokenA` y `tokenB`).
+Traducir las cantidades de la forma en que el contrato principal las devuelve (primero el token de dirección inferior) a la forma en que el usuario las espera (correspondiente a `tokenA` y `tokenB`).
```solidity
require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');
@@ -1176,7 +1191,7 @@ Traduce las cantidades de la forma en que el contrato principal las devuelve (pr
}
```
-Se puede hacer la transferencia primero y luego verificar que es legítima, porque si no lo es, revertiremos todos los cambios de estado.
+Se puede hacer la transferencia primero y luego verificar que es legítima, porque si no lo es, se revertirán todos los cambios de estado.
```solidity
function removeLiquidityETH(
@@ -1202,7 +1217,7 @@ Se puede hacer la transferencia primero y luego verificar que es legítima, porq
}
```
-Eliminar la liquidez para ETH es casi la misma, excepto que recibimos los tókenes WETH y luego los canjeamos para que ETH los devuelva al proveedor de liquidez.
+Eliminar liquidez para ETH es casi lo mismo, excepto que recibimos los tókenes WETH y luego los canjeamos por ETH para devolverlos al proveedor de liquidez.
```solidity
function removeLiquidityWithPermit(
@@ -1238,7 +1253,7 @@ Eliminar la liquidez para ETH es casi la misma, excepto que recibimos los tóken
}
```
-Estas funciones retransmiten metatransacciones para permitir que los usuarios sin ether se retiren del grupo, utilizando [el mecanismo de permiso](#UniswapV2ERC20).
+Estas funciones retransmiten metatransacciones para permitir que los usuarios sin ether se retiren de la reserva, utilizando [el mecanismo de permiso](#UniswapV2ERC20).
```solidity
@@ -1267,7 +1282,7 @@ Estas funciones retransmiten metatransacciones para permitir que los usuarios si
```
-Esta función se puede utilizar para tókenes que tienen tarifas de transferencia o almacenamiento. Cuando un token tiene tales tarifas, no podemos confiar en la función `removeLiquidity` para decirnos cuánto del token recibimos, por lo que primero tenemos que retirar y luego obtener el saldo.
+Esta función se puede utilizar para tókenes que tienen comisiones de transferencia o almacenamiento. Cuando un token tiene tales comisiones no podemos confiar en la función `removeLiquidity` para decirnos cuánto del token recibimos, por lo que primero tenemos que retirar y luego obtener el saldo.
```solidity
@@ -1292,35 +1307,35 @@ Esta función se puede utilizar para tókenes que tienen tarifas de transferenci
La función final combina las tarifas de almacenamiento con las metatransacciones.
-#### Comercio {#trade}
+#### Operar {#trade}
```solidity
- // **** SWAP ****
- // requires the initial amount to have already been sent to the first pair
+ // **** INTERCAMBIO ****
+ // requiere que la cantidad inicial ya haya sido enviada al primer par
function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {
```
-Esta función realiza el procesamiento interno que se requiere para las funciones que están expuestas a los comerciantes.
+Esta función realiza el procesamiento interno necesario para las funciones que se exponen a los operadores.
```solidity
for (uint i; i < path.length - 1; i++) {
```
-A la edición de este artículo, hay [388.160 tókenes ERC-20](https://etherscan.io/tokens). Si hubiera un par de intercambio por cada par de tókenes, sería de más de 150 mil millones de pares de intercambio. Toda la cadena, por el momento, [solo tiene un 0,1 % de ese número de cuentas](https://etherscan.io/chart/address). En lugar, las funciones de intercambio soportan el concepto de una ruta. Un comerciante puede cambiar A por B, B por, C, y C por D, entonces, no hay necesidad para un cambio directo de pares A-D.
+Mientras escribo esto, hay [388.160 tokens ERC-20](https://eth.blockscout.com/tokens). Si hubiera un intercambio de pares por cada par de tokens, habría más de 150 mil millones de intercambios de pares. La cadena entera, por el momento, [solo tiene el 0,1 % de ese número de cuentas](https://eth.blockscout.com/stats/accountsGrowth). En su lugar, las funciones de intercambio soportan el concepto de una ruta. Un operador puede intercambiar A por B, B por C y C por D, por lo que no hay necesidad de un intercambio de pares A-D directo.
-Los precios en estos mercados tienden a sincronizarse, debido a que cuando ellos están desincronizados, se crea una oportunidad para el arbitraje. Imagine, por ejemplo, tres tókenes, A, B y C. Hay tres intercambios de pares, uno para cada par.
+Los precios en estos mercados tienden a estar sincronizados, porque cuando no están sincronizados, se crea una oportunidad de arbitraje. Imagine, por ejemplo, tres tokens, A, B y C. Hay tres intercambios de pares, uno para cada par.
1. La situación inicial
-2. Un comerciante vende 24,695 tókenes A, y recibe 25,305 tókenes B.
-3. El comerciante vende 24,695 tókenes B por 25,305 tókenes C, manteniendo aproximadamente 0,61 de tókenes B como ganancia.
-4. El comerciante vende 24,695 tókenes C por 25,305 tókenes A, manteniendo aproximadamente 0,61 tókenes C como ganancia. El comerciante también tiene un 0,61 tókenes A adicionales (los 25,305 con los que el comerciante termina, menos la inversión original de 26,695).
+2. Un operador vende 24,695 tokens A y obtiene 25,305 tokens B.
+3. El operador vende 24,695 tokens B por 25,305 tokens C y se queda con aproximadamente 0,61 tokens B como ganancia.
+4. Luego, el operador vende 24,695 tokens C por 25,305 tokens A y se queda con aproximadamente 0,61 tokens C como ganancia. El operador también tiene 0,61 tokens A adicionales (los 25,305 que obtiene al final, menos la inversión original de 24,695).
-| Paso | Intercambio A-B | Intercambio B-C | Intercambio A-C |
-| ---- | ----------------------------- | ----------------------------- | ----------------------------- |
-| 1 | A:1.000 B:1.050 A/B=1,05 | B:1.000 C:1.050 B/C=1,05 | A:1.050 C:1.000 C/A=1,05 |
-| 2 | A:1.024,695 B:1.024,695 A/B=1 | B:1.000 C:1.050 B/C=1,05 | A:1.050 C:1.000 C/A=1,05 |
-| 3 | A:1.024,695 B:1.024,695 A/B=1 | B:1,024,695 C:1.024,695 B/C=1 | A:1.050 C:1.000 C/A=1,05 |
-| 4 | A:1.024,695 B:1.024,695 A/B=1 | B:1,024,695 C:1.024,695 B/C=1 | A:1,024,695 C:1.024,695 C/A=1 |
+| Paso | Intercambio A-B | Intercambio B-C | Intercambio A-C |
+| ---- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- |
+| 1 | A:1000 B:1050 A/B=1,05 | B:1000 C:1050 B/C=1,05 | A:1050 C:1000 C/A=1,05 |
+| 2 | A:1024,695 B:1024,695 A/B=1 | B:1000 C:1050 B/C=1,05 | A:1050 C:1000 C/A=1,05 |
+| 3 | A:1024,695 B:1024,695 A/B=1 | B:1024,695 C:1024,695 B/C=1 | A:1050 C:1000 C/A=1,05 |
+| 4 | A:1024,695 B:1024,695 A/B=1 | B:1024,695 C:1024,695 B/C=1 | A:1024,695 C:1024,695 C/A=1 |
```solidity
(address input, address output) = (path[i], path[i + 1]);
@@ -1328,19 +1343,19 @@ Los precios en estos mercados tienden a sincronizarse, debido a que cuando ellos
uint amountOut = amounts[i + 1];
```
-Obtiene el par que actualmente estamos manejando, lo ordena (para usarlo con el par) y obtiene la cantidad esperada de salida.
+Obtener el par que estamos manejando, ordenarlo (para usarlo con el par) y obtener la cantidad de salida esperada.
```solidity
(uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));
```
-Obtiene las cantidades esperadas de salida, ordenadas de la manera esperada por el intercambio de pares.
+Obtener las cantidades de salida esperadas, ordenadas de la forma en que el intercambio de pares espera que estén.
```solidity
address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;
```
-¿Este es el último intercambio? Si es así, envíe los tókenes recibidos para el intercambio al destino. Si no, envíelo al siguiente intercambio de pares.
+¿Es este el último intercambio? Si es así, envíe los tokens recibidos por la operación al destino. Si no es así, envíelo al siguiente intercambio de pares.
```solidity
@@ -1351,13 +1366,13 @@ Obtiene las cantidades esperadas de salida, ordenadas de la manera esperada por
}
```
-En realidad, lo que hace es activar el intercambio de pares para intercambiar los tókenes. No necesitamos devolver la activación para que nos informen sobre el intercambio, por lo que no enviamos ningún byte en ese campo.
+Llamar realmente al intercambio de pares para intercambiar los tokens. No necesitamos una retrollamada que nos informe sobre el intercambio, por lo que no enviamos ningún byte en ese campo.
```solidity
function swapExactTokensForTokens(
```
-Esta función la usan directamente los comerciantes para intercambiar un token por otro.
+Esta función es utilizada directamente por los operadores para intercambiar un token por otro.
```solidity
uint amountIn,
@@ -1365,11 +1380,11 @@ Esta función la usan directamente los comerciantes para intercambiar un token p
address[] calldata path,
```
-Este parámetro contiene las direcciones de los contratos ERC-20. Como se ha explicado previamente, este es una matriz, porque puede que necesite recorrer varios intercambios de pares para obtener el activo que quiere, desde el activo que ya tiene.
+Este parámetro contiene las direcciones de los contratos ERC-20. Como se explicó anteriormente, esto es una matriz porque es posible que deba pasar por varios intercambios de pares para llegar desde el activo que tiene al activo que desea.
-Un parámetro de función en Solidity se puede almacenar ya sea en `memory` o `calldata`. Si la función es un punto de entrada al contrato, activada directamente por el usuario (usando una transacción) o desde un contrato diferente, entonces el valor del parámetro puede tomarse directamente desde calldata. Si la función se activa internamente, como `_swap` anteriormente, entonces los parámetros se deben almacenar en `memory`. Desde la perspectiva del contrato activado, `calldata` es de sólo lectura.
+Un parámetro de función en Solidity se puede almacenar en `memory` o en `calldata`. Si la función es un punto de entrada al contrato, llamada directamente por un usuario (mediante una transacción) o desde un contrato diferente, el valor del parámetro puede tomarse directamente de los datos de la llamada. Si se llama a la función internamente, como `_swap` más arriba, los parámetros deben almacenarse en `memory`. Desde la perspectiva del contrato llamado, `calldata` es de solo lectura.
-Con tipos escalables como `uint` o `address`, el compilador maneja por nosotros la elección de almacenamiento, pero con matrices que son más largos y más costosos, nosotros especificamos el tipo de almacenamiento por utilizar.
+Con tipos escalares como `uint` o `address`, el compilador se encarga de elegir el almacenamiento por nosotros, pero con las matrices, que son más largas y costosas, especificamos el tipo de almacenamiento que se va a utilizar.
```solidity
address to,
@@ -1377,14 +1392,14 @@ Con tipos escalables como `uint` o `address`, el compilador maneja por nosotros
) external virtual override ensure(deadline) returns (uint[] memory amounts) {
```
-Los valores de retorno siempre son devueltos en la memoria.
+Los valores de retorno siempre se devuelven en la memoria.
```solidity
amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
```
-Calcule la cantidad por comprarse en cada intercambio. Si el resultado es menor que lo mínimo aceptado por el agente, la transacción se revierte.
+Calcular la cantidad a comprar en cada intercambio. Si el resultado es menor que el mínimo que el operador está dispuesto a aceptar, se revierte la transacción.
```solidity
TransferHelper.safeTransferFrom(
@@ -1394,7 +1409,7 @@ Calcule la cantidad por comprarse en cada intercambio. Si el resultado es menor
}
```
-Por último, transfiera el primer token ERC-20 a la cuenta para el primer intercambio de pares y active `_swap`. Todo esto sucede en la misma transacción, por lo que el intercambio de pares sabe que cualquier token inesperado es parte de esta transferencia.
+Finalmente, transfiera el token ERC-20 inicial a la cuenta del primer intercambio de pares y llame a `_swap`. Todo esto sucede en la misma transacción, por lo que el intercambio de pares sabe que cualquier token inesperado es parte de esta transferencia.
```solidity
function swapTokensForExactTokens(
@@ -1413,9 +1428,9 @@ Por último, transfiera el primer token ERC-20 a la cuenta para el primer interc
}
```
-La función anterior, `swapTokensForTokens`, permite a un agente especificar una cantidad exacta de tókenes de entrada que está dispuesto a dar y la cantidad de tókenes de salida que está dispuesto a recibir. Esta función hace el intercambio a la inversa: permite al agente especificar la cantidad de tókenes de salida que quiere y la cantidad máxima de tókenes de entrada que está dispuesto a pagar por ellos.
+La función anterior, `swapTokensForTokens`, permite a un operador especificar un número exacto de tokens de entrada que está dispuesto a dar y el número mínimo de tokens de salida que está dispuesto a recibir a cambio. Esta función realiza el intercambio inverso: permite a un operador especificar el número de tokens de salida que desea y el número máximo de tokens de entrada que está dispuesto a pagar por ellos.
-En ambos casos, el agente debe otorgar un permiso al contrato de la periferia para permitir las transferencias.
+En ambos casos, el operador debe primero dar a este contrato de periferia una autorización para permitirle transferirlos.
```solidity
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
@@ -1493,15 +1508,15 @@ En ambos casos, el agente debe otorgar un permiso al contrato de la periferia pa
}
```
-Estas cuatro variantes implican operaciones entre ETH y tókenes. La única diferencia es que o bien recibimos ETH del agente y lo usamos para acuñar WETH, o recibimos WETH del último intercambio en la ruta y lo quemamos, enviando al agente de vuelta el ETH resultante.
+Estas cuatro variantes implican el intercambio entre ETH y tokens. La única diferencia es que o bien recibimos ETH del operador y lo usamos para acuñar WETH, o recibimos WETH del último intercambio en la ruta y lo quemamos, devolviendo al operador el ETH resultante.
```solidity
- // **** SWAP (supporting fee-on-transfer tokens) ****
- // requires the initial amount to have already been sent to the first pair
+ // **** INTERCAMBIO (admite tokens con comisión por transferencia) ****
+ // requiere que la cantidad inicial ya haya sido enviada al primer par
function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {
```
-Esta es la función interna para intercambiar tókenes que tienen tarifas de transferencia o almacenamiento para resolver ([este problema](https://github.com/Uniswap/uniswap-interface/issues/835)).
+Esta es la función interna para intercambiar tokens que tienen tarifas de transferencia o de almacenamiento para resolver ([este problema](https://github.com/Uniswap/uniswap-interface/issues/835)).
```solidity
for (uint i; i < path.length - 1; i++) {
@@ -1510,16 +1525,16 @@ Esta es la función interna para intercambiar tókenes que tienen tarifas de tra
IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));
uint amountInput;
uint amountOutput;
- { // scope to avoid stack too deep errors
+ { // el ámbito para evitar errores de pila demasiado profunda
(uint reserve0, uint reserve1,) = pair.getReserves();
(uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);
amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);
```
-A causa de las tarifas de transferencia, no podemos confiar en la función `getAmountsOut` para decirnos cuánto obtenemos de cada transferencia (de la forma en que lo hacemos antes de activar el `_swap` original). En su lugar, tenemos que transferir primero y luego ver cuántos tókenes hemos recibido.
+Debido a las tarifas de transferencia no podemos confiar en la función `getAmountsOut` para que nos diga cuánto obtenemos de cada transferencia (de la forma en que lo hacemos antes de llamar al `_swap` original). En su lugar, tenemos que transferir primero y luego ver cuántos tokens recibimos.
-Nota: En teoría, podríamos usar esta función en lugar de `_swap`, pero en ciertos casos (por ejemplo, si la transferencia termina siendo revertida, porque no hay suficiente al final para cumplir con el mínimo requerido) eso terminaría costando más gas. Los tókenes de tarifas de transferencia son bastante raros, por lo que, aunque necesitamos acomodarlos, no hay necesidad de que todos los intercambios asuman que pasan por al menos uno de ellos.
+Nota: En teoría podríamos usar esta función en lugar de `_swap`, pero en ciertos casos (por ejemplo, si la transferencia termina siendo revertida porque no hay suficiente al final para cumplir con el mínimo requerido) eso terminaría costando más gas. Los tokens con tarifa de transferencia son bastante raros, así que, aunque tenemos que darles soporte, no es necesario que todos los intercambios asuman que pasan por al menos uno de ellos.
```solidity
}
@@ -1598,10 +1613,10 @@ Nota: En teoría, podríamos usar esta función en lugar de `_swap`, pero en cie
}
```
-Estas son las mismas variantes que se utilizan para los tókenes normales, pero en su lugar activan a `_swapSupportingFeeOnTransferTokens`.
+Estas son las mismas variantes que se utilizan para los tokens normales, pero en su lugar llaman a `_swapSupportingFeeOnTransferTokens`.
```solidity
- // **** LIBRARY FUNCTIONS ****
+ // **** FUNCIONES DE BIBLIOTECA ****
function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {
return UniswapV2Library.quote(amountA, reserveA, reserveB);
}
@@ -1648,31 +1663,31 @@ Estas son las mismas variantes que se utilizan para los tókenes normales, pero
}
```
-Estas funciones son solo proxies que activan a las [funciones de UniswapV2Library](#uniswapV2library).
+Estas funciones son solo proxies que llaman a las [funciones de UniswapV2Library](#uniswapV2library).
### UniswapV2Migrator.sol {#UniswapV2Migrator}
-Este contrato se ha utilizado para migrar los intercambios de la antigua v1 a la v2. Ahora que ya se han sido migrados, ya no es relevante.
+Este contrato se utilizó para migrar los intercambios de la antigua v1 a la v2. Ahora que han sido migrados, ya no es relevante.
## Las bibliotecas {#libraries}
-La [biblioteca SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math) está bien documentada, por lo que no hay necesidad de documentarla aquí.
+La [biblioteca SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math) está bien documentada, así que no hay necesidad de documentarla aquí.
-### Matemáticas {#Math}
+### Math {#Math}
-Esta biblioteca contiene algunas funciones matemáticas que no suele necesitar el código Solidity, por lo que no son parte del lenguaje.
+Esta biblioteca contiene algunas funciones matemáticas que normalmente no se necesitan en el código de Solidity, por lo que no forman parte del lenguaje.
```solidity
pragma solidity =0.5.16;
-// a library for performing various math operations
+// una biblioteca para realizar varias operaciones matemáticas
library Math {
function min(uint x, uint y) internal pure returns (uint z) {
z = x < y ? x : y;
}
- // babylonian method (https://wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
+ // método babilónico (https://wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
function sqrt(uint y) internal pure returns (uint z) {
if (y > 3) {
z = y;
@@ -1687,7 +1702,7 @@ Comience con x como una estimación que es más alta que la raíz cuadrada (esa
x = (y / x + x) / 2;
```
-Obtenga una estimación más cercana, el promedio de la estimación anterior y el número cuya raíz cuadrada estamos tratando de encontrar, dividido entre la estimación anterior. Repita hasta que la nueva estimación no sea inferior a la existente. Para más detalles, [vea aquí](https://wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method).
+Obtenga una estimación más cercana, el promedio de la estimación anterior y el número cuya raíz cuadrada estamos tratando de encontrar dividido por la estimación anterior. Repita hasta que la nueva estimación no sea inferior a la existente. Para más detalles, [consulte aquí](https://wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method).
```solidity
}
@@ -1695,7 +1710,7 @@ Obtenga una estimación más cercana, el promedio de la estimación anterior y e
z = 1;
```
-Nunca deberíamos necesitar la raíz cuadrada de cero. Las raíces cuadradas de uno, dos y tres son aproximadamente una (usamos números enteros, por lo que ignoramos la fracción).
+Nunca deberíamos necesitar la raíz cuadrada de cero. Las raíces cuadradas de uno, dos y tres son aproximadamente uno (usamos números enteros, por lo que ignoramos la fracción).
```solidity
}
@@ -1705,15 +1720,15 @@ Nunca deberíamos necesitar la raíz cuadrada de cero. Las raíces cuadradas de
### Fracciones de punto fijo (UQ112x112) {#FixedPoint}
-Esta biblioteca maneja fracciones, que normalmente no forman parte de la aritmética de Ethereum. Lo hace codificando el número _x_ como _x\*2^112_. Esto nos permite usar los códigos de suma y resta originales sin ningún cambio.
+Esta biblioteca maneja fracciones, que normalmente no forman parte de la aritmética de Ethereum. Lo hace codificando el número _x_ como _x\*2^112_. Esto nos permite usar los códigos de operación de suma y resta originales sin ningún cambio.
```solidity
pragma solidity =0.5.16;
-// a library for handling binary fixed point numbers (https://wikipedia.org/wiki/Q_(number_format))
+// una biblioteca para manejar números binarios de punto fijo (https://wikipedia.org/wiki/Q_(number_format))
-// range: [0, 2**112 - 1]
-// resolution: 1 / 2**112
+// rango: [0, 2**112 - 1]
+// resolución: 1 / 2**112
library UQ112x112 {
uint224 constant Q112 = 2**112;
@@ -1722,16 +1737,16 @@ library UQ112x112 {
`Q112` es la codificación para uno.
```solidity
- // encode a uint112 as a UQ112x112
+ // codificar un uint112 como UQ112x112
function encode(uint112 y) internal pure returns (uint224 z) {
- z = uint224(y) * Q112; // never overflows
+ z = uint224(y) * Q112; // nunca se desborda
}
```
-Debido a que y es `uint112`, lo máximo que puede ser es 2^112-1. Ese número todavía se puede codificar como `UQ112x112`.
+Como y es `uint112`, lo máximo que puede ser es 2^112-1. Ese número todavía se puede codificar como un `UQ112x112`.
```solidity
- // divide a UQ112x112 by a uint112, returning a UQ112x112
+ // divide un UQ112x112 por un uint112, devolviendo un UQ112x112
function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {
z = x / uint224(y);
}
@@ -1754,7 +1769,7 @@ import "./SafeMath.sol";
library UniswapV2Library {
using SafeMath for uint;
- // returns sorted token addresses, used to handle return values from pairs sorted in this order
+ // devuelve las direcciones de los tokens ordenadas, que se usan para manejar los valores de retorno de los pares ordenados en este orden
function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');
(token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
@@ -1762,25 +1777,25 @@ library UniswapV2Library {
}
```
-Ordene los dos tókenes por dirección, para que podamos obtener la dirección del intercambio de pares por ellos. Esto es necesario porque, de lo contrario, tendríamos dos posibilidades, una para los parámetros A, B y otra para los parámetros B, A, lo que llevaría a dos intercambios en lugar de uno.
+Ordene los dos tokens por dirección, para que podamos obtener la dirección del intercambio de pares por ellos. Esto es necesario porque, de lo contrario, tendríamos dos posibilidades, una para los parámetros A, B y otra para los parámetros B, A, lo que llevaría a dos intercambios en lugar de uno.
```solidity
- // calculates the CREATE2 address for a pair without making any external calls
+ // calcula la dirección CREATE2 para un par sin realizar ninguna llamada externa
function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
(address token0, address token1) = sortTokens(tokenA, tokenB);
pair = address(uint(keccak256(abi.encodePacked(
hex'ff',
factory,
keccak256(abi.encodePacked(token0, token1)),
- hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash
+ hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // hash del código de inicialización
))));
}
```
-Esta función calcula la dirección del intercambio de pares para los dos tókenes. Este contrato se crea usando [el código de operación CREATE2](https://eips.ethereum.org/EIPS/eip-1014), por lo que podemos calcular la dirección usando el mismo algoritmo si conocemos los parámetros que utiliza. Esto es mucho más barato que preguntarle a la fábrica, y
+Esta función calcula la dirección del intercambio de pares para los dos tokens. Este contrato se crea utilizando [el código de operación CREATE2](https://eips.ethereum.org/EIPS/eip-1014), por lo que podemos calcular la dirección utilizando el mismo algoritmo si conocemos los parámetros que utiliza. Esto es mucho más barato que preguntarle a la fábrica, y
```solidity
- // fetches and sorts the reserves for a pair
+ // obtiene y ordena las reservas de un par
function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {
(address token0,) = sortTokens(tokenA, tokenB);
(uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();
@@ -1788,10 +1803,10 @@ Esta función calcula la dirección del intercambio de pares para los dos tóken
}
```
-Esta función devuelve las reservas de los dos tókenes que tiene el intercambio de pares. Tenga en cuenta que puede recibir los tókenes en cualquier orden y ordenarlos para uso interno.
+Esta función devuelve las reservas de los dos tokens que tiene el intercambio de pares. Tenga en cuenta que puede recibir los tokens en cualquier orden y ordenarlos para uso interno.
```solidity
- // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset
+ // dada una cantidad de un activo y las reservas de un par, devuelve una cantidad equivalente del otro activo
function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {
require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');
require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');
@@ -1802,7 +1817,7 @@ Esta función devuelve las reservas de los dos tókenes que tiene el intercambio
Esta función le da la cantidad de token B que obtendrá a cambio del token A si no hay ningún cargo involucrado. Este cálculo tiene en cuenta que la transferencia cambia el tipo de cambio.
```solidity
- // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset
+ // dada una cantidad de entrada de un activo y las reservas de un par, devuelve la cantidad máxima de salida del otro activo
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {
```
@@ -1819,10 +1834,10 @@ La función `quote` anterior funciona muy bien si no hay ninguna tarifa para usa
}
```
-Solidity no maneja las fracciones de forma nativa, por lo que no podemos multiplicar la cantidad por 0,997. En su lugar, multiplicamos el numerador por 997 y el denominador por 1.000, logrando el mismo efecto.
+Solidity no maneja las fracciones de forma nativa, por lo que no podemos multiplicar la cantidad por 0,997. En su lugar, multiplicamos el numerador por 997 y el denominador por 1000, logrando el mismo efecto.
```solidity
- // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
+ // dada una cantidad de salida de un activo y las reservas de un par, devuelve la cantidad de entrada requerida del otro activo
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {
require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');
require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');
@@ -1836,7 +1851,7 @@ Esta función hace más o menos lo mismo, pero obtiene la cantidad de salida y p
```solidity
- // performs chained getAmountOut calculations on any number of pairs
+ // realiza cálculos encadenados de getAmountOut en cualquier número de pares
function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {
require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');
amounts = new uint[](path.length);
@@ -1847,7 +1862,7 @@ Esta función hace más o menos lo mismo, pero obtiene la cantidad de salida y p
}
}
- // performs chained getAmountIn calculations on any number of pairs
+ // realiza cálculos encadenados de getAmountIn en cualquier número de pares
function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {
require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');
amounts = new uint[](path.length);
@@ -1862,16 +1877,16 @@ Esta función hace más o menos lo mismo, pero obtiene la cantidad de salida y p
Estas dos funciones manejan la identificación de los valores cuando es necesario pasar por varios intercambios de pares.
-### Ayudante de transferencia {#transfer-helper}
+### TransferHelper {#transfer-helper}
-[Esta biblioteca](https://github.com/Uniswap/uniswap-lib/blob/master/contracts/libraries/TransferHelper.sol) agrega comprobaciones de éxito en torno a las transferencias de ERC-20 y Ethereum para tratar una reversión y un valor `falso` devuelto de la misma manera.
+[Esta biblioteca](https://github.com/Uniswap/uniswap-lib/blob/master/contracts/libraries/TransferHelper.sol) agrega comprobaciones de éxito en torno a las transferencias de ERC-20 y Ethereum para tratar una reversión y la devolución de un valor `false` de la misma manera.
```solidity
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity >=0.6.0;
-// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
+// métodos de ayuda para interactuar con tokens ERC20 y enviar ETH que no devuelven consistentemente verdadero/falso
library TransferHelper {
function safeApprove(
address token,
@@ -1885,8 +1900,8 @@ library TransferHelper {
Podemos llamar a un contrato diferente de una de dos maneras:
-- Utilice una definición de interfaz para crear una activación de función
-- Utilice la [interfaz binaria de aplicación (ABI)](https://docs.soliditylang.org/en/v0.8.3/abi-spec.html) «manualmente» para crear la activación. Esto es lo que el autor del código decidió hacer.
+- Usar una definición de interfaz para crear una llamada de función
+- Utilice la [interfaz binaria de aplicación (ABI)](https://docs.soliditylang.org/en/v0.8.3/abi-spec.html) "manualmente" para crear la llamada. Esto es lo que el autor del código decidió hacer.
```solidity
require(
@@ -1896,7 +1911,7 @@ Podemos llamar a un contrato diferente de una de dos maneras:
}
```
-En aras de la compatibilidad con versiones anteriores con el token que se crearon antes del estándar ERC-20, una activación ERC-20 puede fallar ya sea revirtiendo (en cuyo caso `success` es `false`) o al tener éxito y devolver un valor `false` (en cuyo caso hay datos de salida, y si lo decodifica como un booleano, obtiene `false`).
+En aras de la compatibilidad con versiones anteriores de tokens creados antes del estándar ERC-20, una llamada a ERC-20 puede fallar, ya sea revirtiendo (en cuyo caso `success` es `false`) o teniendo éxito y devolviendo un valor `false` (en cuyo caso hay datos de salida, y si los decodifica como un booleano, obtiene `false`).
```solidity
@@ -1915,7 +1930,7 @@ En aras de la compatibilidad con versiones anteriores con el token que se crearo
}
```
-Esta función implementa la funcionalidad de transferencia de [ERC-20](https://eips.ethereum.org/EIPS/eip-20#transfer), que permite a una cuenta gastar la asignación proporcionada por una cuenta diferente.
+Esta función implementa [la funcionalidad de transferencia de ERC-20](https://eips.ethereum.org/EIPS/eip-20#transfer), que permite a una cuenta gastar la autorización proporcionada por una cuenta diferente.
```solidity
@@ -1934,7 +1949,7 @@ Esta función implementa la funcionalidad de transferencia de [ERC-20](https://e
}
```
-Esta función implementa la funcionalidad de ERC-20 [transferFrom](https://eips.ethereum.org/EIPS/eip-20#transferfrom), que permite a una cuenta gastar la asignación proporcionada por una cuenta diferente.
+Esta función implementa la [funcionalidad transferFrom de ERC-20](https://eips.ethereum.org/EIPS/eip-20#transferfrom), que permite a una cuenta gastar la autorización proporcionada por una cuenta diferente.
```solidity
@@ -1945,10 +1960,12 @@ Esta función implementa la funcionalidad de ERC-20 [transferFrom](https://eips.
}
```
-Esta función transfiere ether a una cuenta. Cualquier activación de un contrato diferente puede intentar enviar ether. Debido a que no necesitamos activar ninguna función realmente, no enviamos ningún dato con la activación.
+Esta función transfiere ether a una cuenta. Cualquier llamada a un contrato diferente puede intentar enviar ether. Como no necesitamos llamar a ninguna función, no enviamos ningún dato con la llamada.
## Conclusión {#conclusion}
-Este es un artículo largo de aproximadamente 50 páginas. Si ha llegado hasta aquí, ¡le felicitamos! Espero que a estas alturas haya entendido lo referente a escribir una aplicación de verdad (a diferencia de programas cortos de ejemplo) y ahora sea capaz de escribir mejor contratos para sus propios casos de uso.
+Este es un artículo largo de unas 50 páginas. Si ha llegado hasta aquí, ¡enhorabuena! Esperamos que a estas alturas haya entendido las consideraciones a la hora de escribir una aplicación real (a diferencia de los programas de ejemplo cortos) y esté mejor preparado para escribir contratos para sus propios casos de uso.
+
+Ahora, vaya y escriba algo útil y sorpréndanos.
-Ahora ya puede ir y escribir algo útil que nos sorprenda.
+[Vea aquí más de mi trabajo](https://cryptodocguy.pro/).
From 37bd2baab40b7fc3660b75d0d426bed788ef206f Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:49:59 -0300
Subject: [PATCH 158/589] update(i18n):
public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
---
.../index.md | 106 +++++++++---------
1 file changed, 54 insertions(+), 52 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md b/public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
index 66e897f69f2..49bd79ff63d 100644
--- a/public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
@@ -1,12 +1,14 @@
---
-title: Transferencias y aprobación de tókenes ERC-20 desde un contrato inteligente en Solidity
-description: Cómo utilizar un contrato inteligente para interactuar con un token usando el lenguaje Solidity
+title: Transferencias y aprobación de tokens ERC-20 desde un contrato inteligente de Solidity
+description: Cree un contrato inteligente DEX que gestione las transferencias y aprobaciones de tokens ERC-20 utilizando Solidity.
author: "jdourlens"
tags:
- - "contratos inteligentes"
- - "tokens"
- - "solidity"
- - "erc-20"
+ [
+ "contratos Inteligentes",
+ "tókenes",
+ "Solidity",
+ "erc-20"
+ ]
skill: intermediate
lang: es
published: 2020-04-07
@@ -15,16 +17,16 @@ sourceUrl: https://ethereumdev.io/transfers-and-approval-or-erc20-tokens-from-a-
address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
---
-En el tutorial anterior, se estudió [la anatomía de un token ERC-20 en Solidity](/developers/tutorials/understand-the-erc-20-token-smart-contract/) sobre la cadena de bloques de Ethereum. En este artículo veremos cómo usar un contrato inteligente para la interacción con un token, usando el lenguaje de programación Solidity.
+En el tutorial anterior estudiamos [la anatomía de un token ERC-20 en Solidity](/developers/tutorials/understand-the-erc-20-token-smart-contract/) en la cadena de bloques de Ethereum. En este artículo veremos cómo podemos usar un contrato inteligente para interactuar con un token usando el lenguaje Solidity.
-Para este contrato inteligente, crearemos un exchange descentralizado realmente falso donde un usuario pueda intercambiar ether por nuestro recientemente implementado [token ERC-20](/developers/docs/standards/tokens/erc-20/).
+Para este contrato inteligente, crearemos un intercambio descentralizado de prueba en el que un usuario puede intercambiar ether por nuestro token [ERC-20](/developers/docs/standards/tokens/erc-20/) recién implementado.
-Para este tutorial usaremos el código que escribimos en el tutorial anterior como punto de partida. El DEX representará una instancia del contrato en su constructor y perfeccionará las operaciones de:
+Para este tutorial, usaremos como base el código que escribimos en el tutorial anterior. Nuestro DEX instanciará una instancia del contrato en su constructor y realizará las siguientes operaciones:
-- intercambio de tókenes por ether
-- intercambio de ether por tókenes
+- intercambio de tokens por ether
+- intercambio de ether por tokens
-Iniciaremos nuestro código de intercambio descentralizado añadiendo un código ERC20 sencillo:
+Comenzaremos el código de nuestro intercambio descentralizado añadiendo nuestro código base simple de ERC20:
```solidity
pragma solidity ^0.8.0;
@@ -60,11 +62,11 @@ contract ERC20Basic is IERC20 {
constructor() {
- balances[msg.sender] = totalSupply_;
+ balances[msg.sender] = totalSupply_;
}
function totalSupply() public override view returns (uint256) {
- return totalSupply_;
+ return totalSupply_;
}
function balanceOf(address tokenOwner) public override view returns (uint256) {
@@ -104,7 +106,7 @@ contract ERC20Basic is IERC20 {
```
-El nuevo contrato inteligente de DEX desplegará el ERC-20 y obtendrá todo el suministro:
+Nuestro nuevo contrato inteligente DEX implementará el ERC-20 y obtendrá todo el suministro:
```solidity
contract DEX {
@@ -129,84 +131,84 @@ contract DEX {
}
```
-Entonces, ahora tenemos nuestro (intercambio descentralizado) y tiene toda la reserva de tókenes disponible. El contrato tiene dos funciones:
+Así que ahora tenemos nuestro DEX y tiene toda la reserva de tokens disponible. El contrato tiene dos funciones:
-- `buy` (comprar): el usuario puede enviar ether y obtener tókenes a cambio.
-- `sell` (vender): el usuario puede optar por enviar tókenes para recuperar el ether.
+- `buy`: el usuario puede enviar ether y obtener tokens a cambio.
+- `sell`: el usuario puede decidir enviar tokens para recuperar ether.
-## La función comprar {#the-buy-function}
+## La función de compra {#the-buy-function}
-Codifiquemos la función comprar. Primero se tiene que comprobar la cantidad de ether que contiene el mensaje y verificar que los contratos poseen suficientes tókenes y que el mensaje contiene algún ether. Si el contrato posee suficientes tókenes, enviará el número de tókenes al usuario y emitirá el evento `Bought` (comprado).
+Vamos a programar la función `buy`. Primero, tendremos que comprobar la cantidad de ether que contiene el mensaje y verificar que el contrato posea suficientes tokens y que el mensaje tenga algo de ether. Si el contrato posee suficientes tokens, enviará la cantidad de tokens al usuario y emitirá el evento `Bought`.
-Hay que tener en cuenta que si se ejecuta la función requerida en caso de error, el ether enviado rebotará y será devuelto directamente al usuario.
+Tenga en cuenta que si llamamos a la función `require` en caso de error, el ether enviado se revertirá directamente y se devolverá al usuario.
-Para simplificar las cosas, intercambiamos un token por un Wei.
+Para simplificar, solo intercambiamos 1 token por 1 Wei.
```solidity
function buy() payable public {
uint256 amountTobuy = msg.value;
uint256 dexBalance = token.balanceOf(address(this));
- require(amountTobuy > 0, "You need to send some ether");
- require(amountTobuy <= dexBalance, "Not enough tokens in the reserve");
+ require(amountTobuy > 0, "Necesita enviar algo de ether");
+ require(amountTobuy <= dexBalance, "No hay suficientes tokens en la reserva");
token.transfer(msg.sender, amountTobuy);
emit Bought(amountTobuy);
}
```
-En el caso de que la compra sea exitosa, se deberían ver dos eventos en la transacción: el token `Transfer` (transferencia) y el evento `Bought` (comprado).
+Si la compra es exitosa, deberíamos ver dos eventos en la transacción: el evento `Transfer` del token y el evento `Bought`.
-
+
-## La función vender {#the-sell-function}
+## La función de venta {#the-sell-function}
-La función responsable de la venta requerirá, primero, que el usuario haya aprobado la cantidad llamando a la función de aprobación de antemano. La aprobación de la transferencia requiere que el usuario ejecute el token básico ERC20 instanciado por el DEX. Esto se puede lograr ejecutando primero la función `token()` del contrato DEX para recuperar la dirección donde DEX desplegó el contrato ERC20Basic llamado `token`. Luego creamos una instancia de este contrato en nuestra sesión y ejecutamos su función de `approve`. Una vez realizado esto, podemos lanzar la función `sell` de DEX e intercambiar nuestros tókenes por ether. Por ejemplo, este es el aspecto que tiene una sesión de brownie interactiva:
+La función responsable de la venta requerirá primero que el usuario haya aprobado la cantidad llamando previamente a la función `approve`. La aprobación de la transferencia requiere que el usuario llame al token ERC20Basic instanciado por el DEX. Esto se puede lograr llamando primero a la función `token()` del contrato DEX para recuperar la dirección donde el DEX implementó el contrato ERC20Basic llamado `token`. A continuación, creamos una instancia de ese contrato en nuestra sesión y llamamos a su función `approve`. Entonces podremos llamar a la función `sell` del DEX e intercambiar nuestros tokens de vuelta por ether. Por ejemplo, así es como se ve en una sesión interactiva de Brownie:
```python
-#### Python in interactive brownie console...
+#### Python en la consola interactiva de Brownie...
-# deploy the DEX
+# implementar el DEX
dex = DEX.deploy({'from':account1})
-# call the buy function to swap ether for token
-# 1e18 is 1 ether denominated in wei
+# llamar a la función de compra para intercambiar ether por token
+# 1e18 es 1 ether denominado en wei
dex.buy({'from': account2, 1e18})
-# get the deployment address for the ERC20 token
-# that was deployed during DEX contract creation
-# dex.token() returns the deployed address for token
+# obtener la dirección de implementación para el token ERC20
+# que se implementó durante la creación del contrato DEX
+# dex.token() devuelve la dirección implementada para el token
token = ERC20Basic.at(dex.token())
-# call the token's approve function
-# approve the dex address as spender
-# and how many of your tokens it is allowed to spend
+# llamar a la función de aprobación del token
+# aprobar la dirección dex como gastador
+# y cuántos de sus tokens se le permite gastar
token.approve(dex.address, 3e18, {'from':account2})
```
-Al ejecutar la sesión de venta (sell), comprobamos que la transferencia desde la dirección del solicitante a la dirección del contrato se ha realizado con éxito y devolvemos los ethers a la dirección del solicitante.
+Luego, cuando se llama a la función `sell`, comprobaremos si la transferencia desde la dirección de la persona que llama a la dirección del contrato fue exitosa y después enviaremos los ether de vuelta a la dirección de la persona que llama.
```solidity
function sell(uint256 amount) public {
- require(amount > 0, "You need to sell at least some tokens");
+ require(amount > 0, "Necesita vender al menos algunos tokens");
uint256 allowance = token.allowance(msg.sender, address(this));
- require(allowance >= amount, "Check the token allowance");
+ require(allowance >= amount, "Compruebe la asignación de tokens");
token.transferFrom(msg.sender, address(this), amount);
payable(msg.sender).transfer(amount);
emit Sold(amount);
}
```
-Si todo funciona, debería ver 2 eventos (un `Transfer` y `Sold`) en la transacción, además de su saldo de tokens y saldo de ether actualizados.
+Si todo funciona, debería ver 2 eventos (un `Transfer` y un `Sold`) en la transacción, y el saldo de sus tokens y de ether actualizados.
-
+
-Desde este tutorial se ha visto cómo comprobar el saldo y la autorización de un token ERC, y también cómo ejecutar `Transfer` y `TransferFrom` de un contrato inteligente ERC20 usando la interfaz.
+En este tutorial vimos cómo comprobar el saldo y la asignación de un token ERC-20 y también cómo llamar a `Transfer` y `TransferFrom` de un contrato inteligente ERC20 utilizando la interfaz.
-Una vez realizada esta transacción, tenemos un tutorial de JavaScript para [esperar y obtener los detalles de las transacciones](https://ethereumdev.io/waiting-for-a-transaction-to-be-mined-on-ethereum-with-js/) que se han hecho a su contrato y un [tutorial para descodificar los eventos generados por las transferencias de tókenes o cualquier otro evento](https://ethereumdev.io/how-to-decode-event-logs-in-javascript-using-abi-decoder/) siempre y cuando tenga la ABI.
+Una vez que realice una transacción, tenemos un tutorial de JavaScript para [esperar y obtener detalles sobre las transacciones](https://ethereumdev.io/waiting-for-a-transaction-to-be-mined-on-ethereum-with-js/) que se hicieron a su contrato y un [tutorial para decodificar los eventos generados por las transferencias de tokens o cualquier otro evento](https://ethereumdev.io/how-to-decode-event-logs-in-javascript-using-abi-decoder/) siempre que tenga la ABI.
-He aquí el código completo para el tutorial:
+Aquí está el código completo para el tutorial:
```solidity
pragma solidity ^0.8.0;
@@ -242,11 +244,11 @@ contract ERC20Basic is IERC20 {
constructor() {
- balances[msg.sender] = totalSupply_;
+ balances[msg.sender] = totalSupply_;
}
function totalSupply() public override view returns (uint256) {
- return totalSupply_;
+ return totalSupply_;
}
function balanceOf(address tokenOwner) public override view returns (uint256) {
@@ -299,16 +301,16 @@ contract DEX {
function buy() payable public {
uint256 amountTobuy = msg.value;
uint256 dexBalance = token.balanceOf(address(this));
- require(amountTobuy > 0, "You need to send some ether");
- require(amountTobuy <= dexBalance, "Not enough tokens in the reserve");
+ require(amountTobuy > 0, "Necesita enviar algo de ether");
+ require(amountTobuy <= dexBalance, "No hay suficientes tokens en la reserva");
token.transfer(msg.sender, amountTobuy);
emit Bought(amountTobuy);
}
function sell(uint256 amount) public {
- require(amount > 0, "You need to sell at least some tokens");
+ require(amount > 0, "Necesita vender al menos algunos tokens");
uint256 allowance = token.allowance(msg.sender, address(this));
- require(allowance >= amount, "Check the token allowance");
+ require(allowance >= amount, "Compruebe la asignación de tokens");
token.transferFrom(msg.sender, address(this), amount);
payable(msg.sender).transfer(amount);
emit Sold(amount);
From 6042703fd835d44c455fae058019fe3a23b212f2 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:00 -0300
Subject: [PATCH 159/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
---
.../how-to-use-tellor-as-your-oracle/index.md | 55 +++++++++----------
1 file changed, 26 insertions(+), 29 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md b/public/content/translations/es/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
index 932793f3fe8..9364d2425ef 100644
--- a/public/content/translations/es/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
@@ -1,57 +1,54 @@
---
title: Cómo configurar Tellor como su oráculo
-description: Guía para comenzar a integrar el oráculo Tellor en su protocolo
+description: Una guía para empezar a integrar el oráculo Tellor en su protocolo
author: "Tellor"
lang: es
-tags:
- - "solidity"
- - "contratos inteligentes"
- - "oráculos"
+tags: [ "Solidity", "contratos Inteligentes", "oráculos" ]
skill: beginner
-published: 2021-06-29
-source: Documentos sobre Tellor
+published: 29/06/2021
+source: Documentación de Tellor
sourceUrl: https://docs.tellor.io/tellor/
---
-Pregunta: Su protocolo está casi terminado, pero necesita un oráculo para tener acceso a datos fuera de la cadena... ¿Qué necesita?
+Pregunta rápida: su protocolo está casi terminado, pero necesita un oráculo para obtener acceso a datos fuera de la cadena... ¿Qué hace?
-## Requisitos previos (fácil) {#soft-prerequisites}
+## (Requisitos recomendados) {#soft-prerequisites}
-Esta publicación tiene como objetivo hacer que el acceso a un feed de oráculo sea lo más simple y directo posible. Dicho esto, vamos a asumir lo siguiente sobre su nivel de habilidad de codificación para centrarnos en el aspecto del oráculo.
+Esta publicación tiene como objetivo que el acceso a una fuente de datos de oráculo sea lo más simple y directo posible. Dicho esto, presuponemos lo siguiente sobre su nivel de conocimientos de programación para centrarnos en el aspecto del oráculo.
-Supuestos:
+Suposiciones:
-- Puede navegar por un terminal.
-- Tiene npm instalado.
-- Sabe cómo usar npm para gestionar dependencias.
+- sabe cómo utilizar una terminal
+- tiene npm instalado
+- sabe cómo usar npm para gestionar las dependencias
-Tellor es un oráculo en vivo y de código abierto listo para su implementación. Esta guía para principiantes está aqui para demostrar la facilidad con la que uno puede implementar y poner en marcha Tellor, proporcionando a su proyecto un oráculo completamente descentralizado y resistente a la censura.
+Tellor es un oráculo activo y de código abierto listo para su implementación. Esta guía para principiantes demuestra lo fácil que es poner en marcha Tellor, lo que proporciona a su proyecto un oráculo totalmente descentralizado y resistente a la censura.
-## Resumen {#overview}
+## Presentación {#overview}
-Tellor es un sistema de oráculo donde las partes pueden solicitar el valor de un punto de datos fuera de la cadena (p. ej., BTC/USD) y los informantes compiten para agregar este valor a un banco de datos en cadena, accesible para todos los contratos inteligentes de Ethereum. Las entradas a este banco de datos están aseguradas por una red de informantes que hacen staking. Tellor utiliza mecanismos de incentivos criptoeconómicos, recompensando las presentaciones de datos honestas de los informantes y castigando a los malos actores por medio de la emisión del token de Tellor, Tributes (TRB), y un mecanismo de disputa.
+Tellor es un sistema de oráculo en el que las partes pueden solicitar el valor de un punto de datos fuera de la cadena (p. ej., BTC/USD) y los reporteros compiten para añadir este valor a un banco de datos en la cadena, al que pueden acceder todos los contratos inteligentes de Ethereum. Las entradas a este banco de datos están protegidas por una red de reporteros que hacen staking. Tellor utiliza mecanismos de incentivos criptoeconómicos que recompensan las entregas de datos honestas por parte de los reporteros y castigan a los malos actores mediante la emisión del token de Tellor, Tributes (TRB), y un mecanismo de disputas.
En este tutorial veremos:
-- Configurar el kit de herramientas inicial que necesitará para comenzar.
-- Analizar un ejemplo sencillo.
-- Listar direcciones de redes de prueba en las que actualmente puede probar Tellor.
+- La configuración del kit de herramientas inicial que necesitará para ponerse en marcha.
+- Un recorrido por un ejemplo sencillo.
+- Una lista de las direcciones de las redes de prueba en las que puede probar Tellor actualmente.
## UsingTellor {#usingtellor}
-Lo primero que debe hacer es instalar las herramientas básicas necesarias para usar Tellor como oráculo. Use [este paquete](https://github.com/tellor-io/usingtellor) para instalar los contratos de usuario de Tellor:
+Lo primero que querrá hacer es instalar las herramientas básicas necesarias para usar Tellor como su oráculo. Utilice [este paquete](https://github.com/tellor-io/usingtellor) para instalar los contratos de usuario de Tellor:
`npm install usingtellor`
-Una vez instalado, esto permitirá a sus contratos heredar las funciones del contrato "UsingTellor".
+Una vez instalado, esto permitirá que sus contratos hereden las funciones del contrato 'UsingTellor'.
-¡Genial! Ahora que las herramientas están listas, continuemos con un pequeño ejercicio donde solicitaremos el precio de bitcoin:
+¡Genial! Ahora que tiene las herramientas listas, vamos a realizar un ejercicio sencillo en el que recuperaremos el precio de Bitcoin:
### Ejemplo de BTC/USD {#btcusd-example}
-Herede el contrato UsingTellor, pasando la dirección de Tellor como argumento de constructor:
+Herede del contrato UsingTellor, pasando la dirección de Tellor como argumento del constructor:
-Aquí hay un ejemplo:
+Le mostramos un ejemplo:
```solidity
import "usingtellor/contracts/UsingTellor.sol";
@@ -59,7 +56,7 @@ import "usingtellor/contracts/UsingTellor.sol";
contract PriceContract is UsingTellor {
uint256 public btcPrice;
- //This Contract now has access to all functions in UsingTellor
+ //Este contrato ahora tiene acceso a todas las funciones en UsingTellor
constructor(address payable _tellorAddress) UsingTellor(_tellorAddress) public {}
@@ -77,8 +74,8 @@ function setBtcPrice() public {
}
```
-Para ver un listado completo de direcciones de contrato, visite [este enlace](https://docs.tellor.io/tellor/the-basics/contracts-reference).
+Para obtener una lista completa de las direcciones de los contratos, consulte [aquí](https://docs.tellor.io/tellor/the-basics/contracts-reference).
-Para la facilidad de uso, el repositorio UsingTellor incluye una versión del contrato [Tellor Playground](https://github.com/tellor-io/TellorPlayground) para una integración más fácil. Visite [aquí](https://github.com/tellor-io/sampleUsingTellor#tellor-playground) para un listado de funciones útiles.
+Para facilitar su uso, el repositorio de UsingTellor incluye una versión del contrato [Tellor Playground](https://github.com/tellor-io/TellorPlayground) para una integración más sencilla. Consulte [aquí](https://github.com/tellor-io/sampleUsingTellor#tellor-playground) una lista de funciones útiles.
-Para una implementación más sólida del oráculo de Tellor, revise el listado completo de funciones disponibles [aquí](https://github.com/tellor-io/usingtellor/blob/master/README.md).
+Para una implementación más robusta del oráculo Tellor, consulte la lista completa de funciones disponibles [aquí](https://github.com/tellor-io/usingtellor/blob/master/README.md).
From 80ec15de36b93725685e7f7af0ac8e8e187283b2 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:02 -0300
Subject: [PATCH 160/589] update(i18n):
public/content/translations/es/developers/tutorials/send-token-ethersjs/index.md
---
.../tutorials/send-token-ethersjs/index.md | 66 +++++++++----------
1 file changed, 32 insertions(+), 34 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/send-token-ethersjs/index.md b/public/content/translations/es/developers/tutorials/send-token-ethersjs/index.md
index cd4dd34a040..39be251a1f7 100644
--- a/public/content/translations/es/developers/tutorials/send-token-ethersjs/index.md
+++ b/public/content/translations/es/developers/tutorials/send-token-ethersjs/index.md
@@ -1,27 +1,25 @@
---
-title: Enviar tokens usando ethers.js
+title: Envío de tokens usando ethers.js
description: Guía para principiantes sobre el envío de tokens usando ethers.js.
author: Kim YongJun
-tags:
- - "ETHERS.JS"
- - "ERC-20"
- - "TOKENS"
+tags: [ "ETHERS.JS", "ERC-20", "TOKENS" ]
skill: beginner
lang: es
published: 2021-04-06
---
-## Enviar token usando ethers.js(5.0) {#send-token}
+## Enviar un token usando ethers.js(5.0) {#send-token}
-### En este tutorial aprenderá: {#you-learn-about}
+### En este tutorial aprenderá a: {#you-learn-about}
-- Cómo importar ethers.js
-- Cómo transferir tokens
-- Cómo establecer el precio del gas según la situación de tráfico de la red
+- Importar ethers.js
+- Transferir un token
+- Establecer el precio del gas según la situación del tráfico de la red
-### Para comenzar {#to-get-started}
+### Para empezar {#to-get-started}
-Para comenzar, primero debemos importar la biblioteca de ethers.js en nuestro javascript Incluya ethers.js(5.0)
+Para empezar, primero debemos importar la biblioteca ethers.js en nuestro JavaScript.
+Incluya ethers.js(5.0)
### Instalación {#install-ethersjs}
@@ -34,7 +32,7 @@ ES6 en el navegador
```html
```
@@ -49,11 +47,11 @@ ES3(UMD) en el navegador
### Parámetros {#param}
-1. **`contract_address`**: la dirección del contrato del token (se necesita la dirección cuando el token que quiere transferir no es ether)
+1. **`contract_address`**: dirección del contrato del token (la dirección del contrato es necesaria cuando el token que quiere transferir no es ether)
2. **`send_token_amount`**: la cantidad que quiere enviar al receptor
3. **`to_address`**: la dirección del receptor
-4. **`send_account`**: la dirección del que envía
-5. **`private_key`**: la clave privada del remitente para firmar la transacción y tranferir los tokens
+4. **`send_account`**: la dirección del emisor
+5. **`private_key`**: la clave privada del emisor para firmar la transacción y transferir los tokens
## Aviso {#notice}
@@ -61,7 +59,7 @@ ES3(UMD) en el navegador
## Procedimientos de envío {#procedure}
-### 1. Conectarse a la red de prueba (testnet) {#connect-to-network}
+### 1. Conectarse a la red (red de prueba) {#connect-to-network}
#### Establecer el proveedor (Infura) {#set-provider}
@@ -83,7 +81,7 @@ let wallet = new ethers.Wallet(private_key)
let walletSigner = wallet.connect(window.ethersProvider)
```
-### 4. Obtener el precio actual de gas {#get-gas}
+### 4. Obtener el precio actual del gas {#get-gas}
```javascript
window.ethersProvider.getGasPrice() // gasPrice
@@ -91,17 +89,17 @@ window.ethersProvider.getGasPrice() // gasPrice
### 5. Definir la transacción {#define-transaction}
-Estas variables definidas a continuación dependen del `send_token()`
+Las variables definidas a continuación dependen de `send_token()`
-### Parámetros de transacción {#transaction-params}
+### Parámetros de la transacción {#transaction-params}
-1. **`send_account`**: dirección del emisor de tokens
-2. **`to_address`**: dirección del receptor de tokens
+1. **`send_account`**: dirección del emisor del token
+2. **`to_address`**: dirección del receptor del token
3. **`send_token_amount`**: la cantidad de tokens a enviar
4. **`gas_limit`**: límite de gas
5. **`gas_price`**: precio del gas
-[Vea a continuación cómo usar](#how-to-use)
+[Vea a continuación cómo usarlo](#how-to-use)
```javascript
const tx = {
@@ -114,16 +112,16 @@ const tx = {
}
```
-### 6. Transferir {#transfer}
+### 6. Transferencia {#transfer}
```javascript
walletSigner.sendTransaction(tx).then((transaction) => {
console.dir(transaction)
- alert("Send finished!")
+ alert("¡Envío finalizado!")
})
```
-## Cómo utilizarlo {#how-to-use}
+## Cómo usarlo {#how-to-use}
```javascript
let private_key =
@@ -148,7 +146,7 @@ send_token(
### ¡Éxito! {#success}
-
+
## send_token() {#send-token-method}
@@ -168,23 +166,23 @@ function send_token(
console.log(`gas_price: ${gas_price}`)
if (contract_address) {
- // general token send
+ // envío de token general
let contract = new ethers.Contract(
contract_address,
send_abi,
walletSigner
)
- // How many tokens?
+ // ¿Cuántos tokens?
let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)
console.log(`numberOfTokens: ${numberOfTokens}`)
- // Send tokens
+ // Enviar tokens
contract.transfer(to_address, numberOfTokens).then((transferResult) => {
console.dir(transferResult)
- alert("sent token")
+ alert("token enviado")
})
- } // ether send
+ } // envío de ether
else {
const tx = {
from: send_account,
@@ -201,10 +199,10 @@ function send_token(
try {
walletSigner.sendTransaction(tx).then((transaction) => {
console.dir(transaction)
- alert("Send finished!")
+ alert("¡Envío finalizado!")
})
} catch (error) {
- alert("failed to send!!")
+ alert("¡Error al enviar!")
}
}
})
From 14a3478cf33b108fed46eb7da41f6647d9b01239 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:03 -0300
Subject: [PATCH 161/589] update(i18n):
public/content/translations/es/contributing/translation-program/mission-and-vision/index.md
From e1a26de57410dce4939db88b076d46a80e0591ed Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:05 -0300
Subject: [PATCH 162/589] update(i18n):
public/content/translations/es/developers/tutorials/waffle-test-simple-smart-contract/index.md
---
.../index.md | 104 +++++++++---------
1 file changed, 55 insertions(+), 49 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/waffle-test-simple-smart-contract/index.md b/public/content/translations/es/developers/tutorials/waffle-test-simple-smart-contract/index.md
index fb3abb38904..4bf3eb81b4c 100644
--- a/public/content/translations/es/developers/tutorials/waffle-test-simple-smart-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/waffle-test-simple-smart-contract/index.md
@@ -1,47 +1,50 @@
---
-title: Probar el contrato inteligente de forma sencilla con la biblioteca Waffle
+title: Prueba de un contrato inteligente simple con la biblioteca Waffle
description: Tutorial para principiantes
author: Ewa Kowalska
tags:
- - "contratos inteligentes"
- - "solidity"
- - "Waffle"
- - "pruebas"
+ [
+ "contratos Inteligentes",
+ "Solidity",
+ "Waffle",
+ "pruebas"
+ ]
skill: beginner
lang: es
published: 2021-02-26
---
-## En este tutorial aprenderá a: {#in-this-tutorial-youll-learn-how-to}
+## En este tutorial aprenderá a {#in-this-tutorial-youll-learn-how-to}
-- Evalúa los cambios en el saldo de la billetera
-- Probar la emisión de eventos con argumentos especificos.
-- Verificar que una transacción se ha revertido.
+- Probar los cambios en el saldo de la billetera
+- Probar la emisión de eventos con argumentos específicos
+- Afirmar que una transacción ha sido revertida
## Supuestos {#assumptions}
-- Puede crear un nuevo proyecto JavaScript o TypeScript.
-- Tiene experiencia básica con las pruebas en JavaScript.
-- Ha utilizado algunos gestores de paquetes como yarn o npm.
-- Posee conocimientos muy básicos de contratos inteligentes y Solidity.
+- Puede crear un nuevo proyecto de JavaScript o TypeScript
+- Tiene algo de experiencia básica con pruebas en JavaScript
+- Ha usado algunos administradores de paquetes como yarn o npm
+- Posee conocimientos muy básicos sobre contratos inteligentes y Solidity
-## Introducción {#getting-started}
+## Primeros pasos {#getting-started}
-Este tutorial explica una configuración de prueba y se ejecuta utilizando yarn, pero no pasa nada si prefiere hacerlo con npm, ya proporcionaré las indicaciones apropiadas a la documentación oficial de Waffle[](https://ethereum-waffle.readthedocs.io/en/latest/index.html).
+El tutorial demuestra la configuración y ejecución de la prueba usando yarn, pero no hay problema si prefiere npm. Proporcionaré las referencias adecuadas a la [documentación](https://ethereum-waffle.readthedocs.io/en/latest/index.html) oficial de Waffle.
-### Instalar las dependencias {#install-dependencies}
+## Instalar dependencias {#install-dependencies}
-[Añada](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#installation) las dependencias ethereum-waffle y de typescript a las dependencias de desarrollo de su proyecto.
+[Añada](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#installation) las dependencias ethereum-waffle y typescript a las dependencias de desarrollo de su proyecto.
```bash
yarn add --dev ethereum-waffle ts-node typescript @types/jest
```
-### Ejemplo de contrato inteligente {#example-smart-contract}
+## Ejemplo de contrato inteligente {#example-smart-contract}
-Durante el tutorial trabajaremos con un sencillo ejemplo de contrato inteligente: EtherSplitter. Permite casi se manera similar que cualquiera envíe algunos wei y, eventualmente, los divida entre dos receptores por defecto. La función dividida requiere que la cantidad de wei sea un número entero, de lo contario se revertirá. Para ambos receptores realiza una transferencia de wei, seguida a la emisión de un evento de transferencia.
+Durante el tutorial trabajaremos en un ejemplo de contrato inteligente simple: EtherSplitter. No hace mucho más que permitir que cualquiera envíe wei y los divida en partes iguales entre dos receptores predefinidos.
+La función `split` requiere que la cantidad de wei sea par; de lo contrario, se revertirá. Para ambos receptores, realiza una transferencia de wei seguida de la emisión del evento `Transfer`.
-Añada el fragmento de código de EtherSplitter en `src/EtherSplitter.sol`.
+Coloque el fragmento de código de EtherSplitter en `src/EtherSplitter.sol`.
```solidity
pragma solidity ^0.6.0;
@@ -58,7 +61,7 @@ contract EtherSplitter {
}
function split() public payable {
- require(msg.value % 2 == 0, 'Uneven wei amount not allowed');
+ require(msg.value % 2 == 0, 'No se permite una cantidad impar de wei');
receiver1.transfer(msg.value / 2);
emit Transfer(msg.sender, receiver1, msg.value / 2);
receiver2.transfer(msg.value / 2);
@@ -67,9 +70,9 @@ contract EtherSplitter {
}
```
-### Compilar el contrato {#compile-the-contract}
+## Compilar el contrato {#compile-the-contract}
-Para [compilar](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#compiling-the-contract) el contrato, añada las siguientes líneas al archivo de package.json:
+Para [compilar](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#compiling-the-contract) el contrato, añada la siguiente entrada al archivo package.json:
```json
"scripts": {
@@ -77,7 +80,7 @@ Para [compilar](https://ethereum-waffle.readthedocs.io/en/latest/getting-started
}
```
-A continuación, cree el archivo de configuración de Waffle en el directorio de raíz del proyecto `waffle.json` y después pegue ahí la siguiente configuración:
+A continuación, cree el archivo de configuración de Waffle en el directorio raíz del proyecto, `waffle.json`, y pegue allí la siguiente configuración:
```json
{
@@ -88,11 +91,11 @@ A continuación, cree el archivo de configuración de Waffle en el directorio de
}
```
-Ejecute `yarn build`. Como resultado, el directorio `build` aparecerá con el contrato compilado de EtherSplitter en formato JSON.
+Ejecute `yarn build`. Como resultado, aparecerá el directorio `build` con el contrato EtherSplitter compilado en formato JSON.
-### Configuración de la prueba {#test-setup}
+## Configuración de la prueba {#test-setup}
-Para hacer pruebas con Waffle se tienen que utilizar los emparejadores de Chai y Mocha, por lo que necesita [añadirlos](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) a su proyecto. Actualice su archivo package.json y añada la línea de `test` en la parte de scripts:
+Probar con Waffle requiere el uso de los matchers de Chai y Mocha, por lo que necesita [añadirlos](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) a su proyecto. Actualice su archivo package.json y añada la entrada `test` en la parte de scripts:
```json
"scripts": {
@@ -101,11 +104,12 @@ Para hacer pruebas con Waffle se tienen que utilizar los emparejadores de Chai y
}
```
-Si quiere [ejecutar](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#running-tests) sus pruebas, simplemente ejecute `yarn test` .
+Si desea [ejecutar](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#running-tests) sus pruebas, simplemente ejecute `yarn test`.
## Pruebas {#testing}
-Seguidamente cree el directorio `test` y un nuevo archivo `test\EtherSplitter.test.ts`. Copie el fragmento de abajo y péguelo en nuestro archivo de prueba.
+Ahora cree el directorio `test` y el nuevo archivo `test\EtherSplitter.test.ts`.
+Copie el siguiente fragmento y péguelo en nuestro archivo de prueba.
```ts
import { expect, use } from "chai"
@@ -126,20 +130,21 @@ describe("Ether Splitter", () => {
])
})
- // add the tests here
+ // añada las pruebas aquí
})
```
-Unas breves aclaraciones antes de que empecemos. El `MockProvider` incluye una simulación de la cadena de bloques. También permite que las carteras simuladas funcionen para hacer la prueba del contrato EtherSplitter. Podemos obtener hasta diez carteras aplicando el método de `getWallet()` en el proveedor. En el ejemplo, obtendremos tres carteras para el emisor y dos receptores.
+Unas palabras antes de empezar.
+`MockProvider` viene con una versión de simulación de la cadena de bloques. También proporciona billeteras de simulación que nos servirán para probar el contrato EtherSplitter. Podemos obtener hasta diez billeteras llamando al método `getWallets()` en el proveedor. En el ejemplo, obtenemos tres billeteras: para el emisor y para dos receptores.
-A continuación, declaramos una variable llamada «splitter»: este es nuestro contrato simulado EtherSplitter. Se crea antes de la ejecución de una única prueba a través del método `deployContract`. Este método simula la implementación de un contrato desde la cartera pasado como el primer parámetro (en nuestro caso, la cartera del emisor). El segundo parámetro es el ABI y el código de bytes del contrato de prueba: aquí pasamos el archivo json o el contrato EtherSplitter compilado desde el directorio `build`. El tercer parámetro es una matriz con los argumentos del constructor del contrato, que en nuestro caso, son las dos direcciones de los receptores.
+A continuación, declaramos una variable llamada «splitter», que es nuestro contrato de simulación EtherSplitter. Se crea antes de cada ejecución de una única prueba mediante el método `deployContract`. Este método simula la implementación de un contrato desde la billetera pasada como primer parámetro (la billetera del emisor en nuestro caso). El segundo parámetro es la ABI y el bytecode del contrato probado. Allí pasamos el archivo json del contrato EtherSplitter compilado desde el directorio `build`. El tercer parámetro es un array con los argumentos del constructor del contrato, que en nuestro caso son las dos direcciones de los receptores.
-### ChangeBalances {#changebalances}
+## changeBalances {#changebalances}
-Primero, revisamos si el método dividido realmente cambia el saldo de las carteras de los receptores. Si dividimos 50 wei desde las cuentas de los emisores, esperaríamos que los saldos de ambos receptores aumentaran 25 wei. Usaremos el comparador `changeBalances` de Waffle:
+Primero, comprobaremos si el método `split` cambia realmente los saldos de las billeteras de los receptores. Si dividimos 50 wei de la cuenta del emisor, esperaríamos que los saldos de ambos receptores aumentaran en 25 wei. Usaremos el matcher `changeBalances` de Waffle:
```ts
-it("Changes accounts balances", async () => {
+it("Cambia los saldos de las cuentas", async () => {
await expect(() => splitter.split({ value: 50 })).to.changeBalances(
[receiver1, receiver2],
[25, 25]
@@ -147,10 +152,11 @@ it("Changes accounts balances", async () => {
})
```
-Como primer parámetro del emparejador, enviamos una matriz de carteras receptoras; y como segundo parámetro, una matriz de aumentos esperados en las cuentas correspondientes. Si queremos revisar el balance de una billetera en específico, también podemos usar el comparador `changeBalance`, que no requiere el envío de matrices como en el ejemplo anterior:
+Como primer parámetro del matcher, pasamos un array de las billeteras de los receptores y, como segundo, un array de los aumentos esperados en las cuentas correspondientes.
+Si quisiéramos comprobar el saldo de una billetera específica, también podríamos usar el matcher `changeBalance`, que no requiere pasar arrays, como en el siguiente ejemplo:
```ts
-it("Changes account balance", async () => {
+it("Cambia el saldo de la cuenta", async () => {
await expect(() => splitter.split({ value: 50 })).to.changeBalance(
receiver1,
25
@@ -158,42 +164,42 @@ it("Changes account balance", async () => {
})
```
-Tenga en cuenta que en ambos casos `changeBalance` y `changeBalances`, enviamos la función dividida como devolución de llamada, porque el emparejador necesita acceder al estado de saldos antes y después de la llamada.
+Tenga en cuenta que en ambos casos de `changeBalance` y `changeBalances` pasamos la función `split` como un callback porque el matcher necesita acceder al estado de los saldos antes y después de la llamada.
-A continuación, probaremos si el evento de transferencia se emitió después de cada transferencia de wei. Cambiaremos a otra máquina desde Waffle:
+A continuación, probaremos si el evento `Transfer` se emitió después de cada transferencia de wei. Pasaremos a otro matcher de Waffle:
-### Emit {#emit}
+## Emit {#emit}
```ts
-it("Emits event on the transfer to the first receiver", async () => {
+it("Emite un evento en la transferencia al primer receptor", async () => {
await expect(splitter.split({ value: 50 }))
.to.emit(splitter, "Transfer")
.withArgs(sender.address, receiver1.address, 25)
})
-it("Emits event on the transfer to the second receiver", async () => {
+it("Emite un evento en la transferencia al segundo receptor", async () => {
await expect(splitter.split({ value: 50 }))
.to.emit(splitter, "Transfer")
.withArgs(sender.address, receiver2.address, 25)
})
```
-El emparejador `emit` nos permite revisar si un contrato ha emitido un evento al recurrir a un método. Como parámetros del emparejador `emit`, proporcionamos el simulacro de contrato que predecimos para emitir el evento, junto al nombre de ese evento. En nuestro caso, el simulacro de contrato es `splitter` y el nombre del evento: `Transfer`. También podemos verificar los valores precisos de los argumentos con los que se emitió el evento: enviamos tantos argumentos al emparejador `withArgs` como lo espera nuestra declaración de evento. En el caso del contrato EtherSplitter, enviamos las direcciones del emisor y del receptor, junto a la cantidad de wei transferida.
+El matcher `emit` nos permite comprobar si un contrato emitió un evento al llamar a un método. Como parámetros para el matcher `emit`, proporcionamos el contrato de simulación que predecimos que emitirá el evento, junto con el nombre de ese evento. En nuestro caso, el contrato de simulación es `splitter` y el nombre del evento es `Transfer`. También podemos verificar los valores precisos de los argumentos con los que se emitió el evento: pasamos tantos argumentos al matcher `withArgs` como espera nuestra declaración de evento. En el caso del contrato EtherSplitter, pasamos las direcciones del emisor y del receptor junto con la cantidad de wei transferida.
-### revertedWith {#revertedwith}
+## revertedWith {#revertedwith}
-Como último ejemplo, comprobaremos si se revirtió la transacción en caso de número impar de wei. Usaremos el emparejador `revertedWith`:
+Como último ejemplo, comprobaremos si la transacción fue revertida en caso de una cantidad impar de wei. Usaremos el matcher `revertedWith`:
```ts
-it("Reverts when Vei amount uneven", async () => {
+it("Se revierte cuando la cantidad de wei es impar", async () => {
await expect(splitter.split({ value: 51 })).to.be.revertedWith(
- "Uneven wei amount not allowed"
+ "No se permite una cantidad impar de wei"
)
})
```
-Si la prueba sale bien, nos garantizará que se ha revertido la transacción. Sin embargo, también debe haber una coincidencia exacta entre los mensajes que hemos enviado en la declaración `require` y el mensaje que esperamos en `revertedWith`. Si regresamos al código del contrato EtherSplitter, en la declaración `require` para la cantidad de wei, proporcionamos el mensaje: «no se permite una cantidad impar de wei». Esto coincide con el mensaje que esperamos en nuestra prueba. Si no coinciden, será que la prueba ha salido mal.
+La prueba, si se supera, nos asegurará que la transacción fue revertida. Sin embargo, también debe haber una coincidencia exacta entre los mensajes que pasamos en la declaración `require` y el mensaje que esperamos en `revertedWith`. Si volvemos al código del contrato EtherSplitter, en la declaración `require` para la cantidad de wei, proporcionamos el mensaje: «No se permite una cantidad impar de wei». Esto coincide con el mensaje que esperamos en nuestra prueba. Si no fueran iguales, la prueba fallaría.
## ¡Felicitaciones! {#congratulations}
-¡Acabas de dar tu primer gran paso para probar los contratos inteligentes con Waffle!
+¡Ha dado su primer gran paso hacia la prueba de contratos inteligentes con Waffle!
From 558d149b0c0e1e853f101fe475c33b3a5ba7339c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:06 -0300
Subject: [PATCH 163/589] update(i18n):
public/content/translations/es/developers/docs/ides/index.md
---
.../es/developers/docs/ides/index.md | 49 +++++++++----------
1 file changed, 24 insertions(+), 25 deletions(-)
diff --git a/public/content/translations/es/developers/docs/ides/index.md b/public/content/translations/es/developers/docs/ides/index.md
index 4dcf8fba522..4b8d5b3d8f0 100644
--- a/public/content/translations/es/developers/docs/ides/index.md
+++ b/public/content/translations/es/developers/docs/ides/index.md
@@ -1,65 +1,64 @@
---
title: Entornos de desarrollo integrados (IDE)
-description:
+description: Conozca más a fondo los IDE basados en la web y de escritorio para el desarrollo en Ethereum, incluidos Remix, VS Code y plugins populares.
lang: es
---
-Cuando se trata de configurar un [ IDE (Entorno de Desarrollo Integrado)](https://wikipedia.org/wiki/Integrated_development_environment), programar aplicaciones en Ethereum es similar a programar cualquier otro proyecto de software. Hay muchas opciones para elegir, por eso, al final del día, elija el IDE o editor de código que mejor se ajuste a sus preferencias. Probablemente la mejor opción de IDE para su desarrollo de Ethereum es el IDE que ya usa para el desarrollo tradicional de software.
+Cuando se trata de configurar un [entorno de desarrollo integrado (IDE)](https://wikipedia.org/wiki/Integrated_development_environment), programar aplicaciones en Ethereum es similar a programar cualquier otro proyecto de software. Hay muchas opciones para elegir, por eso, al final del día, elija el IDE o editor de código que mejor se ajuste a sus preferencias. Probablemente la mejor opción de IDE para su desarrollo de Ethereum es el IDE que ya usa para el desarrollo tradicional de software.
-## IDE basados en la Web {#web-based-ides}
+## IDE basados en la web {#web-based-ides}
-Si te planteas jugar un poco con el código antes de [configurar un entorno de desarrollo local](/developers/local-environment/), estas aplicaciones web están diseñadas a medida para el desarrollo de contratos inteligentes de Ethereum.
+Si desea experimentar con el código antes de [configurar un entorno de desarrollo local](/developers/local-environment/), estas aplicaciones web están diseñadas a medida para el desarrollo de contratos inteligentes de Ethereum.
-**[Remix:](https://remix.ethereum.org/)** **_IDE basado en la Web con análisis estático integrado y una máquina virtual de prueba de cadena de bloques_**
+**[Remix](https://remix.ethereum.org/)** - **_IDE basado en la web con análisis estático integrado y una máquina virtual de cadena de bloques de prueba_**
-- [Documentos](https://remix-ide.readthedocs.io/en/latest/#)
+- [Documentación](https://remix-ide.readthedocs.io/en/latest/#)
- [Gitter](https://gitter.im/ethereum/remix)
-**[CadenaIDE:](https://chainide.com/)** **_Un IDE multicadena basado en la nube_**
+**[ChainIDE](https://chainide.com/)** - **_Un IDE multicadena basado en la nube_**
-- [Documentos](https://chainide.gitbook.io/chainide-english-1/)
+- [Documentación](https://chainide.gitbook.io/chainide-english-1/)
- [Foro de ayuda](https://forum.chainide.com/)
-**[Replit (Solidity Starter - Beta):](https://replit.com/@replit/Solidity-starter-beta)** **_Entorno de desarrollo personalizable para Ethereum con recarga en caliente, verificación de errores y soporte de priemra clase para redes de prueba _**
+**[Replit (Solidity Starter - Beta)](https://replit.com/@replit/Solidity-starter-beta)** - **_Un entorno de desarrollo personalizable para Ethereum con recarga en caliente, comprobación de errores y soporte de primera clase para redes de prueba_**
-- [Documentos](https://docs.replit.com/)
+- [Documentación](https://docs.replit.com/)
-**[Tenderly Sandbox:](https://sandbox.tenderly.co/)** **_Un entorno de creación rápida de prototipos donde puede escribir, ejecutar y depurar contratos inteligentes en el navegador usando Solidity y JavaScript_**
+**[Tenderly Sandbox](https://sandbox.tenderly.co/)** - **_Un entorno de prototipado rápido donde puede escribir, ejecutar y depurar contratos inteligentes en el navegador utilizando Solidity y JavaScript_**
-**[EthFiddle:](https://ethfiddle.com/)** **_IDE basado en la Web que le permite escribir, compilar y depurar su contrato inteligente_**
+**[EthFiddle](https://ethfiddle.com/)** - **_IDE basado en la web que le permite escribir, compilar y depurar su contrato inteligente_**
- [Gitter](https://gitter.im/loomnetwork/ethfiddle)
-## IDEs de escritorio {#desktop-ides}
+## IDE de escritorio {#desktop-ides}
-La mayoría de los IDE establecidos han desarrollado complementos para mejorar la experiencia de desarrollo de Ethereum. Como mínimo, proporcionan resaltado de sintaxis para [lenguajes de contratos inteligentes](/developers/docs/smart-contracts/languages/).
+La mayoría de los IDE establecidos han desarrollado complementos para mejorar la experiencia de desarrollo de Ethereum. Como mínimo, proporcionan resaltado de sintaxis para los [lenguajes de contratos inteligentes](/developers/docs/smart-contracts/languages/).
-**Visual Studio Code:** **_IDE multiplataforma profesional con soporte oficial de Ethereum_ **
+**Visual Studio Code -** **_IDE profesional multiplataforma con soporte oficial de Ethereum_**
- [Visual Studio Code](https://code.visualstudio.com/)
-- [Azure Blockchain Workbench](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/microsoft-azure-blockchain.azure-blockchain-workbench?tab=Overview)
- [Muestras de código](https://github.com/Azure-Samples/blockchain/blob/master/blockchain-workbench/application-and-smart-contract-samples/readme.md)
- [GitHub](https://github.com/microsoft/vscode)
-**IDE JetBrains (IntelliJ IDEA, etc.) ** **_Herramientas esenciales para desarrolladores y equipos de software_**
+**IDE JetBrains (IntelliJ IDEA, etc.) -** **_Herramientas esenciales para desarrolladores de software y equipos_**
- [JetBrains](https://www.jetbrains.com/)
- [GitHub](https://github.com/JetBrains)
- [IntelliJ Solidity](https://github.com/intellij-solidity/intellij-solidity/)
-**Remix Desktop:** **_Experimente IDE de Remix en su máquina local_**
+**Remix Desktop -** **_Experimente Remix IDE en su máquina local_**
- [Descargar](https://github.com/ethereum/remix-desktop/releases)
- [GitHub](https://github.com/ethereum/remix-desktop)
-## Complementos y extensiones {#plugins-extensions}
+## Plugins y extensiones {#plugins-extensions}
-- [solidity:](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) Lenguaje Solidity de Ethereum para Visual Studio Code
-- [Solidity + Hardhat para VS Code:](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity) Soporte para Solidity y Hardhat por el equipo de Hardhat
-- [Prettier Solidity:](https://github.com/prettier-solidity/prettier-plugin-solidity) Formateador de código con Prettier
+- [solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) - Lenguaje Ethereum Solidity para Visual Studio Code
+- [Solidity + Hardhat for VS Code](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity) - Soporte para Solidity y Hardhat por el equipo de Hardhat
+- [Prettier Solidity](https://github.com/prettier-solidity/prettier-plugin-solidity) - Formateador de código que usa prettier
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [IDE de Ethereum:](https://www.alchemy.com/list-of/web3-ides-on-ethereum)_ Lista de Alchemy de IDE de Ethereum_
+- [IDE de Ethereum](https://www.alchemy.com/list-of/web3-ides-on-ethereum) _- Lista de Alchemy de IDE de Ethereum_
-_¿Conoce algún recurso en la comunidad que le ayudara? ¡Edite esta página y añádala!_
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
From 74a16f5e1c5c284b412408d7fa5e7d0ae0a769dd Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:08 -0300
Subject: [PATCH 164/589] update(i18n):
public/content/translations/es/roadmap/verkle-trees/index.md
---
.../es/roadmap/verkle-trees/index.md | 44 +++++++++----------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/public/content/translations/es/roadmap/verkle-trees/index.md b/public/content/translations/es/roadmap/verkle-trees/index.md
index f841aaecb49..af09647fff4 100644
--- a/public/content/translations/es/roadmap/verkle-trees/index.md
+++ b/public/content/translations/es/roadmap/verkle-trees/index.md
@@ -7,15 +7,15 @@ summaryPoints:
- Descubra por qué los árboles de Verkle son una actualización útil para Ethereum
---
-# Árboles Verkle {#verkle-trees}
+# Árboles de Verkle {#verkle-trees}
Los árboles de Verkle (una palabra combinada de «Vector commitment» o compromiso vectorial y «Merkle Trees») son una estructura de datos que se puede utilizar para actualizar los nodos de Ethereum y así dejen de almacenar grandes cantidades de datos de estado sin perder la capacidad de validar bloques.
## Sin estado {#statelessness}
-Los árboles de Verkle son un paso crítico en el rumbo hacia los clientes de Ethereum sin estado. Los clientes sin estado son aquellos que no tienen que almacenar toda la base de datos estatal para validar los bloques entrantes. En lugar de usar su propia copia local del estado de Ethereum para verificar los bloques, los clientes sin estado usan un «testigo» de los datos del estado que llegan con el bloque. Un testigo es una colección de piezas individuales de los datos estatales que se requieren para ejecutar un conjunto particular de transacciones, y una prueba criptográfica de que el testigo es realmente parte de los datos completos. El testigo se utiliza _en lugar de_ de la base de datos de estado. Para que esto funcione, los testigos deben ser muy pequeños, para que puedan transmitirse de forma segura a través de la red a tiempo para que los validadores los procesen en un plazo de 12 segundos. La estructura de datos del estado actual no es adecuada, porque los testigos son demasiado grandes. Los árboles de Verkle resuelven el problema al habilitar pequeños testigos, eliminando una de las principales barreras de clientes sin estado.
+Los árboles de Verkle son un paso crítico en el rumbo hacia los clientes de Ethereum sin estado. Los clientes sin estado son aquellos que no tienen que almacenar toda la base de datos estatal para validar los bloques entrantes. En lugar de usar su propia copia local del estado de Ethereum para verificar los bloques, los clientes sin estado usan un «testigo» de los datos del estado que llegan con el bloque. Un testigo es una colección de piezas individuales de los datos de estado que se requieren para ejecutar un conjunto particular de transacciones, y una prueba criptográfica de que el testigo es realmente parte de los datos completos. El testigo se utiliza _en lugar_ de la base de datos de estado. Para que esto funcione, los testigos deben ser muy pequeños, para que puedan transmitirse de forma segura a través de la red a tiempo para que los validadores los procesen en un plazo de 12 segundos. La estructura de datos del estado actual no es adecuada, porque los testigos son demasiado grandes. Los árboles de Verkle resuelven el problema al habilitar pequeños testigos, eliminando una de las principales barreras de clientes sin estado.
-
+
Actualmente, los clientes de Ethereum utilizan una estructura de datos conocida como «Patricia Merkle Trie» para almacenar sus datos de estado. La información sobre las cuentas individuales se almacena como hojas en el trie y los pares de hojas se agrupan repetidamente hasta que solo queda un hash. A este hash final se le conoce como la «raíz». Para verificar los bloques, los clientes de Ethereum ejecutan todas las transacciones en un bloque y actualizan su estado local. El bloque se considera válido si la raíz del árbol local es idéntica a la proporcionada por el proponente del bloque, porque cualquier diferencia en el cálculo realizado por el proponente del bloque y el nodo de validación haría que el hash raíz fuera completamente diferente. El problema con esto es que la verificación de la cadena de bloques requiere que cada cliente almacene todo el estado trie para el bloque de cabeza y varios bloques históricos (el valor predeterminado en Geth es mantener los datos de estado para 128 bloques detrás de la cabeza). Esto requiere que los clientes tengan acceso a una gran cantidad de espacio en disco, lo que es una barrera para ejecutar nodos completos en hardware barato y de bajo consumo. Una solución a esto es actualizar el trie de estado a una estructura más eficiente (árbol de Verkle) que se pueda resumir utilizando un pequeño «testigo» de los datos que se pueden compartir en lugar de los datos de estado completos. El cambio de formato de los datos del estado a un árbol de Verkle es un trampolín para pasar a los clientes sin estado.
@@ -23,7 +23,7 @@ Actualmente, los clientes de Ethereum utilizan una estructura de datos conocida
## ¿Qué es un testigo y por qué lo necesitamos? {#what-is-a-witness}
-Verificar un bloque significa volver a ejecutar las transacciones contenidas en el bloque, aplicar los cambios a la prueba de estado trie de Ethereum y calcular el nuevo hash raíz. Un bloque verificado es aquel cuyo hash raíz de estado calculado es el mismo que el proporcionado con el bloque (porque esto significa que el proponente de bloques realmente hizo el cálculo que dice que hizo). En los clientes de Ethereum de hoy en día, la actualización del estado requiere acceso a todo el estado trie, que es una gran estructura de datos que debe almacenarse localmente. Un testigo solo contiene los fragmentos de los datos de estado que se requieren para ejecutar las transacciones en el bloque. Un validador solo puede usar esos fragmentos para verificar que el proponente de bloques haya ejecutado las transacciones de bloque y actualizado el estado correctamente. Sin embargo, esto significa que el testigo debe transferirse entre pares en la red Ethereum lo suficientemente rápido como para que cada nodo lo reciba y procese de forma segura dentro de una ranura de 12 segundos. Si el testigo es demasiado grande, algunos nodos podrían tardar demasiado en descargarlo y mantenerlo sincronizado con la cadena. Esta es una fuerza de centralización porque significa que solo los nodos con conexiones rápidas a Internet pueden participar en la validación de bloques. Con los árboles de Verkle no es necesario almacenar el estado en su disco duro; _solo_ necesita comprobar que un bloque esté contenido dentro del propio bloque. Por desgracia, los testigos que se pueden producir a partir de los tries de Merkle son demasiado grandes para apoyar a los clientes sin estado.
+Verificar un bloque significa volver a ejecutar las transacciones contenidas en el bloque, aplicar los cambios a la prueba de estado trie de Ethereum y calcular el nuevo hash raíz. Un bloque verificado es aquel cuyo hash raíz de estado calculado es el mismo que el proporcionado con el bloque (porque esto significa que el proponente de bloques realmente hizo el cálculo que dice que hizo). En los clientes de Ethereum de hoy en día, la actualización del estado requiere acceso a todo el estado trie, que es una gran estructura de datos que debe almacenarse localmente. Un testigo solo contiene los fragmentos de los datos de estado que se requieren para ejecutar las transacciones en el bloque. Un validador solo puede usar esos fragmentos para verificar que el proponente de bloques haya ejecutado las transacciones de bloque y actualizado el estado correctamente. Sin embargo, esto significa que el testigo debe transferirse entre pares en la red Ethereum lo suficientemente rápido como para que cada nodo lo reciba y procese de forma segura dentro de una ranura de 12 segundos. Si el testigo es demasiado grande, algunos nodos podrían tardar demasiado en descargarlo y mantenerlo sincronizado con la cadena. Esta es una fuerza de centralización porque significa que solo los nodos con conexiones rápidas a Internet pueden participar en la validación de bloques. Con los árboles de Verkle no es necesario tener el estado almacenado en su disco duro; _todo_ lo que necesita para verificar un bloque está contenido dentro del propio bloque. Por desgracia, los testigos que se pueden producir a partir de los tries de Merkle son demasiado grandes para apoyar a los clientes sin estado.
## ¿Por qué los árboles de Verkle permiten testigos más pequeños? {#why-do-verkle-trees-enable-smaller-witnesses}
@@ -31,7 +31,7 @@ La estructura de un Merkle Trie hace que los tamaños de los testigos sean muy g
Bajo el esquema de compromiso polinómico, los testigos tienen tamaños manejables que se pueden transferir fácilmente en la red entre pares. Esto permite a los clientes verificar los cambios de estado en cada bloque con una cantidad mínima de datos.
-
+
El tamaño del testigo varía dependiendo del número de hojas que incluya. Suponiendo que el testigo cubre 1.000 hojas, un testigo para un trie de Merkle sería de aproximadamente 3,5 Mb (suponiendo 7 niveles para el trie). Un testigo de los mismos datos en un árbol de Verkle (suponiendo 4 niveles para el árbol) sería de unos 150 kB - **aproximadamente 23 veces más pequeño**. Esta reducción en el tamaño de los testigos permitirá que los testigos clientes sin estado sean aceptablemente pequeños. Los testigos polinómicos van de 0,128 a 1 kB dependiendo del compromiso polinómico específico que se utilice.
@@ -39,28 +39,28 @@ El tamaño del testigo varía dependiendo del número de hojas que incluya. Supo
## ¿Cuál es la estructura de un árbol de Verkle? {#what-is-the-structure-of-a-verkle-tree}
-Los árboles de Verkle son `(llave, valor)` pares donde las llaves son elementos de 32 bytes compuestos por un _tallo de 31 bytes_ y un solo byte _sufijo_. Estas claves están organizadas en nodos de _extensión_ y nodos _internos_. Los nodos de extensión representan una sola raíz para 256 hijos con diferentes sufijos. Los nodos internos también tienen 256 hijos, pero pueden ser otros nodos de extensión. La principal diferencia entre el árbol Verkle y la estructura del árbol Merkle es que el árbol Verkle es mucho más plano, lo que significa que hay menos nodos intermedios que conectan una hoja con la raíz y, por lo tanto, menos datos necesarios para generar una prueba.
+Los árboles de Verkle son pares `(clave,valor)` donde las claves son elementos de 32 bytes compuestos por un _tallo_ de 31 bytes y un _sufijo_ de un solo byte. Estas claves se organizan en nodos de _extensión_ y nodos _internos_. Los nodos de extensión representan una sola raíz para 256 hijos con diferentes sufijos. Los nodos internos también tienen 256 hijos, pero pueden ser otros nodos de extensión. La principal diferencia entre el árbol Verkle y la estructura del árbol Merkle es que el árbol Verkle es mucho más plano, lo que significa que hay menos nodos intermedios que conectan una hoja con la raíz y, por lo tanto, menos datos necesarios para generar una prueba.

-[Bibliografía para profundizar sobre la estructura de los árboles Verkle.](https://blog.ethereum.org/2021/12/02/verkle-tree-structure)
+[Lea más sobre la estructura de los árboles de Verkle](https://blog.ethereum.org/2021/12/02/verkle-tree-structure)
## Progreso actual {#current-progress}
Las redes de prueba del árbol de Verkle ya están en funcionamiento, pero todavía se requieren sustanciales actualizaciones pendientes para los clientes en apoyo de los árboles de Verkle. Puede ayudar a acelerar el progreso implementando contratos en las redes de prueba o ejecutando clientes de la red de prueba.
-[Vea a Guillaume Ballet explicar la red de prueba Condrieu Verkle](https://www.youtube.com/watch?v=cPLHFBeC0Vg) (tenga en cuenta que la red de prueba Condrieu era de prueba de trabajo y ahora se ha sustituido por la red de prueba Verkle Gen Devnet 6).
-
-## Más información {#further-reading}
-
-- [Árboles Verkle para la falta de estado](https://verkle.info/)
-- [Dankrad Feist explica los árboles Verkle en PEEPanEIP](https://www.youtube.com/watch?v=RGJOQHzg3UQ)
-- [Árboles Verkle para el resto de nosotros](https://web.archive.org/web/20250124132255/https://research.2077.xyz/verkle-trees)
-- [Anatomía de una prueba Verkle](https://ihagopian.com/posts/anatomy-of-a-verkle-proof)
-- [Guillaume Ballet explica los árboles Verkle en ETHGlobal](https://www.youtube.com/watch?v=f7bEtX3Z57o)
-- [«Cómo los árboles de Verkle hacen que Ethereum sean claro y directo» por Guillaume Ballet en Devcon 6](https://www.youtube.com/watch?v=Q7rStTKwuYs)
-- [Piper Merriam sobre clientes sin estado en ETHDenver 2020](https://www.youtube.com/watch?v=0yiZJNciIJ4)
-- [Dankrad Fiest explica los árboles de Verkle y la falta de estado en el podcast Zero Knowledge](https://zeroknowledge.fm/podcast/202/)
-- [Vitalik Buterin comenta los árboles de Verkle](https://vitalik.eth.limo/general/2021/06/18/verkle.html)
-- [Dankrad Feist habla de los árboles de Verkle](https://dankradfeist.de/ethereum/2021/06/18/verkle-trie-for-eth1.html)
-- [Documentación EIP de los árboles de Verkle](https://notes.ethereum.org/@vbuterin/verkle_tree_eip#Illustration)
+[Vea a Guillaume Ballet explicar la red de prueba Condrieu Verkle](https://www.youtube.com/watch?v=cPLHFBeC0Vg) (tenga en cuenta que la red de prueba Condrieu era de prueba de trabajo y que ahora ha sido sustituida por la red de prueba Verkle Gen Devnet 6).
+
+## Lecturas adicionales {#further-reading}
+
+- [Árboles de Verkle para la falta de estado](https://verkle.info/)
+- [Dankrad Feist explica los árboles de Verkle en PEEPanEIP](https://www.youtube.com/watch?v=RGJOQHzg3UQ)
+- [Árboles de Verkle para el resto de los mortales](https://web.archive.org/web/20250124132255/https://research.2077.xyz/verkle-trees)
+- [Anatomía de una prueba de Verkle](https://ihagopian.com/posts/anatomy-of-a-verkle-proof)
+- [Guillaume Ballet explica los árboles de Verkle en ETHGlobal](https://www.youtube.com/watch?v=f7bEtX3Z57o)
+- ["Cómo los árboles de Verkle hacen que Ethereum sea eficiente y potente" por Guillaume Ballet en Devcon 6](https://www.youtube.com/watch?v=Q7rStTKwuYs)
+- [Piper Merriam sobre los clientes sin estado desde ETHDenver 2020](https://www.youtube.com/watch?v=0yiZJNciIJ4)
+- [Dankrad Fiest explica los árboles de Verkle y la falta de estado en el pódcast Zero Knowledge](https://zeroknowledge.fm/podcast/202/)
+- [Vitalik Buterin sobre los árboles de Verkle](https://vitalik.eth.limo/general/2021/06/18/verkle.html)
+- [Dankrad Feist sobre los árboles de Verkle](https://dankradfeist.de/ethereum/2021/06/18/verkle-trie-for-eth1.html)
+- [Documentación de la EIP del árbol de Verkle](https://notes.ethereum.org/@vbuterin/verkle_tree_eip#Illustration)
From 03ffb25fa43fc4ef20a6ad94275412c450d03db6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:10 -0300
Subject: [PATCH 165/589] update(i18n):
public/content/translations/es/developers/docs/dapps/index.md
---
.../es/developers/docs/dapps/index.md | 80 +++++++++----------
1 file changed, 40 insertions(+), 40 deletions(-)
diff --git a/public/content/translations/es/developers/docs/dapps/index.md b/public/content/translations/es/developers/docs/dapps/index.md
index 899dd1970b5..1fd6667be87 100644
--- a/public/content/translations/es/developers/docs/dapps/index.md
+++ b/public/content/translations/es/developers/docs/dapps/index.md
@@ -1,96 +1,96 @@
---
-title: Introducción a las DApps
+title: Introducción técnica a las DApps
description:
lang: es
---
-Una aplicación descentralizada (DApp) es una aplicación diseñada en una red descentralizada, que combina un [contrato inteligente](/developers/docs/smart-contracts/) y una interfaz de usuario frontal. Nota: En Ethereum, los contratos inteligentes son accesibles y transparentes (como las API abiertas), para que su DApp pueda incluir un contrato inteligente que haya escrito otra persona.
+Una aplicación descentralizada (dapp) es una aplicación construida sobre una red descentralizada que combina un [contrato inteligente](/developers/docs/smart-contracts/) y una interfaz de usuario frontend. Nota: En Ethereum, los contratos inteligentes son accesibles y transparentes (como las API abiertas), para que su DApp pueda incluir un contrato inteligente que haya escrito otra persona.
## Requisitos previos {#prerequisites}
-Antes de aprender acerca de las DApps, debería conocer los [conceptos básicos de la cadena de bloques](/developers/docs/intro-to-ethereum/), así como leer acerca de la red Ethereum y de como está descentralizada.
+Antes de aprender sobre las dapps, debe repasar los [conceptos básicos de la blockchain](/developers/docs/intro-to-ethereum/) y leer sobre la red Ethereum y cómo está descentralizada.
-## Definición de una DApp {#definition-of-a-dapp}
+## Definición de una dapp {#definition-of-a-dapp}
Una DApp dispone de un código backend ejecutándose en una red descentralizada punto a punto. Compare esto con una aplicación, en la que el código backend se ejecuta en servidores centralizados.
-Una DApp puede tener un código frontend y una interfaz de usuario escrita en cualquier lenguaje (al igual que una aplicación), que puede hacer llamadas a su backend. Además, su frontend se puede alojar en un almacenamiento descentralizado como [IPFS](https://ipfs.io/).
+Una DApp puede tener un código frontend y una interfaz de usuario escrita en cualquier lenguaje (al igual que una aplicación), que puede hacer llamadas a su backend. Además, su frontend puede alojarse en un almacenamiento descentralizado como [IPFS](https://ipfs.io/).
-- **Descentralizado**: Las DApps operan en Ethereum, una plataforma pública descentralizada abierta en la que ninguna persona ni ningún grupo tiene el control
-- **Deterministas**, es decir, realizan la misma función independientemente del entorno en el que se ejecuten
-- **Turing complete**: Las DApps permiten realizar cualquier acción dada la cantidad de recursos requeridos
-- **Aisladas**: Las DApps se ejecutan en un entorno virtual conocido como Máquina Virtual de Ethereum; por tanto, si el contrato inteligente contiene un gran error, este no obstaculizará el funcionamiento normal de la red de cadenas de bloques
+- **Descentralizadas**: las dapps operan en Ethereum, una plataforma pública, abierta y descentralizada en la que ninguna persona o grupo tiene el control.
+- **Deterministas**: las dapps realizan la misma función independientemente del entorno en el que se ejecuten.
+- **Turing complete**: las dapps pueden realizar cualquier acción si se les proporcionan los recursos necesarios.
+- **Aisladas**: las dapps se ejecutan en un entorno virtual conocido como la máquina virtual de ethereum, de modo que si el contrato inteligente tiene un error, no obstaculizará el funcionamiento normal de la red de la blockchain.
-### Más información sobre los contratos inteligentes {#on-smart-contracts}
+### Sobre los contratos inteligentes {#on-smart-contracts}
-Para presentar las DApps, necesitamos hablar de los contratos inteligentes, un backend de una DApp, a falta de un mejor término. Si desea obtener un resumen detallado, visite nuestra sección sobre [contratos inteligentes](/developers/docs/smart-contracts/).
+Para presentar las DApps, necesitamos hablar de los contratos inteligentes, un backend de una DApp, a falta de un mejor término. Para una descripción detallada, diríjase a nuestra sección sobre [contratos inteligentes](/developers/docs/smart-contracts/).
Un contrato inteligente es un código que reside en la blockchain de Ethereum y se ejecuta exactamente como ha sido programado. Una vez que estos se implementan en la red, ya no pueden modificarse. Las DApps pueden ser descentralizadas debido a que están controladas por la lógica escrita dentro del contrato, no por una persona o compañía. Esto también significa que necesitas diseñar tus contratos cuidadosamente y probarlos minuciosamente.
-## Ventajas del desarrollo de las DApps {#benefits-of-dapp-development}
+## Ventajas del desarrollo de dapps {#benefits-of-dapp-development}
-- **Tiempo de inactividad nulo**: una vez que el contrato inteligente esté implementado en la cadena de bloques, la red en su conjunto siempre estará a disposición de los clientes que intentan interactuar con el contrato. Por lo tanto, los actores maliciosos no pueden lanzar ataques de denegación de servicio dirigidos hacia las DApps individuales.
-- **Privacidad**: No necesita proporcionar su identidad del mundo real para implementar una DApp o interactuar con ella.
-- **Resistencia a la censura**: Ninguna entidad en la red puede bloquear a los usuarios a la hora de enviar transacciones, implementar DApps o leer los datos desde la cadena de bloques.
-- **Integridad completa de los datos**: Los datos almacenados en la blockchain son inmutables e indisputables, gracias a las primitivas criptográficas. Los actores maliciosos no pueden falsificar transacciones u otros datos que ya se hayan hecho públicos.
-- **Computación sin confianza/comportamiento verificable**: los contratos inteligentes se pueden analizar y se garantiza que se ejecutarán de manera predecible, sin la necesidad de confiar en una autoridad central. Esto no se aplica en los modelos tradicionales; por ejemplo, cuando utilizamos sistemas bancarios en línea, tenemos que confiar en que las instituciones bancarias no abusarán de nuestros datos financieros, manipularán nuestros registros o nos atacarán.
+- **Cero tiempo de inactividad**: una vez que el contrato inteligente se despliega en la blockchain, la red en su conjunto siempre podrá atender a los clientes que busquen interactuar con el contrato. Por lo tanto, los actores maliciosos no pueden lanzar ataques de denegación de servicio dirigidos hacia las DApps individuales.
+- **Privacidad**: no necesita proporcionar una identidad del mundo real para desplegar una dapp o interactuar con ella.
+- **Resistencia a la censura**: ninguna entidad de la red puede impedir que los usuarios envíen transacciones, desplieguen dapps o lean datos de la blockchain.
+- **Integridad total de los datos**: los datos almacenados en la cadena de bloques son inmutables e indiscutibles gracias a las primitivas criptográficas. Los actores maliciosos no pueden falsificar transacciones u otros datos que ya se hayan hecho públicos.
+- **Computación sin confianza/comportamiento verificable**: los contratos inteligentes pueden analizarse y se garantiza que se ejecutarán de forma predecible, sin necesidad de confiar en una autoridad central. Esto no es así en los modelos tradicionales; por ejemplo, cuando usamos sistemas de banca en línea, debemos confiar en que las instituciones financieras no harán un uso indebido de nuestros datos financieros, no manipularán los registros ni serán hackeadas.
-## Desventajas del desarrollo de las DApps {#drawbacks-of-dapp-development}
+## Inconvenientes del desarrollo de dapps {#drawbacks-of-dapp-development}
-- **Mantenimiento**: Las DApps puede ser más difíciles de mantener, ya que el código y los datos publicados en la cadena de bloques son más difíciles a modificar. A los desarrolladores les resulta complicado realizar actualizaciones de sus DApps (o de los datos subyacentes almacenados por una DApp) una vez que se implementan, incluso si se identifican errores o riesgos de seguridad en una versión anterior.
-- **Sobrecarga de trabajo**: existe una enorme sobrecarga de trabajo y resulta muy complicado escalarla. Para conseguir el nivel de seguridad, de integridad, de transparencia y de fiabilidad al que Ethereum aspira, cada nodo ejecuta y almacena cada transacción. Además de esto, el consenso de prueba de participación también lleva tiempo.
-- **Congestión en la red**: Cuando una DApp usa demasiados recursos computacionales, se realiza una copia de seguridad de toda la red. Actualmente, la red solamente es capaz de procesar alrededor de 10 transacciones por segundo; si las transacciones se están enviando con mayor velocidad, el conjunto de transacciones no confirmadas puede aumentar rápidamente.
-- **Experiencia de usuario**: puede resultar más difícil diseñar experiencias fáciles de usar porque al usuario final promedio podría resultarle demasiado complicado configurar una pila de herramientas necesarias para interactuar con la cadena de bloques de una manera verdaderamente segura.
-- **Centralización**: las soluciones fáciles de usar para los usuarios y desarrolladores instaladas sobre la capa base de Ethereum podrían terminar pareciendo servicios centralizados de todos modos. Por ejemplo, dichos servicios permiten almacenar claves u otra información confidencial en el servidor, estar a disposición de la interfaz de usuario mediante el uso de un servidor centralizado o ejecutar una lógica comercial importante en un servidor centralizado antes de escribirlo en la cadena de bloques. La centralización elimina muchas (si no todas) las ventajas de la cadena de bloques frente al modelo tradicional.
+- **Mantenimiento**: las dapps pueden ser más difíciles de mantener porque el código y los datos publicados en la cadena de bloques son más difíciles de modificar. A los desarrolladores les resulta complicado realizar actualizaciones de sus DApps (o de los datos subyacentes almacenados por una DApp) una vez que se implementan, incluso si se identifican errores o riesgos de seguridad en una versión anterior.
+- **Sobrecarga de rendimiento**: hay una enorme sobrecarga de rendimiento y el escalado es realmente difícil. Para conseguir el nivel de seguridad, de integridad, de transparencia y de fiabilidad al que Ethereum aspira, cada nodo ejecuta y almacena cada transacción. Además de esto, el consenso de prueba de participación también lleva tiempo.
+- **Congestión de la red**: cuando una dapp utiliza demasiados recursos computacionales, toda la red se congestiona. Actualmente, la red solo puede procesar entre 10 y 15 transacciones por segundo; si las transacciones se envían más rápido que eso, el grupo de transacciones sin confirmar puede crecer rápidamente.
+- **Experiencia de usuario**: puede ser más difícil diseñar experiencias fáciles de usar porque al usuario final medio podría resultarle demasiado difícil configurar la pila de herramientas necesaria para interactuar con la cadena de bloques de una forma realmente segura.
+- **Centralización**: las soluciones fáciles de usar para el usuario y el desarrollador, creadas sobre la capa base de Ethereum, podrían terminar pareciendo servicios centralizados de todos modos. Por ejemplo, dichos servicios permiten almacenar claves u otra información confidencial en el servidor, estar a disposición de la interfaz de usuario mediante el uso de un servidor centralizado o ejecutar una lógica comercial importante en un servidor centralizado antes de escribirlo en la cadena de bloques. La centralización elimina muchas (si no todas) las ventajas de la cadena de bloques frente al modelo tradicional.
-## ¿Es usted una persona que aprende de manera visual? {#visual-learner}
+## ¿Retiene usted mejor las cosas cuando las ve? {#visual-learner}
-## Herramientas para crear DApps {#dapp-tools}
+## Herramientas para crear dapps {#dapp-tools}
-**Scaffold-ETH _: un experimento rápido con Solidity mediante el uso de una interfaz de usuario que se adapta a su contrato inteligente._**
+**Scaffold-ETH**: _experimente rápidamente con Solidity utilizando un frontend que se adapta a su contrato inteligente._
- [GitHub](https://github.com/scaffold-eth/scaffold-eth-2)
-- [Ejemplo de DApp](https://punkwallet.io/)
+- [Ejemplo de dapp](https://punkwallet.io/)
-**Crear una aplicación Ethereum_: crear aplicaciones Ethereum con un comando. _**
+**Create Eth App**: _cree aplicaciones basadas en Ethereum con un solo comando._
- [GitHub](https://github.com/paulrberg/create-eth-app)
-**One Click Dapp _: Herramienta FOSS para generar interfaces de dapp a partir de una [ABI](/glossary/#abi)._**
+**One Click Dapp**: _herramienta FOSS para generar frontends de dapps a partir de una [ABI](/glossary/#abi)._
- [oneclickdapp.com](https://oneclickdapp.com)
- [GitHub](https://github.com/oneclickdapp/oneclickdapp-v1)
-**Etherflow_: herramienta FOSS para que los desarrolladores de Ethereum prueben sus nodos, así como para componer & y depurar las llamadas RPC desde el navegador._|**
+**Etherflow**: _herramienta FOSS para que los desarrolladores de Ethereum prueben su nodo, y compongan y depuren llamadas RPC desde el navegador._
- [etherflow.quiknode.io](https://etherflow.quiknode.io/)
- [GitHub](https://github.com/abunsen/etherflow)
-**web3 _- Kits de desarrollo de software (o SDK) en todos los idiomas, contratos inteligentes, herramientas e infraestructuras para desarrolladores de Web3._**
+**thirdweb**: _SDK en todos los idiomas, contratos inteligentes, herramientas e infraestructura para el desarrollo de web3._
- [Página de inicio](https://thirdweb.com/)
- [Documentación](https://portal.thirdweb.com/)
- [GitHub](https://github.com/thirdweb-dev/)
-**Crossmint_: Plataforma de desarrollo web3 de nivel empresarial para implementar contratos inteligentes, habilitar pagos con tarjeta de crédito y entre cadenas, y utilizar API para crear, distribuir, vender, almacenar y editar NFT._**
+**Crossmint**: _plataforma de desarrollo web3 de nivel empresarial para desplegar contratos inteligentes, permitir pagos con tarjeta de crédito y entre cadenas, y utilizar las API para crear, distribuir, vender, almacenar y editar NFT._
- [crossmint.com](https://www.crossmint.com)
- [Documentación](https://docs.crossmint.com)
- [Discord](https://discord.com/invite/crossmint)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Explorar DApps](/apps)
-- [La arquitectura de una aplicación en Web 3.0](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
-- [Una guía de 2021 para las Aplicaciones Descentralizadas](https://limechain.tech/blog/what-are-dapps-the-2021-guide/): _LimeChain_
-- [¿Qué son las Aplicaciones Descentralizadas?](https://www.gemini.com/cryptopedia/decentralized-applications-defi-dapps): _Gemini_
-- [DApps populares](https://www.alchemy.com/dapps): _Alquimia_
+- [Explorar dapps](/apps)
+- [La arquitectura de una aplicación Web 3.0](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
+- [Una guía de 2021 sobre aplicaciones descentralizadas](https://limechain.tech/blog/what-are-dapps-the-2021-guide/) - _LimeChain_
+- [¿Qué son las aplicaciones descentralizadas?](https://www.gemini.com/cryptopedia/decentralized-applications-defi-dapps) - _Gemini_
+- [Dapps populares](https://www.alchemy.com/dapps) - _Alchemy_
-_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Temas relacionados {#related-topics}
- [Introducción a la pila de Ethereum](/developers/docs/ethereum-stack/)
-- [Entornos de desarrollo](/developers/docs/frameworks/)
+- [Marcos de desarrollo](/developers/docs/frameworks/)
From d4bba4cfedb0cbfa4a43f2e8df876c8662c66132 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:11 -0300
Subject: [PATCH 166/589] update(i18n):
src/intl/es/page-contributing-translation-program-contributors.json
From d3bc6a7e5be9277f4a27a0416ccb2770ce41b1ba Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:13 -0300
Subject: [PATCH 167/589] update(i18n):
public/content/translations/es/developers/tutorials/short-abi/index.md
---
.../developers/tutorials/short-abi/index.md | 303 ++++++++++--------
1 file changed, 168 insertions(+), 135 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/short-abi/index.md b/public/content/translations/es/developers/tutorials/short-abi/index.md
index 3f8f927deb9..0d8b1f2b34a 100644
--- a/public/content/translations/es/developers/tutorials/short-abi/index.md
+++ b/public/content/translations/es/developers/tutorials/short-abi/index.md
@@ -1,85 +1,106 @@
---
title: "ABI cortas para la optimización de calldata"
-description: Optimización de contratos inteligentes para Optimistic Rollups
+description: Optimización de contratos inteligentes para rollups optimistas
author: Ori Pomerantz
lang: es
-tags:
- - "capa 2"
+tags: [ "capa 2" ]
skill: intermediate
published: 2022-04-01
---
## Introducción {#introduction}
-En este artículo aprenderá sobre [optimistic rollups](/developers/docs/scaling/optimistic-rollups), el costo de las transacciones en ellos y cómo esa estructura de costo diferente requiere que hagamos optimizaciones para cosas diferentes que en la Red principal de Ethereum. También aprenderá a implementar esta optimización.
+En este artículo, aprenderá sobre los [rollups optimistas](/developers/docs/scaling/optimistic-rollups), el costo de las transacciones en ellos y cómo esa estructura de costos diferente nos obliga a optimizar aspectos distintos a los de la red principal de Ethereum.
+También aprenderá a implementar esta optimización.
-### Divulgación completa {#full-disclosure}
+### Aviso de transparencia {#full-disclosure}
-Soy empleado a tiempo completo de [Optimism](https://www.optimism.io/), así que los ejemplos de este artículo se ejecutarán en Optimism. Sin embargo, la técnica explicada aquí debería funcionar igual de bien para otros rollups.
+Soy empleado a tiempo completo de [Optimism](https://www.optimism.io/), así que los ejemplos de este artículo se ejecutarán en Optimism.
+Sin embargo, la técnica explicada aquí debería funcionar igual de bien para otros rollups.
### Terminología {#terminology}
-Al analizar los rollups, el término "capa 1" (L1) se utiliza para la Red principal, la red de producción de Ethereum. El término "capa 2" (L2) se utiliza para el rollup o cualquier otro sistema que se base en L1 para la seguridad, pero que realice la mayor parte de su procesamiento fuera de la cadena.
+Al debatir sobre los rollups, el término 'capa 1' (L1) se utiliza para la red principal, la red de producción de Ethereum.
+El término 'capa 2' (L2) se utiliza para el rollup o cualquier otro sistema que se basa en L1 para su seguridad, pero que realiza la mayor parte de su procesamiento fuera de la cadena.
## ¿Cómo podemos reducir aún más el costo de las transacciones en L2? {#how-can-we-further-reduce-the-cost-of-L2-transactions}
-Los [Optimistic rollups](/developers/docs/scaling/optimistic-rollups) tienen que preservar un registro de cada transacción histórica para que cualquiera pueda verlas y verificar que el estado actual sea correcto. La forma más barata de obtener datos en la Red principal de Ethereum es escribirlos como datos de llamada, o calldata. Esta solución fue elegida tanto por [Optimism](https://help.optimism.io/hc/en-us/articles/4413163242779-What-is-a-rollup-) como por [Arbitrum](https://developer.offchainlabs.com/docs/rollup_basics#intro-to-rollups).
+Los [rollups optimistas](/developers/docs/scaling/optimistic-rollups) tienen que preservar un registro de cada transacción histórica para que cualquiera pueda revisarlas y verificar que el estado actual es correcto.
+La forma más barata de obtener datos en la red principal de Ethereum es escribirlos como calldata.
+Esta solución fue elegida tanto por [Optimism](https://help.optimism.io/hc/en-us/articles/4413163242779-What-is-a-rollup-) como por [Arbitrum](https://developer.offchainlabs.com/docs/rollup_basics#intro-to-rollups).
-### Costo de transacciones en L2 {#cost-of-l2-transactions}
+### Costo de las transacciones en L2 {#cost-of-l2-transactions}
El costo de las transacciones en L2 tiene dos componentes:
-1. Procesamiento en L2, que generalmente es extremadamente barato.
-2. Almacenamiento en L1, que está vinculado a los costos del gas de la Red principal.
+1. Procesamiento en L2, que generalmente es extremadamente barato
+2. Almacenamiento en L1, que está vinculado a los costos de gas de la red principal
-Mientras escribo esto, en Optimism el costo del gas en L2 es 0,001 [Gwei](/developers/docs/gas/#pre-london). Por otra parte, el costo del gas en L1 es de aproximadamente 40 gwei. [Puede ver los precios actuales aquí](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m).
+Mientras escribo esto, en Optimism el costo del gas de L2 es de 0,001 [Gwei](/developers/docs/gas/#pre-london).
+El costo del gas de L1, por otro lado, es de aproximadamente 40 gwei.
+[Puede ver los precios actuales aquí](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m).
-Un byte de calldata cuesta 4 de gas (si es cero) o 16 de gas (si es cualquier otro valor). Una de las operaciones más caras en la EVM es escribir en el almacenamiento. El costo máximo de escribir una palabra de 32 bytes para almacenar en L2 es de 22.100 gas. Actualmente, esto es 22.1 gwei. Así que, si podemos ahorrar un único byte cero de datos de llamada, o calldata, podremos escribir unos 200 bytes en el almacenamiento y aun así saldremos adelante.
+Un byte de calldata cuesta 4 de gas (si es cero) o 16 de gas (si es cualquier otro valor).
+Una de las operaciones más caras en la EVM es escribir en el almacenamiento.
+El costo máximo de escribir una palabra de 32 bytes en el almacenamiento en L2 es de 22 100 de gas. Actualmente, esto es 22,1 gwei.
+Así que si podemos ahorrar un solo byte cero de calldata, podremos escribir unos 200 bytes en el almacenamiento y aun así saldremos ganando.
### La ABI {#the-abi}
-La gran mayoría de las transacciones acceden a un contrato desde una cuenta de titularidad externa. La mayoría de los contratos se escriben en Solidity e interpretan su campo de datos por [la interfaz binaria de la aplicación (ABI)](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding).
+La gran mayoría de las transacciones acceden a un contrato desde una cuenta de titularidad externa.
+La mayoría de los contratos están escritos en Solidity e interpretan su campo de datos según la [interfaz binaria de la aplicación (ABI)](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding).
-Sin embargo, la ABI fue diseñada para L1, donde un byte de datos de llamada cuesta aproximadamente lo mismo que cuatro operaciones aritméticas, y no para L2, donde un byte de datos de llamada cuesta más de mil operaciones aritméticas. Por ejemplo, [aquí hay una transacción de transferencia de ERC-20](https://kovan-optimistic.etherscan.io/tx/0x7ce4c144ebfce157b4de99d8ad53a352ae91b57b3fa06d8a1c79439df6bfa998). Los datos de llamada se dividen así:
+Sin embargo, la ABI fue diseñada para L1, donde un byte de calldata cuesta aproximadamente lo mismo que cuatro operaciones aritméticas, no para L2, donde un byte de calldata cuesta más de mil operaciones aritméticas.
+El calldata se divide así:
-| Sección | Longitud | Bytes | Bytes consumidos | Gas consumido | Bytes necesarios | Gas necesario |
-| --------------------- | --------:| -----:| ----------------:| -------------:| ----------------:| -------------:|
-| Selector de funciones | 4 | 0-3 | 3 | 48 | 1 | 16 |
-| Ceros | 12 | 4-15 | 12 | 48 | 0 | 0 |
-| Dirección de destino | 20 | 16-35 | 0 | 0 | 20 | 320 |
-| Cantidad | 32 | 36-67 | 17 | 64 | 15 | 240 |
-| Total | 68 | | | 160 | | 576 |
+| Sección | Longitud | Bytes | Bytes desperdiciados | Gas desperdiciado | Bytes necesarios | Gas necesario |
+| -------------------- | -------: | ----: | -------------------: | ----------------: | ---------------: | ------------: |
+| Selector de función | 4 | 0-3 | 3 | 48 | 1 | 16 |
+| Ceros | 12 | 4-15 | 12 | 48 | 0 | 0 |
+| Dirección de destino | 20 | 16-35 | 0 | 0 | 20 | 320 |
+| Cantidad | 32 | 36-67 | 17 | 64 | 15 | 240 |
+| Total | 68 | | | 160 | | 576 |
Explicación:
-- **Selector de funciones**: El contrato tiene menos de 256 funciones, así que podamos distinguirlas con un solo byte. Estos bytes suelen ser distintos de cero y, por lo tanto, [cuestan dieciséis de gas](https://eips.ethereum.org/EIPS/eip-2028).
-- **Ceros**: Estos bytes son siempre cero porque una dirección de veinte bytes no requiere una palabra de treinta y dos bytes para contenerla. Los bytes que contienen cero cuestan cuatro de gas ([ver el Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf), Apéndice G, pag. 27, el valor de `G``txdatazero`).
-- **Cantidad**: Si asumimos que en este contrato `decimals` es dieciocho (el valor normal) y la cantidad máxima de tokens que transferiremos será 1018, obtenemos una cantidad máxima de 1036. 25615 > 1036, de modo que quince bytes serán suficientes.
+- **Selector de función**: el contrato tiene menos de 256 funciones, por lo que podemos distinguirlas con un solo byte.
+ Estos bytes suelen ser distintos de cero y, por lo tanto, [cuestan dieciséis de gas](https://eips.ethereum.org/EIPS/eip-2028).
+- **Ceros**: estos bytes siempre son cero porque una dirección de veinte bytes no requiere una palabra de treinta y dos bytes para contenerla.
+ Los bytes que valen cero cuestan cuatro de gas ([consulte el Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf), Apéndice G,
+ p. 27, el valor para `G``txdatazero`).
+- **Cantidad**: si asumimos que en este contrato `decimals` es dieciocho (el valor normal) y la cantidad máxima de tokens que transferimos será de 1018, obtendremos una cantidad máxima de 1036.
+ 25615 > 1036, por lo que quince bytes son suficientes.
-Un gasto de 160 en gas en L1 normalmente es insignificante. Una transacción cuesta al menos [21.000 gas](https://yakkomajuri.medium.com/blockchain-definition-of-the-week-ethereum-gas-2f976af774ed), por lo que un 0,8% adicional no es significativo. Sin embargo, en L2 las cosas son diferentes. Casi todo el costo de la transacción es escrito en L1. Además de los datos de llamada de la transacción, hay 109 bytes de encabezado de transacción (dirección de destino, firma, etc.). Por lo tanto, el costo total es `109*16+576+160=2480`, y estamos gastando alrededor del 6,5 % de eso.
+Un desperdicio de 160 de gas en L1 es normalmente insignificante. Una transacción cuesta al menos [21 000 de gas](https://yakkomajuri.medium.com/blockchain-definition-of-the-week-ethereum-gas-2f976af774ed), por lo que un 0,8 % adicional no importa.
+Sin embargo, en L2 las cosas son diferentes. Casi todo el costo de la transacción es por escribirla en L1.
+Además del calldata de la transacción, hay 109 bytes de encabezado de transacción (dirección de destino, firma, etc.).
+Por lo tanto, el costo total es de `109*16+576+160=2480`, y estamos desperdiciando alrededor del 6,5 % de eso.
-## Reducir costos cuando no se controla el destino {#reducing-costs-when-you-dont-control-the-destination}
+## Reducir los costos cuando no se tiene el control del destino {#reducing-costs-when-you-dont-control-the-destination}
-Suponiendo que no tiene control sobre el contrato de destino, aún puede usar una solución similar a [esta](https://github.com/qbzzt/ethereum.org-20220330-shortABI). Repasemos los archivos relevantes.
+Suponiendo que no tiene control sobre el contrato de destino, aún puede usar una solución similar a [esta](https://github.com/qbzzt/ethereum.org-20220330-shortABI).
+Repasemos los archivos relevantes.
### Token.sol {#token-sol}
-[Este es el contrato de destino](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/Token.sol). Es un contrato ERC-20 estándar, con una característica adicional. Esta función de `faucet` permite a cualquier usuario obtener tokens para usar. Haría inútil un contrato de producción ERC-20, pero hace la vida más fácil cuando existe un ERC-20 solo para facilitar las pruebas.
+[Este es el contrato de destino](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/Token.sol).
+Es un contrato ERC-20 estándar, con una característica adicional.
+Esta función `faucet` permite a cualquier usuario obtener algunos tokens para su uso.
+Haría inútil un contrato de producción ERC-20, pero hace la vida más fácil cuando existe un ERC-20 solo para facilitar las pruebas.
```solidity
/**
- * @dev Gives the caller 1000 tokens to play with
+ * @dev Proporciona al llamador 1000 tokens para que los use
*/
function faucet() external {
_mint(msg.sender, 1000);
} // function faucet
```
-[Puede ver un ejemplo de la implementación de este contrato aquí](https://kovan-optimistic.etherscan.io/address/0x950c753c0edbde44a74d3793db738a318e9c8ce8).
-
### CalldataInterpreter.sol {#calldatainterpreter-sol}
-[Este es el contrato al que se supone que deben llamar las transacciones con datos de llamada más cortos](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/CalldataInterpreter.sol). Vamos a repasarlo línea por línea.
+[Este es el contrato al que se supone que las transacciones deben llamar con un calldata más corto](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/CalldataInterpreter.sol).
+Vamos a repasarlo línea por línea.
```solidity
//SPDX-License-Identifier: Unlicense
@@ -89,7 +110,7 @@ pragma solidity ^0.8.0;
import { OrisUselessToken } from "./Token.sol";
```
-Necesitamos que la función de token sepa cómo llamar.
+Necesitamos la función del token para saber cómo llamarla.
```solidity
contract CalldataInterpreter {
@@ -97,13 +118,12 @@ contract CalldataInterpreter {
OrisUselessToken public immutable token;
```
-La dirección del token del que somos proxy.
+La dirección del token para el que somos un proxy.
```solidity
-
/**
- * @dev Specify the token address
- * @param tokenAddr_ ERC-20 contract address
+ * @dev Especifica la dirección del token
+ * @param tokenAddr_ dirección del contrato ERC-20
*/
constructor(
address tokenAddr_
@@ -119,19 +139,21 @@ La dirección del token es el único parámetro que debemos especificar.
private pure returns (uint) {
```
-Leer un valor de los datos de llamada.
+Lee un valor del calldata.
```solidity
uint _retVal;
require(length < 0x21,
- "calldataVal length limit is 32 bytes");
+ "El límite de longitud de calldataVal es de 32 bytes");
require(length + startByte <= msg.data.length,
- "calldataVal trying to read beyond calldatasize");
+ "calldataVal está intentando leer más allá de calldatasize");
```
-Vamos a cargar una sola palabra de 32 bytes (256 bits) en la memoria y eliminar los bytes que no forman parte del campo que queremos. Este algoritmo no funciona para valores de más de 32 bytes y, por supuesto, no podemos leer más allá del final de los datos de llamada. En L1 puede que sea necesario saltarse estas pruebas para ahorrar gas, pero en L2 el gas es extremadamente barato, lo que permite realizar cualquier control de seguridad, o sanity check, que podamos imaginar.
+Vamos a cargar una sola palabra de 32 bytes (256 bits) en la memoria y a eliminar los bytes que no forman parte del campo que queremos.
+Este algoritmo no funciona para valores de más de 32 bytes y, por supuesto, no podemos leer más allá del final del calldata.
+En L1 podría ser necesario omitir estas pruebas para ahorrar gas, pero en L2 el gas es extremadamente barato, lo que permite cualquier comprobación de validez que se nos ocurra.
```solidity
assembly {
@@ -139,16 +161,18 @@ Vamos a cargar una sola palabra de 32 bytes (256 bits) en la memoria y eliminar
}
```
-Podríamos haber copiado los datos de la llamada a `fallback()` (ver más abajo), pero es más fácil usar [Yul](https://docs.soliditylang.org/en/v0.8.12/yul.html), el lenguaje de ensamblado de la EVM.
+Podríamos haber copiado los datos de la llamada a `fallback()` (véase más abajo), pero es más fácil usar [Yul](https://docs.soliditylang.org/en/v0.8.12/yul.html), el lenguaje de ensamblado de la EVM.
-Aquí usamos [el código de operación CALLDATALOAD](https://www.evm.codes/#35) para leer los bytes `startByte` a `startByte+31` en la pila. En general, la sintaxis de un código de operación en Yul es `(,...)`..
+Aquí usamos [el código de operación CALLDATALOAD](https://www.evm.codes/#35) para leer los bytes desde `startByte` hasta `startByte+31` en la pila.
+En general, la sintaxis de un código de operación en Yul es \`(, ...).
```solidity
_retVal = _retVal >> (256-length*8);
```
-Solo los bytes de `length` más significativos forman parte del campo, por lo que [hacemos un desplazamiento a la derecha](https://en.wikipedia.org/wiki/Logical_shift) para deshacernos de los otros valores. Esto tiene la ventaja adicional de mover el valor a la derecha del campo, de modo que sea el valor en sí mismo en lugar del valor multiplicado por 256algo.
+Solo los bytes de `length` más significativos forman parte del campo, por lo que hacemos un [desplazamiento a la derecha](https://en.wikipedia.org/wiki/Logical_shift) para deshacernos de los otros valores.
+Esto tiene la ventaja añadida de mover el valor a la derecha del campo, por lo que es el valor en sí mismo en lugar del valor multiplicado por 256algo.
```solidity
@@ -159,7 +183,8 @@ Solo los bytes de `length` más significativos forman parte del campo, por lo qu
fallback() external {
```
-Cuando una llamada a un contrato de Solidity no coincide con ninguna de las firmas de función, llama a [la función `fallback()`](https://docs.soliditylang.org/en/v0.8.12/contracts.html#fallback-function) (asumiendo que haya una). En el caso de `CalldataInterpreter`, _cualquier_ llamada llega aquí porque no hay ninguna otra función `external` o `public`.
+Cuando una llamada a un contrato de Solidity no coincide con ninguna de las firmas de función, llama a [la función `fallback()`](https://docs.soliditylang.org/en/v0.8.12/contracts.html#fallback-function) (suponiendo que haya una).
+En el caso de `CalldataInterpreter`, _cualquier_ llamada llega aquí porque no hay otras funciones `external` o `public`.
```solidity
uint _func;
@@ -167,17 +192,20 @@ Cuando una llamada a un contrato de Solidity no coincide con ninguna de las firm
_func = calldataVal(0, 1);
```
-Lea el primer byte de los datos de llamada, que nos indica la función. Hay dos razones por las que una función no estaría disponible aquí:
+Lea el primer byte del calldata, que nos indica la función.
+Hay dos razones por las que una función no estaría disponible aquí:
-1. Las funciones `pure` o `view` no cambian el estado y no cuestan gas (cuando se llaman fuera de la cadena). No tiene sentido tratar de reducir su costo de gas.
-2. Funciones que usan [`msg.sender`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#block-and-transaction-properties). El valor de `msg.sender` será la dirección de `CalldataInterpreter`, no la persona que llama.
+1. Las funciones que son `pure` o `view` no cambian el estado y no cuestan gas (cuando se llaman fuera de la cadena).
+ No tiene sentido intentar reducir su costo de gas.
+2. Funciones que dependen de [`msg.sender`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#block-and-transaction-properties).
+ El valor de `msg.sender` será la dirección de `CalldataInterpreter`, no la del llamador.
-Desafortunadamente, [mirando las especificaciones de ERC-20](https://eips.ethereum.org/EIPS/eip-20), esto deja solo una función, `transfer`. Esto nos deja solo dos funciones: `transfer` (porque podemos llamar a `transferFrom`) y `faucet` (porque podemos transferir los tokens a quien nos haya llamado).
+Desafortunadamente, al observar [las especificaciones de ERC-20](https://eips.ethereum.org/EIPS/eip-20), esto solo deja una función, `transfer`.
+Esto nos deja con solo dos funciones: `transfer` (porque podemos llamar a `transferFrom`) y `faucet` (porque podemos transferir los tokens de vuelta a quien nos llamó).
```solidity
-
- // Call the state changing methods of token using
- // information from the calldata
+ // Llamar a los métodos de cambio de estado del token usando
+ // la información del calldata
// faucet
if (_func == 1) {
@@ -192,10 +220,12 @@ Una llamada a `faucet()`, que no tiene parámetros.
}
```
-Después de llamar a `token.faucet()`, obtenemos tokens. Sin embargo, como contrato de proxy, no **necesitamos** tokens. La EOA (cuenta de propiedad externa) o el contrato que nos llama, en cambio, sí. Entonces transferimos todos nuestros tokens a quien nos llamó.
+Después de llamar a `token.faucet()`, obtenemos tokens. Sin embargo, como contrato proxy, no **necesitamos** tokens.
+La EOA (cuenta de propiedad externa) o el contrato que nos llamó sí que los necesita.
+Así que transferimos todos nuestros tokens a quien nos llamó.
```solidity
- // transfer (assume we have an allowance for it)
+ // transferir (asumir que tenemos una asignación para ello)
if (_func == 2) {
```
@@ -206,32 +236,33 @@ La transferencia de tokens requiere dos parámetros: la dirección de destino y
msg.sender,
```
-Solo permitimos que las personas que llaman transfieran tokens de su propiedad.
+Solo permitimos que los llamadores transfieran los tokens que poseen
```solidity
address(uint160(calldataVal(1, 20))),
```
-La dirección de destino empieza en el byte n.º 1 (el byte 0 es la función). Como una dirección, tiene una longitud de 20 bytes.
+La dirección de destino comienza en el byte n.º 1 (el byte n.º 0 es la función).
+Como dirección, tiene 20 bytes de longitud.
```solidity
calldataVal(21, 2)
```
-Para este contrato en particular asumimos que el número máximo de tokens que alguien querría transferir cabe en 2 bytes (menos que 65536).
+Para este contrato en particular, asumimos que la cantidad máxima de tokens que alguien querría transferir cabe en dos bytes (menos de 65 536).
```solidity
);
}
```
-En general, una transferencia usa 35 bytes de datos de llamada:
+En general, una transferencia ocupa 35 bytes de calldata:
-| Sección | Longitud | Bytes |
-| --------------------- | --------:| -----:|
-| Selector de funciones | 1 | 0 |
-| Dirección de destino | 32 | 1-32 |
-| Cantidad | 2 | 33-34 |
+| Sección | Longitud | Bytes |
+| -------------------- | -------: | ----: |
+| Selector de función | 1 | 0 |
+| Dirección de destino | 32 | 1-32 |
+| Cantidad | 2 | 33-34 |
```solidity
} // fallback
@@ -241,44 +272,48 @@ En general, una transferencia usa 35 bytes de datos de llamada:
### test.js {#test-js}
-[Esta unidad de prueba de JavaScript](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/test/test.js) nos muestra cómo usar este mecanismo (y cómo verificar si funciona correctamente). Voy a asumir que entiende [chai](https://www.chaijs.com/) y [ethers](https://docs.ethers.io/v5/), y solo voy a explicar específicamente las partes que corresponden específicamente al contrato.
+Este [test unitario de JavaScript](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/test/test.js) nos muestra cómo usar este mecanismo (y cómo verificar que funciona correctamente).
+Voy a suponer que entiende [chai](https://www.chaijs.com/) y [ethers](https://docs.ethers.io/v5/) y solo explicaré las partes que se aplican específicamente al contrato.
```js
const { expect } = require("chai");
describe("CalldataInterpreter", function () {
- it("Should let us use tokens", async function () {
+ it("Debería dejarnos usar tokens", async function () {
const Token = await ethers.getContractFactory("OrisUselessToken")
const token = await Token.deploy()
await token.deployed()
- console.log("Token addr:", token.address)
+ console.log("Dirección del token:", token.address)
const Cdi = await ethers.getContractFactory("CalldataInterpreter")
const cdi = await Cdi.deploy(token.address)
await cdi.deployed()
- console.log("CalldataInterpreter addr:", cdi.address)
+ console.log("Dirección de CalldataInterpreter:", cdi.address)
const signer = await ethers.getSigner()
```
-Empezamos implementando ambos contratos.
+Comenzamos por implementar ambos contratos.
```javascript
- // Get tokens to play with
+ // Obtener tokens para usar
const faucetTx = {
```
-No podemos usar las funciones de alto nivel que normalmente usaríamos (como `token.faucet()`) para crear transacciones, porque no seguimos la ABI. En cambio, tenemos que crear la transacción por nuestra cuenta y después enviarla.
+No podemos usar las funciones de alto nivel que normalmente usaríamos (como `token.faucet()`) para crear transacciones, porque no seguimos la ABI.
+En cambio, tenemos que construir la transacción nosotros mismos y luego enviarla.
```javascript
to: cdi.address,
data: "0x01"
```
-Hay dos parámetros necesarios que debemos proporcionar para la transacción:
+Hay dos parámetros que debemos proporcionar para la transacción:
-1. `to`, la dirección de destino. Este es el contrato intérprete de calldata.
-2. `data`, el calldata a enviar. En caso de una llamada de grifo (faucet), la información tiene un único byte, `0x01`.
+1. `to`, la dirección de destino.
+ Este es el contrato intérprete de calldata.
+2. `data`, el calldata que se enviará.
+ En el caso de una llamada de faucet, los datos son un solo byte, `0x01`.
```javascript
@@ -286,26 +321,27 @@ Hay dos parámetros necesarios que debemos proporcionar para la transacción:
await (await signer.sendTransaction(faucetTx)).wait()
```
-Llamamos al [método `sendTransaction` del firmante](https://docs.ethers.io/v5/api/signer/#Signer-sendTransaction) porque ya especificamos el destino (`faucetTx.to`) y necesitamos que la transacción sea firmada.
+Llamamos al [método `sendTransaction` del firmante](https://docs.ethers.io/v5/api/signer/#Signer-sendTransaction) porque ya hemos especificado el destino (`faucetTx.to`) y necesitamos que se firme la transacción.
```javascript
-// Check the faucet provides the tokens correctly
+// Comprobar que el faucet proporciona los tokens correctamente
expect(await token.balanceOf(signer.address)).to.equal(1000)
```
-Aquí verificamos el saldo. No es necesario ahorrar gas en las funciones `view`, por lo que las ejecutamos con normalidad.
+Aquí verificamos el saldo.
+No es necesario ahorrar gas en las funciones `view`, por lo que las ejecutamos con normalidad.
```javascript
-// Give the CDI an allowance (approvals cannot be proxied)
+// Dar al CDI una asignación (las aprobaciones no se pueden intermediar)
const approveTX = await token.approve(cdi.address, 10000)
await approveTX.wait()
expect(await token.allowance(signer.address, cdi.address)).to.equal(10000)
```
-Otorgue al intérprete de calldata la autorización para realizar transferencias.
+Otorgue al intérprete de calldata una asignación para poder realizar transferencias.
```javascript
-// Transfer tokens
+// Transferir tokens
const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d"
const transferTx = {
to: cdi.address,
@@ -313,53 +349,50 @@ const transferTx = {
}
```
-Cree una transacción de transferencia. El primer byte es "0x02", seguido de la dirección de destino y finalmente la cantidad (0x0100, que es 256 en decimal).
+Cree una transacción de transferencia. El primer byte es «0x02», seguido de la dirección de destino y, finalmente, la cantidad (0x0100, que es 256 en decimal).
```javascript
await (await signer.sendTransaction(transferTx)).wait()
- // Check that we have 256 tokens less
+ // Comprobar que tenemos 256 tokens menos
expect (await token.balanceOf(signer.address)).to.equal(1000-256)
- // And that our destination got them
+ // Y que nuestro destino los recibió
expect (await token.balanceOf(destAddr)).to.equal(256)
}) // it
}) // describe
```
-### Ejemplo {#example}
-
-Si quiere ver esos archivos en acción sin ejecutarlos usted mismo, siga estos enlaces:
-
-1. [Implementación de `OrisUselessToken`](https://kovan-optimistic.etherscan.io/tx/1410744) a la [dirección `0x950c753c0edbde44a74d3793db738a318e9c8ce8`](https://kovan-optimistic.etherscan.io/address/0x950c753c0edbde44a74d3793db738a318e9c8ce8).
-2. [Implementación de `CalldataInterpreter`](https://kovan-optimistic.etherscan.io/tx/1410745) a la [dirección `0x16617fea670aefe3b9051096c0eb4aeb4b3a5f55`](https://kovan-optimistic.etherscan.io/address/0x16617fea670aefe3b9051096c0eb4aeb4b3a5f55).
-3. [Llamada al `faucet()`](https://kovan-optimistic.etherscan.io/tx/1410746).
-4. [Llamada a `OrisUselessToken.approve()`](https://kovan-optimistic.etherscan.io/tx/1410747). Este llamado debe ir directamente al contrato del token porque el procesamiento depende de `msg.sender`.
-5. [Llamada a `transfer()`](https://kovan-optimistic.etherscan.io/tx/1410748).
+## Reducir el costo cuando se tiene el control del contrato de destino {#reducing-the-cost-when-you-do-control-the-destination-contract}
-## Reducir el costo cuando controla el contrato de destino {#reducing-the-cost-when-you-do-control-the-destination-contract}
+Si controla el contrato de destino, puede crear funciones que omitan las verificaciones de `msg.sender` porque confían en el intérprete del calldata.
+[Puede ver un ejemplo de cómo funciona esto aquí, en la rama `control-contract`](https://github.com/qbzzt/ethereum.org-20220330-shortABI/tree/control-contract).
-Si controla el contrato de destino, puede crear funciones que omitan las verificaciones de `msg.sender` porque confían en el intérprete de la llamada de datos. [Aquí puede ver un ejemplo de cómo funciona esto en la rama de `control-contract`](https://github.com/qbzzt/ethereum.org-20220330-shortABI/tree/control-contract).
-
-Si el contrato solo respondiera a transacciones externas, podríamos arreglárnoslas teniendo solo un contrato. Sin embargo, eso rompería la [capacidad de composición](/developers/docs/smart-contracts/composability/). Es mucho mejor tener un contrato que responda a llamadas normales ERC-20 y otro contrato que responda a transacciones con llamadas de datos cortas.
+Si el contrato solo respondiera a transacciones externas, podríamos arreglárnoslas teniendo solo un contrato.
+Sin embargo, eso rompería la [componibilidad](/developers/docs/smart-contracts/composability/).
+Es mucho mejor tener un contrato que responda a llamadas normales ERC-20 y otro contrato que responda a transacciones con llamadas de datos cortas.
### Token.sol {#token-sol-2}
-En este ejemplo podemos modificar `Token.sol`. Esto nos permite tener un número de funciones a las que solo puede llamar el proxy. Estas son las nuevas partes:
+En este ejemplo podemos modificar `Token.sol`.
+Esto nos permite tener un número de funciones a las que solo puede llamar el proxy.
+Estas son las nuevas partes:
```solidity
- // The only address allowed to specify the CalldataInterpreter address
+ // La única dirección a la que se le permite especificar la dirección de CalldataInterpreter
address owner;
- // The CalldataInterpreter address
+ // La dirección de CalldataInterpreter
address proxy = address(0);
```
-El contrato ERC-20 necesita conocer la identidad del proxy autorizado. Sin embargo, no podemos establecer esta variable en el constructor, porque aún no conocemos el valor. El contrato es instanciado primero porque el proxy espera la dirección del token en su constructor.
+El contrato ERC-20 necesita conocer la identidad del proxy autorizado.
+Sin embargo, no podemos establecer esta variable en el constructor, porque aún no conocemos el valor.
+Este contrato se instancia primero porque el proxy espera la dirección del token en su constructor.
```solidity
/**
- * @dev Calls the ERC20 constructor.
+ * @dev Llama al constructor de ERC20.
*/
constructor(
) ERC20("Oris useless token-2", "OUT-2") {
@@ -367,37 +400,40 @@ El contrato ERC-20 necesita conocer la identidad del proxy autorizado. Sin embar
}
```
-La dirección del creador (llamada `owner`) es almacenada aquí porque esa es la única dirección permitida para establecer el proxy.
+La dirección del creador (llamada `owner`) se almacena aquí porque esa es la única dirección a la que se le permite establecer el proxy.
```solidity
/**
- * @dev set the address for the proxy (the CalldataInterpreter).
- * Can only be called once by the owner
+ * @dev establece la dirección para el proxy (el CalldataInterpreter).
+ * Solo puede ser llamado una vez por el propietario
*/
function setProxy(address _proxy) external {
- require(msg.sender == owner, "Can only be called by owner");
- require(proxy == address(0), "Proxy is already set");
+ require(msg.sender == owner, "Solo puede ser llamado por el propietario");
+ require(proxy == address(0), "El proxy ya está configurado");
proxy = _proxy;
} // function setProxy
```
-El proxy tiene acceso privilegiado, porque puede omitir las revisiones de seguridad. Para asegurarnos de que podamos confiar en el proxy, solo le permitimos a `owner` llamar a esta función y solo una vez. Una vez que `proxy` tenga un valor real (diferente a cero), ese valor no puede cambiar, así que incluso si el propietario decide hacerse el pícaro o se revela el mnemotécnico de esto, aún tendríamos seguridad.
+El proxy tiene acceso privilegiado, porque puede omitir las revisiones de seguridad.
+Para asegurarnos de que podamos confiar en el proxy, solo le permitimos a `owner` llamar a esta función y solo una vez.
+Una vez que `proxy` tenga un valor real (diferente a cero), ese valor no puede cambiar, así que incluso si el propietario decide volverse malicioso o se revela su mnemónico, seguimos estando seguros.
```solidity
/**
- * @dev Some functions may only be called by the proxy.
+ * @dev Algunas funciones solo pueden ser llamadas por el proxy.
*/
modifier onlyProxy {
```
-Esta es una [función `modifier`](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm) que modifica la manera en que operan otras funciones.
+Esta es una [función `modifier`](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm), que modifica el funcionamiento de otras funciones.
```solidity
require(msg.sender == proxy);
```
-Primero, verificamos que nos ha llamado el proxy y ningún otro. Si no, `revert`.
+Primero, verificamos que nos ha llamado el proxy y ningún otro.
+Si no, `revert`.
```solidity
_;
@@ -407,7 +443,7 @@ Primero, verificamos que nos ha llamado el proxy y ningún otro. Si no, `revert`
En caso de ser así, ejecutamos la función que modificamos.
```solidity
- /* Functions that allow the proxy to actually proxy for accounts */
+ /* Funciones que permiten que el proxy realmente represente a las cuentas */
function transferProxy(address from, address to, uint256 amount)
public virtual onlyProxy() returns (bool)
@@ -436,17 +472,18 @@ En caso de ser así, ejecutamos la función que modificamos.
}
```
-Esas son tres operaciones que normalmente requieren que el mensaje provenga directamente de la entidad que transfiere los tokens o aprueba una autorización. Aquí tenemos una versión proxy de estas operaciones que:
+Esas son tres operaciones que normalmente requieren que el mensaje provenga directamente de la entidad que transfiere los tokens o aprueba una autorización.
+Aquí tenemos una versión proxy de estas operaciones que:
-1. Es modificada por `onlyProxy()`, por lo que nadie cuenta con la autorización de controlarlo.
+1. Es modificada por `onlyProxy()` para que nadie más pueda controlarlas.
2. Obtiene la dirección que normalmente sería `msg.sender` como un parámetro adicional.
### CalldataInterpreter.sol {#calldatainterpreter-sol-2}
-El intérprete de los datos de llamada, calldata, es casi idéntico al que se encuentra arriba, con la excepción de que las funciones de proxy reciben un parámetro `msg.sender` y no es necesaria una asignación para `transfer`.
+El intérprete de calldata es casi idéntico al anterior, excepto que las funciones intermediadas reciben un parámetro `msg.sender` y no es necesaria una asignación para `transfer`.
```solidity
- // transfer (no need for allowance)
+ // transferir (no se necesita asignación)
if (_func == 2) {
token.transferProxy(
msg.sender,
@@ -455,7 +492,7 @@ El intérprete de los datos de llamada, calldata, es casi idéntico al que se en
);
}
- // approve
+ // aprobar
if (_func == 3) {
token.approveProxy(
msg.sender,
@@ -489,18 +526,19 @@ await token.setProxy(cdi.address)
Necesitamos decirle al contrato ERC-20 en cuál proxy debe confiar.
```js
-console.log("CalldataInterpreter addr:", cdi.address)
+console.log("Dirección de CalldataInterpreter:", cdi.address)
-// Need two signers to verify allowances
+// Necesitamos dos firmantes para verificar las asignaciones
const signers = await ethers.getSigners()
const signer = signers[0]
const poorSigner = signers[1]
```
-Para verificar `approve()` y `transferFrom()`, necesitamos un segundo firmante. Lo llamaremos `poorSigner` porque no obtiene ninguno de nuestros tokens (por supuesto, es necesario contar con ETH).
+Para verificar `approve()` y `transferFrom()`, necesitamos un segundo firmante.
+Lo llamaremos `poorSigner` porque no obtiene ninguno de nuestros tokens (por supuesto, es necesario contar con ETH).
```js
-// Transfer tokens
+// Transferir tokens
const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d"
const transferTx = {
to: cdi.address,
@@ -512,7 +550,7 @@ await (await signer.sendTransaction(transferTx)).wait()
Debido a que el contrato ERC-20 confía en el proxy (`cdi`), no necesitamos una asignación para transmitir transferencias.
```js
-// approval and transferFrom
+// aprobación y transferFrom
const approveTx = {
to: cdi.address,
data: "0x03" + poorSigner.address.slice(2, 42) + "00FF",
@@ -527,24 +565,19 @@ const transferFromTx = {
}
await (await poorSigner.sendTransaction(transferFromTx)).wait()
-// Check the approve / transferFrom combo was done correctly
+// Comprobar que la combinación de aprobación y transferFrom se realizó correctamente
expect(await token.balanceOf(destAddr2)).to.equal(255)
```
-Pruebe las dos nuevas funciones. Tenga en cuenta que `transferFromTx` requiere dos parámetros de dirección: quien proporciona la asignación y el receptor.
-
-### Ejemplo {#example-2}
+Pruebe las dos nuevas funciones.
+Tenga en cuenta que `transferFromTx` requiere dos parámetros de dirección: quien proporciona la asignación y el receptor.
-Si quiere ver esos archivos en acción sin ejecutarlos usted mismo, siga estos enlaces:
+## Conclusión {#conclusion}
-1. [Implementación de `OrisUselessToken-2`](https://kovan-optimistic.etherscan.io/tx/1475397) en la dirección [`0xb47c1f550d8af70b339970c673bbdb2594011696`](https://kovan-optimistic.etherscan.io/address/0xb47c1f550d8af70b339970c673bbdb2594011696).
-2. [Implementación de `CalldataInterpreter`](https://kovan-optimistic.etherscan.io/tx/1475400) en la dirección [`0x0dccfd03e3aaba2f8c4ea4008487fd0380815892`](https://kovan-optimistic.etherscan.io/address/0x0dccfd03e3aaba2f8c4ea4008487fd0380815892).
-3. [Llamada a `setProxy()`](https://kovan-optimistic.etherscan.io/tx/1475402).
-4. [Llamada a `faucet()`](https://kovan-optimistic.etherscan.io/tx/1475409).
-5. [Llamada a `transferProxy()`](https://kovan-optimistic.etherscan.io/tx/1475416).
-6. [Llamada a `approveProxy()`](https://kovan-optimistic.etherscan.io/tx/1475419).
-7. [Llamada a `transferFromProxy()`](https://kovan-optimistic.etherscan.io/tx/1475421). Tenga en cuenta que esta llamada proviene de una dirección diferente a las anteriores, `poorSigner` en lugar de `signer`.
+Tanto [Optimism](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92) como [Arbitrum](https://developer.offchainlabs.com/docs/special_features) están buscando formas de reducir el tamaño del calldata escrito en L1 y, por lo tanto, el costo de las transacciones.
+Sin embargo, como proveedores de infraestructura que buscamos soluciones genéricas, nuestras habilidades están limitadas.
+Como desarrollador de dapp, tiene conocimiento específico de la aplicación, lo que le permite optimizar su calldata mejor que nosotros en una solución genérica.
+Esperamos que este artículo pueda ayudarle a encontrar la solución ideal a sus necesidades.
-## Conclusión {#conclusion}
+[Vea aquí más de mi trabajo](https://cryptodocguy.pro/).
-[Optimism](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92) y [Arbitrum](https://developer.offchainlabs.com/docs/special_features) están buscando maneras de reducir el tamaño de los datos de llamada escritos en L1 y, por lo tanto, el costo de las transacciones. Sin embargo, como proveedores de infraestructura que buscamos soluciones genéricas, nuestras habilidades están limitadas. Como desarrollador de dapp, tiene conocimiento específico de la aplicación, lo que le permite optimizar su calldata mejor que nosotros en una solución genérica. Esperamos que este artículo pueda ayudarle a encontrar la solución ideal a sus necesidades.
From c0dbeeeedb072e264e5f48c4fa087ab2b1b0a6ae Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:15 -0300
Subject: [PATCH 168/589] update(i18n):
public/content/translations/es/roadmap/future-proofing/index.md
---
.../es/roadmap/future-proofing/index.md | 37 +++++++++++++------
1 file changed, 26 insertions(+), 11 deletions(-)
diff --git a/public/content/translations/es/roadmap/future-proofing/index.md b/public/content/translations/es/roadmap/future-proofing/index.md
index c809735ebf4..a36424772f4 100644
--- a/public/content/translations/es/roadmap/future-proofing/index.md
+++ b/public/content/translations/es/roadmap/future-proofing/index.md
@@ -11,28 +11,43 @@ Algunas partes de la hoja de ruta no son obligatorias para escalar o asegurar a
## Resistencia cuántica {#quantum-resistance}
-Parte de la [criptografía](/glossary/#cryptography) que protege Ethereum en la actualidad se verá comprometida cuando la computación cuántica se convierta en una realidad. Aunque es probable que la computación cuántica esté a décadas de distancia de ser una amenaza genuina para la criptografía moderna, Ethereum se está construyendo para ser segura por los siglos de los siglos. Esto significa hacer a [Ethereum cuántico resistente](https://consensys.net/blog/developers/how-will-quantum-supremacy-affect-blockchain/) tan pronto como sea posible.
+Parte de la [criptografía](/glossary/#cryptography) que asegura el Ethereum actual se verá comprometida cuando la computación cuántica se haga realidad. Aunque es probable que la computación cuántica esté a décadas de distancia de ser una amenaza genuina para la criptografía moderna, Ethereum se está construyendo para ser segura por los siglos de los siglos. Esto significa hacer que [Ethereum sea resistente a la computación cuántica](https://consensys.net/blog/developers/how-will-quantum-supremacy-affect-blockchain/) lo antes posible.
-El desafío al que se enfrentan los desarrolladores de Ethereum es que el actual protocolo de [prueba de participación](/glossary/#pos) se base en un esquema de firmas muy eficiente conocido como BLS para agregar votos en [bloques](/glossary/#block) válidos. Las computadoras cuánticas son capaces de descodificar esta estrategia de firmas, no obstante, las alternativas cuántico-resistentes no son tan eficientes.
+El desafío al que se enfrentan los desarrolladores de Ethereum es que el protocolo actual de [prueba de participación](/glossary/#pos) se basa en un esquema de firmas muy eficiente conocido como BLS para agregar votos en [bloques](/glossary/#block) válidos. Las computadoras cuánticas son capaces de descodificar esta estrategia de firmas, no obstante, las alternativas cuántico-resistentes no son tan eficientes.
-Las [estrategias comprometidas «KZG»](/roadmap/danksharding/#what-is-kzg) que Ethereum utiliza en múltiples ocasiones para generar secretos criptográficos tienen vulnerabilidad cuántica. Actualmente, esto se evita usando «configuraciones seguras» en las que muchos usuarios generan una aleatoriedad a la que las computadoras cuánticas no pueden aplicar ingeniería inversa. De cualquier forma, la solución idónea sería incorporar simplemente criptografía cuántica segura. Hay dos enfoques principales que podrían convertirse en sustituciones eficientes de las estrategias BLS: [el basado en STARK](https://hackmd.io/@vbuterin/stark_aggregation) y [el basado en redes](https://medium.com/asecuritysite-when-bob-met-alice/so-what-is-lattice-encryption-326ac66e3175) de firmas. **Se los sigue investigando y se siguen elaborando prototipos**.
+Se sabe que los esquemas de compromiso [«KZG»](/roadmap/danksharding/#what-is-kzg) utilizados en varios lugares de Ethereum para generar secretos criptográficos son vulnerables a la computación cuántica. En la actualidad, esto se evita utilizando «configuraciones fiables» (cuya ceremonia de configuración principal finalizó con éxito en 2023), en las que varios usuarios generaron aleatoriedad que no puede ser revertida por una computadora cuántica. Sin embargo, la solución ideal a largo plazo sería incorporar en su lugar la criptografía cuántica segura. Hay dos enfoques principales que podrían convertirse en sustitutos eficientes para el esquema BLS: las firmas [basadas en STARK](https://hackmd.io/@vbuterin/stark_aggregation) y las [basadas en retículos (lattice)](https://medium.com/asecuritysite-when-bob-met-alice/so-what-is-lattice-encryption-326ac66e3175). **Estos todavía se están investigando y prototipando activamente**.
- Lea acerca de KZG y las configuraciones seguras
+[Leer sobre KZG y las configuraciones de confianza](/roadmap/danksharding#what-is-kzg)
-## Ethereum más simple y eficiente {#simpler-more-efficient-ethereum}
+## Un Ethereum más simple y eficiente {#simpler-more-efficient-ethereum}
-La complejidad crea oportunidades para errores o vulnerabilidades que los intrusos pueden explotar. En consecuencia, parte de la hoja de ruta está simplificando Ethereum y eliminando el código que ha estado pendiente de varias actualizaciones, pero que ya no se necesita o que ahora puede mejorarse. A los desarrolladores les resulta más sencillo y dinámico mantener y razonar una base de código.
+La complejidad puede generar errores o vulnerabilidades que pueden aprovechar los atacantes. Por lo tanto, una parte del plan de trabajo consiste en simplificar Ethereum y suprimir o modificar el código que se ha mantenido en varias actualizaciones, pero que ya no es necesario o que ahora puede ser mejorado. Una base de código más reducida y sencilla es mucho más fácil de mantener y analizar para los desarrolladores.
-Se realizarán múltiples actualizaciones a la [Máquina Virtual de Ethereum (EVM)](/developers/docs/evm) para hacerla más simple y eficiente. Estas incluyen [eliminar el código operativo AUTODESTRUCTOR](https://hackmd.io/@vbuterin/selfdestruct): un comando rara vez usado que no se necesita más y que, en algunas circunstancias, puede llegar a ser peligroso, especialmente si se combina con otras actualizaciones futuras del modelo de almacenamiento de Ethereum. Los [clientes de Ethereum](/glossary/#consensus-client) además aún soportan algunos tipos de transacciones antiguas que ahora se pueden eliminar por completo. La forma en que se calcula el [gas](/glossary/#gas) también se puede mejorar y se pueden implementar métodos más eficientes para la aritmética que sustenta algunas operaciones criptográficas.
+Para que la [Máquina Virtual de Ethereum (EVM)](/developers/docs/evm) sea más simple y eficiente, se investigan e implementan mejoras continuamente. Esto implica tanto abordar los componentes heredados como introducir optimizaciones.
-Igualmente, hay actualizaciones que pueden hacerse en otras áreas para los clientes actuales de Ethereum. Un ejemplo es que la ejecución actual y los clientes de consenso usan un tipo diferente de comprensión de la información. Será mucho más fácil e intuitivo compartir datos entre clientes si la estrategia de compresión está unificada en toda la red.
+**Cambios recientes implementados:**
+
+- **Revisión del cálculo del gas:** la forma en que se calcula el [gas](/glossary/#gas) mejoró significativamente con la **EIP-1559 (implementada en la actualización London, 2021)**, introduciendo una tarifa base y un mecanismo de quema para una tarificación de transacciones más predecible.
+- **Restricción de `SELFDESTRUCT`:** el código de operación `SELFDESTRUCT`, aunque se usaba en raras ocasiones, planteaba riesgos potenciales. Su funcionalidad se restringió considerablemente en la **actualización Dencun (marzo de 2024) mediante la EIP-6780** para mitigar los peligros, especialmente en lo que respecta a la gestión del estado.
+- **Tipos de transacción modernizados:** se han introducido nuevos formatos de transacción (p. ej., a través de **EIP-2718** y **EIP-4844** para blobs en la actualización Dencun) para dar soporte a nuevas características y mejorar la eficiencia sobre los tipos heredados.
+
+**Objetivos actuales y futuros:**
+
+- **Manejo adicional de `SELFDESTRUCT`:** aunque restringido, la **posible eliminación completa** del código de operación `SELFDESTRUCT` todavía se está considerando para futuras actualizaciones para simplificar aún más el estado de la EVM. ([Más contexto sobre los problemas de SELFDESTRUCT](https://hackmd.io/@vbuterin/selfdestruct)).
+- **Eliminación progresiva de transacciones heredadas:** aunque los [clientes de Ethereum](/glossary/#consensus-client) siguen admitiendo tipos de transacción más antiguos por retrocompatibilidad, el objetivo es fomentar la migración a tipos más nuevos y **potencialmente dejar obsoletos o eliminar por completo el soporte para los formatos más antiguos** en el futuro.
+- **Investigación continua sobre la eficiencia del gas:** se sigue investigando sobre **nuevos refinamientos para el cálculo del gas**, incluyendo potencialmente conceptos como el gas multidimensional para reflejar mejor el uso de los recursos.
+- **Operaciones criptográficas optimizadas:** se está trabajando para **introducir métodos más eficientes para la aritmética** que subyace a las operaciones criptográficas utilizadas dentro de la EVM.
+
+Asimismo, hay actualizaciones que pueden realizarse en otros componentes de los actuales clientes de Ethereum. Un ejemplo es que los actuales clientes de ejecución y consenso utilizan un tipo diferente de compresión de datos. Compartir datos entre clientes será mucho más fácil e intuitivo cuando el esquema de compresión se unifique en toda la red. Esta sigue siendo un área de exploración.
## Progreso actual {#current-progress}
-Muchas de las actualizaciones requeridas para asegurar Ethereum para el futuro aún **se encuentran en fase de desarrollo y puede llevar varios años** implementarlas. Actualizaciones como eliminar SELFDESTRUCT y armonizar el esquema de compresión usado en los clientes de ejecución y consenso probablemente estén disponibles antes que la criptografía poscuántica.
+Muchas de las actualizaciones de preparación para el futuro a largo plazo, en particular la **resistencia cuántica total para los protocolos principales, todavía están en fase de investigación y pueden pasar varios años** hasta que se implementen.
+
+Sin embargo, **ya se ha avanzado significativamente en los esfuerzos de simplificación.** Por ejemplo, cambios clave como la **restricción de `SELFDESTRUCT` (EIP-6780)** y la introducción de **transacciones con blobs (EIP-4844)** se implementaron en la **actualización Dencun (marzo de 2024)**. También continúa el trabajo de armonización de los esquemas de compresión de clientes y otras mejoras de eficiencia.
-**Más información**
+**Leer más**
- [Gas](/developers/docs/gas)
- [EVM](/developers/docs/evm)
-- [Estructura de datos](/developers/docs/data-structures-and-encoding)
+- [Estructuras de datos](/developers/docs/data-structures-and-encoding)
\ No newline at end of file
From 01caae9548e40af8feeb3739ea1b6809695ecd43 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:16 -0300
Subject: [PATCH 169/589] update(i18n):
public/content/translations/es/developers/docs/development-networks/index.md
---
.../docs/development-networks/index.md | 32 +++++++++----------
1 file changed, 15 insertions(+), 17 deletions(-)
diff --git a/public/content/translations/es/developers/docs/development-networks/index.md b/public/content/translations/es/developers/docs/development-networks/index.md
index 9c37a53ab8c..7b618f2d37b 100644
--- a/public/content/translations/es/developers/docs/development-networks/index.md
+++ b/public/content/translations/es/developers/docs/development-networks/index.md
@@ -10,32 +10,32 @@ De forma similar a la ejecución de un servidor local en tu ordenador para reali
## Requisitos previos {#prerequisites}
-Sería interesante que comprendieras los [conceptos básicos del bloque de Ethereum](/developers/docs/ethereum-stack/) y [las redes de Ethereum](/developers/docs/networks/) antes de sumergirte en la información sobre las redes de desarrollo.
+Deberías entender los [conceptos básicos del bloque de Ethereum](/developers/docs/ethereum-stack/) y las [redes de Ethereum](/developers/docs/networks/) antes de sumergirte en las redes de desarrollo.
## ¿Qué es una red de desarrollo? {#what-is-a-development-network}
Las redes de desarrollo son esencialmente clientes de Ethereum (implementaciones de Ethereum), que se han diseñado específicamente para el desarrollo local.
-**¿Por qué no basta con ejecutar localmente un nodo estándar de Ethereum?**
+**¿Por qué no basta con ejecutar un nodo estándar de Ethereum localmente?**
-_Podría_ [ejecutar un nodo](/developers/docs/nodes-and-clients/#running-your-own-node), pero, dado a que las redes de desarrollo están diseñadas específicamente para el desarrollo, a menudo vienen repletas de funciones convenientes como:
+_Podrías_ [ejecutar un nodo](/developers/docs/nodes-and-clients/#running-your-own-node), pero como las redes de desarrollo están diseñadas específicamente para el desarrollo, a menudo vienen con características convenientes como:
-- Sembrar de forma determinista su cadena de bloques local con datos (p. ej., cuentas con saldos en ETH).
+- Sembrar de forma determinista tu cadena de bloques local con datos (p. ej., cuentas con saldos de ETH)
- Producir bloques al instante con cada transacción que recibe, en orden y sin demora
- Funcionalidad mejorada para depurar y registrar
## Herramientas disponibles {#available-projects}
-**Nota**: La mayoría de los [frameworks de desarrollo](/developers/docs/frameworks/) incluyen una red de desarrollo integrada. Te recomendamos comenzar con un framework para [configurar tu entorno de desarrollo local](/developers/local-environment/).
+**Nota**: la mayoría de los [frameworks de desarrollo](/developers/docs/frameworks/) incluyen una red de desarrollo integrada. Te recomendamos empezar con un framework para [configurar tu entorno de desarrollo local](/developers/local-environment/).
-### Red de tipo Hardhat {#hardhat-network}
+### Red Hardhat {#hardhat-network}
Una red local de Ethereum diseñada para el desarrollo. Le permite implementar sus contratos, ejecutar sus pruebas y depurar su código.
La red de tipo Hardhat viene integrada con Hardhat, que es un entorno de desarrollo de Ethereum para profesionales.
-- [Sitio web.](https://hardhat.org/)
-- [GitHub](https://github.com/nomiclabs/hardhat)
+- [Sitio web](https://hardhat.org/)
+- [GitHub](https://github.com/NomicFoundation/hardhat)
### Cadenas de baliza locales {#local-beacon-chains}
@@ -44,13 +44,11 @@ Algunos clientes de consenso tienen herramientas integradas para implementar cad
- [Red de prueba local con Lodestar](https://chainsafe.github.io/lodestar/contribution/advanced-topics/setting-up-a-testnet#post-merge-local-testnet/)
- [Red de prueba local con Lighthouse](https://lighthouse-book.sigmaprime.io/setup.html#local-testnets)
-### Cadenas de prueba públicas de Ethereum {#public-beacon-testchains}
+### Redes de prueba públicas de Ethereum {#public-beacon-testchains}
-También hay dos implantaciones de prueba públicas mantenidas de Ethereum: Sepolia y Hoodi. Sepolia es la red de prueba estándar recomendada para el desarrollo de aplicaciones, con un conjunto de validadores cerrado para una sincronización rápida. Hoodi es una red de prueba para validación y staking, que utiliza un conjunto de validadores abierto y permite potencialmente que cualquiera valide.
+También hay dos implementaciones de prueba públicas de Ethereum mantenidas: Sepolia y Hoodi. La red de prueba recomendada con soporte a largo plazo es Hoodi, en la que cualquiera es libre de validar. Sepolia usa un conjunto de validadores autorizados, lo que significa que no hay acceso general a nuevos validadores en esta red de prueba.
-- [Launchpad de staking de Hoodi](https://hoodi.launchpad.ethereum.org/en/)
-- [Sitio web de Sepolia](https://sepolia.dev/)
-- [Sitio web de Hoodi](https://hoodi.ethpandaops.io/)
+- [Lanzador de staking de Hoodi](https://hoodi.launchpad.ethereum.org/)
### Paquete de Ethereum de Kurtosis {#kurtosis}
@@ -58,16 +56,16 @@ Kurtosis es un sistema de construcción para entornos de prueba de múltiples co
El paquete Ethereum Kurtosis se puede utilizar para instanciar rápidamente una red de pruebas de Ethereum parametrizable, altamente escalable y privada sobre Docker o Kubernetes. El paquete es compatible con los principales clientes de la Capa de Ejecución (EL) y la Capa de Consenso (CL). Kurtosis gestiona con elegancia todos los mapeos locales de puertos y conexiones de servicios para una red representativa que se utilizará en flujos de trabajo de validación y pruebas relacionados con la infraestructura básica de Ethereum.
-- [Paquete de red Ethereum](https://github.com/kurtosis-tech/ethereum-package)
+- [Paquete de red de Ethereum](https://github.com/kurtosis-tech/ethereum-package)
- [Sitio web](https://www.kurtosis.com/)
- [GitHub](https://github.com/kurtosis-tech/kurtosis)
- [Documentación](https://docs.kurtosis.com/)
-## Leer más {#further-reading}
+## Lecturas adicionales {#further-reading}
-_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Temas relacionados {#related-topics}
-- [Entornos de desarrollo](/developers/docs/frameworks/)
+- [Marcos de desarrollo](/developers/docs/frameworks/)
- [Configurar un entorno de desarrollo local](/developers/local-environment/)
From 73f63703389ac648d2b8cfade773a882f7cac28b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:18 -0300
Subject: [PATCH 170/589] update(i18n):
public/content/translations/es/developers/docs/standards/index.md
---
.../es/developers/docs/standards/index.md | 56 +++++++++----------
1 file changed, 28 insertions(+), 28 deletions(-)
diff --git a/public/content/translations/es/developers/docs/standards/index.md b/public/content/translations/es/developers/docs/standards/index.md
index ccdf92df5f5..88ebd6e43f7 100644
--- a/public/content/translations/es/developers/docs/standards/index.md
+++ b/public/content/translations/es/developers/docs/standards/index.md
@@ -1,24 +1,24 @@
---
title: Estándares de desarrollo de Ethereum
-description:
+description: Conzca los estándares de Ethereum, incluidos los EIP, los estándares de tókenes como ERC-20 y ERC-721, y las convenciones de desarrollo.
lang: es
incomplete: true
---
-## Resumen de estándares {#standards-overview}
+## Resumen de los estándares {#standards-overview}
-La comunidad Ethereum ha adoptado muchos estándares que ayudan a mantener interoperables proyectos (como [clientes Ethereum](/developers/docs/nodes-and-clients/) y carteras) a través de implementaciones, y asegurar que los contratos inteligentes y dapps sigan siendo compuestos.
+La comunidad de Ethereum ha adoptado muchos estándares que ayudan a mantener la interoperabilidad de los proyectos (como los [clientes de Ethereum](/developers/docs/nodes-and-clients/) y las billeteras) entre implementaciones, y garantizan que los contratos inteligentes y las dapps sigan siendo componibles.
-Normalmente se introducen estándares como [Propuestas de mejora de Ethereum](/eips/) (EIP), que se someten a un debate entre los miembros de la comunidad a través de un [proceso estándar](https://eips.ethereum.org/EIPS/eip-1).
+Normalmente, los estándares se presentan como [Propuestas de Mejora de Ethereum](/eips/) (EIP), que son debatidas por los miembros de la comunidad a través de un [proceso estándar](https://eips.ethereum.org/EIPS/eip-1).
-- [Introducción a EIP](/eips/)
+- [Introducción a las EIP](/eips/)
- [Lista de EIP](https://eips.ethereum.org/)
-- [Repositorio de GitHub de EIP](https://github.com/ethereum/EIPs)
-- [Tablón de discusión de EIP](https://ethereum-magicians.org/c/eips)
-- [Introducción a la Gobernanza de Ethereum](/governance/)
-- [Resumen de gobernanza de Ethereum](https://web.archive.org/web/20201107234050/https://blog.bmannconsulting.com/ethereum-governance/) _31 de marzo de 2019, Mann Boris_
-- [Gobernanza de desarrollo del protocolo de Ethereum y coordinación de actualización de la red](https://hudsonjameson.com/posts/2020-03-23-ethereum-protocol-development-governance-and-network-upgrade-coordination/) _23 de marzo de 2020, Hudson Jameson_
-- [Lista de reproducción de todas las reuniones de desarrolladores principales de Ethereum](https://www.youtube.com/@EthereumProtocol) _(lista de reproducción de YouTube)_
+- [Repositorio de GitHub de las EIP](https://github.com/ethereum/EIPs)
+- [Foro de debate de las EIP](https://ethereum-magicians.org/c/eips)
+- [Introducción a la gobernanza de Ethereum](/governance/)
+- [Resumen de la gobernanza de Ethereum](https://web.archive.org/web/20201107234050/https://blog.bmannconsulting.com/ethereum-governance/) _31 de marzo de 2019 - Boris Mann_
+- [Ethereum Protocol Development Governance and Network Upgrade Coordination](https://hudsonjameson.com/posts/2020-03-23-ethereum-protocol-development-governance-and-network-upgrade-coordination/) _23 de marzo de 2020 - Hudson Jameson_
+- [Lista de reproducción de todas las reuniones de los desarrolladores del núcleo de Ethereum](https://www.youtube.com/@EthereumProtocol) _(Lista de reproducción de YouTube)_
## Tipos de estándares {#types-of-standards}
@@ -30,30 +30,30 @@ Hay tres tipos de EIP:
Además, el Standard Track se subdivide en 4 categorías:
-- [Core](https://eips.ethereum.org/core): mejoras que requieren una bifurcación de consenso
-- [Networking](https://eips.ethereum.org/networking): mejoras en torno a devp2p y el Light Ethereum Subprotocol (LES), así como propuestas de mejoras a las especificaciones de protocolo de red de whisper y swarm.
-- [Interface](https://eips.ethereum.org/interface): mejoras en torno a especificaciones y estándares API/RPC del cliente, y ciertos estándares a nivel del lenguaje, como nombres de métodos y ABI de contratos.
+- [Núcleo](https://eips.ethereum.org/core): mejoras que requieren una bifurcación de consenso
+- [Redes](https://eips.ethereum.org/networking): mejoras en torno a devp2p y el subprotocolo ligero de Ethereum, así como mejoras propuestas en las especificaciones del protocolo de red de Whisper y Swarm.
+- [Interfaz](https://eips.ethereum.org/interface): mejoras en torno a las especificaciones y estándares de la API/RPC del cliente, y ciertos estándares a nivel de lenguaje, como los nombres de los métodos y las ABI de los contratos.
- [ERC](https://eips.ethereum.org/erc): estándares y convenciones a nivel de aplicación
Puede encontrar información más detallada sobre estos diferentes tipos y categorías en [EIP-1](https://eips.ethereum.org/EIPS/eip-1#eip-types)
### Estándares de tokens {#token-standards}
-- [ERC-20](/developers/docs/standards/tokens/erc-20/): Una interfaz para tokens fungibles (intercambiables), como tokens de votación, tokens de staking o monedas virtuales.
- - [ERC-223](/developers/docs/standards/tokens/erc-223/): Estándar de tokens fungibles que hace que los tokens se comporten idénticos a ether y admite el manejo de transferencias de tokens en el lado del destinatario.
- - [ERC-1363](/developers/docs/standards/tokens/erc-1363/): Define una interfaz de token para los tokens ERC que soporta la ejecución del código del destinatario después de la transferencia o transferFrom, o código spender después de la aprobación.
-- [ERC-721](/developers/docs/standards/tokens/erc-721/): Una interfaz para tokens no fungibles (NFT), como un deed de una obra de arte o una canción.
- - [ERC-2309](https://eips.ethereum.org/EIPS/eip-2309): Un evento estandarizado emitido al crear/transferir uno, o muchos tokens no fungibles usando identificadores consecutivos de token.
- - [ERC-4400](https://eips.ethereum.org/EIPS/eip-4400): Extensión de interfaz para el rol de consumidor EIP-721.
- - [ERC-4907](https://eips.ethereum.org/EIPS/eip-4907): Añada un rol de tiempo limitado con permisos restringidos a los tokens ERC-721.
-- [ERC-777](/developers/docs/standards/tokens/erc-777/) - **(NO RECOMENDEDO**: Un mejora de estándar de tokens respecto de ERC-20.
-- [ERC-1155](/developers/docs/standards/tokens/erc-1155/): Un estándar de token que puede contener activos fungibles y no fungibles.
-- [ERC-4626](/developers/docs/standards/tokens/erc-4626/): Estándar de bóveda tokenizada diseñado para optimizar y unificar los parámetros técnicos de las bóvedas que otorgan rendimiento.
+- [ERC-20](/developers/docs/standards/tokens/erc-20/) - Una interfaz estándar para tokens fungibles (intercambiables), como los tokens de votación, los tokens de staking o las monedas virtuales.
+ - [ERC-223](/developers/docs/standards/tokens/erc-223/) - Un estándar de tokens fungibles que hace que los tokens se comporten de forma idéntica al ether y admite el manejo de las transferencias de tokens por parte del destinatario.
+ - [ERC-1363](/developers/docs/standards/tokens/erc-1363/) - Una interfaz de extensión para tokens ERC-20 que permite ejecutar una retrollamada en los contratos de los destinatarios en una única transacción.
+- [ERC-721](/developers/docs/standards/tokens/erc-721/) - Una interfaz estándar para tokens no fungibles, como un título de propiedad para una obra de arte o una canción.
+ - [ERC-2309](https://eips.ethereum.org/EIPS/eip-2309) - Un evento estandarizado que se emite al crear/transferir uno o varios tokens no fungibles utilizando identificadores de token consecutivos.
+ - [ERC-4400](https://eips.ethereum.org/EIPS/eip-4400) - Extensión de la interfaz para la función de consumidor de EIP-721.
+ - [ERC-4907](https://eips.ethereum.org/EIPS/eip-4907) - Añade una función de tiempo limitado con permisos restringidos a los tokens ERC-721.
+- [ERC-777](/developers/docs/standards/tokens/erc-777/) - **(NO RECOMENDADO)** Un estándar de token que mejora el ERC-20.
+- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - Un estándar de token que puede contener tanto activos fungibles como no fungibles.
+- [ERC-4626](/developers/docs/standards/tokens/erc-4626/) - Un estándar de bóveda tokenizada diseñado para optimizar y unificar los parámetros técnicos de las bóvedas que generan rendimiento.
-Obtenga más información sobre los [estándar de tokens](/developers/docs/standards/tokens/).
+Más información sobre los [estándares de tokens](/developers/docs/standards/tokens/).
-## Más lectura {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Propuestas de mejora de Ethereum (EIP)](/eips/)
+- [Propuestas de Mejora de Ethereum (EIP)](/eips/)
-_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
From fe57ae1a9637b67ad9164baab0b4858281d0b123 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:19 -0300
Subject: [PATCH 171/589] update(i18n):
public/content/translations/es/community/code-of-conduct/index.md
---
.../es/community/code-of-conduct/index.md | 58 +++++++++----------
1 file changed, 29 insertions(+), 29 deletions(-)
diff --git a/public/content/translations/es/community/code-of-conduct/index.md b/public/content/translations/es/community/code-of-conduct/index.md
index 6d7150f7321..f768bd578a6 100644
--- a/public/content/translations/es/community/code-of-conduct/index.md
+++ b/public/content/translations/es/community/code-of-conduct/index.md
@@ -18,60 +18,60 @@ La comunidad de ethereum.org se esfuerza por ser:
- inclusiva
- accesible
- gestionada por la comunidad
-- enfocado en la tecnología subyacente y los casos de uso de Ethereum
-- un movimiento centrado en conceptos y principios de diseño de Ethereum
+- enfocada en la tecnología subyacente y los casos de uso de Ethereum
+- enfocada en los conceptos y principios de diseño de Ethereum
## Lo que no somos {#what-we-are-not}
-- La página web de Ethereum Foundation
+- El sitio web de la Ethereum Foundation
- Una plataforma para promover inversiones o especulaciones de cualquier tipo
- Una plataforma para promover o respaldar proyectos u organizaciones individuales
-- Un intercambio descentralizado (DEX), centralizado (CEX) o cualquier otra estructura financiera
-- Una plataforma que da consejos financieros o legales de cualquier tipo
+- Un DEX, un CEX o cualquier otra forma de plataforma financiera
+- Una plataforma que ofrece asesoramiento financiero o legal de cualquier tipo
## Código de conducta {#code-of-conduct}
### Compromiso {#pledge}
-La participación abierta es fundamental para la ética de ethereum.org. Somos un sitio web y una comunidad apoyada por miles de colaboradores, y eso solo es posible si mantenemos un ambiente receptivo y participativo. Con este fin, los colaboradores de este sitio se comprometen a mantener un entorno libre de acoso para todos los participantes en todas las plataformas y espacios comunitarios de ethereum.org. La comunidad de ethereum.org le da la bienvenida y valora a cualquier persona que quiera participar de una manera constructiva y cordial, independientemente de su edad, discapacidad, etnia, orientación sexual, identidad de género, grado de experiencia, área de especialización, educación, estado socioeconómico, nacionalidad, apariencia personal, raza, religión o cualquier otro aspecto relacionado con la diversidad.
+La participación abierta es fundamental para la ética de ethereum.org. Somos un sitio web y una comunidad mantenida por miles de colaboradores, y esto solo es posible si mantenemos un ambiente acogedor y participativo. Con este fin, los colaboradores de este sitio se comprometen a mantener un entorno libre de acoso para todos los participantes en todas las plataformas y espacios comunitarios de ethereum.org. La comunidad de ethereum.org da la bienvenida y valora a cualquier persona que quiera participar de una manera constructiva y amistosa, independientemente de su edad, discapacidad, etnia, características sexuales, identidad de género, nivel de experiencia, área de especialización, educación, estatus socioeconómico, nacionalidad, apariencia personal, raza, religión o cualquier otra dimensión de la diversidad.
### Alcance {#scope}
-Este código de conducta es apalicable a todos los espacios de ethereum.org (como GitHub, Discord, Figma Crowdin, Twitter y otras plataformas en línea), y también cuando la comunidad está representada en espacios públicos del mundo real tales como reuniones, conferencias y eventos.
+Este código de conducta se aplica a todos los espacios de ethereum.org (como GitHub, Discord, Figma, Crowdin, X (antes Twitter) y otras plataformas en línea), y también se aplica cuando la comunidad está representada en espacios públicos del mundo real, como en reuniones, conferencias y eventos.
### Nuestros estándares {#our-standards}
Algunos ejemplos de comportamiento que contribuyen a crear un entorno positivo son los siguientes:
-- Utilizar un lenguaje abierto e inclusivo.
-- Mostrar respeto por los diferentes puntos de vista y experiencias
-- Aceptar con buena voluntad y/o brindar críticas constructivas con empatía.
-- Resolver conflictos o desacuerdos con calma y profesionalidad.
-- Mostrar empatía y tolerancia hacia otros miembros de la comunidad.
-- Fomentar y dar cabida a nuevas voces en la comunidad.
+- Utilizar un lenguaje acogedor e inclusivo
+- Ser respetuoso con los diferentes puntos de vista y experiencias
+- Aceptar con amabilidad y/o brindar críticas constructivas con empatía
+- Actuar con calma y profesionalidad al resolver conflictos o desacuerdos
+- Mostrar empatía y tolerancia hacia otros miembros de la comunidad
+- Fomentar y dar cabida a nuevas voces en la comunidad
Algunos ejemplos de comportamiento inaceptable por parte de los participantes son los siguientes:
-- Violencia física, amenazas con violencia física o alentar a cualquier tipo de violencia física.
-- El uso de un lenguaje o de imágenes sexualizadas o la imposición de una atención sexual no deseada.
-- Hacerse pasar por otro individuo, o reclamar fraudulentamente afiliación a alguna organización o con algún individuo
-- Trolear, insultar/hacer comentarios despectivos y ataques personales o políticos.
-- Hostigar a otros miembros de la comunidad en canales públicos o privados.
-- Publicar información privada de otros, como una dirección física o electrónica, sin permiso explícito.
-- Ingeniería social, estafas o manipular a otros miembros de la comunidad.
-- Promoción de inversiones, tókenes, proyectos o cualquier otra elemento con fines de lucro personal ya sea monetario o no.
-- Espamear servidores con contenido no relacionado con el tema.
-- Ignorar las solicitudes o advertencias de los moderadores de la comunidad.
-- Participar en otro tipo de conducta que razonablemente se podría considerar inapropiada en un entorno profesional.
+- Violencia física, amenaza de violencia física o fomento de la violencia física de cualquier tipo
+- El uso de lenguaje o imágenes sexualizadas o la imposición de atención sexual no deseada
+- Hacerse pasar por otra persona o reclamar de forma deshonesta la afiliación con alguna persona u organización
+- Troleo, comentarios insultantes o despectivos y ataques personales o políticos
+- Acosar a otros miembros de la comunidad en canales públicos o privados
+- Publicar información privada de otras personas, como una dirección física o electrónica, sin permiso explícito
+- La ingeniería social, las estafas o cualquier otra forma de manipulación de otros miembros de la comunidad
+- Promocionar inversiones, tokens, proyectos o cualquier otra cosa para beneficio personal, ya sea monetario o no monetario
+- Hacer spam en los servidores con contenido no relacionado con el tema
+- Ignorar las solicitudes o advertencias de los moderadores de la comunidad
+- Participar en otras conductas que razonablemente pudieran considerarse inapropiadas en un entorno profesional
### Denuncias {#reporting}
-Las infracciones del código de conducta normalmente serán visibles para la comunidad, ya que tratamos de hacerlo todo en canales abiertos y públicos, permitiendo que los miembros de la comunidad se autocontrolen.
+Las violaciones del código de conducta normalmente serán visibles para la comunidad, ya que intentamos hacer todo en canales abiertos y públicos, lo que permite que los miembros de la comunidad se autorregulen.
-No obstante, si sucede algo que considere digno de atención, puede informar a alguien que tenga la función de moderador (por ejemplo, en la guía Discord) para que puedan ayudarle a investigar y actuar de la manera debida.
+Sin embargo, si ocurre algo que consideras que necesita atención, puedes comunicárselo a alguien con un rol de moderación (p. ej., un guía de Discord) para que pueda ayudar a investigar y dar la respuesta adecuada.
-Al denunciar, por favor incluya tantos detalles como sea posible, con ejemplos específicos y fechas concretas. Esto ayudará a garantizar unos resultados justos.
+Al denunciar, incluye tantos detalles como sea posible, con ejemplos específicos y marcas de tiempo. Esto ayudará a garantizar un resultado justo.
-### Cumplimiento {#enforcement}
+### Aplicación de las normas {#enforcement}
-En función de la gravedad, las personas que violen el código de conducta pueden recibir advertencias, suspensiones temporales o prohibiciones permanentes de las comunidades de ethereum.org.
+Dependiendo de la gravedad, las personas que violen el código de conducta pueden recibir advertencias, suspensiones temporales o prohibiciones permanentes de las comunidades de ethereum.org.
From d7d956746d6bc98cfca97ead35a718d99cf153c3 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:21 -0300
Subject: [PATCH 172/589] update(i18n):
public/content/translations/es/guides/how-to-use-a-wallet/index.md
---
.../es/guides/how-to-use-a-wallet/index.md | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/public/content/translations/es/guides/how-to-use-a-wallet/index.md b/public/content/translations/es/guides/how-to-use-a-wallet/index.md
index 8a7b0e22c4e..78eee2df023 100644
--- a/public/content/translations/es/guides/how-to-use-a-wallet/index.md
+++ b/public/content/translations/es/guides/how-to-use-a-wallet/index.md
@@ -1,12 +1,13 @@
---
title: Cómo utilizar una cartera
+metaTitle: Cómo usar carteras de Ethereum | Guía detallada
description: Una guía para explicar cómo enviar, recivir tókenes y conectarse con proyectos de web3.
lang: es
---
# Cómo utilizar una cartera
-Domine el funcionamiento de todas las funciones básicas de su cartera. Si aún no tiene una, revise [nuestra guía sobre cómo crear una cuenta de Ethereum](/guides/how-to-create-an-ethereum-account/).
+Domine el funcionamiento de todas las funciones básicas de su cartera. Si aún no tienes una, consulta nuestra guía: [Cómo crear una cuenta de Ethereum](/guides/how-to-create-an-ethereum-account/).
## Abra su cartera
@@ -38,8 +39,7 @@ Diferentes aplicaciones pueden variar o usar diferentes idiomas, pero todas debe
3. Introduzca la dirección o escanee el código QR con su cámara y así no tiene que escribir la dirección manualmente.
4. Haga clic en el botón «Enviar» en su cartera (u otra palabra similar).
-
-
+
5. Muchos activos, como DAI o USDC, existen en múltiples redes. Cuando transfiera tókenes de criptomonedas, asegúrese de que el destinatario use la misma red que usted, ya que no sean intercambiables.
6. Asegúrese de que su cartera tiene suficiente ETH como para cubrir la comisión de transacción, que varía dependiendo de las condiciones de la red. La mayoría de las carteras añadirán automáticamente la comisión sugerida que después debe confirmar.
@@ -53,14 +53,14 @@ Su dirección será la misma en todos los proyectos de Ethereum. No tiene que re
2. Si la página de inicio es sólo una descripción estática del proyecto, debería poder hacer clic en el botón «Abrir la aplicación» en el menú que le redirigirá a la web real de la aplicación.
3. Una vez que se encuentre dentro de la aplicación haga click en «Conectar».
-
+
4. Seleccione su cartera de la lista de opciones facilitada. Si no puede ver su cartera, puede que esté oculta bajo la opción «WalletConnect».
-
+
-5. Confirme la solicitud en su cartera para establecer la conexión. ** Aceptar este mensaje no requiere gastar ETH **.
-6. ¡Y ya está! Puede empezar a utilizar la aplicación. Puede encontrar algunos proyectos interesantes en nuestra [ página DApps](/apps/#explore).
+5. Confirme la solicitud en su cartera para establecer la conexión. **Firmar este mensaje no debería requerir gastar ETH**.
+6. ¡Y ya está! Puede empezar a utilizar la aplicación. Puedes encontrar algunos proyectos interesantes en nuestra [página de dApps](/apps/#explore).
@@ -76,7 +76,7 @@ Su dirección será la misma en todos los proyectos de Ethereum. No tiene que re
### Si tengo una dirección de ETH, ¿tengo la misma dirección en otras cadenas de bloques?
-Puede utilizar la misma dirección en todas las cadenas de bloques compatibles con EVM (si tiene el tipo de cartera con una frase de recuperación). Esta [lista](https://chainlist.org/) le mostrará qué csdenas de bloques puede usar con la misma dirección. Algunas cadenas de bloques, como Bitcoin, implementan un conjunto de reglas de red completamente por separado y necesitará una dirección diferente con un formato diferente. Si tiene una cartera de contrato inteligente, debe consultar el sitio web del producto para obtener más información sobre qué cadenas de bloque se admiten.
+Puede utilizar la misma dirección en todas las cadenas de bloques compatibles con EVM (si tiene el tipo de cartera con una frase de recuperación). Esta [lista](https://chainlist.org/) te mostrará qué cadenas de bloques puedes usar con la misma dirección. Algunas cadenas de bloques, como Bitcoin, implementan un conjunto de reglas de red completamente por separado y necesitará una dirección diferente con un formato diferente. Si tiene una cartera de contrato inteligente, debe consultar el sitio web del producto para obtener más información sobre qué cadenas de bloque se admiten.
### ¿Puedo usar la misma dirección en múltiples dispositivos?
@@ -84,7 +84,7 @@ Sí, puedes usar la misma dirección en varios dispositivos. Las carteras sólo
### No he recibido mi criptomoneda, ¿dónde puedo verificar el estado de la transacción?
-Puede utilizar [ el explorador de bloques](/developers/docs/data-and-analytics/block-explorers/) para ver el estado de cualquier transacción en tiempo real. Todo lo que tiene que hacer es buscar la dirección de la cartera o el ID de la transacción.
+Puedes usar los [exploradores de bloques](/developers/docs/data-and-analytics/block-explorers/) para ver el estado de cualquier transacción en tiempo real. Todo lo que tiene que hacer es buscar la dirección de la cartera o el ID de la transacción.
### ¿Puedo cancelar o devolver transacciones?
From 5fac79f66a541162858ab8139d6bfbf9313c0572 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:22 -0300
Subject: [PATCH 173/589] update(i18n):
public/content/translations/es/contributing/adding-wallets/index.md
---
.../es/contributing/adding-wallets/index.md | 66 +++++++++----------
1 file changed, 33 insertions(+), 33 deletions(-)
diff --git a/public/content/translations/es/contributing/adding-wallets/index.md b/public/content/translations/es/contributing/adding-wallets/index.md
index 713e6d34ab9..268f58a18c0 100644
--- a/public/content/translations/es/contributing/adding-wallets/index.md
+++ b/public/content/translations/es/contributing/adding-wallets/index.md
@@ -4,7 +4,7 @@ description: La política que utilizamos al agregar billeteras a ethereum.org
lang: es
---
-# Cómo añadir carteras {#adding-wallets}
+# Añadir billeteras {#adding-wallets}
Queremos asegurarnos de mostrar una variedad de billeteras para abarcar el panorama de billeteras tan abundante en funciones, de modo que los usuarios puedan explorar Ethereum de manera segura.
@@ -12,52 +12,53 @@ Todos pueden sugerir añadir una cartera en ethereum.org. Si hemos omitido algun
Actualmente, puede ver las billeteras listadas aquí:
-- [https://ethereum.org/es/wallets/find-wallet/](/wallets/find-wallet/)
+- [ethereum.org/wallets/find-wallet/](/wallets/find-wallet/)
Las billeteras cambian rápidamente en Ethereum. Hemos intentado crear un marco de trabajo justo para su consideración en ethereum.org, pero los criterios de listado cambiarán y evolucionarán con el tiempo.
## El marco de decisión {#the-decision-framework}
-### Criterios para la inclusión: los aspectos obligatorios {#the-must-haves}
+### Criterios de inclusión: los imprescindibles {#the-must-haves}
-- **Un producto con seguridad analizada**: ya sea a través de una auditoría, un equipo interno de seguridad, código abierto o algún otro método, su cartera debe estar segura y protegida. Esto reduce el riesgo para nuestros usuarios y nos muestra que usted se toma la seguridad en serio.
-- **Una billetera que ha estado “en funcionamiento” por más de seis meses O cuyos publicadores sean un organización con un historial de buena reputación**: este es otro indicador de seguridad. Seis meses es un buen parámetro temporal para que se hayan descubierto errores y vulnerabilidades críticos. Exigimos seis meses para ayudar a filtrar las bifurcaciones que se abandonan rápidamente como proyectos.
-- **Reflejar el trabajo de un equipo activo**: esto ayuda a garantizar la calidad y que el usuario obtendrá asistencia en caso de tener dudas.
-- **Información honesta y precisa de los listados**: se espera que cualquier contenido sugerido de proyectos proporcione información honesta y precisa. Se eliminarán aquellos productos que falsifiquen información de listado, como al declarar que su producto es “de código abierto” cuando no lo es.
-- **Un punto de contacto**: un punto de contacto para la billetera ayudará considerablemente a los usuarios a obtener información precisa cuando se realicen cambios. Esto seguirá actualizando a ethereum.org de forma adecuada al recopilar futura información.
-- **Transacciones EIP-1559 (tipo 2)**: su cartera debe soportar estas transacciones en la red principal de Ethereum.
-- **Buena experiencia de usuario**: Si bien la UX es subjetiva, si varios miembros del equipo central prueban el producto y lo encuentran difícil de usar, nos reservamos el derecho de rechazar la cartera y, en su lugar, proporcionaremos sugerencias útiles para mejorar. Esto se hace para proteger a nuestra base de usuarios, que en su mayoría está compuesta por principiantes.
+- **Un producto con seguridad probada**: ya sea a través de una auditoría, un equipo de seguridad interno, código fuente abierto o algún otro método, la seguridad de su billetera debe ser fiable. Esto reduce el riesgo para nuestros usuarios y nos muestra que usted se toma la seguridad en serio.
+- **Una billetera que ha estado “activa” durante más de seis meses O que haya sido lanzada por un grupo con una trayectoria de buena reputación**: este es otro indicador de seguridad. Seis meses es un buen parámetro temporal para que se hayan descubierto errores y vulnerabilidades críticos. Exigimos seis meses para ayudar a filtrar las bifurcaciones que se abandonan rápidamente como proyectos.
+- **Desarrollado por un equipo activo**: esto ayuda a garantizar la calidad y que un usuario obtendrá soporte para sus consultas.
+- **Información honesta y precisa sobre el listado**: se espera que cualquier sugerencia de listado de proyectos venga con información honesta y precisa. Se eliminarán aquellos productos que falsifiquen información de listado, como al declarar que su producto es “de código abierto” cuando no lo es.
+- **Punto de contacto**: un punto de contacto para la billetera nos ayudará enormemente a obtener información precisa cuando se realicen cambios. Esto seguirá actualizando a ethereum.org de forma adecuada al recopilar futura información.
+- **Transacciones EIP-1559 (tipo 2)**: su billetera debe admitir transacciones EIP-1559 (tipo 2) para las transacciones en la red principal de Ethereum.
+- **Buena experiencia de usuario**: si bien la UX es subjetiva, si varios miembros del equipo principal prueban el producto y lo encuentran difícil de usar, nos reservamos el derecho a rechazar la billetera y, en su lugar, ofreceremos sugerencias útiles para mejorarla. Esto se hace para proteger a nuestra base de usuarios, que en su mayoría está compuesta por principiantes.
+- **Enfoque en Ethereum**: una billetera debe proporcionar una experiencia principalmente enfocada en Ethereum. Esto significa que Ethereum (o cualquier L2) está configurada como la red por defecto, los activos ERC son compatibles y las características están alineadas con el ecosistema de Ethereum. No se incluirán en la lista las billeteras que den prioridad en la interfaz de usuario a capas 1 alternativas.
### Eliminación de productos {#product-removals}
-- **Información actualizada**: Los proveedores de carteras son responsables de volver a enviar la información de su cartera cada 6 meses para garantizar la validez y relevancia de la información proporcionada (incluso si no hay cambios en su producto). Si el equipo del producto no lo cumple, ethereum.org puede eliminar el proyecto de la página.
+- **Información actualizada**: los proveedores de billeteras son responsables de volver a enviar la información de su billetera cada 6 meses para garantizar la validez y la relevancia de la información proporcionada (incluso si no hay cambios en su producto). Si el equipo del producto no lo cumple, ethereum.org puede eliminar el proyecto de la página.
### Otros criterios: los aspectos deseables {#the-nice-to-haves}
-- **Acceso global**: su billetera no tiene limitaciones geográficas ni requisitos de KYC (conozca a su cliente) que no permiten a determinadas personas acceder a su servicio.
-- **Disponibilidad en varios idiomas**: su billetera se tradujo a varios idiomas y permite que usuarios de todo el mundo puedan acceder a ella.
-- **Código abierto**: la base de código (no solo los módulos) de todo su proyecto debe ser accesible y debe aceptar solicitudes de incorporación de cambios (PR) de la comunidad en general.
+- **Accesible globalmente**: su billetera no tiene limitaciones geográficas ni requisitos KYC que excluyan a ciertas personas del acceso a su servicio.
+- **Disponible en varios idiomas**: su billetera está traducida a varios idiomas, lo que permite que los usuarios de todo el mundo puedan acceder a ella.
+- **Código abierto**: la base de código de todo su proyecto (no solo los módulos) debe ser accesible y debe aceptar solicitudes de pull (PR) de la comunidad en general.
- **Sin custodia**: los usuarios controlan sus fondos. Aunque su producto desaparezca, los usuarios aún pueden acceder y mover sus fondos.
- **Compatibilidad con billeteras de hardware**: los usuarios pueden conectar su billetera de hardware para firmar transacciones.
-- **WalletConnect**: los usuarios pueden conectarse a dApps a través de WalletConnect.
-- **Importación de endpoints RPC de Ethereum**: los usuarios pueden importar datos de nodos RPC, lo que les permite conectarse a un nodo de su elección y a otras redes compatibles con EVM.
+- **WalletConnect**: los usuarios pueden conectarse a dapps utilizando WalletConnect.
+- **Importación de puntos de conexión RPC de Ethereum**: los usuarios pueden importar datos RPC de nodos, lo que les permite conectarse a un nodo de su elección o a otras redes compatibles con la EVM.
- **NFT**: los usuarios pueden ver e interactuar con sus NFT en la billetera.
-- **Conexión a aplicaciones de Ethereum**: los usuarios pueden conectarse y usar apliaciones de Ethereum.
-- **Staking**: los usuarios pueden hacer staking directamente a través de su billetera.
+- **Conectarse a aplicaciones de Ethereum**: los usuarios pueden conectarse a aplicaciones de Ethereum y usarlas.
+- **Staking**: los usuarios pueden hacer staking directamente a través de la billetera.
- **Intercambios**: los usuarios pueden intercambiar tokens a través de la billetera.
-- **Acceso multicadena**: por defecto, su billetera permite que los usuarios accedan a varias redes de cadenas de bloque.
-- **Redes de capa 2**: por defecto, su billetera permite que los usuarios accedan a redes de capa 2.
-- **Comisiones de gas personalizadas**: su billetera permite que los usuarios ajusten las comisiones de gas (comisión base, comisión prioritaria, comisión máx.).
-- **Compatibilidad con ENS**: su billetera permite que los usuarios envíen transacciones a nombres ENS (servicio de nombres de Ethereum).
-- **Compatibilidad con ERC-20**: su billetera permite que los usuarios importen contratos de tokens ERC-20 o consulta y muestra automáticamente tokens ERC-20.
-- **Comprar criptos**: su billetera permite que los usarios compren directamente critpomonedas y se incorporen al ecosistema.
-- **Vender por dinero fiduciario**: su billetera permite que los usuarios vendan y hagan retiros en monedas difuciarias directamente a trarjetas o cuentas bancarias.
-- **Multifirma**: su billetera es compatible con la funcionalidad multifirma para firmar una transacción.
-- **Recuperación social**: su billetera admite guardianes y un usuario puede recuperar su billetera a través de estos guardianes si pierde su frase semilla.
+- **Redes multicadena**: su billetera permite a los usuarios acceder a múltiples redes de cadenas de bloques por defecto.
+- **Redes de capa 2**: por defecto, su billetera permite a los usuarios acceder a redes de capa 2.
+- **Personalizar las comisiones de gas**: su billetera permite a los usuarios personalizar las comisiones de gas de sus transacciones (tarifa base, tarifa de prioridad, tarifa máxima).
+- **Compatibilidad con ENS**: su billetera permite a los usuarios enviar transacciones a nombres ENS.
+- **Compatibilidad con ERC-20**: su billetera permite a los usuarios importar contratos de tokens ERC-20 o consultar y mostrar automáticamente los tokens ERC-20.
+- **Comprar criptomonedas**: su billetera permite a los usuarios comprar criptomonedas directamente e incorporarse a su ecosistema.
+- **Vender por dinero fiduciario**: su billetera permite a los usuarios vender y retirar a dinero fiduciario directamente a una tarjeta o cuenta bancaria.
+- **Multifirma**: su billetera admite múltiples firmas para firmar una transacción.
+- **Recuperación social**: su billetera admite guardianes, y un usuario puede recuperar su billetera si pierde su frase semilla usándolos.
- **Equipo de soporte dedicado**: su billetera tiene un equipo de soporte dedicado al que los usuarios pueden acudir cuando tienen problemas.
-- **Documentación/recursos educativos**: su producto debe presentar una experiencia de incorporcación correctamente diseñada para ayudar y educar a los usuarios. O prueba de cómo hacer contenido como artículos o vídeos.
+- **Recursos educativos/documentación**: su producto debe tener una experiencia de incorporación bien diseñada para ayudar y educar a los usuarios. O prueba de cómo hacer contenido como artículos o vídeos.
-## Agregar una billetera {#adding-a-wallet}
+## Añadir una billetera {#adding-a-wallet}
Si quiere agregar una billetera a ethereum.org, cree una incidencia en GitHub.
@@ -72,9 +73,8 @@ Al igual que la naturaleza fluida de Ethereum, los equipos y productos vienen y
- garantizar que todas las billeteras y dapps listadas todavía cumplan con nuestros criterios
- cercionarnos de que no haya productos sugeridos que cumplan con más de nuestros criterios que los actualmente incluidos
-ethereum.org lo mantiene la comunidad de código abierto y dependemos de la comunidad para ayudar a mantener esta información actualizada. Si nota que es necesario actualizar algún dato acerca de las billeteras incluidas en la lista, [abra una incidencia](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=wallet+%3Apurse%3A&template=suggest_wallet.yaml) o una [solicitud de incorporación de cambios](https://github.com/ethereum/ethereum-org-website/pulls).
+ethereum.org lo mantiene la comunidad de código abierto y dependemos de la comunidad para ayudar a mantener esta información actualizada. Si observa que alguna información sobre las billeteras listadas necesita ser actualizada, ¡por favor [abra una incidencia](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=wallet+%3Apurse%3A&template=suggest_wallet.yaml) o una [solicitud de pull](https://github.com/ethereum/ethereum-org-website/pulls)!
+## Términos de uso {#terms-of-use}
-## Condiciones de uso {#terms-of-use}
-
-Consulte también nuestros [términos de uso](/terms-of-use/). La información sobre ethereum.org se proporciona únicamente con fines de información general.
+Consulte también nuestros [términos de uso](/terms-of-use/). La información sobre ethereum.org se proporciona únicamente con fines de información general.
From f35567e1f78dbefc139cfc9aabb95ac48eef1628 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:24 -0300
Subject: [PATCH 174/589] update(i18n):
public/content/translations/es/roadmap/account-abstraction/index.md
---
.../es/roadmap/account-abstraction/index.md | 111 +++++-------------
1 file changed, 28 insertions(+), 83 deletions(-)
diff --git a/public/content/translations/es/roadmap/account-abstraction/index.md b/public/content/translations/es/roadmap/account-abstraction/index.md
index 55979db3289..fd85aa26868 100644
--- a/public/content/translations/es/roadmap/account-abstraction/index.md
+++ b/public/content/translations/es/roadmap/account-abstraction/index.md
@@ -8,11 +8,11 @@ summaryPoints:
- Las claves perdidas y expuestas se pueden recuperar usando múltiples copias de seguridad.
---
-# Abstracción de cuenta {#account-abstraction}
+# Abstracción de cuentas {#account-abstraction}
-Los usuarios interactúan con Ethereum usando **[cuentas de propiedad externa (o EOA)](/glossary/#eoa)**. Esta es la única forma de empezar una transacción o generar un contrato inteligente. Esto limita cómo los usuarios pueden interactuar con Ethereum. Por ejemplo, dificulta la creación de transacciones en lote y requiere que los usuarios siempre mantengan un saldo en ETH para costear el gas.
+La mayoría de los usuarios existentes interactúan con Ethereum mediante **[cuentas de propiedad externa (EOA)](/glossary/#eoa)**. Esto limita la forma en que los usuarios pueden interactuar con Ethereum. Por ejemplo, hace que sea difícil realizar conjuntos de transacciones y requiere que los usuarios siempre mantengan un saldo de ETH para pagar comisiones de transacción.
-La abstracción de cuentas es una forma de rosolver estos problemas, que permite a los usuarios programar flexiblemente con mayor seguridad y mejores experiencias de usuario en sus cuentas. Esto puede suceder [actualizando las cuentas de propiedad externa (o EOA)](https://eips.ethereum.org/EIPS/eip-3074) para que puedan ser controladas por contratos inteligentes, o por [la actualización de los contratos inteligentes ](https://eips.ethereum.org/EIPS/eip-2938) para que puedan iniciar transacciones. Ambas opciones requieren cambios en el protocolo de Ethereum. Existe también una tercera vía que implica añadir un [segundo sistema de transacciones independiente](https://eips.ethereum.org/EIPS/eip-4337) para ejecutarlo en paralelo con el protocolo existente. De cualquier forma, el resultado será acceder a Ethereum con carteras de contrato inteligente, ya sea de forma nativa como parte del protocolo existente o por una red de transacciones complementaria.
+La abstracción de cuentas es una forma de rosolver estos problemas, que permite a los usuarios programar flexiblemente con mayor seguridad y mejores experiencias de usuario en sus cuentas. Esto puede suceder [actualizando las EOA](https://eips.ethereum.org/EIPS/eip-7702) (EIP-7702) para que puedan ser controladas por contratos inteligentes. También existe otra vía que implica añadir un [segundo sistema de transacciones independiente](https://eips.ethereum.org/EIPS/eip-4337) (EIP-4337) que se ejecute en paralelo con el protocolo existente. Al margen de la vía, el resultado es acceso a Ethereum a través de carteras de contratos inteligentes, bien de forma nativa soportada como parte del protocolo existente, o bien mediante una red de transacciones adicional.
Las billeteras de contrato inteligente desbloquean múltiples beneficios para los usuarios, incluyendo:
@@ -20,107 +20,52 @@ Las billeteras de contrato inteligente desbloquean múltiples beneficios para lo
- Recuperar su cuenta si se pierden las claves.
- Compartir la seguridad de su cuenta entre dispositivos y personas de confianza.
- pagar por el gas de alguien más, o que alguien pague el suyo
-- Hacer transacciones en lote (p. ej., aprobar y ejecutar un intercambio de una vez).
+- agrupar transacciones en lotes (p. ej., aprobar y ejecutar un intercambio de una vez)
- Más oportunidades de que DApps y desarrolladores de carteras innoven en las experiencias de usuario.
-Estos beneficios no son respaldados nativamente hoy, porque solo las cuentas de propiedad externa ([EOAs](/glossary/#eoa)) pueden empezar transacciones. Las EOAs son simplemente pares de claves público-privadas. Funcionan de la siguiente forma:
+Actualmente, estas ventajas no son compatibles de forma nativa, ya que solo las cuentas de propiedad externa ([EOA](/glossary/#eoa)) pueden iniciar transacciones. Las EOAs son simplemente pares de claves público-privadas. Funcionan de la siguiente forma:
-- Si tiene la clave privada, puede hacer _lo que quiera_ siempre respetando el marco normativo de la Máquina Virtual de Ethereum (EVM).
-- Si no tiene la clave privada, no puede hacer _nada_.
+- si tiene la clave privada puede hacer _cualquier cosa_ dentro de las reglas de la máquina virtual de Ethereum (EVM)
+- si no tiene la clave privada, no puede hacer _nada_.
Si pierde sus claves, no pueden recuperarse y las claves robadas dan a los ladrones acceso instantáneo a todos los fondos de una cuenta.
-Las carteras de contrato inteligente son la solución a este problema, aunque hoy en día es difícil programarlas, porque al fin y al cabo cualquier lógica implementada tendrá que trasladarse a un conjunto de transacciones EOA antes de que Ethereum las procese. La abstracción de cuenta permite que los contratos inteligentes inicien transacciones por sí solos, para que cualquier lógica que el usuario desee implementar pueda codificarse dentro de la misma cartera de contrato inteligente y ejecutarse en Ethereum.
+Las billeteras de contrato inteligente son la solución a estos problemas, pero hoy en día son difíciles de programar porque, al final, cualquier lógica que implementen debe traducirse a un conjunto de transacciones de EOA antes de que Ethereum pueda procesarlas. La abstracción de cuenta permite que los contratos inteligentes inicien transacciones por sí solos, para que cualquier lógica que el usuario desee implementar pueda codificarse dentro de la misma cartera de contrato inteligente y ejecutarse en Ethereum.
-En última instancia, la abstracción de la cuenta respalda a las carteras de contrato inteligente, simplificando su construir y protegiendo su uso. Con la abstracción de cuenta, los usuarios pueden disfrutar de todos los beneficios de Ethereum sin tener que conocer ni preocuparse por los detalles tecnológicos.
+En última instancia, la abstracción de la cuenta respalda a las carteras de contrato inteligente, simplificando su construir y protegiendo su uso. Con abstracción de cuentas, los usuarios pueden disfrutar de todos los beneficios de Ethereum sin tener que entender la tecnología subyacente.
-## Más allá de las fases semilla {#beyond-seed-phrases}
+## Más allá de las frases semilla {#beyond-seed-phrases}
-Las cuentas de la actualidad son seguras porque usan claves privadas que son calculadas a partir de fases semilla. Cualquier persona que tenga acceso a una fase semilla puede fácilmente descubrir la clave privada que protege una cuenta y acceder a todos los activos que protege. Si se pierden una clave privada y una frase semilla, nunca podrá recuperarlas y los activos que controlaban se congelarán para siempre. Es complejo proteger estas frases semilla, incluso para los usuarios más expertos; la estafa de la frase semilla es una de las formas más comunes de fraude electrónico.
+Las cuentas de la actualidad son seguras porque usan claves privadas que son calculadas a partir de fases semilla. Cualquier persona con acceso a una frase semilla (de recuperación) puede descubrir fácilmente la clave privada que protege una cuenta y acceder a todos los activos que protege. Si una clave privada y una frase de semilla se pierden, los activos se vuelven permanentemente inaccesibles. Proteger estas frases semilla es complicado, incluso para usuarios expertos, y el phishing de frase semilla es una de las formas más comunes de estafa.
-La abstracción de cuenta solucionará este problema al usar un contrato inteligente para retener los activos y autorizar transacciones. Estos contratos inteligentes pueden entonces decorarse con lógica personalizada para hacerlos todo lo seguros y adaptados al usuario que sea posible. A fin de cuentas, igual usará claves privadas para controlar el acceso a su cuenta, pero con redes de seguridad que la simplifiquen y la vuelvan más seguras de gestionar.
+La abstracción de cuentas soluciona esto usando un contrato inteligente para mantener los activos y autorizar transacciones. Los contratos inteligentes pueden incluir una lógica personalizada adaptada para una máxima seguridad y usabilidad. Los usuarios siguen usando claves privadas para controlar el acceso, pero con medidas de seguridad mejoradas.
-Por ejemplo, se pueden añadir claves de copia de seguridad a la cartera por si las pierde o accidentalmente expone su clave principal. Llegado el caso, podría reemplazarlas por una clave nueva y segura, con el permiso de las claves de copa de seguridad. Podrá asegurar ambas claves de diferentes formas, o confiarlas a diferentes garantes de confianza. Lo cual dificultará que un ladrón obtenga acceso completo a sus fondos. Del mismo modo, puede agregar reglas a la billetera para reducir el impacto si su clave principal se ve comprometida, por ejemplo, puede permitir que las transacciones de bajo valor se verifiquen mediante una sola firma, mientras que las transacciones de mayor valor requieran la aprobación de múltiples firmantes autenticados. Hay otras formas en que las billeteras de contratos inteligentes también pueden ayudarle a frustrar a los ladrones, por ejemplo, se puede utilizar una lista de permisos para bloquear cada transacción, a menos que sea a una dirección de confianza o verificada por varias de sus claves preaprobadas.
-
-### Ejemplos de seguridad lógica que puede construirse en una billetera de contrato inteligente:
-
-- **Autorización multifirma**: puede compartir credenciales de autorización entre múltiples personas o dispositivos de confianza. Posteriormente, puede configurarse el contrato para que las transacciones de más de un valor predeterminado requieran la autorización de cierta proporción (p. ej., 3/5) de las partes de confianza. Por ejemplo, las transacciones de alto valor podrían requerir la aprobación tanto de un dispositivo móvil como de una cartera de hardware, o las firmas de cuentas distribuidas a familiares de confianza.
-- **Congelación de cuenta**: si se pierde un dispositivo o está expuesto, la cuenta puede bloquearse desde otro dispositivo autorizado, protegiendo así los activos del usuario.
-- **Recuperación de la cuenta**: ¿Ha perdido un dispositivo u olvidado una contraseña? En la actualidad, esto significa que sus activos podrían congelarse para siempre. Con una billetera de contrato inteligente, puede configurar una lista de cuentas que puedan autorizar nuevos dispositivos y restablecer el acceso.
-- **Establecer limites de transacción**: especificar umbrales diarios dependiendo de cuánto valor se pueda transferir desde la cuenta en un día/mes/año. Esto significa que si un intruso acede a su cuenta, no podrá sacar todo de una vez y usted tendrá ocasiones de congelar y restablecer el acceso.
-- **Crear listas de permisos**: Solo permita transacciones a ciertas direcciones que sepa que son seguras. Esto significa que _incluso si_ su clave privada fue robada, el atacante solo podría enviar fondos a las cuentas de destino de su lista. Estas listas de permisos o cuentas permitidas requerirían varias firmas para cambiarlas, de modo que un atacante no pueda agregar su propia dirección a la lista, a menos que tuviera acceso a varias de sus claves con copia de seguridad.
+Por ejemplo, pueden añadirse copias de seguridad de claves a una cartera, permitiendo el reemplazo de la clave si la clave primaria se ve afectada. Cada clave puede protegerse de forma diferente o distribuirse entre individuos de confianza, aumentando significativamente la seguridad. Reglas de billetera adicionales pueden mitigar los daños de la exposición de claves, como requerir múltiples firmas para transacciones de gran valor o restringir transacciones a direcciones de confianza.
## Mejor experiencia de usuario {#better-user-experience}
-La abstracción de cuenta permite una **mejor experiencia global de usuario** así como una **seguridad mejorada**, porque añade la compatibilidad con carteras de contrato inteligente dentro del protocolo. La razón más importante de esto es que proveerá a desarrolladores de contratos inteligentes, billeteras y aplicaciones, mayor libertad para innovar en la experiencia de usuario en formas que aún no logramos anticipar. Algunas mejoras obvias que traerá la abstracción de cuenta incluyen la agrupación de transacciones para aumentar la velocidad y la eficiencia. Por ejemplo, un simple intercambio debería ser una operación de un solo clic, pero hoy en día requiere firmar varias transacciones para aprobar el gasto de tokens individuales antes de que se ejecute el intercambio. La abstracción de cuenta elimina esa fricción al permitir las transacciones agrupadas. Además, las transacciones agrupadas podrían aprobar el valor exacto de los tókenes requeridos para cada transacción y anular las aprobaciones una vez completada la transacción, proporcionando seguridad adicional.
-
-La gestión del gas también se mejora mucho con la abstracción de cuenta. Las aplicaciones, no solo pueden ofrecer el pago de las tarifas de gas de sus usuarios, las tarifas de gas también pueden pagarse con otros tókenes además de ETH, lo que libera a los usuarios de tener que mantener un balance de ETH para transacciones de fondos. Esto funcionaría intercambiando los tókenes de los usuarios por ETH dentro del contrato y luego usando ETH para pagar el gas.
-
-
-
-La gestión del gas es una de las principales fricciones de los usuarios de Ethereum, principalmente porque ETH es el único activo que puede usarse para pagar por transacciones. Imagine que tiene una cartera con USDC, pero sin ETH. No podrá mover o intercambiar esos tókenes USDC, porque no puede pagar el gas. No puede intercambiar los USDC por ETH tampoco, porque eso en sí mismo cuesta gas. Tendrá que mandar más ETH a su cuenta desde una plataforma de cambio u otra dirección para solucionar el problema. Con billeteras de contrato inteligente, podrá simplemente pagar por gas en USDC, liberando su cuenta. Ahora no tendrá que mantener un balance de ETH en todas sus cuentas.
-
-La abstracción de cuenta también permite a los desarrolladores de DApp ser creativos con la gestión del gas. Por ejemplo, puede empezar a pagar a su DEX favorito una tarifa fija mensual por transacciones ilimitadas. DApps podría ofrecer el pago de todas sus tarifas de gas en su nombre como recompensa por usar su plataforma, o como una oferta de incorporación. Los desarrolladores podrán innovar en el tema del gas más fácilmente cuando las carteras de contrato inteligente sean compatibles con el protocolo.
+La abstracción de cuentas mejora enormemente la experiencia de usuario y la seguridad permitiendo carteras de contratos inteligentes a nivel de protocolo. Los desarrolladores pueden innovar libremente, mejorando la agrupación de transacciones para obtener velocidad y eficiencia. Intercambios sencillos pueden convertirse en operaciones de un solo clic, mejorando significativamente la facilidad de uso.
-
-
-Las sesiones de confianza también pueden transformar potencialmente la experiencia del usuario, especialmente para aplicaciones como juegos, donde se necesitan aprobar grandes cantidades de transacciones pequeñas en poco tiempo. La aprobación individual de cada transacción rompería la experiencia de juego, pero la aprobación permanente es insegura. Una billetera de contrato inteligente podría aprobar ciertas transacciones por un tiempo fijo, hasta valores específicos o solo para ciertas direcciones.
-
-También es interesante considerar cómo las compras podrían cambiar con la abstracción de cuenta. Hoy, cada transacción debe aprobarse y ejecutarse desde una cartera prefinanciada con la cantidad suficiente de tókenes correctos. Con la abstracción de cuenta, la experiencia podría ser más parecida a la compra familiar en línea, donde un usuario podría llenar una «cesta» con artículos de un toque para comprarlo todo, con toda la lógica requerida cubierta por el contrato, no por el usuario.
-
-Estos son solo algunos ejemplos de cómo las experiencias de usuario podrían pasar al siguiente nivel con la abstracción de cuenta, pero habrá muchos más que todavía no hemos imaginado. La abstracción de cuenta libera a los desarrolladores de las limitaciones de los EOA actuales, permitiéndoles aprovechar las ventajas de web2 a web3 sin sacrificar la custodia propia y además piratear creativamente nuevas experiencias de usuario.
+La gestión del gas mejora considerablemente. Las aplicaciones puede pagar las tarifas de gas de los usuarios o permitir pagos en tókenes distintos a ETH, eliminando la necesidad de mantener un saldo de ETH.
## ¿Cómo se implementará la abstracción de cuenta? {#how-will-aa-be-implemented}
-Las carteras de contrato inteligente existen actualmente, pero es un desafío implementarlas debido a que la EVM no las admite. En cambio, se basan en proteger un código relativamente complejo con transacciones estándar de Ethereum. Ethereum puede cambiar esto al permitir que contratos inteligentes inicien transacciones, controlando la lógica necesaria en los contratos inteligentes de Ethereum en vez de fuera de la cadena. Al colocar la lógica en los contratos inteligentes se aumenta la descentralización de Ethereum, ya que elimina la necesidad de «repetidores» ejecutados por desarrolladores de carteras para traducir mensajes firmados por el usuario de transacciones regulares de Ethereum.
-
-
-
-EIP-2771 introduce el concepto de transacciones meta, lo que le permite a terceros pagar por los costes de gas de un usuario sin hacer cambios en el protocolo de Ethereum. En principio base es enviar las transacciones firmadas por un usuario a un contrato de transitario. El transitario es una entidad de confianza que verifica que las transacciones sean válidas antes de enviarlas a un repetidor de gas. Esto se realiza fuera de la cadena, evitando la necesidad de pagar gas. El repetidor de gas transfiere la transacción a un contrato «destinatario», pagando el gas necesario para que la transacción se ejecute en Ethereum. La transacción se ejecuta si el destinatario conoce y se fía del transitario. Este modelo le facilita a los desarrolladores la implementación de transacciones sin gas para usuarios.
-
-
+Actualmente, las carteras de contratos inteligentes son difíciles de implementar, ya que dependen de código complejo que recoge transacciones estándar. Ethereum puede cambiar esto permitiendo que los contratos inteligentes inicien transacciones directamente, incorporando la lógica en contratos inteligentes de Ethereum en vez de depender de transmisores externos.
-
+### EIP-4337: abstracción de cuenta sin cambios en el protocolo
-EIP-4337 es el primer paso hacia la compatibilidad con la cartera de contrato inteligente de forma descentralizada que no requiere cambios en el protocolo de Ethereum. En vez de modificar la capa de consenso para ser compatible con carteras de contrato inteligente, se añade un nuevo sistema por separado al protocolo de intercambio de información de transacción normal. Este sistema de nivel superior se construye alrededor de un nuevo objeto llamado UserOperation que recoge acciones de un usuario junto con firmas relevantes. Estas acciones UserOperation se emiten después a una zona de espera donde los validadores pueden reunirlas en una «transacción agrupada». La transacción agrupada representa una secuencia de muchas UserOperations individuales y puede incluirse en bloques de Ethereum como una transacción normal para que los validadores la recojan usando modelos de selección similares que maximizan las tarifas.
+EIP-4337 permite un soporte nativo de carteras de contratos inteligentes sin modificar el protocolo base de Ethereum. Introduce objetos `UserOperation` recopilados en paquetes de transacciones por los validadores, lo que simplifica el desarrollo de billeteras. El contrato EntryPoint de EIP-4337 se desplegó en la red principal de Ethereum el 1 de marzo de 2023 y ha facilitado la creación de más de 26 millones de carteras inteligentes y 170 millones de UserOperations.
-El funcionamiento de las carteras también cambiaría en el marco del EIP-4337. En lugar de que cada cartera implemente de nuevo la lógica segura común, aunque compleja, esas funciones se externalizarían a un contrato global de cartera conocido como el "punto de entrada". Esto controlaría las operaciones que pagan las tarifas y ejecutan el código de EVM para que los desarrolladores de carteras puedan centrarse en proporcionar una experiencia de usuario excelente.
-
-Nota el contrato de punto de entrada EIP 4337 se implementó en la red principal de Ethereum el 1 de marzo del 2023. Puede ver el contrato en Etherscan.
-
-
-
-
-
-EIP-2938 tiene como objetivo actualizar el protocolo de Ethereum al introducir un nuevo tipo de transacción, AA_TX_TYPE que incluye tres campos: nonce, destino y datos, donde nonce es un contador de transacciones, destino es la dirección de contrato del punto de entrada datos es el código byte de EVM. Para ejecutar estas transacciones, hay dos instrucciones nuevas (conocidas como códigos operativos) que se deben añadir a la EVM: NONCE y PAYGAS. El código OP NONCE registra la secuencia de transacción y PAYGAS calcula y retira el gas necesario para ejecutar una transacción del balance del contrato. Estas nuevas características le permiten a Ethereum respaldar nativamente las carteras de contrato inteligente, dado que la infraestructura necesaria se integra en el protocolo de Ethereum.
-
-Tenga en cuenta que EIP-2938 no está activo actualmente. La comunidad ahora está favoreciendo el EIP-4337 porque no requiere cambios en el protocolo.
-
-
-
-
-
-EIP-3074 pretende actualizar las cuentas de propiedad externa de Ethereum al permitirles delegar control a un contrato inteligente. Esto significa que la lógica del contrato inteligente podría aprobar transacciones originadas por una EOA. Esto podría permitir características como el patrocinio de gas y transacciones por lotes. Para que esto funcione, dos nuevos códigos operativos deben añadirse a la EVM: AUTH y AUTHCALL. Con EIP-3074 los beneficios de una cartera de contrato inteligente están disponibles sin necesitar un contrato, en su lugar, un contrato de tipo específico sin estado, ni fiabilidad, no actualizable, conocido como «invocador» hace las transacciones.
-
-Tenga en cuenta que EIP-3074 no está activo actualmente. La comunidad ahora está favoreciendo el EIP-4337 porque no requiere cambios en el protocolo.
+## Progreso actual {#current-progress}
-
+Como parte de la actualización Pectra de Ethereum, EIP-7702 está programado para el 7 de mayo de 2025. El EIP-4337 se ha adoptado de forma generalizada, [con más de 26 millones de cuentas inteligentes desplegadas y más de 170 millones de UserOperations procesadas](https://www.bundlebear.com/erc4337-overview/all).
-## Progreso actual {#current-progress}
+## Lecturas adicionales {#further-reading}
-Las billeteras de contrato inteligente ya están disponibles, pero existen más actualizaciones necesarias para hacerlas todo lo descentralizadas y sin permisos como sea posible. El EIP-4337 es una propuesta madura que no requiere ningún cambio en el protocolo de Ethereum, así que es posible que se pueda implementar prontamente. Sin embargo, las actualizaciones que alteran el protocolo de Ethereum no se encuentran en desarrollo activo en este momento, por lo que esos cambios pueden llevar bastante tiempo en enviarse. También es posible que la abstracción de cuenta se realice de forma suficientemente buena con el EIP-4337 y así no se requieran cambios de protocolo.
-
-## Más información {#further-reading}
-
-- [erc4337.io](https://www.erc4337.io/)
-- [Panel de debate sobre la abstracción de cuenta en Devcon, Bogotá](https://www.youtube.com/watch?app=desktop&v=WsZBymiyT-8)
-- [«¿Por qué la abstracción de cuenta es un punto de inflexión para DApps?» Devcon, Bogotá](https://www.youtube.com/watch?v=OwppworJGzs)
-- [«ELI5 La abstracción de cuenta» en Devcon, Bogotá](https://www.youtube.com/watch?v=QuYZWJj65AY)
-- [Notas de Vitalik «El camino a la abstracción de cuenta»](https://notes.ethereum.org/@vbuterin/account_abstraction_roadmap#Transaction-inclusion-lists)
-- [Publicación de blog de Vitalik sobre carteras de recuperación social](https://vitalik.eth.limo/general/2021/01/11/recovery.html)
-- [Notas de EIP-2938](https://hackmd.io/@SamWilsn/ryhxoGp4D#What-is-EIP-2938)
-- [Documentación de EIP-2938](https://eips.ethereum.org/EIPS/eip-2938)
-- [Notas de EIP-4337](https://medium.com/infinitism/erc-4337-account-abstraction-without-ethereum-protocol-changes-d75c9d94dc4a)
-- [Documentación de EIP-4337](https://eips.ethereum.org/EIPS/eip-4337)
-- [Documentación de EIP-2771](https://eips.ethereum.org/EIPS/eip-2771)
-- [«Aspectos básicos de la abstracción de cuenta»: ¿Qué es abstracción de cuenta? Parte I](https://www.alchemy.com/blog/account-abstraction)
+- [erc4337.io](https://docs.erc4337.io/)
+- [Documentación del EIP-4337](https://eips.ethereum.org/EIPS/eip-4337)
+- [Documentación del EIP-7702](https://eips.ethereum.org/EIPS/eip-7702)
+- [Panel de adopción del ERC-4337](https://www.bundlebear.com/erc4337-overview/all)
+- ["El camino a la abstracción de cuentas" de Vitalik](https://notes.ethereum.org/@vbuterin/account_abstraction_roadmap#Transaction-inclusion-lists)
+- [Blog de Vitalik sobre las billeteras de recuperación social](https://vitalik.eth.limo/general/2021/01/11/recovery.html)
+- [Awesome Account Abstraction](https://github.com/4337Mafia/awesome-account-abstraction)
From b027d04440aa34d305bdb8d3292d9bb9f99c5b09 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:25 -0300
Subject: [PATCH 175/589] update(i18n):
public/content/translations/es/developers/tutorials/server-components/index.md
---
.../tutorials/server-components/index.md | 295 ++++++++++++++++++
1 file changed, 295 insertions(+)
create mode 100644 public/content/translations/es/developers/tutorials/server-components/index.md
diff --git a/public/content/translations/es/developers/tutorials/server-components/index.md b/public/content/translations/es/developers/tutorials/server-components/index.md
new file mode 100644
index 00000000000..72825ae57d1
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/server-components/index.md
@@ -0,0 +1,295 @@
+---
+title: "Componentes de servidor y agentes para aplicaciones web3"
+description: Después de leer este tutorial, podrá escribir servidores TypeScript que escuchen eventos en una cadena de bloques y respondan en consecuencia con sus propias transacciones. Esto le permitirá escribir aplicaciones centralizadas (porque el servidor es un punto de fallo), pero que pueden interactuar con entidades web3. Las mismas técnicas también se pueden utilizar para escribir un agente que responda a eventos en cadena sin la intervención de un ser humano.
+
+author: Ori Pomerantz
+lang: es
+tags: [ "agente", "servidor", "fuera de la cadena" ]
+skill: beginner
+published: 15-07-2024
+---
+
+## Introducción {#introduction}
+
+En la mayoría de los casos, una aplicación descentralizada utiliza un servidor para distribuir el software, pero toda la interacción real ocurre entre el cliente (normalmente, el navegador web) y la cadena de bloques.
+
+
+
+Sin embargo, hay algunos casos en los que una aplicación se beneficiaría de tener un componente de servidor que se ejecute de forma independiente. Dicho servidor podría responder a eventos y a solicitudes que provienen de otras fuentes, como una API, emitiendo transacciones.
+
+
+
+Hay varias tareas posibles que un servidor de este tipo podría cumplir.
+
+- Poseedor de estado secreto. En los juegos, a menudo es útil no tener toda la información que el juego conoce a disposición de los jugadores. Sin embargo, _no hay secretos en la cadena de bloques_, cualquier información que esté en la cadena de bloques es fácil de descubrir para cualquiera. Por lo tanto, si parte del estado del juego se va a mantener en secreto, debe almacenarse en otro lugar (y posiblemente verificar los efectos de ese estado utilizando [pruebas de conocimiento cero](/zero-knowledge-proofs)).
+
+- Oráculo centralizado. Si las apuestas son suficientemente bajas, un servidor externo que lea alguna información en línea y luego la publique en la cadena puede ser lo suficientemente bueno como para usarlo como un [oráculo](/developers/docs/oracles/).
+
+- Agente. No sucede nada en la cadena de bloques sin una transacción que lo active. Un servidor puede actuar en nombre de un usuario para realizar acciones como [arbitraje](/developers/docs/mev/#mev-examples-dex-arbitrage) cuando se presenta la oportunidad.
+
+## Programa de ejemplo {#sample-program}
+
+Puede ver un servidor de ejemplo [en GitHub](https://github.com/qbzzt/20240715-server-component). Este servidor escucha los eventos provenientes de [este contrato](https://eth-holesky.blockscout.com/address/0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6?tab=contract_code), una versión modificada del Greeter de Hardhat. Cuando se cambia el saludo, lo vuelve a cambiar.
+
+Para ejecutarlo:
+
+1. Clone el repositorio.
+
+ ```sh copy
+ git clone https://github.com/qbzzt/20240715-server-component.git
+ cd 20240715-server-component
+ ```
+
+2. Instale los paquetes necesarios. Si aún no lo tiene, [instale Node primero](https://nodejs.org/en/download/package-manager).
+
+ ```sh copy
+ npm install
+ ```
+
+3. Edite `.env` para especificar la clave privada de una cuenta que tenga ETH en la red de prueba de Holesky. Si no tiene ETH en Holesky, puede [usar este grifo](https://holesky-faucet.pk910.de/).
+
+ ```sh filename=".env" copy
+ PRIVATE_KEY=0x
+ ```
+
+4. Inicie el servidor.
+
+ ```sh copy
+ npm start
+ ```
+
+5. Vaya a [un explorador de bloques](https://eth-holesky.blockscout.com/address/0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6?tab=write_contract) y, utilizando una dirección diferente a la que tiene la clave privada, modifique el saludo. Verá que el saludo se modifica automáticamente.
+
+### ¿Cómo funciona? {#how-it-works}
+
+La forma más fácil de entender cómo escribir un componente de servidor es repasar el ejemplo línea por línea.
+
+#### `src/app.ts` {#src-app-ts}
+
+La gran mayoría del programa está contenida en [`src/app.ts`](https://github.com/qbzzt/20240715-server-component/blob/main/src/app.ts).
+
+##### Creación de los objetos prerrequisito
+
+```typescript
+import {
+ createPublicClient,
+ createWalletClient,
+ getContract,
+ http,
+ Address,
+} from "viem"
+```
+
+Estas son las entidades de [Viem](https://viem.sh/) que necesitamos, las funciones y [el tipo `Address`](https://viem.sh/docs/glossary/types#address). Este servidor está escrito en [TypeScript](https://www.typescriptlang.org/), que es una extensión de JavaScript que lo hace [fuertemente tipado](https://en.wikipedia.org/wiki/Strong_and_weak_typing).
+
+```typescript
+import { privateKeyToAccount } from "viem/accounts"
+```
+
+[Esta función](https://viem.sh/docs/accounts/privateKey) nos permite generar la información de la billetera, incluida la dirección, correspondiente a una clave privada.
+
+```typescript
+import { holesky } from "viem/chains"
+```
+
+Para usar una cadena de bloques en Viem necesita importar su definición. En este caso, queremos conectarnos a la cadena de bloques de prueba [Holesky](https://github.com/eth-clients/holesky).
+
+```typescript
+// Así es como añadimos las definiciones en .env a process.env.
+import * as dotenv from "dotenv"
+dotenv.config()
+```
+
+Así es como leemos `.env` en el entorno. Lo necesitamos para la clave privada (véase más adelante).
+
+```typescript
+const greeterAddress : Address = "0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6"
+const greeterABI = [
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "_greeting",
+ "type": "string"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ .
+ .
+ .
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "_greeting",
+ "type": "string"
+ }
+ ],
+ "name": "setGreeting",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+] as const
+```
+
+Para usar un contrato necesitamos su dirección y su [ABI](/glossary/#abi). Aquí proporcionamos ambos.
+
+En JavaScript (y por lo tanto en TypeScript) no se puede asignar un nuevo valor a una constante, pero sí se puede modificar el objeto que está almacenado en ella. Al usar el sufijo `as const` le estamos diciendo a TypeScript que la lista en sí es constante y no puede ser modificada.
+
+```typescript
+const publicClient = createPublicClient({
+ chain: holesky,
+ transport: http(),
+})
+```
+
+Crear un [cliente público](https://viem.sh/docs/clients/public.html) de Viem. Los clientes públicos no tienen una clave privada adjunta y, por lo tanto, no pueden enviar transacciones. Pueden llamar a funciones [`view`](https://www.tutorialspoint.com/solidity/solidity_view_functions.htm), leer saldos de cuentas, etc.
+
+```typescript
+const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)
+```
+
+Las variables de entorno están disponibles en [`process.env`](https://www.totaltypescript.com/how-to-strongly-type-process-env). Sin embargo, TypeScript es fuertemente tipado. Una variable de entorno puede ser cualquier cadena, o estar vacía, por lo que el tipo de una variable de entorno es `string | undefined`. Sin embargo, una clave se define en Viem como `0x${string}` (`0x` seguido de una cadena). Aquí le decimos a TypeScript que la variable de entorno `PRIVATE_KEY` será de ese tipo. Si no lo es, obtendremos un error en tiempo de ejecución.
+
+La función [`privateKeyToAccount`](https://viem.sh/docs/accounts/privateKey) utiliza esta clave privada para crear un objeto de cuenta completo.
+
+```typescript
+const walletClient = createWalletClient({
+ account,
+ chain: holesky,
+ transport: http(),
+})
+```
+
+A continuación, usamos el objeto de cuenta para crear un [cliente de billetera](https://viem.sh/docs/clients/wallet). Este cliente tiene una clave privada y una dirección, por lo que se puede usar para enviar transacciones.
+
+```typescript
+const greeter = getContract({
+ address: greeterAddress,
+ abi: greeterABI,
+ client: { public: publicClient, wallet: walletClient },
+})
+```
+
+Ahora que tenemos todos los requisitos previos, podemos crear finalmente una [instancia de contrato](https://viem.sh/docs/contract/getContract). Usaremos esta instancia de contrato para comunicarnos con el contrato en cadena.
+
+##### Leer desde la cadena de bloques
+
+```typescript
+console.log(`Current greeting:`, await greeter.read.greet())
+```
+
+Las funciones de contrato que son de solo lectura ([`view`](https://www.tutorialspoint.com/solidity/solidity_view_functions.htm) y [`pure`](https://www.tutorialspoint.com/solidity/solidity_pure_functions.htm)) están disponibles en `read`. En este caso, lo usamos para acceder a la función [`greet`](https://eth-holesky.blockscout.com/address/0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6?tab=read_contract#cfae3217), que devuelve el saludo.
+
+JavaScript es de un solo hilo, por lo que cuando iniciamos un proceso de larga duración necesitamos [especificar que lo hacemos de forma asíncrona](https://eloquentjavascript.net/11_async.html#h-XvLsfAhtsE). Llamar a la cadena de bloques, incluso para una operación de solo lectura, requiere un viaje de ida y vuelta entre el ordenador y un nodo de la cadena de bloques. Esa es la razón por la que especificamos aquí que el código necesita esperar (`await`) el resultado.
+
+Si le interesa cómo funciona esto, puede [leer sobre ello aquí](https://www.w3schools.com/js/js_promise.asp), pero en términos prácticos todo lo que necesita saber es que debe `esperar` los resultados si inicia una operación que tarda mucho tiempo, y que cualquier función que haga esto debe declararse como `async`.
+
+##### Emisión de transacciones
+
+```typescript
+const setGreeting = async (greeting: string): Promise => {
+```
+
+Esta es la función a la que se llama para emitir una transacción que cambia el saludo. Como esta es una operación larga, la función se declara como `async`. Debido a la implementación interna, cualquier función `async` necesita devolver un objeto `Promise`. En este caso, `Promise` significa que no especificamos qué se devolverá exactamente en la `Promise`.
+
+```typescript
+const txHash = await greeter.write.setGreeting([greeting])
+```
+
+El campo `write` de la instancia del contrato tiene todas las funciones que escriben en el estado de la cadena de bloques (aquellas que requieren enviar una transacción), como [`setGreeting`](https://eth-holesky.blockscout.com/address/0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6?tab=write_contract#a4136862). Los parámetros, si los hay, se proporcionan como una lista, y la función devuelve el hash de la transacción.
+
+```typescript
+ console.log(`Working on a fix, see https://eth-holesky.blockscout.com/tx/${txHash}`)
+
+ return txHash
+}
+```
+
+Informa del hash de la transacción (como parte de una URL al explorador de bloques para verla) y lo devuelve.
+
+##### Respondiendo a eventos
+
+```typescript
+greeter.watchEvent.SetGreeting({
+```
+
+[La función `watchEvent`](https://viem.sh/docs/actions/public/watchEvent) le permite especificar que una función se ejecutará cuando se emita un evento. Si solo le interesa un tipo de evento (en este caso, `SetGreeting`), puede usar esta sintaxis para limitarse a ese tipo de evento.
+
+```typescript
+ onLogs: logs => {
+```
+
+La función `onLogs` se llama cuando hay entradas de registro. En Ethereum, «registro» y «evento» suelen ser intercambiables.
+
+```typescript
+console.log(
+ `Address ${logs[0].args.sender} changed the greeting to ${logs[0].args.greeting}`
+)
+```
+
+Podría haber múltiples eventos, pero por simplicidad solo nos importa el primero. `logs[0].args` son los argumentos del evento, en este caso `sender` y `greeting`.
+
+```typescript
+ if (logs[0].args.sender != account.address)
+ setGreeting(`${account.address} insists on it being Hello!`)
+ }
+})
+```
+
+Si el remitente _no_ es este servidor, use `setGreeting` para cambiar el saludo.
+
+#### `package.json` {#package-json}
+
+[Este archivo](https://github.com/qbzzt/20240715-server-component/blob/main/package.json) controla la configuración de [Node.js](https://nodejs.org/en). Este artículo solo explica las definiciones importantes.
+
+```json
+{
+ "main": "dist/index.js",
+```
+
+Esta definición especifica qué archivo JavaScript ejecutar.
+
+```json
+ "scripts": {
+ "start": "tsc && node dist/app.js",
+ },
+```
+
+Los scripts son varias acciones de la aplicación. En este caso, el único que tenemos es `start`, que compila y luego ejecuta el servidor. El comando `tsc` es parte del paquete `typescript` y compila TypeScript en JavaScript. Si desea ejecutarlo manualmente, se encuentra en `node_modules/.bin`. El segundo comando ejecuta el servidor.
+
+```json
+ "type": "module",
+```
+
+Existen múltiples tipos de aplicaciones de nodo JavaScript. El tipo `module` nos permite tener `await` en el código de nivel superior, lo cual es importante cuando se realizan operaciones lentas (y por lo tanto asíncronas).
+
+```json
+ "devDependencies": {
+ "@types/node": "^20.14.2",
+ "typescript": "^5.4.5"
+ },
+```
+
+Estos son paquetes que solo se requieren para el desarrollo. Aquí necesitamos `typescript` y como lo estamos usando con Node.js, también estamos obteniendo los tipos para las variables y objetos de nodo, como `process`. [La notación `^`](https://github.com/npm/node-semver?tab=readme-ov-file#caret-ranges-123-025-004) significa esa versión o una versión superior que no tenga cambios que rompan la compatibilidad. Vea [aquí](https://semver.org) para más información sobre el significado de los números de versión.
+
+```json
+ "dependencies": {
+ "dotenv": "^16.4.5",
+ "viem": "2.14.1"
+ }
+}
+```
+
+Estos son paquetes que se requieren en tiempo de ejecución, al ejecutar `dist/app.js`.
+
+## Conclusión {#conclusion}
+
+El servidor centralizado que creamos aquí hace su trabajo, que es actuar como un agente para un usuario. Cualquier otra persona que quiera que la dapp siga funcionando y esté dispuesta a gastar el gas puede ejecutar una nueva instancia del servidor con su propia dirección.
+
+Sin embargo, esto solo funciona cuando las acciones del servidor centralizado pueden verificarse fácilmente. Si el servidor centralizado tiene alguna información de estado secreta, o ejecuta cálculos difíciles, es una entidad centralizada en la que necesita confiar para usar la aplicación, que es exactamente lo que las cadenas de bloques intentan evitar. En un futuro artículo planeo mostrar cómo usar [pruebas de conocimiento cero](/zero-knowledge-proofs) para solucionar este problema.
+
+[Vea aquí más de mi trabajo](https://cryptodocguy.pro/).
From ad3691427a184c863c936ae62219fc6bb1ce6c65 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:27 -0300
Subject: [PATCH 176/589] update(i18n):
public/content/translations/es/contributing/adding-products/index.md
---
.../es/contributing/adding-products/index.md | 54 +++++++++----------
1 file changed, 27 insertions(+), 27 deletions(-)
diff --git a/public/content/translations/es/contributing/adding-products/index.md b/public/content/translations/es/contributing/adding-products/index.md
index 2f404bf0ab2..0889f9c05ae 100644
--- a/public/content/translations/es/contributing/adding-products/index.md
+++ b/public/content/translations/es/contributing/adding-products/index.md
@@ -4,53 +4,53 @@ description: La política que utilizamos al añadir DApps a ethereum.org.
lang: es
---
-# Añadir productos a Ethereum {#adding-products}
+# Añadir productos de Ethereum {#adding-products}
-Cualquier persona es libre de sugerir nuevas dapps al contenido de ethereum.org, cuando sea apropiado hacerlo. **No, no incluirmos su DApp en nuestra página de inicio.**😜
+Cualquier persona es libre de sugerir nuevas dapps al contenido de ethereum.org, cuando sea apropiado hacerlo. **No, no incluiremos su dapp en nuestra página de inicio** 😜
Las DApps actualmente incluidas en:
- ethereum.org/dapps
- ethereum.org/get-eth
-**Favor, de sugerir sólo nuevas adiciones en estas páginas.**
+**Sugiera únicamente nuevas adiciones a estas páginas.**
Aunque damos la bienvenida a las nuevas incorporaciones, elegimos las dapps actuales en base a una experiencia que estamos tratando de crear para nuestros usuarios. Estos se basan en algunos de nuestros principios de diseño:
-- _Inspirador_: cualquier contenido de ethereum.org debe ofrecer algo nuevo a los usuarios.
-- _Una buena historia_: lo que se incluya debe calar en los usuarios.
-- _Creíble_: los proyectos/empresas deben ser legítimos para minimizar el riesgo a los usuarios.
+- _Inspirador_: cualquier contenido de ethereum.org debe ofrecer algo nuevo a los usuarios
+- _Una historia con gancho_: lo que se lista debe informar y gustar.
+- _Creíble_: todos deberían ser negocios/proyectos legítimos para minimizar el riesgo para los usuarios
-En general, **ethereum.org quiere proporcionar una "experiencia de incorporación sin fisuras" para nuevos usuarios**. Por esa razón, añadimos DApps en función de su:
+En general, **ethereum.org quiere proporcionar una "experiencia de incorporación fluida" para los nuevos usuarios**. Por esa razón, añadimos DApps en función de su:
- facilidad de uso
- interoperabilidad con otros productos
-- seguridad
+- seguridades
- durabilidad
He aquí nuestro marco de decisión explicado. Proporcione comentarios o sugiera cambios con total libertad.
## El marco de decisión {#decision-framework}
-### Criterios para la inclusión: los aspectos obligatorios {#criteria-for-inclusion-the-must-haves}
+### Criterios de inclusión: los imprescindibles {#criteria-for-inclusion-the-must-haves}
-- **Un producto con seguridad demostrada**: ya sea a través de una auditoría, un equipo interno de seguridad o algún otro método, la seguridad de su producto debe probarse de forma fiable. Esto reduce el riesgo para nuestros usuarios y nos muestra que usted se toma la seguridad en serio.
-- **Un producto que ha estado «vivo» durante más de 6 meses**: esto es otro indicio de seguridad. Seis meses es un buen marco de tiempo para encontrar errores críticos y explotaciones.
-- **Desarrollado por un equipo activo**: esto ayuda a garantizar la calidad y que un usuario recibirá soporte en sus consultas.
-- **Información honesta y precisa de los listados**: se espera que cualquier contenido sugerido de proyectos proporcione información honesta y precisa. Los productos que falsifiquen la información incluida, como declarar que su producto es «de código abierto» cuando no lo es, serán eliminados.
+- **Un producto con seguridad probada**: ya sea a través de una auditoría, un equipo de seguridad interno o algún otro método, la seguridad de su producto debe probarse de forma fiable. Esto reduce el riesgo para nuestros usuarios y nos muestra que usted se toma la seguridad en serio.
+- **Un producto que haya estado "activo" durante más de 6 meses**: esto es otra indicación de seguridad. Seis meses es un buen marco de tiempo para encontrar errores críticos y explotaciones.
+- **Desarrollado por un equipo activo**: esto ayuda a garantizar la calidad y que un usuario reciba soporte en sus consultas.
+- **Información honesta y precisa sobre el listado**: se espera que cualquier sugerencia de listado de proyectos venga con información honesta y precisa. Los productos que falsifiquen la información incluida, como declarar que su producto es «de código abierto» cuando no lo es, serán eliminados.
-### Criterios para la clasificación: los aspectos deseados {#criteria-for-ranking-the-nice-to-haves}
+### Criterios de clasificación: lo que es bueno tener {#criteria-for-ranking-the-nice-to-haves}
Es posible que su dapp no aparezca en ethereum.org de manera tan prominente como otros debido a los siguientes criterios.
**Dapps**
-- **De acceso a través de la mayoría de las carteras listadas**: las dapps deberían funcionar con la mayoría de las carteras que aparecen en ethereum.org.
-- **Los usuarios pueden probarlo por sí solos:** un usuario particular debería poder usar su dapp y lograr algo tangible.
-- **Incorporación**: su producto debería tener una experiencia de incorporación bien trazada para ayudar y educar a los usuarios. O prueba de cómo hacer contenido como artículos o vídeos.
+- **Puede acceder a través de la mayoría de las billeteras listadas**: las dapps deberían funcionar con la mayoría de las billeteras que se listan en ethereum.org.
+- **Los usuarios pueden probarlo por sí mismos**: un usuario individual debe ser capaz de usar su dapp y lograr algo tangible.
+- **Incorporación**: su producto debería tener una experiencia de incorporación bien diseñada para ayudar y educar a los usuarios. O prueba de cómo hacer contenido como artículos o vídeos.
- **Sin custodia**: los usuarios controlan sus fondos. Aunque su producto desaparezca, los usuarios aún pueden acceder y mover sus fondos.
-- **Accesible globalmente**: su producto no tiene limitaciones geográficas ni requisitos de conozca su cliente (KYC) que excluyen a ciertas personas del acceso a su servicio.
-- **De código abierto**: su código debe ser accesible y debería aceptar las PR de la comunidad en general.
+- **Accesible globalmente**: su producto no tiene limitaciones geográficas ni requisitos de Conozca a su Cliente (KYC) que excluyan a ciertas personas del acceso a su servicio.
+- **Código abierto**: su código debe ser accesible y usted debe aceptar PR de la comunidad en general.
- **Comunidad**: tiene una comunidad dedicada, tal vez un Discord, donde los usuarios pueden interactuar con su equipo para obtener ayuda o sugerir nuevas características.
## Criterios en la práctica {#criteria-in-practice}
@@ -68,15 +68,15 @@ Otros aspectos que sopesarán esta decisión:
Esta es una decisión de diseño de la que ethereum.org es responsable.
-Pero tenga la seguridad de que **habrá enlaces a otros sitios web que clasifiquen más DApps**.
+Pero no se preocupe, **habrá enlaces a otros sitios web que clasifiquen más dapps**
-### Pedido de productos {#product-ordering}
+### Ordenación de productos {#product-ordering}
A menos que los productos se soliciten específicamente de otro modo, como alfabético, aparecerán del último al primero añadidos recientemente a la página. Es decir, los productos más nuevos se añaden al final de la lista.
-### Condiciones de uso {#terms-of-use}
+### Términos de uso {#terms-of-use}
-Por favor, consulte también nuestras [condiciones de uso](/terms-of-use/). La información sobre ethereum.org se proporciona únicamente con fines de información general.
+Consulte también nuestros [términos de uso](/terms-of-use/). La información sobre ethereum.org se proporciona únicamente con fines de información general.
## Mantenimiento {#maintenance}
@@ -85,16 +85,16 @@ Al igual que la naturaleza fluida de Ethereum, los equipos y productos vienen y
- garantizar que todas los dapps enumeradas sigan cumpliendo nuestros criterios
- cercionarnos de que no haya productos sugeridos que cumplan con más de nuestros criterios que los actualmente incluidos
-Puede ayudar con esta tarea comprobando e informándonos de las conclusiones. [Crear un problema](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) o enviar un correo electrónico a [website@ethereum.org](mailto:website@ethereum.org)
+Puede ayudar con esta tarea comprobando e informándonos de las conclusiones. [Abra una incidencia](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) o envíe un correo electrónico a [website@ethereum.org](mailto:website@ethereum.org)
_También estamos investigando las opciones para votar y que la comunidad pueda indicar sus preferencias y así poner de relevancia los mejores productos para que nosotros los recomendemos._
---
-## Añada su producto {#add-your-product}
+## Añadir su producto {#add-your-product}
-Si quieres añadir un dapp a ethereum.org y cumple con los criterios, crea un problema en GitHub.
+Si desea añadir una dapp a ethereum.org y cumple los criterios, por favor, háganoslo saber.
- Crear una incidencia
+ Sugerir una aplicación
From 18478cb6d0714c379741058d3104ac0e9c7b5036 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:28 -0300
Subject: [PATCH 177/589] update(i18n):
public/content/translations/es/guides/how-to-id-scam-tokens/index.md
---
.../es/guides/how-to-id-scam-tokens/index.md | 42 +++++++++----------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/public/content/translations/es/guides/how-to-id-scam-tokens/index.md b/public/content/translations/es/guides/how-to-id-scam-tokens/index.md
index 7e8927df105..279679e8d5a 100644
--- a/public/content/translations/es/guides/how-to-id-scam-tokens/index.md
+++ b/public/content/translations/es/guides/how-to-id-scam-tokens/index.md
@@ -4,27 +4,27 @@ description: Detectar los tókenes de estafa, cómo hacen para parecer legítimo
lang: es
---
-# Cómo detectar los tókenes de estafa {#identify-scam-tokens}
+# Cómo identificar los tokens de estafa {#identify-scam-tokens}
-Uno de los usos más comunes para Ethereum es que un grupo cree un token intercambiable, en cierto sentido su propia moneda. Estos tókenes suelen seguir un estándar, [ERC-20](/developers/docs/standards/tokens/erc-20/). No obstante, en cualquier lugar donde haya casos de uso legítimos que aporten valor, también hay criminales que intentan robar ese valor para sí mismos.
+Uno de los usos más comunes para Ethereum es que un grupo cree un token intercambiable, en cierto sentido su propia moneda. Estos tokens suelen seguir un estándar, [ERC-20](/developers/docs/standards/tokens/erc-20/). No obstante, en cualquier lugar donde haya casos de uso legítimos que aporten valor, también hay criminales que intentan robar ese valor para sí mismos.
Hay dos maneras en las que puede que intenten engañarle:
-- **Vendiéndole un token estafa**, que puede parecer el token legítimo que quiere comprar, pero que lo emiten los estafadores y, por tanto, no vale nada.
-- **Engañándole para que firme malas transacciones**, generalmente dirigiéndole a su propia interfaz de usuario. Podrían intentar que le dé a sus contratos una asignación en sus tókenes ERC-20, exponiendo información confidencial que les dé acceso a sus activos, etc. Estas interfaces de usuario podrían ser clones casi perfectos de sitios honestos, pero con trucos ocultos.
+- **Vendiéndole un token de estafa**, que puede parecerse al token legítimo que desea comprar, pero es emitido por estafadores y no vale nada.
+- **Engañándole para que firme transacciones maliciosas**, normalmente dirigiéndole a su propia interfaz de usuario. Podrían intentar que le dé a sus contratos una asignación en sus tókenes ERC-20, exponiendo información confidencial que les dé acceso a sus activos, etc. Estas interfaces de usuario podrían ser clones casi perfectos de sitios honestos, pero con trucos ocultos.
-Para ilustrar lo que son los tókenes estafa y cómo identificarlos, vamos a ver un ejemplo de uno: [`wARB`](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82). Este token intenta parecerse al token legítimo [`ARB`](https://etherscan.io/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1).
+Para ilustrar qué son los tokens de estafa y cómo identificarlos, vamos a ver un ejemplo de uno: [`wARB`](https://eth.blockscout.com/token/0xB047c8032b99841713b8E3872F06cF32beb27b82). Este token intenta parecerse al token legítimo [`ARB`](https://eth.blockscout.com/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1).
-Arbitrum es una organización que desarrolla y gestiona [rollups (o acumulaciones) optimistas](/developers/docs/scaling/optimistic-rollups/). Inicialmente, Arbitrum se fundó como una empresa con fines lucrativos, pero luego tomó medidas para descentralizarse. Como parte de ese proceso, emitió un [token de gobernanza negociable](/dao/#token-based-based-membership).
+Arbitrum es una organización que desarrolla y gestiona [optimistic rollups] (/developers/docs/scaling/optimistic-rollups/). Inicialmente, Arbitrum se fundó como una empresa con fines lucrativos, pero luego tomó medidas para descentralizarse. Como parte del proceso, han lanzado un [token de gobernanza] que admite transacciones (/dao/#token-based-membership).
Hay una convención en Ethereum que dice que cuando un activo no cumple con ERC-20, creamos una versión «encubierta» del mismo cuyo nombre comienza por «w». Así que, por ejemplo, tenemos wBTC para bitcoin y wETH para ether.
@@ -38,10 +38,10 @@ No tiene sentido crear una versión encubierta de un token ERC-20 que ya está e
La finalidad última de Ethereum es la descentralización. Esto significa que no hay una autoridad central que pueda confiscar sus activos ni impedirle implementar un contrato inteligente. Aunque también significa que los estafadores pueden desplegar cualquier contrato inteligente que deseen.
-[Los contratos inteligentes](/developers/docs/smart-contracts/) son los programas que se ejecutan en la parte superior de la cadena de bloques Ethereum. Cada token ERC-20, por ejemplo, se implementa como un contrato inteligente.
+[Los contratos inteligentes](/developers/docs/smart-contracts/) son los programas que se ejecutan sobre la cadena de bloques de Ethereum. Cada token ERC-20, por ejemplo, se implementa como un contrato inteligente.
@@ -55,11 +55,11 @@ Hay varios trucos que los creadores de tókenes estafa hacen para que parezcan l
- **Propietarios legítimos**. Los tokens estafa a menudo regalan saldos significativos a direcciones que se puede esperar que sean titulares legítimos del token real.
- Por ejemplo, retomemos el `wARB` de nuevo. [Alrededor del 16 % de los tókenes](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82?a=0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f) están en manos de una dirección cuya nombre público es [Arbitrum Foundation: Deployer](https://etherscan.io/address/0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f). Esta no _es_ una dirección falsa, realmente es la dirección que [desplegó el contrato ARB real en la red principal de Ethereum](https://etherscan.io/tx/0x242b50ab4fe9896cb0439cfe6e2321d23feede7eeceb31aa2dbb46fc06ed2670).
+ Por ejemplo, examinemos `wARB` de nuevo. [Alrededor del 16 % de los tokens](https://eth.blockscout.com/token/0xb047c8032b99841713b8E3872F06cF32beb27b82?tab=holders) están en posesión de una dirección cuya etiqueta pública es [Arbitrum Foundation: Deployer](https://eth.blockscout.com/address/0x1C8db745ABe3C8162119b9Ef2c13864Cd1FDD72F). Esta _no_ es una dirección falsa, es realmente la dirección que [desplegó el contrato real de ARB en la red principal de Ethereum](https://eth.blockscout.com/tx/0x242b50ab4fe9896cb0439cfe6e2321d23feede7eeceb31aa2dbb46fc06ed2670).
Debido a que el saldo ERC-20 de una dirección es parte del almacenamiento del contrato ERC-20, se puede especificar en el contrato para que sea lo que el desarrollador del contrato desee. También es posible que un contrato prohíba las transferencias para que los usuarios legítimos no puedan deshacerse de esos tókenes estafa.
-- **Transferencias legítimas**. _Los propietarios legítimos no pagarían por transferir un token estafa a otros, por lo que si hay transferencias, debería ser legítimo, ¿no? _ **Incorrecto**. Los eventos `transacción` los produce el contrato ERC-20. Un estafador puede escribir fácilmente el contrato de tal manera que produzca esas acciones.
+- **Transferencias legítimas**. _Los propietarios legítimos no pagarían por transferir un token de estafa a otros, así que si hay transferencias debe ser legítimo, ¿verdad?_ **Incorrecto**. Los eventos `Transfer` son producidos por el contrato ERC-20. Un estafador puede escribir fácilmente el contrato de tal manera que produzca esas acciones.
## Sitios web fraudulentos {#websites}
@@ -71,27 +71,27 @@ La mejor práctica para evitar esto es comprobar cuidadosamente la URL de los si
1. **Compruebe la dirección del contrato**. Los tókenes legítimos provienen de organizaciones legítimas, y puede ver las direcciones del contrato en el sitio web de la organización. Por ejemplo, [para `ARB` puede ver las direcciones legítimas aquí](https://docs.arbitrum.foundation/deployment-addresses#token).
-2. **Los tókenes reales tienen liquidez**. Otra opción es mirar el tamaño del grupo de liquidez en [Uniswap](https://uniswap.org/), uno de los protocolos de intercambio de tókenes más comunes. Este protocolo funciona utilizando fondos de liquidez, en los que los inversores depositan sus tókenes con la esperanza de obtener la devolución de las comisiones de transacciones.
+2. **Los tókenes reales tienen liquidez**. Otra opción es ver el tamaño del fondo de liquidez en [Uniswap](https://uniswap.org/), uno de los protocolos de intercambio de tokens más comunes. Este protocolo funciona utilizando fondos de liquidez, en los que los inversores depositan sus tókenes con la esperanza de obtener la devolución de las comisiones de transacciones.
-Los tókenes estafa suelen tener pequeños fondos de liquidez, si los hay, porque los estafadores no quieren arriesgar activos reales. Por ejemplo, el fondo `ARB`/`ETH` Uniswap tiene alrededor de un millón de dólares ([ver aquí el valor actualizado](https://info.uniswap.org/#/pools/0x755e5a186f0469583bd2e80d1216e02ab88ec6ca)) y comprar o vender una pequeña cantidad no va a cambiar el precio:
+Los tókenes estafa suelen tener pequeños fondos de liquidez, si los hay, porque los estafadores no quieren arriesgar activos reales. Por ejemplo, el fondo de Uniswap `ARB`/`ETH` contiene alrededor de un millón de dólares ([vea aquí el valor actualizado](https://app.uniswap.org/explore#/pools/0x755e5a186f0469583bd2e80d1216e02ab88ec6ca)) y comprar o vender una pequeña cantidad no va a cambiar el precio:
-
+
-Pero cuando intente comprar el token estafa `wARB`, incluso una pequeña compra cambiaría el precio en más del 90 %:
+Pero cuando intente comprar el token de estafa `wARB`, incluso una pequeña compra cambiaría el precio en más del 90 %:
-
+
Esta es otra prueba que nos muestra que `wARB` no es probable que sea un token legítimo.
-3. **Consulte en Etherscan**. La comunidad ya ha identificado y denunciado muchos tókenes estafa. Dichos tókenes están [marcados en Etherscan](https://info.etherscan.com/etherscan-token-reputation/). Si bien Etherscan no es una fuente autorizada «oficial»( la naturaleza de las redes descentralizadas impide que haya una fuente autorizada de legitimidad), los tókenes que Etherscan identifica como estafas es probable que sean estafas.
+3. **Consulte en Etherscan**. La comunidad ya ha identificado y denunciado muchos tókenes estafa. Dichos tokens están [marcados en Etherscan](https://info.etherscan.com/etherscan-token-reputation/). Si bien Etherscan no es una fuente autorizada «oficial»( la naturaleza de las redes descentralizadas impide que haya una fuente autorizada de legitimidad), los tókenes que Etherscan identifica como estafas es probable que sean estafas.
- 
+ 
## Conclusión {#conclusion}
Mientras haya valor en el mundo, va a haber estafadores que intenten robarlo para su beneficio, y en un mundo descentralizado no hay nadie que le proteja excepto usted mismo. Esperamos que recuerde estos puntos para ayudar a distinguir los tókenes legítimos de las estafas:
- Los tókenes estafa se hacen pasar por tókenes legítimos, pueden usar el mismo nombre, símbolo, etc.
-- Los tókenes estafa _no pueden_usar la misma dirección del contrato.
+- Los tokens de estafa _no pueden_ usar la misma dirección del contrato.
- La mejor fuente para la dirección del token legítimo es la organización propietaria del token.
-- De lo contrario, puede usar aplicaciones populares y de confianza como [Uniswap](https://app.uniswap.org/#/swap) y [Etherscan](https://etherscan.io/).
+- En su defecto, puede usar aplicaciones populares y de confianza como [Uniswap](https://app.uniswap.org/#/swap) y [Blockscout](https://eth.blockscout.com/).
From 3bf229ccb7e0e810817dc196c6e26b07322f3aae Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:30 -0300
Subject: [PATCH 178/589] update(i18n):
public/content/translations/es/decentralized-identity/index.md
---
.../es/decentralized-identity/index.md | 149 +++++++++++-------
1 file changed, 88 insertions(+), 61 deletions(-)
diff --git a/public/content/translations/es/decentralized-identity/index.md b/public/content/translations/es/decentralized-identity/index.md
index 0d1b798d67c..f500b4893c1 100644
--- a/public/content/translations/es/decentralized-identity/index.md
+++ b/public/content/translations/es/decentralized-identity/index.md
@@ -1,6 +1,6 @@
---
title: Identidad descentralizada
-description: '¿Qué es la identidad descentralizada y por qué es importante?'
+description: ¿Qué es la identidad descentralizada y por qué es importante?
lang: es
template: use-cases
emoji: ":id:"
@@ -13,13 +13,13 @@ summaryPoint3: Gracias a la criptografía, los usuarios tienen ahora las herrami
La identidad está detrás de prácticamente todos los aspectos de su vida. El uso de servicios en línea, la apertura de una cuenta bancaria, la votación en elecciones, la compra de propiedades, los contratos de empleo... Todo esto requiere demostrar su identidad.
-Sin embargo, los sistemas tradicionales de gestión de identidad dependen de intermediarios centralizados que emitan, tengan y controlen sus identificaciones y [atestaciones](/glossary/#attestation). Esto significa que no puede controlar su información relacionada con su identidad ni decidir quién tiene acceso a su Información de Identificación Personal (PII) y cuánto acceso tienen estas partes.
+Sin embargo, los sistemas tradicionales de gestión de la identidad han dependido durante mucho tiempo de intermediarios centralizados que emiten, mantienen y controlan sus identificadores y [atestaciones](/glossary/#attestation). Esto significa que no puede controlar su información relacionada con su identidad ni decidir quién tiene acceso a su Información de Identificación Personal (PII) y cuánto acceso tienen estas partes.
-Para resolver estos problemas, hemos descentralizado los sistemas de identidad utilizando cadenas de bloques públicas como Ethereum. La identidad descentralizada permite a los individuos administrar la información relacionada con su identidad. Con soluciones de identidad descentralizada, _tú_ puede crear identificadores y reclamar y mantener sus certificados sin depender de autoridades centralizadas como proveedores de servicios o gobiernos.
+Para resolver estos problemas, hemos descentralizado los sistemas de identidad utilizando cadenas de bloques públicas como Ethereum. La identidad descentralizada permite a los individuos administrar la información relacionada con su identidad. Con las soluciones de identidad descentralizada, _usted_ puede crear identificadores, así como reclamar y conservar sus atestaciones sin depender de autoridades centrales, como proveedores de servicios o gobiernos.
## Qué es la identidad? {#what-is-identity}
-Identidad significa el sentido del yo como individuo, definido por características únicas. La identidad se refiere a ser un _individuo_, es decir, una entidad humana única. La identidad también refiere entidades no humanas, como una organización o autoridad.
+Identidad significa el sentido del yo como individuo, definido por características únicas. La identidad se refiere a ser un _individuo_, es decir, una entidad humana distinta. La identidad también refiere entidades no humanas, como una organización o autoridad.
@@ -35,51 +35,77 @@ Un identificador es información que actúa como un indicador a una identidad o
Estos ejemplos tradicionales de identificadores son emitidos, mantenidos y controlados por entidades centrales. Se necesita permiso del Gobierno para cambiar su nombre o el de una plataforma de redes sociales para cambiar el nombre de usuario.
-## Beneficios de una identidad descentralizada {#benefits-of-decentralized-identity}
+## Beneficios de la identidad descentralizada {#benefits-of-decentralized-identity}
1. La identidad descentralizada aumenta el control individual de la información identificativa. Los identificadores y certificados descentralizados pueden ser verificados sin depender de autoridades centralizadas o servicios de terceros.
-2. Las soluciones de identidad descentralizadas facilitan un método de protección de la privacidad, robusto y confiable para verificar y gestionar la identidad del usuario.
+2. Las soluciones de identidad descentralizada facilitan un método sin confianza, fluido y que protege la privacidad para verificar y gestionar la identidad del usuario.
3. La identidad descentralizada que utiliza la tecnología de cadena de bloques crea confianza entre diferentes partes y proporciona garantías criptográficas para probar la validez de las certificaciones.
-4. La identidad descentralizada permite la portabilidad de los datos de identidad. Los usuarios almacenan certificados e identificadores en la cartera móvil y los pueden compartir con cualquier otro según su criterio. Los identificadores descentralizados y los certificados no están bloqueados en la base de datos de la organización emisora.
+4. La identidad descentralizada permite la portabilidad de los datos de identidad. Los usuarios almacenan atestaciones e identificadores en una billetera móvil y pueden compartirlos con cualquier parte que elijan. Los identificadores descentralizados y los certificados no están bloqueados en la base de datos de la organización emisora.
-5. La identidad descentralizada debería funcionar con las tecnologías emergentes de [conocimiento cero](/glossary/#zk-proof) que permitirán a individuos demostrar que son propietarios o que han realizado una acción sin la necesidad de revelarla. Esta podría convertirse en una manera poderosa de combinar confianza y privacidad para aplicaciones como la votación.
+5. La identidad descentralizada debería funcionar bien con las tecnologías emergentes de [conocimiento cero](/glossary/#zk-proof) que permitirán a las personas demostrar que poseen o han hecho algo sin revelar qué es. Esta podría convertirse en una manera poderosa de combinar confianza y privacidad para aplicaciones como la votación.
-6. La identidad descentralizada permite mecanismos [anti-Sybil](/glossary/#anti-sybil) para identificar cuando un individuo pretende ser multiples individuos para jugar o hacer spam en algún sistema.
+6. La identidad descentralizada permite que los mecanismos [anti-Sybil](/glossary/#anti-sybil) identifiquen cuándo un solo individuo humano pretende ser múltiples humanos para aprovecharse de un sistema o llenarlo de spam.
-## Casos de uso de identidad descentralizada {#decentralized-identity-use-cases}
+## Casos de uso de la identidad descentralizada {#decentralized-identity-use-cases}
La identidad descentralizada tiene muchos casos potenciales de uso:
-### 1. Inicio de sesión universal {#universal-dapp-logins}
+### 1. Inicios de sesión universales {#universal-dapp-logins}
-La identidad descentralizada puede ayudar a reemplazar los inicios de sesión basados en contraseña con autenticación descentralizada. Los proveedores de servicios pueden emitir certificados a los usuarios, los cuales pueden ser almacenados en una cartera de Ethereum. Un certificado de ejemplo sería un [NFT](/glossary/#nft) que otorga al titular acceso a una comunidad en línea.
+La identidad descentralizada puede ayudar a reemplazar los inicios de sesión basados en contraseña con autenticación descentralizada. Los proveedores de servicios pueden emitir certificados a los usuarios, los cuales pueden ser almacenados en una cartera de Ethereum. Un ejemplo de atestación sería un [NFT](/glossary/#nft) que concede al titular acceso a una comunidad en línea.
-Una función [de inicio de sesión con Ethereum](https://siwe.xyz/) habilitaría entonces a los servidores para confirmar la cuenta de Ethereum del usuario y obtener la verificación necesaria desde la dirección de su cuenta. Esto significa que los usuarios pueden acceder a plataformas y sitios web sin tener que memorizar contraseñas largas y mejorar la experiencia en línea de los usuarios.
+Una función de [Inicio de sesión con Ethereum](https://siwe.xyz/) permitiría a los servidores confirmar la cuenta de Ethereum del usuario y obtener la atestación requerida de la dirección de su cuenta. Esto significa que los usuarios pueden acceder a plataformas y sitios web sin tener que memorizar contraseñas largas y mejorar la experiencia en línea de los usuarios.
### 2. Autenticación KYC {#kyc-authentication}
El uso de muchos servicios en línea requiere que los individuos proporcionen certificados y credenciales, como un carné de conducir o pasaporte nacional. Pero este enfoque es problemático porque la información privada de los usuarios puede verse comprometida y los proveedores de servicios no pueden verificar la autenticidad del certificado.
-La identidad descentralizada permite a las empresas saltarse a los procesos [Conozca a Su Cliente (KYC)](https://en.wikipedia.org/wiki/Know_your_customer) convencionales y autenticar identidades de usuario a través de credenciales verificables. Esto reduce el coste de la gestión de la identidad y evita el uso de documentación falsa.
+La identidad descentralizada permite a las empresas saltarse los procesos convencionales de [Conozca a su cliente (KYC)](https://en.wikipedia.org/wiki/Know_your_customer) y autenticar las identidades de los usuarios a través de credenciales verificables. Esto reduce el coste de la gestión de la identidad y evita el uso de documentación falsa.
-### 3. Votaciones y comunidades en línea {#voting-and-online-communities}
+### 3. Votación y comunidades en línea {#voting-and-online-communities}
-Las votaciones en línea y las redes sociales son dos nuevas aplicaciones para la identidad descentralizada. Los esquemas de votación en línea son susceptibles de manipulación, especialmente si los actores maliciosos crean identidades falsas para votar. Pedir a las personas que presenten certificaciones en la cadena puede mejorar la integridad de los procesos de votación en línea.
+Las votaciones en línea y las redes sociales son dos nuevas aplicaciones para la identidad descentralizada. Los esquemas de votación en línea son susceptibles de manipulación, especialmente si los actores maliciosos crean identidades falsas para votar. Preguntar a las personas que presenten certificados en cadena puede mejorar la integridad de los procesos de votación en línea.
La identidad descentralizada puede ayudar a crear comunidades en línea libres de falsas cuentas. Por ejemplo, cada usuario podría tener que autenticar su identidad utilizando un sistema de identidad en la cadena, como el Ethereum Name Service, reduciendo la posibilidad de bots.
-### 4. Protección AntiSybil {#sybil-protection}
+### 4. Protección anti-Sybil {#sybil-protection}
-Las aplicaciones de concesión de subvenciones que utilizan [voto cuadrático](/glossary/#quadratic-voting) son vulnerables a los [ataques de Sybil](/glossary/#sybil-attack) porque el valor de una subvención aumenta cuando más personas votan por ella, lo que incentiva a los usuarios a dividir sus contribuciones entre muchas identidades. Las identidades descentralizadas ayudan a evitar esto aumentando la carga sobre cada participante para demostrar que son realmente humanos, aunque a menudo sin tener que revelar información privada específica.
+Las aplicaciones que otorgan subvenciones y que utilizan la [votación cuadrática](/glossary/#quadratic-voting) son vulnerables a los [ataques Sybil](/glossary/#sybil-attack) porque el valor de una subvención aumenta cuando más individuos votan por ella, lo que incentiva a los usuarios a dividir sus contribuciones entre muchas identidades. Las identidades descentralizadas ayudan a evitar esto aumentando la carga sobre cada participante para demostrar que son realmente humanos, aunque a menudo sin tener que revelar información privada específica.
+
+### 5. Identificación nacional y gubernamental {#national-and-government-id}
+
+Los gobiernos pueden utilizar los principios de la identidad descentralizada para emitir documentos de identidad fundamentales, como documentos de identidad nacionales, pasaportes o licencias de conducir, como credenciales verificables en Ethereum, lo que proporciona sólidas garantías criptográficas de autenticidad para reducir el fraude y la falsificación en la verificación de la identidad en línea. Los ciudadanos pueden almacenar estas atestaciones en su [billetera](/wallets/) personal y utilizarlas para demostrar su identidad, edad o derecho a voto.
+
+Este modelo permite la divulgación selectiva, especialmente cuando se combina con la tecnología de privacidad de [prueba de conocimiento cero (ZKP)](/zero-knowledge-proofs/). Por ejemplo, un ciudadano podría demostrar criptográficamente que es mayor de 18 años para acceder a un servicio con restricción de edad sin revelar su fecha de nacimiento exacta, lo que ofrece mayor privacidad que un documento de identidad tradicional.
+
+#### 💡Caso de estudio: ID digital nacional de Bután (NDI) en Ethereum {#case-study-bhutan-ndi}
+
+- Proporciona acceso a credenciales de identidad verificables para los casi 800 000 ciudadanos de Bután
+- Migrado de la red Polygon [a la red principal de Ethereum](https://www.bhutanndi.com/article/bhutan-adopts-ethereum-for-national-identity-a-new-chapter-in-digital-sovereignty_2d0c7ec2-5605-4c42-b258-bd9361ae8878) en octubre de 2025
+- Más de [234 000 identificaciones digitales](https://www.blockchain-council.org/blockchain/bhutan-uses-blockchain-in-digital-id-project/) emitidas a marzo de 2025
+
+El Reino de Bután [migró su sistema de Identidad Digital Nacional (NDI)](https://www.bhutanndi.com/article/bhutan-adopts-ethereum-for-national-identity-a-new-chapter-in-digital-sovereignty_2d0c7ec2-5605-4c42-b258-bd9361ae8878) a Ethereum en octubre de 2025. Construido sobre los principios de la identidad descentralizada y la identidad autosoberana, el sistema NDI de Bután utiliza identificadores descentralizados y credenciales verificables para emitir credenciales firmadas digitalmente directamente en la billetera personal de un ciudadano. Al anclar las pruebas criptográficas de estas credenciales en Ethereum, el sistema garantiza que son auténticas, a prueba de manipulaciones y que cualquier parte puede verificarlas sin consultar a una autoridad central.
+
+La arquitectura del sistema hace hincapié en la privacidad mediante el uso de la tecnología de [prueba de conocimiento cero (ZKP)](/zero-knowledge-proofs/). Esta implementación de «divulgación selectiva» permite a los ciudadanos demostrar hechos específicos (por ejemplo, «soy mayor de 18 años» o «soy ciudadano») para acceder a los servicios sin revelar los datos personales subyacentes, como su número de identificación completo o su fecha de nacimiento exacta. Esto demuestra un uso potente y real de Ethereum para un sistema de identificación nacional seguro, centrado en el usuario y que preserva la privacidad.
+
+#### 💡Caso de estudio: QuarkID de la Ciudad de Buenos Aires en la [Capa 2](/layer-2/) de Ethereum ZKSync Era {#case-study-buenos-aires-quarkid}
+
+- Se emitieron credenciales de identidad descentralizadas a más de [3,6 millones de usuarios](https://buenosaires.gob.ar/innovacionytransformaciondigital/miba-con-tecnologia-quarkid-la-ciudad-de-buenos-aires-incorporo) en el momento del lanzamiento
+- QuarkID es un protocolo de código abierto reconocido como un [Bien Público Digital](https://www.digitalpublicgoods.net/r/quarkid) en el marco de los Objetivos de Desarrollo Sostenible de la ONU
+- Hace hincapié en un modelo de «[gobierno como usuario](https://buenosaires.gob.ar/innovacionytransformaciondigital/miba-con-tecnologia-quarkid-la-ciudad-de-buenos-aires-incorporo)», en el que la ciudad no es propietaria del protocolo, lo que otorga a los ciudadanos la plena propiedad de los datos y la privacidad
+
+En 2024, el Gobierno de la Ciudad de Buenos Aires (GCBA) integró QuarkID, el «marco de confianza digital» de código abierto creado por la Secretaría de Innovación y Transformación Digital del GCBA, en miBA, la aplicación oficial de la ciudad para que los residentes accedan a los servicios gubernamentales y a los documentos oficiales. En el momento del lanzamiento, a los más de 3,6 millones de usuarios de miBA se les emitieron identidades digitales descentralizadas que les permiten gestionar y compartir documentos y certificados digitales verificables en la cadena, incluyendo credenciales de ciudadanía, certificados de nacimiento, matrimonio y defunción, registros fiscales, registros de vacunación y más.
+
+Construido en la red de [Capa 2](/layer-2/) de Ethereum, ZKSync Era, el sistema QuarkID utiliza la tecnología ZKP para permitir a los ciudadanos verificar sus credenciales personales de igual a igual a través de sus dispositivos móviles, sin exponer datos personales innecesarios. El programa destaca un modelo de «gobierno como usuario» en el que el GCBA actúa como un usuario más del protocolo QuarkID, interoperable y de código abierto, en lugar de actuar como propietario centralizado. Esta arquitectura habilitada por ZKP proporciona una característica de privacidad clave: ningún tercero, ni siquiera el GCBA, puede rastrear cómo, cuándo o por qué un ciudadano utiliza sus credenciales. Este exitoso programa proporciona a los ciudadanos una identidad totalmente autosoberana y el control sobre sus datos confidenciales, todo ello protegido por la red distribuida globalmente de Ethereum.
## ¿Qué son los certificados? {#what-are-attestations}
Un certificado es una afirmación hecha por una entidad acerca de otra entidad. Si vive en Estados Unidos, su carné de conducir emitido por el Department of Motor Vehicles (una entidad) certifica que usted (otra entidad) está legalmente autorizado a conducir un coche.
-Los certificados son diferentes de los identificadores. Un certificado _contiene_ identificadores que hacen referencia a una identidad en particular, y hace una afirmación relacionada con esta identidad. Por lo tanto, su carné de conducir tiene identificadores (nombre, fecha de nacimiento, dirección), pero también es una afirmación sobre su derecho legal a conducir.
+Los certificados son diferentes de los identificadores. Una atestación _contiene_ identificadores para hacer referencia a una identidad particular, y hace una afirmación sobre un atributo relacionado con esta identidad. Por lo tanto, su carné de conducir tiene identificadores (nombre, fecha de nacimiento, dirección), pero también es una afirmación sobre su derecho legal a conducir.
### ¿Qué son los identificadores descentralizados? {#what-are-decentralized-identifiers}
@@ -87,15 +113,15 @@ Los identificadores tradicionales como tu nombre jurídico o dirección de corre
Los identificadores descentralizados son emitidos, mantenidos y controlados por individuos. Una [cuenta de Ethereum](/glossary/#account) es un ejemplo de un identificador descentralizado. Puede crear tantas cuentas como quiera sin el permiso de nadie y sin necesidad de almacenarlas en un registro central.
-Los identificadores descentralizados son almacenados en "ledgers" distribuidos ([cadena de bloques](/glossary/#blockchain)[) o `<1>`redes persona a persona](/glossary/#peer-to-peer-network) (peer-to-peer). Esto hace a los DIDs [globalmente únicos, resolubles con alta disponibilidad, y criptográficamente verificables](https://w3c-ccg.github.io/did-primer/). Un identificador descentralizado puede ser asociado con diferentes entidades, incluyendo personas, organizaciones o instituciones gubernamentales.
+Los identificadores descentralizados se almacenan en libros de contabilidad distribuidos ([cadenas de bloques](/glossary/#blockchain)) o en [redes de pares](/glossary/#peer-to-peer-network). Esto hace que los DID sean [globalmente únicos, resolubles con alta disponibilidad y criptográficamente verificables](https://w3c-ccg.github.io/did-primer/). Un identificador descentralizado puede ser asociado con diferentes entidades, incluyendo personas, organizaciones o instituciones gubernamentales.
-## ¿Qué hace que los identificadores descentralizados sean posibles? {#what-makes-decentralized-identifiers-possible}
+## ¿Qué hace que los identificadores descentralizados sean posibles? ¿Qué hace posibles los identificadores descentralizados? {#what-makes-decentralized-identifiers-possible}
### 1. Criptografía de clave pública {#public-key-cryptography}
-La criptografía de clave pública es una medida de seguridad de la información que genera una [clave pública](/glossary/#public-key) y una [clave privada](/glossary/#private-key) para una entidad. La [criptografía](/glossary/#cryptography) de clave pública se usa en redes de cadena de bloques para autentificar identidades de usuarios y probar la propiedad de activos digitales.
+La criptografía de clave pública es una medida de seguridad de la información que genera una [clave pública](/glossary/#public-key) y una [clave privada](/glossary/#private-key) para una entidad. La [criptografía](/glossary/#cryptography) de clave pública se utiliza en las redes de cadenas de bloques para autenticar las identidades de los usuarios y demostrar la propiedad de los activos digitales.
-Algunos identificadores descentralizados, como una cuenta de Ethereum, tienen claves públicas y privadas. La clave pública identifica al controlador de la cuenta, mientras que las claves privadas pueden firmar y descifrar mensajes para esta cuenta. La criptografía de clave pública provee pruebas necesarias para autenticar entidades y prevenir suplantaciones y uso de identidades falsas usando [firmas criptográficas](https://andersbrownworth.com/blockchain/public-private-keys/) para verificar todos los pedidos.
+Algunos identificadores descentralizados, como una cuenta de Ethereum, tienen claves públicas y privadas. La clave pública identifica al controlador de la cuenta, mientras que las claves privadas pueden firmar y descifrar mensajes para esta cuenta. La criptografía de clave pública proporciona las pruebas necesarias para autenticar entidades y evitar la suplantación de identidad y el uso de identidades falsas, utilizando [firmas criptográficas](https://andersbrownworth.com/blockchain/public-private-keys/) para verificar todas las afirmaciones.
### 2. Almacenes de datos descentralizados {#decentralized-datastores}
@@ -103,11 +129,11 @@ Una cadena de bloques sirve como un registro de datos verificables: un repositor
Si alguien necesita confirmar la validez de un identificador descentralizado, puede buscar la clave pública asociada en la cadena de bloques. Esto es diferente de los identificadores tradicionales que requieren de terceros para autenticarse.
-## ¿Cómo hacen los identificadores descentralizados para generar certificaciones descentralizadas? {#how-decentralized-identifiers-and-attestations-enable-decentralized-identity}
+## ¿Cómo hacen los identificadores descentralizados para generar certificaciones descentralizadas? ¿Cómo los identificadores y las atestaciones descentralizadas hacen posible la identidad descentralizada? {#how-decentralized-identifiers-and-attestations-enable-decentralized-identity}
La identidad descentralizada es la idea de que la información relacionada con la identidad debe ser autocontrolada, privada y portátil, siendo sus cimientos los identificadores descentralizados y los certificados.
-En el contexto de la identidad descentralizada, las certificaciones (también conocidas como [credenciales verificables](https://www.w3.org/TR/vc-data-model/)) son afirmaciones a prueba de manipulación, criptográficamente verificables realizadas por el emisor. Cada certificado o credencial verificable que una entidad (por ejemplo, una organización) emite está asociada con su CPI.
+En el contexto de la identidad descentralizada, las atestaciones (también conocidas como [Credenciales Verificables](https://www.w3.org/TR/vc-data-model/)) son afirmaciones a prueba de manipulaciones y criptográficamente verificables hechas por el emisor. Cada certificado o credencial verificable que una entidad (por ejemplo, una organización) emite está asociada con su CPI.
Debido a que los CPI se almacenan en la cadena de bloques, cualquiera puede verificar la validez de un certificado comprobando el CPI del emisor en Ethereum. Esencialmente, la blockchain de Ethereum actúa como un directorio global que permite la verificación de CPIs asociados con ciertas entidades.
@@ -115,77 +141,78 @@ Los identificadores descentralizados son la razón por la que se pueden autocont
Los identificadores descentralizados también son cruciales para proteger la privacidad de la información personal a través de la identidad descentralizada. Por ejemplo, si un individuo envía una prueba de un certificado (un carné de conducir), el grupo de verificación no necesita verificar la validez de la información en la prueba. En cambio, el verificador solo necesita garantías criptográficas de la autenticidad del certificado y de la identidad de la organización emisora para determinar si la prueba es válida.
-## Tipos de certificados en identidad descentralizada {#types-of-attestations-in-decentralized-identity}
+## Tipos de atestaciones en la identidad descentralizada {#types-of-attestations-in-decentralized-identity}
La forma en que se almacena y recupera la información de los certificados en un ecosistema de identidad basado en Ethereum es diferente de la gestión tradicional de la identidad. He aquí una visión general de los diversos enfoques para emitir, almacenar y verificar los certificados en sistemas de identidad descentralizados:
-### Certificados fuera de cadena {#off-chain-attestations}
+### Atestaciones fuera de la cadena {#offchain-attestations}
-Un problema que conlleva el almacenamiento de certificados en la cadena es que pueden contener información que los individuos quieren mantener privados. La naturaleza pública de la cadena de bloques de Ethereum no facilita el almacenamiento de tales certificados.
+Una de las cuestiones que plantea el almacenamiento de certificaciones en la cadena de bloques es que podrían contener información que las personas quieren mantener privada. La naturaleza pública de la cadena de bloques de Ethereum no facilita el almacenamiento de tales certificados.
-La solución es emitir certificados mantenidos por los usuarios fuera de la cadena en carteras digitales pero firmadas con el CPI del emisor almacenado en la cadena. Estos certificados están codificados como [JSON Web Tokens](https://en.wikipedia.org/wiki/JSON_Web_Token) y contienen la firma digital del emisor, lo que permite una verificación fácil de las reclamaciones fuera de la cadena.
+La solución es emitir certificaciones, mantenidas por los usuarios fuera de la cadena en carteras digitales, pero firmadas con el DID almacenado en cadena del emisor. Estas atestaciones se codifican como [Tokens Web JSON](https://en.wikipedia.org/wiki/JSON_Web_Token) y contienen la firma digital del emisor, lo que permite una fácil verificación de las afirmaciones fuera de la cadena.
-Este es un escenario hipotético para explicar los certificados fuera de la cadena:
+He aquí un escenario hipotético para explicar las atestaciones fuera de cadena:
1. Una universidad (el emisor) genera un certificado (un certificado académico digital), firma con sus claves y lo emite a Bob (el titular de la identidad).
2. Bob solicita un empleo y quiere demostrar sus cualificaciones académicas a un empleador, por lo que comparte la certificación desde su cartera. La compañía (el verificador) puede confirmar la validez del certificado comprobando el CPI del emisor (es decir, su clave pública en Ethereum).
-### Certificaciones fuera de cadena con acceso permanente {#offchain-attestations-with-persistent-access}
+### Atestaciones fuera de la cadena con acceso persistente {#offchain-attestations-with-persistent-access}
-Bajo este sistema, los cerficados se transforman en un archivo JSON y son almacenados off-chain (idealmente en una [plataforma de cloud descentralizada](/developers/docs/storage/) como IPFS o Swarm). Sin embargo, un [hash](/glossary/#hash) del archivo JSON se almacena en cadena y se enlaza con un CPI mediante un registro en la cadena. El CPI asociado podría ser el del emisor del certificado o el destinatario.
+Bajo este acuerdo, las atestaciones se transforman en archivos JSON y se almacenan fuera de la cadena (idealmente en una plataforma de [almacenamiento en la nube descentralizado](/developers/docs/storage/), como IPFS o Swarm). Sin embargo, un [hash](/glossary/#hash) del archivo JSON se almacena en la cadena y se vincula a un DID a través de un registro en la cadena. El CPI asociado podría ser el del emisor del certificado o el destinatario.
Este enfoque permite que las certificaciones obtengan permanencia basada en la cadena de bloques, manteniendo la información de reclamaciones cifrada y verificable. También permite la divulgación selectiva, ya que el titular de la clave privada puede descifrar la información.
-### Certificados en la cadena {#onchain-attestations}
+### Atestaciones en la cadena {#onchain-attestations}
-Los certificados en cadena se mantienen en [contratos inteligentes](/glossary/#smart-contract) en la cadena de bloques de Ethereum. El contrato inteligente (actuando como un registro) enlazará un certificado a un identificador descentralizado correspondiente en la cadena (una clave pública).
+Las atestaciones en la cadena se guardan en [contratos inteligentes](/glossary/#smart-contract) en la cadena de bloques de Ethereum. El contrato inteligente (que actúa como un registro) enlazará una certificación con un identificador descentralizado correspondiente en la cadena (una clave pública).
-He aquí un ejemplo que ilustra cómo podrían funcionar en la práctica los certificados en la cadena:
+He aquí un ejemplo para mostrar cómo las certificaciones en cadena podrían funcionar en la práctica:
1. Una empresa (XYZ Corp) planea vender acciones utilizando un contrato inteligente, pero solo quiere compradores que hayan completado una comprobación de antecedentes.
-2. XYZ Corp puede hacer que la empresa realice comprobaciones de antecedentes para emitir certificados en cadena en Ethereum. Este certificado verifica que el individuo ha pasado la comprobación de antecedentes sin exponer ninguna información personal.
+2. XYZ Corp puede hacer que la empresa realice verificaciones de antecedentes para emitir certificaciones en cadena en Ethereum. Este certificado verifica que el individuo ha pasado la comprobación de antecedentes sin exponer ninguna información personal.
3. El contrato inteligente de venta de acciones puede comprobar el contrato de registro para ver las identidades de los compradores examinados, haciendo posible que el contrato inteligente determine quién está autorizado a comprar acciones y quién no.
-### Los tókenes Souldbound y la identidad {#soulbound}
+### Tokens Soulbound y la identidad {#soulbound}
-[Los tokens Soulbound](https://vitalik.eth.limo/general/2022/01/26/soulbound.html) ([NFT no transferibles](/glossary/#nft)) podrían usarse para recopilar información exclusiva de una billetera específica. Esto crea efectivamente una identidad única en cadena vinculada a una dirección particular de Ethereum que podría incluir tókenes representando logros (ej. terminar algún curso en línea específico o pasar un umbral de puntuación en un juego) o participación en la comunidad.
+Los [tokens Soulbound](https://vitalik.eth.limo/general/2022/01/26/soulbound.html) ([NFT no transferibles](/glossary/#nft)) podrían utilizarse para recopilar información única de una billetera específica. Esto crea eficazmente una identidad única en la cadena vinculada a una dirección de Ethereum particular que podría incluir tokens que representen logros (por ejemplo, terminar un curso específico en línea o superar una puntuación umbral en un juego) o la participación en la comunidad.
-## Usos de la identidad descentralizada {#use-decentralized-identity}
+## Utilice la identidad descentralizada {#use-decentralized-identity}
Hay muchos proyectos ambiciosos que utilizan Ethereum como base para soluciones de identidad descentralizada:
-- **[Ethereum Name Service (ENS)](https://ens.domains/)** - _Un sistema de nomenclatura descentralizado en la cadena, identificadores legibles por máquinas, como direcciones del cartera Ethereum, hashes de contenido y metadatos._
-- **[SpruceID](https://www.spruceid.com/)** - _Un proyecto de identidad descentralizado que permite a los usuarios controlar la identidad digital con cuentas de Ethereum y perfiles ENS en lugar de depender de servicios de terceros._
-- **[Servicio de Atestación de Ethereum (EAS)](https://attest.sh/)**: _Un registro/protocolo descentralizado para hacer atestaciones dentro o fuera de la cadena sobre cualquier cosa._
-- **[Proof of Humanity](https://www.proofofhumanity.id)** - _Proof of Humanity (o PoH) es un sistema de verificación de identidad social construido en Ethereum._
-- **[Brillo](https://www.brightid.org/)** - _Una red de identidad social descentralizada y de código abierto que busca reformar la verificación de identidad a través de la creación y el análisis de un gráfico social._
-- **[walt.id](https://walt.id)**: _ infraestructura de cartera e identidad descentralizadas de código abierto que permiten a los desarrolladores y organizaciones aprovechar la identidad autosoberana y los NFT/SBT._
-- **[Veramo:](https://veramo.io/)** _Un marco de JavaScript que facilita a cualquier persona el uso de datos criptográficamente verificables en sus aplicaciones._
+- **[Servicio de Nombres de Ethereum (ENS)](https://ens.domains/)** - _Un sistema de nombres descentralizado para identificadores legibles por máquina en la cadena, como direcciones de billeteras de Ethereum, hashes de contenido y metadatos._
+- **[Iniciar sesión con Ethereum (SIWE)](https://siwe.xyz/)** - _Estándar abierto para la autenticación con cuentas de Ethereum._
+- **[SpruceID](https://www.spruceid.com/)** - _Un proyecto de identidad descentralizada que permite a los usuarios controlar la identidad digital con cuentas de Ethereum y perfiles de ENS en lugar de depender de servicios de terceros._
+- **[Servicio de Atestación de Ethereum (EAS)](https://attest.org/)** - _Un libro de contabilidad/protocolo descentralizado para realizar atestaciones en la cadena o fuera de la cadena sobre cualquier cosa._
+- **[Prueba de Humanidad (Proof of Humanity)](https://www.proofofhumanity.id)** - _Proof of Humanity (o PoH) es un sistema de verificación de identidad social construido en Ethereum._
+- **[BrightID](https://www.brightid.org/)** - _Una red de identidad social descentralizada y de código abierto que busca reformar la verificación de la identidad mediante la creación y el análisis de un grafo social._
+- **[walt.id](https://walt.id)** — _Infraestructura de identidad y billetera descentralizada de código abierto que permite a los desarrolladores y organizaciones aprovechar la identidad autosoberana y los NFT/SBT._
+- **[Veramo](https://veramo.io/)** - _Un marco de JavaScript que facilita a cualquiera el uso de datos criptográficamente verificables en sus aplicaciones._
-## Para profundizar sobre el tema {#further-reading}
+## Lecturas adicionales {#further-reading}
### Artículos {#articles}
-- [Casos de Uso de la cadena de bloques: Blockchain in Digital Identity](https://consensys.net/blockchain-use-cases/digital-identity/) — _ConsenSys_
-- [¿Qué es Ethereum ERC725? Administración propia y soberana de identidades en la cadena de bloques](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) — _Ciudad de Sam_
+- [Casos de uso de la cadena de bloques: La cadena de bloques en la identidad digital](https://consensys.net/blockchain-use-cases/digital-identity/) — _ConsenSys_
+- [¿Qué es el ERC725 de Ethereum? Gestión de la identidad autosoberana en la cadena de bloques](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) — _Sam Town_
- [Cómo la cadena de bloques podría resolver el problema de la identidad digital](https://time.com/6142810/proof-of-humanity/) — _Andrew R. Chow_
-- [¿Qué es la identidad descentralizada y por qué merece tu atención?](https://web3.hashnode.com/what-is-decentralized-identity) — _Emmanuel Awosika_
-- [Introducción a la identidad descentralizada](https://walt.id/white-paper/digital-identity), _Dominik Beron_
+- [¿Qué es la identidad descentralizada y por qué debería importarle?](https://web3.hashnode.com/what-is-decentralized-identity) — _Emmanuel Awosika_
+- [Introducción a la identidad descentralizada](https://walt.id/white-paper/digital-identity) — _Dominik Beron_
-### Vídeos {#videos}
+### Videos {#videos}
-- [Identidad descentralizada (bonificación de sesión Livestream)](https://www.youtube.com/watch?v=ySHNB1za_SE&t=539s) — _Un vídeo muy aclarador de la identidad descentralizada explicado por Andreas_
-- [Iniciar sesión con Ethereum e Identity descentralizada con Ceramic, IDX, React, y 3ID Connect](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _tutorial de YouTube sobre la construcción de un sistema de gestión de identidad para crear, leer, y actualizar el perfil de un usuario usando su cartera Ethereum por Nader Dabit_
-- [BrightID - Identidad descentralizada en Ethereum](https://www.youtube.com/watch?v=D3DbMFYGRoM) — _episodio de pódcast Bankless abordando BrightID, una solución de identidad descentralizada para Ethereum_
-- [Internet fuera de la cadena: Credenciales descentralizadas y verificables](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — EthDenver 2022 presentación de Evin McMullen
-- [Credenciales verificables explicadas](https://www.youtube.com/watch?v=ce1IdSr-Kig), Vídeo explicativo de YouTube con una demostración realizada por Tamino Baumann
+- [Identidad descentralizada (sesión extra de transmisión en vivo)](https://www.youtube.com/watch?v=ySHNB1za_SE&t=539s) — _Un gran vídeo explicativo sobre la identidad descentralizada de Andreas Antonopolous_
+- [Iniciar sesión con Ethereum e Identidad descentralizada con Ceramic, IDX, React y 3ID Connect](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _Tutorial de YouTube sobre cómo construir un sistema de gestión de identidad para crear, leer y actualizar el perfil de un usuario utilizando su billetera de Ethereum por Nader Dabit_
+- [BrightID: identidad descentralizada en Ethereum](https://www.youtube.com/watch?v=D3DbMFYGRoM) — _Episodio del pódcast de Bankless en el que se habla de BrightID, una solución de identidad descentralizada para Ethereum_
+- [La internet fuera de la cadena: Identidad descentralizada y credenciales verificables](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — Presentación de EthDenver 2022 por Evin McMullen
+- [Explicación de las credenciales verificables](https://www.youtube.com/watch?v=ce1IdSr-Kig) - Vídeo explicativo de YouTube con demostración de Tamino Baumann
### Comunidades {#communities}
-- [ERC-725 Alianza en GitHub](https://github.com/erc725alliance) — _Partidarios del estándar ERC725 para gestionar la identidad en la cadena de bloques Ethereum_
-- [Servidor EthID Discord](https://discord.com/invite/ZUyG3mSXFD) — _Comunidad para entusiastas y desarrolladores que trabajan en Sign-in con Ethereum_
-- [Veramo Labs](https://discord.gg/sYBUXpACh4) — _Una comunidad de desarrolladores que contribuyen a la construcción de un marco para datos verificables para aplicaciones_
-- [walt.id](https://discord.com/invite/AW8AgqJthZ): _una comunidad de desarrolladores y constructores que se ocupan de los casos de uso para las identidades descentralizadas en varias industrias._
+- [Alianza ERC-725 en GitHub](https://github.com/erc725alliance) — _Partidarios del estándar ERC725 para gestionar la identidad en la cadena de bloques de Ethereum_
+- [Servidor de Discord de EthID](https://discord.com/invite/ZUyG3mSXFD) — _Comunidad para entusiastas y desarrolladores que trabajan en Iniciar sesión con Ethereum y el Protocolo de Seguimiento de Ethereum_
+- [Veramo Labs](https://discord.gg/sYBUXpACh4) — _Una comunidad de desarrolladores que contribuyen a la creación de un marco de datos verificables para aplicaciones_
+- [walt.id](https://discord.com/invite/AW8AgqJthZ) — _Una comunidad de desarrolladores y creadores que trabajan en casos de uso de identidad descentralizada en diversas industrias_
From 0ed48cbff50a482b111f85c1fd14314ca6d645d3 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:32 -0300
Subject: [PATCH 179/589] update(i18n):
public/content/translations/es/contributing/adding-exchanges/index.md
---
.../es/contributing/adding-exchanges/index.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/public/content/translations/es/contributing/adding-exchanges/index.md b/public/content/translations/es/contributing/adding-exchanges/index.md
index e0c20a67342..9b9303bb974 100644
--- a/public/content/translations/es/contributing/adding-exchanges/index.md
+++ b/public/content/translations/es/contributing/adding-exchanges/index.md
@@ -1,10 +1,10 @@
---
title: Añadir intercambios
-description: Política aplicable para añadir intercambios a ethereum.org
+description: Política aplicable para añadir tipos de interés a Ethereum.org
lang: es
---
-# Añadir intercambios a Ethereum {#adding-ethereum-exchanges}
+# Añadir intercambios de Ethereum {#adding-ethereum-exchanges}
Cualquiera es libre de sugerir nuevos intercambios a Ethereum.org.
@@ -16,7 +16,7 @@ Esta página permite a un usuario indicar donde vive y ver el intercambio que pu
Debido a este contexto, necesitamos información específica cuando usted sugiera un intercambio.
-**NOTA:** si quiere incluir un intercambio descentralizado, eche un vistazo a nuestra [política para incluir carteras y dapps](/contributing/adding-products/).
+**NOTA:** Si quiere incluir un intercambio descentralizado, eche un vistazo a nuestra [política para incluir billeteras y dapps](/contributing/adding-products/).
## Lo que necesitamos {#what-we-need}
@@ -25,13 +25,13 @@ Debido a este contexto, necesitamos información específica cuando usted sugier
- Prueba de que el intercambio es una operación legítima.
- Cualquier información adicional que usted pueda aportar, como años en activo de la empresa, respaldo financiero, etc.
-Necesitamos esta información para poder ayudar [con precisión a los usuarios a encontrar un intercambio que puedan usar](/get-eth/#country-picker).
+Necesitamos esta información para poder [ayudar a los usuarios a encontrar un intercambio que puedan usar](/get-eth/#country-picker) con precisión.
Y para que ethereum.org pueda estar más seguro de que el intercambio es un servicio legítimo y seguro.
---
-## Añada su intercambio {#add-exchange}
+## Añade tu intercambio {#add-exchange}
Si desea añadir un interambio a ethereum.org, cree una incidencia en GitHub.
From 8f3ef6ac33e0a16f77069cc9318581c3b1a7791c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:33 -0300
Subject: [PATCH 180/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-mint-an-nft/index.md
---
.../tutorials/how-to-mint-an-nft/index.md | 170 +++++++++---------
1 file changed, 88 insertions(+), 82 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/how-to-mint-an-nft/index.md b/public/content/translations/es/developers/tutorials/how-to-mint-an-nft/index.md
index 61f6c7f0a6b..418b7b84d09 100644
--- a/public/content/translations/es/developers/tutorials/how-to-mint-an-nft/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-mint-an-nft/index.md
@@ -1,38 +1,42 @@
---
-title: Como acuñar un NFT (parte 2/3 de la serie de tutoriales de NFT)
-description: Este tutorial describe como acuñar un NFT en la cadena de bloques de Ethereum usando nuestro contrato inteligente y Web3.
+title: Cómo acuñar un NFT (Parte 2/3 de la serie de tutoriales de NFT)
+description: Este tutorial describe cómo acuñar un NFT en la blockchain de Ethereum usando nuestro contrato inteligente y Web3.
author: "Sumi Mudgil"
tags:
- - "ERC-721"
- - "alchemy"
- - "solidity"
- - "contratos inteligentes"
+ [
+ "ERC-721",
+ "Alchemy",
+ "Solidity",
+ "contratos Inteligentes"
+ ]
skill: beginner
lang: es
published: 2021-04-22
---
-[Beeple](https://www.nytimes.com/2021/03/11/arts/design/nft-auction-christies-beeple.html): 69 millones de $ [3Lau](https://www.forbes.com/sites/abrambrown/2021/03/03/3lau-nft-nonfungible-tokens-justin-blau/?sh=5f72ef64643b): 11 millones de $ [Grimes](https://www.theguardian.com/music/2021/mar/02/grimes-sells-digital-art-collection-non-fungible-tokens): 6 millones de $
+[Beeple](https://www.nytimes.com/2021/03/11/arts/design/nft-auction-christies-beeple.html): $69 millones
+[3LAU](https://www.forbes.com/sites/abrambrown/2021/03/03/3lau-nft-nonfungible-tokens-justin-blau/?sh=5f72ef64643b): $11 millones
+[Grimes](https://www.theguardian.com/music/2021/mar/02/grimes-sells-digital-art-collection-non-fungible-tokens): $6 millones
-Todos ellos acuñaron sus NFT usando la potente API de Alchemy. En este tutorial, le enseñaremos a hacer lo mismo en < 10 minutos.
+Todos ellos acuñaron sus NFT usando la potente API de Alchemy. En este tutorial, le enseñaremos cómo hacer lo mismo en \<10 minutos.
-«Acuñar un NFT» es el acto de publicar una instancia única de su token ERC-721 en la cadena de bloques. Usando nuestro contrato inteligente de la [parte 1 de esta serie de tutoriales sobre NFT](/developers/tutorials/how-to-write-and-deploy-an-nft/), hagamos flexibles nuestras habilidades Web3 y acuñemos un NFT. Al finalizar este tutorial, será capaz de localizar tantos NFT como se le antojen (¡o su billetera alcance!).
+«Acuñar un NFT» es el acto de publicar una instancia única de su token ERC-721 en la blockchain. Usando nuestro contrato inteligente de la [Parte 1 de esta serie de tutoriales de NFT](/developers/tutorials/how-to-write-and-deploy-an-nft/), demostremos nuestras habilidades en Web3 y acuñemos un NFT. Al final de este tutorial, podrá acuñar tantos NFT como su corazón (y su billetera) deseen.
¡Comencemos!
## Paso 1: Instalar Web3 {#install-web3}
-Si siguió el primer tutorial sobre cómo crear su contrato inteligente NFT, entonces ya está familiarizado con el uso de Ethers.js. Web3 es similar a Ethers, ya que es una biblioteca usada para crear solicitudes en la cadena de bloques de Ethereum de manera simple. En este tutorial usaremos [Alchemy Web3](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3), que es una biblioteca Web3 mejorada que ofrece reintentos automáticos y un soporte robusto para WebSocket.
+Si siguió el primer tutorial sobre cómo crear su contrato inteligente de NFT, ya tiene experiencia con Ethers.js. Web3 es similar a Ethers, ya que es una librería que se usa para facilitar la creación de solicitudes a la blockchain de Ethereum. En este tutorial usaremos [Alchemy Web3](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3), que es una librería de Web3 mejorada que ofrece reintentos automáticos y un soporte robusto para WebSocket.
-En el directorio de inicio de su proyecto ejecute:
+En el directorio de inicio de su proyecto, ejecute:
```
npm install @alch/alchemy-web3
```
-## Paso 2: Crear un archvio `mint-nft.js` {#create-mintnftjs}
+## Paso 2: Crear un archivo `mint-nft.js` {#create-mintnftjs}
-Dentro de su directorio de scripts, cree el archivo `mint-nft.js` y añada las siguientes líneas de código:
+Dentro de su directorio de scripts, cree un archivo `mint-nft.js` y agregue las siguientes líneas de código:
```js
require("dotenv").config()
@@ -41,83 +45,83 @@ const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
const web3 = createAlchemyWeb3(API_URL)
```
-## Paso 3: Obtener la ABI de su contrato {#contract-abi}
+## Paso 3: Obtener el ABI de su contrato {#contract-abi}
-Nuestro contrato ABI (las siglas en inglés de Aplicación de Interfaz Binaria) es la interfaz para interactuar con nuestro contrato inteligente. Puede profundizar [aquí](https://docs.alchemyapi.io/alchemy/guides/eth_getlogs#what-are-ab-is) acerca de los contratos ABI. Hardhat genera automáticamente una ABI para nosotros y la guarda en el archivo `MyNFT.json`. Para poder usarlo, necesitaremos analizar el contenido añadiendo las siguientes líneas de código a nuestro archivo `mint-nft.js`:
+El ABI de nuestro contrato (Application Binary Interface o Interfaz Binaria de Aplicación) es la interfaz para interactuar con nuestro contrato inteligente. Puede obtener más información sobre los ABI de contrato [aquí](https://docs.alchemyapi.io/alchemy/guides/eth_getlogs#what-are-ab-is). Hardhat genera automáticamente un ABI para nosotros y lo guarda en el archivo `MyNFT.json`. Para usar esto, necesitaremos analizar el contenido agregando las siguientes líneas de código a nuestro archivo `mint-nft.js`:
```js
const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json")
```
-Si quiere ver la ABI puede hacerlo en su propia consola:
+Si quiere ver el ABI, puede imprimirlo en su consola:
```js
console.log(JSON.stringify(contract.abi))
```
-Para ejecutar `mint-nft.js` y ver su ABI impresa en la consola, vaya a la ventana del terminal y ejecute:
+Para ejecutar `mint-nft.js` y ver su ABI impreso en la consola, vaya a su terminal y ejecute:
```js
node scripts/mint-nft.js
```
-## Paso 4: Configurar los metadatos para su NFT usando IPFS {#config-meta}
+## Paso 4: Configurar los metadatos de su NFT usando IPFS {#config-meta}
-Si recuerda la primera parte de nuestro tutorial, nuestra función `mintNFT` del contrato inteligente toma un parámetro de tokenURI que debe resolverse en un documento JSON que describe los metadatos de NFT —que es lo que realmente hace que el NFT cobre vida— permitiéndole tener propiedades configurables, como su nombre, descripción, imagen y otros atributos.
+Si recuerda de nuestro tutorial de la Parte 1, nuestra función de contrato inteligente `mintNFT` toma un parámetro tokenURI que debe resolverse en un documento JSON que describa los metadatos del NFT, que es lo que realmente da vida al NFT, permitiéndole tener propiedades configurables, como un nombre, descripción, imagen y otros atributos.
-> _Interplanetary File System (IPFS) es un protocolo de red descentralizado y de red entre pares para guardar y compartir datos en un sistema de archivos distribuido._
+> _Interplanetary File System (IPFS) es un protocolo descentralizado y una red entre pares (peer-to-peer) para almacenar y compartir datos en un sistema de archivos distribuido._
-Usaremos Pinata, una conveniente API y kit de herramientas de IPFS, para almacenar nuestros activos y metadatos del NFT y así garantizar que nuestro NFT esté verdaderamente descentralizado. Si no tiene una cuenta en Pinata, puede crearla gratuitamente [aquí](https://app.pinata.cloud) y completar los pasos para verificar su correo electrónico.
+Usaremos Pinata, una cómoda API y un conjunto de herramientas de IPFS, para almacenar los activos y metadatos de nuestro NFT y así garantizar que nuestro NFT esté verdaderamente descentralizado. Si no tiene una cuenta de Pinata, regístrese para obtener una cuenta gratuita [aquí](https://app.pinata.cloud) y complete los pasos para verificar su correo electrónico.
Una vez que haya creado una cuenta:
-- Navegue hasta la página de «Files» (Archivos) y haga clic en botón azul «Upload» (Subir) en la parte superior izquierda de la página.
+- Vaya a la página «Files» (Archivos) y haga clic en el botón azul «Upload» (Subir) en la parte superior izquierda de la página.
-- Suba una imagen a Pinata: este será el recurso de imagen para su NFT. Dele a su activo el nombre que desee.
+- Suba una imagen a Pinata: este será el activo de imagen para su NFT. Siéntase libre de nombrar el activo como desee.
-- Una vez subida, verá la info dentro de la tabla en la página «Files» (Archivos). También verá una columna CID. Puede copiar el CID haciendo clic en el botón copiar junto a él. Puede ver el activo subido en `https://gateway.pinata.cloud/ipfs/`. Por ejemplo, puede ver la imagen que usamos en IPFS [aquí](https://gateway.pinata.cloud/ipfs/QmZdd5KYdCFApWn7eTZJ1qgJu18urJrP9Yh1TZcZrZxxB5).
+- Después de subirlo, verá la información del archivo en la tabla de la página «Files» (Archivos). También verá una columna CID. Puede copiar el CID haciendo clic en el botón de copiar que se encuentra al lado. Puede ver su archivo subido en: `https://gateway.pinata.cloud/ipfs/`. Puede encontrar la imagen que usamos en IPFS [aquí](https://gateway.pinata.cloud/ipfs/QmZdd5KYdCFApWn7eTZJ1qgJu18urJrP9Yh1TZcZrZxxB5), por ejemplo.
-He aquí un resumen de los pasos descritos anteriormente para aquellos que tienen memoria visual:
+Para quienes aprenden de forma más visual, a continuación se resumen los pasos anteriores:
-
+
-Ahora, vamos a subir otro documento más a Pinata. Pero antes de hacer eso, necesitamos ¡crearlo!
+Ahora, vamos a subir un documento más a Pinata. ¡Pero antes de hacerlo, tenemos que crearlo!
-En su directorio raíz, cree un nuevo archivo llamado `nft-metadata.json` y añada el siguiente código json:
+En su directorio raíz, cree un nuevo archivo llamado `nft-metadata.json` y agregue el siguiente código JSON:
```json
{
"attributes": [
{
- "trait_type": "Breed",
+ "trait_type": "Raza",
"value": "Maltipoo"
},
{
- "trait_type": "Eye color",
- "value": "Mocha"
+ "trait_type": "Color de ojos",
+ "value": "Moca"
}
],
- "description": "The world's most adorable and sensitive pup.",
+ "description": "El cachorro más adorable y sensible del mundo.",
"image": "ipfs://QmWmvTJmJU3pozR9ZHFmQC2DNDwi2XJtf3QGyYiiagFSWb",
- "name": "Ramses"
+ "name": "Ramsés"
}
```
-Cambie libremente los datos en el json. Puede quitar o añadir la sección de atributos. Más importante, asegúrese de que el campo de la imagen apunte a la localización de su imagen IPFS - de otra manera, su NFT incluirá una foto (¡muy linda!) de un perrito.
+Siéntase libre de cambiar los datos en el JSON. Puede eliminar o agregar a la sección de atributos. Lo más importante, asegúrese de que el campo de la imagen apunte a la ubicación de su imagen de IPFS; de lo contrario, su NFT incluirá una foto de un (¡muy lindo!) perro.
-Una vez que haya terminado de editar el archivo JSON, guárdelo y súbalo a Pinata, siguiendo los mismos pasos que utilizamos para subir la imagen.
+Una vez que haya terminado de editar el archivo JSON, guárdelo y súbalo a Pinata, siguiendo los mismos pasos que para subir la imagen.
-
+
## Paso 5: Crear una instancia de su contrato {#instance-contract}
-Seguidamente, para interactuar con nuestro contrato, necesitamos crear una instancia de él en nuestro código. Para hacerlo, necesitaremos nuestra dirección de contrato, que podemos obtener de la implementación o [Etherscan](https://sepolia.etherscan.io/) buscando la dirección que usó para implementar el contrato.
+Ahora, para interactuar con nuestro contrato, necesitamos crear una instancia del mismo en nuestro código. Para ello, necesitaremos la dirección de nuestro contrato, que podemos obtener de la implementación o de [Blockscout](https://eth-sepolia.blockscout.com/) buscando la dirección que utilizó para implementar el contrato.

-En el ejemplo anterior, nuestra dirección de contrato es 0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778.
+En el ejemplo anterior, la dirección de nuestro contrato es 0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778.
-A continuación, utilizaremos el [método de contrato web3](https://docs.web3js.org/api/web3-eth-contract/class/Contract) para crear nuestro contrato usando la ABI y la dirección. En el archivo `mint-nft.js`, añada lo siguiente:
+A continuación, usaremos el [método de contrato](https://docs.web3js.org/api/web3-eth-contract/class/Contract) de Web3 para crear nuestro contrato utilizando el ABI y la dirección. En su archivo `mint-nft.js`, agregue lo siguiente:
```js
const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"
@@ -127,9 +131,9 @@ const nftContract = new web3.eth.Contract(contract.abi, contractAddress)
## Paso 6: Actualizar el archivo `.env` {#update-env}
-Ahora, para crear y enviar transacciones en la cadena de Ethereum, usaremos la dirección de su cuenta pública de Ethereum para obtener la cuenta nonce (que explicaremos a continuación).
+Ahora, para crear y enviar transacciones a la cadena de Ethereum, usaremos la dirección de su cuenta pública de Ethereum para obtener el nonce de la cuenta (lo explicaremos a continuación).
-Añada su clave pública a su archivo `.env`: si completó la parte 1 del tutorial, nuestro archivo `.env` ahora debería ser algo parecido a esto:
+Agregue su clave pública a su archivo `.env`; si completó la parte 1 del tutorial, nuestro archivo `.env` debería verse así:
```js
API_URL = "https://eth-sepolia.g.alchemy.com/v2/your-api-key"
@@ -139,25 +143,25 @@ PUBLIC_KEY = "your-public-account-address"
## Paso 7: Crear su transacción {#create-txn}
-Primero, vamos a definir una función llamada `mintNFT(tokenData)` y crear nuestra transacción haciendo lo siguiente:
+Primero, definamos una función llamada `mintNFT(tokenData)` y creemos nuestra transacción haciendo lo siguiente:
-1. Tome su _PRIVATE_KEY_ y su _PUBLIC_KEY _ del archivo `.env`.
+1. Obtenga su _PRIVATE_KEY_ y _PUBLIC_KEY_ del archivo `.env`.
-1. Después, necesitaremos averiguar la cuenta nonce. Las especificaciones nonce se usan para rastrear el número de transacciones enviadas desde su dirección - las cuales necesitaremos por cuestiones de seguridad y para prevenir [ataques repetidos](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce). Para obtener el número de transacciones enviadas desde su dirección, usamos [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount).
+2. A continuación, tendremos que averiguar el nonce de la cuenta. La especificación del nonce se utiliza para hacer un seguimiento del número de transacciones enviadas desde su dirección, lo que necesitamos por motivos de seguridad y para evitar [ataques de repetición](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce). Para obtener el número de transacciones enviadas desde su dirección, usamos [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount).
-1. Finalmente estableceremos nuestra transacción con la siguiente información:
+3. Finalmente, configuraremos nuestra transacción con la siguiente información:
-- `'from': PUBLIC_KEY`: El origen de nuestra transacción es nuestra dirección pública
+- `'from': PUBLIC_KEY`: el origen de nuestra transacción es nuestra dirección pública.
-- `'to': contractAddress`: El contrato con el que queremos interactuar y enviar la transacción
+- `'to': contractAddress`: el contrato con el que deseamos interactuar y al que enviaremos la transacción.
-- `'nonce': nonce`: la cuenta nonce con el número de transacciones enviadas desde nuestra dirección
+- `'nonce': nonce`: el nonce de la cuenta con el número de transacciones enviadas desde nuestra dirección.
-- `'gas': estimatedGas`: El gas estimado que necesitamos para completar la transacción
+- `'gas': estimatedGas`: el gas estimado necesario para completar la transacción.
-- `'data': nftContract.methods.mintNFT(PUBLIC_KEY, md).encodeABI()`: El cálculo que deseamos realizar en esta transacción, que en este caso es acuñar un NFT
+- `'data': nftContract.methods.mintNFT(PUBLIC_KEY, md).encodeABI()`: la computación que deseamos realizar en esta transacción, que en este caso es acuñar un NFT.
-Su archivo `mint-nft.js` debería ser algo parecido a esto:
+Su archivo `mint-nft.js` debería verse así ahora:
```js
require('dotenv').config();
@@ -173,9 +177,9 @@ Su archivo `mint-nft.js` debería ser algo parecido a esto:
const nftContract = new web3.eth.Contract(contract.abi, contractAddress);
async function mintNFT(tokenURI) {
- const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, 'latest'); //get latest nonce
+ const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, 'latest'); //obtener el último nonce
- //the transaction
+ //la transacción
const tx = {
'from': PUBLIC_KEY,
'to': contractAddress,
@@ -188,9 +192,9 @@ Su archivo `mint-nft.js` debería ser algo parecido a esto:
## Paso 8: Firmar la transacción {#sign-txn}
-Ahora que ya hemos creado nuestra transacción, necesitamos firmarla para poder enviarla. Aquí es donde usaremos nuestra clave privada.
+Ahora que hemos creado nuestra transacción, debemos firmarla para poder enviarla. Aquí es donde usaremos nuestra clave privada.
-`web3.eth.sendSignedTransaction` nos dará el hash de transacción, el cual usaremos para asegurarnos de que nuestra transacción ha sido minada y no descartada por la red. Notará que en la sección de firma de la transacción, hemos añadido algunas comprobaciones de errores, así sabremos si nuestra transacción se ha enviado correctamente.
+`web3.eth.sendSignedTransaction` nos dará el hash de la transacción, que podemos usar para asegurarnos de que nuestra transacción fue minada y no fue descartada por la red. Notará que en la sección de firma de la transacción, hemos agregado algunas comprobaciones de errores para saber si nuestra transacción se ha realizado con éxito.
```js
require("dotenv").config()
@@ -206,9 +210,9 @@ const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"
const nftContract = new web3.eth.Contract(contract.abi, contractAddress)
async function mintNFT(tokenURI) {
- const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, "latest") //get latest nonce
+ const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, "latest") //obtener el último nonce
- //the transaction
+ //la transacción
const tx = {
from: PUBLIC_KEY,
to: contractAddress,
@@ -225,13 +229,13 @@ async function mintNFT(tokenURI) {
function (err, hash) {
if (!err) {
console.log(
- "The hash of your transaction is: ",
+ "El hash de su transacción es: ",
hash,
- "\nCheck Alchemy's Mempool to view the status of your transaction!"
+ "\n¡Consulte la zona de espera de Alchemy para ver el estado de su transacción!"
)
} else {
console.log(
- "Something went wrong when submitting your transaction:",
+ "Algo salió mal al enviar su transacción:",
err
)
}
@@ -239,24 +243,24 @@ async function mintNFT(tokenURI) {
)
})
.catch((err) => {
- console.log(" Promise failed:", err)
+ console.log(" La promesa falló:", err)
})
}
```
-## Paso 9: Activar el `mintNFT` y ejecutar el nodo `mint-nft.js` {#call-mintnft-fn}
+## Paso 9: Llamar a `mintNFT` y ejecutar `node scripts/mint-nft.js` {#call-mintnft-fn}
-¿Recuerda el `metadata.json` que ha subido a Pinata? Obtenga su hashcode de Pinata y escriba lo siguiente como parámetro de la función `mintNFT` `https://gateway.pinata.cloud/ipfs/`
+¿Recuerda el archivo `metadata.json` que subió a Pinata? Obtenga su código hash de Pinata y pase lo siguiente como parámetro a la función `mintNFT`: `https://gateway.pinata.cloud/ipfs/`
-Así es cómo se puede obtener el código hash:
+A continuación, se indica cómo obtener el código hash:
-_Cómo obtener el código hash de sus metadatos en Pinata_
+_Cómo obtener el código hash de los metadatos de su NFT en Pinata_
-> Asegúrese de que el código hash que copió enlaza con su **metadata.json** cargando `https://gateway.pinata.cloud/ipfs/` en una ventana separada. La página debería tener un aspecto similar a la siguiente captura de pantalla:
+> Compruebe que el código hash que ha copiado enlaza con su **metadata.json** cargando `https://gateway.pinata.cloud/ipfs/` en una ventana aparte. La página debería tener un aspecto similar a la captura de pantalla siguiente:
-_Su página debería mostrar los metadatos json_
+_Su página debería mostrar los metadatos JSON_
-Conjuntamente, su código debería tener un aspecto similar a este:
+En total, su código debería tener un aspecto similar a este:
```js
require("dotenv").config()
@@ -272,9 +276,9 @@ const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"
const nftContract = new web3.eth.Contract(contract.abi, contractAddress)
async function mintNFT(tokenURI) {
- const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, "latest") //get latest nonce
+ const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, "latest") //obtener el último nonce
- //the transaction
+ //la transacción
const tx = {
from: PUBLIC_KEY,
to: contractAddress,
@@ -291,13 +295,13 @@ async function mintNFT(tokenURI) {
function (err, hash) {
if (!err) {
console.log(
- "The hash of your transaction is: ",
+ "El hash de su transacción es: ",
hash,
- "\nCheck Alchemy's Mempool to view the status of your transaction!"
+ "\n¡Consulte la zona de espera de Alchemy para ver el estado de su transacción!"
)
} else {
console.log(
- "Something went wrong when submitting your transaction:",
+ "Algo salió mal al enviar su transacción:",
err
)
}
@@ -305,25 +309,27 @@ async function mintNFT(tokenURI) {
)
})
.catch((err) => {
- console.log("Promise failed:", err)
+ console.log("La promesa falló:", err)
})
}
mintNFT("ipfs://QmYueiuRNmL4MiA2GwtVMm6ZagknXnSpQnB3z2gWbz36hP")
```
-Ahora, ejecute `node scripts/mint-nft.js` para implementar su NFT. Después de un par de segundos, debería aparecer una respuesta como esta en su terminal:
+Ahora, ejecute `node scripts/mint-nft.js` para implementar su NFT. Después de un par de segundos, debería ver una respuesta como esta en su terminal:
- The hash of your transaction is: 0x301791fdf492001fcd9d5e5b12f3aa1bbbea9a88ed24993a8ab2cdae2d06e1e8
+ ```
+ El hash de su transacción es: 0x301791fdf492001fcd9d5e5b12f3aa1bbbea9a88ed24993a8ab2cdae2d06e1e8
- Check Alchemy's Mempool to view the status of your transaction!
+ ¡Consulte la zona de espera de Alchemy para ver el estado de su transacción!
+ ```
-A continuación, visite su [zona de espera de Alchemy](https://dashboard.alchemyapi.io/mempool) para ver el estado de su transacción (ya sea que esté pendiente, haya sido minada o desechada por la red). Si su transacción se cuelga, también es útil comprobar [Sepolia Etherscan](https://sepolia.etherscan.io/) y buscar el hash de su transacción.
+A continuación, visite la [zona de espera de Alchemy](https://dashboard.alchemyapi.io/mempool) para ver el estado de su transacción (si está pendiente, minada o fue descartada por la red). Si su transacción fue descartada, también es útil consultar [Blockscout](https://eth-sepolia.blockscout.com/) y buscar el hash de su transacción.
-_Ver el hash de transacción de su NFT en Etherscan_
+_Ver el hash de la transacción de su NFT en Etherscan_
-¡Y eso es todo! Ahora ha implementado y acuñado un NFT en la cadena de bloques de Ethereum
+¡Y eso es todo! ¡Ya ha implementado Y acuñado un NFT en la blockchain de Ethereum
-Con el `mint-nft.js` puede acuñar todos los NFT que quiera (o que su cartera le permita). Solo asegúrese de pasar un nuevo tokenURI que describa los metadatos del NFT (de lo contrario, terminará haciendo un montón de idénticos con ID diferentes).
+Usando `mint-nft.js`, ¡puede acuñar tantos NFT como su corazón (y su billetera) deseen! Solo asegúrese de pasar un nuevo tokenURI que describa los metadatos del NFT (de lo contrario, terminará creando un montón de NFT idénticos con diferentes ID).
-¡Seguramente le gustaría mostrar su NFT en su cartera, por tanto no se pierda la [parte 3: Cómo ver su NFT en su cartera](/developers/tutorials/how-to-view-nft-in-metamask/)!
+Seguramente, le gustaría poder mostrar su NFT en su billetera, así que asegúrese de consultar la [Parte 3: Cómo ver su NFT en su billetera](/developers/tutorials/how-to-view-nft-in-metamask/)!
From b1920191a0ab5f61346473540603eaa5e5d906d1 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:35 -0300
Subject: [PATCH 181/589] update(i18n):
public/content/translations/es/roadmap/secret-leader-election/index.md
---
.../roadmap/secret-leader-election/index.md | 20 +++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/public/content/translations/es/roadmap/secret-leader-election/index.md b/public/content/translations/es/roadmap/secret-leader-election/index.md
index d92b01c1141..4f90024aedc 100644
--- a/public/content/translations/es/roadmap/secret-leader-election/index.md
+++ b/public/content/translations/es/roadmap/secret-leader-election/index.md
@@ -4,23 +4,23 @@ description: Explicación de cómo la elección secreta de líder puede ayudar a
lang: es
summaryPoints:
- La dirección IP de los proponentes del bloque se puede conocer de antemano, lo que los hace vulnerables a ataques.
- - La elección secreta del líder oculta la identidad de los validadores para que no se puedan conocer de antemano.
+ - "La elección secreta del líder oculta la identidad de los validadores para que no se puedan conocer de antemano. "
- Una extensión de esta idea es hacer que la selección del validador sea aleatoria en cada ranura.
---
-# Elección secreta del líder {#single-secret-leader-election}
+# Elección de líder secreta {#single-secret-leader-election}
-En el mecanismo de consenso basado en las [pruebas de participación](/developers/docs/consensus-mechanisms/pos) de hoy en día, la lista de los próximos proponentes de bloque es pública y es posible ubicar sus direcciones IP. Esto significa que los atacantes podrían identificar qué validadores deben proponer un bloque y perjudicarles con un ataque de negación de servicio (DOS) que les imposibilite proponer su bloque a tiempo.
+En el actual mecanismo de consenso basado en la [prueba de participación](/developers/docs/consensus-mechanisms/pos), la lista de los próximos proponentes de bloque es pública y es posible mapear sus direcciones IP. Esto significa que los atacantes podrían identificar qué validadores deben proponer un bloque y perjudicarles con un ataque de negación de servicio (DOS) que les imposibilite proponer su bloque a tiempo.
-Esto podría crear oportunidades para que un atacante se beneficie. Por ejemplo, un proponente de bloque seleccionado para una ranura `n+1` podría negar servicio (DOS) al proponente en la ranura `n` para que pierda la oportunidad de proponer un bloque. Esto permitiría al proponente de bloque atacante extraer el MEV de ambas ranuras; o reunir todas las transacciones que se deberían dividido en dos bloques y en lugar de eso incluirlas todas en una, ahorrándose las tarifas asociadas. Es probable que esto afecte más a los validadores domésticos que a los validadores institucionales sofisticados que pueden usar métodos más avanzados para protegerse de ataques DOS y podría entonces ser una fuerza centralizadora.
+Esto podría crear oportunidades para que un atacante se beneficie. Por ejemplo, un proponente de bloque seleccionado para la ranura `n+1` podría realizar un ataque de denegación de servicio (DoS) al proponente de la ranura `n` para que este pierda la oportunidad de proponer un bloque. Esto permitiría al proponente de bloque atacante extraer el MEV de ambas ranuras; o reunir todas las transacciones que se deberían dividido en dos bloques y en lugar de eso incluirlas todas en una, ahorrándose las tarifas asociadas. Es probable que esto afecte más a los validadores domésticos que a los validadores institucionales sofisticados que pueden usar métodos más avanzados para protegerse de ataques DOS y podría entonces ser una fuerza centralizadora.
-Hay varias soluciones para este problema. Una de ellas es la [tecnología de validador distribuida](https://github.com/ethereum/distributed-validator-specs) que tiene como objetivo difundir las múltiples tareas relacionadas con la ejecución de un validador entre varias máquinas, con redundancia, para que sea mucho más difícil que un atacante impida que se proponga un bloque en un espacio determinado. De cualquier forma, la solución más robusta es la **Elección de Líder Singular Secreto (o SSLE, por sus siglas en inglés)**.
+Hay varias soluciones para este problema. Una es la [tecnología de validador distribuido](https://github.com/ethereum/distributed-validator-specs), que tiene como objetivo repartir las diversas tareas relacionadas con la ejecución de un validador en varias máquinas, con redundancia, para que a un atacante le resulte mucho más difícil impedir que se proponga un bloque en una ranura concreta. Sin embargo, la solución más robusta es la **elección de líder única y secreta (SSLE)**.
-## Single secret leader election {#secret-leader-election}
+## Elección de líder única y secreta {#secret-leader-election}
En SSLE, la criptografía inteligente se usa para asegurar que solo el validador seleccionado sepa que ha sido seleccionado. Esto funciona al hacer que cada validador envíe un compromiso a un secreto que todos comparten. Los compromisos se mezclan y reconfiguran para que nadie pueda asociar los compromisos a los validadores, aunque cada validador sabe qué compromiso le pertenece. Después, se elige un compromiso aleatoriamente. Si un validador detecta que se ha elegido su compromiso, saben que es su turno de proponer un bloque.
-La implementación principal de esta idea se conoce como [La Batidora](https://ethresear.ch/t/whisk-a-practical-shuffle-based-ssle-protocol-for-ethereum/11763). Que trabaja de la siguiente forma:
+La principal implementación de esta idea se llama [Whisk](https://ethresear.ch/t/whisk-a-practical-shuffle-based-ssle-protocol-for-ethereum/11763). Que trabaja de la siguiente forma:
1. Los validadores se comprometen a un secreto compartido. El esquema de compromiso está diseñado para que pueda enlazarse a la identidad de un validador, aunque también es aleatorio para que ningún tercero pueda hacer una ingeniería inversa de los enlaces y asociar un compromiso específico con un validador específico.
2. Al principio de una época, se elige un conjunto aleatorio de validadores para enviar muestras de compromisos de 16.384 validadores, usando RANDAO.
@@ -31,14 +31,14 @@ La implementación principal de esta idea se conoce como [La Batidora](https://e
Esto le impide a los atacantes saber de antemano qué validador específico propondrá el siguiente bloque, lo que inhabilita los ataques DOS.
-## Elección de Líder no Singular Secreto (SnSLE) {#secret-non-single-leader-election}
+## Elección de líder secreta no única (SnSLE) {#secret-non-single-leader-election}
-También existe una propuesta separada que tiene como objetivo crear un escenario donde cada validador tiene una oportunidad aleatoria de proponer un bloque en cada ranura, de manera parecida a cómo se decidió la propuesta de bloque en la prueba de trabajo, conocida como **Elección de Líder no Singular Secreto (SnSLE)**. Una forma sencilla de hacer esto es usando la función RANDAO para seleccionar validadores de manera aleatoria en el protocolo del día. La idea con RANDAO es que se genere un número suficientemente aleatorio al mezclar pedazos enviados por múltiples validadores independientes. En SnSLE, estos pedazos pueden usarse para elegir el siguiente proponente de bloque, por ejemplo al elegir el pedazo de menor valor. El margen de pedazos válidos puede limitarse para ajustar la probabilidad de selección de validadores independientes en cada ranura. Al confirmar que el pedazo debe ser inferior a `2^256 * 5 / N` donde `N` = número de validadores activos, la posibilidad de que se seleccione a cualquier validador en cada ranura, sería de `5/N`. En este ejemplo, habría solo un 99,3 % de probabilidad de que al menos un proponente generara un pedazo válido en cada ranura.
+También existe una propuesta independiente que pretende crear un escenario en el que cada validador tenga una probabilidad aleatoria de proponer un bloque en cada ranura, de forma similar a como se decidía la propuesta de bloque en la prueba de trabajo, lo que se conoce como **elección de líder secreta no única (SnSLE)**. Una forma sencilla de hacer esto es usando la función RANDAO para seleccionar validadores de manera aleatoria en el protocolo del día. La idea con RANDAO es que se genere un número suficientemente aleatorio al mezclar pedazos enviados por múltiples validadores independientes. En SnSLE, estos pedazos pueden usarse para elegir el siguiente proponente de bloque, por ejemplo al elegir el pedazo de menor valor. El margen de pedazos válidos puede limitarse para ajustar la probabilidad de selección de validadores independientes en cada ranura. Al afirmar que el hash debe ser inferior a `2^256 * 5 / N`, donde `N` = número de validadores activos, la probabilidad de que se seleccione un validador individual en cada ranura sería de `5/N`. En este ejemplo, habría solo un 99,3 % de probabilidad de que al menos un proponente generara un pedazo válido en cada ranura.
## Progreso actual {#current-progress}
Tanto SSLE como SnSLE están en fase de investigación. Todavía no hay especificación lista para ninguna de las dos. SSLE y SnSLE son propuestas que compiten entre sí, ya que no pueden implementarse juntas. Necesitan una investigación y un desarrollo más en profundidad antes de lanzarse, así como la creación de prototipos e implementación en las redes de prueba pública.
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
- [SnSLE](https://ethresear.ch/t/secret-non-single-leader-election/11789)
From 8958ec417d8b9ce467fd60222da6f3fc1fea924b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:36 -0300
Subject: [PATCH 182/589] update(i18n):
public/content/translations/es/contributing/content-resources/index.md
---
.../translations/es/contributing/content-resources/index.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/public/content/translations/es/contributing/content-resources/index.md b/public/content/translations/es/contributing/content-resources/index.md
index e680cd10251..91822552c88 100644
--- a/public/content/translations/es/contributing/content-resources/index.md
+++ b/public/content/translations/es/contributing/content-resources/index.md
@@ -4,7 +4,7 @@ lang: es
description: Nuestros criterios para enumerar los recursos de contenido en ethereum.org
---
-# Agregando recursos de contenido {#adding-content-resources}
+# Añadir recursos de contenido {#adding-content-resources}
No pretendemos cubrir todo que Ethereum abarca, pero sí que intentamos incluir algunos de los artículos más destacados, tutoriales, boletines, bolsas de empleo y varios recursos de contenido que la comunidad crea. Estos suelen proporcionar información más detallada sobre temas que pueden ser de interés para los usuarios.
@@ -19,11 +19,11 @@ Los recursos de aprendizaje se evaluarán a tenor de los siguientes criterios:
- ¿La información es correcta? ¿Se basa en hechos o en opiniones?
- ¿El autor es fidedigno? ¿Hace referencia a sus fuentes?
- ¿Añade este contenido un valor distinto que los recursos/enlaces existentes no cubren en su totalidad?
-- ¿Sirve este contenido a uno de nuestros [prototipos de usuario](https://www.notion.so/efdn/Ethereum-org-User-Persona-Memo-b44dc1e89152457a87ba872b0dfa366c)?
+- ¿Este contenido sirve a uno de nuestros [perfiles de usuario](https://www.notion.so/efdn/Ethereum-org-User-Persona-Memo-b44dc1e89152457a87ba872b0dfa366c)?
---
-## Añada su recurso de contenido {#add-your-content-resource}
+## Añadir su recurso de contenido {#add-your-content-resource}
Si desea añadir un recurso de contenido a ethereum.org y cumple con los criterios, cree una incidencia en GitHub.
From c7171588c10b222835f4b5166a693cb37c54256b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:38 -0300
Subject: [PATCH 183/589] update(i18n):
public/content/translations/es/developers/docs/intro-to-ether/index.md
---
.../developers/docs/intro-to-ether/index.md | 44 +++++++++----------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/public/content/translations/es/developers/docs/intro-to-ether/index.md b/public/content/translations/es/developers/docs/intro-to-ether/index.md
index 0ec4ad9cab1..d1642128da6 100644
--- a/public/content/translations/es/developers/docs/intro-to-ether/index.md
+++ b/public/content/translations/es/developers/docs/intro-to-ether/index.md
@@ -1,12 +1,12 @@
---
-title: Introducción a ether
+title: Introducción técnica al ether
description: Una introducción para desarrolladores a la criptomoneda ethereum
lang: es
---
## Requisitos previos {#prerequisites}
-Para que entienda mejor esta página, le recomendamos que lea primero la [introducción a Ethereum](/developers/docs/intro-to-ethereum/).
+Para ayudarle a comprender mejor esta página, le recomendamos que primero lea [Introducción a Ethereum](/developers/docs/intro-to-ethereum/).
## ¿Qué es una criptomoneda? {#what-is-a-cryptocurrency}
@@ -18,35 +18,35 @@ La primera criptomoneda fue Bitcoin, creada por Satoshi Nakamoto. Desde el lanza
## ¿Qué es el ether? {#what-is-ether}
-**Ether (ETH)** es la criptomoneda que se utiliza para llevar a cabo multitud de acciones en la red Ethereum. Fundamentalmente, es la única forma de pago aceptable para las comisiones de transacción y, después de [La Fusión](/roadmap/merge), se requiere ether para validar y proponer bloques en la red principal. Ether también se utiliza como forma principal de garantía en los mercados de préstamos de la [DeFi](/defi), como una unidad de cuenta en los mercados de NFT, como pago recibido por la prestación de servicios o la venta de bienes en el mundo real, y para muchas otras cosas.
+**Ether (ETH)** es la criptomoneda que se utiliza para muchas cosas en la red Ethereum. Fundamentalmente, es la única forma de pago aceptable para las comisiones de transacción y, después de [La Fusión](/roadmap/merge), se requiere ether para validar y proponer bloques en la red principal. El ether también se utiliza como forma principal de colateral en los mercados de préstamos de [DeFi](/defi), como unidad de cuenta en los mercados de NFT, como pago por la prestación de servicios o la venta de bienes del mundo real, y mucho más.
-Ethereum le permite a los desarrolladores crear [**Aplicaciones Descentralizadas (DApps)**](/developers/docs/dapps), las cuales comparten un conjunto de energía de computación. Este grupo compatido es finito, por lo que Ethereum necesita un mecanismo para determinar quién lo puede utilizar. De lo contrario, una DApp podría consumir todos los recursos de la red de manera accidental o maliciosa, con lo que se bloquearía el acceso a los demás.
+Ethereum permite a los desarrolladores crear [**aplicaciones descentralizadas (dapps)**](/developers/docs/dapps), las cuales comparten un fondo común de potencia de cómputo. Este grupo compatido es finito, por lo que Ethereum necesita un mecanismo para determinar quién lo puede utilizar. De lo contrario, una DApp podría consumir todos los recursos de la red de manera accidental o maliciosa, con lo que se bloquearía el acceso a los demás.
-La criptomoneda Ether incluye un mecanismo de fijación de precios para determinar el poder de computación de Ethereum. Cuando los usuarios quieren realizar una transacción, deben pagar Ether para que su transacción sea reconocida en la cadena de bloques. Estos costes de uso se conocen como [tarifas de gas](/developers/docs/gas/); la tarifa de gas depende de la cantidad de potencia de computación requerida para ejecutar la transacción y la demanda de energía de la red en el momento de la transacción.
+La criptomoneda Ether incluye un mecanismo de fijación de precios para determinar el poder de computación de Ethereum. Cuando los usuarios quieren realizar una transacción, deben pagar Ether para que su transacción sea reconocida en la cadena de bloques. Estos costes de uso se conocen como [tarifas de gas](/developers/docs/gas/), y la tarifa de gas depende de la cantidad de potencia de cómputo necesaria para ejecutar la transacción y de la demanda de potencia de cómputo en toda la red en ese momento.
Por lo tanto, incluso si una DApp maliciosa ejecuta un bucle infinito, se llegaría a un punto en el que la transacción carecería de Ether y terminaría, lo que permitiría que la red vuelva a la normalidad.
-[Es](https://www.reuters.com/article/us-crypto-currencies-lending-insight-idUSKBN25M0GP#:~:text=price%20of%20ethereum) [común](https://abcnews.go.com/Business/bitcoin-slumps-week-low-amid-renewed-worries-chinese/story?id=78399845#:~:text=cryptocurrencies%20including%20ethereum) [confundir](https://www.cnn.com/2021/03/14/tech/nft-art-buying/index.html#:~:text=price%20of%20ethereum) Ethereum y ether. Cuando las personas dicen «el precio de Ethereum» se están refiriendo al precio de ether.
+Es [común confundir](https://abcnews.go.com/Business/bitcoin-slumps-week-low-amid-renewed-worries-chinese/story?id=78399845) Ethereum y ether; cuando la gente se refiere al "precio de Ethereum", está describiendo el precio del ether.
-## Mintear ether {#minting-ether}
+## Acuñación de ether {#minting-ether}
El proceso de minteado se produce cuando se crea nuevo ether en el libro mayor de Ethereum. El protocolo base de Ethereum se encarga de crear nuevo ether. Un usuario no puede crear ether.
Ether se acuña como recompensa por cada bloque propuesto y en cada punto de control de época por otra actividad de validador relacionada con alcanzar el consenso. La cantidad total emitida depende del número de validadores y de cuántos eth han apostado. Esta emisión total se divide por igual entre validadores en el caso hipotético de que todos los validadores sean honestos y estén en línea, pero en realidad, varía en función del rendimiento del validador. Aproximadamente 1/8 de la emisión total va a parar al proponedor de bloques; el resto se distribuye a través de los demás validadores. Los que proponen bloques también reciben consejos de las comisiones de transacción e ingresos relacionados con MEV, aunque estos provienen de los ethers reciclados, no de los de nueva emisión.
-## Quemar ether {#burning-ether}
+## Quema de ether {#burning-ether}
Además de crear ether a través de las recompensas por bloque, el ether puede destruirse mediante un proceso llamado «quema». Cuando se quema el ether, este se elimina de la circulación de forma permanente.
-La quema de ether se produce en cada transacción en Ethereum. Cuando los usuarios pagan por sus transacciones, se destruye una comisión de gas base, establecida por la red, de acuerdo con la demanda transaccional. Esto, junto con tamaños de bloque variables y una tarifa de gas máxima, simplifica la estimación de la comisión de transacción en Ethereum. Cuando la demanda de red es alta, los [bloques](https://etherscan.io/block/12965263) pueden quemar más ether de los que acuñan, compensando efectivamente la emisión de ether.
+La quema de ether se produce en cada transacción en Ethereum. Cuando los usuarios pagan por sus transacciones, se destruye una comisión de gas base, establecida por la red, de acuerdo con la demanda transaccional. Esto, junto con tamaños de bloque variables y una tarifa de gas máxima, simplifica la estimación de la comisión de transacción en Ethereum. Cuando la demanda de la red es alta, los [bloques](https://eth.blockscout.com/block/22580057) pueden quemar más ether del que acuñan, lo que compensa eficazmente la emisión de ether.
-Quitar la comnisión base impide que los productores de bloques puedan manipular las transacciones. Por ejemplo, si los mineros obtuvieran la tarifa base, podrían incluir sus propias transacciones de forma gratuita y aumentar la tarifa base para todos los demás. Como alternativa, podrían reembolsar la tarifa de base a algunos usuarios fuera de cadena, lo que provocaría un mercado de comisiones de transacción más opaco y complejo.
+Quitar la comnisión base impide que los productores de bloques puedan manipular las transacciones. Por ejemplo, si los mineros obtuvieran la tarifa base, podrían incluir sus propias transacciones de forma gratuita y aumentar la tarifa base para todos los demás. Por otra parte, podrían reembolsar la tarifa base a algunos usuarios fuera de la cadena, lo que conduciría a un mercado de tarifas de transacción más opaco y complejo.
## Denominaciones de ether {#denominations}
Dado que muchas de las transacciones en Ethereum tienen un valor pequeño, el ether tiene varias denominaciones que pueden ser referenciadas como unidades de cuenta más pequeñas. De todas estas denominaciones, Wei y gwei son particularmente importantes.
-Wei es el valor de ether más pequeño posible y, como consecuencia, muchas implementaciones técnicas, como el [protocolo de Ethereum](https://ethereum.github.io/yellowpaper/paper.pdf) basan todos sus cálculos en Wei.
+El wei es la cantidad de ether más pequeña posible y, como resultado, muchas implementaciones técnicas, como el [Ethereum Yellowpaper](https://ethereum.github.io/yellowpaper/paper.pdf), basan todos los cálculos en wei.
El Gwei, abreviación de giga-wei, se utiliza para describir los costes del gas en Ethereum.
@@ -55,24 +55,24 @@ El Gwei, abreviación de giga-wei, se utiliza para describir los costes del gas
| Wei | 10-18 | Implementaciones técnicas |
| Gwei | 10-9 | Comisiones de gas legibles por los humanos |
-## Transferir ether {#transferring-ether}
+## Transferencia de ether {#transferring-ether}
-Cada transacción en Ethereum contiene un campo llamado `valor`, que especifica la cantidad de ether que se transfiere —expresada en wei— para enviar desde la dirección del emisor a la dirección del destinatario.
+Cada transacción en Ethereum contiene un campo `value` que especifica la cantidad de ether a transferir, denominada en wei, para enviar desde la dirección del emisor a la del destinatario.
-Cuando la dirección del destinatario es un [contrato inteligente](/developers/docs/smart-contracts/), puede que el ether transferido se utilice para pagar el gas cuando el contrato inteligente ejecuta su código.
+Cuando la dirección del destinatario es un [contrato inteligente](/developers/docs/smart-contracts/), este ether transferido puede utilizarse para pagar el gas cuando el contrato inteligente ejecuta su código.
[Más información sobre las transacciones](/developers/docs/transactions/)
-## Consultar la cantidad de ether {#querying-ether}
+## Consulta de ether {#querying-ether}
-Los usuarios pueden consultar el saldo en ether de cualquier [cuenta](/developers/docs/accounts/) al inspeccionar el campo `saldo` de la cuenta, el cual muestra la reserva de ether expresada en wei.
+Los usuarios pueden consultar el saldo de ether de cualquier [cuenta](/developers/docs/accounts/) inspeccionando el campo `balance` de la cuenta, que muestra las tenencias de ether denominadas en wei.
-[Etherscan](https://etherscan.io) es una herramienta muy conocida que permite inspeccionar el saldo de las direcciones a través de una aplicación web. Por ejemplo, en [esta página de Etherscan](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae) se muestra el saldo de la Ethereum Foundation. Los saldos de la cuenta también se pueden consultar usando carteras o directamente haciendo peticiones a nodos.
+[Etherscan](https://etherscan.io) y [Blockscout](https://eth.blockscout.com) son herramientas populares para inspeccionar los saldos de las direcciones a través de aplicaciones web. Por ejemplo, [esta página de Blockscout](https://eth.blockscout.com/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe) muestra el saldo de la Ethereum Foundation. Los saldos de la cuenta también se pueden consultar usando carteras o directamente haciendo peticiones a nodos.
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Definición de Ether y Ethereum](https://www.cmegroup.com/education/courses/introduction-to-ether/defining-ether-and-ethereum.html) — _Grupo CME_
-- [Informe de Ethereum](/whitepaper/): la propuesta original de Ethereum. En este documento se incluyen una descripción de ether y los motivos por los que se creó.
-- [Calculadora de gwei](https://www.alchemy.com/gwei-calculator): utilice esta calculadora gwei para convertir fácilmente wei, gwei y ether. Simplemente añada cualquier cantidad de wei, gwei o ETH y calcule automáticamente la conversión.
+- [Definición de ether y Ethereum](https://www.cmegroup.com/education/courses/introduction-to-ether/defining-ether-and-ethereum.html) – _CME Group_
+- [Libro blanco de Ethereum](/whitepaper/): la propuesta original para Ethereum. En este documento se incluyen una descripción de ether y los motivos por los que se creó.
+- [Calculadora de gwei](https://www.alchemy.com/gwei-calculator): utilice esta calculadora de gwei para convertir fácilmente wei, gwei y ether. Simplemente añada cualquier cantidad de wei, gwei o ETH y calcule automáticamente la conversión.
-_¿Conoce algún recurso en la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
From 4f2a94c1233ed5d76e730c477cc2dda770734205 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:50:40 -0300
Subject: [PATCH 184/589] update(i18n):
public/content/translations/es/developers/tutorials/stealth-addr/index.md
---
.../tutorials/stealth-addr/index.md | 443 ++++++++++++++++++
1 file changed, 443 insertions(+)
create mode 100644 public/content/translations/es/developers/tutorials/stealth-addr/index.md
diff --git a/public/content/translations/es/developers/tutorials/stealth-addr/index.md b/public/content/translations/es/developers/tutorials/stealth-addr/index.md
new file mode 100644
index 00000000000..e4a04d860b9
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/stealth-addr/index.md
@@ -0,0 +1,443 @@
+---
+title: "Uso de direcciones sigilosas"
+description: "Las direcciones sigilosas permiten a los usuarios transferir activos de forma anónima. Después de leer este artículo, podrá: Explicar qué son las direcciones sigilosas y cómo funcionan, comprender cómo utilizarlas de manera que se preserve el anonimato y escribir una aplicación web que las utilice."
+author: Ori Pomerantz
+tags:
+ [
+ "Dirección sigilosa",
+ "privacidad",
+ "criptografía",
+ "rust",
+ "wasm"
+ ]
+skill: intermediate
+published: 2025-11-30
+lang: es
+sidebarDepth: 3
+---
+
+Usted es Bill. Por razones que no detallaremos, usted quiere donar a la campaña «Alice para Reina del Mundo» y que Alice sepa que donó para que lo recompense si gana. Lamentablemente, su victoria no está garantizada. Existe una campaña rival, «Carol para Emperatriz del Sistema Solar». Si Carol gana y descubre que usted donó a Alice, estará en problemas. Así que no puede simplemente transferir 200 ETH de su cuenta a la de Alice.
+
+[ERC-5564](https://eips.ethereum.org/EIPS/eip-5564) tiene la solución. Este ERC explica cómo usar [direcciones sigilosas](https://nerolation.github.io/stealth-utils) para transferencias anónimas.
+
+**Advertencia**: La criptografía detrás de las direcciones sigilosas es, hasta donde sabemos, sólida. Sin embargo, existen posibles ataques de canal lateral. [A continuación](#go-wrong), verá lo que puede hacer para reducir este riesgo.
+
+## Cómo funcionan las direcciones sigilosas {#how}
+
+Este artículo intentará explicar las direcciones sigilosas de dos maneras. La primera es [cómo usarlas](#how-use). Esta parte es suficiente para comprender el resto del artículo. Luego, hay [una explicación de las matemáticas detrás de esto](#how-math). Si le interesa la criptografía, lea también esta parte.
+
+### La versión simple (cómo usar direcciones sigilosas) {#how-use}
+
+Alice crea dos claves privadas y publica las claves públicas correspondientes (que se pueden combinar en una única metadirección de doble longitud). Bill también crea una clave privada y publica la clave pública correspondiente.
+
+Usando la clave pública de una de las partes y la clave privada de la otra, se puede derivar un secreto compartido conocido solo por Alice y Bill (no se puede derivar solo de las claves públicas). Usando este secreto compartido, Bill obtiene la dirección sigilosa y puede enviar activos a ella.
+
+Alice también obtiene la dirección a partir del secreto compartido, pero como conoce las claves privadas de las claves públicas que publicó, también puede obtener la clave privada que le permite retirar de esa dirección.
+
+### Las matemáticas (por qué las direcciones sigilosas funcionan así) {#how-math}
+
+Las direcciones sigilosas estándar utilizan la [criptografía de curva elíptica (ECC)](https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/#elliptic-curves-building-blocks-of-a-better-trapdoor) para obtener un mejor rendimiento con menos bits de clave, mientras mantienen el mismo nivel de seguridad. Pero en su mayor parte podemos ignorar eso y fingir que estamos usando aritmética regular.
+
+Hay un número que todo el mundo conoce, _G_. Se puede multiplicar por _G_. Pero debido a la naturaleza de la ECC, es prácticamente imposible dividir por _G_. La forma en que la criptografía de clave pública funciona generalmente en Ethereum es que puede usar una clave privada, _Ppriv_, para firmar transacciones que luego son verificadas por una clave pública, _Ppub = GPpriv_.
+
+Alice crea dos claves privadas, _Kpriv_ y _Vpriv_. _Kpriv_ se utilizará para gastar dinero de la dirección sigilosa y _Vpriv_ para ver las direcciones que pertenecen a Alice. Alice luego publica las claves públicas: _Kpub = GKpriv_ y _Vpub = GVpriv_
+
+Bill crea una tercera clave privada, _Rpriv_, y publica _Rpub = GRpriv_ en un registro central (Bill también podría habérsela enviado a Alice, pero asumimos que Carol está escuchando).
+
+Bill calcula _RprivVpub = GRprivVpriv_, que espera que Alice también conozca (se explica a continuación). Este valor se llama _S_, el secreto compartido. Esto le da a Bill una clave pública, _Ppub = Kpub+G\*hash(S)_. A partir de esta clave pública, puede calcular una dirección y enviar los recursos que desee a ella. En el futuro, si Alice gana, Bill puede decirle _Rpriv_ para demostrar que los recursos provinieron de él.
+
+Alice calcula _RpubVpriv = GRprivVpriv_. Esto le da el mismo secreto compartido, _S_. Como conoce la clave privada, _Kpriv_, puede calcular _Ppriv = Kpriv+hash(S)_. Esta clave le permite acceder a los activos en la dirección que resulta de _Ppub = GPpriv = GKpriv+G\*hash(S) = Kpub+G\*hash(S)_.
+
+Tenemos una clave de visualización separada para permitir que Alice subcontrate a Dave's World Domination Campaign Services. Alice está dispuesta a que Dave conozca las direcciones públicas y le informe cuando haya más dinero disponible, pero no quiere que él gaste el dinero de su campaña.
+
+Debido a que la visualización y el gasto usan claves separadas, Alice puede darle a Dave _Vpriv_. Entonces Dave puede calcular _S = RpubVpriv = GRprivVpriv_ y de esa manera obtener las claves públicas (_Ppub = Kpub+G\*hash(S)_). Pero sin _Kpriv_ Dave no puede obtener la clave privada.
+
+En resumen, estos son los valores conocidos por los diferentes participantes.
+
+| Alice | Publicado | Bill | Dave | |
+| ------------------------------------------------------------------------- | ----------------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------- |
+| G | G | G | G | |
+| _Kpriv_ | - | - | - | |
+| _Vpriv_ | - | - | _Vpriv_ | |
+| _Kpub = GKpriv_ | _Kpub_ | _Kpub_ | _Kpub_ | |
+| _Vpub = GVpriv_ | _Vpub_ | _Vpub_ | _Vpub_ | |
+| - | - | _Rpriv_ | - | |
+| _Rpub_ | _Rpub_ | _Rpub = GRpriv_ | _Rpub_ | |
+| _S = RpubVpriv = GRprivVpriv_ | - | _S = RprivVpub = GRprivVpriv_ | _S = _RpubVpriv_ = GRprivVpriv_ | |
+| _Ppub = Kpub+G\*hash(S)_ | - | _Ppub = Kpub+G\*hash(S)_ | _Ppub = Kpub+G\*hash(S)_ | |
+| _Dirección=f(Ppub)_ | - | _Dirección=f(Ppub)_ | _Dirección=f(Ppub)_ | _Dirección=f(Ppub)_ |
+| _Ppriv = Kpriv+hash(S)_ | - | - | - | |
+
+## Cuando las direcciones sigilosas fallan {#go-wrong}
+
+_No hay secretos en la cadena de bloques_. Aunque las direcciones sigilosas pueden proporcionarle privacidad, esa privacidad es susceptible al análisis de tráfico. Para poner un ejemplo trivial, imagine que Bill financia una dirección e inmediatamente envía una transacción para publicar un valor _Rpub_. Sin la clave _Vpriv_ de Alice, no podemos estar seguros de que se trate de una dirección sigilosa, pero es la apuesta más segura. Luego, vemos otra transacción que transfiere todos los ETH de esa dirección a la dirección del fondo de campaña de Alice. Puede que no podamos probarlo, pero es probable que Bill acabe de donar a la campaña de Alice. Carol sin duda lo pensaría.
+
+Para Bill es fácil separar la publicación de _Rpub_ de la financiación de la dirección sigilosa (hacerlo en momentos diferentes, desde direcciones diferentes). Sin embargo, eso es insuficiente. El patrón que Carol busca es que Bill financie una dirección y luego el fondo de campaña de Alice retire de ella.
+
+Una solución es que la campaña de Alice no retire el dinero directamente, sino que lo utilice para pagar a un tercero. Si la campaña de Alice envía 10 ETH a Dave's World Domination Campaign Services, Carol solo sabe que Bill donó a uno de los clientes de Dave. Si Dave tiene suficientes clientes, Carol no podría saber si Bill donó a Alice, que compite con ella, o a Adam, Albert o Abigail, que a Carol no le importan. Alice puede incluir un valor hasheado con el pago y luego proporcionar a Dave la preimagen para demostrar que fue su donación. Alternativamente, como se señaló anteriormente, si Alice le da a Dave su _Vpriv_, él ya sabe de quién provino el pago.
+
+El principal problema con esta solución es que requiere que a Alice le importe el secreto cuando ese secreto beneficia a Bill. Alice puede querer mantener su reputación para que el amigo de Bill, Bob, también le done. Pero también es posible que no le importe exponer a Bill, porque entonces él tendrá miedo de lo que sucederá si Carol gana. Bill podría terminar brindando aún más apoyo a Alice.
+
+### Uso de múltiples capas sigilosas {#multi-layer}
+
+En lugar de depender de Alice para preservar la privacidad de Bill, Bill puede hacerlo él mismo. Puede generar múltiples metadirecciones para personas ficticias, Bob y Bella. Luego, Bill envía ETH a Bob, y «Bob» (que en realidad es Bill) se lo envía a Bella. «Bella» (también Bill) se lo envía a Alice.
+
+Carol aún puede hacer análisis de tráfico y ver la tubería de Bill a Bob, de Bob a Bella y de Bella a Alice. Sin embargo, si «Bob» y «Bella» también usan ETH para otros fines, no parecerá que Bill transfirió nada a Alice, incluso si Alice retira inmediatamente de la dirección sigilosa a su dirección de campaña conocida.
+
+## Escribir una aplicación de dirección sigilosa {#write-app}
+
+Este artículo explica una aplicación de dirección sigilosa [disponible en GitHub](https://github.com/qbzzt/251022-stealth-addresses.git).
+
+### Herramientas {#tools}
+
+Hay [una librería de typescript para direcciones sigilosas](https://github.com/ScopeLift/stealth-address-sdk) que podríamos usar. Sin embargo, las operaciones criptográficas pueden ser intensivas en CPU. Prefiero implementarlas en un lenguaje compilado, como [Rust](https://rust-lang.org/), y usar [WASM](https://webassembly.org/) para ejecutar el código en el navegador.
+
+Vamos a usar [Vite](https://vite.dev/) y [React](https://react.dev/). Estas son herramientas estándar de la industria; si no está familiarizado con ellas, puede usar [este tutorial](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/). Para usar Vite, necesitamos Node.
+
+### Ver direcciones sigilosas en acción {#in-action}
+
+1. Instale las herramientas necesarias: [Rust](https://rust-lang.org/tools/install/) y [Node](https://nodejs.org/en/download).
+
+2. Clone el repositorio de GitHub.
+
+ ```sh
+ git clone https://github.com/qbzzt/251022-stealth-addresses.git
+ cd 251022-stealth-addresses
+ ```
+
+3. Instale los requisitos previos y compile el código de Rust.
+
+ ```sh
+ cd src/rust-wasm
+ rustup target add wasm32-unknown-unknown
+ cargo install wasm-pack
+ wasm-pack build --target web
+ ```
+
+4. Inicie el servidor web.
+
+ ```sh
+ cd ../..
+ npm install
+ npm run dev
+ ```
+
+5. Navegue hasta [la aplicación](http://localhost:5173/). Esta página de la aplicación tiene dos marcos: uno para la interfaz de usuario de Alice y el otro para la de Bill. Los dos marcos no se comunican; solo están en la misma página por conveniencia.
+
+6. Como Alice, haga clic en **Generar una metadirección sigilosa**. Esto mostrará la nueva dirección sigilosa y las claves privadas correspondientes. Copie la metadirección sigilosa al portapapeles.
+
+7. Como Bill, pegue la nueva metadirección sigilosa y haga clic en **Generar una dirección**. Esto le da la dirección para financiar a Alice.
+
+8. Copie la dirección y la clave pública de Bill y péguelas en el área «Clave privada para la dirección generada por Bill» de la interfaz de usuario de Alice. Una vez que esos campos estén llenos, verá la clave privada para acceder a los activos en esa dirección.
+
+9. Puede usar [una calculadora en línea](https://iancoleman.net/ethereum-private-key-to-address/) para asegurarse de que la clave privada corresponde a la dirección.
+
+### Cómo funciona el programa {#how-the-program-works}
+
+#### El componente WASM {#wasm}
+
+El código fuente que se compila en WASM está escrito en [Rust](https://rust-lang.org/). Puede verlo en [`src/rust_wasm/src/lib.rs`](https://github.com/qbzzt/251022-stealth-addresses/blob/main/src/rust-wasm/src/lib.rs). Este código es principalmente una interfaz entre el código de JavaScript y [la librería `eth-stealth-addresses`](https://github.com/kassandraoftroy/eth-stealth-addresses).
+
+**`Cargo.toml`**
+
+[`Cargo.toml`](https://doc.rust-lang.org/cargo/reference/manifest.html) en Rust es análogo a [`package.json`](https://docs.npmjs.com/cli/v9/configuring-npm/package-json) en JavaScript. Contiene información del paquete, declaraciones de dependencia, etc.
+
+```toml
+[package]
+name = "rust-wasm"
+version = "0.1.0"
+edition = "2024"
+
+[dependencies]
+eth-stealth-addresses = "0.1.0"
+hex = "0.4.3"
+wasm-bindgen = "0.2.104"
+getrandom = { version = "0.2", features = ["js"] }
+```
+
+El paquete [`getrandom`](https://docs.rs/getrandom/latest/getrandom/) necesita generar valores aleatorios. Eso no se puede hacer por medios puramente algorítmicos; requiere acceso a un proceso físico como fuente de entropía. Esta definición especifica que obtendremos esa entropía preguntándole al navegador en el que estamos ejecutando.
+
+```toml
+console_error_panic_hook = "0.1.7"
+```
+
+[Esta librería](https://docs.rs/console_error_panic_hook/latest/console_error_panic_hook/) nos da mensajes de error más significativos cuando el código WASM entra en pánico y no puede continuar.
+
+```toml
+[lib]
+crate-type = ["cdylib", "rlib"]
+```
+
+El tipo de salida requerido para producir código WASM.
+
+**`lib.rs`**
+
+Este es el código real de Rust.
+
+```rust
+use wasm_bindgen::prelude::*;
+```
+
+Las definiciones para crear un paquete WASM a partir de Rust. Están documentadas [aquí](https://wasm-bindgen.github.io/wasm-bindgen/reference/attributes/index.html).
+
+```rust
+use eth_stealth_addresses::{
+ generate_stealth_meta_address,
+ generate_stealth_address,
+ compute_stealth_key
+};
+```
+
+Las funciones que necesitamos de [la librería `eth-stealth-addresses`](https://github.com/kassandraoftroy/eth-stealth-addresses).
+
+```rust
+use hex::{decode,encode};
+```
+
+Rust generalmente usa [matrices](https://doc.rust-lang.org/std/primitive.array.html) de bytes (`[u8; ]`) para los valores. Pero en JavaScript, generalmente usamos cadenas hexadecimales. [La librería `hex`](https://docs.rs/hex/latest/hex/) traduce por nosotros de una representación a la otra.
+
+```rust
+#[wasm_bindgen]
+```
+
+Generar enlaces WASM para poder llamar a esta función desde JavaScript.
+
+```rust
+pub fn wasm_generate_stealth_meta_address() -> String {
+```
+
+La forma más fácil de devolver un objeto con múltiples campos es devolver una cadena JSON.
+
+```rust
+ let (address, spend_private_key, view_private_key) =
+ generate_stealth_meta_address();
+```
+
+La función [`generate_stealth_meta_address`](https://docs.rs/eth-stealth-addresses/latest/eth_stealth_addresses/fn.generate_stealth_meta_address.html) devuelve tres campos:
+
+- La metadirección (_Kpub_ y _Vpub_)
+- La clave privada de visualización (_Vpriv_)
+- La clave privada de gasto (_Kpriv_)
+
+La sintaxis de [tupla](https://doc.rust-lang.org/std/primitive.tuple.html) nos permite separar esos valores nuevamente.
+
+```rust
+ format!("{\"address\":\"{}\",\"view_private_key\":\"{}\",\"spend_private_key\":\"{}\"}",
+ encode(address),
+ encode(view_private_key),
+ encode(spend_private_key)
+ )
+}
+```
+
+Use la macro [`format!`](https://doc.rust-lang.org/std/fmt/index.html) para generar la cadena codificada en JSON. Use [`hex::encode`](https://docs.rs/hex/latest/hex/fn.encode.html) para cambiar las matrices a cadenas hexadecimales.
+
+```rust
+fn str_to_array(s: &str) -> Option<[u8; N]> {
+```
+
+Esta función convierte una cadena hexadecimal (proporcionada por JavaScript) en una matriz de bytes. La usamos para analizar los valores proporcionados por el código de JavaScript. Esta función es complicada por la forma en que Rust maneja las matrices y los vectores.
+
+La expresión `` se llama un [genérico](https://doc.rust-lang.org/book/ch10-01-syntax.html). `N` es un parámetro que controla la longitud de la matriz devuelta. La función en realidad se llama `str_to_array::`, donde `n` es la longitud de la matriz.
+
+El valor de retorno es `Option<[u8; N]>`, lo que significa que la matriz devuelta es [opcional](https://doc.rust-lang.org/std/option/). Este es un patrón típico en Rust para funciones que pueden fallar.
+
+Por ejemplo, si llamamos a `str_to_array::10("bad060a7")`, se supone que la función debe devolver una matriz de diez valores, pero la entrada es de solo cuatro bytes. La función necesita fallar, y lo hace devolviendo `None`. El valor de retorno para `str_to_array::4("bad060a7")` sería `Some<[0xba, 0xd0, 0x60, 0xa7]>`.
+
+```rust
+ // decode returns Result, _>
+ let vec = decode(s).ok()?;
+```
+
+La función [`hex::decode`](https://docs.rs/hex/latest/hex/fn.decode.html) devuelve un `Result, FromHexError>`. El tipo [`Result`](https://doc.rust-lang.org/std/result/) puede contener un resultado exitoso (`Ok(value)`) o un error (`Err(error)`).
+
+El método `.ok()` convierte el `Result` en un `Option`, cuyo valor es el valor `Ok()` si tiene éxito o `None` si no lo tiene. Finalmente, el [operador de signo de interrogación](https://doc.rust-lang.org/std/option/#the-question-mark-operator-) aborta las funciones actuales y devuelve un `None` si el `Option` está vacío. De lo contrario, desenvuelve el valor y lo devuelve (en este caso, para asignar un valor a `vec`).
+
+Este parece un método extrañamente complicado para manejar errores, pero `Result` y `Option` aseguran que todos los errores se manejen, de una forma u otra.
+
+```rust
+ if vec.len() != N { return None; }
+```
+
+Si el número de bytes es incorrecto, es un fallo, y devolvemos `None`.
+
+```rust
+ // try_into consumes vec and attempts to make [u8; N]
+ let array: [u8; N] = vec.try_into().ok()?;
+```
+
+Rust tiene dos tipos de matrices. Las [matrices](https://doc.rust-lang.org/std/primitive.array.html) tienen un tamaño fijo. Los [vectores](https://doc.rust-lang.org/std/vec/index.html) pueden crecer y encogerse. `hex::decode` devuelve un vector, pero la librería `eth_stealth_addresses` quiere recibir matrices. [`.try_into()`](https://doc.rust-lang.org/std/convert/trait.TryInto.html#required-methods) convierte un valor en otro tipo, por ejemplo, un vector en una matriz.
+
+```rust
+ Some(array)
+}
+```
+
+Rust no requiere que use la palabra clave [`return`](https://doc.rust-lang.org/std/keyword.return.html) al devolver un valor al final de una función.
+
+```rust
+#[wasm_bindgen]
+pub fn wasm_generate_stealth_address(stealth_address: &str) -> Option {
+```
+
+Esta función recibe una metadirección pública, que incluye tanto _Vpub_ como _Kpub_. Devuelve la dirección sigilosa, la clave pública para publicar (_Rpub_) y un valor de escaneo de un byte que acelera la identificación de qué direcciones publicadas pueden pertenecer a Alice.
+
+El valor de escaneo es parte del secreto compartido (_S = GRprivVpriv_). Este valor está disponible para Alice, y verificarlo es mucho más rápido que verificar si _f(Kpub+G\*hash(S))_ es igual a la dirección publicada.
+
+```rust
+ let (address, r_pub, scan) =
+ generate_stealth_address(&str_to_array::<66>(stealth_address)?);
+```
+
+Usamos la función [`generate_stealth_address`](https://docs.rs/eth-stealth-addresses/latest/eth_stealth_addresses/fn.generate_stealth_address.html) de la librería.
+
+```rust
+ format!("{{\"address\":\"{}\",\"rPub\":\"{}\",\"scan\":\"{}\"}}",
+ encode(address),
+ encode(r_pub),
+ encode(&[scan])
+ ).into()
+}
+```
+
+Preparar la cadena de salida codificada en JSON.
+
+```rust
+#[wasm_bindgen]
+pub fn wasm_compute_stealth_key(
+ address: &str,
+ bill_pub_key: &str,
+ view_private_key: &str,
+ spend_private_key: &str
+) -> Option {
+ .
+ .
+ .
+}
+```
+
+Esta función usa la función [`compute_stealth_key`](https://docs.rs/eth-stealth-addresses/latest/eth_stealth_addresses/fn.compute_stealth_key.html) de la librería para calcular la clave privada para retirar de la dirección (_Rpriv_). Este cálculo requiere estos valores:
+
+- La dirección (_Dirección=f(Ppub)_)
+- La clave pública generada por Bill (_Rpub_)
+- La clave privada de visualización (_Vpriv_)
+- La clave privada de gasto (_Kpriv_)
+
+```rust
+#[wasm_bindgen(start)]
+```
+
+[`#[wasm_bindgen(start)]`](https://wasm-bindgen.github.io/wasm-bindgen/reference/attributes/on-rust-exports/start.html) especifica que la función se ejecuta cuando se inicializa el código WASM.
+
+```rust
+pub fn main() {
+ console_error_panic_hook::set_once();
+}
+```
+
+Este código especifica que la salida de pánico se envíe a la consola de JavaScript. Para verlo en acción, use la aplicación y dé a Bill una metadirección no válida (simplemente cambie un dígito hexadecimal). Verá este error en la consola de JavaScript:
+
+```
+rust_wasm.js:236 panicked at /home/ori/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/subtle-2.6.1/src/lib.rs:701:9:
+assertion `left == right` failed
+ left: 0
+ right: 1
+```
+
+Seguido de un seguimiento de la pila. Luego, dé a Bill la metadirección válida y a Alice una dirección no válida o una clave pública no válida. Verá este error:
+
+```
+rust_wasm.js:236 panicked at /home/ori/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/eth-stealth-addresses-0.1.0/src/lib.rs:78:9:
+keys do not generate stealth address
+```
+
+De nuevo, seguido de un seguimiento de la pila.
+
+#### La interfaz de usuario {#ui}
+
+La interfaz de usuario está escrita con [React](https://react.dev/) y servida por [Vite](https://vite.dev/). Puede aprender sobre ellos usando [este tutorial](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/). No hay necesidad de [WAGMI](https://wagmi.sh/) aquí porque no interactuamos directamente con una cadena de bloques o una billetera.
+
+La única parte no obvia de la interfaz de usuario es la conectividad WASM. Así es como funciona.
+
+**`vite.config.js`**
+
+Este archivo contiene [la configuración de Vite](https://vite.dev/config/).
+
+```js
+import { defineConfig } from 'vite'
+import react from '@vitejs/plugin-react'
+import wasm from "vite-plugin-wasm";
+
+// https://vite.dev/config/
+export default defineConfig({
+ plugins: [react(), wasm()],
+})
+```
+
+Necesitamos dos plugins de Vite: [react](https://www.npmjs.com/package/@vitejs/plugin-react) y [wasm](https://github.com/Menci/vite-plugin-wasm#readme).
+
+**`App.jsx`**
+
+Este archivo es el componente principal de la aplicación. Es un contenedor que incluye dos componentes: `Alice` y `Bill`, las interfaces de usuario para esos usuarios. La parte relevante para WASM es el código de inicialización.
+
+```jsx
+import init from './rust-wasm/pkg/rust_wasm.js'
+```
+
+Cuando usamos [`wasm-pack`](https://rustwasm.github.io/docs/wasm-pack/), crea dos archivos que usamos aquí: un archivo wasm con el código real (aquí, `src/rust-wasm/pkg/rust_wasm_bg.wasm`) y un archivo JavaScript con las definiciones para usarlo (aquí, `src/rust_wasm/pkg/rust_wasm.js`). La exportación predeterminada de ese archivo JavaScript es código que necesita ejecutarse para iniciar WASM.
+
+```jsx
+function App() {
+ .
+ .
+ .
+ useEffect(() => {
+ const loadWasm = async () => {
+ try {
+ await init();
+ setWasmReady(true)
+ } catch (err) {
+ console.error('Error loading wasm:', err)
+ alert("Wasm error: " + err)
+ }
+ }
+
+ loadWasm()
+ }, []
+ )
+```
+
+El [hook `useEffect`](https://react.dev/reference/react/useEffect) le permite especificar una función que se ejecuta cuando cambian las variables de estado. Aquí, la lista de variables de estado está vacía (`[]`), por lo que esta función se ejecuta solo una vez cuando la página se carga.
+
+La función de efecto tiene que retornar inmediatamente. Para usar código asíncrono, como el `init` de WASM (que tiene que cargar el archivo `.wasm` y por lo tanto toma tiempo), definimos una función interna [`async`](https://en.wikipedia.org/wiki/Async/await) y la ejecutamos sin un `await`.
+
+**`Bill.jsx`**
+
+Esta es la interfaz de usuario para Bill. Tiene una sola acción, crear una dirección basada en la metadirección sigilosa proporcionada por Alice.
+
+```jsx
+import { wasm_generate_stealth_address } from './rust-wasm/pkg/rust_wasm.js'
+```
+
+Además de la exportación predeterminada, el código JavaScript generado por `wasm-pack` exporta una función por cada función en el código WASM.
+
+```jsx
+
La minería de Ethereum utilizo un algoritmo conocido como Ethash. La idea fundamental del algoritmo es que un minero intenta encontrar un contador nonce usando el cálculo computacional en bruto, de esta forma el hash resultante es menor que el umbral determinado por la dificultad calculada. Este nivel de dificultad se puede ajustar de forma dinámica, permitiendo que la producción de bloques ocurra en un intervalo regular.
-## Pre requisitos {#prerequisites}
+## Requisitos previos {#prerequisites}
-Para comprender mejor esta página, le recomendamos leer primero sobre el [consenso de prueba de trabajo](/developers/docs/consensus-mechanisms/pow) y la [minería](/developers/docs/consensus-mechanisms/pow/mining).
+Para comprender mejor esta página, le recomendamos que primero lea sobre el [consenso de prueba de trabajo](/developers/docs/consensus-mechanisms/pow) y la [minería](/developers/docs/consensus-mechanisms/pow/mining).
## Dagger Hashimoto {#dagger-hashimoto}
Dagger Hashimoto fue un algoritmo de investigación precursor para la minería de Ethereum que Ethash reemplazó. Fue una combinación de dos algoritmos diferentes: Dagger y Hashimoto. Sólo fue en realidad una implementacion de investigación y fue superada por «Ethash» en el momento en el que se lanzó la red principal de Ethereum.
-[Dagger](http://www.hashcash.org/papers/dagger.html) involucra la generación de un [Grafo Acíclico Dirigido](https://en.wikipedia.org/wiki/Directed_acyclic_graph) en el cual secciones aleatorias del grafo se les aplica una función resumen ("hash function"). El principio fundamental es que cada nonce sólo requiere una pequeña porción del total de un gran árbol de datos. Recalcular el subárbol para cada nonce es algo prohibitivo para la minería, de ahí la necesidad de almacenar el árbol, aunque sirve para la verificación de un solo nonce. Dagger se diseñó para ser una alternativa a los algoritmos existentes como Scrypt, que requieren grandes capacidades de memoria, pero son difíciles de verificar cuando su memoria aumenta a niveles realmente seguros. No obstante, Dagger era vulnerable a la aceleración del hardware de memoria compartida y quedó relegado por otras vías de investigación.
+[Dagger](http://www.hashcash.org/papers/dagger.html) implica la generación de un [gráfico acíclico dirigido](https://en.wikipedia.org/wiki/Directed_acyclic_graph), del cual se toman fragmentos aleatorios para combinarlos mediante una función hash. El principio fundamental es que cada nonce sólo requiere una pequeña porción del total de un gran árbol de datos. Recalcular el subárbol para cada nonce es algo prohibitivo para la minería, de ahí la necesidad de almacenar el árbol, aunque sirve para la verificación de un solo nonce. Dagger se diseñó para ser una alternativa a los algoritmos existentes como Scrypt, que requieren grandes capacidades de memoria, pero son difíciles de verificar cuando su memoria aumenta a niveles realmente seguros. No obstante, Dagger era vulnerable a la aceleración del hardware de memoria compartida y quedó relegado por otras vías de investigación.
-[Hashimoto](http://diyhpl.us/%7Ebryan/papers2/bitcoin/meh/hashimoto.pdf) es un algoritmo que añade resistencia ASIC al estar vinculado a E/S (es decir, las lecturas de memoria son el factor limitante en el proceso de minería). La teoría es que la RAM está más disponible que la computación; se han invertido miles de millones de dólares en la optimización de la RAM para diferentes casos de uso, que a menudo implican patrones de acceso casi aleatorios (de ahí el nombre de «memoria de acceso aleatorio»). Como resultado, es probable que la RAM existente sea moderadamente cercana a la óptima para evaluar el algoritmo. Hashimoto utiliza la cadena de bloques como fuente de datos, satisfaciendo simultáneamente las explicaciones (1) y (3) anteriores.
+[Hashimoto](http://diyhpl.us/%7Ebryan/papers2/bitcoin/meh/hashimoto.pdf) es un algoritmo que añade resistencia a los ASIC al estar limitado por la E/S (es decir, las lecturas de memoria son el factor limitante en el proceso de minería). La teoría es que la RAM está más disponible que la computación; se han invertido miles de millones de dólares en la optimización de la RAM para diferentes casos de uso, que a menudo implican patrones de acceso casi aleatorios (de ahí el nombre de «memoria de acceso aleatorio»). Como resultado, es probable que la RAM existente sea moderadamente cercana a la óptima para evaluar el algoritmo. Hashimoto utiliza la cadena de bloques como fuente de datos, satisfaciendo simultáneamente las explicaciones (1) y (3) anteriores.
-Dagger-Hashimoto utilizó versiones modificadas de los algoritmos Dagger y Hashimoto. La diferencia entre Dagger Hashimoto y Hashimoto es que, en lugar de usar la cadena de bloques como fuente de datos, Dagger Hashimoto utiliza un conjunto de datos generados a medida, que se actualiza en función de los datos de bloque cada N bloques. El conjunto de datos se genera utilizando el algoritmo Dagger, lo que permite calcular de manera eficiente un subconjunto específico de cada nonce para el algoritmo de verificación del cliente ligero. La diferencia entre Dagger Hashimoto y Dagger es que, a diferencia del Dagger original, el conjunto de datos utilizado para consultar el bloque es semipermanente y solo se actualiza a intervalos ocasionales (por ejemplo, una vez por semana). Esto significa que la parte del esfuerzo de generar el conjunto de datos es cercana a cero, por lo que los argumentos de Sergio Lerner con respecto a las aceleraciones de memoria compartida se vuelven insignificantes.
+Dagger-Hashimoto utilizó versiones modificadas de los algoritmos Dagger y Hashimoto. La diferencia entre Dagger Hashimoto y Hashimoto es que, en lugar de usar la cadena de bloques como fuente de datos, Dagger Hashimoto utiliza un conjunto de datos generados a medida, que se actualiza en función de los datos de bloque cada N bloques. El conjunto de datos se genera utilizando el algoritmo Dagger, lo que permite calcular de manera eficiente un subconjunto específico de cada nonce para el algoritmo de verificación del cliente ligero. La diferencia entre Dagger-Hashimoto y Dagger es que, a diferencia del Dagger original, el conjunto de datos utilizado para consultar el bloque es semipermanente y solo se actualiza a intervalos ocasionales (p. ej., una vez por semana). Esto significa que la parte del esfuerzo de generar el conjunto de datos es cercana a cero, por lo que los argumentos de Sergio Lerner con respecto a las aceleraciones de memoria compartida se vuelven insignificantes.
-Más sobre [Dagger-Hashimoto](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto).
+Más información sobre [Dagger-Hashimoto](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto).
## Ethash {#ethash}
-Ethash era el algoritmo de minería que en realidad se usaba en la verdadera red principal de Ethereum bajo la estructura de prueba de trabajo, que ahora ha quedado obsoleta. Ethash fue esencialmente el nuevo nombre dado a una versión específica de Dagger-Hashimoto después de que el algoritmo se actualizara considerablemente, aunque aun heredando los principios fundamentales de su predecesor. La Red principal de Ethereum solo usó Ethash; Dagger Hashimoto fue una versión de I+D del algoritmo de minado que fue reemplazada antes de que comenzara el minado en la Red principal de Ethereum.
+Ethash era el algoritmo de minería que en realidad se usaba en la verdadera red principal de Ethereum bajo la estructura de prueba de trabajo, que ahora ha quedado obsoleta. Ethash fue esencialmente el nuevo nombre dado a una versión específica de Dagger-Hashimoto después de que el algoritmo se actualizara considerablemente, aunque aun heredando los principios fundamentales de su predecesor. La red principal de Ethereum solo utilizó Ethash. Dagger-Hashimoto fue una versión de I+D del algoritmo de minería que fue reemplazado antes de que comenzara la minería en la red principal de Ethereum.
-[Más sobre Ethash](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash).
+[Más información sobre Ethash](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash).
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-_¿Conoces un recurso comunitario que te ayudó? Edita esta página y añádelo!_
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
From 473be08b9b6e8f88d9b8cc9676db2fa17163ebbf Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:01 -0300
Subject: [PATCH 232/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
---
.../pos/block-proposal/index.md | 22 +++++++++----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/block-proposal/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
index 868c4e4bd0f..b923aad0034 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
@@ -8,7 +8,7 @@ Los bloques son las unidades fundamentales de la cadena de bloques. Los bloques
## Requisitos previos {#prerequisites}
-La propuesta de bloque es parte del protocolo de prueba de participación. Para ayudar a entender esta página, le recomendamos que lea sobre la [prueba de participación](/developers/docs/consensus-mechanisms/pos/) y la [arquitectura de bloques](/developers/docs/blocks/).
+La propuesta de bloque es parte del protocolo de prueba de participación. Para entender mejor esta página, le recomendamos que lea sobre la [prueba de participación](/developers/docs/consensus-mechanisms/pos/) y la [arquitectura de bloques](/developers/docs/blocks/).
## ¿Quién produce los bloques? {#who-produces-blocks}
@@ -18,7 +18,7 @@ Las cuentas de validadores proponen bloques. Las cuentas de validación slas adm
Un solo validador se elige pseudoaleatoriamente para proponer un bloque en cada ranura. No hay tal cosa como la verdadera aleatoriedad en una cadena de bloques, porque si cada nodo generara números genuinamente aleatorios, no podrían llegar a un consenso. En su lugar, el objetivo es hacer que el proceso de selección del validador sea impredecible. La aleatoriedad se logra en Ethereum utilizando un algoritmo llamado RANDAO que mezcla un hash del proponente de bloques con una semilla que se actualiza en cada bloque. Este valor sirve para seleccionar un validador específico del conjunto de validadores totales. La selección del validador se fija con dos épocas de antelación como una forma de protegerse contra ciertos tipos de manipulación de semillas.
-Aunque los validadores se añaden a RANDAO en cada ranura, el valor global de RANDAO solo se actualiza una vez por época. Para calcular el índice del siguiente proponente de bloques, el valor de RANDAO se mezcla con el número de ranura para dar un valor único en cada ranura. La probabilidad de que se seleccione un validador individual no es simplemente `1/N` (donde `N` = total de validadores activos). En su lugar, se pondera por el saldo efectivo de ETH de cada validador. El saldo efectivo máximo es de 32 ETH (esto significa que `balance < 32 ETH` conduce a un peso más bajo que `balance == 32 ETH`, pero `balance > 32 ETH` no conduce a una ponderación más alta que `balance == 32 ETH`).
+Aunque los validadores se añaden a RANDAO en cada ranura, el valor global de RANDAO solo se actualiza una vez por época. Para calcular el índice del siguiente proponente de bloques, el valor de RANDAO se mezcla con el número de ranura para dar un valor único en cada ranura. La probabilidad de que se seleccione un validador individual no es simplemente `1/N` (donde `N` = total de validadores activos). En su lugar, se pondera por el saldo efectivo de ETH de cada validador. El saldo efectivo máximo es de 32 ETH (esto significa que `balance < 32 ETH` da como resultado una ponderación menor que `balance == 32 ETH`, pero `balance > 32 ETH` no da como resultado una ponderación mayor que `balance == 32 ETH`).
Solo se selecciona un proponente de bloque en cada ranura. En condiciones normales, un productor de un solo bloque crea y lanza un solo bloque en su ranura dedicada. Crear dos bloques para la misma ranura es una ofensa que se puede recortar, a menudo conocida como «equivocación».
@@ -42,28 +42,28 @@ class BeaconBlockBody(Container):
execution_payload: ExecutionPayload
```
-El campo `randao_reveal` toma un valor aleatorio verificable que el proponente de bloques crea al firmar el número de época actual. `eth1_data` es un voto por la vista del proponente del bloque sobre el contrato de depósito, incluida la raíz del depósito Merkle trie y el número total de depósitos que permiten verificar los nuevos depósitos. `graffiti` es un campo opcional que se puede utilizar para añadir un mensaje al bloque. `proposer_slashings` y `attester_slashings` son campos que contienen pruebas de que ciertos validadores han cometido delitos recortables de acuerdo con la opinión del proponente de la cadena. `deposits` es una lista de nuevos depósitos de validadores de los que el proponente de bloques es consciente, y `voluntary_exits` es una lista de validadores que desean salir de los que el proponente de bloques ha oído hablar en la red de intercambio de información de la capa de consenso. El `sync_aggregate` es un vector que muestra qué validadores se asignaron previamente a un comité de sincronización (un subconjunto de validadores que sirven datos de clientes ligeros) y participaron en la firma de datos.
+El campo `randao_reveal` toma un valor aleatorio verificable que el proponente del bloque crea al firmar el número de época actual. `eth1_data` es un voto para la vista del proponente del bloque del contrato de depósito, incluyendo la raíz del trie de Merkle de depósito y el número total de depósitos que permiten verificar nuevos depósitos. `graffiti` es un campo opcional que puede usarse para agregar un mensaje al bloque. `proposer_slashings` y `attester_slashings` son campos que contienen pruebas de que ciertos validadores han cometido ofensas sancionables según la vista de la cadena que tiene el proponente. `deposits` es una lista de nuevos depósitos de validadores de los que el proponente del bloque tiene conocimiento, y `voluntary_exits` es una lista de validadores que desean salir, de los que el proponente del bloque ha oído hablar en la red de rumores de la capa de consenso. El `sync_aggregate` es un vector que muestra qué validadores fueron asignados previamente a un comité de sincronización (un subconjunto de validadores que sirven datos de clientes ligeros) y participaron en la firma de datos.
-El `execution_payload` permite que la información sobre las transacciones se transmita entre los clientes de ejecución y consenso. El `execution_payload` es un bloque de datos de ejecución que se anida dentro de un bloque de baliza. Los campos dentro de la `execution_payload` reflejan la estructura de bloques descrita en el protocolo de Ethereum, excepto que no hay ommers y `prev_randao` existe en lugar de `dificultad`. El cliente de ejecución tiene acceso a un grupo local de transacciones de las que ha oído hablar en su propia red de intercambio de información. Estas transacciones se ejecutan localmente para generar un estado trie actualizado conocido como «posestado». Las transacciones se incluyen en el `execution_payload` como una lista llamada `transacciones` y el posestado se proporciona en el campo `raíz-estado`.
+El `execution_payload` permite que la información sobre las transacciones se transmita entre los clientes de ejecución y de consenso. El `execution_payload` es un bloque de datos de ejecución que se anida dentro de un bloque de baliza. Los campos dentro del `execution_payload` reflejan la estructura del bloque descrita en el libro amarillo de Ethereum, excepto que no hay ommers y existe `prev_randao` en lugar de `difficulty`. El cliente de ejecución tiene acceso a un grupo local de transacciones de las que ha oído hablar en su propia red de intercambio de información. Estas transacciones se ejecutan localmente para generar un estado trie actualizado conocido como «posestado». Las transacciones se incluyen en el `execution_payload` como una lista llamada `transactions` y el postestado se proporciona en el campo `state-root`.
Todos estos datos se recopilan en un bloque de baliza, se firman y se transmiten a los pares del proponente del bloque, que los propagan a sus pares, etc.
-Más información sobre la [anatomía de los bloques](/developers/docs/blocks).
+Lea más sobre la [anatomía de los bloques](/developers/docs/blocks).
## ¿Qué pasa con el bloque? {#what-happens-to-blocks}
-El bloque se añade a la base de datos local del proponente del bloque y se transmite a los pares a través de la red de intercambio de información de la capa de consenso. Cuando un validador recibe el bloque, verifica los datos dentro de él, incluida la verificación de que el bloque tiene el padre correcto, corresponde a la ranura indicada, el índice del proponente es el esperado, la revelación de RANDAO es válida y que el proponente no está recortado. El `execution_payload` se desagrupa, y el cliente de ejecución del validador vuelve a ejecutar las transacciones de la lista para comprobar el cambio de estado propuesto. Suponiendo que el bloque pase todas estas comprobaciones, cada validador añade el bloque a su propia cadena predilecta. El proceso comienza de nuevo en la siguiente ranura.
+El bloque se añade a la base de datos local del proponente del bloque y se transmite a los pares a través de la red de intercambio de información de la capa de consenso. Cuando un validador recibe el bloque, verifica los datos dentro de él, incluida la verificación de que el bloque tiene el padre correcto, corresponde a la ranura indicada, el índice del proponente es el esperado, la revelación de RANDAO es válida y que el proponente no está recortado. El `execution_payload` se desempaqueta, y el cliente de ejecución del validador vuelve a ejecutar las transacciones de la lista para comprobar el cambio de estado propuesto. Suponiendo que el bloque pase todas estas comprobaciones, cada validador añade el bloque a su propia cadena predilecta. El proceso comienza de nuevo en la siguiente ranura.
## Recompensas de bloque {#block-rewards}
-El proponente de bloques recibe el pago por su trabajo. Hay una `base_reward` calculada en función del número de validadores activos y sus saldos efectivos. El proponente del bloque recibe entonces una fracción de `base_reward` por cada certificación válida incluida en el bloque; cuantos más validadores certifican el bloque, mayor será la recompensa del proponente del bloque. También hay una recompensa por los validadores de informes que deban ser recortados, igual a `1/512 * effective balance` por cada validador recortado.
+El proponente de bloques recibe el pago por su trabajo. Hay una `base_reward` calculada como una función del número de validadores activos y sus saldos efectivos. El proponente del bloque recibe entonces una fracción de la `base_reward` por cada atestación válida incluida en el bloque; cuantos más validadores atestigüen el bloque, mayor será la recompensa del proponente del bloque. También hay una recompensa por reportar validadores que deberían ser sancionados, igual a `1/512 * effective balance` por cada validador sancionado.
-[Más información sobre recompensas y penalizaciones](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties)
+[Más sobre recompensas y penalizaciones](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
- [Introducción a los bloques](/developers/docs/blocks/)
-- [Introducción a la prueba de participación](/developers/docs/consensus-mechanisms/pos/)
+- [Introducción a prueba de participación](/developers/docs/consensus-mechanisms/pos/)
- [Especificaciones de consenso de Ethereum](https://github.com/ethereum/consensus-specs)
- [Introducción a Gasper](/developers/docs/consensus-mechanisms/pos/)
-- [Actualización de Ethereum](https://eth2book.info/)
+- [Actualizando Ethereum](https://eth2book.info/)
From 21e24b0827f6ed89ea8c018959c2bee819839040 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:03 -0300
Subject: [PATCH 233/589] update(i18n):
public/content/translations/es/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md
---
.../index.md | 372 ++++++++++++++++++
1 file changed, 372 insertions(+)
create mode 100644 public/content/translations/es/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md
diff --git a/public/content/translations/es/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md b/public/content/translations/es/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md
new file mode 100644
index 00000000000..da90cf3f76d
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md
@@ -0,0 +1,372 @@
+---
+title: Cómo desarrollar y probar una dApp en una red de prueba local multicliente
+description: Esta guía primero le guiará a través de cómo instanciar y configurar una red de prueba local multicliente de Ethereum antes de usar la red de prueba para desplegar y probar una dApp.
+author: "Tedi Mitiku"
+tags:
+ [
+ "clientes",
+ "nodos",
+ "contratos Inteligentes",
+ "composabilidad",
+ "capa de consenso",
+ "capa de ejecución",
+ "pruebas"
+ ]
+skill: intermediate
+lang: es
+published: 2023-04-11
+---
+
+## Introducción {#introduction}
+
+Esta guía le guía a través del proceso de instanciación de una red de prueba local configurable de Ethereum, desplegando un contrato inteligente en ella y usando la red de prueba para ejecutar pruebas en su dApp. Esta guía está diseñada para desarrolladores de dApps que desean desarrollar y probar sus dApps localmente con diferentes configuraciones de red antes de desplegarlas en una red de prueba activa o en la red principal.
+
+En esta guía, usted:
+
+- Instanciar una red de prueba local de Ethereum con el [`eth-network-package`](https://github.com/kurtosis-tech/eth-network-package) usando [Kurtosis](https://www.kurtosis.com/),
+- Conectar su entorno de desarrollo de dApps Hardhat a la red de prueba local para compilar, desplegar y probar una dApp, y
+- Configurar la red de prueba local, incluyendo parámetros como el número de nodos y emparejamientos específicos de clientes EL/CL, para permitir flujos de trabajo de desarrollo y prueba con varias configuraciones de red.
+
+### ¿Qué es Kurtosis? {#what-is-kurtosis}
+
+[Kurtosis](https://www.kurtosis.com/) es un sistema de compilación componible diseñado para configurar entornos de prueba de múltiples contenedores. Permite específicamente a los desarrolladores crear entornos reproducibles que requieren una lógica de configuración dinámica, como las redes de prueba de la cadena de bloques.
+
+En esta guía, el paquete eth-network-package de Kurtosis pone en marcha una red de prueba local de Ethereum con soporte para el cliente de la capa de ejecución (EL) [`geth`](https://geth.ethereum.org/), así como para los clientes de la capa de consenso (CL) [`teku`](https://consensys.io/teku), [`lighthouse`](https://lighthouse.sigmaprime.io/) y [`lodestar`](https://lodestar.chainsafe.io/). Este paquete sirve como una alternativa configurable y componible a las redes en marcos como Hardhat Network, Ganache y Anvil. Kurtosis ofrece a los desarrolladores un mayor control y flexibilidad sobre las redes de prueba que utilizan, que es una razón importante por la que la [Ethereum Foundation utilizó Kurtosis para probar la Fusión](https://www.kurtosis.com/blog/testing-the-ethereum-merge) y continúa usándolo para probar las actualizaciones de la red.
+
+## Configuración de Kurtosis {#setting-up-kurtosis}
+
+Antes de continuar, asegúrese de que tiene:
+
+- [Instalado e iniciado el motor Docker](https://docs.kurtosis.com/install/#i-install--start-docker) en su máquina local
+- [Instalado el CLI de Kurtosis](https://docs.kurtosis.com/install#ii-install-the-cli) (o actualizado a la última versión, si ya tiene el CLI instalado)
+- Instalado [Node.js](https://nodejs.org/en), [yarn](https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable), y [npx](https://www.npmjs.com/package/npx) (para su entorno de dApp)
+
+## Instanciar una red de prueba local de Ethereum {#instantiate-testnet}
+
+Para poner en marcha una red de prueba local de Ethereum, ejecute:
+
+```python
+kurtosis --enclave local-eth-testnet run github.com/kurtosis-tech/eth-network-package
+```
+
+Nota: Este comando nombra su red como: "local-eth-testnet" usando la bandera `--enclave`.
+
+Kurtosis imprimirá los pasos que está realizando internamente mientras trabaja para interpretar, validar y luego ejecutar las instrucciones. Al final, debería ver una salida que se parezca a la siguiente:
+
+```python
+INFO[2023-04-04T18:09:44-04:00] ======================================================
+INFO[2023-04-04T18:09:44-04:00] || Created enclave: local-eth-testnet ||
+INFO[2023-04-04T18:09:44-04:00] ======================================================
+Name: local-eth-testnet
+UUID: 39372d756ae8
+Status: RUNNING
+Creation Time: Tue, 04 Apr 2023 18:09:03 EDT
+
+========================================= Files Artifacts =========================================
+UUID Name
+d4085a064230 cl-genesis-data
+1c62cb792e4c el-genesis-data
+bd60489b73a7 genesis-generation-config-cl
+b2e593fe5228 genesis-generation-config-el
+d552a54acf78 geth-prefunded-keys
+5f7e661eb838 prysm-password
+054e7338bb59 validator-keystore-0
+
+========================================== User Services ==========================================
+UUID Name Ports Status
+e20f129ee0c5 cl-client-0-beacon http: 4000/tcp -> RUNNING
+ metrics: 5054/tcp ->
+ tcp-discovery: 9000/tcp -> 127.0.0.1:54263
+ udp-discovery: 9000/udp -> 127.0.0.1:60470
+a8b6c926cdb4 cl-client-0-validator http: 5042/tcp -> 127.0.0.1:54267 RUNNING
+ metrics: 5064/tcp ->
+d7b802f623e8 el-client-0 engine-rpc: 8551/tcp -> 127.0.0.1:54253 RUNNING
+ rpc: 8545/tcp -> 127.0.0.1:54251
+ tcp-discovery: 30303/tcp -> 127.0.0.1:54254
+ udp-discovery: 30303/udp -> 127.0.0.1:53834
+ ws: 8546/tcp -> 127.0.0.1:54252
+514a829c0a84 prelaunch-data-generator-1680646157905431468 STOPPED
+62bd62d0aa7a prelaunch-data-generator-1680646157915424301 STOPPED
+05e9619e0e90 prelaunch-data-generator-1680646157922872635 STOPPED
+
+```
+
+¡Felicitaciones! Ha utilizado Kurtosis para instanciar una red de prueba local de Ethereum, con un cliente de CL (`lighthouse`) y un cliente de EL (`geth`), sobre Docker.
+
+### Revisión {#review-instantiate-testnet}
+
+En esta sección, ejecutó un comando que ordenó a Kurtosis que utilizara el [`eth-network-package` alojado de forma remota en GitHub](https://github.com/kurtosis-tech/eth-network-package) para poner en marcha una red de prueba local de Ethereum dentro de un [Enclave](https://docs.kurtosis.com/advanced-concepts/enclaves/) de Kurtosis. Dentro de su enclave, encontrará tanto "artefactos de archivo" como "servicios de usuario".
+
+Los [Artefactos de archivo](https://docs.kurtosis.com/advanced-concepts/files-artifacts/) en su enclave incluyen todos los datos generados y utilizados para arrancar los clientes EL y CL. Los datos se crearon utilizando el servicio `prelaunch-data-generator` creado a partir de esta [imagen de Docker](https://github.com/ethpandaops/ethereum-genesis-generator)
+
+Los servicios de usuario muestran todos los servicios en contenedores que operan en su enclave. Notará que se ha creado un único nodo, que cuenta con un cliente de EL y un cliente de CL.
+
+## Conecte su entorno de desarrollo de dApp a la red de prueba local de Ethereum {#connect-your-dapp}
+
+### Configurar el entorno de desarrollo de dApp {#set-up-dapp-env}
+
+Ahora que tiene una red de prueba local en funcionamiento, puede conectar su entorno de desarrollo de dApp para usar su red de prueba local. El marco Hardhat se utilizará en esta guía para desplegar una dApp de blackjack en su red de prueba local.
+
+Para configurar su entorno de desarrollo de dApp, clone el repositorio que contiene nuestra dApp de muestra e instale sus dependencias, ejecute:
+
+```python
+git clone https://github.com/kurtosis-tech/awesome-kurtosis.git && cd awesome-kurtosis/smart-contract-example && yarn
+```
+
+La carpeta [smart-contract-example](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example) utilizada aquí contiene la configuración típica para un desarrollador de dApp que utiliza el marco [Hardhat](https://hardhat.org/):
+
+- [`contracts/`](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example/contracts) contiene algunos contratos inteligentes simples para una dApp de Blackjack
+- [`scripts/`](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example/scripts) contiene un script para desplegar un contrato de token en su red local de Ethereum
+- [`test/`](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example/test) contiene una prueba simple .js para su contrato de token para confirmar que a cada jugador en nuestra dApp de Blackjack se le hayan acuñado 1000
+- [`hardhat.config.ts`](https://github.com/kurtosis-tech/awesome-kurtosis/blob/main/smart-contract-example/hardhat.config.ts) configura su instalación de Hardhat
+
+### Configurar Hardhat para usar la red de prueba local {#configure-hardhat}
+
+Con su entorno de desarrollo de dApp configurado, ahora conectará Hardhat para usar la red de prueba local de Ethereum generada usando Kurtosis. Para lograr esto, reemplace `<$YOUR_PORT>` en la estructura `localnet` en su archivo de configuración `hardhat.config.ts` con el puerto de la salida del URI rpc de cualquier servicio `el-client-`. En este caso de muestra, el puerto sería `64248`. Su puerto será diferente.
+
+Ejemplo en `hardhat.config.ts`:
+
+```js
+localnet: {
+url: 'http://127.0.0.1:<$YOUR_PORT>',// TODO: REEMPLACE $YOUR_PORT CON EL PUERTO DE UN URI DE NODO PRODUCIDO POR EL PAQUETE DE RED ETH DE KURTOSIS
+
+// Estas son claves privadas asociadas con cuentas de prueba prefinanciadas creadas por el paquete de red eth
+//
+accounts: [
+ "ef5177cd0b6b21c87db5a0bf35d4084a8a57a9d6a064f86d51ac85f2b873a4e2",
+ "48fcc39ae27a0e8bf0274021ae6ebd8fe4a0e12623d61464c498900b28feb567",
+ "7988b3a148716ff800414935b305436493e1f25237a2a03e5eebc343735e2f31",
+ "b3c409b6b0b3aa5e65ab2dc1930534608239a478106acf6f3d9178e9f9b00b35",
+ "df9bb6de5d3dc59595bcaa676397d837ff49441d211878c024eabda2cd067c9f",
+ "7da08f856b5956d40a72968f93396f6acff17193f013e8053f6fbb6c08c194d6",
+ ],
+},
+```
+
+Una vez que guarde el archivo, ¡su entorno de desarrollo de dApps Hardhat estará conectado a su red de prueba local de Ethereum! Puede verificar que su red de prueba funciona ejecutando:
+
+```python
+npx hardhat balances --network localnet
+```
+
+La salida debería parecerse a esto:
+
+```python
+0x878705ba3f8Bc32FCf7F4CAa1A35E72AF65CF766 has balance 10000000000000000000000000
+0x4E9A3d9D1cd2A2b2371b8b3F489aE72259886f1A has balance 10000000000000000000000000
+0xdF8466f277964Bb7a0FFD819403302C34DCD530A has balance 10000000000000000000000000
+0x5c613e39Fc0Ad91AfDA24587e6f52192d75FBA50 has balance 10000000000000000000000000
+0x375ae6107f8cC4cF34842B71C6F746a362Ad8EAc has balance 10000000000000000000000000
+0x1F6298457C5d76270325B724Da5d1953923a6B88 has balance 10000000000000000000000000
+```
+
+Esto confirma que Hardhat está usando su red de prueba local y detecta las cuentas prefinanciadas creadas por el `eth-network-package`.
+
+### Despliegue y pruebe su dApp localmente {#deploy-and-test-dapp}
+
+Con el entorno de desarrollo de dApp totalmente conectado a la red de prueba local de Ethereum, ahora puede ejecutar flujos de trabajo de desarrollo y prueba en su dApp utilizando la red de prueba local.
+
+Para compilar y desplegar el contrato inteligente `ChipToken.sol` para prototipos y desarrollo local, ejecute:
+
+```python
+npx hardhat compile
+npx hardhat run scripts/deploy.ts --network localnet
+```
+
+La salida debería ser algo como:
+
+```python
+ChipToken desplegado en: 0xAb2A01BC351770D09611Ac80f1DE076D56E0487d
+```
+
+Ahora intente ejecutar la prueba `simple.js` en su dApp local para confirmar que a cada jugador de nuestra dApp de Blackjack se le hayan acuñado 1000:
+
+La salida debería parecerse a esto:
+
+```python
+npx hardhat test --network localnet
+```
+
+La salida debería parecerse a esto:
+
+```python
+ChipToken
+ mint
+ ✔ debería acuñar 1000 fichas para PLAYER ONE
+
+ 1 aprobada (654ms)
+```
+
+### Revisión {#review-dapp-workflows}
+
+En este punto, ya ha configurado un entorno de desarrollo de dApp, lo ha conectado a una red local de Ethereum creada por Kurtosis, y ha compilado, desplegado y ejecutado una prueba simple en su dApp.
+
+Ahora exploremos cómo puede configurar la red subyacente para probar nuestras dApps bajo diversas configuraciones de red.
+
+## Configuración de la red de prueba local de Ethereum {#configure-testnet}
+
+### Cambio de las configuraciones del cliente y el número de nodos {#configure-client-config-and-num-nodes}
+
+Su red de prueba local de Ethereum puede configurarse para usar diferentes pares de clientes EL y CL, así como un número variable de nodos, dependiendo del escenario y la configuración de red específica que desee desarrollar o probar. Esto significa que, una vez configurada, puede poner en marcha una red de prueba local personalizada y utilizarla para ejecutar los mismos flujos de trabajo (despliegue, pruebas, etc.) bajo varias configuraciones de red para garantizar que todo funcione como se espera. Para obtener más información sobre los otros parámetros que puede modificar, visite este enlace.
+
+¡Pruébelo! Puede pasar varias opciones de configuración al `eth-network-package` a través de un archivo JSON. Este archivo JSON de parámetros de red proporciona las configuraciones específicas que Kurtosis utilizará para configurar la red local de Ethereum.
+
+Tome el archivo de configuración predeterminado y edítelo para poner en marcha dos nodos con diferentes pares EL/CL:
+
+- Nodo 1 con `geth`/`lighthouse`
+- Nodo 2 con `geth`/`lodestar`
+- Nodo 3 con `geth`/`teku`
+
+Esta configuración crea una red heterogénea de implementaciones de nodos de Ethereum para probar su dApp. Su archivo de configuración debería tener este aspecto:
+
+```yaml
+{
+ "participants":
+ [
+ {
+ "el_client_type": "geth",
+ "el_client_image": "",
+ "el_client_log_level": "",
+ "cl_client_type": "lighthouse",
+ "cl_client_image": "",
+ "cl_client_log_level": "",
+ "beacon_extra_params": [],
+ "el_extra_params": [],
+ "validator_extra_params": [],
+ "builder_network_params": null,
+ },
+ {
+ "el_client_type": "geth",
+ "el_client_image": "",
+ "el_client_log_level": "",
+ "cl_client_type": "lodestar",
+ "cl_client_image": "",
+ "cl_client_log_level": "",
+ "beacon_extra_params": [],
+ "el_extra_params": [],
+ "validator_extra_params": [],
+ "builder_network_params": null,
+ },
+ {
+ "el_client_type": "geth",
+ "el_client_image": "",
+ "el_client_log_level": "",
+ "cl_client_type": "teku",
+ "cl_client_image": "",
+ "cl_client_log_level": "",
+ "beacon_extra_params": [],
+ "el_extra_params": [],
+ "validator_extra_params": [],
+ "builder_network_params": null,
+ },
+ ],
+ "network_params":
+ {
+ "preregistered_validator_keys_mnemonic": "giant issue aisle success illegal bike spike question tent bar rely arctic volcano long crawl hungry vocal artwork sniff fantasy very lucky have athlete",
+ "num_validator_keys_per_node": 64,
+ "network_id": "3151908",
+ "deposit_contract_address": "0x4242424242424242424242424242424242424242",
+ "seconds_per_slot": 12,
+ "genesis_delay": 120,
+ "capella_fork_epoch": 5,
+ },
+}
+```
+
+Cada estructura de `participants` se corresponde con un nodo de la red, por lo que 3 estructuras de `participants` le indicarán a Kurtosis que ponga en marcha 3 nodos en su red. Cada estructura de `participants` le permitirá especificar el par EL y CL utilizado para ese nodo específico.
+
+La estructura `network_params` configura los ajustes de red que se utilizan para crear los archivos de génesis para cada nodo, así como otros ajustes como los segundos por ranura de la red.
+
+Guarde el archivo de parámetros editado en el directorio que desee (en el siguiente ejemplo, se guarda en el escritorio) y, a continuación, utilícelo para ejecutar su paquete Kurtosis ejecutando:
+
+```python
+kurtosis clean -a && kurtosis run --enclave local-eth-testnet github.com/kurtosis-tech/eth-network-package "$(cat ~/eth-network-params.json)"
+```
+
+Nota: el comando `kurtosis clean -a` se utiliza aquí para indicar a Kurtosis que destruya la antigua red de prueba y su contenido antes de iniciar una nueva.
+
+De nuevo, Kurtosis funcionará durante un rato e imprimirá los pasos individuales que se están llevando a cabo. Finalmente, la salida debería ser algo como:
+
+```python
+Código Starlark ejecutado con éxito. No se devolvió ninguna salida.
+INFO[2023-04-07T11:43:16-04:00] ==========================================================
+INFO[2023-04-07T11:43:16-04:00] || Created enclave: local-eth-testnet ||
+INFO[2023-04-07T11:43:16-04:00] ==========================================================
+Name: local-eth-testnet
+UUID: bef8c192008e
+Status: RUNNING
+Creation Time: Fri, 07 Apr 2023 11:41:58 EDT
+
+========================================= Files Artifacts =========================================
+UUID Name
+cc495a8e364a cl-genesis-data
+7033fcdb5471 el-genesis-data
+a3aef43fc738 genesis-generation-config-cl
+8e968005fc9d genesis-generation-config-el
+3182cca9d3cd geth-prefunded-keys
+8421166e234f prysm-password
+d9e6e8d44d99 validator-keystore-0
+23f5ba517394 validator-keystore-1
+4d28dea40b5c validator-keystore-2
+
+========================================== User Services ==========================================
+UUID Name Ports Status
+485e6fde55ae cl-client-0-beacon http: 4000/tcp -> http://127.0.0.1:65010 RUNNING
+ metrics: 5054/tcp -> http://127.0.0.1:65011
+ tcp-discovery: 9000/tcp -> 127.0.0.1:65012
+ udp-discovery: 9000/udp -> 127.0.0.1:54455
+73739bd158b2 cl-client-0-validator http: 5042/tcp -> 127.0.0.1:65016 RUNNING
+ metrics: 5064/tcp -> http://127.0.0.1:65017
+1b0a233cd011 cl-client-1-beacon http: 4000/tcp -> 127.0.0.1:65021 RUNNING
+ metrics: 8008/tcp -> 127.0.0.1:65023
+ tcp-discovery: 9000/tcp -> 127.0.0.1:65024
+ udp-discovery: 9000/udp -> 127.0.0.1:56031
+ validator-metrics: 5064/tcp -> 127.0.0.1:65022
+949b8220cd53 cl-client-1-validator http: 4000/tcp -> 127.0.0.1:65028 RUNNING
+ metrics: 8008/tcp -> 127.0.0.1:65030
+ tcp-discovery: 9000/tcp -> 127.0.0.1:65031
+ udp-discovery: 9000/udp -> 127.0.0.1:60784
+ validator-metrics: 5064/tcp -> 127.0.0.1:65029
+c34417bea5fa cl-client-2 http: 4000/tcp -> 127.0.0.1:65037 RUNNING
+ metrics: 8008/tcp -> 127.0.0.1:65035
+ tcp-discovery: 9000/tcp -> 127.0.0.1:65036
+ udp-discovery: 9000/udp -> 127.0.0.1:63581
+e19738e6329d el-client-0 engine-rpc: 8551/tcp -> 127.0.0.1:64986 RUNNING
+ rpc: 8545/tcp -> 127.0.0.1:64988
+ tcp-discovery: 30303/tcp -> 127.0.0.1:64987
+ udp-discovery: 30303/udp -> 127.0.0.1:55706
+ ws: 8546/tcp -> 127.0.0.1:64989
+e904687449d9 el-client-1 engine-rpc: 8551/tcp -> 127.0.0.1:64993 RUNNING
+ rpc: 8545/tcp -> 127.0.0.1:64995
+ tcp-discovery: 30303/tcp -> 127.0.0.1:64994
+ udp-discovery: 30303/udp -> 127.0.0.1:58096
+ ws: 8546/tcp -> 127.0.0.1:64996
+ad6f401126fa el-client-2 engine-rpc: 8551/tcp -> 127.0.0.1:65003 RUNNING
+ rpc: 8545/tcp -> 127.0.0.1:65001
+ tcp-discovery: 30303/tcp -> 127.0.0.1:65000
+ udp-discovery: 30303/udp -> 127.0.0.1:57269
+ ws: 8546/tcp -> 127.0.0.1:65002
+12d04a9dbb69 prelaunch-data-generator-1680882122181135513 STOPPED
+5b45f9c0504b prelaunch-data-generator-1680882122192182847 STOPPED
+3d4aaa75e218 prelaunch-data-generator-1680882122201668972 STOPPED
+```
+
+¡Felicitaciones! Ha configurado correctamente su red de prueba local para que tenga 3 nodos en lugar de 1. Para ejecutar los mismos flujos de trabajo que antes en su dApp (despliegue y prueba), realice las mismas operaciones que hicimos antes reemplazando `<$YOUR_PORT>` en la estructura `localnet` en su archivo de configuración `hardhat.config.ts` con el puerto de la salida del URI rpc de cualquier servicio `el-client-` en su nueva red de prueba local de 3 nodos.
+
+## Conclusión {#conclusion}
+
+¡Y eso es todo! Para recapitular esta breve guía, usted:
+
+- Creó una red de prueba local de Ethereum sobre Docker usando Kurtosis
+- Conectó su entorno de desarrollo de dApp local a la red local de Ethereum
+- Desplegó una dApp y ejecutó una prueba simple en ella en la red local de Ethereum
+- Configuró la red subyacente de Ethereum para tener 3 nodos
+
+Nos encantaría saber qué le ha parecido, qué se podría mejorar o responder a cualquiera de sus preguntas. No dude en ponerse en contacto con nosotros a través de [GitHub](https://github.com/kurtosis-tech/kurtosis/issues/new/choose) o [envíenos un correo electrónico](mailto:feedback@kurtosistech.com).
+
+### Otros ejemplos y guías {#other-examples-guides}
+
+Le animamos a que consulte nuestro [inicio rápido](https://docs.kurtosis.com/quickstart) (donde creará una base de datos Postgres y una API sobre ella) y nuestros otros ejemplos en nuestro [repositorio awesome-kurtosis](https://github.com/kurtosis-tech/awesome-kurtosis) donde encontrará algunos ejemplos geniales, incluyendo paquetes para:
+
+- Poner en marcha la misma red de prueba local de Ethereum, pero con servicios adicionales conectados como un generador de spam de transacciones (para simular transacciones), un monitor de bifurcaciones y una instancia conectada de Grafana y Prometheus
+- Realizar una [prueba de subredes](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/ethereum-network-partition-test) en la misma red local de Ethereum
From 07a77c64561ccfb57213f784c58c7a8fb169a1d6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:05 -0300
Subject: [PATCH 234/589] update(i18n):
public/content/translations/es/developers/docs/gas/index.md
---
.../es/developers/docs/gas/index.md | 122 ++++++++++--------
1 file changed, 69 insertions(+), 53 deletions(-)
diff --git a/public/content/translations/es/developers/docs/gas/index.md b/public/content/translations/es/developers/docs/gas/index.md
index 0f3bb2e22b4..96de4501583 100644
--- a/public/content/translations/es/developers/docs/gas/index.md
+++ b/public/content/translations/es/developers/docs/gas/index.md
@@ -1,6 +1,7 @@
---
title: Gas y tarifas
-description:
+metaTitle: "Gas y tarifas de Ethereum: visión técnica"
+description: Conozca las comisiones de gas en Ethereum, cómo se calculan y su papel en la seguridad de la red y el procesamiento de transacciones.
lang: es
---
@@ -8,7 +9,7 @@ El gas es esencial para la red de Ethereum. Se trata del combustible que le perm
## Requisitos previos {#prerequisites}
-Para comprender mejor esta página, le recomendamos que en primer lugar obtenga información sobre [las transacciones](/developers/docs/transactions/) y [la EVM](/developers/docs/evm/).
+Para comprender mejor esta página, le recomendamos que primero lea sobre las [transacciones](/developers/docs/transactions/) y la [EVM](/developers/docs/evm/).
## ¿Qué es el gas? {#what-is-gas}
@@ -16,25 +17,26 @@ El gas hace referencia a la unidad que mide la cantidad de esfuerzo computaciona
Dado que la ejecución de cada transacción en Ethereum requiere recursos informáticos, dichos recursos tienen que ser de pago para así poder asegurar que Ethereum no sea vulnerable al correo basura y no se pueda quedar atascado en un lapso computacional infinito. El pago por este recurso computacional se realiza en forma de tarifa de gas.
-La tarifa de gas es ** la cantidad de gas usado para hacer alguna operación, multiplicado por el coste unitario del gas**. Al margen de que la transacción se procese de forma exitosa o fallida, se paga igualmente una tarifa.
+La tarifa de gas es **la cantidad de gas que se utiliza para realizar una operación, multiplicada por el coste por unidad de gas**. Al margen de que la transacción se procese de forma exitosa o fallida, se paga igualmente una tarifa.
- _Diagrama adaptado de [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+
+_Diagrama adaptado de [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
La tarifa de gas tiene que pagarse en la moneda nativa de Ethereum, el ether (ETH). El precio del gas se suele expresar en gwei, el cual es una denominación del ETH. Cada gwei equivale a 1 billonésima fracción de ETH (0,000000001 ETH o 10-9 ETH).
Por ejemplo, en lugar de decir que su gas cuesta 0,000000001 ether, puede decir que su gas cuesta 1 gwei.
-La palabra «gwei» es una contracción de «giga-wei», que significa «mil millones de weis». Un gwei equivale a mil millones de weis. Wei (nombre acuñado en honor a [Wei Dai](https://wikipedia.org/wiki/Wei_Dai), el creador de [b-money](https://www.investopedia.com/terms/b/bmoney.asp)) es la unidad más pequeña de ETH.
+La palabra «gwei» es una contracción de «giga-wei», que significa «mil millones de weis». Un gwei equivale a mil millones de weis. El wei (llamado así por [Wei Dai](https://wikipedia.org/wiki/Wei_Dai), creador de [b-money](https://www.investopedia.com/terms/b/bmoney.asp)) es la unidad más pequeña de ETH.
## ¿Cómo se calculan las tarifas de gas? {#how-are-gas-fees-calculated}
Se puede establecer la cantidad de gas que está dispuesto a pagar cuando envíe una transacción. Al ofrecer una cierta cantidad de gas, está pujando para que su transacción se incluya en el siguiente bloque. Si su oferta es insignificante, los validadores estarán menos dispuestos a optar por incluir su transacción, lo que significa que su transacción tal vez se ejecute luego, o no se ejecute del todo. Si su oferta es demasiado elevada, tal vez desperdicie algo de ETH. Entonces, ¿cómo puede saber cuánto debe pagar?
-La cantidad total de gas que paga se divide entre dos componentes: la `tarifa base` y la `tarifa prioritaria` (propina).
+La cantidad total de gas que paga se divide en dos componentes: la `tarifa base` y la `tarifa de prioridad` (propina).
-La `tarifa base` la establece el protocolo, indicándole que al menos tiene que pagar esa cantidad para que su transacción se considere como válida. La `tarifa prioritaria` es la propina que le añade a la tarifa base para que los validadores vean de forma atractiva su transacción y acaben por incluirla en el siguiente bloque.
+La `tarifa base` la establece el protocolo; debe pagar al menos esta cantidad para que su transacción se considere válida. La `tarifa de prioridad` es una propina que se añade a la tarifa base para que su transacción resulte atractiva para los validadores, de modo que la elijan para incluirla en el siguiente bloque.
-Una transacción que solo pague la `tarifa base` es técnicamente válida, pero es improbable que se incluya, ya que el validador no ve ningún incentivo para escogerla por encima de cualquier otra transacción. La `tarifa` «correcta» prioritaria viene determinada por el uso de la red en el momento de enviar la transacción: si hay mucha demanda, entonces debería pensar en establecer una `tarifa` prioritaria más alta, pero si hay poca demanda, puede pagar menos.
+Una transacción que solo paga la `tarifa base` es técnicamente válida, pero es poco probable que se incluya porque no ofrece ningún incentivo a los validadores para que la elijan por encima de cualquier otra transacción. La tarifa de `prioridad` «correcta» se determina por el uso de la red en el momento en que envía su transacción; si hay mucha demanda, es posible que tenga que establecer una tarifa de `prioridad` más alta, pero cuando hay menos demanda, puede pagar menos.
Por ejemplo, digamos que Jordan tiene que pagarle 1 ETH a Taylor. Una transferencia de ETH requiere 21.000 unidades de gas, y la tarifa base es 10 gwei. Jordan incluye una propina de 2 gwei.
@@ -42,44 +44,44 @@ La tarifa total equivale a:
`unidades de gas usadas * (tarifa básica + tarifa por prioridad)`
-donde el valor de la `tarifa base` viene establecido por el protocolo y el valor de la `tarifa prioritaria` la establece el propio usuario como propina para el validador.
+donde la `tarifa base` es un valor establecido por el protocolo y la `tarifa de prioridad` es un valor que establece el usuario como propina para el validador.
-es decir: `21.000 * (10 + 2) = 252.000 gwei` (0,000252 ETH).
+p. ej., `21.000 * (10 + 2) = 252.000 gwei` (0,000252 ETH).
Cuando Jordan envía el dinero, se deducirán 1,00231 ETH de la cuenta de Jordan. A Taylor se le abonarán 1,0000 ETH. El validador recibe una propina de 0,000042 ETH. La `tarifa base` de 0,00021 ETH se consume.
### Tarifa base {#base-fee}
-Cada bloque tiene una tarifa base que funciona como precio de reserva. Para que se pueda incluir en un bloque, el precio por gas ofrecido debe ser por lo menos igual a la tarifa base. La tarifa base se calcula independientemente del bloque actual y viene a su vez determinada por los bloques anteriores a este, lo cual hace que las tarifas por transacción sean más predecibles para los usuarios. Cuando se crea el bloque, esta **tarifa base se «consume»**, es decir, se elimina de la circulación.
+Cada bloque tiene una tarifa base que funciona como precio de reserva. Para que se pueda incluir en un bloque, el precio por gas ofrecido debe ser por lo menos igual a la tarifa base. La tarifa base se calcula independientemente del bloque actual y, en su lugar, se determina por los bloques anteriores a este, lo que hace que las comisiones por transacción sean más predecibles para los usuarios. Cuando se crea el bloque, esta **tarifa base se «consume»**, eliminándola de la circulación.
-La tarifa base se calcula mediante una fórmula que compara el tamaño del bloque anterior (la cantidad de gas usado para todas las transacciones) con el tamaño esperado. La tarifa base aumentará un máximo de 12,5 % por bloque si se supera el tamaño esperado del mismo. Este crecimiento exponencial hace que no sea económicamente rentable que el tamaño de los bloques permanezca elevado indefinidamente.
+La tarifa base se calcula mediante una fórmula que compara el tamaño del bloque anterior (la cantidad de gas utilizada para todas las transacciones) con el tamaño objetivo (la mitad del límite de gas). La tarifa base aumentará o disminuirá un máximo del 12,5 % por bloque si el tamaño del bloque objetivo está por encima o por debajo del objetivo, respectivamente. Este crecimiento exponencial hace que no sea económicamente rentable que el tamaño de los bloques permanezca elevado indefinidamente.
| Número de bloque | Gas incluido | Incremento de la tarifa | Tarifa de base actual |
-| ---------------- | ------------:| -----------------------:| ---------------------:|
-| 1 | 15 M | 0 % | 100 gwei |
-| 2 | 30 M | 0 % | 100 gwei |
-| 3 | 30 M | 12,5 % | 112,5 gwei |
-| 4 | 30 M | 12,5 % | 126,6 gwei |
-| 5 | 30 M | 12,5 % | 142,4 gwei |
-| 6 | 30 M | 12,5 % | 160,2 gwei |
-| 7 | 30 M | 12,5 % | 180,2 gwei |
-| 8 | 30 M | 12,5 % | 202,7 gwei |
-
-Siguiendo la tabla anterior, para crear una transacción en el bloque número 9, una cartera informará al usuario con certeza de que la **tarifa de base máxima** que se añadirá al siguiente bloque es la `tarifa de base corriente * 112,5 %` o `202,7 gwei * 112,5 % = 228,1 gwei`.
+| ---------------- | -----------: | ----------------------: | --------------------: |
+| 1 | 18M | 0 % | 100 gwei |
+| 2 | 36M | 0 % | 100 gwei |
+| 3 | 36M | 12,5 % | 112,5 gwei |
+| 4 | 36M | 12,5 % | 126,6 gwei |
+| 5 | 36M | 12,5 % | 142,4 gwei |
+| 6 | 36M | 12,5 % | 160,2 gwei |
+| 7 | 36M | 12,5 % | 180,2 gwei |
+| 8 | 36M | 12,5 % | 202,7 gwei |
+
+En la tabla anterior, se muestra un ejemplo que utiliza 36 millones como límite de gas. Siguiendo este ejemplo, para crear una transacción en el bloque número 9, una billetera le informará al usuario con certeza de que la **tarifa base máxima** que se añadirá al siguiente bloque es `tarifa base actual * 112,5 %` o `202,7 gwei * 112,5 % = 228,1 gwei`.
También cabe saber que es improbable que veamos un pico de incremento de bloques llenos, debido a la velocidad con que la tarifa base aumenta antes de que este se llene.
-| Número de bloque | Gas incluido | Incremento de comisión | Comisión base actual |
-| ---------------- | ------------:| ----------------------:| --------------------:|
-| 30 | 30 M | 12,5 % | 2.705,6 gwei |
-| ... | ... | 12,5 % | ... |
-| 50 | 30 M | 12,5 % | 28.531,3 gwei |
-| ... | ... | 12,5 % | ... |
-| 100 | 30 M | 12,5 % | 10.302.608,6 gwei |
+| Número de bloque | Gas incluido | Incremento de la tarifa | Tarifa de base actual |
+| --------------------------------------------------- | --------------------------------------------------: | ----------------------: | --------------------------------------------------: |
+| 30 | 36M | 12,5 % | 2.705,6 gwei |
+| ... | ... | 12,5 % | ... |
+| 50 | 36M | 12,5 % | 28.531,3 gwei |
+| ... | ... | 12,5 % | ... |
+| 100 | 36M | 12,5 % | 10.302.608,6 gwei |
-### Tarifa prioritaria (propinas) {#priority-fee}
+### Tarifa de prioridad (propinas) {#priority-fee}
-La tarifa prioritaria (propina) incentiva al validador a incluir una transacción en el bloque. Sin propinas, los validadores encontrarían económicamente viable el minar bloques vacíos, dado que ellos recibirían la misma recompensa por bloque. Una pequeña propina le daría un incentivo mínimo al validador para que incluya una transacción. Para que una transacción se ejecute de forma preferencial por encima de otra transacción en el mismo bloque, se puede añadir una propina alta para superar las ofertas de las demás transacciones.
+La tarifa de prioridad (propina) incentiva a los validadores a maximizar el número de transacciones en un bloque, limitado únicamente por el límite de gas del bloque. Sin propinas, un validador racional podría incluir menos transacciones, o incluso ninguna, sin ninguna penalización directa de la capa de ejecución o de la capa de consenso, ya que las recompensas de staking son independientes de la cantidad de transacciones que haya en un bloque. Además, las propinas permiten a los usuarios superar las ofertas de otros por la prioridad dentro del mismo bloque, lo que en la práctica indica urgencia.
### Tarifa máxima {#maxfee}
@@ -87,52 +89,66 @@ Para ejecutar una transacción en la red, los usuarios pueden especificar la má
### Tamaño del bloque {#block-size}
-Cada bloque tiene un tamaño esperado de 30 millones de gas, pero el tamaño de los bloques aumentará o disminuirá de acuerdo con la demanda de la red, hasta alcanzar el límite por bloque de 60 millones de gas (el doble del tamaño esperado del bloque). El protocolo alcanza un tamaño de equilibrio del bloque en torno a 15 millones de media, a través del proceso de _«tâtonnement»_ (o tanteo). Esto significa que si el tamaño del bloque es mayor que el esperado, el protocolo aumentará la tarifa de base para el siguiente bloque. De manera similar, el protocolo disminuirá la tarifa de base si el tamaño del bloque es menor que el tamaño esperado. La cantidad que se toma de referencia para ajustar la tarifa de base es proporcional a la diferencia entre el tamaño del bloque actual y el tamaño esperado. [Más información sobre bloques](/developers/docs/blocks/).
+Cada bloque tiene un tamaño objetivo de la mitad del límite de gas actual, pero el tamaño de los bloques aumentará o disminuirá en función de la demanda de la red, hasta que se alcance el límite del bloque (2 veces el tamaño del bloque objetivo). El protocolo alcanza un tamaño de bloque promedio de equilibrio en el objetivo a través del proceso de _tâtonnement_. Esto significa que si el tamaño del bloque es mayor que el esperado, el protocolo aumentará la tarifa de base para el siguiente bloque. De manera similar, el protocolo disminuirá la tarifa de base si el tamaño del bloque es menor que el tamaño esperado.
-### Cómo calcular las tarifas de gas en la práctica {#calculating-fees-in-practice}
+La cantidad que se toma de referencia para ajustar la tarifa de base es proporcional a la diferencia entre el tamaño del bloque actual y el tamaño esperado. Se trata de un cálculo lineal que va desde -12,5 % para un bloque vacío, 0 % en el tamaño objetivo, hasta +12,5 % para un bloque que alcanza el límite de gas. El límite de gas puede fluctuar con el tiempo en función de las señales de los validadores, así como a través de las actualizaciones de la red. Puede [ver los cambios en el límite de gas a lo largo del tiempo aquí](https://eth.blockscout.com/stats/averageGasLimit?interval=threeMonths).
+
+[Más información sobre los bloques](/developers/docs/blocks/)
+
+### Cálculo de las tarifas de gas en la práctica {#calculating-fees-in-practice}
Puede declarar explícitamente cuánto está dispuesto a pagar para hacer que su transacción se ejecute. Sin embargo, la mayoría de las carteras establecerán automáticamente una tarifa de transacción recomendada (tarifa básica + tarifa por prioridad recomendada) para solventar la complejidad de la transacción.
## ¿Por qué existen comisiones de gas? {#why-do-gas-fees-exist}
-En resumen, las comisiones de gas ayudan a mantener la red de Ethereum segura. Al requerir una tarifa para cada cálculo computacional ejecutado en la red, evitamos que algunas personas envíen correo basura a la red. Para prevenir bucles infinitos provocados o accidentales u otro despilfarro informático en el código, cada transacción tiene que establecer un límite de cuántos pasos informáticos de ejecución de código puede utilizar. La unidad fundamental del cálculo computacional es el gas.
+En resumen, las comisiones de gas ayudan a mantener la red de Ethereum segura. Al requerir una tarifa para cada cálculo computacional ejecutado en la red, evitamos que algunas personas envíen correo basura a la red. Para prevenir bucles infinitos provocados o accidentales
+u otro despilfarro informático en el código, cada transacción
+tiene que establecer un límite de cuántos pasos informáticos de ejecución
+de código puede utilizar. La unidad fundamental del cálculo computacional es el gas.
-Aunque una transacción incluye un límite, cualquier gas no utilizado en una transacción se devuelve al usuario (o sea, `tarifa máxima: (tarifa de base + prop)` se devuelve).
+Aunque una transacción incluye un límite, el gas que no se usa en una transacción se devuelve al usuario (p. ej., se devuelve `tarifa máxima - (tarifa base + propina)`).
- _Diagrama adaptado de [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+
+_Diagrama adaptado de [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
## ¿Cuál es el límite del gas? {#what-is-gas-limit}
-El límite del gas se refiere a la cantidad máxima de gas que esté dispuesto a que se consuma en una transacción. Las transacciones más complicadas que implican [contratos inteligentes](/developers/docs/smart-contracts/) requieren más trabajo informático, por eso comportan un límite de gas más alto que un pago sencillo. Una transferencia estándar de ETH requiere un límite de gas de 21.000 unidades de gas.
+El límite del gas se refiere a la cantidad máxima de gas que esté dispuesto a que se consuma en una transacción. Las transacciones más complicadas que involucran [contratos inteligentes](/developers/docs/smart-contracts/) requieren más trabajo computacional, por lo que necesitan un límite de gas mayor que un simple pago. Una transferencia estándar de ETH requiere un límite de gas de 21.000 unidades de gas.
-Por ejemplo, si se pone un límite de gas de 50.000 para una simple transferencia ETH, la EVM consumiría 21.000 y recuperaría los 29.000. Sin embargo, si especifica un límite de gas muy bajo, por ejemplo, un límite de gas de 20.000 para una transacción sencilla de ETH, la EVM consumirá sus 20.000 unidades de gas para intentar completar la transacción, pero no se completará. La EVM entonces revierte cualquier cambio, pero dado que el validador ya se hizo con 20.000 unidades de gas por su trabajo, el gas se consume.
+Por ejemplo, si se pone un límite de gas de 50.000 para una simple transferencia ETH, la EVM consumiría 21.000 y recuperaría los 29.000. Sin embargo, si especifica muy poco gas, por ejemplo, un límite de gas de 20.000 para una simple transferencia de ETH, la transacción fallará durante la fase de validación. Se rechazará antes de incluirse en un bloque y no se consumirá gas. Por otro lado, si la transacción se queda sin gas durante la ejecución (p. ej., un contrato inteligente usa todo el gas en la mitad del proceso), la EVM revertirá cualquier cambio, pero aun así se consumirá el gas proporcionado debido al trabajo realizado.
## ¿Por qué las comisiones de gas son tan elevadas? {#why-can-gas-fees-get-so-high}
Las altas comisiones de gas se deben a la popularidad de Ethereum. Si hay mucha demanda, los usuarios deberán ofertar propinas más altas para tratar de superar las transacciones de los otros usuarios. Una propina más alta puede hacer que aumente la probabilidad de que su transacción llegue al siguiente bloque. Asimismo, los contratos inteligentes de aplicaciones más complejos realizarán más operaciones para poder soportar sus funciones, con el consiguiente e ingente consumo de gas.
-## Iniciativas para reducir los costes del gas {#initiatives-to-reduce-gas-costs}
+## Iniciativas para reducir los costes de gas {#initiatives-to-reduce-gas-costs}
+
+Las [actualizaciones de escalabilidad](/roadmap/) de Ethereum deberían, en última instancia, resolver algunos de los problemas de las tarifas de gas, lo que a su vez permitirá que la plataforma procese miles de transacciones por segundo y escale a nivel mundial.
-Las [mejoras de escalabilidad](/roadmap/) de Ethereum deberían abordar algunos de los problemas de las comisiones de gas, lo que a su vez permitiría que la plataforma procesase miles de transacciones por segundo y a escala global.
+La escalabilidad de la capa 2 es una iniciativa primordial para mejorar de manera considerable los costes del gas, la experiencia de usuario y la escalabilidad.
-La escalabilidad de la capa 2 es una iniciativa primordial para mejorar de manera considerable los costes del gas, la experiencia de usuario y la escalabilidad. [Más información sobre la escalabilidad de la capa 2](/developers/docs/scaling/#layer-2-scaling).
+[Más información sobre la escalabilidad de capa 2](/developers/docs/scaling/#layer-2-scaling)
-## Vigilar las tarifas de gas {#monitoring-gas-fees}
+## Monitorización de las tarifas de gas {#monitoring-gas-fees}
Si desea supervisar las tarifas de gas, para poder enviar sus ETH por menos, puede usar diferentes herramientas, como:
-- [Etherscan](https://etherscan.io/gastracker) _Calculador de precios del gas_
-- [Calculadora de gas de ETH de Blocknative](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm)_Extensión de Chrome para el cálculo de gas compatible con ambas transacciones tradicionales Tipo 0 y transacciones EIP-1559 Tipo 2._
-- [Calculadora de tarifas de gas Cryptoneur](https://www.cryptoneur.xyz/gas-fees-calculator) _Calcule las tarifas de gas en su moneda local para diferentes tipos de transacciones en la red principal, Arbitrum y Polygon._
+- [Etherscan](https://etherscan.io/gastracker) _Estimador del precio del gas de las transacciones_
+- [Blockscout](https://eth.blockscout.com/gas-tracker) _Estimador del precio del gas de las transacciones de código abierto_
+- [ETH Gas Tracker](https://www.ethgastracker.com/) _Monitorice y siga los precios del gas de Ethereum y de la L2 para reducir las comisiones por transacción y ahorrar dinero_
+- [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm) _Extensión de Chrome para la estimación de gas que admite tanto las transacciones heredadas de tipo 0 como las transacciones de tipo 2 EIP-1559._
+- [Cryptoneur Gas Fees Calculator](https://www.cryptoneur.xyz/gas-fees-calculator) _Calcule las tarifas de gas en su moneda local para diferentes tipos de transacción en la red principal, Arbitrum y Polygon._
## Herramientas relacionadas {#related-tools}
-- [Plataforma de gas de bloques nativos](https://www.blocknative.com/gas)_Estimación de gas API alimentada por la plataforma de datos de la zona de espera mundial de Blocknative_
+- [Blocknative's Gas Platform](https://www.blocknative.com/gas) _API de estimación de gas impulsada por la plataforma de datos de la zona de espera global de Blocknative_
+- [Gas Network](https://gas.network) Oráculos de gas en cadena. Soporte para más de 35 cadenas.
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Explicación sobre el gas de Ethereum](https://defiprime.com/gas)
-- [Reducir el consumo de gas de sus contratos inteligentes](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a)
-- [Estrategias de optimización de gas para desarrolladores](https://www.alchemy.com/overviews/solidity-gas-optimization)
-- [Documentacion sobre EIP-1559](https://eips.ethereum.org/EIPS/eip-1559).
-- [Recursos Tim Beiko's EIP-1559](https://hackmd.io/@timbeiko/1559-resources).
+- [Explicación del gas de Ethereum](https://defiprime.com/gas)
+- [Cómo reducir el consumo de gas de sus contratos inteligentes](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a)
+- [Estrategias de optimización del gas para desarrolladores](https://www.alchemy.com/overviews/solidity-gas-optimization)
+- [Documentación de la EIP-1559](https://eips.ethereum.org/EIPS/eip-1559).
+- [Recursos sobre la EIP-1559 de Tim Beiko](https://hackmd.io/@timbeiko/1559-resources)
+- [EIP-1559: Separando mecanismos de memes](https://web.archive.org/web/20241126205908/https://research.2077.xyz/eip-1559-separating-mechanisms-from-memes)
From 2ac48d6636f8776ffd5fbc30e48a0839f27e5ab1 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:06 -0300
Subject: [PATCH 235/589] update(i18n):
public/content/translations/es/developers/docs/networking-layer/index.md
---
.../developers/docs/networking-layer/index.md | 62 +++++++++----------
1 file changed, 31 insertions(+), 31 deletions(-)
diff --git a/public/content/translations/es/developers/docs/networking-layer/index.md b/public/content/translations/es/developers/docs/networking-layer/index.md
index 92b3dd0fbd8..e45c894a1fb 100644
--- a/public/content/translations/es/developers/docs/networking-layer/index.md
+++ b/public/content/translations/es/developers/docs/networking-layer/index.md
@@ -1,5 +1,5 @@
---
-title: "Ninguna llave\nBloque el texto del elemento (div)\nXpath: /div[@id=front-matter]/ul/li[1]/div[2]"
+title: Capa de red
description: Introducción a la capa de red de Ethereum.
lang: es
sidebarDepth: 2
@@ -13,9 +13,9 @@ Los clientes de ejecución gossipean transacciones sobre la red peer-to-peer de
## Requisitos previos {#prerequisites}
-Tener algún conocimiento sobre [nodos y clientes](/developers/docs/nodes-and-clients/) de Ethereum será útil para entender esta página.
+Tener algún conocimiento sobre los [nodos y clientes](/developers/docs/nodes-and-clients/) de Ethereum será útil para entender esta página.
-## Capa de ejecución {#execution-layer}
+## La capa de ejecución {#execution-layer}
Los protocolos de red de la capa de ejecución se dividen en dos pilas:
@@ -27,25 +27,25 @@ Ambas pilas funcionan en paralelo. La pila de descubrimiento alimenta nuevos par
### Descubrimiento {#discovery}
-El descubrimiento es el proceso de encontrar otros nodos en la red. Esto se inicia utilizando un pequeño conjunto de nodos de arranque o bootnodes (nodos cuyas direcciones están [incrustadas](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go) en el cliente para que se puedan encontrar inmediatamente y conectar el cliente a los pares). Estos nodos de arranque solo existen para presentar un nuevo nodo a un conjunto de pares: este es su único propósito, no participan en tareas normales del cliente, como la sincronización de la cadena, y solo se utilizan la primera vez que se activa un cliente.
+El descubrimiento es el proceso de encontrar otros nodos en la red. Esto se inicia utilizando un pequeño conjunto de bootnodes (nodos cuyas direcciones están [codificadas de forma rígida](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go) en el cliente para que se puedan encontrar inmediatamente y conectar el cliente a sus pares). Estos nodos de arranque solo existen para presentar un nuevo nodo a un conjunto de pares: este es su único propósito, no participan en tareas normales del cliente, como la sincronización de la cadena, y solo se utilizan la primera vez que se activa un cliente.
-El protocolo utilizado para las interacciones nodo-nodo de arranque es una forma modificada de [Kademlia](https://medium.com/coinmonks/a-brief-overview-of-kademlia-and-its-use-in-various-decentralized-platforms-da08a7f72b8f), que utiliza una [tabla de hash distribuida](https://en.wikipedia.org/wiki/Distributed_hash_table) para compartir listas de nodos. Cada nodo tiene una versión de esta tabla que contiene la información necesaria para conectarse a sus pares más cercanos. Esta "cercanía" no es geográfica; la distancia se define por la similitud del ID del nodo. La tabla de cada nodo se actualiza regularmente como una función de seguridad. Por ejemplo, en el [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5), los nodos del protocolo de descubrimiento también pueden enviar "anuncios" que muestran los subprotocolos que el cliente admite, lo que permite a los pares negociar sobre los protocolos que ambos pueden usar para comunicarse.
+El protocolo utilizado para las interacciones nodo-bootnode es una forma modificada de [Kademlia](https://medium.com/coinmonks/a-brief-overview-of-kademlia-and-its-use-in-various-decentralized-platforms-da08a7f72b8f) que utiliza una [tabla de hash distribuida](https://en.wikipedia.org/wiki/Distributed_hash_table) para compartir listas de nodos. Cada nodo tiene una versión de esta tabla que contiene la información necesaria para conectarse a sus pares más cercanos. Esta "cercanía" no es geográfica; la distancia se define por la similitud del ID del nodo. La tabla de cada nodo se actualiza regularmente como una función de seguridad. Por ejemplo, en el protocolo de descubrimiento [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5), los nodos también pueden enviar "anuncios" que muestran los subprotocolos que admite el cliente, lo que permite a los pares negociar los protocolos que ambos pueden usar para comunicarse.
-El descubrimiento comienza con un juego de PING-PONG. Un PING-PONG exitoso "vincula" el nuevo nodo a un nodo de arranque. El mensaje inicial que alerta a un nodo de arranque de la existencia de un nuevo nodo que entra en la red es un `PING`. Este `PING` incluye información con hash sobre el nuevo nodo, el nodo de arranque y una marca de tiempo de caducidad. El nodo de arranque recibe el `PING` y devuelve un `PONG` que contiene el hash `PING`. Si los hashes `PING` y `PONG` coinciden, entonces se verifica la conexión entre el nuevo nodo y el nodo de arranque, y se dice que están "vinculados".
+El descubrimiento comienza con un juego de PING-PONG. Un PING-PONG exitoso "vincula" el nuevo nodo a un nodo de arranque. El mensaje inicial que alerta a un bootnode sobre la existencia de un nuevo nodo que entra en la red es un `PING`. Este `PING` incluye información con hash sobre el nuevo nodo, el bootnode y una marca de tiempo de caducidad. El bootnode recibe el `PING` y devuelve un `PONG` que contiene el hash del `PING`. Si los hashes de `PING` y `PONG` coinciden, se verifica la conexión entre el nuevo nodo y el bootnode y se considera que están "vinculados".
-Una vez unidos, el nuevo nodo puede enviar una solicitud `FIND-NEIGHBOURS` al nodo de arranque. Los datos devueltos por el nodo de arranque incluyen una lista de pares a los que el nuevo nodo puede conectarse. Si los nodos no se vinculan, la solicitud `FIND-NEIGHBOURS` fallará, por lo que el nuevo nodo no podrá entrar en la red.
+Una vez vinculados, el nuevo nodo puede enviar una solicitud `FIND-NEIGHBOURS` al bootnode. Los datos devueltos por el nodo de arranque incluyen una lista de pares a los que el nuevo nodo puede conectarse. Si los nodos no están vinculados, la solicitud `FIND-NEIGHBOURS` fallará, por lo que el nuevo nodo no podrá entrar en la red.
Una vez que el nuevo nodo recibe una lista de vecinos del nodo de arranque, comienza un intercambio PING-PONG con cada uno de ellos. Los PING-PONG exitosos vinculan el nuevo nodo con sus vecinos, lo que permite el intercambio de mensajes.
```
-start client --> connect to bootnode --> bond to bootnode --> find neighbours --> bond to neighbours
+iniciar cliente --> conectar al bootnode --> vincular al bootnode --> encontrar vecinos --> vincular a los vecinos
```
-Los clientes de ejecución están utilizando actualmente el protocolo de descubrimiento [Discv4](https://github.com/ethereum/devp2p/blob/master/discv4.md), y hay una iniciativa activa para migrar al protocolo [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5).
+Los clientes de ejecución utilizan actualmente el protocolo de descubrimiento [Discv4](https://github.com/ethereum/devp2p/blob/master/discv4.md) y hay un esfuerzo activo para migrar al protocolo [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5).
-#### ENR: Registros de nodos de Ethereum {#enr}
+#### ENR: Registros de Nodos de Ethereum {#enr}
-El [Registro de nodos de Ethereum (ENR)](/developers/docs/networking-layer/network-addresses/) es un objeto que contiene tres elementos básicos: una firma (hash del contenido del registro hecho de acuerdo con algún esquema de identidad acordado), un número de secuencia que rastrea los cambios en el registro y una lista arbitraria de pares clave:valor. Este es un formato a prueba de futuro que permite un intercambio más fácil de información de identificación entre nuevos pares y es el formato preferido de [dirección de red](/developers/docs/networking-layer/network-addresses) para los nodos de Ethereum.
+El [Registro de Nodo de Ethereum (ENR)](/developers/docs/networking-layer/network-addresses/) es un objeto que contiene tres elementos básicos: una firma (un hash del contenido del registro creado de acuerdo con algún esquema de identidad acordado), un número de secuencia que rastrea los cambios en el registro y una lista arbitraria de pares clave-valor. Este es un formato preparado para el futuro que permite un intercambio más fácil de información de identificación entre pares nuevos y es el formato de [dirección de red](/developers/docs/networking-layer/network-addresses) preferido para los nodos de Ethereum.
#### ¿Por qué el descubrimiento se basa en UDP? {#why-udp}
@@ -53,7 +53,7 @@ UDP no admite ninguna comprobación de errores, el reenvío de paquetes fallidos
### DevP2P {#devp2p}
-DevP2P es en sí mismo toda una pila de protocolos que Ethereum implementa para establecer y mantener la red entre pares. Después de que nuevos nodos entran en la red, sus interacciones se rigen por protocolos de la pila [DevP2P](https://github.com/ethereum/devp2p). Todos estos se basan en TCP e incluyen el protocolo de transporte RLPx, el protocolo de cable y varios subprotocolos. [RLPx](https://github.com/ethereum/devp2p/blob/master/rlpx.md) es el protocolo que rige el inicio, la autenticación y el mantenimiento de sesiones entre nodos. RLPx codifica los mensajes utilizando RLP (Prefijo de Longitud Recursiva), que es un método muy eficiente en el uso de espacio para codificar los datos en una estructura mínima para el envío entre nodos.
+DevP2P es en sí mismo toda una pila de protocolos que Ethereum implementa para establecer y mantener la red entre pares. Después de que los nuevos nodos entren en la red, sus interacciones se rigen por los protocolos de la pila [DevP2P](https://github.com/ethereum/devp2p). Todos estos se basan en TCP e incluyen el protocolo de transporte RLPx, el protocolo de cable y varios subprotocolos. [RLPx](https://github.com/ethereum/devp2p/blob/master/rlpx.md) es el protocolo que rige el inicio, la autenticación y el mantenimiento de las sesiones entre nodos. RLPx codifica los mensajes utilizando RLP (Prefijo de Longitud Recursiva), que es un método muy eficiente en el uso de espacio para codificar los datos en una estructura mínima para el envío entre nodos.
Una sesión RLPx entre dos nodos comienza con un apretón de manos criptográfico inicial. Esto implica que el nodo envíe un mensaje de autenticación, que luego es verificado por el par. Una vez que la verificación es exitosa, el par genera un mensaje de confirmación de autenticación para mostrar al nodo iniciador. Este es un proceso de intercambio de claves que permite a los nodos comunicarse de forma privada y segura. Un apretón de manos criptográfico exitoso hace que ambos nodos envíen un mensaje de "hola" el uno al otro "en el cable". El protocolo de cable se inicia mediante un intercambio exitoso de mensajes de saludo.
@@ -71,21 +71,21 @@ Junto con los mensajes de saludo, el protocolo de cable también puede enviar un
### Subprotocolos {#sub-protocols}
-#### Protocolo de cable {#wire-protocol}
+#### Protocolo de conexión {#wire-protocol}
-Una vez que los pares están conectados y se ha iniciado una sesión RLPx, el protocolo de cable define cómo se comunican los pares. Inicialmente, el protocolo de cable definía tres tareas principales: sincronización de la cadena, propagación de bloques e intercambio de transacciones. Sin embargo, una vez que Ethereum cambió a la prueba de participación, la propagación de bloques y la sincronización de cadenas se convirtieron en parte de la capa de consenso. El intercambio de transacciones todavía está en el ámbito de los clientes de ejecución. El intercambio de transacciones se refiere al intercambio de transacciones pendientes entre nodos para que los constructores de bloques puedan seleccionar algunas de ellas para su inclusión en el siguiente bloque. Hay información detallada sobre estas tareas [aquí](https://github.com/ethereum/devp2p/blob/master/caps/eth.md). Los clientes que admiten estos subprotocolos los exponen a través del [JSON-RPC](/developers/docs/apis/json-rpc/).
+Una vez que los pares están conectados y se ha iniciado una sesión RLPx, el protocolo de cable define cómo se comunican los pares. Inicialmente, el protocolo de cable definía tres tareas principales: sincronización de la cadena, propagación de bloques e intercambio de transacciones. Sin embargo, una vez que Ethereum cambió a la prueba de participación, la propagación de bloques y la sincronización de cadenas se convirtieron en parte de la capa de consenso. El intercambio de transacciones todavía está en el ámbito de los clientes de ejecución. El intercambio de transacciones se refiere al intercambio de transacciones pendientes entre nodos para que los constructores de bloques puedan seleccionar algunas de ellas para su inclusión en el siguiente bloque. Hay información detallada sobre estas tareas disponible [aquí](https://github.com/ethereum/devp2p/blob/master/caps/eth.md). Los clientes que admiten estos subprotocolos los exponen a través de la [JSON-RPC](/developers/docs/apis/json-rpc/).
-#### les (subprotocolo ligero de ethereum) {#les}
+#### les (subprotocolo ligero de Ethereum) {#les}
-Este es un protocolo mínimo para sincronizar clientes ligeros. Tradicionalmente, este protocolo rara vez se ha utilizado porque los nodos completos deben servir datos a los clientes ligeros sin ser incentivados. El comportamiento predeterminado de los clientes de ejecución no es servir datos de clientes ligeros sobre les. Hay más información disponible en la [especificación de Ies](https://github.com/ethereum/devp2p/blob/master/caps/les.md).
+Este es un protocolo mínimo para sincronizar clientes ligeros. Tradicionalmente, este protocolo rara vez se ha utilizado porque los nodos completos deben servir datos a los clientes ligeros sin ser incentivados. El comportamiento predeterminado de los clientes de ejecución no es servir datos de clientes ligeros sobre les. Hay más información disponible en la [especificación](https://github.com/ethereum/devp2p/blob/master/caps/les.md) de les.
#### Snap {#snap}
-El [protocolo snap](https://github.com/ethereum/devp2p/blob/master/caps/snap.md#ethereum-snapshot-protocol-snap) es una extensión opcional que permite a los pares intercambiar instantáneas de estados recientes, lo que les permite verificar los datos de la cuenta y el almacenamiento sin tener que descargar nodos intermedios de Merkle trie.
+El [protocolo snap](https://github.com/ethereum/devp2p/blob/master/caps/snap.md#ethereum-snapshot-protocol-snap) es una extensión opcional que permite a los pares intercambiar instantáneas de estados recientes, lo que les permite verificar los datos de la cuenta y del almacenamiento sin tener que descargar los nodos intermedios del trie de Merkle.
#### Wit (protocolo testigo) {#wit}
-El [protocolo testigo](https://github.com/ethereum/devp2p/blob/master/caps/wit.md#ethereum-witness-protocol-wit) es una extensión opcional que permite el intercambio de testigos de estado entre pares, ayudando a sincronizar los clientes con la punta de la cadena.
+El [protocolo testigo](https://github.com/ethereum/devp2p/blob/master/caps/wit.md#ethereum-witness-protocol-wit) es una extensión opcional que permite el intercambio de testigos de estado entre pares, lo que ayuda a sincronizar a los clientes con la punta de la cadena.
#### Whisper {#whisper}
@@ -97,11 +97,11 @@ Los clientes de consenso participan en una red separada entre pares con una espe
### Descubrimiento {#consensus-discovery}
-Al igual que los clientes de ejecución, los clientes de consenso usan [discv5](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#the-discovery-domain-discv5) sobre UDP para encontrar pares. La implementación de la capa de consenso de discv5 difiere de la de los clientes de ejecución solo en que incluye un adaptador que conecta el discov5 a una pila [libP2P](https://libp2p.io/), dejando obsoleto DevP2P. Las sesiones RLPx de la capa de ejecución están obsoletas en favor del apretón de manos del canal seguro de ruido de libP2P.
+Al igual que los clientes de ejecución, los clientes de consenso utilizan [discv5](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#the-discovery-domain-discv5) sobre UDP para encontrar pares. La implementación de la capa de consenso de discv5 difiere de la de los clientes de ejecución únicamente en que incluye un adaptador que conecta discv5 en una pila [libP2P](https://libp2p.io/), dejando obsoleto DevP2P. Las sesiones RLPx de la capa de ejecución están obsoletas en favor del apretón de manos del canal seguro de ruido de libP2P.
### ENR {#consensus-enr}
-El registro de nodos de Ethereum (ENR) de los nodos de consenso incluye la clave pública del nodo, la dirección IP, los puertos UDP y TCP y dos campos específicos de consenso: el bitfield de la subred de certificación y la clave `eth2`. El primero hace que sea más fácil para los nodos encontrar pares que participen en subredes de gossiping de certificación específicas. La clave `eth2` contiene información sobre qué versión de bifurcación de Ethereum está usando el nodo, lo que garantiza que los pares se conecten al Ethereum correcto.
+El ENR para los nodos de consenso incluye la clave pública del nodo, la dirección IP, los puertos UDP y TCP, y dos campos específicos del consenso: el campo de bits de la subred de atestación y la clave `eth2`. El primero hace que sea más fácil para los nodos encontrar pares que participen en subredes de gossiping de certificación específicas. La clave `eth2` contiene información sobre qué versión de la bifurcación de Ethereum está usando el nodo, lo que garantiza que los pares se conecten al Ethereum correcto.
### libP2P {#libp2p}
@@ -109,7 +109,7 @@ La pila libP2P admite todas las comunicaciones después del descubrimiento. Los
### Gossip {#gossip}
-El dominio de gossip incluye toda la información que tiene que difundirse rápidamente por toda la red. Esto incluye bloques de baliza (beacon), pruebas, certificaciones, salidas y salidas forzadas (slashings). Esto se transmite utilizando libP2P gossipsub v1 y se basa en varios metadatos que se almacenan localmente en cada nodo, incluido el tamaño máximo de las cargas útiles de gossip para recibir y transmitir. La información detallada sobre el dominio de gossip está disponible [aquí](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#the-gossip-domain-gossipsub).
+El dominio de gossip incluye toda la información que tiene que difundirse rápidamente por toda la red. Esto incluye bloques de baliza (beacon), pruebas, certificaciones, salidas y salidas forzadas (slashings). Esto se transmite utilizando libP2P gossipsub v1 y se basa en varios metadatos que se almacenan localmente en cada nodo, incluido el tamaño máximo de las cargas útiles de gossip para recibir y transmitir. Puede encontrar información detallada sobre el dominio gossip [aquí](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#the-gossip-domain-gossipsub).
### Solicitud-respuesta {#request-response}
@@ -121,23 +121,23 @@ SSZ significa serialización simple. Utiliza desplazamientos fijos que facilitan
## Conexión de los clientes de ejecución y de consenso {#connecting-clients}
-Tanto los clientes de consenso como los de ejecución se ejecutan en paralelo. Necesitan estar conectados para que el cliente de consenso pueda proporcionar instrucciones al cliente de ejecución, y el cliente de ejecución pueda pasar paquetes de transacciones al cliente de consenso para incluirlos en los bloques de Baliza. La comunicación entre los dos clientes se puede lograr utilizando una conexión local de RPC. Una API conocida como [Engine-API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) define las instrucciones enviadas entre los dos clientes. Dado que ambos clientes están detrás de una sola identidad de red, comparten un ENR (registro de nodos de Ethereum) que contiene una clave separada para cada cliente (clave eth1 y clave eth2).
+Tanto los clientes de consenso como los de ejecución se ejecutan en paralelo. Necesitan estar conectados para que el cliente de consenso pueda proporcionar instrucciones al cliente de ejecución, y el cliente de ejecución pueda pasar paquetes de transacciones al cliente de consenso para incluirlos en los bloques de Baliza. La comunicación entre los dos clientes se puede lograr utilizando una conexión local de RPC. Una API conocida como la ['Engine-API'](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) define las instrucciones enviadas entre los dos clientes. Dado que ambos clientes están detrás de una sola identidad de red, comparten un ENR (registro de nodos de Ethereum) que contiene una clave separada para cada cliente (clave eth1 y clave eth2).
A continuación se muestra un resumen del flujo de control, con la pila de red relevante entre paréntesis.
-### Cuando el cliente de consenso no es productor de bloques: {#when-consensus-client-is-not-block-producer}
+### Cuando el cliente de consenso no es un productor de bloques: {#when-consensus-client-is-not-block-producer}
- El cliente de consenso recibe un bloque a través del protocolo de gossiping de bloques (p2p de consenso)
-- El cliente de consenso valida previamente el bloque, es decir, se asegura de que llegue de un remitente válido con los metadatos correctos
+- El cliente de consenso prevalida el bloque, es decir, se asegura de que llegó de un remitente válido con los metadatos correctos.
- Las transacciones en el bloque se envían a la capa de ejecución como una carga útil de ejecución (conexión local de RPC)
-- La capa de ejecución ejecuta las transacciones y valida el estado en el encabezado del bloque (es decir, comprueba la coincidencia de los hashes)
+- La capa de ejecución ejecuta las transacciones y valida el estado en el encabezado del bloque (es decir, comprueba que los hashes coincidan).
- La capa de ejecución pasa los datos de validación a la capa de consenso, bloque que ahora se considera validado (conexión local RPC)
- La capa de consenso añade un bloque a la cabeza de su propia cadena de bloques y hace una verificación, transmitiendo la verificación en la red (p2p de consenso)
-### Cuando el cliente de consenso es productor de bloques: {#when-consensus-client-is-block-producer}
+### Cuando el cliente de consenso es un productor de bloques: {#when-consensus-client-is-block-producer}
- El cliente de consenso recibe un aviso de que es el próximo productor de bloques (p2p de consenso)
-- La capa de consenso invoca el método `create block` en el cliente de ejecución (RPC local)
+- La capa de consenso llama al método `create block` en el cliente de ejecución (RPC local).
- La capa de ejecución accede a la zona de espera (mempool) completada por el protocolo de gossiping de la transacción (p2p de ejecución)
- El cliente de ejecución agrupa las transacciones en un bloque, ejecuta las transacciones y genera un hash de bloques
- El cliente de consenso agarra las transacciones y el hash de bloques del cliente de ejecución y los agrega al bloque de baliza (RPC local)
@@ -146,10 +146,10 @@ A continuación se muestra un resumen del flujo de control, con la pila de red r
Una vez que el bloque ha sido certificado por suficientes validadores, se añade a la cabeza de la cadena, se justifica y finalmente se finaliza.
- 
+\n
-Esquema de capa de red para clientes de consenso y ejecución, de [ethresear.ch](https://ethresear.ch/t/eth1-eth2-client-relationship/7248)
+Esquema de la capa de red para los clientes de consenso y de ejecución, de [ethresear.ch](https://ethresear.ch/t/eth1-eth2-client-relationship/7248)
-## Más información {#further-reading}
+## Lecturas recomendadas {#further-reading}
-[DevP2P](https://github.com/ethereum/devp2p) [LibP2p](https://github.com/libp2p/specs) [Especificaciones de red de capa de consenso](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#enr-structure) [kademlia a discv5](https://vac.dev/kademlia-to-discv5) [kademlia paper](https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf) [Introducción a Ethereum p2p](https://p2p.paris/en/talks/intro-ethereum-networking/) [Relación eth1/eth2](http://ethresear.ch/t/eth1-eth2-client-relationship/7248) [Video con detalles sobre La fusión y el cliente eth2](https://www.youtube.com/watch?v=zNIrIninMgg)
+[DevP2P](https://github.com/ethereum/devp2p)\n[LibP2p](https://github.com/libp2p/specs)\n[Especificaciones de red de la capa de consenso](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#enr-structure)\n[De Kademlia a discv5](https://vac.dev/kademlia-to-discv5)\n[Documento de Kademlia](https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf)\n[Introducción a P2P de Ethereum](https://p2p.paris/en/talks/intro-ethereum-networking/)\n[Relación entre ETH1 y ETH2](http://ethresear.ch/t/eth1-eth2-client-relationship/7248)\n[Vídeo con detalles de la Fusión y del cliente de eth2](https://www.youtube.com/watch?v=zNIrIninMgg)
From 35e5762e200d64fc58db62f0e2325bdb52ac9d23 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:08 -0300
Subject: [PATCH 236/589] update(i18n):
public/content/translations/es/roadmap/danksharding/index.md
---
.../es/roadmap/danksharding/index.md | 46 +++++++++----------
1 file changed, 23 insertions(+), 23 deletions(-)
diff --git a/public/content/translations/es/roadmap/danksharding/index.md b/public/content/translations/es/roadmap/danksharding/index.md
index ba68e6f711f..d43e879b12a 100644
--- a/public/content/translations/es/roadmap/danksharding/index.md
+++ b/public/content/translations/es/roadmap/danksharding/index.md
@@ -1,6 +1,6 @@
---
title: Danksharding
-description: 'Más información sobre ProtoDanksharding y Danksharding: dos mejoras secuenciales para escalar Ethereum.'
+description: "Más información sobre ProtoDanksharding y Danksharding: dos mejoras secuenciales para escalar Ethereum."
lang: es
summaryPoints:
- Danksharding es una actualización multifase para mejorar la escalabilidad y capacidad de Ethereum.
@@ -11,49 +11,49 @@ summaryPoints:
# Danksharding {#danksharding}
-Gracias a **Danksharding** (es decir, a la fragmentación), Ethereum se convierte en una cadena de bloques realmente escalable, aunque para llegar aquí, hay varias actualizaciones de protocolo necesarias. **ProtoDanksharding** es un paso intermedio en el camino. Ambas tienen como objetivo hacer que las transacciones a la capa 2 sean tan baratas como sea posible para los usuarios y deben escalar Ethereum a >100.000 transacciones por segundo.
+**Danksharding** es la forma en que Ethereum se convertirá en una cadena de bloques realmente escalable, pero se necesitan varias actualizaciones del protocolo para conseguirlo. **Proto-Danksharding** es un paso intermedio en el camino. Ambos tienen como objetivo que las transacciones en la capa 2 sean lo más baratas posible para los usuarios y deberían escalar Ethereum a más de 100.000 transacciones por segundo.
## ¿Qué es ProtoDanksharding? {#what-is-protodanksharding}
-ProtoDanksharding, también conocido como [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), es una manera para que los [rollups](/layer-2/#rollups) añadan datos más baratos a los bloques. El nombre proviene de los investigadores que propusieron la idea: Protolambda y Dankrad Feist. Historicamente los rollups se habían visto limitados en la medida en que pueden abaratar las transacciones de los usuarios por el hecho de que publican sus transacciones en `CALLDATA`.
+Proto-Danksharding, también conocido como [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), es una forma de que los [rollups](/layer-2/#rollups) añadan datos más baratos a los bloques. El nombre proviene de los investigadores que propusieron la idea: Protolambda y Dankrad Feist. Históricamente, los rollups han tenido una capacidad limitada para abaratar las transacciones de los usuarios debido a que publican sus transacciones en `CALLDATA`.
-Esto es caro porque es procesado por todos los nodos de Ethereum y reside en la cadena para siempre, aunque los rollups solo necesiten los datos durante un breve periodo de tiempo. ProtoDanksharding introduce los blobs de datos que se pueden enviar y adjuntar a los bloques. Los datos de estos blobs no son accesibles para la EVM y se eliminan automáticamente después un periodo de tiempo fijo (establecido en 4096 épocas en el momento de redactar este documento, es decir, unos 18 días). Esto significa que los rollups pueden enviar datos de forma más barata y trasladar el ahorro a los usuarios finales en la forma de transacciones más baratas.
+Es cara, porque la procesn todos los nodos de Ethereum y reside en la cadena para siempre, aunque los rollups solo necesiten los datos durante un breve periodo de tiempo. ProtoDanksharding introduce los blobs de datos que se pueden enviar y adjuntar a los bloques. Los datos de estos blobs no son accesibles para la EVM y se eliminan automáticamente después un periodo de tiempo fijo (establecido en 4096 épocas en el momento de redactar este documento, es decir, unos 18 días). Esto significa que los rollups pueden enviar datos de forma más barata y trasladar el ahorro a los usuarios finales en la forma de transacciones más baratas.
-
+
-Las acumulaciones son una forma de escalar en Ethereum por lotes de transacciones fuera de la cadena y después publicar los resultados en Ethereum. Una acumulación se compone básicamente de dos partes: de datos y de verificación de la ejecución. Los datos son la secuencia total de transacciones que procesa una acumulación para producir un cambio en el estado publicado por Ethereum. La verificación de ejecución es la reejecución de esas transacciones por algún actor honesto (un «proveedor») para asegurarse de que el cambio del estado propuesto sea correcto. Para realizar la comprobación de ejecución, los datos de la transacción deben estar disponibles durante el tiempo suficiente para que cualquiera puede descargarlos y verificarlos. Esto significa que el proveedor puede identificar y cuestionar cualquier mala conducta del secuenciador de acumulaciones. Sin embargo, no tiene que estar dispobible para siempre.
+Los rollups son una manera de escalar Ethereum agrupando transacciones fuera de cadena y luego publicando los resultados en Ethereum. Una acumulación se compone básicamente de dos partes: de datos y de verificación de la ejecución. Los datos son la secuencia total de transacciones que procesa una acumulación para producir un cambio en el estado publicado por Ethereum. La verificación de ejecución es la reejecución de esas transacciones por algún actor honesto (un «proveedor») para asegurarse de que el cambio del estado propuesto sea correcto. Para realizar la comprobación de ejecución, los datos de la transacción deben estar disponibles durante el tiempo suficiente para que cualquiera puede descargarlos y verificarlos. Esto significa que el proveedor puede identificar y cuestionar cualquier mala conducta del secuenciador de acumulaciones. Sin embargo, no tiene que estar dispobible para siempre.
-
+
-Las acumulaciones envían compromisos a sus datos de transacción en cadena y también hacen que los datos estén disponibles en masas de datos. Esto significa que los proveedores pueden verificar que los compromisos son válidos y desafiar los datos que ellos creen que sea incorrectos. Dentro del nodo, el cliente de consenso mantiene las masas de datos. Los clientes de consenso certifican que ellos han visto los datos y que se están propagando por la red. Si los datos se mantuvieran para siempre, estos clientes se saturarían y sus requisitos para ejecutar los nodos serían ingentes. Por otro lado, los datos de eliminan de manera automática del nodo cada 18 días. Las certificaciones del cliente de consenso demuestran que los proveedores tenían suficientes oportunidades de comprobar los datos. Operadores de acumulaciones, usuarios y otros operadores pueden almacenar los datos actuales fuera de la cadena.
+Los rollups publican compromisos con sus datos de transacciones en cadena y también hacen que los datos estén disponibles en grandes objetos binarios. Esto significa que los proveedores pueden verificar que los compromisos son válidos y desafiar los datos que ellos creen que sea incorrectos. Dentro del nodo, el cliente de consenso mantiene las masas de datos. Los clientes de consenso certifican que ellos han visto los datos y que se están propagando por la red. Si los datos se mantuvieran para siempre, estos clientes se saturarían y sus requisitos para ejecutar los nodos serían ingentes. Por otro lado, los datos de eliminan de manera automática del nodo cada 18 días. Las certificaciones del cliente de consenso demuestran que los proveedores tenían suficientes oportunidades de comprobar los datos. L operadores de rollups, usuarios u otros actores pueden almacenar datos en sí fuera de cadena.
### ¿Cómo se verifican los datos de una masa? {#how-are-blobs-verified}
-Los rollups publican las transacciones que ejecutan en blobs de datos. También publican un "compromiso" con los datos. Para ello, ajustan una función polinómica a los datos. Esta función puede evaluarse en varios puntos. Por ejemplo, si definimos una función extremadamente simple `f(x) = 2x-1`, podemos evaluarla por `x = 1`, `x = 2`, `x = 3` dando los resultados `1, 3, 5`. Un probador aplica la misma función a los datos y la evalúa en los mismos puntos. Si cambian los datos originales, la función no será idéntica y, por lo tanto, tampoco lo serán los valores evaluados en cada punto. En realidad, el compromiso y la prueba son más complicados, porque están involucrados en funciones criptográficas.
+Los rollups publican las transacciones que ejecutan en blobs de datos. También publican un "compromiso" con los datos. Para ello, ajustan una función polinómica a los datos. Esta función puede evaluarse en varios puntos. Por ejemplo, si definimos una función extremadamente simple `f(x) = 2x-1`, podemos evaluar esta función para `x = 1`, `x = 2` y `x = 3`, lo que da los resultados `1, 3, 5`. Un probador aplica la misma función a los datos y la evalúa en los mismos puntos. Si cambian los datos originales, la función no será idéntica y, por lo tanto, tampoco lo serán los valores evaluados en cada punto. En realidad, el compromiso y la prueba son más complicados, porque están involucrados en funciones criptográficas.
### ¿Qué es KZG? {#what-is-kzg}
-KZG son las siglas de Kate-Zaverucha-Goldberg, los nombres de los tres [ autores originales](https://link.springer.com/chapter/10.1007/978-3-642-17373-8_11) de un esquema que reduce un blob de datos a un pequeño ["compromiso" criptográfico](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html). El blob de datos enviado por un rollup tiene que verificarse para garantizar que el rollup no se esté comportando indebidamente. Esto incluye un probador que reejecute las transacciones en el blob para verificar la fiabilidad del compromiso. Es igual que la forma en que los clientes de ejecución comprueban la validez de las transacciones de Ethereum en la capa 1 usando pruebas de Merkle. KZG es una prueba alternativa que ajusta una ecuación polinómica a los datos. El compromiso evalúa el polinomio en algunos puntos de datos secretos. Un probador encajaría el mismo polinomio en los datos y lo evaluaría en los mismos valores, asegurándose de que el resultado sea el mismo. Es una forma de comprobar que los datos son compatibles con las técnicas de conocimiento cero usadas por algunos rollups y eventualmente otras partes del protocolo de Ethereum.
+KZG son las siglas de Kate-Zaverucha-Goldberg, los nombres de los tres [autores originales](https://link.springer.com/chapter/10.1007/978-3-642-17373-8_11) de un esquema que reduce un blob de datos a un pequeño [«compromiso» criptográfico](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html). El blob de datos enviado por un rollup tiene que verificarse para garantizar que el rollup no se esté comportando indebidamente. Esto incluye un probador que reejecute las transacciones en el blob para verificar la fiabilidad del compromiso. Es igual que la forma en que los clientes de ejecución comprueban la validez de las transacciones de Ethereum en la capa 1 usando pruebas de Merkle. KZG es una prueba alternativa que ajusta una ecuación polinómica a los datos. El compromiso evalúa el polinomio en algunos puntos de datos secretos. Un probador encajaría el mismo polinomio en los datos y lo evaluaría en los mismos valores, asegurándose de que el resultado sea el mismo. Es una forma de comprobar que los datos son compatibles con las técnicas de conocimiento cero usadas por algunos rollups y eventualmente otras partes del protocolo de Ethereum.
### ¿Qué fue la ceremonia KZG? {#what-is-a-kzg-ceremony}
-La ceremonia KZG fue una forma para que la gente de toda la comunidad de Ethereum generara de manera colectiva una cadena secreta aleatoria de números que se puedieran utilizar para verificar algunos datos. Es muy importante que esta cadena de números no sea conocida y no pueda ser recreada por nadie. Para asegurarse eso, cada persona que participó en la ceremonia recibió una cadena del participante anterior. Luego, creó algunos valores aleatorios nuevos (p. ej. permitiendo que su navegador midiera los movimientos del mouse) y los mezcló con el valor anterior. Después envió el valor al siguiente participante y lo destruyó de su máquina local. Mientras una persona en la ceremonia haya actuado con honestidad, el valor final será desconocido para un atacante.
+La ceremonia KZG fue una forma para que la gente de toda la comunidad de Ethereum generara de manera colectiva una cadena secreta aleatoria de números que se puedieran utilizar para verificar algunos datos. Es muy importante que esta cadena de números no sea conocida y no pueda ser recreada por nadie. Para asegurarse eso, cada persona que participó en la ceremonia recibió una cadena del participante anterior. Luego, crearon algunos valores aleatorios nuevos (por ejemplo, permitiendo que su navegador midiera el movimiento de su mouse) y los mezclaron con el valor anterior. Después envió el valor al siguiente participante y lo destruyó de su máquina local. Mientras una persona en la ceremonia haya actuado con honestidad, el valor final será desconocido para un atacante.
La ceremonia KZG EIP-4844 estuvo abierta al público y decenas de miles de personas participaron para añadir su propia entropía (aleatoriedad). En total, hubo más de 140.000 contribuciones, lo que la convierte en la ceremonia más grande del mundo de su tipo. Para frustrar la ceremonia, el 100 % de los participantes tendría que actuar de mala fe. Desde la perspectiva de los participantes, si saben que se han comportado mal, no necesitan confiar en nadie más, porque saben que aseguraron la ceremonia (cumplieron individualmente con el requisito de 1-de-N participantes honestos).
-
+
-Cuando un rollup publica datos en un blob, proporciona un "compromiso" que publica en la cadena. Este compromiso es el resultado de evaluar un ajuste polinómico a los datos en ciertos puntos. Estos puntos vienen definidos por los números aleatorios generados en la ceremonia KZG. Los demostradores pueden luego evaluar el polinómico en los mismos puntos para comprobar los datos; si llegan a los mismos valores, entonces los datos son correctos.
+Cuando un rollup publica datos en un blob (gran objeto binario), adquiere el «compromiso» de que se publicará en cadena. Este compromiso es el resultado de evaluar un ajuste polinómico a los datos en ciertos puntos. Estos puntos vienen definidos por los números aleatorios generados en la ceremonia KZG. Los demostradores pueden luego evaluar el polinómico en los mismos puntos para comprobar los datos; si llegan a los mismos valores, entonces los datos son correctos.
-
+
-Si alguien conoce las ubicaciones aleatorias utilizadas para el compromiso, le resultará fácil generar un nuevo polinómico que se ajuste a esos puntos específicos (es decir, una «colisión»). Esto significa que podrían añadir o eliminar datos de la masa y aún así proporcionar una prueba válida. Para evitarlo, en lugar de proporcionar a los demostradores las ubicaciones secretas reales, en realidad reciben las ubicaciones recogidas en una «caja negra» criptográfica utilizando curvas elípticas. Estas mezclan efectivamente los valores de tal manera que los valores originales no se pueden invertir, pero con un álgebra ingeniosa, los demostradores y verificadores aún pueden evaluar polinómicos en los puntos que representan.
+Si alguien conoce las ubicaciones aleatorias utilizadas para el compromiso, le resultará fácil generar un nuevo polinomio que se ajuste a esos puntos específicos (es decir, una «colisión»). Esto significa que podrían añadir o eliminar datos de la masa y aún así proporcionar una prueba válida. Para evitarlo, en lugar de proporcionar a los demostradores las ubicaciones secretas reales, en realidad reciben las ubicaciones recogidas en una «caja negra» criptográfica utilizando curvas elípticas. Estas mezclan efectivamente los valores de tal manera que los valores originales no se pueden invertir, pero con un álgebra ingeniosa, los demostradores y verificadores aún pueden evaluar polinómicos en los puntos que representan.
@@ -67,13 +67,13 @@ Danksharding es la máxima expresión de la escalabilidad de las acumulaciones,
La forma en que esto funciona es expandiendo los blobs adjuntos a los bloques de seis (6) en Proto-Danksharding a 64 en Danksharding completo. El resto de los cambios necesarios son todas actualizaciones en la forma en que operan los clientes de consenso para permitirles gestionar las grandes masas. La hoja de ruta ya incluye varias de estas modificaciones con otros objetivos independientes del Danksharding. Por ejemplo, Danksharding requiere que se haya implementado la separación entre el generador de propuestas y el constructor de bloques. Esta es una actualización que separa las tareas de construir bloques y proponer bloques entre diferentes validadores. De manera similar, el Danksharding requiere el muestreo de disponibilidad de datos, aunque también es necesario para el desarrollo de clientes muy ligeros que no almacenen mucha información histórica («clientes sin estado»).
-
+
La separación entre generador de propuestas y constructor de bloques es necesaria para evitar que los validadores individuales tengan que generar compromisos y pruebas costosas para 32 Mb de masas de datos. Esto ejercería demasiada presión sobre los participantes domésticos y les obligaría a invertir en hardware más potente, lo que perjudica la descentralización. En su lugar, los constructores de bloques especializados asumen la responsabilidad de este costoso trabajo computacional. Luego, ponen sus bloques a disposición de los proponentes de bloques para su difusión. El proponente de bloques simplemente elige el bloque que sea más rentable. Cualquiera puede verificar las masas de datos de manera económica y rápida, lo que significa que cualquier validador normal puede comprobar que los constructores de bloques se están comportando de manera honesta. Esto permite procesar grandes masas sin sacrificar la descentralización. Los constructores de bloques que se comporten de manera incorrecta simplemente podrían ser expulsados de la red con un recorte como penalización, y otros ocuparían su lugar debido a que la construcción de bloques es una actividad rentable.
-
+
El muestreo de disponibilidad de datos es necesario para que los validadores verifiquen de manera rápida y eficiente las masas de datos. Mediante el muestreo de disponibilidad de datos, los validadores pueden estar muy seguros de que las masas de datos están disponibles y se ha comprometido correctamente. Cada validador puede muestrear aleatoriamente solo algunos puntos de datos y crear una prueba, lo que significa que ningún validador tiene que verificar la masa entera. Si falta algún dato, se identifica rápidamente y la masa se rechazará.
@@ -83,13 +83,13 @@ El muestreo de disponibilidad de datos es necesario para que los validadores ver
La implementación completa del Danksharding está aún fuera de escena. Mientras tanto, la ceremonia KZG ha concluido con más de 140.000 contribuciones, y el [EIP](https://eips.ethereum.org/EIPS/eip-4844) para Proto-Danksharding ha madurado. Esta propuesta ha sido completamente implementada en todas las redes de prueba, y se activó en la Red principal con la actualización de red Cancun-Deneb ("Dencun") en marzo de 2024.
-### Más información {#further-reading}
+### Lecturas adicionales {#further-reading}
-- [Notas sobre el ProtoDanksharding](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq), _Vitalik Buterin_
+- [Notas sobre Proto-Danksharding](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq) - _Vitalik Buterin_
- [Notas de Dankrad sobre Danksharding](https://notes.ethereum.org/@dankrad/new_sharding)
-- [Dankrad, Proto y Vitalik comentan el Danksharding](https://www.youtube.com/watch?v=N5p0TB77flM)
+- [Dankrad, Proto y Vitalik debaten sobre Danksharding](https://www.youtube.com/watch?v=N5p0TB77flM)
- [La ceremonia KZG](https://ceremony.ethereum.org/)
-- [La charla en Devcon de Carl Beekhuizen en configuraciones de confianza](https://archive.devcon.org/archive/watch/6/the-kzg-ceremony-or-how-i-learnt-to-stop-worrying-and-love-trusted-setups/?tab=YouTube)
-- [Más información sobre el muestreo de disponibilidad para masas de datos](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling)
-- [Dankrad Feist sobre compromisos y pruebas en KZG](https://youtu.be/8L2C6RDMV9Q)
+- [Charla de Carl Beekhuizen en la Devcon sobre las configuraciones de confianza](https://archive.devcon.org/archive/watch/6/the-kzg-ceremony-or-how-i-learnt-to-stop-worrying-and-love-trusted-setups/?tab=YouTube)
+- [Más información sobre el muestreo de disponibilidad de datos para blobs](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling)
+- [Dankrad Feist sobre los compromisos y las pruebas KZG](https://youtu.be/8L2C6RDMV9Q)
- [Compromisos polinómicos KZG](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html)
From 4074598bfb5b6d445bee526b6afcf205e2d20c89 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:09 -0300
Subject: [PATCH 237/589] update(i18n):
public/content/translations/es/roadmap/statelessness/index.md
---
.../es/roadmap/statelessness/index.md | 49 ++++++++++---------
1 file changed, 25 insertions(+), 24 deletions(-)
diff --git a/public/content/translations/es/roadmap/statelessness/index.md b/public/content/translations/es/roadmap/statelessness/index.md
index 163b4341471..63b12f5d4f1 100644
--- a/public/content/translations/es/roadmap/statelessness/index.md
+++ b/public/content/translations/es/roadmap/statelessness/index.md
@@ -4,7 +4,7 @@ description: Explicación del historial de vencimiento y sin estado de Ethereum
lang: es
---
-# Vencimiento del estado, sin estado e historial {#statelessness}
+# Sin estado, vencimiento del estado y vencimiento del historial {#statelessness}
La capacidad de ejecutar nodos de Ethereum en un hardware modesto es fundamental para una verdadera descentralización. Esto se debe a que ejecutar un nodo da a los usuarios la capacidad de verificar la información mediante la realización de comprobaciones criptográficas de forma independiente en lugar de confiar en un tercero para que les facilite los datos. Ejecutar un nodo permite a los usuarios enviar transacciones directamente a la red entre pares de Ethereum en lugar de tener que confiar en un intermediario. La descentralización no es posible si estos beneficios solo están al alcance de aquellos usuarios que pueden disponer de costoso hardware. En su lugar, los nodos deberían poder ejecutarse con requisitos de procesamiento y memoria extremadamente modestos, para que puedan ejecutarse en teléfonos móviles, microordenadores o de fondo en un ordenador doméstico.
@@ -16,9 +16,9 @@ Los discos duros más baratos se pueden usar para almacenar datos más antiguos,
Hay varias formas de reducir la cantidad de datos que cada nodo tiene que almacenar, cada una de las cuales requiere que el protocolo principal de Ethereum se actualice en un grado diferente:
-- **Expiración del historial**: permite que los nodos eliminen los datos de estado más antiguos que X bloques, pero no cambia la forma en que el cliente de Ethereum gestiona los datos de estado.
-- **El vencimiento del estado**: permite que los datos de estado que no se utilizan con frecuencia se vuelvan inactivos. Los clientes pueden ignorar los datos inactivos hasta que se resuciten.
-- **Sin estado débil**: solo los productores de bloques necesitan acceso a datos de estado completo, otros nodos pueden verificar bloques sin una base de datos de estado local.
+- **Vencimiento del historial**: permite que los nodos eliminen los datos de estado de más de X bloques de antigüedad, pero no cambia la forma en que los clientes de Ethereum gestionan los datos de estado.
+- **Vencimiento del estado**: permite que los datos de estado que no se usan con frecuencia se vuelvan inactivos. Los clientes pueden ignorar los datos inactivos hasta que se resuciten.
+- **Sin estado débil**: solo los productores de bloques necesitan acceso a los datos de estado completos; otros nodos pueden verificar bloques sin una base de datos de estado local.
- **Sin estado fuerte**: ningún nodo necesita acceso a los datos completos del estado.
## Vencimiento de datos {#data-expiry}
@@ -39,12 +39,12 @@ Esta actualización no cambia fundamentalmente la forma en que los nodos de Ethe
Por vencimiento del estado se refiere a la eliminación del estado de los nodos individuales si no se ha accedido recientemente. Hay varias formas en las que esto podría implementarse, incluyendo:
-- **Vencimiento por alquiler**: cobrar un «alquiler» a las cuentas y que venzan cuando su alquiler llegue a cero.
-- **Vencimiento por tiempo**: hacer que las cuentas estén inactivas si no hay lectura/escritura en esa cuenta durante algún tiempo.
+- **Vencimiento por alquiler**: cobrar un "alquiler" a las cuentas y hacer que venzan cuando su alquiler llegue a cero.
+- **Vencimiento por tiempo**: hacer que las cuentas estén inactivas si no hay operaciones de lectura/escritura en esa cuenta durante un cierto tiempo.
El vencimiento por alquiler podría ser un alquiler directo que se cobra a las cuentas para mantenerlas en la base de datos de estado activo. La expiración por tiempo podría ser por cuenta regresiva desde la última interacción de la cuenta, o podría ser el vencimiento periódico de todas las cuentas. También podría haber mecanismos que combinen elementos de los modelos basados en el tiempo y el alquiler, por ejemplo, las cuentas individuales persisten en el estado activo si pagan una pequeña tarifa antes del vencimiento en función del tiempo. Con el vencimiento del estado, es importante tener en cuenta que el estado inactivo **no se elimina**, solo se almacena por separado del estado activo. El estado inactivo puede resucirarse en el estado activo.
-Una forma factible de hacerlo sería probablemente tener un árbol de estado para períodos de tiempo específicos (tal vez ~1 año). Cada vez que comienza un nuevo período, también lo hace un árbol estatal completamente nuevo. Solo se puede modificar el árbol de estado actual, todos los demás son inmutables. Solo se espera que los nodos de Ethereum retengan el árbol de estado actual y el siguiente más reciente. Esto requiere una forma de marcar la hora de una dirección con el período en el que existe. Hay [varias formas posibles](https://ethereum-magicians.org/t/types-of-resurrection-metadata-in-state-expiry/6607) de hacerlo, pero la opción principal requiere que [las direcciones se alarguen](https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485) para acomodar la información adicional con el beneficio añadido de que las direcciones más largas son mucho más seguras. El elemento de la hoja de ruta que hace esto se llama [extensión de espacio de direcciones](https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485).
+Una forma factible de hacerlo sería probablemente tener un árbol de estado para períodos de tiempo específicos (tal vez ~1 año). Cada vez que comienza un nuevo período, también lo hace un árbol de estado completamente nuevo. Solo se puede modificar el árbol de estado actual, todos los demás son inmutables. Solo se espera que los nodos de Ethereum retengan el árbol de estado actual y el siguiente más reciente. Esto requiere una forma de marcar la hora de una dirección con el período en el que existe. Hay [varias formas posibles](https://ethereum-magicians.org/t/types-of-resurrection-metadata-in-state-expiry/6607) de hacer esto, pero la opción principal requiere que [se alarguen las direcciones](https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485) para dar cabida a la información adicional, con el beneficio añadido de que las direcciones más largas son mucho más seguras. El elemento de la hoja de ruta que hace esto se llama [extensión del espacio de direcciones](https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485).
De manera similar al vencimiento del historial, la responsabilidad del vencimiento del estado para almacenar datos antiguos de estado se exime de los usuarios individuales y se delega a otras entidades, como proveedores centralizados, miembros de la comunidad altruistas o soluciones descentralizadas más futuristas, como Portal Network.
@@ -56,7 +56,7 @@ El término sin estado no es del todo preciso, ya que no significa que se elimin
- sincronización casi instantánea
- capacidad de validar bloques fuera de orden
-- nodos capaces de ejecutarse con requisitos de hardware muy bajos (por ejemplo, en teléfonos)
+- nodos capaces de ejecutarse con requisitos de hardware muy bajos (p. ej., en teléfonos)
- los nodos pueden ejecutarse en discos duros baratos porque no se requiere lectura/escritura de disco
- compatible con futuras actualizaciones de la criptografía de Ethereum
@@ -64,16 +64,15 @@ El término sin estado no es del todo preciso, ya que no significa que se elimin
El sin estado débil implica cambios en la forma en que los nodos de Ethereum verifican los cambios de estado, pero no elimina por completo la necesidad de almacenamiento de estado en todos los nodos de la red. En cambio, la apátrida débil pone la responsabilidad del almacenamiento de estado en los proponentes de bloques, mientras que todos los demás nodos de la red verifican los bloques sin almacenar los datos de estado completos.
-**En un sin estado débil, proponer bloques requiere acceso a datos de estado completos, sin embargo verificar los bloques no requiere datos de estado.**
+**En la modalidad de sin estado débil, la proposición de bloques requiere acceso a los datos de estado completos, pero la verificación de bloques no requiere datos de estado.**
-Para que esto suceda, deben haberse implementado en los clientes de Ethereum los [árboles de Verkle](/roadmap/verkle-trees/). Los árboles de Verkle son una estructura de datos de sustitución para almacenar datos de estado de Ethereum que permiten que los «testigos» pequeños y de tamaño fijo de los datos se pasen entre pares y se utilicen para verificar bloques, en lugar de verificar bloques contra bases de datos locales. [La separación entre proponentes y constructores](/roadmap/pbs/) también es necesaria, porque esto permite que los constructores de bloques sean nodos especializados con hardware más potente, y esos son los que requieren acceso a los datos de estado completo.
+Para que esto suceda, los [árboles de Verkle](/roadmap/verkle-trees/) ya deben haberse implementado en los clientes de Ethereum. Los árboles de Verkle son una estructura de datos de sustitución para almacenar datos de estado de Ethereum que permiten que los «testigos» pequeños y de tamaño fijo de los datos se pasen entre pares y se utilicen para verificar bloques, en lugar de verificar bloques contra bases de datos locales. La [separación entre proponentes y constructores](/roadmap/pbs/) también es necesaria, porque permite que los constructores de bloques sean nodos especializados con hardware más potente, y esos son los que requieren acceso a los datos de estado completos.
-
+
El sin estado depende de que los constructores de bloques mantengan una copia de los datos del estado completos para que puedan generar testigos y que sirvan para verificar el bloque. Otros nodos no necesitan acceso a los datos del estado, toda la información necesaria para verificar el bloque está disponible en el testigo. Esto crea una situación en la que proponer un bloque es caro, pero verificar el bloque es barato, lo que implica que menos operadores ejecutarán un nodo de propuesta de bloque. Sin embargo, la descentralización de los proponentes de bloques no es crítica, siempre y cuando el mayor número posible de participantes puedan verificar de forma independiente que los bloques que proponen son válidos.
-Más información sobre las notas de Dankrad.
-
+Leer más en las notas de Dankrad
Los proponentes de bloques utilizan los datos del estado para crear «testigos», el conjunto mínimo de datos que prueban los valores del estado que las transacciones están cambiando en un bloque. Otros validadores no mantienen el estado, solo almacenan la raíz del estado (un hash de todo el estado). Reciben un bloqueo y un testigo y los usan para actualizar su raíz de estado. Esto hace que un nodo de validación sea extremadamente ligero.
@@ -87,17 +86,19 @@ Los investigadores han estudiado el sin estado fuerte, aunque actualmente no se
## Progreso actual {#current-progress}
-El sin estado débil, el vencimiento del historial y el vencimiento del estado están en la fase de investigación y se espera que se envíen dentro de varios años. No hay garantía de que todas estas propuestas se implementen, por ejemplo, si el vencimiento del estado se implementa primero, es posible que ya no sea necesario implementar también el vencimiento del historial. También hay otros elementos de la hoja de ruta, como los [árboles de Verkle](/roadmap/verkle-trees) y [la separación entre proponentes y constructores](/roadmap/pbs) que deben completarse primero.
+El sin estado débil, el vencimiento del historial y el vencimiento del estado están en la fase de investigación y se espera que se envíen dentro de varios años. No hay garantía de que todas estas propuestas se implementen, por ejemplo, si el vencimiento del estado se implementa primero, es posible que ya no sea necesario implementar también el vencimiento del historial. También hay otros elementos de la hoja de ruta, como los [árboles de Verkle](/roadmap/verkle-trees/) y la [separación entre proponentes y constructores](/roadmap/pbs/), que deben completarse primero.
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Vitalik comenta el sin estado en AMA](https://www.reddit.com/r/ethereum/comments/o9s15i/impromptu_technical_ama_on_statelessness_and/)
+- [¿Qué es el Ethereum sin estado?](https://stateless.fyi/)
+- [AMA de Vitalik sobre el concepto «sin estado»](https://www.reddit.com/r/ethereum/comments/o9s15i/impromptu_technical_ama_on_statelessness_and/)
- [Una teoría de la gestión del tamaño del estado](https://hackmd.io/@vbuterin/state_size_management)
-- [Limitación del estado: resurrección-conflicto-minimizado](https://ethresear.ch/t/resurrection-conflict-minimized-state-bounding-take-2/8739)
-- [En rumbo hacia el sin estado y el vencimiento del estado](https://hackmd.io/@vbuterin/state_expiry_paths)
-- [Especificación EIP-4444](https://eips.ethereum.org/EIPS/eip-4444)
-- [Alex Stokes habla sobre EIP-4444](https://youtu.be/SfDC_qUZaos)
-- [¿Por qué es tan importante acabar sin estado?](https://dankradfeist.de/ethereum/2021/02/14/why-stateless.html)
-- [Las notas conceptuales originales del cliente sin estado](https://ethresear.ch/t/the-stateless-client-concept/172)
-- [Más información sobre el vencimiento del estado](https://hackmd.io/@vbuterin/state_size_management#A-more-moderate-solution-state-expiry)
-- [Aún más información sobre el vencimiento del estado](https://hackmd.io/@vbuterin/state_expiry_paths#Option-2-per-epoch-state-expiry)
+- [Resurrection-conflict-minimized state bounding](https://ethresear.ch/t/resurrection-conflict-minimized-state-bounding-take-2/8739)
+- [Caminos hacia el «sin estado» y el vencimiento del estado](https://hackmd.io/@vbuterin/state_expiry_paths)
+- [Especificación del EIP-4444](https://eips.ethereum.org/EIPS/eip-4444)
+- [Alex Stokes sobre el EIP-4444](https://youtu.be/SfDC_qUZaos)
+- [Por qué es tan importante adoptar el modelo «sin estado»](https://dankradfeist.de/ethereum/2021/02/14/why-stateless.html)
+- [Notas originales sobre el concepto de cliente sin estado](https://ethresear.ch/t/the-stateless-client-concept/172)
+- [Más sobre el vencimiento del estado](https://hackmd.io/@vbuterin/state_size_management#A-more-moderate-solution-state-expiry)
+- [Aún más sobre el vencimiento del estado](https://hackmd.io/@vbuterin/state_expiry_paths#Option-2-per-epoch-state-expiry)
+- [Página de información sobre el Ethereum sin estado](https://stateless.fyi)
From d55977b0ed634be0ff4f7c0a552450945ea9e919 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:11 -0300
Subject: [PATCH 238/589] update(i18n):
src/intl/es/page-energy-consumption.json
---
src/intl/es/page-energy-consumption.json | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 src/intl/es/page-energy-consumption.json
diff --git a/src/intl/es/page-energy-consumption.json b/src/intl/es/page-energy-consumption.json
new file mode 100644
index 00000000000..8121757166e
--- /dev/null
+++ b/src/intl/es/page-energy-consumption.json
@@ -0,0 +1,21 @@
+{
+ "adoption-chart-artists-label": "Artistas",
+ "adoption-chart-column-now-label": "Ahora",
+ "adoption-chart-companies-label": "Empresas",
+ "adoption-chart-developers-label": "Desarrolladores",
+ "adoption-chart-gamers-label": "Jugadores",
+ "adoption-chart-investors-label": "Inversores",
+ "adoption-chart-musicians-label": "Músicos",
+ "adoption-chart-refugees-label": "Refugiados",
+ "adoption-chart-writers-label": "Escritores",
+ "energy-consumption-chart-airbnb-label": "AirBnB",
+ "energy-consumption-chart-btc-pow-label": "PoW de BTC",
+ "energy-consumption-chart-eth-pos-label": "PoS de ETH",
+ "energy-consumption-chart-eth-pow-label": "PoW de ETH",
+ "energy-consumption-chart-gaming-us-label": "Juegos en Estados Unidos",
+ "energy-consumption-chart-global-data-centers-label": "Centros de datos globales",
+ "energy-consumption-chart-netflix-label": "Netflix",
+ "energy-consumption-chart-paypal-label": "PayPal",
+ "energy-consumption-gold-mining-cbeci-label": "Minería de oro",
+ "energy-consumption-chart-legend": "Consumo energético anual en TW/año"
+}
From fa6a21db206ba21a0b21ef64da7b64f5b567a06b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:13 -0300
Subject: [PATCH 239/589] update(i18n):
public/content/translations/es/community/get-involved/index.md
---
.../es/community/get-involved/index.md | 128 +++++++++---------
1 file changed, 64 insertions(+), 64 deletions(-)
diff --git a/public/content/translations/es/community/get-involved/index.md b/public/content/translations/es/community/get-involved/index.md
index 41c3f2cf618..ac72ef6b827 100644
--- a/public/content/translations/es/community/get-involved/index.md
+++ b/public/content/translations/es/community/get-involved/index.md
@@ -1,133 +1,133 @@
---
-title: '¿Cómo puedo participar?'
+title: ¿Cómo puedo involucrarme?
description: Cómo participar en la comunidad Ethereum.
lang: es
---
-# ¿Cómo puedo participar? {#get-involved}
+# ¿Cómo puedo involucrarme? Involúcrese {#get-involved}
La comunidad Ethereum incluye a personas de diferentes orígenes y habilidades. Desarrolladores, artistas, contables... hay muchas formas de involucrarse. He aquí una lista de sugerencias para ayudarle a empezar.
-Le sugerimos que comience enterándose de la misión y los valores de ethereum.org en nuestro [código de conducta](/community/code-of-conduct).
+Empiece por leer sobre la misión y los valores de ethereum.org en nuestro [código de conducta](/community/code-of-conduct).
-## Desarrolladores {#developers}
+## Desarrolladores {#developers}
- Aprenda y pruebe Ethereum en [ethereum.org/developers/](/developers/)
-- ¡Participe en un hackaton (o encuentro de programadores) [ETHGlobal](http://ethglobal.co/) cerca de donde viveo
-- Consulte [los proyectos relacionados con su área especialidad o el lenguaje de programación de su elección](/developers/docs/programming-languages/).
-- Vea o participe en las [Llamadas de la capa de consenso y ejecución](https://www.youtube.com/@EthereumProtocol/streams).
-- [Lista de deseos del Programa de apoyo al ecosistema](https://esp.ethereum.foundation/wishlist/): herramientas, documentación e infraestructura donde el Programa de apoyo al ecosistema de Ethereum está buscando activamente propuestas para becar.
-- [Web3Bridge](https://www.web3bridge.com/): únase a la iniciativa de la inspiradora comunidad web3 para buscar, formar y apoyar a cientos de desarrolladores y miembros de la comunidad en toda África.
-- Únase al [Discord de Investigación y Desarrollo de Eth](https://discord.com/invite/VmG7Uxc).
-- Únase al [Discord Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu).
+- ¡Asista a un hackatón de [ETHGlobal](http://ethglobal.co/) cerca de usted!
+- Consulte los [proyectos relacionados con su área de especialización o lenguaje de programación de su elección](/developers/docs/programming-languages/)
+- Vea o participe en las [llamadas de la capa de consenso y ejecución](https://www.youtube.com/@EthereumProtocol/streams)
+- [Lista de deseos del Programa de Apoyo al Ecosistema](https://esp.ethereum.foundation/wishlist/) - áreas de herramientas, documentación e infraestructura en las que el Programa de Apoyo al Ecosistema de Ethereum está buscando activamente solicitudes de subvenciones
+- [Web3Bridge](https://www.web3bridgeafrica.com): únase a la inspiradora comunidad web3 en su iniciativa para identificar, formar y apoyar a cientos de desarrolladores y miembros de la comunidad en toda África
+- Únase al [Discord de I+D de Eth](https://discord.com/invite/VmG7Uxc)
+- Únase al [Discord de Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu)
-## Investigadores y académicos {#researchers-and-academics}
+## Investigadores y académicos {#researchers-and-academics}
¿Domina las matemáticas, la criptografía o la economía? Puede interesarle alguno de los trabajos pioneros que se están haciendo dentro del ecosistema Ethereum:
-- Únase al [Discord de Investigación y Desarrollo de Eth](https://discord.com/invite/VmG7Uxc).
+- Únase al [Discord de I+D de Eth](https://discord.com/invite/VmG7Uxc)
- Escriba o revise una propuesta de mejora de Ethereum
- Escriba una propuesta de mejora de Ethereum (EIP)
- 1. Envíe su idea a [Ethereum Magicians](https://ethereum-magicians.org)
- 2. Lea [EIP-1](https://eips.ethereum.org/EIPS/eip-1) - **Sí, es _todo el documento_. **
- 3. Siga las indicaciones en EIP-1. Haga referencia a él mientras escribe su borrador.
- - Aprenda a convertirse en un [EIP Editor](https://eips.ethereum.org/EIPS/eip-5069)
- - ¡Puede revisar las EIP por pares desde ya mismo! Vea [abrir relaciones públicas con la etiqueta `e-review`](https://github.com/ethereum/EIPs/pulls?q=is%3Apr+is%3Aopen+label%3Ae-review). Proporcione comentarios técnicos con el enlace `discussion-to`.
- - Participe en [Gobernanza del EIP](https://github.com/ethereum-cat-herders/EIPIP)
- - Únase al [Discord Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu).
- - [Más información sobre las EIP](/eips/)
-- [Challenges.ethereum.org](https://challenges.ethereum.org/): una serie de recompensas de investigación de alto valor, donde puede ganar >100.000 USD.
-- [Ethresear.ch](https://ethresear.ch): el principal foro de Ethereum sobre la investigación y el foro más influyente del mundo en criptoeconomía.
-- [AMA investigación sobre Ethereum Foundation](https://old.reddit.com/r/ethereum/comments/vrx9xe/ama_we_are_ef_research_pt_8_07_july_2022): una sesión continua de preguntas y respuestas con investigadores. A medida que cada parte siguiente se vaya conociendo, cualquiera puede publicar preguntas.
-- [Lista de deseos del Programa de apoyo al ecosistema](https://esp.ethereum.foundation/wishlist/): áreas de investigación en las que el Programa de apoyo al ecosistema de Ethereum está buscando activamente solicitudes de becas.
-- [AllWalletDevs](https://allwallet.dev): un foro para que desarrolladores, diseñadores y usuarios interesados en Ethereum se reúnan periódicamente y debatan sobre billeteras.
+ 1. Envíe su idea en [Ethereum Magicians](https://ethereum-magicians.org)
+ 2. Lea el [EIP-1](https://eips.ethereum.org/EIPS/eip-1): **sí, ese es el documento _entero_.**
+ 3. Siga las instrucciones del EIP-1. Haga referencia a él mientras escribe su borrador.
+ - Aprenda a convertirse en un [editor de EIP](https://eips.ethereum.org/EIPS/eip-5069)
+ - ¡Puede revisar las EIP por pares desde ya mismo! Vea las [PR abiertas con la etiqueta `e-review`](https://github.com/ethereum/EIPs/pulls?q=is%3Apr+is%3Aopen+label%3Ae-review). Proporcione comentarios técnicos en el enlace `discussion-to`.
+ - Participe en la [gobernanza de EIP](https://github.com/ethereum-cat-herders/EIPIP)
+ - Únase al [Discord de Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu)
+ - [Más sobre las EIP](/eips/)
+- [Challenges.ethereum.org](https://challenges.ethereum.org/) - una serie de recompensas de investigación de alto valor, en la que puede ganar >100 000 USD
+- [Ethresear.ch](https://ethresear.ch): el principal foro de investigación de Ethereum y el foro más influyente del mundo para la criptoeconomía
+- [AMA de investigación de la EF](https://old.reddit.com/r/ethereum/comments/vrx9xe/ama_we_are_ef_research_pt_8_07_july_2022): una serie continua de preguntas y respuestas con investigadores. A medida que cada parte siguiente se vaya conociendo, cualquiera puede publicar preguntas.
+- [Lista de deseos del Programa de Apoyo al Ecosistema](https://esp.ethereum.foundation/wishlist/): áreas de investigación en las que el Programa de Apoyo al Ecosistema de Ethereum busca activamente solicitudes de subvenciones
+- [AllWalletDevs](https://allwallet.dev): un foro para que desarrolladores, diseñadores y usuarios interesados de Ethereum se reúnan periódicamente y debatan sobre billeteras
[Explore más áreas de investigación activas](/community/research/).
-## Competencias no técnicas {#non-technical}
+## Habilidades no técnicas {#non-technical}
Si no es desarrollador, puede ser difícil saber por dónde empezar en Ethereum. He aquí algunas sugerencias, completadas con recursos para perfiles profesionales específicos.
### Organice una reunión en su ciudad {#meetups}
-- ¿No sabe cómo empezar? La [red BUIDL](https://consensys.net/developers/buidlnetwork/) puede ser útil.
+- ¿No sabe cómo empezar? La [red BUIDL](https://consensys.net/developers/buidlnetwork/) puede ayudar.
### Escriba contenido sobre Ethereum {#write-content}
- Ethereum necesita buenos escritores que puedan explicar su valor en un lenguaje sencillo.
-- ¿Aún no está listo para publicar sus propios artículos? Contemple la posibilidad de añadir contenidos a los ya existentes sobre recursos de la comunidad [EthHub](/contributing/) o de proponer nuevos contenidos para ethereum.org.
+- ¿Aún no está listo para publicar sus propios artículos? ¡Considere contribuir al contenido existente en los recursos de la comunidad o [proponer nuevo contenido para ethereum.org](/contributing/)!
-### Ofrézcase a elaborar actas de reuniones comunitarias {#take-notes}
+### Ofrézcase para tomar notas en las llamadas de la comunidad {#take-notes}
-- Hay muchas reuniones comunitarias de código abierto, y contar con actas de las reuniones es de gran ayuda. Si le interesa el tema, únase al [ canal Discord Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu) y preséntese.
+- Hay muchas reuniones comunitarias de código abierto, y contar con actas de las reuniones es de gran ayuda. Si está interesado, ¡únase al [discord de Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu) y preséntese!
### Traduzca el contenido de Ethereum a su idioma nativo {#translate-ethereum}
- Ethereum.org posee un programa de traducción que traduce el sitio web y otros recursos a muchos idiomas diferentes.
-- Descubra [aquí](/contributing/translation-program) cómo puede participar.
+- Descubra cómo participar [aquí](/contributing/translation-program)
### Ejecute un nodo {#run-a-node}
Únase a miles de operadores de nodos para ayudar a descentralizar aún más Ethereum.
-- [Más información sobre cómo ejecutar un nodo.](/developers/docs/nodes-and-clients/run-a-node/)
+- [Más sobre cómo ejecutar un nodo](/developers/docs/nodes-and-clients/run-a-node/)
-### Ponga su ETH en participación {#staking}
+### Aposte su ETH {#staking}
Al apostar sus ETH, puede ganar recompensas mientras ayuda a proteger la red Ethereum.
-- [Más acerca de las apuestas (staking).](/staking/)
+- [Más sobre el staking](/staking/)
-### Apoyo a proyectos {#support-projects}
+### Apoye proyectos {#support-projects}
El ecosistema de Ethereum tiene la misión de financiar bienes públicos y proyectos con gran repercusión. A través de donaciones muy pequeñas puede mostrar su apoyo y permitir que se realice un trabajo importante.
- [Gitcoin](https://gitcoin.co/fund)
- [clr.fund](https://clr.fund/#/about)
-## Profesionales financieros y contables {#financial-professionals}
+## Profesionales financieros y contables {#financial-professionals}
-- Ethereum es la sede del ecosistema de «Finanzas descentralizadas», es decir, una red de protocolos y aplicaciones que ofrecen un sistema financiero alternativo. Si usted es un profesional de las Finanzas, eche un vistazo a algunas aplicaciones DeFi en [DeFiLlama](https://defillama.com/) o [DeFiPrime](https://defiprime.com).
-- ¿Contable? Los activos en Ethereum (ETH, tókenes, DeFi, etc.) tratan de muchos y novedosos asuntos de contabilidad. Podría empezar por revisar algunos proyectos que tienen como objetivo ayudar a los usuarios de criptomonedas a ocuparse de su contabilidad y complejidades de la contabilidad, como [Rotki](https://rotki.com/).
+- Ethereum es la sede del ecosistema de «Finanzas descentralizadas», es decir, una red de protocolos y aplicaciones que ofrecen un sistema financiero alternativo. Si es un profesional de las finanzas, consulte algunas aplicaciones DeFi en [DeFi Llama](https://defillama.com/) o [DeFiPrime](https://defiprime.com)
+- ¿Contable? Los activos en Ethereum (ETH, tókenes, DeFi, etc.) tratan de muchos y novedosos asuntos de contabilidad. Podría empezar por consultar algunos proyectos que tienen como objetivo ayudar a los usuarios de criptomonedas a resolver sus desafíos contables y de teneduría de libros, como [Rotki](https://rotki.com/)
-## Gestores de producto {#product-managers}
+## Gestores de productos {#product-managers}
-- ¡El ecosistema Ethereum necesita sus talentos! Muchas empresas están contratando a personal para puestos de gestión de productos. Si desea comenzar a contribuir con un proyecto de código abierto, póngase en contacto con el grupo de [Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu) (Pastores de Gatos de Ethereum) o la organización [RaidGuild](https://www.raidguild.org/).
+- ¡El ecosistema Ethereum necesita sus talentos! Muchas empresas están contratando a personal para puestos de gestión de productos. Si quiere empezar contribuyendo a un proyecto de código abierto, póngase en contacto con los [Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu) o [RaidGuild](https://www.raidguild.org/)
## Marketing {#marketing}
- ¡Hay muchos puestos de marketing y comunicaciones disponibles en el ecosistema de Ethereum!
-## Vacantes de empleo en Ethereum {#ethereum-jobs}
+## Empleos en Ethereum {#ethereum-jobs}
-**¿Quiere trabajar en Ethereum?**
+**¿Quiere encontrar un trabajo en Ethereum?**
-- [vacantes de empleo en ethereum.org](/about/#open-jobs)
-- [Bolsa de trabajo de Ethereum Foundation (Lever)](https://jobs.lever.co/ethereumfoundation)
-- [Bolsa de trabajo de Ethereum Foundation (BambooHR)](https://ethereum.bamboohr.com/jobs/)
+- [Empleos en ethereum.org](/about/#open-jobs)
+- [Bolsa de empleo de la Ethereum Foundation (Lever)](https://jobs.lever.co/ethereumfoundation)
+- [Bolsa de empleo de la Ethereum Foundation (BambooHR)](https://ethereum.bamboohr.com/jobs/)
- [JobStash](https://jobstash.xyz)
-- [Vacantes de empleo de criptomoneda](https://cryptocurrencyjobs.co/ethereum/)
-- [Empleo en ConsenSys](https://consensys.net/careers/)
+- [Bolsa de empleo de Ethereum](https://www.ethereumjobboard.com/)
+- [Empleos en criptomonedas](https://cryptocurrencyjobs.co/ethereum/)
+- [Carreras en ConsenSys](https://consensys.net/careers/)
- [Lista de empleos de cripto](https://cryptojobslist.com/ethereum-jobs)
-- [Bolsa de trabajo Bankless](https://pallet.xyz/list/bankless/jobs)
-- [Vacantes de empleo Web3](https://web3.career)
+- [Bolsa de empleo de Bankless](https://pallet.xyz/list/bankless/jobs)
+- [Empleos en Web3](https://web3.career)
- [Web3 Army](https://web3army.xyz/)
-- [Vacantes de empleo en Crypto Valley](https://cryptovalley.jobs/)
-- [Vacantes de empleo en Ethereum](https://startup.jobs/ethereum-jobs)
+- [Empleos en Crypto Valley](https://cryptovalley.jobs/)
+- [Empleos en Ethereum](https://startup.jobs/ethereum-jobs)
## Únase a una DAO {#decentralized-autonomous-organizations-daos}
-Las «DAO» son organizaciones autónomas descentralizadas. Estos grupos aprovechan la tecnología de Ethereum para facilitar la organización y la colaboración. Por ejemplo, para controlar las adhesiones de miembros, votar sobre propuestas o administrar activos agrupados. Aunque las DAO aún están en fase experimental, ofrecen oportunidades para que encuentre grupos con los que se identifique, contacte con colaboradores y aumente su impacto en la comunidad Ethereum. [Más información sobre las DAO.](/dao/)
+Las «DAO» son organizaciones autónomas descentralizadas. Estos grupos aprovechan la tecnología de Ethereum para facilitar la organización y la colaboración. Por ejemplo, para controlar las adhesiones de miembros, votar sobre propuestas o administrar activos agrupados. Aunque las DAO aún están en fase experimental, ofrecen oportunidades para que encuentre grupos con los que se identifique, contacte con colaboradores y aumente su impacto en la comunidad Ethereum. [Más sobre las DAO](/dao/)
-- [DAOSquare](https://daosquare.io/) [@DAOSquare](https://twitter.com/DAOSquare): _Fomente el concepto de DAO en un terreno que no sea técnico y ayude a que la gente cree valor a través de las DAO_
-- [Developer DAO](https://www.developerdao.com/) [@developer_dao](https://twitter.com/developer_dao): _Comunidad de desarrolladores que creen en la propiedad colectiva de Internet_
-- [dOrg](https://dOrg.tech) [@dOrg_tech](https://twitter.com/dOrg_tech): _Colectivo independiente de desarrollo de Web3 que funciona como una DAO_
-- [HausDAO](https://daohaus.club) [@nowdaoit](https://twitter.com/nowdaoit): _Comunidad de gobernanza de DAOhaus_
-- [LexDAO](https://lexdao.org) [@lex_DAO](https://twitter.com/lex_DAO): _Ingeniería jurídica_
-- [MetaCartel Ventures](https://metacartel.xyz) [@VENTURE_DAO](https://twitter.com/VENTURE_DAO): _Iniciativa de prelanzamiento de proyectos de criptomonedas_
-- [MetaGame](https://metagame.wtf) [@MetaFam](https://twitter.com/MetaFam): _Mecánica de juego MMORPG aplicada a la vida real_
-- [MetaFactory](https://metafactory.ai) [@TheMetaFactory](https://twitter.com/TheMetaFactory): _Marcas de ropa «digifísicas»_
-- [MolochDAO](https://molochdao.com) [@MolochDAO](https://twitter.com/MolochDAO): _Comunidad centrada en la financiación del desarrollo de Ethereum_
-- [Raid Guild](https://raidguild.org) [@RaidGuild](https://twitter.com/RaidGuild): _Colectivo de desarrolladores de Web3_
+- [DAOSquare](https://daosquare.io/) [@DAOSquare](https://twitter.com/DAOSquare): _promover el concepto de DAO en el campo no tecnológico y ayudar a las personas a crear valor a través de la DAO_
+- [Developer DAO](https://www.developerdao.com/) [@developer_dao](https://twitter.com/developer_dao): _comunidad de creadores que creen en la propiedad colectiva de Internet_
+- [dOrg](https://dOrg.tech) [@dOrg_tech](https://twitter.com/dOrg_tech): _colectivo de desarrollo Web3 freelance que trabaja como una DAO_
+- [HausDAO](https://daohaus.club) [@nowdaoit](https://twitter.com/nowdaoit): _gobernanza comunitaria de DAOhaus_
+- [LexDAO](https://lexdao.org) [@lex_DAO](https://twitter.com/lex_DAO): _ingeniería legal_
+- [MetaCartel Ventures](https://metacartel.xyz) [@VENTURE_DAO](https://twitter.com/VENTURE_DAO): _capital de riesgo para proyectos de cripto pre-semilla_
+- [MetaFactory](https://metafactory.ai) [@TheMetaFactory](https://twitter.com/TheMetaFactory): _marcas de ropa figital_
+- [MolochDAO](https://molochdao.com) [@MolochDAO](https://twitter.com/MolochDAO): _comunidad centrada en financiar el desarrollo de Ethereum_
+- [Raid Guild](https://raidguild.org) [@RaidGuild](https://twitter.com/RaidGuild): _colectivo de creadores de Web3_
-¡Por favor, recuerde respetar el [código de conducta de ethereum.org](/community/code-of-conduct) siempre y al margen de la forma en la que contribuya con ethereum.org!
+¡Por favor, recuerde respetar el [código de conducta](/community/code-of-conduct) de ethereum.org siempre y de cualquier forma que contribuya a ethereum.org!
From a68a6ffd249ef80c2e91ab2e21025b85310a352e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:15 -0300
Subject: [PATCH 240/589] update(i18n):
public/content/translations/es/roadmap/merge/issuance/index.md
---
.../es/roadmap/merge/issuance/index.md | 124 ++++++++----------
1 file changed, 58 insertions(+), 66 deletions(-)
diff --git a/public/content/translations/es/roadmap/merge/issuance/index.md b/public/content/translations/es/roadmap/merge/issuance/index.md
index df009f0990d..91188274a29 100644
--- a/public/content/translations/es/roadmap/merge/issuance/index.md
+++ b/public/content/translations/es/roadmap/merge/issuance/index.md
@@ -4,117 +4,109 @@ description: Explicación de cómo La Fusión impactó en el suministro de ETH
lang: es
---
-# Cómo La Fusión impactó en el suministro de ETH {#how-the-merge-impacts-ETH-supply}
+# Cómo afectó la Fusión al suministro de ETH {#how-the-merge-impacts-ETH-supply}
-La Fusión ocurrida en septiembre de 2022 representó la transición de las redes de Ethereum de prueba de trabajo a prueba de participación. La forma en la que se emitieron ETH sufrió cambios en el momento de la transición. Anteriormente, se emitieron nuevos ETH desde dos fuentes: la capa de ejecución (es decir, la red principal) y la capa de consenso (es decir, la cadena de baliza). Desde La Fusión, la emisión en la capa de ejecución está ahora en cero. Veamos esto por partes.
+La Fusión representó la transición de la red de Ethereum de prueba de trabajo a prueba de participación, que ocurrió en septiembre de 2022. La forma en la que se emitieron ETH sufrió cambios en el momento de la transición. Anteriormente, el nuevo ETH se emitía desde dos fuentes: la capa de ejecución (es decir, la red principal) y la capa de consenso (es decir, la Cadena de baliza). Desde La Fusión, la emisión en la capa de ejecución está ahora en cero. Veamos esto por partes.
## Componentes de la emisión de ETH {#components-of-eth-issuance}
Podemos analizar el suministro de ETH en dos fuerzas principales: la emisión y la quema.
-La **emisión** es el proceso de creación de ETH. La **quema** es la destrucción de los ETH existente y su consiguiente eliminación de la circulación. La tasa de emisión y quema se calcula basándose en varios parámetros, y el equilibrio entre ellos determina la tasa de inflación/deflación del ether.
+La **emisión** de ETH es el proceso de crear ETH que no existía previamente. La **quema** de ETH es cuando el ETH existente se destruye, eliminándolo de la circulación. La tasa de emisión y quema se calcula basándose en varios parámetros, y el equilibrio entre ellos determina la tasa de inflación/deflación del ether.
+title="ETH issuance tldr">
-- Antes de la transición a la prueba de participación, los mineros emitían aproximadamente 13.000 ETH/día.
-- Los participantes emiten aproximadamente 1.700 ETH/día, en función de una participación total de alrededor de 14 millones de ETH.
-- La emisión exacta de participaciones fluctúa en función del total de ETH apostado.
-- **Desde La Fusión, solo permanece ~1.700 ETH/día, reduciendo la emisión total de ETH a ~88%**.
-- La quema: fluctúa dependiendo de la demanda de red. _Si_ se observa un precio medio de gas de al menos 16 gwei en un día determinado, esto compensa efectivamente los ~1.700 ETH que emiten los validadores y baja la inflación neta de ETH a cero o menos en ese día.
+- Antes de la transición a la prueba de participación, a los mineros se les emitían aproximadamente 13.000 ETH/día
+- A los participantes se les emiten aproximadamente 1.700 ETH/día, sobre la base de un total de unos 14 millones de ETH en staking.
+- La emisión exacta del staking fluctúa en función de la cantidad total de ETH en staking.
+- **Desde la Fusión, solo se mantienen los ~1.700 ETH/día, lo que reduce la emisión total de nuevos ETH en un ~88 %**
+- La quema: fluctúa según la demanda de la red. _Si_ se observa un precio medio de gas de al menos 16 gwei en un día determinado, esto compensa efectivamente los ~1.700 ETH que emiten los validadores y baja la inflación neta de ETH a cero o menos en ese día.
-## Antes de La Fusión (historia) {#pre-merge}
+## Antes de la Fusión (histórico) {#pre-merge}
-### La emisión de la capa de ejecución {#el-issuance-pre-merge}
+### Emisión de la capa de ejecución {#el-issuance-pre-merge}
-Bajo la prueba de trabajo, los mineros solo interactuaban con la capa de ejecución y se les compensaba con un bloque de recompensas, si eran los primeros mineros en resolver el siguiente bloque. Desde la [actualización Constantinople](/ethereum-forks/#constantinople) en 2019, esta recompensa era de 2 ETH por bloque. Los mineros también recibían recompensas por publicaciones de bloques [ommer](/glossary/#ommer), que eran bloques válidos que no acababan en la cadena más larga/predilecta. Estas recompensas eran de un máximo 1,75 ETH por ommer, y suponían _un extra_ a la recompensa emitida desde el bloque predilecto. El proceso de minería era una actividad económica intensa, que históricamente requería altos niveles de emisión de ETH para ser sostenible.
+Bajo la prueba de trabajo, los mineros solo interactuaban con la capa de ejecución y se les compensaba con un bloque de recompensas, si eran los primeros mineros en resolver el siguiente bloque. Desde la [actualización de Constantinople](/ethereum-forks/#constantinople) en 2019, esta recompensa era de 2 ETH por bloque. Los mineros también eran recompensados por publicar bloques [ommer](/glossary/#ommer), que eran bloques válidos que no terminaban en la cadena más larga/canónica. Estas recompensas alcanzaban un máximo de 1,75 ETH por ommer y eran _adicionales_ a la recompensa emitida por el bloque canónico. El proceso de minería era una actividad económica intensa, que históricamente requería altos niveles de emisión de ETH para ser sostenible.
-### La emisión de la capa de consenso {#cl-issuance-pre-merge}
+### Emisión de la capa de consenso {#cl-issuance-pre-merge}
-La [cadena de baliza](/ethereum-forks/#beacon-chain-genesis) empezó en 2020. En vez de mineros, está asegurada por validadores que usan pruebas de participación. Esta cadena era impulsada por usuarios de Ethereum que depositaban ETH unidireccionalmente en un contrato inteligente de red principal (la capa de ejecución), que la cadena de baliza escucha, acreditando al usuario una cantidad equivalente de ETH en la cadena nueva. Hasta que ocurrió La Fusión, los validadores de la cadena de baliza no estaban procesando transacciones y estaban principalmente llegando a consensos sobre el estado del grupo de validadores entre sí.
+La [Cadena de baliza](/ethereum-forks/#beacon-chain-genesis) se puso en marcha en 2020. En vez de mineros, está asegurada por validadores que usan pruebas de participación. Esta cadena era impulsada por usuarios de Ethereum que depositaban ETH unidireccionalmente en un contrato inteligente de red principal (la capa de ejecución), que la cadena de baliza escucha, acreditando al usuario una cantidad equivalente de ETH en la cadena nueva. Hasta que ocurrió La Fusión, los validadores de la cadena de baliza no estaban procesando transacciones y estaban principalmente llegando a consensos sobre el estado del grupo de validadores entre sí.
-A los validadores de la cadena de baliza se les recompensaba con ETH por confirmar el estado de la cadena y proponer bloques. Las recompensas (o penalizaciones) se calculaban y distribuían en cada época (cada 6,4 minutos) en función del rendimiento del validador. Las recompensas de los validadores son **considerablemente** inferiores a las recompensas de los mineros que se emitían anteriormente con la prueba de trabajo (2 ETH cada ~13,5 segundos), ya que el funcionamiento de un nodo de validador no supone un gasto tan elevado, ni requiere o garantiza una gran recompensa.
+A los validadores de la cadena de baliza se les recompensaba con ETH por confirmar el estado de la cadena y proponer bloques. Las recompensas (o penalizaciones) se calculaban y distribuían en cada época (cada 6,4 minutos) en función del rendimiento del validador. Las recompensas de los validadores son **significativamente** menores que las recompensas de minería que se emitían anteriormente bajo la prueba de trabajo (2 ETH cada ~13,5 segundos), ya que operar un nodo validador no es tan intenso económicamente y, por lo tanto, no requiere ni justifica una recompensa tan alta.
-### Análisis de la emisión antes de La Fusión {#pre-merge-issuance-breakdown}
+### Desglose de la emisión antes de la Fusión {#pre-merge-issuance-breakdown}
-Suministro total de ETH: **~120.520.000 ETH** (en el momento de La Fusión en septiembre de 2020)
+Suministro total de ETH: **~120.520.000 ETH** (en el momento de la Fusión en septiembre de 2022)
**La emisión de la capa de ejecución:**
-- Se calculaba en 2,08 ETH por 13,3 segundos\*: **~4.930.000** ETH emitidos en un año
-- Resultó en una tasa de inflación de **aproximadamente del 4,09%** (4,93 M por año / 120,5 M en total)
-- \*Esto incluye los 2 ETH por bloque predilecto, además de los 0,08 ETH en promedio a lo largo del tiempo en bloques ommer. También utiliza 13,3 segundos, el objetivo de tiempo del bloque de referencia sin ninguna influencia de una [bomba de dificultad](/glossary/#difficulty-bomb). ([Ver fuente](https://bitinfocharts.com/ethereum/))
+- Se estimó en 2,08 ETH por 13,3 segundos\*: **~4.930.000** ETH emitidos en un año
+- Resultó en una tasa de inflación de **aproximadamente el 4,09 %** (4,93M por año / 120,5M en total)
+- \*Esto incluye los 2 ETH por bloque predilecto, además de los 0,08 ETH en promedio a lo largo del tiempo en bloques ommer. También usa 13,3 segundos, el objetivo de tiempo de bloque de referencia sin ninguna influencia de una [bomba de dificultad](/glossary/#difficulty-bomb). ([Ver fuente](https://bitinfocharts.com/ethereum/))
**La emisión de la capa de consenso:**
-- Usando 14.000.000 del total de ETH participantes, la tasa de emisión de ETH es aproximadamente de 1700 ETH/día ([Ver fuente](https://ultrasound.money/))
-- Lo que da como resultado **~620.500** ETH emitidos en un año.
-- Lo que generó una tasa de inflación de **aproximadamente 0,52%** (620,5 K por año / 119,3 M en total).
+- Con un total de 14.000.000 de ETH en staking, la tasa de emisión de ETH es de aproximadamente 1700 ETH/día ([Ver fuente](https://ultrasound.money/))
+- Resulta en **~620.500** ETH emitidos en un año
+- Resultó en una tasa de inflación de **aproximadamente 0,52 %** (620,5 K por año / 119,3 M en total)
-**Tasa de emisión anual total (antes de La Fusión): ~4,61%** (4,09% + 0,52%)
+**Tasa de emisión anualizada total (antes de la Fusión): ~4,61 %** (4,09 % + 0,52 %)
-**~88,7%** de la emisión iba a los mineros en la capa de ejecución (4,09 / 4,61 * 100)
+El **~88,7 %** de la emisión se destinaba a los mineros en la capa de ejecución (4,09 / 4,61 \* 100)
-**~11,3%** era emitida para los participantes en la capa de consenso (0,52 / 4,61 * 100)
-
-
-
+El **~11,3 %** se emitía a los participantes en la capa de consenso (0,52 / 4,61 \* 100)
-## Después de La Fusión (Presente) {#post-merge}
+## Después de la Fusión (actualidad) {#post-merge}
-### La emisión de la capa de ejecución {#el-issuance-post-merge}
+### Emisión de la capa de ejecución {#el-issuance-post-merge}
-La emisión de la capa de ejecución desde La Fusión es cero. La prueba de trabajo ya no es un medio válido de producción de bloques bajo las actualizaciones de las reglas del consenso. Toda la actividad de la capa de ejecución está agrupada en «bloques de baliza», que publicarán y certificarán validadores de prueba de participación. Las recompensas por certificar y publicar bloques de baliza se contabilizan por separado en la capa de consenso.
+La emisión de la capa de ejecución desde la Fusión es cero. La prueba de trabajo ya no es un medio válido para la producción de bloques según las reglas de consenso actualizadas. Toda la actividad de la capa de ejecución se empaqueta en «bloques de baliza», que publican y atestiguan los validadores de prueba de participación. Las recompensas por atestiguar y publicar bloques de baliza se contabilizan por separado en la capa de consenso.
-### La emisión de la capa de consenso {#cl-issuance-post-merge}
+### Emisión de la capa de consenso {#cl-issuance-post-merge}
-La emisión de la capa de consenso continúa hoy, como lo hacía antes de La Fusión, con pequeñas recompensas para validadores que certifican y proponen bloques. Las recompensas de validadores continúan acumulándose en los _balances del validador_ que se administran dentro de la capa de consenso. A diferencia de las cuentas corrientes (cuentas de «ejecución»), que pueden hacer transacciones en red principal, estas son cuentas de Ethereum separadas que no pueden hacer transacciones libremente con otras cuentas de Ethereum. Los fondos de estas cuentas solo pueden retirarse en una única dirección de ejecución específica.
+La emisión de la capa de consenso continúa hoy como antes de la Fusión, con pequeñas recompensas para los validadores que atestiguan y proponen bloques. Las recompensas de los validadores se siguen acumulando en los _saldos de los validadores_ que se gestionan dentro de la capa de consenso. A diferencia de las cuentas actuales («cuentas de ejecución»), que pueden realizar transacciones en la red principal, estas son cuentas de Ethereum separadas que no pueden realizar transacciones libremente con otras cuentas de Ethereum. Los fondos de estas cuentas solo pueden retirarse a una única dirección de ejecución especificada.
-Desde la actualización de Shanghai/Capella ocurrida en abril de 2023, se han habilitado estas retiradas para participantes. Se incentiva la retirada de _ganancias/recompensas (con balance mayor a 32 ETH)_ de los participantes, ya que de otra manera estos fondos no contribuyen a su peso de participación (que es de máximo 32).
+Desde la actualización de Shanghai/Capella que tuvo lugar en abril de 2023, estos retiros han sido habilitados para los participantes. Se incentiva a los participantes a retirar sus _ganancias/recompensas (saldo superior a 32 ETH)_, ya que, de lo contrario, estos fondos no contribuyen a su peso de participación (cuyo máximo es de 32).
-Los participantes también pueden optar por salir y extraer su balance entero de validador. Para garantizar la estabilidad de Ethereum, se limita el número de validadores que pueden salir al mismo tiempo.
+Los participantes también pueden optar por salir y retirar el saldo completo de su validador. Para garantizar que Ethereum sea estable, el número de validadores que salen simultáneamente está limitado.
-Aproximadamente el 0,33 % del total de validadores puede salir cada día. Por defecto, cuatro (4) validadores pueden salir por época (cada 6,4 minutos, o 900 por día). Un validador adicional (1) puede salir por cada 65.536 (216) validadores adicionales sobre 262.144 (218). Por ejemplo, con más de 327.680 validadores, cinco (5) pueden salir por época (1.125 por día). Se permitirán seis (6) con un total de validadores activos de 393,216, y así sucesivamente.
+Aproximadamente el 0,33 % del recuento total de validadores puede salir en un día determinado. Por defecto, cuatro (4) validadores pueden salir por época (cada 6,4 minutos, o 900 por día). Se permite la salida de un (1) validador adicional por cada 65.536 (216) validadores adicionales por encima de 262.144 (218). Por ejemplo, con más de 327.680 validadores, cinco (5) pueden salir por época (1.125 por día). Se permitirán seis (6) con un recuento total de validadores activos superior a 393.216, y así sucesivamente.
-Cuantos más validadores salgan, más se irá reduciendo gradualmente el número máximo de validadores existentes hasta un mínimo de cuatro con la intención de evitar una desestabilización de los ETH apostados al producirse un valor alto de retirada simultánea.
+A medida que se retiran más validadores, el número máximo de validadores que pueden salir se reducirá gradualmente a un mínimo de cuatro para evitar intencionadamente que se retiren simultáneamente grandes cantidades desestabilizadoras de ETH en staking.
-### Análisis de la inflación después de La Fusión {#post-merge-inflation-breakdown}
+### Desglose de la inflación después de la Fusión {#post-merge-inflation-breakdown}
-- Suministro total de ETH: **~120.520.000 ETH** (en el momento de La Fusión en septiembre de 2020)
-- La emisión de la capa de ejecución: **0**
-- La emisión de la capa de consenso: igual a la anterior, **~0,52%** tasa emitida anualmente (con un total de 14 millones de ETH apostados)
+- Suministro total de ETH: **~120.520.000 ETH** (en el momento de la Fusión en septiembre de 2022)
+- Emisión de la capa de ejecución: **0**
+- Emisión de la capa de consenso: igual que antes, **~0,52 %** de tasa de emisión anualizada (con 14 millones de ETH totales en staking)
-Tasa de emisión anual total: **~0,52%**
+Tasa de emisión anualizada total: **~0,52 %**
-Reducción neta de la emisión anual de ETH: **~88,7%** ((4,61% - 0,52%) / 4,61% * 100)
-
-
-
+Reducción neta de la emisión anual de ETH: **~88,7 %** ((4,61 % - 0,52 %) / 4,61 % \* 100)
-## La quema {#the-burn}
+## La quema {#the-burn}
-La fuerza opuesta a la emisión de ETH es la tasa a la cual se quema ETH. Para que se ejecute una transacción en Ethereum, se debe pagar una comisión mínima (conocida como «tarifa de base»), que fluctúa constantemente (bloque-a-bloque) dependiendo de la actividad de la red. La tarifa se debe pagar en ETH y se _requiere_ para que se considere una transacción válida. La tarifa se _quema_ durante el proceso de la transacción, eliminándola de la circulación.
+La fuerza opuesta a la emisión de ETH es la tasa a la cual se quema ETH. Para que se ejecute una transacción en Ethereum, se debe pagar una comisión mínima (conocida como «tarifa de base»), que fluctúa constantemente (bloque-a-bloque) dependiendo de la actividad de la red. La tarifa se paga en ETH y es _obligatoria_ para que la transacción se considere válida. Esta tarifa se _quema_ durante el proceso de la transacción, eliminándola de la circulación.
-La quema de la comisión empezó con [la actualización London](/ethereum-forks/#london) en agosto del 2021, y no se le han implementado más cambios desde La Fusión.
-
-
-
+
+La quema de tarifas se implementó con [la actualización London](/ethereum-forks/#london) en agosto de 2021 y se ha mantenido sin cambios desde la Fusión.
Además de la tarifa implementada en la actualización London, los validadores también pueden incurrir en penalizaciones por estar fuera de línea, o peor aún, se les puede recortar por romper las reglas específicas que amenazan la seguridad de la red. Estas penalizaciones ocasionan una reducción de ETH del saldo de los validadores, que no recompensa directamente ninguna otra cuenta, quemándolos/eliminándolos efectivamente de circulación.
-### Cálculo del precio medio del gas en deflación {#calculating-average-gas-price-for-deflation}
+### Cálculo del precio medio del gas para la deflación {#calculating-average-gas-price-for-deflation}
Como discutimos anteriormente, la cantidad de ETH emitida en un día determinado es dependiente del total de ETH apostado. Al cierre de la edición de este documento, roza los 1.700 ETH/día.
@@ -124,26 +116,26 @@ Para determinar el precio medio del gas requerido para compensar completamente e
- `(5 bloques/minuto) * (60 minutos/hora) = 300 bloques/hora`
- `(300 bloques/hora) * (24 horas/día) = 7.200 bloques/día`
-Cada bloque apunta a `15x10^6 gas/bloque` ([más en gas](/developers/docs/gas/)). Partiendo de estos datos, podemos entender el precio medio del gas (en unidades de gwei/gas) requerido para compensar la emisión, ya que la emisión total diaria es de 1.700 ETH:
+Cada bloque tiene como objetivo `15x10^6 de gas/bloque` ([más sobre el gas](/developers/docs/gas/)). Partiendo de estos datos, podemos entender el precio medio del gas (en unidades de gwei/gas) requerido para compensar la emisión, ya que la emisión total diaria es de 1.700 ETH:
-- `7200 bloques/día * 15x10^6 gas/bloque *`**`Y gwei/gas`**`* 1 ETH/ 10^9 gwei = 1700 ETH/día`
+- `7200 bloques/día * 15x10^6 gas/bloque * `**`Y gwei/gas`**` * 1 ETH/ 10^9 gwei = 1700 ETH/día`
-Partiendo de que `Y`:
+Resolviendo para `Y`:
-- `Y = (1.700(10^9))/(7.200 * 15(10^6)) = (17x10^3)/(72 * 15) = 16 gwei` (redondeando a solo dos dígitos significativos)
+- `Y = (1700(10^9))/(7200 * 15(10^6)) = (17x10^3)/(72 * 15) = 16 gwei` (redondeando a solo dos cifras significativas)
-Otra forma de organizar este último paso sería reemplazando `1.700` por una variable `X` que representa la emisión diaria de ETH, y simplifica el resto a:
+Otra forma de reorganizar este último paso sería sustituir `1700` por una variable `X` que represente la emisión diaria de ETH, y simplificar el resto a:
- `Y = (X(10^3)/(7200 * 15)) = X/108`
-Podemos simplificar y escribir esto como la función de `X`:
+Podemos simplificar y escribir esto como una función de `X`:
-- `f(X) = X/108` donde `X` es la emisión diaria de ETH, y `f(X)` representa el precio gwei/gas requerido para compensar toda la emisión nueva de ETH.
+- `f(X) = X/108` donde `X` es la emisión diaria de ETH, y `f(X)` representa el precio en gwei/gas necesario para compensar todo el ETH recién emitido.
-Así que, por ejemplo, si `X` (emisión diaria de ETH) aumenta a 1.800 en función del total de ETH apostado, `f(X)` (gwei requerido para compensar toda la emisión) entonces sería `17 gwei` (usando 2 dígitos significativos)
+Así que, por ejemplo, si `X` (emisión diaria de ETH) sube a 1800 en función del total de ETH en staking, `f(X)` (gwei necesarios para compensar toda la emisión) sería entonces de `17 gwei` (usando 2 cifras significativas)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [La Fusión](/roadmap/merge/)
-- [Ultrasound.money](https://ultrasound.money/): _Tableros disponibles para visualizar la emisión y quema de ETH en tiempo real_
-- [Registrando la emisión de Ethereum](https://www.attestant.io/posts/charting-ethereum-issuance/): _Jim McDonald 2020_
+- [The Merge](/roadmap/merge/)
+- [Ultrasound.money](https://ultrasound.money/) - _Paneles disponibles para visualizar la emisión y la quema de ETH en tiempo real_
+- [Gráfico de la emisión de Ethereum](https://www.attestant.io/posts/charting-ethereum-issuance/) - _Jim McDonald 2020_
From a1e1aaa32a6a38abd669d34f7d2f5c5033e8ad48 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:16 -0300
Subject: [PATCH 241/589] update(i18n):
public/content/translations/es/roadmap/fusaka/peerdas/index.md
---
.../es/roadmap/fusaka/peerdas/index.md | 88 +++++++++++++++++++
1 file changed, 88 insertions(+)
create mode 100644 public/content/translations/es/roadmap/fusaka/peerdas/index.md
diff --git a/public/content/translations/es/roadmap/fusaka/peerdas/index.md b/public/content/translations/es/roadmap/fusaka/peerdas/index.md
new file mode 100644
index 00000000000..1db9b83739c
--- /dev/null
+++ b/public/content/translations/es/roadmap/fusaka/peerdas/index.md
@@ -0,0 +1,88 @@
+---
+title: PeerDAS
+description: Aprenda sobre PeerDAS como parte de la actualización del protocolo de Ethereum Fusaka
+lang: es
+---
+
+# PeerDAS {#peer-das}
+
+El protocolo de Ethereum está experimentando su actualización de escalado más significativa desde la [introducción de las transacciones de blobs con la EIP-4844](/roadmap/danksharding/). Como parte de la [actualización Fusaka](/roadmap/fusaka/), PeerDAS introduce una nueva forma de gestionar los datos de los blobs, lo que supone un aumento aproximado de un orden de magnitud en la capacidad de **[disponibilidad de datos (DA)](/developers/docs/data-availability/)** para las L2.
+
+[Más información sobre la hoja de ruta de escalado de blobs](https://blog.ethereum.org/2025/08/22/protocol-update-002)
+
+## Escalabilidad {#scalability}
+
+La visión de Ethereum es ser una plataforma neutral, segura y descentralizada disponible para todo el mundo. A medida que crece el uso de la red, esto requiere equilibrar el trilema de la escala, la seguridad y la descentralización de la red. Si Ethereum simplemente aumentara los datos gestionados por la red dentro de su diseño actual, correría el riesgo de sobrecargar los [nodos en los que Ethereum se basa para su descentralización](/developers/docs/nodes-and-clients/). La escalabilidad requiere un diseño de mecanismos riguroso que minimice las concesiones.
+
+Una de las estrategias para lograr este objetivo es permitir un ecosistema diverso de soluciones de escalado de capa 2 en lugar de procesar todas las transacciones en la red principal de la [capa 1 (L1)](/glossary/#layer-1). Las [capas 2 (L2)](/glossary/#layer-2) o los [rollups](/glossary#rollups) procesan transacciones en sus propias cadenas separadas y utilizan Ethereum para la verificación y la seguridad. Publicar únicamente compromisos críticos para la seguridad y comprimir las cargas útiles permite a las L2 utilizar la capacidad de DA de Ethereum de forma más eficiente. A su vez, la L1 transporta menos datos sin comprometer las garantías de seguridad, mientras que las L2 incorporan a más usuarios con costes de gas más bajos. Inicialmente, las L2 publicaban datos como `calldata` en transacciones ordinarias, que competían con las transacciones de la L1 por el gas y no eran prácticas para la disponibilidad masiva de datos.
+
+## Proto-Danksharding {#proto-danksharding}
+
+El primer gran paso hacia el escalado de la L2 fue la actualización Dencun, que introdujo el [Proto-Danksharding](/roadmap/danksharding/) (EIP-4844). Esta actualización creó un nuevo tipo de datos especializado para los rollups, llamado «blobs». Los [blobs](/developers/docs/data-availability/blockchain-data-storage-strategies/#eip-4844-blobs), u objetos binarios grandes, son piezas efímeras de datos arbitrarios que no necesitan ejecución de la EVM y que los nodos almacenan solo durante un tiempo limitado. Este procesamiento más eficiente permitió que las L2 publicaran más datos en Ethereum y se escalaran aún más.
+
+A pesar de tener ya grandes beneficios para el escalado, el uso de blobs es solo una parte del objetivo final. En el protocolo actual, cada nodo de la red necesita todavía descargar cada blob. El cuello de botella se convierte en el ancho de banda requerido por los nodos individuales, con la cantidad de datos que deben descargarse aumentando directamente con un mayor número de blobs.
+
+Ethereum no compromete la descentralización, y el ancho de banda es uno de los botones más sensibles. Incluso con la computación potente ampliamente disponible para cualquiera que pueda permitírselo, las [limitaciones del ancho de banda de subida](https://www.speedtest.net/global-index) incluso en ciudades muy urbanizadas de países desarrollados (como [Alemania](https://www.speedtest.net/global-index/germany), [Bélgica](https://www.speedtest.net/global-index/belgium), [Australia](https://www.speedtest.net/global-index/australia) o los [Estados Unidos](https://www.speedtest.net/global-index/united-states)) podrían restringir los nodos a solo poder funcionar desde centros de datos si los requisitos de ancho de banda no se ajustan cuidadosamente.
+
+Los operadores de nodos tienen requisitos de ancho de banda y espacio en disco cada vez mayores a medida que aumentan los blobs. El tamaño y la cantidad de blobs están limitados por estas restricciones. Cada blob puede transportar hasta 128 kb de datos con una media de 6 blobs por bloque. Este fue solo el primer paso hacia un diseño futuro que utilice los blobs de una manera aún más eficiente.
+
+## Muestreo de disponibilidad de datos {#das}
+
+La [disponibilidad de datos](/developers/docs/data-availability/) es la garantía de que todos los datos necesarios para validar la cadena de forma independiente son accesibles para todos los participantes de la red. Garantiza que los datos se han publicado en su totalidad y que pueden utilizarse para verificar sin confianza el nuevo estado de la cadena o las transacciones entrantes.
+
+Los blobs de Ethereum proporcionan una sólida garantía de disponibilidad de datos que garantiza la seguridad de las L2. Para ello, los nodos de Ethereum necesitan descargar y almacenar los blobs en su totalidad. ¿Pero qué pasaría si pudiéramos distribuir los blobs en la red de forma más eficiente y evitar esta limitación?
+
+Un enfoque diferente para almacenar los datos y garantizar su disponibilidad es el **muestreo de disponibilidad de datos (DAS)**. En lugar de que cada ordenador que ejecuta Ethereum almacene por completo cada blob, DAS introduce una división descentralizada del trabajo. Rompe la carga de procesar los datos distribuyendo tareas más pequeñas y manejables por toda la red de nodos. Los blobs se dividen en trozos y cada nodo solo descarga unos pocos trozos utilizando un mecanismo de distribución aleatoria uniforme entre todos los nodos.
+
+Esto introduce un nuevo problema: demostrar la disponibilidad e integridad de los datos. ¿Cómo puede la red garantizar que los datos están disponibles y que son todos correctos cuando los nodos individuales solo contienen pequeños trozos? ¡Un nodo malicioso podría servir datos falsos y romper fácilmente las fuertes garantías de disponibilidad de datos! Aquí es donde la criptografía viene al rescate.
+
+Para garantizar la integridad de los datos, la EIP-4844 ya se implementó con compromisos KZG. Son pruebas criptográficas que se crean cuando se añade un nuevo blob a la red. En cada bloque se incluye una pequeña prueba, y los nodos pueden verificar que los blobs recibidos se corresponden con el compromiso KZG del bloque.
+
+DAS es un mecanismo que se basa en esto y garantiza que los datos sean correctos y estén disponibles. El muestreo es un proceso en el que un nodo consulta solo una pequeña parte de los datos y la verifica con el compromiso. KZG es un esquema de compromiso polinómico, lo que significa que se puede verificar cualquier punto de la curva polinómica. Al comprobar solo un par de puntos en el polinomio, el cliente que realiza el muestreo puede tener una fuerte garantía probabilística de que los datos están disponibles.
+
+## PeerDAS {#peer-das}
+
+[PeerDAS (EIP-7594)](https://eips.ethereum.org/EIPS/eip-7594) es una propuesta específica que implementa el mecanismo DAS en Ethereum, marcando probablemente la mayor actualización desde La Fusión. PeerDAS está diseñado para extender los datos de los blobs, dividiéndolos en columnas y distribuyendo un subconjunto a los nodos.
+
+Ethereum toma prestadas algunas matemáticas inteligentes para lograr esto: aplica una codificación de borrado al estilo de Reed-Solomon a los datos de los blobs. Los datos de los blobs se representan como un polinomio cuyos coeficientes codifican los datos, y a continuación se evalúa ese polinomio en puntos adicionales para crear un blob extendido, duplicando el número de evaluaciones. Esta redundancia añadida permite la recuperación por borrado: aunque falten algunas evaluaciones, el blob original puede reconstruirse siempre que se disponga de al menos la mitad del total de los datos, incluidas las piezas extendidas.
+
+
+
+En realidad, este polinomio tiene miles de coeficientes. Los compromisos KZG son valores de unos pocos bytes, algo así como un hash, conocido por todos los nodos. Cada nodo que contenga suficientes puntos de datos puede [reconstruir eficientemente un conjunto completo de datos de blob](https://arxiv.org/abs/2207.11079).
+
+> Dato curioso: la misma técnica de codificación se utilizaba en los DVD. Si se rayaba un DVD, el reproductor seguía pudiendo leerlo gracias a la codificación Reed-Solomon que añade las piezas que faltan del polinomio.
+
+Históricamente, los datos en las blockchains, ya fueran bloques o blobs, se transmitían a todos los nodos. Con el enfoque de dividir y muestrear de PeerDAS, ya no es necesario transmitir todo a todos. Después de Fusaka, la red de la capa de consenso se organiza en temas/subredes de gossip: las columnas de blobs se asignan a subredes específicas, y cada nodo se suscribe a un subconjunto predeterminado y custodia solo esas piezas.
+
+Con PeerDAS, los datos de los blobs extendidos se dividen en 128 piezas llamadas columnas. Los datos se distribuyen a estos nodos a través de un protocolo de gossip dedicado en subredes específicas a las que se suscriben. Cada nodo regular de la red participa en al menos 8 subredes de columna elegidas al azar. Recibir datos de solo 8 de las 128 subredes significa que este nodo predeterminado recibe solo 1/16 de todos los datos, pero como los datos se extendieron, esto es 1/8 de los datos originales.
+
+Esto permite un nuevo límite teórico de escalado de 8x el esquema actual de «todos descargan todo». Con los nodos suscribiéndose a diferentes subredes aleatorias que sirven columnas de blobs, la probabilidad es muy alta de que se distribuyan uniformemente y, por lo tanto, cada pieza de datos exista en algún lugar de la red. Los nodos que ejecutan validadores están obligados a suscribirse a más subredes con cada validador que ejecutan.
+
+> Cada nodo tiene un identificador único generado aleatoriamente, que normalmente sirve como su identidad pública para las conexiones. En PeerDAS, este número se utiliza para determinar el conjunto aleatorio de subredes a las que tiene que suscribirse, lo que da como resultado una distribución aleatoria uniforme de todos los datos de los blobs.
+
+Una vez que un nodo reconstruye con éxito los datos originales, redistribuye las columnas recuperadas de nuevo a la red, reparando activamente cualquier brecha de datos y mejorando la resiliencia general del sistema. Los nodos conectados a validadores con un saldo combinado ≥4096 ETH deben ser un supernodo y, por lo tanto, deben suscribirse a todas las subredes de columna de datos y custodiar todas las columnas. Estos supernodos repararán continuamente las brechas de datos. La naturaleza probabilísticamente autorreparable del protocolo permite fuertes garantías de disponibilidad sin limitar a los operadores domésticos que solo poseen porciones de los datos.
+
+
+
+La disponibilidad de los datos puede ser confirmada por cualquier nodo que posea solo un pequeño subconjunto de los datos del blob gracias al mecanismo de muestreo descrito anteriormente. Esta disponibilidad se hace cumplir: los validadores deben seguir nuevas reglas de elección de bifurcación, lo que significa que solo aceptarán y votarán por bloques después de haber verificado la disponibilidad de los datos.
+
+El impacto directo en los usuarios (especialmente en los usuarios de la L2) son unas comisiones más bajas. Con 8 veces más espacio para los datos de los rollups, las operaciones de los usuarios en su cadena se abaratan con el tiempo. Pero la reducción de las comisiones después de Fusaka llevará tiempo y dependerá de los BPO.
+
+## Solo de parámetros de blobs (BPO) {#bpo}
+
+La red podrá procesar teóricamente 8 veces más blobs, pero los aumentos de blobs son un cambio que debe ser probado adecuadamente y ejecutado de forma segura y gradual. Las redes de prueba proporcionan la confianza suficiente para desplegar las características en la red principal, pero necesitamos garantizar la estabilidad de la red p2p antes de permitir un número significativamente mayor de blobs.
+
+Para aumentar gradualmente el número objetivo de blobs por bloque sin sobrecargar la red, Fusaka introduce bifurcaciones de **[solo de parámetros de blobs (BPO)](https://ethereum-magicians.org/t/blob-parameter-only-bpo-forks/22623)**. A diferencia de las bifurcaciones regulares que necesitan una amplia coordinación del ecosistema, acuerdo y actualizaciones de software, los [BPO (EIP-7892)](https://eips.ethereum.org/EIPS/eip-7892) son actualizaciones preprogramadas que aumentan el número máximo de blobs con el tiempo sin intervención.
+
+Esto significa que inmediatamente después de que se active Fusaka y se ponga en marcha PeerDAS, el número de blobs permanecerá sin cambios. El número de blobs comenzará a duplicarse cada pocas semanas hasta alcanzar un máximo de 48, mientras que los desarrolladores supervisan para asegurarse de que el mecanismo funciona como se espera y no tiene efectos adversos en los nodos que ejecutan la red.
+
+## Direcciones futuras {#future-directions}
+
+PeerDAS es solo un paso [hacia una visión de escalado mayor de FullDAS](https://ethresear.ch/t/fulldas-towards-massive-scalability-with-32mb-blocks-and-beyond/19529), o Danksharding. Mientras que PeerDAS utiliza la codificación de borrado 1D para cada blob individualmente, el Danksharding completo utilizará un esquema de codificación de borrado 2D más completo en toda la matriz de datos de los blobs. La ampliación de los datos en dos dimensiones crea propiedades de redundancia aún más fuertes y una reconstrucción y verificación más eficientes. La realización de FullDAS requerirá optimizaciones sustanciales de la red y del protocolo, junto con investigación adicional.
+
+## Lecturas adicionales {#further-reading}
+
+- [PeerDAS: Muestreo de disponibilidad de datos de pares por Francesco D'Amato](https://www.youtube.com/watch?v=WOdpO1tH_Us)
+- [Una documentación del PeerDAS de Ethereum](https://eprint.iacr.org/2024/1362.pdf)
+- [Demostración de la seguridad de PeerDAS sin el AGM](https://eprint.iacr.org/2025/1683)
+- [Vitalik sobre PeerDAS, su impacto y las pruebas de Fusaka](https://x.com/VitalikButerin/status/1970983281090085200)
\ No newline at end of file
From 798b5f3d77df4c81007028e3053345ec5e7abb63 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:18 -0300
Subject: [PATCH 242/589] update(i18n):
public/content/translations/es/roadmap/user-experience/index.md
---
.../es/roadmap/user-experience/index.md | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/public/content/translations/es/roadmap/user-experience/index.md b/public/content/translations/es/roadmap/user-experience/index.md
index 7f3551b6c55..efdcbe060e5 100644
--- a/public/content/translations/es/roadmap/user-experience/index.md
+++ b/public/content/translations/es/roadmap/user-experience/index.md
@@ -1,19 +1,19 @@
---
title: Mejorar la experiencia de usuario
-description: 'Todavía es demasiado complejo el uso de Ethereum para la mayoría de las personas. Para fomentar la adopción masiva, Ethereum debe reducir drásticamente sus barreras de entrada: los usuarios deben obtener los beneficios del acceso descentralizado, sin permiso y resistente a la censura a Ethereum, pero debe ser tan sencillo como usar una aplicación Web2 tradicional.'
+description: "Todavía es demasiado complejo el uso de Ethereum para la mayoría de las personas. Para fomentar la adopción masiva, Ethereum debe reducir drásticamente sus barreras de entrada: los usuarios deben obtener los beneficios del acceso descentralizado, sin permiso y resistente a la censura a Ethereum, pero debe ser tan sencillo como usar una aplicación Web2 tradicional."
lang: es
image: /images/roadmap/roadmap-ux.png
alt: "Hoja de ruta de Ethereum"
template: roadmap
---
-**El uso de Ethereum debe simplificarse**; desde la gestión de [claves](/glossary/#key) y [billeteras](/glossary/#wallet) hasta iniciar transacciones. Para facilitar la adopción masiva, Ethereum debe aumentar drásticamente la facilidad de uso, permitiendo a los usuarios experimentar un acceso sin permisos y resistente a la censura a Ethereum con la experiencia sin fricciones de usar aplicaciones [Web2](/glossary/#web2).
+**El uso de Ethereum debe simplificarse**; desde la gestión de [claves](/glossary/#key) y [billeteras](/glossary/#wallet) hasta iniciar transacciones. Para facilitar la adopción masiva, Ethereum debe aumentar drásticamente la facilidad de uso, permitiendo a los usuarios experimentar un acceso sin permiso y resistente a la censura a Ethereum con la experiencia sin fricciones de usar aplicaciones [Web2](/glossary/#web2).
-## Más allá de las fases semilla {#no-more-seed-phrases}
+## Más allá de las frases semilla {#no-more-seed-phrases}
Las cuentas de Ethereum están protegidas por un par de claves que se utilizan para identificar las cuentas (clave pública) y firmar mensajes (clave privada). Una clave privada es una especie de contraseña maestra: permite el acceso completo a una cuenta de Ethereum. Esta es una forma diferente de operar para las personas más familiarizadas con los bancos y las aplicaciones Web2 que administran cuentas en nombre de un usuario. Para que Ethereum alcance la adopción masiva sin depender de terceros centralizados, debe haber una forma directa y sin fricciones de que un usuario tome la custodia de sus activos y mantenga el control de sus datos sin tener que entender la criptografía de claves público-privadas y la gestión de claves.
-La solución a esto es usar billeteras de [contratos inteligentes](/glossary/#smart-contract) para interactuar con Ethereum. Las carteras de contratos inteligentes crean formas de proteger las cuentas en caso de pérdida o robo de las claves, suponen oportunidades para una mejor detección y defensa del fraude, y permiten que las carteras obtengan nuevas funciones. Aunque las carteras de contratos inteligentes existen hoy en día, son difíciles de construir porque el protocolo Ethereum necesita soportarlas mejor. Este soporte adicional se conoce como abstracción de cuentas.
+La solución a esto es usar billeteras de [contrato inteligente](/glossary/#smart-contract) para interactuar con Ethereum. Las carteras de contratos inteligentes crean formas de proteger las cuentas en caso de pérdida o robo de las claves, suponen oportunidades para una mejor detección y defensa del fraude, y permiten que las carteras obtengan nuevas funciones. Aunque las carteras de contratos inteligentes existen hoy en día, son difíciles de construir porque el protocolo Ethereum necesita soportarlas mejor. Este soporte adicional se conoce como abstracción de cuentas.
Más información sobre la abstracción de cuentas
@@ -21,16 +21,16 @@ La solución a esto es usar billeteras de [contratos inteligentes](/glossary/#sm
Los usuarios que ejecutan [nodos](/glossary/#node) no tienen que confiar en terceros para que les proporcionen datos, y pueden interactuar de forma rápida, privada y sin permisos con la [cadena de bloques](/glossary/#blockchain) de Ethereum. Sin embargo, ejecutar un nodo en este momento requiere conocimientos técnicos y destinar un espacio en disco considerable, lo que significa que muchas personas deben confiar en intermediarios en su lugar.
-Hay varias actualizaciones que simplificarán y reducirán la dependencia de recursos de la ejecución de los nodos. La forma en que se almacenan los datos se cambiará para utilizar una estructura más eficiente en el espacio conocida como **Verkle Tree**. Además, con [sin estado](/roadmap/statelessness) o [vencimiento de datos](/roadmap/statelessness/#data-expiry), los nodos de Ethereum no necesitarán almacenar una copia de todos los datos del estado de Ethereum, lo que reducirá drásticamente los requisitos de espacio en el disco duro. [Los nodos ligeros](/developers/docs/nodes-and-clients/light-clients/) ofrecerán muchos beneficios de ejecutar un nodo completo, pero se pueden ejecutar fácilmente en teléfonos móviles o dentro de simples aplicaciones de navegador.
+Hay varias actualizaciones que simplificarán y reducirán la dependencia de recursos de la ejecución de los nodos. La forma en que se almacenan los datos se cambiará para utilizar una estructura más eficiente en el espacio, conocida como un **árbol de Verkle**. Además, con la [falta de estado](/roadmap/statelessness) o el [vencimiento de datos](/roadmap/statelessness/#data-expiry), los nodos de Ethereum no necesitarán almacenar una copia de todos los datos del estado de Ethereum, lo que reducirá drásticamente los requisitos de espacio en el disco duro. Los [nodos ligeros](/developers/docs/nodes-and-clients/light-clients/) ofrecerán muchos beneficios de ejecutar un nodo completo, pero se pueden ejecutar fácilmente en teléfonos móviles o dentro de simples aplicaciones de navegador.
-Más información acerca de los árboles Verkle
+Más información acerca de los árboles de Verkle
Con estas actualizaciones, las barreras para ejecutar un nodo se reducen efectivamente a cero. Los usuarios se beneficiarán de un acceso seguro y sin permiso a Ethereum sin tener que sacrificar un considerable espacio en el disco o la CPU de su ordenador o teléfono móvil, ni tampoco tendrán que depender de terceros para acceder a los datos o a la red cuando utilicen aplicaciones.
## Progreso actual {#current-progress}
-Las billeteras de contrato inteligente ya están disponibles, pero existen más actualizaciones necesarias para hacerlas todo lo descentralizadas y sin permisos como sea posible. EIP-4337 es una propuesta madura que no requiere ningún cambio en el protocolo de Ethereum. El principal contrato inteligente requerido para EIP-4337 se **implementó en marzo de 2023**.
+Las billeteras de contrato inteligente ya están disponibles, pero existen más actualizaciones necesarias para hacerlas todo lo descentralizadas y sin permisos como sea posible. EIP-4337 es una propuesta madura que no requiere ningún cambio en el protocolo de Ethereum. El contrato inteligente principal requerido para el EIP-4337 fue **desplegado en marzo de 2023**.
-**La falta de estado total todavía está en la fase de investigación** y es probable que esté a varios años de su implementación. Hay varios hitos en el camino hacia el sin estado total, incluida la caducidad de los datos, que pueden implementarse antes. Antes deben completarse otros elementos de la hoja de ruta, como los [árboles de Verkle](/roadmap/verkle-trees/) y [la separación proponente-constructor](/roadmap/pbs/).
+**La falta de estado total todavía está en la fase de investigación** y es probable que esté a varios años de su implementación. Hay varios hitos en el camino hacia el sin estado total, incluida la caducidad de los datos, que pueden implementarse antes. Primero deben completarse otros elementos de la hoja de ruta, como los [árboles de Verkle](/roadmap/verkle-trees/) y la [separación proponente-constructor](/roadmap/pbs/).
Las redes de prueba del árbol de Verkle ya están en funcionamiento, y la siguiente fase consiste en ejecutar clientes habilitados para el árbol de Verkle en redes de prueba privadas y luego públicas. Puede ayudar a acelerar el progreso implementando contratos en las redes de prueba o ejecutando clientes de la red de prueba.
From ee51eef92af5b4be491dcd70ce7d76f30be3309e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:20 -0300
Subject: [PATCH 243/589] update(i18n):
public/content/translations/es/developers/docs/scaling/index.md
---
.../es/developers/docs/scaling/index.md | 76 +++++++++----------
1 file changed, 38 insertions(+), 38 deletions(-)
diff --git a/public/content/translations/es/developers/docs/scaling/index.md b/public/content/translations/es/developers/docs/scaling/index.md
index e134924835a..3287980f966 100644
--- a/public/content/translations/es/developers/docs/scaling/index.md
+++ b/public/content/translations/es/developers/docs/scaling/index.md
@@ -1,54 +1,54 @@
---
-title: Escalado
-description: Introducción a las diferentes opciones de escalado que desarrolla actualmente la comunidad de Ethereum.
+title: Escalabilidad
+description: Una introducción a las diferentes opciones de escalabilidad que actualmente está desarrollando la comunidad de Ethereum.
lang: es
sidebarDepth: 3
---
-## Resumen del escalado {#scaling-overview}
+## Resumen de la escalabilidad {#scaling-overview}
A medida que la cantidad de usuarios de Ethereum ha ido creciendo, la cadena de bloques alcanzó ciertos límites en su capacidad. Esto ha hecho que se incrementen los costos para utilizar la red, haciendo necesarias "soluciones de escalado". Actualmente se están investigando, testeando e implementando múltiples soluciones desde distintos enfoques para lograr objetivos similares.
-El objetivo principal de la escalabilidad es aumentar la velocidad de las transacciones (finalidad más rápida) y el rendimiento de las transacciones (un mayor número de transacciones por segundo) sin sacrificar la descentralización ni la seguridad (más sobre la visión de [Ethereum](/roadmap/vision/)). En la cadena de bloques de Ethereum de capa 1, una demanda alta lleva a transacciones más lentas y a [precios de gas](/developers/docs/gas/) inviables. El incremento de la capacidad de la red en términos de velocidad y capacidad de procesamiento es fundamental para la adopción masiva y significativa de Ethereum.
+El objetivo principal de la escalabilidad es aumentar la velocidad de las transacciones (finalidad más rápida) y el rendimiento de las transacciones (mayor número de transacciones por segundo) sin sacrificar la descentralización o la seguridad. En la cadena de bloques de capa 1 de Ethereum, la alta demanda provoca transacciones más lentas y [precios del gas](/developers/docs/gas/) inviables. El incremento de la capacidad de la red en términos de velocidad y capacidad de procesamiento es fundamental para la adopción masiva y significativa de Ethereum.
A pesar de que la velocidad y la capacidad de procesamiento son importantes, es esencial que las soluciones de escalado que permitan alcanzar estos objetivos sigan siendo descentralizadas y seguras. Para evitar una progresión hacia un poder de cómputo centralizado e inseguro, es crítico mantener baja la barrera de entrada a los operadores de nodos.
-Conceptualmente, la primera categorización que hacemos en cuanto a escalado es entre escalado en cadena ("on-chain") y escalado fuera de cadena ("off-chain").
+Conceptualmente, primero categorizamos la escalabilidad como en cadena o fuera de la cadena.
## Requisitos previos {#prerequisites}
Es necesario que comprenda todos los temas fundamentales. La implementación de soluciones de escalado es compleja, ya que la tecnología no está demasiado probada y aún continúa en investigación y desarrollo.
-## Escalado en cadena {#on-chain-scaling}
+## Escalabilidad en cadena {#onchain-scaling}
-El método de escalado en cadena ("on-chain") requiere cambios en el protocolo de Ethereum ([red principal](/glossary/#mainnet) de capa 1). Durante mucho tiempo, se esperaba que la fragmentación de la cadena de bloques escale Ethereum. Esto iba a implicar dividir la cadena de bloques en piezas discretas (fragmentos o shards) para ser verificadas por subconjuntos de validadores. Sin embargo, el escalamiento con rollups de capa 2 ha tomado la delantera como técnica primaria de escalado. Esto se apoya con la adición de una nueva forma más barata de datos adjuntos a bloques de Ethereum que está especialmente diseñada para hacer que los rollups sean más baratos para los usuarios.
+La escalabilidad en cadena requiere cambios en el protocolo de Ethereum (la [red principal](/glossary/#mainnet) de capa 1). Durante mucho tiempo, se esperaba que la fragmentación de la cadena de bloques escale Ethereum. Esto iba a implicar dividir la cadena de bloques en piezas discretas (fragmentos o shards) para ser verificadas por subconjuntos de validadores. Sin embargo, el escalamiento con rollups de capa 2 ha tomado la delantera como técnica primaria de escalado. Esto se apoya con la adición de una nueva forma más barata de datos adjuntos a bloques de Ethereum que está especialmente diseñada para hacer que los rollups sean más baratos para los usuarios.
-### Fragmentación {#sharding}
+### Sharding {#sharding}
-La fragmentación, o sharding, es el proceso de división de una base de datos. Subconjuntos de validadores serían responsables de fragmentos individuales en lugar de llevar un seguimiento de todo Ethereum. El fragmentado estuvo en la [hoja de ruta](/roadmap/) de Ethereum durante mucho tiempo, y alguna vez se pensó en hacerlo realidad antes de la Fusión a prueba de participación. Sin embargo, el rápido desarrollo de los [rollups de capa 2](#layer-2-scaling) y la invención de [Danksharding](/roadmap/danksharding) (agregado de blobs de datos de rollups a bloques de Ethereum que pueden ser verificados de forma muy eficiente por los validadores) ha llevado a la comunidad de Ethereum a favorecer el escalamiento centrado en rollups en lugar de escalar por fragmentación. Esto también ayudará a simplificar la lógica de consenso de Ethereum.
+La fragmentación, o sharding, es el proceso de división de una base de datos. Subconjuntos de validadores serían responsables de fragmentos individuales en lugar de llevar un seguimiento de todo Ethereum. La fragmentación estuvo en la [hoja de ruta](/roadmap/) de Ethereum durante mucho tiempo, y una vez se tuvo la intención de lanzarla antes de la Fusión a la prueba de participación. Sin embargo, el rápido desarrollo de los [rollups de capa 2](#layer-2-scaling) y la invención de [Danksharding](/roadmap/danksharding) (añadir blobs de datos de rollup a los bloques de Ethereum que los validadores pueden verificar de forma muy eficiente) ha llevado a la comunidad de Ethereum a favorecer la escalabilidad centrada en los rollups en lugar de la escalabilidad por fragmentación. Esto también ayudará a simplificar la lógica de consenso de Ethereum.
-## Escalado fuera de cadena {#off-chain-scaling}
+## Escalabilidad fuera de la cadena {#offchain-scaling}
-Las soluciones fuera de cadena ("off-chain") se implementan de manera separada a la red principal de capa 1 y no requieren cambios en el protocolo existente de Ethereum. Algunas soluciones, llamadas soluciones de "capa 2", adquieren su seguridad directamente del consenso de Ethereum de capa 1, por ejemplo, los [rollups optimistas](/developers/docs/scaling/optimistic-rollups/), los [rollups de conocimiento cero](/developers/docs/scaling/zk-rollups/) o los [canales de estado](/developers/docs/scaling/state-channels/). Otras soluciones involucran la creación de nuevas cadenas en varias formas que derivan su seguridad por separado de la red principal, como las [cadenas laterales](#sidechains), los [validiums](#validium) o las [cadenas de plasma](#plasma). Estas soluciones se comunican con la red principal, pero obtienen su seguridad de manera diferente para perseguir una variedad de objetivos.
+Las soluciones fuera de la cadena se implementan por separado de la red principal de capa 1: no requieren cambios en el protocolo existente de Ethereum. Algunas soluciones, conocidas como soluciones de «capa 2», derivan su seguridad directamente del consenso de la capa 1 de Ethereum, como los [rollups optimistas](/developers/docs/scaling/optimistic-rollups/), los [rollups de conocimiento cero](/developers/docs/scaling/zk-rollups/) o los [canales de estado](/developers/docs/scaling/state-channels/). Otras soluciones implican la creación de nuevas cadenas en diversas formas que derivan su seguridad por separado de la red principal, como las [cadenas laterales](#sidechains), los [validiums](#validium) o las [cadenas de plasma](#plasma). Estas soluciones se comunican con la red principal, pero derivan su seguridad de forma diferente para alcanzar una variedad de objetivos.
-### Escalado de capa 2 {#layer-2-scaling}
+### Escalabilidad de capa 2 {#layer-2-scaling}
-Esta categoría de soluciones fuera de cadena obtiene su seguridad de la red principal de Ethereum.
+Esta categoría de soluciones fuera de la cadena obtiene su seguridad de la red principal de Ethereum.
Capa 2 es un término colectivo que hace referencia a soluciones diseñadas para ayudar a escalar su aplicación gestionando las transacciones fuera de la red principal de Ethereum (capa 1), al tiempo que se usa el modelo de seguridad robusto y descentralizado de la red principal. La velocidad de transacción se ve afectada cuando la red está ocupada, lo que hace que la experiencia del usuario sea pobre para ciertos tipos de dapps (aplicaciones descentralizadas). Además, a medida que la red se ve más ocupada, los precios del gas aumentan, ya que los remitentes de las transacciones intentan mejorar las ofertas entre sí. Esto puede encarecer mucho el uso de Ethereum.
-La mayoría de las soluciones de capa 2 se centran en un servidor o un clúster de servidores, a cada uno de los cuales podemos referirnos como un nodo, validador, operador, secuenciador, creador de bloques o un término similar. Dependiendo de su implementación, estos nodos de capa 2 pueden ser operados por individuos, negocios o entidades que los utilicen, por un tercero o por un gran grupo de individuos (similar a la red principal). Generalmente, las transacciones se envían a estos nodos de capa 2, en lugar de enviarse directamente a la capa 1 (red principal). Para algunas soluciones, la instancia de la capa 2 agrupa las transacciones antes de anclarlas a la capa1, luego de lo cual estas son aseguradas por la capa 1 y ya no pueden ser alteradas. Los detalles de cómo se realiza esto varían significativamente entre las diferentes tecnologías e implementaciones de la capa 2.
+La mayoría de las soluciones de capa 2 se centran en un servidor o un clúster de servidores, a cada uno de los cuales podemos referirnos como un nodo, validador, operador, secuenciador, creador de bloques o un término similar. Dependiendo de su implementación, estos nodos de capa 2 pueden ser operados por individuos, negocios o entidades que los utilicen, por un tercero o por un gran grupo de individuos (similar a la red principal). Generalmente, las transacciones se envían a estos nodos de capa 2, en lugar de enviarse directamente a la capa 1 (red principal). Para algunas soluciones, la instancia de la capa 2 las agrupa en grupos antes de anclarlas a la capa 1. Tras esta acción están aseguradas por la capa 1 y no se pueden alterar. Los detalles de cómo se realiza esto varían significativamente entre las diferentes tecnologías e implementaciones de capa 2.
Una instancia específica de capa 2 puede ser abierta y compartida por muchas aplicaciones o puede ser implementada por un proyecto y dedicada a brindar soporte exclusivamente a dicha aplicación.
#### ¿Por qué es necesaria la capa 2? {#why-is-layer-2-needed}
- La mayor cantidad de transacciones por segundo mejora ampliamente la experiencia del usuario y reduce la congestión de la red principal de Ethereum.
-- Las transacciones se agrupan en una sola transacción hacia la red principal de Ethereum, lo que reduce el gasto de gas para los usuarios y hace que Ethereum sea más inclusivo y más accesible para personas de todo el mundo.
+- Las transacciones se agrupan en una única transacción en la red principal de Ethereum, lo que reduce las tarifas de gas para los usuarios y hace que Ethereum sea más inclusivo y accesible para personas de todo el mundo.
- Las actualizaciones de escalabilidad no deben hacerse a costa de la descentralización o la seguridad; las soluciones de capa 2 reposan sobre Ethereum.
-- Hay redes de capa 2 específicas a ciertas aplicaciones que brindan su propio conjunto de eficiencias al trabajar con activos a gran escala.
+- Hay redes de capa 2 específicas para aplicaciones que aportan su propio conjunto de eficiencias cuando se trabaja con activos a escala.
-[Más información sobre la capa 2](/layer-2/).
+[Más sobre la capa 2](/layer-2/).
#### Rollups {#rollups}
@@ -56,26 +56,26 @@ Los rollups ejecutan transacciones fuera de la capa 1 y luego los datos se publi
Hay dos tipos de rollups con diferentes modelos de seguridad:
-- **Rollups optimistas**: asumen que las transacciones son válidas de forma predeterminada y solo ejecutan cómputo a través de una [**prueba de fraude**](/glossary/#fraud-proof) en caso de que haya un reclamo. [Obtenga más información sobre los rollups optimistas](/developers/docs/scaling/optimistic-rollups/).
-- **Rollups de conocimiento cero**: realizan la ejecución de las transacciones fuera de la cadena y envían una [**prueba de validez**](/glossary/#validity-proof) a la cadena. [Obtenga más información sobre los rollups de conocimiento cero](/developers/docs/scaling/zk-rollups/).
+- **Rollups optimistas**: asume que las transacciones son válidas por defecto y solo ejecuta el cálculo, a través de una [**prueba de fraude**](/glossary/#fraud-proof), en caso de una impugnación. [Más sobre los rollups optimistas](/developers/docs/scaling/optimistic-rollups/).
+- **Rollups de conocimiento cero**: ejecuta el cálculo fuera de la cadena y envía una [**prueba de validez**](/glossary/#validity-proof) a la cadena. [Más sobre los rollups de conocimiento cero](/developers/docs/scaling/zk-rollups/).
#### Canales de estado {#channels}
-Los canales de estado utilizan contratos multifirma para permitir a los participantes realizar transacciones de forma rápida y libre fuera de la cadena y luego establecer la finalidad con la red principal. Esto minimiza la congestión de la red, las tasas y los retrasos. Actualmente, hay dos tipos de canales: de estado y de pago.
+Los canales de estado utilizan contratos multifirma para permitir a los participantes realizar transacciones rápida y libremente fuera de la cadena, y luego resolver la finalidad con la red principal. Esto minimiza la congestión de la red, las tasas y los retrasos. Actualmente, hay dos tipos de canales: de estado y de pago.
-Obtenga más información acerca de los [canales de estado](/developers/docs/scaling/state-channels/).
+Obtenga más información sobre los [canales de estado](/developers/docs/scaling/state-channels/).
### Cadenas laterales {#sidechains}
-Una cadena lateral es una cadena de bloques independiente compatible con EVM que funciona en paralelo a la red principal. Son compatibles con Ethereum a través de puentes bidireccionales y funcionan bajo sus propias reglas de consenso y parámetros de bloque.
+Una cadena lateral es una cadena de bloques independiente y compatible con la EVM que se ejecuta en paralelo a la red principal. Son compatibles con Ethereum a través de puentes bidireccionales y se ejecutan bajo sus propias reglas de consenso y parámetros de bloque elegidos.
-Obtenga más información acerca de las [cadenas laterales](/developers/docs/scaling/sidechains/).
+Obtenga más información sobre las [cadenas laterales](/developers/docs/scaling/sidechains/).
### Plasma {#plasma}
-Una cadena de plasma es una cadena de bloques separada que está anclada a la cadena principal de Ethereum, y usa pruebas de fraude (como los [rollups optimistas](/developers/docs/scaling/optimistic-rollups/)) para arbitrar disputas.
+Una cadena de plasma es una cadena de bloques independiente que está anclada a la cadena principal de Ethereum y utiliza pruebas de fraude (como los [rollups optimistas](/developers/docs/scaling/optimistic-rollups/)) para arbitrar disputas.
-Obtenga más información acerca de [Plasma](/developers/docs/scaling/plasma/).
+Obtenga más información sobre [Plasma](/developers/docs/scaling/plasma/).
### Validium {#validium}
@@ -85,29 +85,29 @@ Obtenga más información sobre [Validium](/developers/docs/scaling/validium/).
## ¿Por qué se necesitan tantas soluciones de escalado? {#why-do-we-need-these}
-- Las soluciones múltiples pueden ayudar a reducir la congestión general en cualquier parte de la red y también evitan los puntos únicos de fallo.
+- Múltiples soluciones pueden ayudar a reducir la congestión general en cualquier parte de la red y también a prevenir puntos únicos de fallo.
- El conjunto es mayor que la suma de sus partes. Pueden existir diferentes soluciones y funcionar en armonía, permitiendo un efecto exponencial en la velocidad y la capacidad de procesamiento de transacciones futuras.
- No todas las soluciones requieren utilizar el algoritmo de consenso de Ethereum directamente, y las alternativas pueden ofrecer beneficios que de otro modo serían difíciles de obtener.
-- Ninguna solución de escalado es suficiente para llevar a cabo la [visión de Ethereum](/roadmap/vision/).
-## ¿Es más bien de los que aprende viendo? {#visual-learner}
+## ¿Retiene usted mejor las cosas cuando las ve? {#visual-learner}
-_Obsérvese que la explicación del video utiliza el término "Capa 2" para referirse a todas las soluciones de escalado fuera de cadena, mientras que nosotros diferenciamos "Capa 2" como una solución fuera de cadena que obtiene su seguridad a través del consenso de la red principal de capa 1._
+_Tenga en cuenta que la explicación en el vídeo utiliza el término «Capa 2» para referirse a todas las soluciones de escalabilidad fuera de la cadena, mientras que diferenciamos «Capa 2» como una solución fuera de la cadena que deriva su seguridad a través del consenso de la red principal de la capa 1._
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
- [Una hoja de ruta de Ethereum centrada en los rollups](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) _Vitalik Buterin_
-- [Análisis actualizados sobre soluciones de escalado de capa 2 para Ethereum](https://www.l2beat.com/)
-- [Evaluación de soluciones de escalado de capa 2 de Ethereum: marco de comparación](https://medium.com/matter-labs/evaluating-ethereum-l2-scaling-solutions-a-comparison-framework-b6b2f410f955)
-- [Guía incompleta sobre los rollups](https://vitalik.eth.limo/general/2021/01/05/rollup.html)
-- [Rollups de conocimiento cero (ZK) con tecnología de Ethereum: los mejores del mundo](https://hackmd.io/@canti/rkUT0BD8K)
-- [Rollups optimistas vs. rollups de conocimiento cero (ZK)](https://limechain.tech/blog/optimistic-rollups-vs-zk-rollups/)
-- [Por qué los rollups y los fragmentos de datos son la única solución sustentable para la alta escalabilidad](https://polynya.medium.com/why-rollups-data-shards-are-the-only-sustainable-solution-for-high-scalability-c9aabd6fbb48)
+- [Análisis actualizados sobre las soluciones de escalabilidad de capa 2 para Ethereum](https://www.l2beat.com/)
+- [Evaluación de las soluciones de escalabilidad de la capa 2 de Ethereum: un marco de comparación](https://medium.com/matter-labs/evaluating-ethereum-l2-scaling-solutions-a-comparison-framework-b6b2f410f955)
+- [Una guía incompleta de los rollups](https://vitalik.eth.limo/general/2021/01/05/rollup.html)
+- [ZK-Rollups impulsados por Ethereum: líderes mundiales](https://hackmd.io/@canti/rkUT0BD8K)
+- [Rollups optimistas frente a rollups de conocimiento cero](https://limechain.tech/blog/optimistic-rollups-vs-zk-rollups/)
+- [Por qué los rollups y los fragmentos de datos son la única solución sostenible para una alta escalabilidad](https://polynya.medium.com/why-rollups-data-shards-are-the-only-sustainable-solution-for-high-scalability-c9aabd6fbb48)
- [¿Qué tipo de capas 3 tienen sentido?](https://vitalik.eth.limo/general/2022/09/17/layer_3.html)
-- [Disponibilidad de datos o: cómo los rollups aprendieron a dejar de preocuparse y amar a Ethereum](https://ethereum2077.substack.com/p/data-availability-in-ethereum-rollups)
+- [Disponibilidad de datos o: cómo los rollups aprendieron a dejar de preocuparse y a amar a Ethereum](https://web.archive.org/web/20250515194659/https://web.archive.org/web/20241108192208/https://research.2077.xyz/data-availability-or-how-rollups-learned-to-stop-worrying-and-love-ethereum)
+- [La guía práctica de los rollups de Ethereum](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
-_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
From 7e9a92139312d6ac2e8447ec33b9dc0a7a677861 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:22 -0300
Subject: [PATCH 244/589] update(i18n):
public/content/translations/es/developers/docs/accounts/index.md
---
.../es/developers/docs/accounts/index.md | 59 ++++++++++---------
1 file changed, 30 insertions(+), 29 deletions(-)
diff --git a/public/content/translations/es/developers/docs/accounts/index.md b/public/content/translations/es/developers/docs/accounts/index.md
index 794f76060ae..a85f15a0138 100644
--- a/public/content/translations/es/developers/docs/accounts/index.md
+++ b/public/content/translations/es/developers/docs/accounts/index.md
@@ -4,27 +4,27 @@ description: Una explicación sobre las cuentas Ethereum, su estructura de datos
lang: es
---
-Una cuenta Ethereum con un saldo en ether (ETH), que permite realizar transacciones en Ethereum. Los usuarios pueden controlar las cuentas, o bien se pueden implementar como contratos inteligentes.
+Una cuenta Ethereum es una entidad con un saldo de ether (ETH) que puede enviar mensajes en Ethereum. Los usuarios pueden controlar las cuentas, o bien se pueden implementar como contratos inteligentes.
## Requisitos previos {#prerequisites}
-Para ayudarle a entender mejor esta página, recomendamos que lea nuestra [Introducción a Ethereum](/developers/docs/intro-to-ethereum/).
+Para ayudarle a entender mejor esta página, le recomendamos que lea primero nuestra [introducción a Ethereum](/developers/docs/intro-to-ethereum/).
## Tipos de cuenta {#types-of-account}
Ethereum tiene dos tipos de cuenta:
- Cuenta con titularidad externa (EOA): controlada por cualquier persona que tenga consigo las claves privadas
-- Cuenta de contrato: contrato inteligente implementado en la red, controlado por código. Si desea obtener más información, consulte la información sobre [contratos inteligentes](/developers/docs/smart-contracts/)
+- Cuenta de contrato: contrato inteligente implementado en la red, controlado por código. Aprenda sobre [contratos inteligentes](/developers/docs/smart-contracts/)
Ambos tipos de cuenta tienen la habilidad de:
- Recibir, almacenar y enviar ETH y tokens
- Interactuar con contratos inteligentes implementados
-### Diferencias principales {#key-differences}
+### Diferencias clave {#key-differences}
-**Titularidad externa (Externally-owned)**
+**Propiedad externa**
- Crear una cuenta no tiene ningún coste
- Se pueden iniciar transacciones
@@ -34,22 +34,23 @@ Ambos tipos de cuenta tienen la habilidad de:
**Contrato**
- Crear un contrato tiene un coste porque está usando almacenamiento en la red
-- Solo se pueden enviar transacciones como respuesta a una transacción recibida
+- Solo se pueden enviar mensajes en respuesta a la recepción de una transacción
- Las transacciones de cuentas externas a una cuenta de contrato pueden activar código, que a su vez realiza muchas acciones diferentes, como transferir tokens o incluso crear un nuevo contrato
- Las cuentas de contrato no tienen claves privadas. En su lugar, están controlados por la lógica del código de contrato inteligente
-## Información detallada de una cuenta {#an-account-examined}
+## Examen de una cuenta {#an-account-examined}
Las cuentas Ethereum tienen cuatro campos:
-- `Nonce`: contador que indica el número de transacciones enviadas desde una cuenta con titularidad externa o el número de contratos creados por una cuenta de contrato. Sólo puede ejecutarse una transacción con un nonce determinado por cada cuenta, lo que protege contra los ataques de repetición cuyas transacciones firmadas se difunden y reejecutan repetidamente.
-- `saldo`: número de wei pertenecientes a esa dirección. Wei es una denominación de ETH, y hay 1e+18 wei por ETH.
-- `codeHash`: este hash hace referencia al _código_ de una cuenta en la máquina virtual de Ethereum (EVM). Las cuentas de contrato tienen fragmentos de código programados que pueden realizar diferentes operaciones. Este código EVM se ejecuta si la cuenta recibe una llamada de mensaje. Este campo no se puede modificar, a diferencia de otros campos de la cuenta. Todos estos fragmentos de código están contenidos en la base de datos de estado con sus correspondientes hashes para su recuperación. Este valor hash es conocido como un codeHash. Para las cuentas de titularidad externa, el campo codeHash es el hash de una cadena vacía.
-- `storageRoot`: a veces conocido como hash de almacenamiento. Un hash de 256 bits del nodo raíz de un trie de Merkle Patricia que codifica el contenido de almacenamiento de la cuenta (un mapeo entre valores enteros de 256 bits), codificado en el trie como un mapeo del hash de 256 bits de Keccak de las claves enteras de 256 bits para los valores enteros de 256 bits codificados en RLP. Este trie codifica el hash del contenido de almacenamiento de esta cuenta y está vacío por defecto.
+- `nonce` – Un contador que indica el número de transacciones enviadas desde una cuenta de propiedad externa o el número de contratos creados por una cuenta de contrato. Sólo puede ejecutarse una transacción con un nonce determinado por cada cuenta, lo que protege contra los ataques de repetición cuyas transacciones firmadas se difunden y reejecutan repetidamente.
+- `balance` – El número de wei que posee esta dirección. Wei es una denominación de ETH, y hay 1e+18 wei por ETH.
+- `codeHash` – Este hash hace referencia al _código_ de una cuenta en la máquina virtual de Ethereum (EVM). Las cuentas de contrato tienen fragmentos de código programados que pueden realizar diferentes operaciones. Este código EVM se ejecuta si la cuenta recibe una llamada de mensaje. Este campo no se puede modificar, a diferencia de otros campos de la cuenta. Todos estos fragmentos de código están contenidos en la base de datos de estado con sus correspondientes hashes para su recuperación. Este valor hash es conocido como un codeHash. Para las cuentas de titularidad externa, el campo codeHash es el hash de una cadena vacía.
+- `storageRoot` – A veces conocido como un hash de almacenamiento. Un hash de 256 bits del nodo raíz de un [Trie de Merkle Patricia](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) que codifica los contenidos del almacenamiento de la cuenta (un mapeo entre valores enteros de 256 bits), codificado en el trie como un mapeo del hash Keccak de 256 bits de las claves enteras de 256 bits a los valores enteros de 256 bits codificados con RLP. Este trie codifica el hash del contenido de almacenamiento de esta cuenta y está vacío por defecto.
- _Diagrama adaptado de [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+
+_Diagrama adaptado de [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
-## Cuentas de titularidad externa y pares de claves {#externally-owned-accounts-and-key-pairs}
+## Cuentas de propiedad externa y pares de claves {#externally-owned-accounts-and-key-pairs}
Una cuenta se compone de un par de claves criptográficas: pública y privada. Estas claves ayudan a probar que una transacción fue realmente firmada por el remitente y prevenir falsificaciones. Tu clave privada es lo que utilizas para firmar transacciones, así que garantiza la custodia de los fondos relacionados con tu cuenta. Realmente nunca se almacenan criptomonedas, sino que se dispone de claves privadas: los fondos están siempre en la cadena de bloques de Ethereum.
@@ -57,7 +58,7 @@ Esto evita que actores maliciosos difundan transacciones falsas a la red, ya que
Si Alice quiere enviar ether desde su propia cuenta a la cuenta de Bob, Alice necesita crear una solicitud de transacción y enviarla a la red para su posterior verificación. El uso que Ethereum hace de la criptografía de la clave pública asegura que Alice pueda comprobar que ella ha iniciado originalmente la solicitud de transacción. Sin mecanismos criptográficos, una adversaria maliciosa llamada Eve podría emitir públicamente una solicitud similar a “enviar 5 ETH de la cuenta de Alice a la cuenta de Eve” y nadie podría verificar que no procede de Alice.
-## Creación de una cuenta {#account-creation}
+## Creación de cuentas {#account-creation}
Cuando quiera crear una cuenta, la mayoría de las bibliotecas le generarán una clave privada aleatoria.
@@ -67,34 +68,34 @@ Ejemplo:
`fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f`
-La clave pública se genera a partir de una clave privada mediante el uso del [algoritmo de firma digital de curva elíptica](https://wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm). Obtendrá una dirección pública para su cuenta al tomar los últimos 20 bytes del hash Keccak-256 de la clave pública, añadiéndole `0x` al principio.
+La clave pública se genera a partir de la clave privada utilizando el [algoritmo de firma digital de curva elíptica](https://wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm). Obtendrá una dirección pública para su cuenta tomando los últimos 20 bytes del hash Keccak-256 de la clave pública y añadiendo `0x` al principio.
-Esto significa que una cuenta de propiedad externa (EOA) tiene una dirección de 42 caracteres (segmento de 20 bytes, que es de 40 caracteres hexadecimales más el prefijo `0x`).
+Esto significa que una cuenta de propiedad externa (EOA) tiene una dirección de 42 caracteres (un segmento de 20 bytes que corresponde a 40 caracteres hexadecimales más el prefijo `0x`).
Ejemplo:
`0x5e97870f263700f46aa00d967821199b9bc5a120`
-El siguiente ejemplo muestra cómo utilizar una herramienta de firma llamada [Clef](https://geth.ethereum.org/docs/tools/clef/introduction) para generar una nueva cuenta. Clef es una herramienta de gestión y firma de cuentas que viene con el cliente de Ethereum, [Geth](https://geth.ethereum.org). El comando `clef newaccount` crea un nuevo par de claves y las guarda en un archivo de claves cifrado.
+El siguiente ejemplo muestra cómo utilizar una herramienta de firma llamada [Clef](https://geth.ethereum.org/docs/tools/clef/introduction) para generar una nueva cuenta. Clef es una herramienta de gestión de cuentas y de firma que viene incluida con el cliente de Ethereum, [Geth](https://geth.ethereum.org). El comando `clef newaccount` crea un nuevo par de claves y las guarda en un archivo de claves cifrado.
```
> clef newaccount --keystore
-Please enter a password for the new account to be created:
+Por favor, introduzca una contraseña para la nueva cuenta que se va a crear:
>
------------
-INFO [10-28|16:19:09.156] Your new key was generated address=0x5e97870f263700f46aa00d967821199b9bc5a120
-WARN [10-28|16:19:09.306] Please backup your key file path=/home/user/go-ethereum/data/keystore/UTC--2022-10-28T15-19-08.000825927Z--5e97870f263700f46aa00d967821199b9bc5a120
-WARN [10-28|16:19:09.306] Please remember your password!
-Generated account 0x5e97870f263700f46aa00d967821199b9bc5a120
+INFO [10-28|16:19:09.156] Su nueva clave fue generada address=0x5e97870f263700f46aa00d967821199b9bc5a120
+WARN [10-28|16:19:09.306] Por favor, haga una copia de seguridad de su archivo de claves path=/home/user/go-ethereum/data/keystore/UTC--2022-10-28T15-19-08.000825927Z--5e97870f263700f46aa00d967821199b9bc5a120
+WARN [10-28|16:19:09.306] ¡Por favor, recuerde su contraseña!
+Cuenta generada 0x5e97870f263700f46aa00d967821199b9bc5a120
```
[Documentación de Geth](https://geth.ethereum.org/docs)
-Es posible obtener nuevas claves públicas a partir de nuestra clave privada, pero no podemos obtener la clave privada a partir de las claves públicas. Es vital mantener sus claves privadas seguras y, como su nombre indica, **PRIVADAS**.
+Es posible derivar nuevas claves públicas a partir de su clave privada, pero no puede derivar una clave privada a partir de claves públicas. Es vital mantener sus claves privadas seguras y, como su nombre indica, **PRIVADAS**.
-Necesitas una clave privada para firmar mensajes y transacciones, lo que genera una firma. A continuación, otros pueden utilizar la firma para derivar la clave pública y autenticar así al autor del mensaje. En su aplicación, puede utilizar una biblioteca de JavaScript para enviar transacciones a la red.
+Necesita una clave privada para firmar mensajes y transacciones, lo cual genera una firma. A continuación, otros pueden utilizar la firma para derivar la clave pública y autenticar así al autor del mensaje. En su aplicación, puede utilizar una biblioteca de JavaScript para enviar transacciones a la red.
## Cuentas de contrato {#contract-accounts}
@@ -110,9 +111,9 @@ La dirección del contrato se asigna cuando un contrato se implementa en la cade
También hay otro tipo de clave en Ethereum, introducida cuando Ethereum cambió de prueba de trabajo a prueba de participación basada en el consenso. Se trata de las claves «BLS» y se utilizan para identificar validadores. Estas claves pueden añadirse eficientemente para reducir el ancho de banda necesario para que la red llegue al consenso. Sin esta agregación de claves, la participación mínima de un validador sería mucho mayor.
-[Más sobre las claves validadoras](/developers/docs/consensus-mechanisms/pos/keys/).
+[Más información sobre las claves de validador](/developers/docs/consensus-mechanisms/pos/keys/).
-## Una nota sobre las carteras {#a-note-on-wallets}
+## Una nota sobre las billeteras {#a-note-on-wallets}
Una cuenta no es una cartera. Una billetera es una interfaz o aplicación que le permite interactuar con su cuenta de Ethereum, ya sea una cuenta de propiedad externa o una dirección de contrato.
@@ -124,11 +125,11 @@ En el siguiente vídeo Austin le guiará por las funciones hash y los pares de c
-## Para seguir leyendo {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Claves para entender las cuentas de Ethereum](https://info.etherscan.com/understanding-ethereum-accounts/)-etherscan
+- [Comprender las cuentas de Ethereum](https://info.etherscan.com/understanding-ethereum-accounts/) - etherscan
-_¿Conoce algún recurso comunitario que le haya sido de ayuda? Edite la página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Temas relacionados {#related-topics}
From defac4c5911c455deca9474daa5ad39f2e35ad29 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:24 -0300
Subject: [PATCH 245/589] update(i18n):
public/content/translations/es/community/research/index.md
---
.../es/community/research/index.md | 32 +++++++++----------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/public/content/translations/es/community/research/index.md b/public/content/translations/es/community/research/index.md
index 57b8bd577c5..46c227dd550 100644
--- a/public/content/translations/es/community/research/index.md
+++ b/public/content/translations/es/community/research/index.md
@@ -57,7 +57,7 @@ La capa de ejecución se ocupa de ejecutar transacciones, ejecutar la [máquina
- establecer soporte al cliente ligero;
- investigar los límites del gas;
-- incorporar nuevas estructuras de datos (por ejemplo, Verkle Tries).
+- e incorporando nuevas estructuras de datos (p. ej., Verkle Tries).
#### Lectura de fondo {#background-reading-1}
@@ -83,7 +83,7 @@ Se requiere un nodo de Ethereum para ejecutar dos piezas de software:
1. un cliente de consenso para hacer un seguimiento de la cabeza de la cadena de bloques, bloqueos gossip y la gestión de la lógica de consenso;
2. un cliente de ejecución para dar soporte a la máquina virtual de Ethereum y ejecutar transacciones y contratos inteligentes.
-Véase la [página de nodos y clientes](/developers/docs/nodes-and-clients/) para ver más detalle de los nodos y clientes, y para obtener una lista de todas las implementaciones de clientes. También puede encontrar un historial de todas las actualizaciones de Ethereum en la [página del historial](/ethereum-forks/).
+Consulte la [página de nodos y clientes](/developers/docs/nodes-and-clients/) para ver más detalles sobre nodos y clientes y una lista de todas las implementaciones de clientes actuales. También puede encontrar un historial de todas las actualizaciones de Ethereum en la [página del historial](/ethereum-forks/).
### Clientes de ejecución {#execution-clients}
@@ -111,7 +111,7 @@ Ahora hay varios protocolos de capa 2 que escalan Ethereum utilizando diferentes
#### Investigación reciente {#recent-research-2}
- [Ordenación justa de Arbitrum para secuenciadores](https://eprint.iacr.org/2021/1465)
-- [Capa 2 de ethresear.ch](https://ethresear.ch/c/layer-2/32)
+- [Capa 2 Ethresear.ch](https://ethresear.ch/c/layer-2/32)
- [Hoja de ruta centrada en los rollups](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698)
- [L2Beat](https://l2beat.com/)
@@ -190,7 +190,7 @@ Las billeteras de Ethereum pueden ser extensiones de navegador, aplicaciones de
- [Introducción a las billeteras](/wallets/)
- [Introducción a la seguridad de las billeteras](/security/)
-- [Seguridad ethresear.ch](https://ethresear.ch/tag/security)
+- [Seguridad Ethresear.ch](https://ethresear.ch/tag/security)
- [EIP-2938: Abstracción de cuentas](https://eips.ethereum.org/EIPS/eip-2938)
- [EIP-4337: Abstracción de cuentas](https://eips.ethereum.org/EIPS/eip-4337)
@@ -271,7 +271,7 @@ El staking líquido permite a los usuarios con menos de 32 ETH recibir rendimien
#### Lectura de fondo {#background-reading-12}
-- [Ethresear.ch staking líquido](https://ethresear.ch/search?Q=liquid%20staking)
+- [Ethresear.ch staking líquido](https://ethresear.ch/search? Q=liquid%20staking)
- [Lido: El camino hacia el staking en Ethereum sin confianza](https://blog.lido.fi/the-road-to-trustless-ethereum-staking/)
- [Rocket Pool: Introducción al protocolo de staking](https://medium.com/rocket-pool/rocket-pool-staking-protocol-part-1-8be4859e5fbd)
@@ -279,7 +279,7 @@ El staking líquido permite a los usuarios con menos de 32 ETH recibir rendimien
- [Gestión de retirada de fondos de Lido](https://ethresear.ch/t/handling-withdrawals-in-lidos-eth-liquid-staking-protocol/8873)
- [Credenciales de retirada](https://ethresear.ch/t/withdrawal-credential-rotation-from-bls-to-eth1/8722)
-- [Los riesgos de los derivados del staking líquido](https://notes.ethereum.org/@djrtwo/risks-of-lsd)
+- [Los riesgos de los derivados del staking líquido] (https://notes.ethereum.org/@djrtwo/risks-of-lsd)
## Pruebas {#testing}
@@ -308,7 +308,7 @@ Se necesitan más herramientas de análisis de datos y paneles que proporcionen
#### Investigación reciente {#recent-research-14}
-- [Análisis de datos del Robust Incentives Group](https://rig.ethereum.org/)
+- [Análisis de datos del Robust Incentives Group] (https://rig.ethereum.org/)
## Aplicaciones y herramientas {#apps-and-tooling}
@@ -345,11 +345,11 @@ Un caso de uso de alto impacto para Ethereum es la capacidad de organizarse de m
Las herramientas para desarrolladores de Ethereum están evolucionando rápidamente. Hay mucha investigación y desarrollo activo por hacer en esta área general.
-#### Lectura de fondo {#lectura-de-fondo-17}
+#### Lectura de fondo {#lectura de fondo-17}
- [Herramientas por lenguaje de programación](/developers/docs/programming-languages/)
- [Marcos de desarrolladores](/developers/docs/frameworks/)
-- [Lista de herramientas de desarrollo de consenso](https://github.com/ConsenSys/ethereum-developer-tools-list)
+- [Lista de herramientas de desarrollo de consenso] (https://github.com/ConsenSys/ethereum-developer-tools-list)
- [Estándares de tokens](/desarrolladores/documentos/estándares/tokens/)
- [CryptoDevHub: herramientas de EVM](https://cryptodevhub.io/wiki/ethereum-virtual-machine-tools)
@@ -359,13 +359,13 @@ Las herramientas para desarrolladores de Ethereum están evolucionando rápidame
### Oráculos {#oracles}
-Los oráculos importan datos fuera de la cadena a la cadena de bloques de manera descentralizada y sin permisos. Obtener estos datos dentro de la cadena permite que las dapps puedan reaccionar ante los fenómenos del mundo real, como las fluctuaciones de precios en los activos del mundo real, los eventos en las aplicaciones fuera de la cadena o incluso los cambios en el clima.
+Los oráculos importan datos de fuera de la cadena a la cadena de bloques de manera descentralizada y sin requerir permiso. Llevar estos datos a la cadena permite que las dapps puede reaccionar a fenómenos del mundo real como fluctuaciones de precios en activos del mundo real, eventos en aplicaciones externas a la cadena o incluso cambios en el tiempo.
#### Lectura de fondo {#background-reading-18}
- [Introducción a los oráculos](/developers/docs/oracles/)
-#### Investigación reciente {#recent-research-18}
+#### Búsqueda reciente {#recent-research-18}
- [Encuesta de oráculos de cadenas de bloques](https://arxiv.org/pdf/2004.07140.pdf)
- [Documento técnico de Chainlink](https://chain.link/whitepaper)
@@ -374,21 +374,21 @@ Los oráculos importan datos fuera de la cadena a la cadena de bloques de manera
Por lo general, los hackeos en Ethereum se aprovechan de puntos flacos en aplicaciones individuales y no en el propio protocolo. Los hackers y los desarrolladores de aplicaciones están enfrascados en una carrera armamentística para desarrollar nuevos ataques y defensas. Esto significa que siempre es necesario realizar una investigación y un desarrollo importantes para mantener las aplicaciones a salvo de los hackeos.
-#### Lectura de fondo {#lectura-de-fondo-19}
+#### Lectura de fondo {#lectura de fondo-19}
-- [Informe de explotación de agujero de gusano](https://blog.chainalysis.com/reports/wormhole-hack-february-2022/)
+- [Informe de explotación de agujero de gusano] (https://blog.chainalysis.com/reports/wormhole-hack-february-2022/)
- [Lista de hackeo de contratos de Ethereum post mórtem](https://forum.openzeppelin.com/t/list-of-ethereum-smart-contracts-post-mortems/1191)
-- [Rekt News](https://twitter.com/RektHQ?s=20\&t=3otjYQdM9Bqk8k3n1a1Adg)
+- [Rekt News](https://x.com/RektHQ?s=20&t=3otjYQdM9Bqk8k3n1a1Adg)
#### Investigación reciente {#recent-research-19}
-- [ethresear.ch Aplicaciones](https://ethresear.ch/c/applications/18)
+- [Applicaciones Ethresear.ch](https://ethresear.ch/c/applications/18)
### Pila de tecnología {#technology-stack}
La descentralización de toda la pila de tecnología de Ethereum es un área de investigación importante. Actualmente, las dapps en Ethereum suelen tener algunos puntos de centralización, ya que dependen de herramientas o infraestructuras centralizadas.
-#### Lectura de fondo {#lectura-de-fondo-20}
+#### Lectura de fondo {#lectura de fondo-20}
- [Pila de Ethereum](/developers/docs/ethereum-stack/)
- [Coinbase: Introducción al Stack Web3](https://blog.coinbase.com/a-simple-guide-to-the-web3-stack-785240e557f0)
From 23d8e942208e95812ec48efbfbde34d6eb51b71a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:25 -0300
Subject: [PATCH 246/589] update(i18n):
public/content/translations/es/developers/docs/web2-vs-web3/index.md
---
.../es/developers/docs/web2-vs-web3/index.md | 44 +++++++++----------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/public/content/translations/es/developers/docs/web2-vs-web3/index.md b/public/content/translations/es/developers/docs/web2-vs-web3/index.md
index 25f3ce33caf..237a82640aa 100644
--- a/public/content/translations/es/developers/docs/web2-vs-web3/index.md
+++ b/public/content/translations/es/developers/docs/web2-vs-web3/index.md
@@ -1,14 +1,14 @@
---
-title: Comparación entre web2 y web3
-description:
+title: Web2 versus Web3
+description: Compare servicios centralizados de Web2 con aplicaciones Web3 descentralizadas construidas sobre la tecnología de cadena de bloques de Ethereum.
lang: es
---
Web2 se refiere a la versión de Internet que la mayoría de nosotros conocemos hoy. Internet está dominada por compañías que prestan servicios a cambio de sus datos personales. Web3, en el contexto de Ethereum, se refiere a las aplicaciones descentralizadas que se ejecutan en la cadena de bloques. Estas son aplicaciones que permiten a cualquiera participar sin comercializar sus datos personales.
-¿Busca un recurso para principiantes? Vea nuestra [introducción a la Web3](/web3/).
+¿Busca un recurso para principiantes? Consulte nuestra [introducción a la web3](/web3/).
-## Ventajas de Web3 {#web3-benefits}
+## Ventajas de la Web3 {#web3-benefits}
Muchos desarrolladores de Web3 han elegido construir DApps debido a la descentralización inherente a Ethereum:
@@ -19,7 +19,7 @@ Muchos desarrolladores de Web3 han elegido construir DApps debido a la descentra
## Comparaciones prácticas {#practical-comparisons}
-| Web 2.0 | Web 3.0 |
+| Web 2.0 | Web 3.0 |
| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| Twitter puede censurar cualquier cuenta o tweet | Los tweets de Web3 no serían censurables porque el control es descentralizado |
| Los servicios de pago pueden decidir no permitir pagos por ciertos tipos de trabajo | Las aplicaciones de pago web3 no requieren datos personales y no pueden evitar pagos |
@@ -27,36 +27,36 @@ Muchos desarrolladores de Web3 han elegido construir DApps debido a la descentra
Esto no significa que todos los servicios deban convertirse en una DApp. Estos ejemplos son ilustrativos de las principales diferencias entre los servicios Web 2 y Web3.
-## Limitaciones de web3 {#web3-limitations}
+## Limitaciones de la Web3 {#web3-limitations}
Web3 tiene algunas limitaciones ahora mismo:
- Escalabilidad: Las transacciones son más lentas en web3 porque son descentralizadas. Los cambios de estado, como por ejemplo los pagos, deberán ser procesados por un nodo y diseminados en la red.
-- UX: Interactuar con aplicaciones web3 puede requerir pasos adicionales, software y formación. Esto puede ser un obstáculo para su implantación.
+- UX: interactuar con las aplicaciones web3 puede requerir pasos adicionales, software y formación. Esto puede ser un obstáculo para su implantación.
- Accesibilidad: la falta de integración en los navegadores web modernos hace que web3 sea menos accesible para la mayoría de los usuarios.
- Coste: Las DApps más exitosas introducen partes muy pequeñas de su código en la cadena de bloques, ya que resulta costoso.
-## Centralización vs descentralización {#centralization-vs-decentralization}
+## Centralización frente a descentralización {#centralization-vs-decentralization}
En siguiente la tabla, esbozamos algunas de las ventajas y desventajas de las redes digitales centralizadas y descentralizadas.
-| Sistemas centralizados | Sistemas descentralizados |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| Redes de bajo diámetro (todos los participantes están conectados a una autoridad central); la información se propaga de forma rápida, ya que esta información se maneja por una autoridad central con grandes recursos computacionales. | Los participantes más lejanos de la red pueden estar potencialmente alejados entre sí. La información transmitida de un lado de la red puede tardar mucho tiempo en llegar al otro lado. |
-| Generalmente tienen un mayor rendimiento (mayor rendimiento: menos recursos computacionales totales) y son más fáciles de implementar. | Generalmente tienen un menor rendimiento (menor rendimiento: más recursos computacionales totales) y son más complejas de implementar. |
-| En caso de que haya datos contradictorios, la resolución es clara y sencilla: la autoridad central tiene la última palabra. | Se necesita un protocolo (a menudo complejo) para la resolución de conflictos si los pares hacen afirmaciones contradictorias sobre el estado de los datos en los que los participantes deben ser sincronizados. |
-| Punto único de falla: Los actores malintencionados pueden derribar la red si se dirigen a la autoridad central. | No hay un único punto de falla: La red todavía puede funcionar incluso si una gran proporción de participantes son atacados/eliminados. |
+| Sistemas centralizados | Sistemas descentralizados |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Redes de bajo diámetro (todos los participantes están conectados a una autoridad central); la información se propaga de forma rápida, ya que esta información se maneja por una autoridad central con grandes recursos computacionales. | Los participantes más lejanos de la red pueden estar potencialmente alejados entre sí. La información transmitida de un lado de la red puede tardar mucho tiempo en llegar al otro lado. |
+| Generalmente tienen un mayor rendimiento (mayor rendimiento: menos recursos computacionales totales) y son más fáciles de implementar. | Generalmente tienen un menor rendimiento (menor rendimiento: más recursos computacionales totales) y son más complejas de implementar. |
+| En caso de que haya datos contradictorios, la resolución es clara y sencilla: la autoridad central tiene la última palabra. | Se necesita un protocolo (a menudo complejo) para la resolución de conflictos si los pares hacen afirmaciones contradictorias sobre el estado de los datos en los que los participantes deben ser sincronizados. |
+| Punto único de falla: Los actores malintencionados pueden derribar la red si se dirigen a la autoridad central. | No hay un único punto de falla: La red todavía puede funcionar incluso si una gran proporción de participantes son atacados/eliminados. |
| La coordinación entre los participantes en la red es mucho más fácil, y es manejada por una autoridad central. La autoridad central puede obligar a los participantes de la red a adoptar actualizaciones, actualizaciones de protocolo, etc., con muy poca fricción. | La coordinación es a menudo difícil, ya que ningún agente tiene la última palabra en las decisiones a nivel de red, actualizaciones de protocolos, etc. En el peor de los casos, la red es propensa a fracturarse cuando hay desacuerdos sobre los cambios de protocolo. |
-| La autoridad central puede censurar datos, lo que podría impedir que partes de la red interactúen con el resto de la red. | La censura es mucho más difícil, ya que la información tiene muchas maneras de propagarse a través de la red. |
-| La participación en la red está controlada por la autoridad central. | Cualquiera puede participar en la red; no hay “guardianes” Idealmente, el costo de participación es muy bajo. |
+| La autoridad central puede censurar datos, lo que podría impedir que partes de la red interactúen con el resto de la red. | La censura es mucho más difícil, ya que la información tiene muchas maneras de propagarse a través de la red. |
+| La participación en la red está controlada por la autoridad central. | Cualquiera puede participar en la red; no hay “guardianes” Idealmente, el costo de participación es muy bajo. |
Tenga en cuenta que estos son patrones generales y puede que no se mantengan auténticos en cada red. Además, en realidad el grado en que una red está centralizada/descentralizada reside en un espectro; ninguna red está enteramente centralizada ni totalmente descentralizada.
-## Más lectura {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [¿Qué es la Web3?](/web3/):_ethereum.org_
+- [¿Qué es la Web3?](/web3/) - _ethereum.org_
- [La arquitectura de una aplicación Web 3.0](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
-- [El significado de la descentralización](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) _6 de Febrero de 2017, Vitalik Buterin_
-- [Por qué la descentralización importa](https://medium.com/s/story/why-decentralization-matters-5e3f79f7638e) _18 de Febrero de 2018, Chris Dixon_
-- [¿Qué es la Web 3.0 y por qué importa?](https://medium.com/fabric-ventures/what-is-web-3-0-why-it-matters-934eb07f3d2b) _31 de diciembre de 2019, Max Mersch y Richard Muirhead_
-- [¿Por qué necesitamos la Web 3.0](https://medium.com/@gavofyork/why-we-need-web-3-0-5da4f2bf95ab) _Sep 12 de 2018, Gavin Wood_
+- [El significado de la descentralización](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) _6 de febrero de 2017 - Vitalik Buterin_
+- [Por qué es importante la descentralización](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) _18 de febrero de 2018 - Chris Dixon_
+- [Qué es la Web 3.0 y por qué es importante](https://medium.com/fabric-ventures/what-is-web-3-0-why-it-matters-934eb07f3d2b) _31 de diciembre de 2019 - Max Mersch y Richard Muirhead_
+- [Por qué necesitamos la Web 3.0](https://gavofyork.medium.com/why-we-need-web-3-0-5da4f2bf95ab) _12 de septiembre de 2018 - Gavin Wood_
From c52cfe405c859ad255a051b00fc378314296db6f Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:27 -0300
Subject: [PATCH 247/589] update(i18n):
public/content/translations/es/developers/docs/transactions/index.md
---
.../es/developers/docs/transactions/index.md | 110 ++++++++++--------
1 file changed, 60 insertions(+), 50 deletions(-)
diff --git a/public/content/translations/es/developers/docs/transactions/index.md b/public/content/translations/es/developers/docs/transactions/index.md
index a660306fd67..ef29575cde8 100644
--- a/public/content/translations/es/developers/docs/transactions/index.md
+++ b/public/content/translations/es/developers/docs/transactions/index.md
@@ -1,20 +1,21 @@
---
title: Transacciones
-description: 'Descripción general sobre las transacciones de Ethereum: Cómo funcionan, su estructura de datos y cómo enviarlas a través de una aplicación.'
+description: "Descripción general sobre las transacciones de Ethereum: Cómo funcionan, su estructura de datos y cómo enviarlas a través de una aplicación."
lang: es
---
-Las transacciones son instrucciones firmadas criptográficamente que se emiten desde cuentas. Una cuenta iniciará una transacción para actualizar el estado de la red Ethereum. La transacción más sencilla es transferir ETH de una cuenta a otra.
+Las transacciones son instrucciones firmadas criptográficamente desde las cuentas. Una cuenta iniciará una transacción para actualizar el estado de la red Ethereum. La transacción más sencilla es transferir ETH de una cuenta a otra.
## Requisitos previos {#prerequisites}
-Para ayudarle a comprender mejor esta página, le recomendamos leer primero la sección sobre [Cuentas](/developers/docs/accounts/), así como nuestra [introducción a Ethereum](/developers/docs/intro-to-ethereum/).
+Para ayudarle a comprender mejor esta página, le recomendamos que lea primero [Cuentas](/developers/docs/accounts/) y nuestra [introducción a Ethereum](/developers/docs/intro-to-ethereum/).
## ¿Qué es una transacción? {#whats-a-transaction}
Una transacción de Ethereum hace referencia a una acción iniciada por una cuenta de titularidad externa, en otras palabras, una cuenta administrada por una persona, no un contrato. Por ejemplo, si Bob le envía 1 ETH a Alice, este debe adeudarse de la cuenta de Bob y acreditarse en la cuenta de Alice. Esta acción según la que se modifica el estado de la red tiene lugar en una transacción.
- _Diagrama adaptado de [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+
+_Diagrama adaptado de [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
Las transacciones, que modifican el estado de la EVM, se deben transmitir a toda la red. Cualquier nodo puede transmitir una solicitud para que se ejecute una transacción en la EVM; después de que esto suceda, un validador ejecutará la transacción y propagará el cambio de estado resultante al resto de la red.
@@ -22,17 +23,17 @@ Las transacciones requieren una tarifa y deben incluirse en un bloque validado.
Una transacción enviada incluye la siguiente información:
-- `desde`: la dirección del remitente, que firmará la transacción. Esta será una cuenta de titularidad externa, ya que las cuentas contractuales no pueden enviar transacciones.
-- `a`: la dirección de recepción (si es una cuenta de propiedad externa, la transacción transferirá valor. Si se trata de un contrato, la transacción ejecutará el código del contrato).
-- `Firma`: identificador del remitente. Se genera cuando la clave privada del remitente firma la transacción y confirma que el remitente ha autorizado esta transacción.
-- `Nonce`: un contador que se incrementa secuencialmente y que indica el número de transacción de la cuenta.
-- `Valor`: cantidad de ETH a transferir del remitente al destinatario (denominada en WEI, donde 1ETH equivale a 1e+18wei).
-- `datos de entrada`: campo opcional para incluir datos arbitrarios
-- `gasLimit`: cantidad máxima de unidades de gas que puede consumir la transacción. La[EVM](/developers/docs/evm/opcodes)especifica las unidades de gas necesarias para cada paso de cálculo.
-- `maxPriorityFeePerGas`: cantidad máxima de gas consumido que se incluirá como propina al validador.
-- `maxFeePerGas`: máxima comision por unidad de gas destinada al pago por la transacción (exclusiva de `baseFeePerGas` y `maxPriorityFeePerGas`)
+- `from`: la dirección del remitente que firmará la transacción. Esta será una cuenta de titularidad externa, ya que las cuentas contractuales no pueden enviar transacciones
+- `to`: la dirección de recepción (si es una cuenta de propiedad externa, la transacción transferirá valor. Si se trata de un contrato, la transacción ejecutará el código del contrato).
+- `signature`: el identificador del remitente. Se genera cuando la clave privada del remitente firma la transacción y confirma que el remitente ha autorizado esta transacción.
+- `nonce`: un contador que se incrementa secuencialmente y que indica el número de transacción de la cuenta.
+- `value`: la cantidad de ETH que se transferirá del remitente al destinatario (denominada en WEI, donde 1 ETH equivale a 1e+18 wei).
+- `input data`: campo opcional para incluir datos arbitrarios.
+- `gasLimit`: la cantidad máxima de unidades de gas que puede consumir la transacción. La [EVM](/developers/docs/evm/opcodes) especifica las unidades de gas necesarias para cada paso computacional.
+- `maxPriorityFeePerGas`: el precio máximo del gas consumido que se incluirá como propina para el validador.
+- `maxFeePerGas`: la tarifa máxima por unidad de gas que se está dispuesto a pagar por la transacción (incluye `baseFeePerGas` y `maxPriorityFeePerGas`).
-El gas es una referencia al cálculo necesario para que el validador procese la transacción. Los usuarios tienen que pagar una tarifa por ese cálculo. Los valores `gasLimit` y `maxPriorityFeePerGas` determinan la tarifa por transacción máxima que se le paga al validador. [Mas información sobre el gas](/developers/docs/gas/).
+El gas es una referencia al cálculo necesario para que el validador procese la transacción. Los usuarios tienen que pagar una tarifa por ese cálculo. El `gasLimit` y `maxPriorityFeePerGas` determinan la comisión máxima de la transacción que se paga al validador. [Más sobre el gas](/developers/docs/gas/).
El objeto de la transacción se verá de la siguiente forma:
@@ -52,7 +53,7 @@ Es necesario firmar este objeto mediante la clave privada del emisor. De esta fo
Un cliente de Ethereum como Geth gestionará el proceso de firma.
-Ejemplo de una llamada [JSON-RPC](/developers/docs/apis/json-rpc):
+Ejemplo de llamada [JSON-RPC](/developers/docs/apis/json-rpc):
```json
{
@@ -99,22 +100,26 @@ Ejemplo de respuesta:
}
```
-- `Transacción en bruto` es la transacción firmada en [Prefijo de longitud recursiva (RLP)](/developers/docs/data-structures-and-encoding/rlp) formulario codificado
-- la propiedad `tx` es la transaccion firmada en formato JSON
+- `raw` es la transacción firmada en formato codificado de [prefijo de longitud recursiva (RLP)](/developers/docs/data-structures-and-encoding/rlp).
+- la propiedad `tx` es la transacción firmada en formato JSON.
Mediante el hash de la firma, se puede demostrar criptográficamente que la transacción proviene del emisor y que se envió a la red.
### El campo de datos {#the-data-field}
-La gran mayoría de las transacciones acceden a un contrato desde una cuenta de titularidad externa. La mayoría de los contratos están escritos en Solidity e interpretan su campo de datos por [la interfaz binaria de la aplicación (ABI)](/glossary/#abi).
+La gran mayoría de las transacciones acceden a un contrato desde una cuenta de titularidad externa.
+La mayoría de los contratos se escriben en Solidity e interpretan su campo de datos de acuerdo con la [interfaz binaria de aplicación (ABI)](/glossary/#abi).
-Los primeros cuatro bytes especifican qué función de llamar, usando el hash del nombre y los argumentos de la función. A veces se puede identificar la función desde el selector usando [esta base de datos](https://www.4byte.directory/signatures/).
+Los primeros cuatro bytes especifican qué función de llamar, usando el hash del nombre y los argumentos de la función.
+A veces puede identificar la función desde el selector utilizando [esta base de datos](https://www.4byte.directory/signatures/).
-El resto de los datos de llamada son los argumentos, [codificados como se indica en las especificaciones ABI](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding).
+El resto de los datos de la llamada (calldata) son los argumentos, [codificados como se especifica en las especificaciones de la ABI](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding).
-Por ejemplo, veamos [esta transacción](https://etherscan.io/tx/0xd0dcbe007569fcfa1902dae0ab8b4e078efe42e231786312289b1eee5590f6a1). Use **Clic para ver más** para ver los datos de llamada.
+Por ejemplo, echemos un vistazo a [esta transacción](https://etherscan.io/tx/0xd0dcbe007569fcfa1902dae0ab8b4e078efe42e231786312289b1eee5590f6a1).
+Haga clic en **Click to see More** para ver los datos de la llamada (calldata).
-El selector de función es `0xa9059cbb`. Hay varias [funciones conocidas con esta firma](https://www.4byte.directory/signatures/?bytes4_signature=0xa9059cbb). En este caso [el código fuente del contrato](https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#code) se ha sido subido a Etherscan, así que sabemos que la función es `transferencia (dirección,uint256)`.
+El selector de función es `0xa9059cbb`. Hay varias [funciones conocidas con esta firma](https://www.4byte.directory/signatures/?bytes4_signature=0xa9059cbb).
+En este caso, [el código fuente del contrato](https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#code) se ha subido a Etherscan, por lo que sabemos que la función es `transfer(address,uint256)`.
El resto de los datos es:
@@ -123,7 +128,9 @@ El resto de los datos es:
000000000000000000000000000000000000000000000000000000003b0559f4
```
-De acuerdo con las especificaciones ABI, valores enteros (como direcciones, que son enteros de 20 bytes) aparecen en el ABI como palabras de 32 bytes, agregadas con ceros en el frente. Así que sabemos que la dirección `a` es [`4f6742badb049791cd9a37ea913f2bac38d01279`](https://etherscan.io/address/0x4f6742badb049791cd9a37ea913f2bac38d01279). El `valor` es 0x3b0559f4 = 990206452.
+De acuerdo con las especificaciones ABI, valores enteros (como direcciones, que son enteros de 20 bytes) aparecen en el ABI como palabras de 32 bytes, agregadas con ceros en el frente.
+Así que sabemos que la dirección `to` es [`4f6742badb049791cd9a37ea913f2bac38d01279`](https://etherscan.io/address/0x4f6742badb049791cd9a37ea913f2bac38d01279).
+El `value` es 0x3b0559f4 = 990206452.
## Tipos de transacciones {#types-of-transactions}
@@ -135,9 +142,9 @@ En Ethereum hay algunos tipos diferentes de transacciones:
### Sobre el gas {#on-gas}
-Tal y como se ha mencionado, las transacciones necesitan [gas](/developers/docs/gas/) para ejecutarse. Las transacciones de transferencia simple requieren 21.000 unidades de gas.
+Como se ha mencionado, las transacciones cuestan [gas](/developers/docs/gas/) para ejecutarse. Las transacciones de transferencia simple requieren 21.000 unidades de gas.
-De modo que, para que Bob pueda enviar a Alice 1 ETH con un coste de `baseFeePerGas` de 190 gwei y de `maxPriorityFeePerGas` de 10 gwei, Bob tendrá que pagar la siguiente tarifa:
+Así que, para que Bob envíe 1 ETH a Alice con una `baseFeePerGas` de 190 gwei y una `maxPriorityFeePerGas` de 10 gwei, Bob tendrá que pagar la siguiente comisión:
```
(190 + 10) * 21000 = 4,200,000 gwei
@@ -145,35 +152,36 @@ De modo que, para que Bob pueda enviar a Alice 1 ETH con un coste de `baseFeePer
0,0042 ETH
```
-En la cuenta de Bobs se cargará**-1,0042 ETH** (1 ETH por Alice + 0,0042 ETH en tasas de gas)
+Se cargará en la cuenta de Bob **-1,0042 ETH** (1 ETH para Alice + 0,0042 ETH en comisiones de gas).
-A la cuenta de Alice se añadirán **+1,0 ETH**
+Se abonará en la cuenta de Alice **+1,0 ETH**.
-La tarifa base que se consumirá será de **0,00399 ETH**
+La tarifa base se quemará **-0,00399 ETH**.
-El validador se queda con una propina de **+0,000210 ETH**
+El validador se queda con la propina **+0,000210 ETH**.
-
- _Diagrama adaptado de [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+
+_Diagrama adaptado de [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
Cualquier gas no utilizado en una transacción se reembolsa a la cuenta de usuario.
-### Interacciones con contratos inteligentes {#smart-contract-interactions}
+### Interacciones de los contratos inteligentes {#smart-contract-interactions}
Se requiere gas para cualquier transacción que involucre un contrato inteligente.
-Los contratos inteligentes también pueden presentar funciones conocidas como [`view`](https://docs.soliditylang.org/en/latest/contracts.html#view-functions) o [`pure`](https://docs.soliditylang.org/en/latest/contracts.html#pure-functions), que no afectan el estado del contrato. Como tal, invocar estas funciones desde una EOA no requerirá gas. La llamada RPC subyacente para este escenario es [`eth_call`](/developers/docs/apis/json-rpc#eth_call).
+Los contratos inteligentes también pueden contener funciones conocidas como funciones [`view`](https://docs.soliditylang.org/en/latest/contracts.html#view-functions) o [`pure`](https://docs.soliditylang.org/en/latest/contracts.html#pure-functions), que no alteran el estado del contrato. Como tal, invocar estas funciones desde una EOA no requerirá gas. La llamada RPC subyacente para este escenario es [`eth_call`](/developers/docs/apis/json-rpc#eth_call).
-A diferencia de cuando se accede usando `eth_call`, estas funciones `view` o `pure` también se llaman comúnmente de forma interna (es decir, desde el contrato en sí o de otro contrato), lo que sí cuesta gas.
+A diferencia de cuando se accede mediante `eth_call`, estas funciones `view` o `pure` también se suelen llamar internamente (es decir, desde el propio contrato o desde otro contrato), lo que sí cuesta gas.
-## Ciclo de vida de la transacción {#transaction-lifecycle}
+## Ciclo de vida de una transacción {#transaction-lifecycle}
Una vez enviada la transacción ocurre lo siguiente:
-1. Se genera criptográficamente un hash de transacción: `0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017`
+1. Un hash de transacción se genera criptográficamente:
+ `0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017`
2. Luego, la transacción se transmite a la red y se añade a un grupo de transacciones que consta de todas las demás transacciones que estan pendientes en la red.
3. Un validador debe elegir su transacción e incluirla en un bloque para verificarla antes de considerarla «satisfactoria».
-4. A medida que pasa el tiempo, el bloque que contiene su transacción se actualizará a «justificado» y luego a «finalizado». Estas actualizaciones agudizan la certeza de que su transacción se complete satisfactoriamente y nunca se altere. Una vez que el bloque está «finalizado», este sólo podrá cambiarse mediante un ataque a escala de red que costaría miles de millones de dólares.
+4. A medida que pasa el tiempo, el bloque que contiene su transacción se actualizará a «justificado» y luego a «finalizado». Estas actualizaciones hacen que sea mucho más seguro que su transacción se haya realizado correctamente y que nunca se vaya a alterar. Una vez que un bloque está «finalizado», solo se puede cambiar mediante un ataque a nivel de red que costaría miles de millones de dólares.
## Una demostración visual {#a-visual-demo}
@@ -181,13 +189,13 @@ Observe a Austin mientras le guía por las transacciones, el gas y la minería.
-## Typed Transaction Envelope {#typed-transaction-envelope}
+## Sobre de transacción con tipo {#typed-transaction-envelope}
-Inicialmente, Ethereum tenía un formato único para las transacciones. Cada transacción contenía un nonce, un precio de gas, un límite de gas, una dirección, un importe, datos, v, r y s. Estos campos se [codifican en RLP](/developers/docs/data-structures-and-encoding/rlp/), para tener un aspecto similar a este:
+Inicialmente, Ethereum tenía un formato único para las transacciones. Cada transacción contenía un nonce, un precio de gas, un límite de gas, una dirección, un importe, datos, v, r y s. Estos campos están [codificados en RLP](/developers/docs/data-structures-and-encoding/rlp/) y tienen un aspecto similar a este:
`RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])`
-Ethereum ha mejorado y ahora es compatible con múltiples tipos de transacciones, lo que permite que se implementen nuevas características como listas de acceso y [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) sin afectar los formatos de transacción antiguos.
+Ethereum ha evolucionado para admitir múltiples tipos de transacciones, lo que permite que se implementen nuevas características como listas de acceso y [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) sin afectar a los formatos de transacción heredados.
[EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) es lo que permite este comportamiento. Las transacciones se interpretan como:
@@ -195,27 +203,29 @@ Ethereum ha mejorado y ahora es compatible con múltiples tipos de transacciones
Donde los campos indican:
-- `TransactionType` - un número entre 0 y 0x7f, para un total de 128 posibles tipos de transacción.
-- `TransactionPayload`: una matriz de bytes arbitraria definida según el tipo de transacción.
+- `TransactionType`: un número entre 0 y 0x7f, para un total de 128 tipos de transacción posibles.
+- `TransactionPayload`: un array de bytes arbitrario definido por el tipo de transacción.
-Según el valor `TransactionType`, una transacción se puede clasificar como:
+Según el valor de `TransactionType`, una transacción se puede clasificar como:
-1. **Transacciones de Tipo 0 (heredadas):** El formato de transacción original utilizado desde el lanzamiento de Ethereum. No incluyen características de [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) como cálculos dinámicos de tarifas de gas o listas de acceso para contratos inteligentes. Las transacciones heredadas carecen de un prefijo específico que indique su tipo en su forma serializada, comenzando con el byte `0xf8` cuando se utiliza la codificación de [Prefijo de Longitud Recursiva (RLP)](/developers/docs/data-structures-and-encoding/rlp). El valor de TransactionType para estas transacciones es `0x0`.
+1. **Transacciones de tipo 0 (heredadas):** el formato de transacción original utilizado desde el lanzamiento de Ethereum. No incluyen características de [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), como cálculos dinámicos de las comisiones de gas o listas de acceso para los contratos inteligentes. Las transacciones heredadas carecen de un prefijo específico que indique su tipo en su forma serializada y empiezan con el byte `0xf8` cuando se utiliza la codificación de [prefijo de longitud recursiva (RLP)](/developers/docs/data-structures-and-encoding/rlp). El valor de TransactionType para estas transacciones es `0x0`.
-2. **Transacciones de tipo 1:** Introducidas en [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) como parte de la [Actualización Berlín](/ethereum-forks/#berlin) de Ethereum, estas transacciones incluyen un parámetro `accessList`. Esta lista especifica direcciones y claves de almacenamiento a las que la transacción espera acceder, ayudando a reducir potencialmente los costos de [gas](/developers/docs/gas/) para transacciones complejas que involucren contratos inteligentes. Los cambios en el mercado de tarifas de EIP-1559 no se incluyen en las transacciones de Tipo 1. Las transacciones de Tipo 1 también incluyen un parámetro `yParity`, que puede ser `0x0` o `0x1`, lo que indica la igualdad del valor y de la firma secp256k1. Se identifican comenzando con el byte `0x01`, y su valor TransactionType es `0x1`.
+2. **Transacciones de tipo 1:** introducidas en el [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) como parte de la [actualización Berlín](/ethereum-forks/#berlin) de Ethereum, estas transacciones incluyen un parámetro `accessList`. Esta lista especifica las direcciones y las claves de almacenamiento a las que la transacción espera acceder, lo que ayuda a reducir potencialmente los costes de [gas](/developers/docs/gas/) para transacciones complejas que involucran contratos inteligentes. Los cambios en el mercado de tarifas de EIP-1559 no se incluyen en las transacciones de Tipo 1. Las transacciones de tipo 1 también incluyen un parámetro `yParity`, que puede ser `0x0` o `0x1`, lo que indica la paridad del valor y de la firma secp256k1. Se identifican porque empiezan con el byte `0x01`, y su valor de TransactionType es `0x1`.
-3. **Transacciones de Tipo 2**: Comúnmente conocidas como transacciones EIP-1559, son transacciones introducidas en [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), en la [Actualización London](/ethereum-forks/#london) de Ethereum. Se han convertido en el tipo de transacción estándar en la red Ethereum. Estas transacciones introducen un nuevo mecanismo de mercado de tarifas que mejora la previsibilidad separando la tarifa de transacción en una tarifa base y una tarifa prioritaria. Comienzan con el byte `0x02` e incluyen campos como `maxPriorityFeePerGas` y `maxFeePerGas`. Las transacciones de Tipo 2 son ahora las predeterminadas debido a su flexibilidad y eficiencia, especialmente favorecidas durante los períodos de alta congestión de la red por su capacidad para ayudar a los usuarios a gestionar las tarifas de transacción de manera más predecible. El valor de TransactionType para estas transacciones es `0x2`.
+3. Las **transacciones de tipo 2**, comúnmente conocidas como transacciones EIP-1559, son transacciones introducidas en el [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), en la [actualización London](/ethereum-forks/#london) de Ethereum. Se han convertido en el tipo de transacción estándar en la red Ethereum. Estas transacciones introducen un nuevo mecanismo de mercado de tarifas que mejora la previsibilidad separando la tarifa de transacción en una tarifa base y una tarifa prioritaria. Empiezan con el byte `0x02` e incluyen campos como `maxPriorityFeePerGas` y `maxFeePerGas`. Las transacciones de Tipo 2 son ahora las predeterminadas debido a su flexibilidad y eficiencia, especialmente favorecidas durante los períodos de alta congestión de la red por su capacidad para ayudar a los usuarios a gestionar las tarifas de transacción de manera más predecible. El valor de TransactionType para estas transacciones es `0x2`.
+4. Las **transacciones de tipo 3 (blob)** se introdujeron en el [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) como parte de la [actualización Dencun](/ethereum-forks/#dencun) de Ethereum. Estas transacciones están diseñadas para manejar datos «blob» (objetos grandes binarios) de manera más eficiente, beneficiando particularmente a los rollups de capa 2 al proporcionar una forma de publicar datos en la red Ethereum a un coste menor. Las transacciones de blob incluyen campos adicionales como `blobVersionedHashes`, `maxFeePerBlobGas` y `blobGasPrice`. Empiezan con el byte `0x03` y su valor de TransactionType es `0x3`. Las transacciones de Blob representan una mejora significativa en la disponibilidad de datos y las capacidades de escalabilidad de Ethereum.
+5. Las **transacciones de tipo 4** se introdujeron en el [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) como parte de la [actualización Pectra](/roadmap/pectra/) de Ethereum. Estas transacciones están diseñadas para ser compatibles con la abstracción de cuentas. Permiten que las EOA se comporten temporalmente como cuentas de contratos inteligentes sin comprometer su funcionalidad original. Incluyen un parámetro `authorization_list`, que especifica el contrato inteligente al que la EOA delega su autoridad. Después de la transacción, el campo de código de la EOA tendrá la dirección del contrato inteligente delegado.
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [EIP-2718: Typed Transaction Envelope](https://eips.ethereum.org/EIPS/eip-2718)
+- [EIP-2718: Sobre de transacción con tipo](https://eips.ethereum.org/EIPS/eip-2718)
-_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Temas relacionados {#related-topics}
- [Cuentas](/developers/docs/accounts/)
-- [Máquina Virtual de Ethereum (EVM)](/developers/docs/evm/)
+- [Máquina virtual de Ethereum (EVM)](/developers/docs/evm/)
- [Gas](/developers/docs/gas/)
From a4dbeb1e1fa619eaee644e22ecb81793dcc528c6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:28 -0300
Subject: [PATCH 248/589] update(i18n):
public/content/translations/es/contributing/adding-resources/index.md
---
.../es/contributing/adding-resources/index.md | 53 +++++++++++++++++++
1 file changed, 53 insertions(+)
create mode 100644 public/content/translations/es/contributing/adding-resources/index.md
diff --git a/public/content/translations/es/contributing/adding-resources/index.md b/public/content/translations/es/contributing/adding-resources/index.md
new file mode 100644
index 00000000000..90ae08c408c
--- /dev/null
+++ b/public/content/translations/es/contributing/adding-resources/index.md
@@ -0,0 +1,53 @@
+---
+title: Añadir recursos
+description: Las políticas que seguimos al añadir recursos a ethereum.org
+lang: es
+---
+
+# Añadir recursos {#adding-resources}
+
+Queremos asegurarnos de que incluimos los mejores recursos posibles al tiempo que velamos por la seguridad y confianza de nuestros usuarios.
+
+Todo el mundo puede sugerir que se añadan nuevos recursos al panel de recursos en ethereum.org, que actualmente se encuentra en [ethereum.org/resources](/resources/).
+
+Aunque recibimos nuevas inclusiones, los recursos actuales se han seleccionado en función de la experiencia que queremos ofrecer a nuestros usuarios. Estos se basan en algunos de nuestros principios de diseño:
+
+- _Inspirador_: cualquier contenido de ethereum.org debe ofrecer algo nuevo a los usuarios
+- _Una historia con gancho_: lo que se lista debe informar y gustar.
+- _Creíble_: todos deberían ser negocios/proyectos legítimos para minimizar el riesgo para los usuarios
+
+En general, **ethereum.org trata de proporcionar una experiencia introductoria fluida a nuevos usuarios**. Por eso, añadimos recursos basándonos en su:
+
+- facilidad de uso
+- precisión
+- mantenimiento
+
+## El marco de decisión {#decision-framework}
+
+### Criterios {#criteria}
+
+- **Información de listado honesta y precisa**: cualquier sugerencia de listado debe incluir información honesta y precisa. Los productos que falseen información se eliminarán.
+- **Proyecto activo**: el recurso debería matenerlo un equipo activo para garantizar la calidad y el soporte a los usuarios. Los recursos obsoletos se pueden eliminar.
+
+### Ordenación de productos {#product-ordering}
+
+Nos reservamos el derecho a ordenar productos basándonos en su impacto. Los nuevos productos se añadirán generalmente al final de la lista, a no ser que se especifique lo contrario.
+
+## Mantenimiento {#maintenance}
+
+A medida que evoluciona el ecosistema de Ethereum, revisaremos de forma rutinaria nuestro contenido para:
+
+- Asegurarse de que todos los recursos listados aún cumplen con nuestros criterios
+- Cerciórese de que no haya productos que hayan sido sugeridos y que cumplan con más de nuestros criterios que los actualmente listados.
+
+Puede ayudar con esta tarea comprobando e informándonos de las conclusiones. [Abra una incidencia](https://github.com/ethereum/ethereum-org-website/issues/new?template=bug_report.yaml) o envíe un correo electrónico a [website@ethereum.org](mailto:website@ethereum.org).
+
+---
+
+## Añadir su recurso {#add-your-resource}
+
+Si quiere añadir un recurso a ethereum.org y cumple con los criterios, cree una incidencia en GitHub.
+
+
+ Crear una incidencia
+
From 98ad387637e4ceb7419676897814e3cc471e7420 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:30 -0300
Subject: [PATCH 249/589] update(i18n):
public/content/translations/es/developers/docs/design-and-ux/index.md
---
.../es/developers/docs/design-and-ux/index.md | 103 +++++++++---------
1 file changed, 53 insertions(+), 50 deletions(-)
diff --git a/public/content/translations/es/developers/docs/design-and-ux/index.md b/public/content/translations/es/developers/docs/design-and-ux/index.md
index b0f5cccffd7..2ed493c8f16 100644
--- a/public/content/translations/es/developers/docs/design-and-ux/index.md
+++ b/public/content/translations/es/developers/docs/design-and-ux/index.md
@@ -6,60 +6,63 @@ lang: es
¿Es nuevo en el diseño con Ethereum? Este es el lugar adecuado para usted. La comunidad de Ethereum tiene recursos escritos para presentarle los conceptos básicos de diseño e investigación de Web3. Aprenderá sobre conceptos básicos que pueden diferir de otros diseños de aplicaciones con los que esté familiarizado.
-¿Necesita primero una comprensión más básica de la Web3? Eche un vistazo a [**Learn hub**](/learn/).
+¿Necesita primero una comprensión más básica de la Web3? Consulte el [**centro de aprendizaje**](/learn/).
-## Comience con la investigación de los usuarios {#start-with-user-research}
+## Comience con la investigación de usuarios {#start-with-user-research}
-El diseño efectivo va más allá de la creación de interfaces de usuario visualmente atractivas. Implica obtener una comprensión profunda de las necesidades, los objetivos y los factores impulsores del usuario. Por lo tanto, recomendamos encarecidamente que todos los diseñadores adopten un proceso de diseño, como el [**proceso de doble diamante**](https://en.wikipedia.org/wiki/Double_Diamond_(design_process_model)), para garantizar que su trabajo sea deliberado e intencional.
+El diseño efectivo va más allá de la creación de interfaces de usuario visualmente atractivas. Implica obtener una comprensión profunda de las necesidades, los objetivos y los factores impulsores del usuario. Por lo tanto, recomendamos encarecidamente que todos los diseñadores adopten un proceso de diseño, como el [**proceso del doble diamante**](https://en.wikipedia.org/wiki/Double_Diamond_\(design_process_model\)), para garantizar que su trabajo sea deliberado e intencional.
-- [La Web3 necesita más investigadores y diseñadores de UX](https://blog.akasha.org/akasha-conversations-9-web3-needs-more-ux-researchers-and-designers): visión general de la madurez actual del diseño
-- [Guía sencilla para la investigación de la experiencia de usuario en la Web3](https://uxplanet.org/a-complete-guide-to-ux-research-for-web-3-0-products-d6bead20ebb1): guía sencilla sobre cómo investigar
-- [Cómo abordar las decisiones de experiencia de usuario en Web3](https://archive.devcon.org/archive/watch/6/data-empathy-how-to-approach-ux-decisions-in-web3/): breve descripción de la investigación cuantitativa y cualitativa y las diferencias entre los dos (video, 6 min)
-- [Ser investigador de UX en Web3](https://medium.com/@georgia.rakusen/what-its-like-being-a-user-researcher-in-web3-6a4bcc096849): visión personal de lo que es ser un investigador de experiencia de usuario en Web3
+- [La Web3 necesita más investigadores y diseñadores de UX](https://blog.akasha.org/akasha-conversations-9-web3-needs-more-ux-researchers-and-designers) - Un resumen de la madurez actual del diseño
+- [Una guía sencilla para la investigación de UX en la web3](https://uxplanet.org/a-complete-guide-to-ux-research-for-web-3-0-products-d6bead20ebb1) - Guía sencilla sobre cómo investigar
+- [Cómo abordar las decisiones sobre la experiencia de usuario en la Web3](https://archive.devcon.org/archive/watch/6/data-empathy-how-to-approach-ux-decisions-in-web3/) - Un breve resumen de la investigación cuantitativa y cualitativa y las diferencias entre ambas (vídeo, 6 min)
+- [Ser un investigador de UX en la web3](https://medium.com/@georgia.rakusen/what-its-like-being-a-user-researcher-in-web3-6a4bcc096849) - Una visión personal de lo que es ser un investigador de UX en la web3
-## Estudios de investigación en Web3 {#research-in-web3}
+## Estudios de investigación en la web3 {#research-in-web3}
Esta es una lista curada de investigaciones de usuarios realizadas en Web3 que pueden ayudar con las decisiones de diseño y productos, o servir de inspiración para llevar a cabo su propio estudio.
-| Área de interés | Nombre |
-|:----------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Incorporación de criptomonedas | [CRADL: experiencia de usuario en criptomonedas](https://docs.google.com/presentation/d/1s2OPSH5sMJzxRYaJSSRTe8W2iIoZx0PseIV-WeZWD1s/edit?usp=sharing) |
-| Incorporación de criptomonedas | [CRADL: introducción a las criptomonedas](https://docs.google.com/presentation/d/1R9nFuzA-R6SxaGCKhoMbE4Vxe0JxQSTiHXind3LVq_w/edit?usp=sharing) |
-| Incorporación de criptomonedas | [Informe de experiencia de usuario de Bitcoin](https://github.com/patestevao/BitcoinUX-report/blob/master/report.md) |
-| Incorporación de criptomonedas | [ConSensys: la situación de la percepción de Web3 por el mundo en 2023](https://consensys.io/insight-report/web3-and-crypto-global-survey-2023) |
-| Incorporación de criptomonedas | [NEAR: Acelerar el recorrido hacia la adopción](https://drive.google.com/file/d/1VuaQP4QSaQxR5ddQKTMGI0b0rWdP7uGn/view) |
-| Participar (apostar) | [Participación: tendencias clave, conclusiones y predicciones, participante de Eth](https://lookerstudio.google.com/u/0/reporting/cafcee00-e1af-4148-bae8-442a88ac75fa/page/p_ja2srdhh2c?s=hmbTWDh9hJo) |
-| Participar (apostar) | [Participación aplicaciones múltiples](https://github.com/threshold-network/UX-User-Research/blob/main/Multi-App%20Staking%20(MAS)/iterative-user-study/MAS%20Iterative%20User%20Study.pdf) |
-| DAO | [Actualización de investigación de DAO 2022: ¿qué necesitan los constructores de DAO?](https://blog.aragon.org/2022-dao-research-update/) |
-| DeFi | [El estado de Defi en 2024](https://stateofdefi.org/) (encuesta en curso) |
-| DeFi | [Reservas de cobertura](https://github.com/threshold-network/UX-User-Research/tree/main/Keep%20Coverage%20Pool) |
-| DeFi | [ConSensys: informe de investigación de usuarios de DeFi 2022](https://cdn2.hubspot.net/hubfs/4795067/ConsenSys%20Codefi-Defi%20User%20ResearchReport.pdf) |
-| Metaverso | [Metaverso: informe de investigación de usuarios](https://www.politico.com/f/?id=00000187-7685-d820-a7e7-7e85d1420000) |
-| Metaverso | [Going on Safari: investigación de usuarios en el metaverso](https://archive.devcon.org/archive/watch/6/going-on-safari-researching-users-in-the-metaverse/?tab=YouTube) (video, 27 min) |
-| Estadísticas de experiencia del usuario en Ethereum.org | [Panel de encuestas de usabilidad y satisfacción del usuario, Ethereum.org](https://lookerstudio.google.com/reporting/0a189a7c-a890-40db-a5c6-009db52c81c9) |
-
-## Diseño para Web3 {#design-for-web3}
-
-- [Manual de diseño de UX Web3](https://web3ux.design/): guía práctica para diseñar aplicaciones web3
-- [Principios de diseño de Web3](https://medium.com/@lyricalpolymath/web3-design-principles-f21db2f240c1): marco de reglas de experiencia de usuario para dapps basadas en cadenas de bloques
-- [Principios de diseño de cadena de bloques](https://medium.com/design-ibm/blockchain-design-principles-599c5c067b6e): lecciones aprendidas por el equipo de diseño de cadena de bloques de IBM
-- [Patrones de diseño en Web3](https://www.web3designpatterns.io/): biblioteca curada de patrones de diseño de productos web3 reales
-- [W3design.io](https://w3design.io/): biblioteca curada de flujos de interfaz de usuario de diferentes proyectos en el ecosistema
-- [Neueux.com](https://neueux.com/apps): biblioteca de interfaz de usuario de flujos de usuario con diversas opciones de filtrado
-- [Crisis de usabilidad de Web3: ¡lo que NECESITA saber!](https://www.youtube.com/watch?v=oBSXT_6YDzg): mesa redonda sobre los desventajas o problemas de la construcción de proyectos centrados en el desarrollador (video, 34 min)
-
-## Estudios de casos de diseño de Web3 {#design-case-studies}
-
-- [Deep Work Studio](https://deepwork.studio/case-studies/)
-- [Manual de UX cripto](https://www.cryptouxhandbook.com/)
+| Área de interés | Nombre |
+| :-------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Incorporación de criptomonedas | [The Reown Pulse 2024: opinión y uso de los consumidores de criptomonedas](https://reown.com/blog/unveiling-walletconnects-consumer-crypto-report) |
+| Incorporación de criptomonedas | [CRADL: UX en criptomonedas](https://docs.google.com/presentation/d/1s2OPSH5sMJzxRYaJSSRTe8W2iIoZx0PseIV-WeZWD1s/edit?usp=sharing) |
+| Incorporación de criptomonedas | [CRADL: incorporación a las criptomonedas](https://docs.google.com/presentation/d/1R9nFuzA-R6SxaGCKhoMbE4Vxe0JxQSTiHXind3LVq_w/edit?usp=sharing) |
+| Incorporación de criptomonedas | [Informe de UX de Bitcoin](https://github.com/patestevao/BitcoinUX-report/blob/master/report.md) |
+| Incorporación de criptomonedas | [ConSensys: el estado de la percepción de la Web3 en el mundo en 2023](https://consensys.io/insight-report/web3-and-crypto-global-survey-2023) |
+| Incorporación de criptomonedas | [NEAR: Acelerando el camino hacia la adopción](https://drive.google.com/file/d/1VuaQP4QSaQxR5ddQKTMGI0b0rWdP7uGn/view) |
+| Staking | [OpenUX: UX del operador de nodo de Rocket Pool](https://storage.googleapis.com/rocketpool/RocketPool-NodeOperator-UX-Report-Jan-2024.pdf) |
+| Staking | [Staking: tendencias clave, conclusiones y predicciones - Eth Staker](https://lookerstudio.google.com/u/0/reporting/cafcee00-e1af-4148-bae8-442a88ac75fa/page/p_ja2srdhh2c?s=hmbTWDh9hJo) |
+| Staking | [Staking de múltiples aplicaciones](https://github.com/threshold-network/UX-User-Research/blob/main/Multi-App%20Staking%20\(MAS\)/iterative-user-study/MAS%20Iterative%20User%20Study.pdf) |
+| DAO | [Actualización de la investigación sobre DAO de 2022: ¿qué necesitan los creadores de DAO?](https://blog.aragon.org/2022-dao-research-update/) |
+| DeFi | [Pools de cobertura](https://github.com/threshold-network/UX-User-Research/tree/main/Keep%20Coverage%20Pool) |
+| DeFi | [ConSensys: Informe de investigación de usuarios de DeFi de 2022](https://cdn2.hubspot.net/hubfs/4795067/ConsenSys%20Codefi-Defi%20User%20ResearchReport.pdf) |
+| Metaverso | [Metaverso: Informe de investigación de usuarios](https://www.politico.com/f/?id=00000187-7685-d820-a7e7-7e85d1420000) |
+| Metaverso | [Ir de safari: investigar a los usuarios en el metaverso](https://archive.devcon.org/archive/watch/6/going-on-safari-researching-users-in-the-metaverse/?tab=YouTube) (vídeo, 27 min) |
+| Estadísticas de experiencia del usuario en Ethereum.org | [Panel de encuestas de usabilidad y satisfacción del usuario - Ethereum.org](https://lookerstudio.google.com/reporting/0a189a7c-a890-40db-a5c6-009db52c81c9) |
+
+## Diseño para la web3 {#design-for-web3}
+
+- [Manual de diseño de UX para la Web3](https://web3ux.design/) - Guía práctica para diseñar aplicaciones de la Web3
+- [Principios de diseño de la Web3](https://medium.com/@lyricalpolymath/web3-design-principles-f21db2f240c1) - Un marco de reglas de UX para dapps basadas en cadenas de bloques
+- [Principios de diseño de cadena de bloques](https://medium.com/design-ibm/blockchain-design-principles-599c5c067b6e) - Lecciones aprendidas por el equipo de diseño de cadena de bloques de IBM
+- [Neueux.com](https://neueux.com/apps) - Biblioteca de IU de flujos de usuario con diversas opciones de filtrado
+- [La crisis de usabilidad de la Web3: ¡lo que NECESITA saber!](https://www.youtube.com/watch?v=oBSXT_6YDzg) - Una mesa redonda sobre las dificultades de la creación de proyectos centrada en los desarrolladores (vídeo, 34 min)
+
+## Primeros pasos {#getting-started}
+
+- [Heurísticas para la Web3](/developers/docs/design-and-ux/heuristics-for-web3/) - 7 heurísticas para el diseño de interfaces de la Web3
+- [Mejores prácticas de diseño de DEX](/developers/docs/design-and-ux/dex-design-best-practice/) - Una guía para diseñar intercambios descentralizados
+
+## Casos prácticos de diseño de la Web3 {#design-case-studies}
+
+- [Deep Work Studio](https://www.deepwork.studio/case-studies)
- [Vender un NFT en OpenSea](https://builtformars.com/case-studies/opensea)
-- [Wallet UX teardown how wallets need to change](https://www.youtube.com/watch?v=oTpuxYj8JWI&ab_channel=ETHDenver) (video, 20 minutos)
+- [Análisis de la UX de las billeteras: cómo deben cambiar](https://www.youtube.com/watch?v=oTpuxYj8JWI&ab_channel=ETHDenver) (vídeo, 20 min)
-## Bounties de diseño {#bounties}
+## Recompensas de diseño {#bounties}
- [Dework](https://app.dework.xyz/bounties)
-- [Hackatons de Buildbox](https://app.buidlbox.io/)
-- [Hackatons ETHGlobal](https://ethglobal.com/)
+- [Hackatones de Buildbox](https://app.buidlbox.io/)
+- [Hackatones de ETHGlobal](https://ethglobal.com/)
## DAO y comunidades de diseño {#design-daos-and-communities}
@@ -67,18 +70,18 @@ Involúcrese en organizaciones profesionales impulsadas por la comunidad o únas
- [Vectordao.com](https://vectordao.com/)
- [Deepwork.studio](https://www.deepwork.studio/)
-- [Designer-dao.xyz](https://www.designer-dao.xyz/)
- [We3.co](https://we3.co/)
- [Openux.xyz](https://openux.xyz/)
-## Sistemas de diseño {#design-systems}
+## Sistemas de diseño y otros recursos de diseño {#design-systems-and-resources}
- [Diseño de Optimism](https://www.figma.com/@optimism) (Figma)
- [Sistema de diseño de Ethereum.org](https://www.figma.com/@ethdotorg) (Figma)
- [Finity, un sistema de diseño de Polygon](https://www.figma.com/community/file/1073921725197233598/finity-design-system) (Figma)
-- [Kleros Design System](https://www.figma.com/community/file/999852250110186964/kleros-design-system) (Figma)
-- [Sistema de diseño Safe](https://www.figma.com/community/file/1337417127407098506/safe-design-system) (Figma)
-- [Sitema de diseño para ENS](https://thorin.ens.domains/)
-- [Sistema de diseño para Mirror](https://degen-xyz.vercel.app/)
+- [Sistema de diseño de Kleros](https://www.figma.com/community/file/999852250110186964/kleros-design-system) (Figma)
+- [Sistema de diseño de Safe](https://www.figma.com/community/file/1337417127407098506/safe-design-system) (Figma)
+- [Sistema de diseño de ENS](https://thorin.ens.domains/)
+- [Sistema de diseño de Mirror](https://degen-xyz.vercel.app/)
-**Los artículos y los proyectos enumerados en esta página no son endorsements o promociones oficiales**, y se proporcionan solo con fines informativos. Añadimos enlaces a esta página según los criterios de nuestra [política de listado](/contributing/design/adding-design-resources). Si desea que añadamos un proyecto/artículo, edite esta página en [GitHub](https://github.com/ethereum/ethereum-org-website/blob/dev/public/content/developers/docs/design-and-ux/index.md).
+**Los artículos y proyectos que se enumeran en esta página no constituyen un respaldo oficial** y se proporcionan únicamente con fines informativos.
+Añadimos enlaces a esta página basándonos en los criterios de nuestra [política de inclusión en listas](/contributing/design/adding-design-resources). Si quiere que añadamos un proyecto o artículo, edite esta página en [GitHub](https://github.com/ethereum/ethereum-org-website/blob/dev/public/content/developers/docs/design-and-ux/index.md).
From cec44d66e795795a97a015b996e6223cf4a0147e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:31 -0300
Subject: [PATCH 250/589] update(i18n):
public/content/translations/es/developers/docs/ethereum-stack/index.md
---
.../developers/docs/ethereum-stack/index.md | 42 +++++++++----------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/public/content/translations/es/developers/docs/ethereum-stack/index.md b/public/content/translations/es/developers/docs/ethereum-stack/index.md
index cbb19c6bbd0..fd6f318fc9d 100644
--- a/public/content/translations/es/developers/docs/ethereum-stack/index.md
+++ b/public/content/translations/es/developers/docs/ethereum-stack/index.md
@@ -6,56 +6,56 @@ lang: es
Como sucede con cualquier pila de software, la "pila de Ethereum" variará de un proyecto a otro dependiendo de sus objetivos.
-Sin embargo, existen tecnologías base de Ethereum que te ayudarán a hacerte una idea de cómo interactúan las apps de software con la blockchain de Ethereum. Comprender cómo funcionan las capas de la pila te ayudará a entender las diferentes maneras de integrar Ethereum en los proyectos de software.
+Sin embargo, existen componentes centrales de Ethereum que te ayudarán a tener un modelo mental de cómo interactúan las aplicaciones de software con la cadena de bloques de Ethereum. Comprender cómo funcionan las capas de la pila te ayudará a entender las diferentes maneras de integrar Ethereum en los proyectos de software.
## Nivel 1: Máquina virtual de Ethereum {#ethereum-virtual-machine}
-La [máquina virtual de Ethereum (EVM)](/developers/docs/evm/) es el entorno de ejecución de los contratos inteligentes en Ethereum. Todos los contratos inteligentes y los cambios de estado de la blockchain de Ethereum se ejecutan mediante las [transacciones](/developers/docs/transactions/). La EVM gestiona todo el procesamiento de las transacciones en la red de Ethereum.
+La [Máquina virtual de Ethereum (EVM)](/developers/docs/evm/) es el entorno de ejecución de los contratos inteligentes en Ethereum. Todos los contratos inteligentes y los cambios de estado en la cadena de bloques de Ethereum se ejecutan mediante [transacciones](/developers/docs/transactions/). La EVM gestiona todo el procesamiento de las transacciones en la red de Ethereum.
-Como sucede con cualquier máquina virtual, la EVM crea una nivel de abstracción entre el código de ejecución y la máquina de ejecución (un nodo de Ethereum). Actualmente la EVM está ejecutándose en cientos de nodos distribuidos por todo el mundo.
+Como sucede con cualquier máquina virtual, la EVM crea una nivel de abstracción entre el código de ejecución y la máquina de ejecución (un nodo de Ethereum). Actualmente, la EVM se está ejecutando en miles de nodos distribuidos por todo el mundo.
-De manera invisible, la EVM utiliza un conjunto de instrucciones de códigos de operación para ejecutar tareas específicas. Estos (140 únicos) opcodes permiten que la EVM sea [Turing-complete](https://en.wikipedia.org/wiki/Turing_completeness), lo que significa que la EVM es capaz de computar o calcular casi cualquier cosa si cuenta con suficientes recursos.
+De manera invisible, la EVM utiliza un conjunto de instrucciones de códigos de operación para ejecutar tareas específicas. Estos (140 únicos) códigos de operación permiten que la EVM sea [Turing-completa](https://en.wikipedia.org/wiki/Turing_completeness), lo que significa que la EVM es capaz de computar casi cualquier cosa, si se le dan los recursos suficientes.
-Como desarrollador de dapps, no necesitas saber mucho de la EVM aparte de la que existe y de que potencia de forma fiable todas las aplicaciones en Ethereum sin tiempos de inactividad.
+Como desarrollador de dapps, no necesitas saber mucho sobre la EVM, aparte de que existe y que impulsa de forma fiable todas las aplicaciones en Ethereum sin tiempo de inactividad.
-## Nivel 2: Contratos Inteligentes {#smart-contracts}
+## Nivel 2: Contratos inteligentes {#smart-contracts}
-Los [contratos inteligentes](/developers/docs/smart-contracts/) son programas ejecutables que se ejecutan en la blockchain de Ethereum.
+[Los contratos inteligentes](/developers/docs/smart-contracts/) son los programas ejecutables que se ejecutan en la cadena de bloques de Ethereum.
-Los contratos inteligentes están escritos con [lenguajes de programación](/developers/docs/smart-contracts/languages/) específicos, que se compilan en bytecodes de la EVM (instrucciones de máquina de bajo nivel llamados códigos de operación).
+Los contratos inteligentes se escriben utilizando [lenguajes de programación](/developers/docs/smart-contracts/languages/) específicos que se compilan en bytecode de la EVM (instrucciones de máquina de bajo nivel llamadas códigos de operación).
-Los contratos inteligentes no solo sirven como bibliotecas de código abierto, esencialmente son servicios de API abierta que funcionan ininterrumpidamente y no se pueden dar de baja. Los contratos inteligentes proveen funciones públicas con las que los usuarios y aplicaciones ([dapps](/developers/docs/dapps/)) pueden interactuar entre ellos, sin necesidad de permiso. Cualquier aplicación puede integrarse con contratos inteligentes implementados para componer funcionalidades, como agregar [feeds de datos](/developers/docs/oracles/) o para admitir swaps de tokens. Cualquier persona puede implementar nuevos contratos en Ethereum con el propósito de agregar funciones personalizadas para satisfacer las necesidades de sus aplicaciones.
+Los contratos inteligentes no solo sirven como bibliotecas de código abierto, son esencialmente servicios de API abiertos que funcionan ininterrumpidamente y no se pueden dar de baja. Los contratos inteligentes proporcionan funciones públicas con las que los usuarios y las aplicaciones ([dapps](/developers/docs/dapps/)) pueden interactuar, sin necesidad de permiso. Cualquier aplicación puede integrarse con contratos inteligentes implementados para componer funcionalidades, como añadir [fuentes de datos](/developers/docs/oracles/) o para admitir intercambios de tokens. Además, cualquiera puede implementar nuevos contratos inteligentes en Ethereum para añadir una funcionalidad personalizada que satisfaga las necesidades de su aplicación.
Como desarrollador de dapps, deberás escribir contratos inteligentes solo si deseas agregar una funcionalidad personalizada a la blockchain de Ethereum. Quizá pienses que puedes satisfacer la mayoría de las necesidades de tu proyecto integrándolo con contratos inteligentes existentes, por ejemplo, si deseas ofrecer compatibilidad para los pagos con stablecoins o activar el intercambio descentralizado de tokens.
## Nivel 3: Nodos de Ethereum {#ethereum-nodes}
-Para que una apliación interactúe con la cadena de bloques de Ethereum, debe estar conectada a un [nodo de Ethereum](/developers/docs/nodes-and-clients/). Conectarse a un nodo le permite leer datos de la cadena de bloques y/o enviar transacciones a la red.
+Para que una aplicación interactúe con la cadena de bloques de Ethereum, debe conectarse a un [nodo de Ethereum](/developers/docs/nodes-and-clients/). Conectarse a un nodo le permite leer datos de la cadena de bloques y/o enviar transacciones a la red.
-Los nodos de Ethereum son ordenadores que ejecutan un software: un cliente de Ethereum. Un cliente es una implementación de Ethereum que verifica todas las transacciones en cada bloque, lo que mantiene la seguridad de la red y la precisión de los datos. **Los nodos de Ethereum son la cadena de bloques de Ethereum**. Almacenan colectivamente el estado de la blockchain de Ethereum y llegan a un consenso sobre transacciones para transformar el estado de la blockchain.
+Los nodos de Ethereum son ordenadores que ejecutan un software: un cliente de Ethereum. Un cliente es una implementación de Ethereum, que verifica todas las transacciones en cada bloque, manteniendo la red segura y la precisión de los datos. **Los nodos de Ethereum son la cadena de bloques de Ethereum**. Almacenan colectivamente el estado de la blockchain de Ethereum y llegan a un consenso sobre transacciones para transformar el estado de la blockchain.
-Al conectar su aplicación a un nodo de Ethereum (a través de la [JSON-RPC API](/developers/docs/apis/json-rpc/)), su aplicación puede leer datos de la cadena de bloques (como los saldos de las cuentas de usuario), así como transmitir nuevas transacciones a la red (como transferir ETH entre cuentas de usuario o ejecutar funciones de contratos inteligentes).
+Al conectar tu aplicación a un nodo de Ethereum (a través de la [API JSON-RPC](/developers/docs/apis/json-rpc/)), tu aplicación puede leer datos de la cadena de bloques (como los saldos de las cuentas de usuario), así como transmitir nuevas transacciones a la red (como transferir ETH entre cuentas de usuario o ejecutar funciones de contratos inteligentes).
-## Nivel 4: API de clientes de Ethereum {#ethereum-client-apis}
+## Nivel 4: API de cliente de Ethereum {#ethereum-client-apis}
-Muchas bibliotecas de conveniencia (construidas y mantenidas por la comunidad de código abierto de Ethereum) permiten a tus aplicaciones de usuario final conectarse y comunicarse con la blockchain de Ethereum.
+Muchas bibliotecas de conveniencia (creadas y mantenidas por la comunidad de código abierto de Ethereum) permiten que tus aplicaciones se conecten y se comuniquen con la cadena de bloques de Ethereum.
-Si tu aplicación orientada al usuario es una aplicación web, puedes elegir `npm install`, una [API de JavaScript](/developers/docs/apis/javascript/) directamente en tu front-end. O quizás escogerás implementar esta funcionalidad del lado del servidor, usando una API de [Python](/developers/docs/programming-languages/python/), o bien una API de [Java](/developers/docs/programming-languages/java/).
+Si tu aplicación orientada al usuario es una aplicación web, puedes optar por `npm install` una [API de JavaScript](/developers/docs/apis/javascript/) directamente en tu frontend. O tal vez prefieras implementar esta funcionalidad en el lado del servidor, usando una API de [Python](/developers/docs/programming-languages/python/) o [Java](/developers/docs/programming-languages/java/).
-Si bien son una pieza necesaria de la pila, estas API abstraen gran parte de la complejidad de interactuar directamente con el nodo de Ethereum. Estas también proporcionan funciones útiles (p. ej., convertir ETH a Gwei) para que así un desarrollador gaste menos tiempo tratando con las complejidades de los clientes de Ethereum y pase más tiempo enfocado en la funcionalidad única de tu aplicación.
+Si bien son una pieza necesaria de la pila, estas API abstraen gran parte de la complejidad de interactuar directamente con el nodo de Ethereum. También proporcionan funciones de utilidad (p. ej., convertir ETH a Gwei) para que, como desarrollador, puedas dedicar menos tiempo a lidiar con las complejidades de los clientes de Ethereum y más tiempo a centrarte en la funcionalidad específica de tu aplicación.
-## Nivel 5: Aplicaciones de usuario final {#end-user-applications}
+## Nivel 5: Aplicaciones para el usuario final {#end-user-applications}
En el nivel superior de la pila están las aplicaciones orientadas al usuario. Se trata de aplicaciones estándar que normalmente se usan y se diseñan hoy en día: principalmente aplicaciones móviles y web.
La forma en la que desarrollas estas interfaces de usuario permanece esencialmente sin cambios. Los usuarios no suelen necesitar saber si la aplicación que están utilizando se ha diseñado mediante una blockchain.
-## ¿Estás preparado para elegir tu pila? {#ready-to-choose-your-stack}
+## ¿Estás preparado para elegir tu pila? ¿Listo para elegir tu stack? {#ready-to-choose-your-stack}
-Revisa nuestra guía para [configurar un entorno de desarrollo local](/developers/local-environment/) para tu aplicación de Ethereum.
+Consulta nuestra guía para [configurar un entorno de desarrollo local](/developers/local-environment/) para tu aplicación de Ethereum.
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
- [La arquitectura de una aplicación Web 3.0](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
-_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
From 84636e9d61559b55783b7bc14b7ae98cb6ab76a4 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:33 -0300
Subject: [PATCH 251/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/index.md
---
.../developers/docs/smart-contracts/index.md | 58 +++++++++----------
1 file changed, 29 insertions(+), 29 deletions(-)
diff --git a/public/content/translations/es/developers/docs/smart-contracts/index.md b/public/content/translations/es/developers/docs/smart-contracts/index.md
index ac40425fd6b..83ae19da9a1 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/index.md
@@ -4,7 +4,7 @@ description: Una descripción de contratos inteligentes, que se centra en sus ca
lang: es
---
-## ¿Qué es un contrato inteligente? {#what-is-a-smart-contract}
+## ¿Qué es un contrato inteligente? ¿Qué es un contrato inteligente? {#what-is-a-smart-contract}
Un "contrato inteligente" es básicamente un programa que se ejecuta en la blockchain de Ethereum. Se trata de un grupo de código (sus funciones) y datos (su estado) que existe en una dirección específica en la blockchain de Ethereum.
@@ -12,13 +12,13 @@ Los contratos inteligentes son un tipo de [cuenta de Ethereum](/developers/docs/
## Requisitos previos {#prerequisites}
-Si está empezando o buscando una introducción menos técnica, le recomendamos nuestra [Introducción a los contratos inteligentes](/smart-contracts/).
+Si está empezando o busca una introducción menos técnica, le recomendamos nuestra [Introducción a los contratos inteligentes](/smart-contracts/).
-Asegúrese de haber leído sobre [cuentas](/developers/docs/accounts/), [transacciones](/developers/docs/transactions/) y la [máquina virtual de Ethereum](/developers/docs/evm/) antes de entrar en el mundo de los contratos inteligentes.
+Asegúrese de haber leído sobre las [cuentas](/developers/docs/accounts/), las [transacciones](/developers/docs/transactions/) y la [máquina virtual de Ethereum](/developers/docs/evm/) antes de adentrarse en el mundo de los contratos inteligentes.
## Una máquina expendedora digital {#a-digital-vending-machine}
-Quizás el mejor ejemplo o metáfora para entender un contrato inteligente es una maquina expendedora, como lo describe [Nick Szabo](https://unenumerated.blogspot.com/). Con las entradas adecuadas, se garantiza un cierto resultado o producto.
+Quizás la mejor metáfora para un contrato inteligente es una máquina expendedora, como lo describe [Nick Szabo](https://unenumerated.blogspot.com/). Con las entradas adecuadas, se garantiza un cierto resultado o producto.
Para obtener un snack de una máquina expendedora:
@@ -35,28 +35,28 @@ pragma solidity 0.8.7;
contract VendingMachine {
- // Declare state variables of the contract
+ // Declarar las variables de estado del contrato
address public owner;
mapping (address => uint) public cupcakeBalances;
- // When 'VendingMachine' contract is deployed:
- // 1. configurar la dirección de implantación como el propietario del contrato
- // 2. set the deployed smart contract's cupcake balance to 100
+ // Cuando se despliega el contrato 'VendingMachine':
+ // 1. establecer la dirección de despliegue como propietaria del contrato
+ // 2. establecer el saldo de cupcakes del contrato inteligente desplegado en 100
constructor() {
owner = msg.sender;
cupcakeBalances[address(this)] = 100;
}
- // Allow the owner to increase the smart contract's cupcake balance
+ // Permitir al propietario aumentar el saldo de cupcakes del contrato inteligente
function refill(uint amount) public {
- require(msg.sender == owner, "Only the owner can refill.");
+ require(msg.sender == owner, "Solo el propietario puede recargar.");
cupcakeBalances[address(this)] += amount;
}
- // Allow anyone to purchase cupcakes
+ // Permitir que cualquiera compre cupcakes
function purchase(uint amount) public payable {
- require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");
- require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");
+ require(msg.value >= amount * 1 ether, "Debe pagar al menos 1 ETH por cupcake");
+ require(cupcakeBalances[address(this)] >= amount, "No hay suficientes cupcakes en existencias para completar esta compra");
cupcakeBalances[address(this)] -= amount;
cupcakeBalances[msg.sender] += amount;
}
@@ -65,16 +65,16 @@ contract VendingMachine {
Del mismo modo que una máquina expendedora elimina la necesidad de un empleado de un proveedor, los contratos inteligentes son capaces de sustituir a los intermediarios en muchas industrias.
-## No hay permisos {#permissionless}
+## Sin permiso {#permissionless}
-Cualquiera puede escribir un contrato inteligente e implementarlo en la red. Solo necesita aprender cómo codificar con un [lenguaje para contratos inteligentes](/developers/docs/smart-contracts/languages/) y tener suficiente ETH para implementar el contrato. La implementación de un contrato inteligente es técnicamente una transacción, así que debe pagar [gas](/developers/docs/gas/) de la misma manera que necesita pagar gas por una simple transferencia de ETH. Sin embargo, los costos de gas para la implementación de contratos son mucho mayores.
+Cualquiera puede escribir un contrato inteligente e implementarlo en la red. Solo necesita aprender a programar en un [lenguaje de contratos inteligentes](/developers/docs/smart-contracts/languages/) y tener suficiente ETH para desplegar su contrato. La implementación de un contrato inteligente es técnicamente una transacción, por lo que debe pagar [gas](/developers/docs/gas/) de la misma manera que debe pagar gas por una simple transferencia de ETH. Sin embargo, los costos de gas para la implementación de contratos son mucho mayores.
Ethereum dispone de lenguajes amigables para programadores para que redacten contratos inteligentes:
-- Solidity
+- Solidez
- Vyper
-[Más información sobre los lenguajes](/developers/docs/smart-contracts/languages/)
+[Más información sobre lenguajes](/developers/docs/smart-contracts/languages/)
Sin embargo, deben compilarse antes de implementarse para que la máquina virtual de Ethereum pueda interpretar y almacenar el contrato. [Más información sobre la compilación](/developers/docs/smart-contracts/compiling/)
@@ -82,31 +82,31 @@ Sin embargo, deben compilarse antes de implementarse para que la máquina virtua
Los contratos inteligentes son públicos en Ethereum y se pueden considerar API abiertas. Esto significa que puede invocar otros contratos inteligentes en su propio contrato inteligente para ampliar en gran medida las posibilidades. Los contratos pueden incluso implementar otros contratos.
-Obtenga más información sobre la [componibilidad de los contratos inteligentes](/developers/docs/smart-contracts/composability/).
+Obtenga más información sobre la [capacidad de composición de los contratos inteligentes](/developers/docs/smart-contracts/composability/).
## Limitaciones {#limitations}
-Los contratos inteligentes por sí solos no pueden obtener información sobre eventos del "mundo real" porque no pueden recuperar datos de fuentes fuera de la cadena. Esto significa que no pueden responder a los eventos en el mundo real. Esto es por defecto. Depender de información externa puede poner en peligro el consenso, pieza clave para la seguridad y la descentralización.
+Los contratos inteligentes no pueden obtener por sí solos información sobre eventos del «mundo real», porque no pueden obtener datos de fuentes externas a la cadena. Esto significa que no pueden responder a los eventos en el mundo real. Esto es por defecto. Depender de información externa puede poner en peligro el consenso, pieza clave para la seguridad y la descentralización.
-Sin embargo, es importante que las aplicaciones de cadena de bloques puedan utilizar datos fuera de la cadena. La solución son los [oráculos](/developers/docs/oracles/), que son herramientas que procesan datos fuera de la cadena y los ponen a disposición de los contratos inteligentes.
+Sin embargo, es importante que las aplicaciones de cadena de bloques puedan usar datos externos a la cadena. La solución son los [oráculos](/developers/docs/oracles/), que son herramientas que ingieren datos fuera de cadena y los ponen a disposición de los contratos inteligentes.
-Otra limitación de los contratos inteligentes es el tamaño máximo de los contratos. Un contrato inteligente puede tener un máximo de 24 KB; superar esta cantidad supone quedarse sin gas. Para evitarlo puede usarse [The Diamond Pattern](https://eips.ethereum.org/EIPS/eip-2535).
+Otra limitación de los contratos inteligentes es el tamaño máximo de los contratos. Un contrato inteligente puede tener un máximo de 24 KB; superar esta cantidad supone quedarse sin gas. Esto puede eludirse utilizando [The Diamond Pattern](https://eips.ethereum.org/EIPS/eip-2535).
## Contratos multifirma {#multisig}
-Los contratos Multisig (o multifirma) son cuentas de contratos inteligentes que requieren múltiples firmas válidas para ejecutar una transacción. Esto es muy útil para evitar puntos únicos de falla en los contratos con cantidades sustanciales de Eth u otros tokens. Los multifirma también dividen la responsabilidad de la ejecución de contratos y la gestión de claves entre múltiples partes, y evitan la pérdida de una única clave privada que conduzca a una pérdida irreversible de fondos. Por estas razones, los contratos multifirma pueden utilizarse para la gobernanza simple de DAO. Los contratos multifirma requieren N firmas de M posibles firmas aceptables (donde N ≤ M, y M > 1) para su ejecución. `N = 3, M = 5` y `N = 4, M = 7` son comúnmente usados. Un contrato multifirma 4/7 requiere cuatro de siete firmas válidas posibles. Esto significa que los fondos siguen siendo recuperables, incluso si se pierden tres firmas. En este caso, también significa que la mayoría de los titulares de las claves deben acordar y firmar para que el contrato se ejecute.
+Los contratos Multisig (o multifirma) son cuentas de contratos inteligentes que requieren múltiples firmas válidas para ejecutar una transacción. Esto es muy útil para evitar puntos únicos de falla en los contratos con cantidades sustanciales de Eth u otros tokens. Los multifirma también dividen la responsabilidad de la ejecución de contratos y la gestión de claves entre múltiples partes, y evitan la pérdida de una única clave privada que conduzca a una pérdida irreversible de fondos. Por estas razones, los contratos multifirma pueden utilizarse para la gobernanza simple de DAO. Las multifirmas requieren N firmas de M firmas aceptables posibles (donde N ≤ M y M > 1) para ejecutarse. `N = 3, M = 5` y `N = 4, M = 7` se usan comúnmente. Un contrato multifirma 4/7 requiere cuatro de siete firmas válidas posibles. Esto significa que los fondos siguen siendo recuperables, incluso si se pierden tres firmas. En este caso, también significa que la mayoría de los titulares de las claves deben acordar y firmar para que el contrato se ejecute.
-## Recursos de los contratos inteligentes {#smart-contract-resources}
+## Recursos sobre contratos inteligentes {#smart-contract-resources}
-**Contratos de OpenZeppelin: ****_bibliotecas para el desarrollo seguro de contratos inteligentes._**
+**OpenZeppelin Contracts -** **_Biblioteca para el desarrollo seguro de contratos inteligentes._**
- [openzeppelin.com/contracts/](https://openzeppelin.com/contracts/)
- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
- [Foro de la comunidad](https://forum.openzeppelin.com/c/general/16)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Coinbase: ¿qué es un contrato inteligente?](https://www.coinbase.com/learn/crypto-basics/what-is-a-smart-contract)
-- [Chainlink: ¿qué es un contrato inteligente?](https://chain.link/education/smart-contracts)
-- [Video: Fácil explicación de los contratos inteligentes](https://youtu.be/ZE2HxTmxfrI)
-- [Cyfrin Updraft: Plataforma de aprendizaje y auditoría Web3](https://updraft.cyfrin.io)
+- [Coinbase: ¿Qué es un contrato inteligente?](https://www.coinbase.com/learn/crypto-basics/what-is-a-smart-contract)
+- [Chainlink: ¿Qué es un contrato inteligente?](https://chain.link/education/smart-contracts)
+- [Vídeo: Simply Explained - Contratos inteligentes](https://youtu.be/ZE2HxTmxfrI)
+- [Cyfrin Updraft: plataforma de aprendizaje y auditoría de Web3](https://updraft.cyfrin.io)
From 6217d219ddc799fd2c113430dce2278f4410aba7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:34 -0300
Subject: [PATCH 252/589] update(i18n):
public/content/translations/es/developers/docs/standards/tokens/index.md
---
.../developers/docs/standards/tokens/index.md | 26 ++++++++++---------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/public/content/translations/es/developers/docs/standards/tokens/index.md b/public/content/translations/es/developers/docs/standards/tokens/index.md
index 72c8495df88..e1e70b54ac7 100644
--- a/public/content/translations/es/developers/docs/standards/tokens/index.md
+++ b/public/content/translations/es/developers/docs/standards/tokens/index.md
@@ -1,13 +1,15 @@
---
title: Estándares de tokens
-description:
+description: Explore los estándares de tókenes de Ethereum, incluidos ERC-20, ERC-721 y ERC-1155, para tókenes fungibles y no fungibles.
lang: es
incomplete: true
---
## Introducción {#introduction}
-Muchos estándares de desarrollo de Ethereum se centran en las interfaces de token. Estas normas garantizan que los contratos inteligentes sigan siendo composibles, por ejemplo, cuando un nuevo proyecto emite un token, ayudan a que estos sigan siendo compatible con los intercambios descentralizados existentes.
+Muchos estándares de desarrollo de Ethereum se centran en las interfaces de token. Estos estándares ayudan a garantizar que los contratos inteligentes sigan siendo componibles, de modo que cuando un nuevo proyecto emite un token, este siga siendo compatible con las aplicaciones e intercambios descentralizados existentes.
+
+Los estándares de tokens definen cómo se comportan e interactúan los tokens en todo el ecosistema de Ethereum. Facilitan a los desarrolladores la creación sin tener que reinventar la rueda, asegurando que los tokens funcionen sin problemas con billeteras, intercambios y plataformas DeFi. Ya sea en los juegos, la gobernanza u otros casos de uso, estos estándares proporcionan consistencia y hacen que Ethereum esté más interconectado.
## Requisitos previos {#prerequisites}
@@ -18,22 +20,22 @@ Muchos estándares de desarrollo de Ethereum se centran en las interfaces de tok
Aquí están algunos de los estándares de token más populares de Ethereum:
-- [ERC-20](/developers/docs/standards/tokens/erc-20/): Una interfaz para tokens fungibles (intercambiables), como tokens de votación, tokens de staking o monedas virtuales.
+- [ERC-20](/developers/docs/standards/tokens/erc-20/) - Una interfaz estándar para tokens fungibles (intercambiables), como los tokens de votación, los tokens de staking o las monedas virtuales.
-### Estándares NFT {#nft-standards}
+### Estándares de NFT {#nft-standards}
-- [ERC-721](/developers/docs/standards/tokens/erc-721/): Una interfaz para tokens no fungibles (NFT), como un deed de una obra de arte o una canción.
-- [ERC-1155](/developers/docs/standards/tokens/erc-1155/): ERC-1155 permite operaciones y agrupación de transacciones más eficientes, ahorrando así costos. Este estándar de token permite crear tanto tokens de utilidad (como $BNB o $BAT) y tokens no fungibles como CryptoPunks.
+- [ERC-721](/developers/docs/standards/tokens/erc-721/) - Una interfaz estándar para tokens no fungibles, como un título de propiedad para una obra de arte o una canción.
+- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - ERC-1155 permite intercambios más eficientes y la agrupación de transacciones, ahorrando así costes. Este estándar de token permite crear tanto tokens de utilidad (como $BNB o $BAT) y tokens no fungibles como CryptoPunks.
La lista completa de propuestas [ERC](https://eips.ethereum.org/erc).
-## Leer más {#further-reading}
+## Lecturas adicionales {#further-reading}
-_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Tutoriales relacionados {#related-tutorials}
-- [Lista de verificación de integración de token](/developers/tutorials/token-integration-checklist/) _: Lista de verificación de cosas a considerar al interactuar con tokens._
-- [Comprueba el contrato inteligente ERC20](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _: Una introducción para implementar tu primer contrato inteligente en una red de pruebas de Ethereum._
-- [Transferencia y aprobación de tokens ERC20 desde un contrato inteligente de Solidity](/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/) _: cómo usar un contrato inteligente para interactuar con un token utilizando el lenguaje Solidity._
-- [Implementar un mercado ERC721 [una guía de cómo hacer]](/developers/tutorials/how-to-implement-an-erc721-market/) _: Cómo poner a la venta artículos tokenizados en un tablero de clasificaciones descentralizado._
+- [Lista de verificación para la integración de tokens](/developers/tutorials/token-integration-checklist/) _– Una lista de verificación de los aspectos que se deben tener en cuenta al interactuar con tokens._
+- [Comprender el contrato inteligente del token ERC-20](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _– Una introducción a cómo desplegar su primer contrato inteligente en una red de prueba de Ethereum._
+- [Transferencias y aprobación de tokens ERC-20 desde un contrato inteligente de Solidity](/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/) _– Cómo usar un contrato inteligente para interactuar con un token usando el lenguaje Solidity._
+- [Implementar un mercado de ERC-721 [guía práctica]](/developers/tutorials/how-to-implement-an-erc721-market/) _– Cómo poner a la venta artículos tokenizados en un tablón de anuncios clasificados descentralizado._
From 6c0770bd7295d7d7669d1b04679d690994ded180 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:36 -0300
Subject: [PATCH 253/589] update(i18n):
public/content/translations/es/contributing/translation-program/index.md
---
.../contributing/translation-program/index.md | 45 ++++++++++---------
1 file changed, 23 insertions(+), 22 deletions(-)
diff --git a/public/content/translations/es/contributing/translation-program/index.md b/public/content/translations/es/contributing/translation-program/index.md
index 0cc3c73603c..4b0cb88038e 100644
--- a/public/content/translations/es/contributing/translation-program/index.md
+++ b/public/content/translations/es/contributing/translation-program/index.md
@@ -16,11 +16,11 @@ El programa de traducción es un esfuerzo colaborativo para traducir ethereum.or
1. Necesitará iniciar sesión en su cuenta de Crowdin o registrarse.
2. Seleccione el idioma al que desea colaborar.
-3. Antes de empezar, eche un vistazo a la [Guía de traducción](/contributing/translation-program/how-to-translate/) para aprender a traducir con Crowdin, así como la [Guía de estilo de traducción](/contributing/translation-program/translators-guide/) donde encontrará consejos y prácticas recomendadas.
+3. Antes de empezar, consulte la guía [Cómo traducir](/contributing/translation-program/how-to-translate/) para aprender a usar Crowdin y la [Guía de estilo de traducción](/contributing/translation-program/translators-guide/) para obtener consejos y buenas prácticas.
4. No se aprobarán las traducciones automáticas.
5. Todas las traducciones se corrigen antes de añadirlas al sitio web, por lo que habrá un breve retraso antes de que sus traducciones se publiquen.
-_Únase a [ethereum.org Discord](https://discord.gg/ethereum-org) para colaborar en traducciones, hacer preguntas, compartir comentarios e ideas o unirse a un grupo de traducción._
+_Únase al [Discord de ethereum.org](https://discord.gg/ethereum-org) para colaborar en las traducciones, hacer preguntas, compartir comentarios e ideas, o unirse a un grupo de traducción._
Empezar a traducir
@@ -32,35 +32,36 @@ La comunidad de Ethereum tiene vocación global e inclusiva, no obstante, la may
El Programa de traducción de ethereum.org tiene como objetivo hacer que Ethereum sea accesible a todos mediante la traducción de ethereum.org y otro contenido sobre Ethereum a la mayor cantidad de idiomas posibles.
-Conozca más detalles sobre la [misión y visión](/contributing/translation-program/mission-and-vision) del Programa de traducción ethereum.org.
+Lea más sobre la [misión y visión](/contributing/translation-program/mission-and-vision) del Programa de traducción de ethereum.org.
-### Nuestra evolución hasta la fecha {#our-progress}
+### Nuestro progreso hasta ahora {#our-progress}
-- [**más de 6.900** traductores](/contributing/translation-program/contributors/)
-- **68** idiomas localizados en el sitio web
+- [**Más de 6900** traductores](/contributing/translation-program/contributors/)
+- **68** idiomas disponibles en el sitio
- [**2,89 millones** de palabras traducidas en 2024](/contributing/translation-program/acknowledgements/)
### Reconocimientos {#acknowledgements}
-Miles de miembros de la comunidad traducen ethereum. org y ellos son la pieza clave del Programa de traducción. Queremos reconocer la labor de nuestros traductores y apoyar su trayectoria profesional. Estos son algunos de los reconocimientos a nuestros traductores:
+Miles de miembros de la comunidad traducen ethereum. org y ellos son la pieza clave del Programa de traducción.
+Queremos reconocer la labor de nuestros traductores y apoyar su trayectoria profesional. Estos son algunos de los reconocimientos a nuestros traductores:
#### Certificado {#certificate}
-Si ha contribuido al Programa de traduccion y se han aprobado al menos 5.000 de las palabras que haya traducido, puede recibir un Certificado de traductor de ethereum.org. [ Más información sobre los certificados](/contributing/translation-program/acknowledgements/#certificate)
+Si ha contribuido al Programa de traduccion y se han aprobado al menos 5.000 de las palabras que haya traducido, puede recibir un Certificado de traductor de ethereum.org. [Más sobre los certificados](/contributing/translation-program/acknowledgements/#certificate)
-#### OAT {#oats}
+#### OATs {#oats}
Los colaboradores del Programa de Traducción son elegibles para diferentes OAT (tokens de logro en cadena, On-Chain Achievement Token) según el número de palabras traducidas en 2024. Los OAT son NFT que prueban su contribución al Programa de Traducción de ethereum.org. [Más sobre los OAT](/contributing/translation-program/acknowledgements/#oats)
-#### Reconocimientos a los traductores {#translator-acknowledgements}
+#### Reconocimientos para traductores {#translator-acknowledgements}
-Reconocimientos públicos a nuestros mejores traductores a través de las [ Tablas de clasificacion ](/contributing/translation-program/acknowledgements/) y una lista[ de todos los contribuyentes al Programa de traduccion](/contributing/translation-program/contributors/).
+Reconocimientos públicos de nuestros mejores traductores mediante [tablas de clasificación](/contributing/translation-program/acknowledgements/) y una [lista de todos los colaboradores del Programa de traducción](/contributing/translation-program/contributors/).
#### Recompensas {#rewards}
-En el pasado, hemos recompensado retroactivamente a nuestros contribuyentes mas activos con entradas para conferencias de Ethereum, como [ Devcon ](https://devcon.org/en/) y [ Devconnect ](https://devconnect.org/), además de ofrecerles productos exclusivos de ethereum.org.
+En el pasado, hemos recompensado retroactivamente a nuestros colaboradores más activos con entradas para conferencias de Ethereum como [Devcon](https://devcon.org/en/) y [Devconnect](https://devconnect.org/), así como con artículos exclusivos de ethereum.org.
Ideamos constantemente novedosas maneras de recompensar a nuestros colaboradores, ¡así que esté al tanto!
@@ -68,23 +69,23 @@ Ideamos constantemente novedosas maneras de recompensar a nuestros colaboradores
Si ya está colaborando con el Programa de traducción o tiene pensando colaborar, le aconsejamos que consulte las siguientes guías de traducción:
-- [Guía de estilo de traducción](/contributing/translation-program/translators-guide/) _: Instrucciones y consejos para los traductores de ethereum.org_
-- [Preguntas frecuentes sobre la traducción](/contributing/translation-program/faq/) _: Preguntas y respuestas frecuentes sobre el Programa de traducción de ethereum.org_
-- [Guía de edición online de Crowdin](https://support.crowdin.com/online-editor/) _: Una guía detallada para utilizar el editor online de Crowdin y algunas de las funciones avanzadas de Crowdin_
-- [Bloques de contenido](/contributing/translation-program/content-buckets/) _: qué páginas se incluyen en cada bloque de contenido de ethereum.org_
+- [Guía de estilo de traducción](/contributing/translation-program/translators-guide/) _– instrucciones y consejos para los traductores de ethereum.org_
+- [Preguntas frecuentes sobre la traducción](/contributing/translation-program/faq/) _– preguntas y respuestas frecuentes sobre el Programa de traducción de ethereum.org_
+- [Guía del editor en línea de Crowdin](https://support.crowdin.com/online-editor/) _– una guía detallada sobre cómo usar el editor en línea de Crowdin y algunas de sus funciones avanzadas_
-Si desea informarse sobre herramientas de traducción útiles, comunidades de traductores y publicaciones en el blog del Programa de traducción, visite la página [Recursos](/contributing/translation-program/resources/).
+Para conocer otras herramientas de traducción útiles, comunidades de traductores y publicaciones en el blog del Programa de traducción, visite la [página de Recursos](/contributing/translation-program/resources/).
-## Contáctenos {#get-in-touch}
+## Póngase en contacto {#get-in-touch}
-¿Tiene alguna pregunta? ¿O quiere colaborar con nuestro equipo y otros traductores? Publique en el canal #translations de nuestro [servidor de Discord de ethereum.org](https://discord.gg/ethereum-org).
+¿Tiene alguna pregunta? ¿O quiere colaborar con nuestro equipo y otros traductores? Publique en el canal #translations de nuestro [servidor de Discord de ethereum.org](https://discord.gg/ethereum-org)
También puede contactarnos a través de nuestro correo electrónico translations@ethereum.org.
-## Lanzar un programa de traducción propio {#starting-a-translation-program}
+## Iniciar su propio programa de traducción {#starting-a-translation-program}
-Nos comprometemos a traducir el contenido de Ethereum a tantos idiomas como sea posible y a poner el contenido divulgativo a disposición de todos. En sintonía con el enfoque lingüístico que adoptamos, queremos ayudar a otros proyectos de Ethereum a organizar, administrar y mejorar sus propias iniciativas de traducción.
+Nos comprometemos a traducir el contenido de Ethereum a tantos idiomas como sea posible y a poner el contenido divulgativo a disposición de todos.
+En sintonía con el enfoque lingüístico que adoptamos, queremos ayudar a otros proyectos de Ethereum a organizar, administrar y mejorar sus propias iniciativas de traducción.
-Por esta razón, hemos creado una [guía audiovisual del Programa de traducción](/contributing/translation-program/playbook/) con algunos consejos y mejores prácticas recopilados durante el proceso de traducción de ethereum.org.
+Por esta razón, hemos creado un [manual de estrategias del Programa de traducción](/contributing/translation-program/playbook/) que contiene algunos consejos y buenas prácticas que hemos recogido en el proceso de traducción de ethereum.org.
¿Quiere colaborar más o utilizar algunos de nuestros recursos de traducción? ¿Tiene algún comentario sobre la guía audiovisual? Nos encantaría saber su opinión en translations@ethereum.org.
From e7881678b96f237c5a7d299b86cb4fb8b32731c9 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:37 -0300
Subject: [PATCH 254/589] update(i18n):
public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md
---
.../tutorials/run-node-raspberry-pi/index.md | 111 +++++++++---------
1 file changed, 58 insertions(+), 53 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md b/public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md
index a42f21cf1cd..7b58f633cab 100644
--- a/public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md
+++ b/public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md
@@ -1,47 +1,49 @@
---
-title: Cómo convertir su Raspberry Pi 4 en un nodo simplemente con la tarjeta MicroSD
-description: Flashee su Raspberry Pi 4, conecte un cable Ethernet, conecte el disco SSD y encienda el dispositivo para convertir la Raspberry Pi 4 en un nodo Ethereum completo + validador
+title: Ejecute un nodo de Ethereum en una Raspberry Pi 4
+description: Flashee su Raspberry Pi 4, conecte un cable Ethernet, conecte el disco SSD y encienda el dispositivo para convertir la Raspberry Pi 4 en un nodo de Ethereum completo y un validador
author: "EthereumOnArm"
tags:
- - "clientes"
- - "capa de ejecución"
- - "capa de consenso"
- - "nodos"
+ [
+ "clientes",
+ "capa de ejecución",
+ "capa de consenso",
+ "nodos"
+ ]
lang: es
skill: intermediate
published: 2022-06-10
-source: Ethereum on ARM
+source: Ethereum en ARM
sourceUrl: https://ethereum-on-arm-documentation.readthedocs.io/en/latest/
---
-**Ethereum on Arm es una imagen personalizada de Linux que puede convertir una Raspberry Pi en un nodo de Ethereum.**
+**Ethereum on ARM es una imagen personalizada de Linux que puede convertir una Raspberry Pi en un nodo de Ethereum.**
-Para usar Ethereum on Arm para convertir una Raspberry Pi en un nodo de Ethereum, se recomienda el siguiente hardware:
+Para usar Ethereum on ARM para convertir una Raspberry Pi en un nodo de Ethereum, se recomienda el siguiente hardware:
-- Raspberry 4 (modelo B 8 GB), Odroid M1 o Rock 5B (8 GB/16 GB de RAM)
-- Tarjeta MicroSD (16 GB clase 10 como mínimo)
-- Disco USB 3.0 mínimo SSD de 2 TB o un SSD con una carcasa USB a SATA
-- Alimentación eléctrica
+- Placa Raspberry 4 (modelo B de 8 GB), Odroid M1 o Rock 5B (8 GB/16 GB de RAM)
+- Tarjeta MicroSD (16 GB Clase 10 como mínimo)
+- Disco SSD USB 3.0 de 2 TB como mínimo o un SSD con una carcasa de USB a SATA.
+- Fuente de alimentación
- Cable de Ethernet
-- Reenvío de puertos (consulte los clientes para obtener más información)
-- Una carcasa con disipador de calor y ventilador
-- Teclado USB, monitor y cable HDMI (micro-HDMI) (Opcional)
+- Reenvío de puertos (consulte a los clientes para obtener más información)
+- Una carcasa con disipador y ventilador
+- Teclado USB, monitor y cable HDMI (micro-HDMI) (opcional)
-## ¿Por qué ejecutar Ethereum on ARM? {#why-run-ethereum-on-arm}
+## ¿Por qué ejecutar Ethereum en ARM? {#why-run-ethereum-on-arm}
-Las placas ARM son computadoras pequeños y flexibles y muy asequibles. Son buenas opciones para ejecutar nodos de Ethereum porque son baratos, pueden configurarse para que todos sus recursos se centren solo en el nodo, lo que los hace eficientes, consumen bajas cantidades de energía y son físicamente pequeños para encajar discretamente en cualquier hogar. También es muy fácil hacer funcionar los nodos porque la MicroSD de la Raspberry Pi simplemente se puede flashear con una imagen preconstruida, sin necesidad de descargar o crear software.
+Las placas ARM son ordenadores pequeños, flexibles y muy asequibles. Son una buena opción para ejecutar nodos de Ethereum porque son económicos, se pueden configurar para que todos sus recursos se centren solo en el nodo, haciéndolos eficientes, consumen poca energía y son físicamente pequeños, por lo que caben discretamente en cualquier hogar. También es muy fácil poner en marcha los nodos porque la tarjeta MicroSD de la Raspberry Pi simplemente se puede flashear con una imagen precompilada, sin necesidad de descargar o compilar software.
## ¿Cómo funciona? {#how-does-it-work}
-La tarjeta de memoria de la Raspberry Pi se flashea con una imagen preconstruida. Esta imagen contiene todo lo necesario para ejecutar un nodo Ethereum. Con una tarjeta flasheada, todo lo que el usuario tiene que hacer es encender la Raspberry Pi. Todos los procesos necesarios para ejecutar el nodo se inician automáticamente. Esto funciona porque la tarjeta de memoria contiene un sistema operativo (SO) basado en Linux sobre el cual se ejecutan automáticamente procesos a nivel de sistema que convierten la unidad en un nodo Ethereum.
+La tarjeta de memoria de la Raspberry Pi se flashea con una imagen precompilada. Esta imagen contiene todo lo necesario para ejecutar un nodo de Ethereum. Con una tarjeta flasheada, todo lo que el usuario tiene que hacer es encender la Raspberry Pi. Todos los procesos necesarios para ejecutar el nodo se inician automáticamente. Esto funciona porque la tarjeta de memoria contiene un sistema operativo (SO) basado en Linux sobre el cual se ejecutan automáticamente los procesos a nivel del sistema que convierten la unidad en un nodo de Ethereum.
-Ethereum no se puede ejecutar usando el popular sistema operativo Linux Raspberry Pi "Raspbian" porque Raspbian todavía utiliza una arquitectura de 32 bits que lleva a los usuarios de Ethereum a tener problemas de memoria y los clientes de consenso no admiten binarios de 32 bits. Para resolver esto, el equipo de Ethereum on Arm migró a un sistema operativo nativo de 64 bits llamado "Armbian".
+Ethereum no se puede ejecutar utilizando el popular sistema operativo de Linux para Raspberry Pi "Raspbian" porque Raspbian todavía utiliza una arquitectura de 32 bits, lo que provoca que los usuarios de Ethereum tengan problemas de memoria, y los clientes de consenso no admiten binarios de 32 bits. Para solucionar esto, el equipo de Ethereum on ARM migró a un sistema operativo nativo de 64 bits llamado "Armbian".
-**Las imágenes se encargan de todos los pasos necesarios**, desde la configuración del entorno y el formato del disco SSD hasta la instalación y ejecución del software de Ethereum, así como del inicio de la sincronización de la cadena de bloques.
+**Las imágenes se encargan de todos los pasos necesarios**, desde la configuración del entorno y el formateo del disco SSD hasta la instalación y ejecución del software de Ethereum, así como el inicio de la sincronización de la cadena de bloques.
## Nota sobre los clientes de ejecución y de consenso {#note-on-execution-and-consensus-clients}
-La imagen de Ethereum on Arm incluye clientes de ejecución y consenso precreados como servicios. Un nodo Ethereum requiere que ambos clientes estén sincronizados y ejecutándose. Solo tiene que descargar y flashear la imagen y luego iniciar los servicios. La imagen está precargada con los siguientes clientes de ejecución:
+La imagen de Ethereum on ARM incluye clientes de ejecución y de consenso precompilados como servicios. Un nodo de Ethereum requiere que ambos clientes estén sincronizados y en ejecución. Solo necesita descargar y flashear la imagen y, a continuación, iniciar los servicios. La imagen está precargada con los siguientes clientes de ejecución:
- Geth
- Nethermind
@@ -54,82 +56,82 @@ y los siguientes clientes de consenso:
- Prysm
- Teku
-Debe elegir uno de cada uno para ejecutar: todos los clientes de ejecución son compatibles con todos los clientes de consenso. Si no selecciona explícitamente un cliente, el nodo volverá a sus valores predeterminados, Geth y Lighthouse, y los ejecutará automáticamente al encender la placa. Debe abrir el puerto 30303 en su router para que Geth pueda encontrar y conectarse a los pares, o peers.
+Debe elegir uno de cada para ejecutarlo: todos los clientes de ejecución son compatibles con todos los clientes de consenso. Si no selecciona un cliente de forma explícita, el nodo volverá a sus valores predeterminados (Geth y Lighthouse) y los ejecutará automáticamente cuando la placa se encienda. Debe abrir el puerto 30303 en su rúter para que Geth pueda encontrar y conectarse a pares.
## Descargar la imagen {#downloading-the-image}
-La imagen de Raspberry Pi 4 Ethereum es una imagen "plug and play" que instala y configura automáticamente tanto los clientes de ejecución como los de consenso, configurándolos para que interactúen entre sí y se conecten a la red Ethereum. El usuario solo debe iniciar sus procesos con un simple comando.
+La imagen de Ethereum para Raspberry Pi 4 es una imagen de tipo «plug and play» que instala y configura automáticamente los clientes de ejecución y de consenso, configurándolos para que se comuniquen entre sí y se conecten a la red Ethereum. Todo lo que el usuario debe hacer es iniciar sus procesos con un simple comando.
-Descargar la imagen de Raspberry Pi de [Ethereum on Arm](https://ethereumonarm-my.sharepoint.com/:u:/p/dlosada/Ec_VmUvr80VFjf3RYSU-NzkBmj2JOteDECj8Bibde929Gw?download=1) y verificar el hash SHA256:
+Descargue la imagen de Raspberry Pi desde [Ethereum on ARM](https://ethereumonarm-my.sharepoint.com/:u:/p/dlosada/Ec_VmUvr80VFjf3RYSU-NzkBmj2JOteDECj8Bibde929Gw?download=1) y verifique el hash SHA256:
```sh
-# From directory containing the downloaded image
+# Desde el directorio que contiene la imagen descargada
shasum -a 256 ethonarm_22.04.00.img.zip
-# Hash should output: fb497e8f8a7388b62d6e1efbc406b9558bee7ef46ec7e53083630029c117444f
+# El hash de salida debe ser: fb497e8f8a7388b62d6e1efbc406b9558bee7ef46ec7e53083630029c117444f
```
-Tenga en cuenta que las imágenes de las placas Rock 5B y Odroid M1 están disponibles en la [página de descargas](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/quick-guide/download-and-install.html) de Ethereum on Arm.
+Tenga en cuenta que las imágenes para las placas Rock 5B y Odroid M1 están disponibles en la [página de descargas](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/quick-guide/download-and-install.html) de Ethereum-on-ARM.
## Flashear la MicroSD {#flashing-the-microsd}
-La tarjeta MicroSD que se utilizará para la Raspberry Pi debe insertarse primero en una computadora de escritorio o portátil para flashearla. Luego, los siguientes comandos de terminal flasherán la imagen descargada en la tarjeta SD:
+La tarjeta MicroSD que se utilizará para la Raspberry Pi debe insertarse primero en un ordenador de sobremesa o portátil para poder flashearla. A continuación, los siguientes comandos de terminal flashearán la imagen descargada en la tarjeta SD:
```shell
-# check the MicroSD card name
+# compruebe el nombre de la tarjeta MicroSD
sudo fdisk -l
>> sdxxx
```
-Es muy importante que el nombre sea correcto porque el siguiente comando incluye `dd`, que borra completamente el contenido existente de la tarjeta antes de grabar la imagen en ella. Para continuar, vaya al directorio que contiene la imagen comprimida:
+Es muy importante que el nombre sea correcto, ya que el siguiente comando incluye `dd`, que borra por completo el contenido existente de la tarjeta antes de grabar la imagen en ella. Para continuar, vaya al directorio que contiene la imagen comprimida:
```shell
-# unzip and flash image
+# descomprimir y flashear la imagen
unzip ethonarm_22.04.00.img.zip
sudo dd bs=1M if=ethonarm_22.04.00.img of=/dev/ conv=fdatasync status=progress
```
-La tarjeta ahora está flasheada, por lo que se puede insertar en la Raspberry Pi.
+La tarjeta ya está flasheada, por lo que se puede insertar en la Raspberry Pi.
## Iniciar el nodo {#start-the-node}
-Con la tarjeta SD insertada en la Raspberry Pi, conecte el cable Ethernet y el SSD, y luego encienda las unidades. El sistema operativo arrancará y comenzará a realizar automáticamente las tareas preconfiguradas que convierten a la Raspberry Pi en un nodo Ethereum, incluida la instalación y creación del software del cliente. Esto probablemente tardará de 10 a 15 minutos.
+Con la tarjeta SD insertada en la Raspberry Pi, conecte el cable Ethernet y la SSD y, a continuación, encienda la alimentación. El sistema operativo arrancará y comenzará a realizar automáticamente las tareas preconfiguradas que convierten la Raspberry Pi en un nodo de Ethereum, incluida la instalación y compilación del software del cliente. Esto probablemente tardará entre 10 y 15 minutos.
-Una vez que todo esté instalado y configurado, inicie sesión en el dispositivo a través de una conexión ssh o utilizando el terminal directamente si hay un monitor y un teclado conectados a la placa. Utilice la cuenta `ethereum` para iniciar sesión, ya que tiene los permisos necesarios para iniciar el nodo.
+Una vez que todo esté instalado y configurado, inicie sesión en el dispositivo a través de una conexión SSH o usando el terminal directamente si hay un monitor y un teclado conectados a la placa. Use la cuenta `ethereum` para iniciar sesión, ya que tiene los permisos necesarios para iniciar el nodo.
```shell
-User: ethereum
-Password: ethereum
+Usuario: ethereum
+Contraseña: ethereum
```
-El cliente de ejecución predeterminado, Geth, se iniciará automáticamente. Puede confirmar esto comprobando los registros utilizando el siguiente comando de terminal:
+El cliente de ejecución predeterminado, Geth, se iniciará automáticamente. Puede confirmar esto comprobando los registros con el siguiente comando de terminal:
```sh
sudo journalctl -u geth -f
```
-El cliente de consenso debe iniciarse explícitamente. Para hacer esto, primero abra el puerto 9000 en su enrutador para que Lighthouse pueda encontrar y conectarse a otros pares. A continuación, habilite e inicie el servicio Lighthouse:
+El cliente de consenso sí que debe iniciarse explícitamente. Para ello, primero abra el puerto 9000 de su rúter para que Lighthouse pueda encontrar y conectarse a otros pares. A continuación, habilite e inicie el servicio de Lighthouse:
```sh
sudo systemctl enable lighthouse-beacon
sudo systemctl start lighthouse-beacon
```
-Compruebe el cliente utilizando los registros:
+Compruebe el cliente a través de los registros:
```sh
sudo journalctl -u lighthouse-beacon
```
-Tenga en cuenta que el cliente de consenso se sincronizará en unos minutos porque utiliza la sincronización de puntos de control. El cliente de ejecución tardará más, posiblemente varias horas, y no se iniciará hasta que el cliente de consenso haya terminado la sincronización (esto se debe a que el cliente de ejecución necesita un objetivo con el que sincronizarse, que proporciona el cliente de consenso sincronizado).
+Tenga en cuenta que el cliente de consenso se sincronizará en pocos minutos porque utiliza la sincronización de punto de control. El cliente de ejecución tardará más, posiblemente varias horas, y no se iniciará hasta que el cliente de consenso haya terminado de sincronizarse (esto se debe a que el cliente de ejecución necesita un objetivo con el que sincronizarse, que lo proporciona el cliente de consenso sincronizado).
-Con los servicios de Geth y Lighthouse funcionando y sincronizados, ¡su Raspberry Pi es ahora un nodo de Ethereum! Es más común interactuar con la red Ethereum utilizando la consola Javascript de Geth, que se puede conectar al cliente de Geth en el puerto 8545. También es posible enviar comandos con formato de objetos JSON utilizando una herramienta de solicitud como Curl. Vea más detalles en la [documentación de Geth](https://geth.ethereum.org/).
+Con los servicios de Geth y Lighthouse en funcionamiento y sincronizados, ¡su Raspberry Pi es ahora un nodo de Ethereum! La forma más común de interactuar con la red Ethereum es usando la consola de JavaScript de Geth, que se puede conectar al cliente de Geth en el puerto 8545. También es posible enviar comandos con formato de objetos JSON utilizando una herramienta de solicitud como cURL. Puede encontrar más información en la [documentación de Geth](https://geth.ethereum.org/).
-Geth está preconfigurado para informar métricas a un panel de control de Grafana que se puede ver en el navegador. Los usuarios más avanzados podrían querer usar esta función para controlar el estado de su nodo navegando a `ipaddress:3000`, pasando `user: admin` y `passwd: ethereum`.
+Geth está preconfigurado para notificar las métricas a un panel de control de Grafana que se puede ver en el navegador. Los usuarios más avanzados pueden usar esta función para supervisar el estado de su nodo navegando a `ipaddress:3000`, e introduciendo `user: admin` y `passwd: ethereum`.
## Validadores {#validators}
-También se puede añadir opcionalmente un validador al cliente de consenso. El software validador permite que su nodo participe activamente en el consenso y proporciona a la red seguridad criptoeconómica. Obtendrá una recompensa por este trabajo en ETH. Para ejecutar un validador, primero debe tener 32 ETH, que deben depositarse en el contrato de depósito. **Este es un compromiso a largo plazo; todavía no es posible retirar este ETH**. El depósito se puede hacer siguiendo la guía paso a paso en el [Launchpad](https://launchpad.ethereum.org/). Haga esto en una computadora de escritorio/portátil, pero no genere claves; esto se puede hacer directamente en la Raspberry Pi.
+Opcionalmente, también se puede añadir un validador al cliente de consenso. El software del validador permite que su nodo participe activamente en el consenso y proporciona a la red seguridad criptoeconómica. Recibirá una recompensa en ETH por este trabajo. Para ejecutar un validador, primero debe tener 32 ETH, que deben depositarse en el contrato de depósito. El depósito se puede realizar siguiendo la guía paso a paso en el [Launchpad](https://launchpad.ethereum.org/). Haga esto en un ordenador de sobremesa o portátil, pero no genere claves; esto se puede hacer directamente en la Raspberry Pi.
Abra un terminal en la Raspberry Pi y ejecute el siguiente comando para generar las claves de depósito:
@@ -139,32 +141,35 @@ sudo apt-get install staking-deposit-cli
cd && deposit new-mnemonic --num_validators 1
```
-¡Guarde la frase mnemotécnica de manera segura! El comando anterior generó dos archivos en el almacén de claves del nodo: las claves del validador y un archivo de datos de depósito. Los datos de depósito deben subirse a la plataforma de lanzamiento, o lanzador, por lo que deben copiarse desde la Raspberry Pi al escritorio/portátil. Esto se puede hacer utilizando una conexión ssh o cualquier otro método de copiar/pegar.
+(O descargue el [staking-deposit-cli](https://github.com/ethereum/staking-deposit-cli) para ejecutarlo en un equipo aislado y ejecute el comando `deposit new-mnemnonic`)
-Una vez que el archivo de datos de depósito esté disponible en el ordenador que ejecuta la plataforma de lanzamiento, se puede arrastrar y soltar en el `+` en la pantalla de la plataforma de lanzamiento. Siga las instrucciones de la pantalla para enviar una transacción al contrato de depósito.
+¡Guarde la frase mnemotécnica en un lugar seguro! El comando anterior generó dos archivos en el almacén de claves del nodo: las claves del validador y un archivo de datos de depósito. Los datos de depósito deben cargarse en el Launchpad, por lo que deben copiarse de la Raspberry Pi al ordenador de sobremesa o portátil. Esto se puede hacer a través de una conexión SSH o cualquier otro método de copiar y pegar.
-De vuelta en la Raspberry Pi, se puede iniciar un validador. Esto requiere importar las claves del validador, establecer la dirección para recopilar recompensas y luego iniciar el proceso del validador preconfigurado. El siguiente ejemplo es para Lighthouse: las instrucciones para otros clientes de consenso están disponibles en los documentos de [Ethereum on Arm](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/):
+Una vez que el archivo de datos de depósito esté disponible en el ordenador que ejecuta el Launchpad, se puede arrastrar y soltar en el signo `+` de la pantalla del Launchpad. Siga las instrucciones en pantalla para enviar una transacción al contrato de depósito.
+
+De vuelta en la Raspberry Pi, se puede iniciar un validador. Esto requiere importar las claves del validador, establecer la dirección para cobrar las recompensas y, a continuación, iniciar el proceso de validador preconfigurado. El siguiente ejemplo es para Lighthouse; las instrucciones para otros clientes de consenso están disponibles en los [documentos de Ethereum on ARM](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/):
```shell
-# import the validator keys
+# importar las claves del validador
lighthouse account validator import --directory=/home/ethereum/validator_keys
-# set the reward address
+# establecer la dirección de la recompensa
sudo sed -i 's/' /etc/ethereum/lighthouse-validator.conf
-# start the validator
+# iniciar el validador
sudo systemctl start lighthouse-validator
```
-¡Muy bien, ahora tiene un nodo y un validador de Ethereum completos ejecutándose en una Raspberry Pi!
+¡Enhorabuena! Ya tiene un nodo y un validador de Ethereum completos funcionando en una Raspberry Pi.
## Más detalles {#more-details}
-Esta página le brindó una descripción general de cómo configurar un nodo y un validador de Geth-Lighthouse usando Raspberry Pi. Hay instrucciones más detalladas disponibles en el sitio web [Ethereum-on-Arm](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/index.html).
+Esta página ofrece una descripción general de cómo configurar un nodo y un validador de Geth-Lighthouse utilizando una Raspberry Pi. Hay instrucciones más detalladas disponibles en el [sitio web de Ethereum-on-ARM](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/index.html).
## Agradecemos sus comentarios {#feedback-appreciated}
-Sabemos que la Raspberry Pi tiene una enorme base de usuarios que podría tener un impacto muy positivo en la salud de la red Ethereum. Profundice en este tutorial, intente ejecutar en redes de prueba, eche un vistazo a Ethereum on Arm GitHub, dé su opinión, plantee problemas y solicitudes de pull, y ayude a avanzar en la tecnología y la documentación.
+Sabemos que la Raspberry Pi tiene una enorme base de usuarios que podría tener un impacto muy positivo en la salud de la red Ethereum.
+Le animamos a que profundice en los detalles de este tutorial, intente ejecutarlo en las redes de prueba, consulte el GitHub de Ethereum on ARM, envíe sus comentarios, informe de problemas, realice solicitudes de extracción y ayude a mejorar la tecnología y la documentación.
## Referencias {#references}
From fcbb3a45e28499fe5b30d69dbf12b6911ade55a9 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:39 -0300
Subject: [PATCH 255/589] update(i18n):
public/content/translations/es/developers/docs/scaling/plasma/index.md
---
.../developers/docs/scaling/plasma/index.md | 95 ++++++++++---------
1 file changed, 48 insertions(+), 47 deletions(-)
diff --git a/public/content/translations/es/developers/docs/scaling/plasma/index.md b/public/content/translations/es/developers/docs/scaling/plasma/index.md
index fcbc9191534..320ccc717c1 100644
--- a/public/content/translations/es/developers/docs/scaling/plasma/index.md
+++ b/public/content/translations/es/developers/docs/scaling/plasma/index.md
@@ -6,43 +6,43 @@ incomplete: true
sidebarDepth: 3
---
-Una cadena de Plasma es una cadena de bloques separada anclada a la Red principal de Ethereum, pero que ejecuta transacciones fuera de la cadena con su propio mecanismo de validación de bloques. Las cadenas de Plasma a veces se conocen como "child chains" (secundarias o hijas), esencialmente copias más pequeñas de la red principal de Ethereum.Red principal Las cadenas de Plasma utilizan [pruebas de fraude](/glossary/#fraud-proof) (como [rollups optimistas](/developers/docs/scaling/optimistic-rollups/)) para arbitrar disputas.
+Una cadena de Plasma es una cadena de bloques separada, anclada a la red principal de Ethereum, pero que ejecuta transacciones fuera de la cadena con su propio mecanismo de validación de bloques. Las cadenas de Plasma a veces se conocen como "child chains" (secundarias o hijas), esencialmente copias más pequeñas de la red principal de Ethereum.Red principal Las cadenas Plasma usan [pruebas de fraude](/glossary/#fraud-proof) (como los [rollups optimistas](/developers/docs/scaling/optimistic-rollups/)) para arbitrar disputas.
Los Merkle trees permiten la creación de una pila interminable de estas cadenas que pueden funcionar para descargar ancho de banda de las cadenas principales (parent chains) (incluida la red principal de Ethereum). Sin embargo, aunque estas cadenas obtienen algo de seguridad de Ethereum (a través de pruebas de fraude), su seguridad y eficiencia se ven afectadas por varias limitaciones de diseño.
## Requisitos previos {#prerequisites}
-Debe tener una buena comprensión de todos los temas básicos y un alto nivel de conocimiento del [escalado de Ethereum](/developers/docs/scaling/).
+Debería tener una buena comprensión de todos los temas fundamentales y un conocimiento de alto nivel sobre la [escalabilidad de Ethereum](/developers/docs/scaling/).
## ¿Qué es Plasma?
-Plasma es un marco para mejorar la escalabilidad en cadenas de bloques públicas como Ethereum. Como se describe en el [documento técnico original de Plasma](http://plasma.io/plasma.pdf), las cadenas de Plasma se construyen encima de otra cadena de bloques (llamada "cadena raíz"). Cada cadena secundaria o child se extiende desde la cadena raíz y generalmente es gestionada por un contrato inteligente implementado en la cadena principal o parent.
+Plasma es un marco para mejorar la escalabilidad en cadenas de bloques públicas como Ethereum. Como se describe en el [informe de Plasma](http://plasma.io/plasma.pdf) original, las cadenas Plasma se construyen sobre otra cadena de bloques (denominada "cadena raíz"). Cada cadena secundaria o child se extiende desde la cadena raíz y generalmente es gestionada por un contrato inteligente implementado en la cadena principal o parent.
-El contrato de Plasma funciona, entre otras cosas, como un [puente](/developers/docs/bridges/) que permite a los usuarios mover activos entre la cadena principal de Ethereum y la cadena de Plasma. Aunque esto las hace similares a las [cadenas laterales](/developers/docs/scaling/sidechains/), las cadenas de Plasma se benefician, al menos, hasta cierto punto, de la seguridad de la red principal de Ethereum. Esto se diferencia de las cadenas laterales, que son totalmente responsables de su propia seguridad.
+El contrato de Plasma funciona, entre otras cosas, como un [puente](/developers/docs/bridges/) que permite a los usuarios mover activos entre la red principal de Ethereum y la cadena Plasma. Aunque esto las hace similares a las [cadenas laterales](/developers/docs/scaling/sidechains/), las cadenas de Plasma se benefician, al menos hasta cierto punto, de la seguridad de la red principal de Ethereum. Esto se diferencia de las cadenas laterales, que son totalmente responsables de su propia seguridad.
## ¿Cómo funciona Plasma?
Los componentes básicos del marco de trabajo de Plasma son:
-### Computación fuera de la cadena {#off-chain-computation}
+### Computación fuera de la cadena {#offchain-computation}
-La velocidad actual de procesamiento de Ethereum está limitada a ~ 15-20 transacciones por segundo, reduciendo a corto plazo la posibilidad de escalamiento para manejar más usuarios. Este problema existe principalmente porque el [mecanismo de consenso](/developers/docs/consensus-mechanisms/) de Ethereum requiere muchos nodos peer-to-peer para verificar cada actualización del estado de la cadena de bloques.
+La velocidad actual de procesamiento de Ethereum está limitada a ~ 15-20 transacciones por segundo, reduciendo a corto plazo la posibilidad de escalamiento para manejar más usuarios. Este problema existe principalmente porque el [mecanismo de consenso](/developers/docs/consensus-mechanisms/) de Ethereum requiere que muchos nodos entre pares verifiquen cada actualización del estado de la cadena de bloques.
Aunque el mecanismo de consenso de Ethereum es necesario por seguridad, puede que no aplique a todos los caso de uso. Por ejemplo, Alice tal vez no necesite que la red entera de Ethereum verifique los pagos diarios que le hace a Bob por una taza de café, ya que existe cierta confianza entre ambas partes.
Plasma supone que la red principal de Ethereum no necesita verificar todas las transacciones. En cambio, podemos procesar transacciones fuera de la red principal para así liberar a los nodos del trabajo de tener que validar cada transacción.
-La computación fuera de la cadena (off-chain) es necesaria porque las cadenas de Plasma pueden optimizar la velocidad y el costo. Por ejemplo, una cadena de Plasma tal vez –y suele ser el caso– use un único "operador" para manejar los pedidos y la ejecución de las transacciones. Con solo una entidad que verifique las transacciones, el tiempo de procesamiento en una cadena de Plasma es más rápido que el de la red principal de Ethereum.
+La computación fuera de la cadena es necesaria, porque las cadenas de Plasma pueden optimizar la velocidad y el coste. Por ejemplo, una cadena de Plasma tal vez –y suele ser el caso– use un único "operador" para manejar los pedidos y la ejecución de las transacciones. Con solo una entidad que verifique las transacciones, el tiempo de procesamiento en una cadena de Plasma es más rápido que el de la red principal de Ethereum.
### Compromisos de estado {#state-commitments}
-Si bien Plasma ejecuta las transacciones fuera de la cadena, estas se liquidan en la capa de ejecución principal de Ethereum; de otra manera, las cadenas de Plasma no se podrían beneficiar de las garantías de seguridad de Ethereum. Pero finalizar las transacciones fuera de la cadena sin conocer el estado de la cadena de Plasma rompería el modelo de seguridad y permitiría la proliferación de transacciones invalidas. Por esto el operador, el ente responsable por producir bloques en la cadena de Plasma, debe publicar los "compromisos de estado" en Ethereum periódicamente.
+Si bien Plasma ejecuta las transacciones fuera de la cadena, estas se liquidan en la capa de ejecución principal de Ethereum —de lo contrario, las cadenas de Plasma no se podrían beneficiar de las garantías de seguridad de Ethereum—. Sin embargo, finalizar las transacciones fuera de la cadena sin conocer el estado de la cadena de Plasma rompería el modelo de seguridad y permitiría la proliferación de transacciones invalidas. Por esto el operador, el ente responsable por producir bloques en la cadena de Plasma, debe publicar los "compromisos de estado" en Ethereum periódicamente.
-Un [esquema de compromiso](https://en.wikipedia.org/wiki/Commitment_scheme) es una técnica criptográfica para comprometerse con un valor o declaración sin revelarlo a otra parte. Los compromisos son "vinculantes" en el sentido de que no puede cambiar el valor o la declaración una vez que se ha comprometido con él. Los compromisos de estado en Plasma toman la forma de "raíces de Merkle" (derivadas de un [Merkle tree](/whitepaper/#merkle-trees) o árbol) que el operador envía a intervalos al contrato de Plasma en la cadena Ethereum.
+Un [esquema de compromiso](https://en.wikipedia.org/wiki/Commitment_scheme) es una técnica criptográfica para comprometerse con un valor o una declaración sin revelarlo a otra parte. Los compromisos son "vinculantes" en el sentido de que no puede cambiar el valor o la declaración una vez que se ha comprometido con él. Los compromisos de estado en Plasma adoptan la forma de "raíces de Merkle" (derivadas de un [árbol de Merkle](/whitepaper/#merkle-trees)) que el operador envía a intervalos al contrato de Plasma en la cadena de Ethereum.
Las raíces de Merkle son primitivos criptográficos que permiten comprimir grandes cantidades de información. Una raíz de Merkle (también llamada "raíz de bloque" en este caso) podría representar todas las transacciones en un bloque. Las raíces de Merkle también facilitan la verificación de que una pequeña porción de datos sea parte de un conjunto de datos más grande. Por ejemplo, un usuario puede producir una [prueba de Merkle](/developers/tutorials/merkle-proofs-for-offline-data-integrity/#main-content) para probar la inclusión de una transacción en un bloque específico.
-Las raíces de Merkle son importantes para proporcionar información sobre el estado fuera de la cadena a Ethereum. Puede pensar en las raíces de Merkle como "puntos de guardado": el operador está diciendo: "Este es el estado de la cadena de Plasma en el punto x en el tiempo, y esta es la raíz de Merkle como prueba". El operador se está comprometiendo con el _estado actual_ de la cadena de Plasma con una raíz de Merkle, razón por la que se le llama "compromiso de estado".
+Las raíces de Merkle son importantes para proporcionar información sobre el estado fuera de la cadena a Ethereum. Puede pensar en las raíces de Merkle como "puntos de guardado": el operador está diciendo: "Este es el estado de la cadena de Plasma en el punto x en el tiempo, y esta es la raíz de Merkle como prueba". El operador se compromete con el _estado actual_ de la cadena Plasma con una raíz de Merkle, razón por la cual se denomina "compromiso de estado".
### Entradas y salidas {#entries-and-exits}
@@ -50,11 +50,11 @@ Para que los usuarios de Ethereum aprovechen la tecnología de Plasma, debe habe
Plasma utiliza un contrato maestro que se ejecuta en Ethereum para procesar las entradas y salidas de los usuarios. Este contrato maestro también es responsable de hacer un seguimiento de los compromisos de estado (explicado anteriormente) y castigar el comportamiento deshonesto a través de pruebas de fraude (lo explicaremos mejor más adelante).
-#### Entrar a la cadena de Plasma {#entering-the-plasma-chain}
+#### Entrar en la cadena Plasma {#entering-the-plasma-chain}
Para entrar a la cadena de Plasma, Alice (la usuaria) tiene que depositar ETH o cualquier token ERC-20 en el contrato de Plasma. El operador de Plasma, el cual vigila los depósitos en el contrato, recrea una cantidad igual a la que Alice depositó inicialmente y la libera hacia la dirección de esta en la cadena de Plasma. Alice debe dar fe de que ha recibido los fondos de la cadena secundaria o child y luego puede usar estos fondos para transacciones.
-#### Salir de la cadena de Plasma {#exiting-the-plasma-chain}
+#### Salir de la cadena Plasma {#exiting-the-plasma-chain}
Salir de la cadena de Plasma es más complejo que entrar a ella por varias razones. La más importante es que, si bien Ethereum tiene información sobre el estado de la cadena de Plasma, no puede verificar si la información es verdadera o no. Un usuario malicioso podría hacer una afirmación incorrecta ("tengo 1000 ETH") y salirse con la suya proporcionando pruebas falsas para respaldar su afirmación.
@@ -62,9 +62,9 @@ Para evitar retiros maliciosos, se introduce un "periodo de desafío" o impugnac
No obstante, por lo general se da el caso de que los usuarios son honestos y hacen afirmaciones correctas sobre los fondos que poseen. En este escenario, Alice iniciará una solicitud de retiro en la cadena raíz (Ethereum) enviando una transacción al contrato de Plasma.
-También debe proporcionar una prueba de Merkle que verifique que una transacción que creó sus fondos en la cadena de Plasma se incluyó en un bloque. Esto es necesario para las iteraciones de Plasma, como [Plasma MVP](https://www.learnplasma.org/en/learn/mvp.html), que utilizan un modelo de [Salida de transacción no gastada (UTXO)](https://en.wikipedia.org/wiki/Unspent_transaction_output).
+También debe proporcionar una prueba de Merkle que verifique que una transacción que creó sus fondos en la cadena de Plasma se incluyó en un bloque. Esto es necesario para las iteraciones de Plasma, como [Plasma MVP](https://www.learnplasma.org/en/learn/mvp.html), que utilizan un modelo de [salida de transacción no gastada (UTXO)](https://en.wikipedia.org/wiki/Unspent_transaction_output).
-Otros, como [Plasma Cash](https://www.learnplasma.org/en/learn/cash.html), representan los fondos como [tokens no fungibles](/developers/docs/standards/tokens/erc-721/) en lugar de UTXO. La retirada, en este caso, requiere una prueba de propiedad de los tokens en la cadena de Plasma. Esto se hace enviando las dos últimas transacciones que involucran el token y proporcionando una prueba de Merkle que verifique la inclusión de esas transacciones en un bloque.
+Otras, como [Plasma Cash](https://www.learnplasma.org/en/learn/cash.html), representan los fondos como [tokens no fungibles](/developers/docs/standards/tokens/erc-721/) en lugar de UTXO. La retirada, en este caso, requiere una prueba de propiedad de los tokens en la cadena de Plasma. Esto se hace enviando las dos últimas transacciones que involucran el token y proporcionando una prueba de Merkle que verifique la inclusión de esas transacciones en un bloque.
El usuario también debe añadir una fianza a la solicitud de retiro como garantía de comportamiento honesto. Si un retador demuestra que la solicitud de retiro de Alice no es válida, se recorta (slash) su fianza, y parte de ella va al retador como recompensa.
@@ -72,7 +72,7 @@ Si el periodo de impugnación transcurre sin que nadie proporcione una prueba de
### Arbitraje de disputas {#dispute-arbitration}
-Como cualquier cadena de bloques, las cadenas de Plasma necesitan un mecanismo para hacer cumplir la integridad de las transacciones en caso de que los participantes actúen de forma maliciosa (por ejemplo, fondos de doble gasto). Con este fin, las cadenas de Plasma utilizan pruebas de fraude para arbitrar disputas sobre la validez de las transiciones de estado y penalizar el mal comportamiento. Las pruebas de fraude se utilizan como un mecanismo a traves del cual una cadena secundaria de Plasma presenta una queja a su cadena principal o a la cadena raíz.
+Al igual que cualquier cadena de bloques, las cadenas Plasma necesitan un mecanismo para garantizar la integridad de las transacciones en caso de que los participantes actúen de forma maliciosa (p. ej., doble gasto de fondos). Con este fin, las cadenas de Plasma utilizan pruebas de fraude para arbitrar disputas sobre la validez de las transiciones de estado y penalizar el mal comportamiento. Las pruebas de fraude se utilizan como un mecanismo a traves del cual una cadena secundaria de Plasma presenta una queja a su cadena principal o a la cadena raíz.
Una prueba de fraude es simplemente un reclamo o afirmación de que una transición de estado en particular no es válida. Un ejemplo es si un usuario (Alice) intenta gastar los mismos fondos dos veces. Tal vez gastó el UTXO en una transacción con Bob y quiere gastar el mismo UTXO (que ahora es el de Bob) en otra transacción.
@@ -82,15 +82,15 @@ Si el desafío de Bob tiene éxito, la solicitud de retiro de Alice se cancela.
## El problema de la salida masiva en Plasma {#the-mass-exit-problem-in-plasma}
-El problema de salida masiva se produce cuando un gran número de usuarios intentan el retiro de una cadena de Plasma al mismo tiempo. La razón por la que existe este problema tiene que ver con uno de los mayores inconvenientes de Plasma: la **no disponibilidad de datos**.
+El problema de salida masiva se produce cuando un gran número de usuarios intentan el retiro de una cadena de Plasma al mismo tiempo. La existencia de este problema tiene que ver con uno de los mayores problemas de Plasma: **la no disponibilidad de los datos**.
La disponibilidad de datos es la capacidad de verificar que la información de un bloque propuesto se publicó realmente en la red de cadenas de bloques. Un bloque "no está disponible" si el productor publica el bloque en sí, pero retiene los datos utilizados para crear el bloque.
Los bloques deben estar disponibles para que los nodos puedan descargar el bloque y verificar la validez de las transacciones. Las cadenas de bloques garantizan la disponibilidad de los datos obligando a los productores de bloques a publicar todos los datos de las transacciones en la cadena.
-La disponibilidad de datos también ayuda a asegurar los protocolos de escalado fuera de la cadena que se basan en la capa base de Ethereum. Al obligar a los operadores de estas cadenas a publicar datos de transacciones en Ethereum, cualquiera puede desafiar los bloques no válidos mediante la construcción de pruebas de fraude que hagan referencia al estado correcto de la cadena.
+La disponibilidad de datos también ayuda a asegurar los protocolos de escalabilidad fuera de la cadena que se basan en la capa base de Ethereum. Al obligar a los operadores de estas cadenas a publicar datos de transacciones en Ethereum, cualquiera puede desafiar los bloques no válidos mediante la construcción de pruebas de fraude que hagan referencia al estado correcto de la cadena.
-Las cadenas de Plasma almacenan principalmente los datos de las transacciones con el operador y **no publican ningún dato en la red principal** (es decir, además de los compromisos de estado periódicos). Esto significa que los usuarios deben confiar en que el operador proporcione datos de los bloques si necesitan crear pruebas de fraude que cuestionen transacciones no válidas. Si este sistema funciona, los usuarios siempre pueden usar pruebas de fraude para asegurar los fondos.
+Las cadenas Plasma almacenan principalmente los datos de las transacciones con el operador y **no publican ningún dato en la red principal** (es decir, además de los compromisos de estado periódicos). Esto significa que los usuarios deben confiar en que el operador proporcione datos de los bloques si necesitan crear pruebas de fraude que cuestionen transacciones no válidas. Si este sistema funciona, los usuarios siempre pueden usar pruebas de fraude para asegurar los fondos.
El problema comienza cuando el operador, no cualquier usuario, es la parte que actúa maliciosamente. Debido a que el operador tiene el control exclusivo de la cadena de bloques, tiene más incentivos para promover transiciones de estado no válidas a mayor escala, como robar fondos que pertenecen a los usuarios de la cadena de Plasma.
@@ -98,41 +98,41 @@ En este caso, el uso del sistema clásico de pruebas de fraude no funciona. El o
Por lo tanto, la solución más optimista es intentar una "salida masiva" de usuarios de la cadena de Plasma. La salida masiva ralentiza el plan del operador malicioso para robar fondos y proporciona algo de protección para los usuarios. Las solicitudes de retiro se ordenan en función de cuándo se creó cada UTXO (o token), lo que evita que los operadores maliciosos se adelanten (front-running) a los usuarios honestos.
-Sin embargo, todavía necesitamos una forma de verificar la validez de las solicitudes de retiro durante una salida masiva, para evitar que las personas oportunistas saquen rédito del caos de procesar salidas inválidas. La solución es simple: requerir a los usuarios que publiquen el último **estado válido de la cadena** para sacar su dinero.
+Sin embargo, todavía necesitamos una forma de verificar la validez de las solicitudes de retiro durante una salida masiva, para evitar que las personas oportunistas saquen rédito del caos de procesar salidas inválidas. La solución es sencilla: exigir a los usuarios que publiquen el último **estado válido de la cadena** para retirar su dinero.
Pero este enfoque todavía tiene problemas. Por ejemplo, si todos los usuarios de una cadena de Plasma necesitan salir (lo que es posible en el caso de un operador malicioso), entonces todo el estado válido de la cadena de Plasma debe descargarse en la capa base de Ethereum a la vez. Con el tamaño arbitrario de las cadenas de Plasma (alto rendimiento = más datos) y las limitaciones en las velocidades de procesamiento de Ethereum, esta no es una solución ideal.
Aunque los juegos de salida suenan bien en teoría, las salidas masivas de la vida real probablemente desencadenarán la congestión de toda la red en el propio Ethereum. Además de dañar la funcionalidad de Ethereum, una salida masiva mal coordinada significa que es posible que los usuarios no puedan retirar fondos antes de que el operador vacíe todas las cuentas de la cadena de Plasma.
-## Pros y contras de Plasma {#pros-and-cons-of-plasma}
+## Ventajas y desventajas de Plasma {#pros-and-cons-of-plasma}
-| Ventajas | Desventajas |
-| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Ofrece un alto rendimiento y un bajo coste por transacción. | No admite el cálculo general (No se pueden ejecutar contratos inteligentes. Solo se admiten transferencias básicas de tokens, swaps y algunos otros tipos de transacciones a través de la lógica de primer orden. |
-| Es una buena opción para realizar transacciones entre usuarios arbitrarios (no hay gastos por par de usuarios si ambos están establecidos en la cadena de plasma). | Precisa la vigilancia periódica de la red (requisito de vivacidad) o delegar esta responsabilidad a otra persona para garantizar la seguridad de sus fondos. |
-| Las cadenas de Plasma se pueden adaptar a casos de uso específicos que no están relacionados con la cadena principal. Cualquier persona, incluidas las empresas, puede personalizar contratos inteligentes de Plasma para proporcionar una infraestructura escalable que funcione en diferentes contextos. | Utiliza uno o más operadores para almacenar datos y mostrarlos bajo petición. |
-| Reduce la carga en la cadena principal de Ethereum moviendo el cálculo y el almacenamiento fuera de la cadena. | Los retiros se retrasan varios días para permitir reclamos (objeciones). Para los activos fungibles, esto puede ser mitigado por los proveedores de liquidez, pero hay un costo de capital asociado. |
-| | Si demasiados usuarios intentan salir simultáneamente, la red principal de Ethereum podría congestionarse. |
+| Pros | Contras |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Ofrece un alto rendimiento y un bajo coste por transacción. | No admite el cálculo general (No se pueden ejecutar contratos inteligentes). Solo se admiten transferencias básicas de tokens, swaps y algunos otros tipos de transacciones a través de la lógica de primer orden. |
+| Es una buena opción para realizar transacciones entre usuarios arbitrarios (no hay gastos por par de usuarios si ambos están establecidos en la cadena de plasma). | Precisa la vigilancia periódica de la red (requisito de vivacidad) o delegar esta responsabilidad a otra persona para garantizar la seguridad de sus fondos. |
+| Las cadenas de Plasma se pueden adaptar a casos de uso específicos que no están relacionados con la cadena principal. Cualquier persona, incluidas las empresas, puede personalizar contratos inteligentes de Plasma para proporcionar una infraestructura escalable que funcione en diferentes contextos. | Utiliza uno o más operadores para almacenar datos y mostrarlos bajo petición. |
+| Reduce la carga en la red principal de Ethereum moviendo la computación y el almacenamiento fuera de la cadena. | Los retiros se retrasan varios días para permitir reclamos (objeciones). Para los activos fungibles, esto puede ser mitigado por los proveedores de liquidez, pero hay un costo de capital asociado. |
+| | Si demasiados usuarios intentan salir simultáneamente, la red principal de Ethereum podría congestionarse. |
-## Protocolos de escalado de Plasma frente a capa 2 {#plasma-vs-layer-2}
+## Plasma frente a los protocolos de escalabilidad de capa 2 {#plasma-vs-layer-2}
-Si bien Plasma alguna vez se consideró una solución de escalado útil para Ethereum, desde entonces se ha desincentivado en favor de los [protocolos de escalado de capa 2 (L2)](/layer-2/). Las soluciones de escalado L2 solucionan varios de los problemas de Plasma:
+Aunque en su día Plasma se consideró una solución de escalabilidad útil para Ethereum, desde entonces se ha abandonado en favor de los [protocolos de escalabilidad de capa 2 (L2)](/layer-2/). Las soluciones de escalado L2 solucionan varios de los problemas de Plasma:
### Eficiencia {#efficiency}
-Los [rollups de conocimiento cero (ZK)](/developers/docs/scaling/zk-rollups) generan pruebas criptográficas de la validez de cada lote de transacciones procesadas fuera de la cadena. Esto evita que los usuarios (y operadores) promuevan transiciones de estado no válidas, eliminando la necesidad de periodos de desafío y juegos de salida. También significa que los usuarios no tienen que ver la cadena periódicamente para asegurar sus fondos.
+Los [rollups de conocimiento cero](/developers/docs/scaling/zk-rollups) generan pruebas criptográficas de la validez de cada lote de transacciones procesadas fuera de la cadena. Esto evita que los usuarios (y operadores) promuevan transiciones de estado no válidas, eliminando la necesidad de periodos de desafío y juegos de salida. También significa que los usuarios no tienen que ver la cadena periódicamente para asegurar sus fondos.
### Soporte para contratos inteligentes {#support-for-smart-contracts}
-Otro problema con el marco de Plasma era la [incapacidad de admitir la ejecución de contratos inteligentes de Ethereum](https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598/4). Como resultado, la mayoría de las implementaciones de Plasma se creaban principalmente para pagos simples o el intercambio de tokens ERC-20.
+Otro problema del marco Plasma era [la incapacidad de admitir la ejecución de los contratos inteligentes de Ethereum](https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598/4). Como resultado, la mayoría de las implementaciones de Plasma se creaban principalmente para pagos simples o el intercambio de tokens ERC-20.
-Por el contrario, los rollups optimistas son compatibles con la [Máquina virtual de Ethereum](/developers/docs/evm/) y pueden ejecutar [contratos inteligentes](/developers/docs/smart-contracts/) nativos de Ethereum, lo que los convierte en una solución útil y _segura_ para escalar [aplicaciones descentralizadas](/developers/docs/dapps/). Del mismo modo, hay planes en marcha para [crear una implementación de conocimiento cero de la EVM (zkEVM)](https://ethresear.ch/t/a-zk-evm-specification/11549) que permitiría que los rollups de ZK procesen lógica arbitraria y ejecuten contratos inteligentes.
+Por el contrario, los rollups optimistas son compatibles con la [máquina virtual de Ethereum](/developers/docs/evm/) y pueden ejecutar [contratos inteligentes](/developers/docs/smart-contracts/) nativos de Ethereum, lo que los convierte en una solución útil y _segura_ para la escalabilidad de [aplicaciones descentralizadas](/developers/docs/dapps/). Del mismo modo, hay planes en marcha para [crear una implementación de conocimiento cero de la EVM (zkEVM)](https://ethresear.ch/t/a-zk-evm-specification/11549) que permitiría a los rollups ZK procesar lógica arbitraria y ejecutar contratos inteligentes.
-### No disponibilidad de datos {#data-unavailability}
+### Información no disponible {#data-unavailability}
Como se explicó anteriormente, Plasma tiene el problema de la disponibilidad de datos. Si un operador malicioso promoviera una transición no válida en la cadena de Plasma, los usuarios no podrían impugnarla, ya que el operador puede retener los datos necesarios para crear la prueba de fraude. Los rollups resuelven este problema obligando a los operadores a publicar los datos de las transacciones en Ethereum, lo que permite a cualquiera verificar el estado de la cadena y crear pruebas de fraude si es necesario.
-### Problema de salida masiva {#mass-exit-problem}
+### Problema de la salida masiva {#mass-exit-problem}
Los rollups de ZK y los rollups optimistas resuelven el problema de salida masiva de Plasma de varias maneras. Por ejemplo, un rollup de ZK se basa en mecanismos criptográficos que garantizan que los operadores no puedan robar fondos de los usuarios en ningún escenario.
@@ -142,13 +142,14 @@ Del mismo modo, los rollups optimistas imponen un periodo de retraso en los reti
Plasma, las cadenas laterales y la fragmentación, o sharding, son bastante similares porque todos se conectan a la red principal de Ethereum de alguna manera. Sin embargo, el nivel y la fuerza de estas conexiones varían, lo que afecta a las propiedades de seguridad de cada solución de escalado.
-### Plasma vs cadenas laterales {#plasma-vs-sidechains}
+### Plasma frente a cadenas laterales {#plasma-vs-sidechains}
-Una [cadena lateral](/developers/docs/scaling/sidechains/) es una cadena de bloques operada de forma independiente conectada a la red principal de Ethereum a través de un puente bidireccional. Los [puentes](/bridges/) permiten a los usuarios intercambiar tokens entre las dos cadenas de bloques para realizar transacciones en la cadena lateral, reduciendo la congestión en la red principal de Ethereum y mejorando la escalabilidad. Las cadenas laterales utilizan un mecanismo de consenso separado y suelen ser mucho más pequeñas que la red principal de Ethereum. Como resultado, puentear activos a estas cadenas implica un mayor riesgo; dada la falta de garantías de seguridad heredadas de la red principal de Ethereum en el modelo de cadena lateral, los usuarios se arriesgan a la pérdida de fondos en un ataque en la cadena lateral.
+Una [cadena lateral](/developers/docs/scaling/sidechains/) es una cadena de bloques que funciona de forma independiente y que está conectada a la red principal de Ethereum a través de un puente bidireccional. Los [puentes](/bridges/) permiten a los usuarios intercambiar tokens entre las dos cadenas de bloques para realizar transacciones en la cadena lateral, lo que reduce la congestión en la red principal de Ethereum y mejora la escalabilidad.
+Las cadenas laterales utilizan un mecanismo de consenso separado y suelen ser mucho más pequeñas que la red principal de Ethereum. Como resultado, puentear activos a estas cadenas implica un mayor riesgo; dada la falta de garantías de seguridad heredadas de la red principal de Ethereum en el modelo de cadena lateral, los usuarios se arriesgan a la pérdida de fondos en un ataque en la cadena lateral.
Por el contrario, las cadenas de Plasma derivan su seguridad de la cadena principal. Esto las hace mensurablemente más seguras que las cadenas laterales. Tanto las cadenas laterales como las cadenas de Plasma pueden tener diferentes protocolos de consenso, pero la diferencia es que las cadenas de plasma publican raíces Merkle para cada bloque en la red principal de Ethereum. Las raíces de bloque son pequeñas porciones de información que podemos usar para verificar la información sobre las transacciones que ocurren en una cadena de Plasma. Si se produce un ataque en una cadena de Plasma, los usuarios pueden retirar sus fondos de forma segura a la red principal utilizando las pruebas apropiadas.
-### Plasma vs. fragmentación {#plasma-vs-sharding}
+### Plasma frente a fragmentación {#plasma-vs-sharding}
Tanto las cadenas de Plasma como las cadenas de fragmentos (shards) publican periódicamente pruebas criptográficas en la red principal de Ethereum. Sin embargo, ambas tienen diferentes propiedades de seguridad.
@@ -156,20 +157,20 @@ Las cadenas de fragmentos suben o comprometen "encabezados de recopilación" a l
El Plasma es diferente porque la red principal solo recibe información mínima sobre el estado de las cadenas secundarias. Esto significa que la red principal no puede verificar eficazmente las transacciones realizadas en cadenas secundarias, lo que las hace menos seguras.
-**Note** que la fragmentación de la cadena de bloques de Ethereum ya no está en la hoja de ruta. Ha sido reemplazada por el escalamiento a través de rollups y [Danksharding](/roadmap/danksharding).
+**Nota**: la fragmentación de la cadena de bloques de Ethereum ya no está en la hoja de ruta. Ha sido reemplazada por la escalabilidad a través de los rollups y [Danksharding](/roadmap/danksharding).
-### Usos de Plasma {#use-plasma}
+### Usar Plasma {#use-plasma}
Múltiples proyectos proveen implementaciones de Plasma que puede integrar en sus dApps:
-- [Polygon](https://polygon.technology/) (anteriormente, Matic Network)
+- [Polygon](https://polygon.technology/) (anteriormente Matic Network)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Información sobre Plasma](https://www.learnplasma.org/en/)
-- [Un recordatorio rápido de lo que significa "seguridad compartida" y por qué es tan importante](https://old.reddit.com/r/ethereum/comments/sgd3zt/a_quick_reminder_of_what_shared_security_means/)
-- [Cadenas laterales vs. Plasma vs. sharding](https://vitalik.eth.limo/general/2019/06/12/plasma_vs_sharding.html)
-- [Explicación de Plasma, parte 1: aspectos básicos](https://www.theblockcrypto.com/amp/post/10793/understanding-plasma-part-1-the-basics)
-- [La vida y la muerte de Plasma](https://medium.com/dragonfly-research/the-life-and-death-of-plasma-b72c6a59c5ad#)
+- [Aprenda sobre Plasma](https://www.learnplasma.org/en/)
+- [Un recordatorio rápido de lo que significa la "seguridad compartida" y por qué es tan importante](https://old.reddit.com/r/ethereum/comments/sgd3zt/a_quick_reminder_of_what_shared_security_means/)
+- [Cadenas laterales frente a Plasma y fragmentación](https://vitalik.eth.limo/general/2019/06/12/plasma_vs_sharding.html)
+- [Entendiendo Plasma, Parte 1: Los fundamentos](https://www.theblockcrypto.com/amp/post/10793/understanding-plasma-part-1-the-basics)
+- [La vida y muerte de Plasma](https://medium.com/dragonfly-research/the-life-and-death-of-plasma-b72c6a59c5ad#)
-_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
From f242ce481396c1c8e1d6c91d4ccced19e1ccfd3f Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:41 -0300
Subject: [PATCH 256/589] update(i18n):
public/content/translations/es/contributing/adding-desci-projects/index.md
---
.../adding-desci-projects/index.md | 36 +++++++++----------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/public/content/translations/es/contributing/adding-desci-projects/index.md b/public/content/translations/es/contributing/adding-desci-projects/index.md
index 90685abfc07..d527b2ebe97 100644
--- a/public/content/translations/es/contributing/adding-desci-projects/index.md
+++ b/public/content/translations/es/contributing/adding-desci-projects/index.md
@@ -1,10 +1,10 @@
---
title: Agregando proyectos DeSci
-description: Las políticas que usamos cuando agregamos los enlaces hacia proyectos DeSci en la página ethereum.org
+description: Las políticas que seguimos cuando añadimos un enlace a proyectos en la página DeSci de ethereum.org
lang: es
---
-# Agregando proyectos {#adding-projects}
+# Añadir proyectos {#adding-projects}
Nosotros queremos estar seguros de mostrar una variedad de proyectos y darles una buena imagen del paisaje DeSci.
@@ -12,23 +12,23 @@ Cualquiera es libre de sugerirnos elistar un proyecto DeSci en la página de ehe
## El marco de decisión {#the-decision-framework}
-### Criterios para la inclusión: los aspectos obligatorios {#the-must-haves}
+### Criterios de inclusión: los imprescindibles {#the-must-haves}
-- **código/datos de Código abierto** - La apertura del código y datos es el principal pilar de DeSci, por ende proyectos DeSci no deben de ser de fuente cerrada. La base del código deberá ser accesible e idealmente abierta a PRs.
-- **Los proyectos DeSci deberán demostrar que son descentralizados**: esto podría incluir el ser gobernados por una DAO, o el haber sido construidos con varias tecnologías descentralizadas incluidas las carteras no custodiadas. Eso también puediera involucrar auditorías de contratos inteligentes en Ethereum.
-- **Información de listado honesta y precisa**: Se espera que cualquier listado sugerido de proyectos venga con información honesta y precisa. Se eliminarán aquellos productos que falsifiquen información de listado, como al declarar que su producto es “de código abierto” cuando no lo es.
-- **Compromiso demostrable para ampliar el acceso a la ciencia** - Un proyecto DeSci debería poder articular cómo amplían la participación de la ciencia al público en general, y no solo a los poseedores de un token ó NFT.
-- **Accesible globalmente**: Su proyecto no tiene limitaciones geográficas ni requisitos de KYC que excluyan a ciertas personas de acceder a su servicio.
-- **Sitio web informativo y documentación**: Es importante que los visitantes del sitio web del proyecto puedan entender en qué consiste realmente el proyecto, cómo contribuye a la descentralización de la infraestructura científica y cómo participar.
-- **Los proyectos deberán ser parte del ecosistema de Ethereum** - En ethereum.org creemos que somos (juntos a nuestras capa 2) una apropiada base para el movimiento DeSci.
-- **El proyecto está bastante bien establecido** - El proyecto cuenta con usuarios reales que han podido acceder al servicio por varios meses.
+- **Código/datos de código abierto** - La apertura del código y los datos es un principio fundamental de DeSci, por lo que los proyectos DeSci no deben ser de código cerrado. La base del código deberá ser accesible e idealmente abierta a PRs.
+- **Los proyectos DeSci deben ser demostrablemente descentralizados** - Esto puede incluir estar gobernados por una DAO o estar construidos con una pila de tecnología descentralizada que incluya billeteras sin custodia. Eso también puediera involucrar auditorías de contratos inteligentes en Ethereum.
+- **Información de listado honesta y precisa** - Se espera que cualquier listado sugerido de proyectos venga con información honesta y precisa. Se eliminarán aquellos productos que falsifiquen información de listado, como al declarar que su producto es “de código abierto” cuando no lo es.
+- **Compromiso demostrable para ampliar el acceso a la ciencia** - Un proyecto DeSci debería poder articular cómo amplían la participación en la ciencia al público general, y no solo a los poseedores de tokens/NFT.
+- **Accesible globalmente** - Su proyecto no tiene limitaciones geográficas ni requisitos de KYC que excluyan a ciertas personas de acceder a su servicio.
+- **Sitio web y documentación informativos** - Es importante que los visitantes del sitio web del proyecto puedan entender qué hace realmente el proyecto, cómo contribuye a la descentralización de la infraestructura científica y cómo participar.
+- **El proyecto debe ser parte del ecosistema de Ethereum** - En ethereum.org creemos que Ethereum (y sus Capas 2) son la capa base apropiada para el movimiento DeSci.
+- **El proyecto está bastante bien establecido** - El proyecto cuenta con usuarios reales que han podido acceder a los servicios del proyecto durante varios meses.
### Sería aconsejable tener...
-- **Disponible en múltiple idiomas**: Su proyecto está traducido a múltiples idiomas, lo que permite que usuarios de todo el mundo accedan a él.
-- **Recursos didácticos**: Su producto debería de tener una experiencia de incorporación bien diseñada para ayudar y educar a los usuarios. O prueba de cómo hacer contenido como artículos o vídeos.
-- **Auditorías de terceros **: Su producto ha sido auditado profesionalmente en busca de vulnerabilidades por un tercero de confianza.
-- **Punto de contacto** - Un punto de contacto por el proyecto (Podría ser por un representante de una DAO o comunidad) nos ayudará enormemente a obtener información precisa cuando se realicen cambios. Esto seguirá actualizando a ethereum.org de forma adecuada al recopilar futura información.
+- **Disponible en varios idiomas** - Su proyecto está traducido a varios idiomas, lo que permite que usuarios de todo el mundo accedan a él.
+- **Recursos educativos** - Su producto debería tener una experiencia de incorporación bien diseñada para ayudar y educar a los usuarios. O prueba de cómo hacer contenido como artículos o vídeos.
+- **Auditorías de terceros** - Su producto ha sido auditado profesionalmente en busca de vulnerabilidades por un tercero de confianza.
+- **Punto de contacto** - Un punto de contacto para el proyecto (podría ser un representante de una DAO o de la comunidad) nos ayudará enormemente a obtener información precisa cuando se realicen cambios. Esto seguirá actualizando a ethereum.org de forma adecuada al recopilar futura información.
## Mantenimiento {#maintenance}
@@ -37,8 +37,8 @@ Al igual que la naturaleza fluida de Ethereum, los equipos y productos vienen y
- Asegúrese de que todos los proyectos listados aún cumplan con nuestros criterios.
- Cerciórese de que no haya productos que hayan sido sugeridos y que cumplan con más de nuestros criterios que los actualmente listados.
-La comunidad abierta es quien mantiene a ethereum.org y dependemos de ella para ayudar a actualizar Ethereum. Si detectas información sobre alguno de los proyectos mencionados que deba actualizarse, abre una incidencia o solicitud de incorporación de cambios en nuestro repositorio de GitHub.
+Ethereum.org es mantenido por la comunidad de código abierto y contamos con la comunidad para ayudar a mantenerlo actualizado. Si detectas información sobre alguno de los proyectos mencionados que deba actualizarse, abre una incidencia o solicitud de incorporación de cambios en nuestro repositorio de GitHub.
-## Condiciones de uso {#terms-of-use}
+## Términos de uso {#terms-of-use}
-Consulte también nuestros [términos de uso](/terms-of-use/). La información sobre ethereum.org se proporciona únicamente con fines de información general.
+Consulte también nuestros [términos de uso](/terms-of-use/). La información sobre ethereum.org se proporciona únicamente con fines de información general.
From 339a2b12e713a353154bd45de9511c046295226b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:42 -0300
Subject: [PATCH 257/589] update(i18n):
public/content/translations/es/developers/tutorials/erc20-with-safety-rails/index.md
---
.../erc20-with-safety-rails/index.md | 124 +++++++++---------
1 file changed, 64 insertions(+), 60 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/erc20-with-safety-rails/index.md b/public/content/translations/es/developers/tutorials/erc20-with-safety-rails/index.md
index 76098fd4510..edd5a1ca6d8 100644
--- a/public/content/translations/es/developers/tutorials/erc20-with-safety-rails/index.md
+++ b/public/content/translations/es/developers/tutorials/erc20-with-safety-rails/index.md
@@ -1,62 +1,64 @@
---
title: ERC-20 con mecanismos de seguridad
-description: Cómo ayudar a las personas a evitar errores tontos
+description: Cómo ayudar a la gente a evitar errores tontos
author: Ori Pomerantz
lang: es
-tags:
- - "erc-20"
+tags: [ "erc-20" ]
skill: beginner
published: 2022-08-15
---
## Introducción {#introduction}
-Una de las cosas más positivas de Ethereum es que no hay una autoridad central que pueda modificar o deshacer sus transacciones. Y, sin embargo, una de las grandes trabas de Ethereum es que no hay una autoridad central con el poder de deshacer los errores del usuario o las transacciones ilícitas. En este artículo, descubrirá algunos de los errores comunes que los usuarios cometen con los tókenes [ERC-20](/developers/docs/standards/tokens/erc-20/), al igual que cómo crear contratos ERC-20 que ayuden a los usuarios a evitar esos errores, o le otorguen algo de poder a una autoridad central (por ejemplo, para congelar cuentas).
+Una de las grandes ventajas de Ethereum es que no hay una autoridad central que pueda modificar o deshacer sus transacciones. Uno de los grandes problemas con Ethereum es que no hay una autoridad central con el poder de deshacer los errores de los usuarios o las transacciones ilícitas. En este artículo aprenderá sobre algunos de los errores comunes que los usuarios cometen con los tokens [ERC-20](/developers/docs/standards/tokens/erc-20/), así como la forma de crear contratos ERC-20 que ayuden a los usuarios a evitar esos errores o que den a una autoridad central algo de poder (por ejemplo, para congelar cuentas).
-Observe que aunque utilizaremos el contrato del token ERC-20 [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20), este artículo no lo explica en gran detalle. Puede encontrar [aquí](/developers/tutorials/erc20-annotated-code) esta información.
+Tenga en cuenta que aunque utilizaremos el [contrato de token ERC-20 de OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20), este artículo no lo explica en gran detalle. Puede encontrar esta información [aquí](/developers/tutorials/erc20-annotated-code).
-Si quieres ver el código fuente completo:
+Si desea ver el código fuente completo:
-1. Abre el [IDE Remix](https://remix.ethereum.org/).
-2. Haga click en el ícono github de clonar ().
-3. Cone el repositorio de GitHub `https://github.com/qbzzt/20220815-erc20-safety-rails`.
-4. Abre **contratos > erc20-safety-rails.sol**.
+1. Abra el [IDE de Remix](https://remix.ethereum.org/)
+2. Haga clic en el icono para clonar de GitHub ().
+3. Clone el repositorio de GitHub `https://github.com/qbzzt/20220815-erc20-safety-rails`.
+4. Abra **contracts > erc20-safety-rails.sol**.
-## Creando un contrato ERC-20 {#creating-an-erc-20-contract}
+## Creación de un contrato ERC-20 {#creating-an-erc-20-contract}
-Antes de agregar la funcionalidad del riel de seguridad, necesitamos un contrato ERC-20. En este artículo usaremos [el Asistente de Contratos de OpenZeppelin](https://docs.openzeppelin.com/contracts/5.x/wizard). Ábrelo en otra ventana del navegador y sigue estas instrucciones:
+Antes de que podamos añadir la funcionalidad de mecanismo de seguridad, necesitamos un contrato ERC-20. En este artículo usaremos [el Asistente de Contratos de OpenZeppelin](https://docs.openzeppelin.com/contracts/5.x/wizard). Ábralo en otro navegador y siga estas instrucciones:
-1. Selecciona **ERC-20**.
-2. Ingresa estos ajustes:
+1. Seleccione **ERC20**.
+
+2. Introduzca estos ajustes:
| Parámetro | Valor |
| ----------------- | ---------------- |
| Nombre | SafetyRailsToken |
| Símbolo | SAFE |
- | Premint | 1.000 |
- | Características | Ninguno |
+ | Premint | 1000 |
+ | Funciones | Ninguno |
| Control de acceso | Ownable |
| Upgradability | Ninguno |
-3. Desplácese hasta arriba y haga click en **Open in Remix** (Abrir en Remix, para Remix) o en **Download** (Descargar) para utilizar un entorno diferente. Doy por sentado que está usando Remix, si usa algo diferente, realice únicamente los cambios apropiados.
-4. Ahora tenemos un contrato ERC-20 totalmente funcional. Puedes expandir `.deps` > `npm` para ver el código importado.
-5. Compile, despliegue y familiarícese con el contrato para ver si funciona como un contrato ERC-20. Si necesitas aprender cómo utilizar Remix, [usa este tutorial](https://remix.ethereum.org/?#activate=udapp,solidity,LearnEth).
+3. Desplácese hacia arriba y haga clic en **Abrir en Remix** (para Remix) o en **Descargar** para usar un entorno diferente. Voy a suponer que está usando Remix; si usa otra cosa, simplemente haga los cambios apropiados.
+
+4. Ahora tenemos un contrato ERC-20 totalmente funcional. Puede expandir `.deps` > `npm` para ver el código importado.
+
+5. Compile, despliegue e interactúe con el contrato para ver que funciona como un contrato ERC-20. Si necesita aprender a usar Remix, [use este tutorial](https://remix.ethereum.org/?#activate=udapp,solidity,LearnEth).
## Errores comunes {#common-mistakes}
### Los errores {#the-mistakes}
-Los usuarios algunas veces envían tokens a la dirección incorrecta. Como no podemos leer sus mentes para saber lo que hacían, hay dos tipos de error que suceden mucho y son fácilmente detectables:
+Los usuarios a veces envían tokens a la dirección equivocada. Aunque no podemos leerles la mente para saber qué querían hacer, hay dos tipos de errores que ocurren con frecuencia y son fáciles de detectar:
-1. Envianr los tókenes a la dirección propia del contrato. Por ejemplo, [el token OP de Optimism](https://optimism.mirror.xyz/qvd0WfuLKnePm1Gxb9dpGchPf5uDz5NSMEFdgirDS4c) gestionado para acumular [más de 120.000](https://optimistic.etherscan.io/address/0x4200000000000000000000000000000000000042#tokentxns) tókenes OP en menos de dos meses. Esto representa una cantidad significativa de poder que, supuestamente, las personas perdieron.
+1. Enviar los tokens a la propia dirección del contrato. Por ejemplo, el [token OP de Optimism](https://optimism.mirror.xyz/qvd0WfuLKnePm1Gxb9dpGchPf5uDz5NSMEFdgirDS4c) llegó a acumular [más de 120 000](https://optimism.blockscout.com/address/0x4200000000000000000000000000000000000042) tokens OP en menos de dos meses. Esto representa una cantidad significativa de riqueza que la gente presumiblemente acaba de perder.
-2. Enviar los tókenes a una dirección vacía, que no corresponde a una [cuenta de propiedad externa](/developers/docs/accounts/#externally-owned-accounts-and-key-pairs) o a un [contrato inteligente](/developers/docs/smart-contracts). Como no tenemos las estadísticas de la frecuencia con la que esto sucede, [un incidente podría haber costado 20.000.000 tókenes](https://gov.optimism.io/t/message-to-optimism-community-from-wintermute/2595).
+2. Enviar los tokens a una dirección vacía, una que no corresponde a una [cuenta de propiedad externa](/developers/docs/accounts/#externally-owned-accounts-and-key-pairs) o a un [contrato inteligente](/developers/docs/smart-contracts). Aunque no tengo estadísticas sobre la frecuencia con que esto ocurre, [un incidente podría haber costado 20 000 000 de tokens](https://gov.optimism.io/t/message-to-optimism-community-from-wintermute/2595).
-### Evitar transferencias {#preventing-transfers}
+### Prevención de transferencias {#preventing-transfers}
-El contrato ERC-20 de OpenZeppelin incluye [ un gancho `_beforeTokenTransfer`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol#L364-L368), que se invoca antes de transferir un token. Por defecto, este gancho no hace nada, pero podemos dotarle de nuestra propia funcionalidad, como los chequeos que revierten si hay algún problema.
+El contrato ERC-20 de OpenZeppelin incluye [un hook, `_beforeTokenTransfer`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol#L364-L368), que se llama antes de que se transfiera un token. Por defecto, este hook no hace nada, pero podemos añadirle nuestra propia funcionalidad, como comprobaciones que se revierten si hay un problema.
-Para usar este gancho, añada esta función antes de la constructora:
+Para usar el hook, añada esta función después del constructor:
```solidity
function _beforeTokenTransfer(address from, address to, uint256 amount)
@@ -67,42 +69,42 @@ Para usar este gancho, añada esta función antes de la constructora:
}
```
-Algunas partes de esta función pueden resultarle nuevas si no está muy familiarizado con Solidity:
+Algunas partes de esta función pueden ser nuevas para usted si no está muy familiarizado con Solidity:
```solidity
internal virtual
```
-La palabra clave `virtual` significa que como hemos heredado funcionalidades de `ERC-20` y anulado esta función, otros contratos pueden heredarla de nosotros y anular esta función.
+La palabra clave `virtual` significa que, al igual que heredamos la funcionalidad de `ERC20` y sobrescribimos esta función, otros contratos pueden heredar de nosotros y sobrescribir esta función.
```solidity
override(ERC20)
```
-Debemos especificar de manera explícita que estamos [anulando](https://docs.soliditylang.org/en/v0.8.15/contracts.html#function-overriding) la definición del token ERC20 de `_beforeTokenTransfer`. Por lo general, las definiciones explícitas son mucho mejores, desde una perspectiva de seguridad, que las implícitas. No podemos olvidar que hemos hecho algo si lo tenemos a la vista. Esta es también la razon por la que necesitamos especificar qué `_beforeTokenTransfer` de la superclase estamos anulando.
+Tenemos que especificar explícitamente que estamos [sobrescribiendo](https://docs.soliditylang.org/en/v0.8.15/contracts.html#function-overriding) la definición del token ERC20 de `_beforeTokenTransfer`. En general, las definiciones explícitas son mucho mejores, desde el punto de vista de la seguridad, que las implícitas: no puede olvidar que ha hecho algo si lo tiene justo delante. Esa es también la razón por la que necesitamos especificar qué `_beforeTokenTransfer` de la superclase estamos sobrescribiendo.
```solidity
super._beforeTokenTransfer(from, to, amount);
```
-Esta línea llama la función de `_beforeTokenTransfer` del contrato o los contratos heredados que la tienen. En este caso, eso es solo `ERC20`, `Ownable` no tiene este gancho. Aunque actualmente `ERC20._beforeTokenTransfer` no hace nada, lo invocamos en caso de que se le añada alguna funcionalidad en el futuro (y así decidimos implementar nuevamente el contrato, porque los contratos no cambian una vez implementados).
+Esta línea llama a la función `_beforeTokenTransfer` del contrato o contratos de los que heredamos que la tienen. En este caso, solo es `ERC20`, ya que `Ownable` no tiene este hook. Aunque actualmente `ERC20._beforeTokenTransfer` no hace nada, la llamamos por si se añade funcionalidad en el futuro (y entonces decidimos volver a desplegar el contrato, porque los contratos no cambian después del despliegue).
-### Codificar los requisitos {#coding-the-requirements}
+### Codificación de los requisitos {#coding-the-requirements}
Queremos añadir estos requisitos a la función:
-- La dirección `to` no puede ser igual a `address(this)`, la dirección propia del contrato ERC-20.
-- La dirección `to` no puede estar vacía, esta debe ser:
- - Unas cuentas de propiedad externa (EOA). No podemos revisar si una dirección es una EOA directamente, pero podemos revisar el saldo de ETH de una dirección. Las EOAs casi siempre tienen un balance, incluso si ya no se encuentran en uso - es difícil vaciarlas hasta el último wei.
- - Un contrato inteligente. Probar si una dirección es un contrato inteligente es un poco complicado. Hay un código de operación que revisa la longitud externa del código, llamado [`EXTCODESIZE`](https://www.evm.codes/#3b), pero no está disponible directamente en Solidity. Debemos usar [Yul](https://docs.soliditylang.org/en/v0.8.15/yul.html), que es un ensamblaje de EVM, para tal fin. Hay otros valores que podemos usar desde Solidity ([`.code` y `.codehash`](https://docs.soliditylang.org/en/v0.8.15/units-and-global-variables.html#members-of-address-types)), pero cuestan más.
+- La dirección `to` no puede ser igual a `address(this)`, la dirección del propio contrato ERC-20.
+- La dirección `to` no puede estar vacía, tiene que ser una de estas dos:
+ - Una cuenta de propiedad externa (EOA). No podemos comprobar directamente si una dirección es una EOA, pero podemos comprobar el saldo de ETH de una dirección. Las EOA casi siempre tienen saldo, incluso si ya no se usan; es difícil vaciarlas hasta el último wei.
+ - Un contrato inteligente. Comprobar si una dirección es un contrato inteligente es un poco más difícil. Hay un código de operación que comprueba la longitud del código externo, llamado [`EXTCODESIZE`](https://www.evm.codes/#3b), pero no está disponible directamente en Solidity. Tenemos que usar [Yul](https://docs.soliditylang.org/en/v0.8.15/yul.html), que es el ensamblador de la EVM, para ello. Hay otros valores que podríamos usar de Solidity ([`.code` y `.codehash`](https://docs.soliditylang.org/en/v0.8.15/units-and-global-variables.html#members-of-address-types)), pero cuestan más.
Repasemos el nuevo código línea por línea:
```solidity
- require(to != address(this), "Can't send tokens to the contract address");
+ require(to != address(this), "No se pueden enviar tokens a la dirección del contrato");
```
-Este es el primer requisito, revisa que `to` y `this(address)` no sean lo mismo.
+Este es el primer requisito: comprobar que `to` y `this(address)` no son lo mismo.
```solidity
bool isToContract;
@@ -111,53 +113,53 @@ Este es el primer requisito, revisa que `to` y `this(address)` no sean lo mismo.
}
```
-Así es como revisamos si una dirección es un contrato. No podemos recibir salidas directamente de Yul, en vez de esto, definimos una variable para almacenar el resultado (`isToContract` en este caso). Según el funcionamiento de Yul, cada código de operación se considera una función. Por tanto, primero invocamos [`EXTCODESIZE`](https://www.evm.codes/#3b) para obtener el tamaño del contrato y después [`GT`](https://www.evm.codes/#11) para revisar que no sea cero (estamos trabajando con números enteros sin firmar, por lo que no puede ser negativo). Luego escribimos el resultado en `isToContract`.
+Así es como comprobamos si una dirección es un contrato. No podemos recibir la salida directamente de Yul, así que en su lugar definimos una variable para guardar el resultado (`isToContract` en este caso). La forma en que funciona Yul es que cada código de operación se considera una función. Así que primero llamamos a [`EXTCODESIZE`](https://www.evm.codes/#3b) para obtener el tamaño del contrato, y luego usamos [`GT`](https://www.evm.codes/#11) para comprobar que no es cero (estamos tratando con enteros sin signo, así que, por supuesto, no puede ser negativo). Luego escribimos el resultado en `isToContract`.
```solidity
- require(to.balance != 0 || isToContract, "Can't send tokens to an empty address");
+ require(to.balance != 0 || isToContract, "No se pueden enviar tokens a una dirección vacía");
```
-Finalmente, tenemos la revisión verdadera para direcciones vacías.
+Y finalmente, tenemos la comprobación real para las direcciones vacías.
## Acceso administrativo {#admin-access}
-Algunas veces es útil tener un administrador que puede deshacer los errores. Para reducir el potencial de abuso, este administrador puede ser una [multifirma](https://blog.logrocket.com/security-choices-multi-signature-wallets/), por lo que varias personas deben estar de acuerdo con una acción. En este artículo tenemos dos características administrativas:
+A veces es útil tener un administrador que pueda deshacer errores. Para reducir el potencial de abuso, este administrador puede ser una [multifirma](https://blog.logrocket.com/security-choices-multi-signature-wallets/) para que varias personas tengan que estar de acuerdo en una acción. En este artículo tendremos dos características administrativas:
-1. Congelar y descongelar cuentas. Esto puede ser útil, por ejemplo, cuando una cuenta puede verse afectada.
+1. Congelar y descongelar cuentas. Esto puede ser útil, por ejemplo, cuando una cuenta puede estar comprometida.
2. Limpieza de activos.
- Los fraudes algunas veces envían tókenes fraudulentos al contrato de un token real para obtener la legitimidad. Por ejemplo, [consulte aquí](https://optimistic.etherscan.io/token/0x2348b1a1228ddcd2db668c3d30207c3e1852fbbe?a=0x4200000000000000000000000000000000000042). El contrato ERC-20 legítimo es [0x4200....0042](https://optimistic.etherscan.io/address/0x4200000000000000000000000000000000000042). El fraude que pretende ser legítimo es [0x234....bbe](https://optimistic.etherscan.io/address/0x2348b1a1228ddcd2db668c3d30207c3e1852fbbe).
+ A veces los estafadores envían tokens fraudulentos al contrato del token real para ganar legitimidad. Por ejemplo, [véase aquí](https://optimism.blockscout.com/token/0x2348B1a1228DDCd2dB668c3d30207c3E1852fBbe?tab=holders). El contrato ERC-20 legítimo es [0x4200....0042](https://optimism.blockscout.com/token/0x4200000000000000000000000000000000000042). La estafa que pretende serlo es [0x234....bbe](https://optimism.blockscout.com/token/0x2348B1a1228DDCd2dB668c3d30207c3E1852fBbe).
- También puede que las personas envíen tókenes ERC-20 legítimos a nuestro contrato por error, lo cual es otra razón para querer tener una manera de eliminarlos.
+ También es posible que la gente envíe tokens ERC-20 legítimos a nuestro contrato por error, que es otra razón para querer tener una forma de sacarlos.
-OpenZeppelin proporciona dos mecanismos para activar el acceso administrativo:
+OpenZeppelin proporciona dos mecanismos para habilitar el acceso administrativo:
-- Los contratos [`Ownable`](https://docs.openzeppelin.com/contracts/5.x/access-control#ownership-and-ownable) tienen un único dueño. Las funciones que tiene el [modificador](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm) `onlyOwner` sólo las puede activar el propietario. Los dueños pueden transferir la propiedad a otra persona o renunciar a esta completamente. Los derechos de todas las otras cuentas son generalmente idénticos.
+- Los contratos [`Ownable`](https://docs.openzeppelin.com/contracts/5.x/access-control#ownership-and-ownable) tienen un único propietario. Las funciones que tienen el [modificador](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm) `onlyOwner` solo pueden ser llamadas por ese propietario. Los propietarios pueden transferir la propiedad a otra persona o renunciar a ella por completo. Los derechos de todas las demás cuentas suelen ser idénticos.
- Los contratos [`AccessControl`](https://docs.openzeppelin.com/contracts/5.x/access-control#role-based-access-control) tienen [control de acceso basado en roles (RBAC)](https://en.wikipedia.org/wiki/Role-based_access_control).
-Para simplificar la explicación, en este artículo utilizaremos `Ownable`.
+Para simplificar, en este artículo usamos `Ownable`.
### Congelar y descongelar contratos {#freezing-and-thawing-contracts}
Congelar y descongelar contratos requiere varios cambios:
-- El [mapeo](https://www.tutorialspoint.com/solidity/solidity_mappings.htm) de direcciones a [booleanos](https://en.wikipedia.org/wiki/Boolean_data_type) para hacer un seguimiento de las direcciones que están congeladas. Todos los valores son inicialmente cero, el cual interpretan como falso los booleanos. Esto es precisamente lo que queremos; ya que, por defecto, las cuentas no están congeladas.
+- Un [mapeo](https://www.tutorialspoint.com/solidity/solidity_mappings.htm) de direcciones a [booleanos](https://en.wikipedia.org/wiki/Boolean_data_type) para hacer un seguimiento de qué direcciones están congeladas. Todos los valores son inicialmente cero, que para los valores booleanos se interpreta como falso. Esto es lo que queremos porque, por defecto, las cuentas no están congeladas.
```solidity
mapping(address => bool) public frozenAccounts;
```
-- [Eventos](https://www.tutorialspoint.com/solidity/solidity_events.htm) para informar a cualquier interesado cuando una cuenta se congela o descongela. Desde un punto de vista técnico, no se requieren eventos para estas acciones, aunque le ayudan al código fuera de la cadena a ser capaz de escuchar estos eventos y saber lo que está ocurriendo. Se considera una buena práctica en contratos inteligentes, emitirlos cuando sucede algo que puede ser relevante para alguien más.
+- [Eventos](https://www.tutorialspoint.com/solidity/solidity_events.htm) para informar a cualquier persona interesada cuando una cuenta se congela o descongela. Técnicamente, no se requieren eventos para estas acciones, pero ayuda al código fuera de la cadena a poder escuchar estos eventos y saber qué está pasando. Se considera una buena práctica que un contrato inteligente los emita cuando sucede algo que podría ser relevante para otra persona.
- Los eventos están indexados, por tanto, es posible buscar totas las veces que una cuenta se ha congelado o descongelado.
+ Los eventos están indexados, por lo que será posible buscar todas las veces que una cuenta ha sido congelada o descongelada.
```solidity
- // When accounts are frozen or unfrozen
+ // Cuando las cuentas se congelan o descongelan
event AccountFrozen(address indexed _addr);
event AccountThawed(address indexed _addr);
```
-- Funciones para el congelamiento y descongelamiento de cuentas. Al ser estas dos funciones son prácticamente idénticas, solo hablaremos de la función para congelar.
+- Funciones para congelar y descongelar cuentas. Estas dos funciones son casi idénticas, por lo que solo repasaremos la función de congelación.
```solidity
function freezeAccount(address addr)
@@ -165,27 +167,27 @@ Congelar y descongelar contratos requiere varios cambios:
onlyOwner
```
- Las funciones marcadas como [`públicas`](https://www.tutorialspoint.com/solidity/solidity_contracts.htm) pueden activarse desde otros contratos inteligentes o directamente mediante una transacción.
+ Las funciones marcadas como [`public`](https://www.tutorialspoint.com/solidity/solidity_contracts.htm) pueden ser llamadas desde otros contratos inteligentes o directamente mediante una transacción.
```solidity
{
- require(!frozenAccounts[addr], "Account already frozen");
+ require(!frozenAccounts[addr], "La cuenta ya está congelada");
frozenAccounts[addr] = true;
emit AccountFrozen(addr);
} // freezeAccount
```
- Si la cuenta ya está congelada, revierte. De lo contrario, congélela y `emit` un evento.
+ Si la cuenta ya está congelada, se revierte. De lo contrario, la congela y `emit`e un evento.
-- Cambie `_beforeTokenTransfer` para evitar que el dinero pase desde una cuenta congelada. Tenga en cuenta que el dinero todavía puede transferirse a la cuenta congelada.
+- Cambie `_beforeTokenTransfer` para evitar que se mueva dinero de una cuenta congelada. Tenga en cuenta que todavía se puede transferir dinero a la cuenta congelada.
```solidity
- require(!frozenAccounts[from], "The account is frozen");
+ require(!frozenAccounts[from], "La cuenta está congelada");
```
### Limpieza de activos {#asset-cleanup}
-Para publicar tókenes ERC-20 retenidos por este contrato, necesitamos activar una función en el contrato del token al que pertenece, siendo [`transfer`](https://eips.ethereum.org/EIPS/eip-20#transfer) o [`approve`](https://eips.ethereum.org/EIPS/eip-20#approve). En este caso no tiene sentido el gasto de gas en asignaciones, también podemos transferir directamente.
+Para liberar los tokens ERC-20 que posee este contrato, debemos llamar a una función en el contrato del token al que pertenecen, ya sea [`transfer`](https://eips.ethereum.org/EIPS/eip-20#transfer) o [`approve`](https://eips.ethereum.org/EIPS/eip-20#approve). No tiene sentido gastar gas en asignaciones en este caso, es mejor que transfiramos directamente.
```solidity
function cleanupERC20(
@@ -198,7 +200,7 @@ Para publicar tókenes ERC-20 retenidos por este contrato, necesitamos activar u
IERC20 token = IERC20(erc20);
```
-Esta es la sintaxis necesaria para crear un objeto para un contrato cuando recibimos la dirección. Podemos hacer esto porque tenemos la definición para tokens ERC20 como parte del código fuente (ver la línea 4) y ese archivo incluye [la definición para IERC20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol), la interfaz para un contrato ERC20 de OpenZeppelin.
+Esta es la sintaxis para crear un objeto para un contrato cuando recibimos la dirección. Podemos hacer esto porque tenemos la definición para los tokens ERC20 como parte del código fuente (véase la línea 4), y ese archivo incluye [la definición para IERC20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol), la interfaz para un contrato ERC-20 de OpenZeppelin.
```solidity
uint balance = token.balanceOf(address(this));
@@ -206,8 +208,10 @@ Esta es la sintaxis necesaria para crear un objeto para un contrato cuando recib
}
```
-Se trata de una función de limpieza, por lo que supuestamente no queremos dejar ningún token. En lugar de obtener el saldo del usuario manualmente, también podríamos automatizar el proceso.
+Esta es una función de limpieza, por lo que presumiblemente no queremos dejar ningún token. En lugar de obtener el saldo del usuario manualmente, también podemos automatizar el proceso.
## Conclusión {#conclusion}
-Esta no es una solución perfecta, ya que no existe una solución perfecta para un problema ocurrido cuando un usuario hace un fallo. Sin embargo, usar este tipo de comprobaciones puede al menos prevenir algunos errores. La capacidad de congelar cuentas, a pesar de ser peligrosa, puede utilizarse para limitar el daño de ciertos actos de piratería, negando al hacker los fondos robados.
+Esta no es una solución perfecta; no hay una solución perfecta para el problema de «el usuario cometió un error». Sin embargo, usar este tipo de comprobaciones puede, al menos, evitar algunos errores. La capacidad de congelar cuentas, aunque es peligrosa, puede utilizarse para limitar el daño de ciertos hackeos al denegar al hacker los fondos robados.
+
+[Vea aquí más de mi trabajo](https://cryptodocguy.pro/).
From 23e3344227daa37c424da28c8649dcb4399d794f Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:44 -0300
Subject: [PATCH 258/589] update(i18n):
public/content/translations/es/developers/docs/networking-layer/portal-network/index.md
---
.../networking-layer/portal-network/index.md | 38 +++++++++++--------
1 file changed, 22 insertions(+), 16 deletions(-)
diff --git a/public/content/translations/es/developers/docs/networking-layer/portal-network/index.md b/public/content/translations/es/developers/docs/networking-layer/portal-network/index.md
index 9ff8b9e293e..a70b81e9e2b 100644
--- a/public/content/translations/es/developers/docs/networking-layer/portal-network/index.md
+++ b/public/content/translations/es/developers/docs/networking-layer/portal-network/index.md
@@ -10,15 +10,15 @@ Para evitar este problema de almacenamiento en el disco, se han desarrollado nod
Portal Network es un nuevo diseño de red para Ethereum que tiene como objetivo resolver el problema de disponibilidad de datos para los nodos «ligeros» sin tener que confiar o ejercer una presión adicional en los nodos completos, compartiendo los datos necesarios en pequeños trozos a través de la red.
-Más sobre [nodos y clientes](/developers/docs/nodes-and-clients/)
+Más información sobre [nodos y clientes](/developers/docs/nodes-and-clients/)
-## ¿Por qué necesitamos Portal Network? {#why-do-we-need-portal-network}
+## ¿Por qué necesitamos la red Portal? {#why-do-we-need-portal-network}
Los nodos de Ethereum almacenan su propia copia total o parcial de la cadena de bloques de Ethereum. Esta copia local se utiliza para validar las transacciones y garantizar que el nodo siga la cadena correcta. Estos datos almacenados localmente permiten a los nodos verificar de forma independiente que los datos entrantes son válidos y correctos sin necesidad de confiar en ninguna otra entidad.
-Esta copia local de la cadena de bloques y los datos de estado y recibo asociados ocupan mucho espacio en el disco duro del nodo. Por ejemplo, se recomienda un disco duro de 2 Tb para ejecutar un nodo usando [Geth](https://geth.ethereum.org) emparejado con un cliente de consenso. Usando snap sync, que solo almacena datos de la cadena de un conjunto de bloques relativamente reciente, Geth normalmente ocupa alrededor de 650 Gb de espacio en disco, pero aumenta alrededor de 14 Gb/semana (puede reducir el nodo de nuevo a 650 Gb periódicamente).
+Esta copia local de la cadena de bloques y los datos de estado y recibo asociados ocupan mucho espacio en el disco duro del nodo. Por ejemplo, se recomienda un disco duro de 2 TB para ejecutar un nodo que use [Geth](https://geth.ethereum.org) emparejado con un cliente de consenso. Usando snap sync, que solo almacena datos de la cadena de un conjunto de bloques relativamente reciente, Geth normalmente ocupa alrededor de 650 Gb de espacio en disco, pero aumenta alrededor de 14 Gb/semana (puede reducir el nodo de nuevo a 650 Gb periódicamente).
-Esto significa que ejecutar nodos puede ser caro, ya que se tiene que dedicar una gran cantidad de espacio en disco a Ethereum. Hay varias soluciones a este problema en la hoja de ruta de Ethereum, incluyendo [el vencimiento del historial](/roadmap/statelessness/#history-expiry), [el vencimiento del estado](/roadmap/statelessness/#state-expiry) y [sin estado](/roadmap/statelessness/). Sin embargo, es probable que su implementación aún tarde varios años. También hay [nodos ligeros](/developers/docs/nodes-and-clients/light-clients/) que no guardan su propia copia de los datos de la cadena, solicitan los datos que necesitan de los nodos completos. Sin embargo, esto significa que los nodos ligeros tienen que confiar en los nodos completos para proporcionar datos honestos, y también hace hincapié en los nodos completos que tienen que servir nodos ligeros a los datos que los necesiten.
+Esto significa que ejecutar nodos puede ser caro, ya que se tiene que dedicar una gran cantidad de espacio en disco a Ethereum. Existen varias soluciones a este problema en la hoja de ruta de Ethereum, entre las que se incluyen la [caducidad del historial](/roadmap/statelessness/#history-expiry), la [caducidad del estado](/roadmap/statelessness/#state-expiry) y la [ausencia de estado](/roadmap/statelessness/). Sin embargo, es probable que su implementación aún tarde varios años. También existen [nodos ligeros](/developers/docs/nodes-and-clients/light-clients/) que no guardan su propia copia de los datos de la cadena, sino que solicitan los datos que necesitan a nodos completos. Sin embargo, esto significa que los nodos ligeros tienen que confiar en los nodos completos para proporcionar datos honestos, y también hace hincapié en los nodos completos que tienen que servir nodos ligeros a los datos que los necesiten.
Portal Network tiene como objetivo proporcionar una forma alternativa para que los nodos ligeros obtengan sus datos que no requieren confiar o agregar significativamente al trabajo que tienen que hacer los nodos completos. Esto se hace introduciendo una nueva forma para que los nodos de Ethereum compartan datos a través de la red.
@@ -28,7 +28,7 @@ Los nodos de Ethereum tienen protocolos estrictos que definen cómo se comunican

-Los nodos también pueden servir datos específicos a través de la [JSON-RPC API](/developers/docs/apis/json-rpc/), que es la forma en que las aplicaciones y carteras intercambian información con los nodos de Ethereum. Sin embargo, ninguno de estos son protocolos es idóneo para servir datos a los clientes ligeros.
+Los nodos también pueden servir datos específicos a través de la [API de JSON-RPC](/developers/docs/apis/json-rpc/), que es la forma en que las aplicaciones y billeteras intercambian información con los nodos de Ethereum. Sin embargo, ninguno de estos son protocolos es idóneo para servir datos a los clientes ligeros.
Actualmente, los clientes ligeros no pueden solicitar datos específicos de la cadena a través de DevP2P o libP2p, porque esos protocolos solo están diseñados para permitir la sincronización de la cadena y el intercambio de bloques y transacciones. Los clientes ligeros no quieren descargar esta información porque eso les impediría ser «ligeros».
@@ -36,7 +36,7 @@ La API JSON-RPC tampoco es una opción ideal para solicitudes de datos de client
El objetivo de Portal Network es replantear todo el diseño, creado específicamente para la ligereza, fuera de las restricciones de diseño de los clientes existentes de Ethereum.
-La idea central de Portal Network es tomar las mejores partes de la pila de redes actual permitiendo que la información que necesitan los clientes ligeros, como los datos históricos y la identidad del jefe actual de la cadena se sirva a través de una red descentralizada de igual a igual de estilo DevP2P ligera utilizando un [DHT](https://en.wikipedia.org/wiki/Distributed_hash_table) (similar a Bittorrent).
+La idea central de la red Portal es tomar las mejores partes de la pila de redes actual, permitiendo que la información que necesitan los clientes ligeros, como los datos históricos y la identidad de la cabecera actual de la cadena, se sirva a través de una red descentralizada entre pares de estilo DevP2P ligera que utiliza una [DHT](https://en.wikipedia.org/wiki/Distributed_hash_table) (similar a Bittorrent).
La idea es añadir pequeñas partes del total de los datos históricos de Ethereum y algunas responsabilidades específicas de los nodos a cada nodo. Luego, las solicitudes se atienden buscando los nodos que almacenan los datos específicos que se solicitaron y recuperándolos de ellos.
@@ -48,36 +48,42 @@ El objetivo es permitir que una red descentralizada de clientes ligeros del port
- sincronice datos recientes e históricos de la cadena
- recupere los datos de estado
- transmita transacciones
-- ejecute transacciones usando el [EVM](/developers/docs/evm/)
+- ejecutar transacciones utilizando la [EVM](/developers/docs/evm/)
Los beneficios de este diseño de red son:
- reducir la dependencia de los proveedores centralizados
- reducir el uso del ancho de banda de Internet
- sincronización minimizada o cero
-- accesible a dispositivos con recursos limitados (\<1 GB de RAM, \<100 MB de espacio en disco, 1 CPU)
+- Accesible para dispositivos con recursos limitados (\<1 GB de RAM, \<100 MB de espacio en disco, 1 CPU)
-El siguiente diagrama muestra las funciones de los clientes existentes que Portal Network puede entregar, lo que permite a los usuarios acceder a estas funciones en dispositivos de muy pocos recursos.
+La tabla siguiente muestra las funciones de los clientes existentes que puede ofrecer la red Portal, permitiendo a los usuarios acceder a estas funciones en dispositivos con muy pocos recursos.
-
+### Las redes del portal
+
+| Cliente ligero de baliza | Red de estado | Gossip de transacciones | Historial de la red |
+| ------------------------ | ------------------------------- | ----------------------- | ------------------- |
+| Cadena ligera de baliza | Cuenta y contrato de almacenaje | Zona de espera ligera | Encabezados |
+| Datos del protocolo | | | Cuerpos de bloque |
+| | | | Recibos |
## Diversidad de clientes por defecto {#client-diversity-as-default}
-Los desarrolladores de Portal Network también eligieron el diseño para construir tres clientes de la red portal separados desde el primer día.
+Los desarrolladores de la red Portal también tomaron la decisión de diseño de crear cuatro clientes de la red Portal separados desde el primer día.
Los clientes de Portal Network son:
- [Trin](https://github.com/ethereum/trin): escrito en Rust
- [Fluffy](https://fluffy.guide): escrito en Nim
- [Ultralight](https://github.com/ethereumjs/ultralight): escrito en Typescript
-- [Shisui](https://github.com/GrapeBaBa/shisui): escrito en Go
+- [Shisui](https://github.com/zen-eth/shisui): escrito en Go
Tener múltiples implementaciones de clientes independientes mejora la resiliencia y la descentralización de la red Ethereum.
Si un cliente experimenta problemas o vulnerabilidades, otros clientes pueden seguir funcionando sin problemas, evitando un solo punto de fallo. Además, diversas implementaciones de clientes fomentan la innovación y la competencia, impulsando mejoras y reduciendo el riesgo de monocultivo dentro del ecosistema.
-## Más información {#futher-reading}
+## Lecturas adicionales {#further-reading}
-- [El Portal Network(Piper Merriam en Devcon Bogota)](https://www.youtube.com/watch?v=0stc9jnQLXA).
-- [Discord de Portal Network](https://discord.gg/CFFnmE7Hbs)
-- [El sitio web de Portal Network](https://www.ethportal.net/)
+- [La red Portal (Piper Merriam en Devcon Bogotá)](https://www.youtube.com/watch?v=0stc9jnQLXA).
+- [Discord de la red Portal](https://discord.gg/CFFnmE7Hbs)
+- [Sitio web de la red Portal](https://www.ethportal.net/)
From 7d4c12646ffc586ceb58a2884782f7967962f91c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:46 -0300
Subject: [PATCH 259/589] update(i18n):
public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md
---
.../hello-world-smart-contract/index.md | 217 +++++++++---------
1 file changed, 107 insertions(+), 110 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md b/public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md
index a000ad96468..3cc69de4655 100644
--- a/public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md
@@ -1,75 +1,71 @@
---
-title: Contrato inteligente Hello World para principiantes
-description: Tutorial introductorio para redactar e implementar un contrato inteligente sencillo en Ethereum.
+title: Contrato inteligente «Hola, mundo» para principiantes
+description: Tutorial introductorio sobre cómo escribir y desplegar un contrato inteligente sencillo en Ethereum.
author: "elanh"
tags:
- - "solidity"
- - "hardhat"
- - "alchemy"
- - "contratos inteligentes"
- - "implementación"
+ [
+ "Solidity",
+ "hardhat",
+ "Alchemy",
+ "contratos Inteligentes",
+ "implementación"
+ ]
skill: beginner
lang: es
published: 2021-03-31
---
-Si es nuevo en el desarrollo de cadena de bloques y no sabe por dónde empezar, o si solo quiere entender cómo implementar e interactuar con contratos inteligentes, esta es su guía. Abordaremos cómo crear e implementar un contrato inteligente sencillo en la red de prueba Goerli usando una billetera virtual ([Metamask](https://metamask.io/)), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/) y [Alchemy](https://alchemyapi.io/eth) (no se preocupe si aún no entiende lo que significa todo esto: lo explicaremos).
+Si es nuevo en el desarrollo de cadenas de bloques y no sabe por dónde empezar, o si solo quiere entender cómo desplegar e interactuar con contratos inteligentes, esta guía es para usted. Repasaremos cómo crear y desplegar un contrato inteligente sencillo en la red de prueba de Sepolia utilizando una billetera virtual ([MetaMask](https://metamask.io/)), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/) y [Alchemy](https://www.alchemy.com/eth) (no se preocupe si aún no entiende lo que esto significa, lo explicaremos).
-> **Advertencia**
->
-> 🚧 Aviso de baja
->
-> Para toda esta guía, se está usando la red de prueba Goerli para crear e implementar un contrato inteligente. Sin embargo, tenga en cuenta que la Ethereum Foundation ha anuciado que [Goerli pronto se dará de baja](https://www.alchemy.com/blog/goerli-faucet-deprecation).
->
-> Recomendamos usar [Sepolia](https://www.alchemy.com/overviews/sepolia-testnet) y el [grifo de Sepolia](https://sepoliafaucet.com/) para este tutorial.
+En la [parte 2](https://docs.alchemy.com/docs/interacting-with-a-smart-contract) de este tutorial repasaremos cómo podemos interactuar con nuestro contrato inteligente una vez que se haya desplegado y, en la [parte 3](https://www.alchemy.com/docs/submitting-your-smart-contract-to-etherscan), cubriremos cómo publicarlo en Etherscan.
-En la [parte 2](https://docs.alchemy.com/docs/interacting-with-a-smart-contract) de este tutorial repasaremos cómo podemos interactuar con nuestro contrato inteligente una vez que se implemente aquí, y en [parte 3](https://docs.alchemy.com/docs/submitting-your-smart-contract-to-etherscan) mostraremos cómo publicarlo en Etherscan.
+¡Si tiene alguna pregunta, no dude en consultarnos en el [Discord de Alchemy](https://discord.gg/gWuC7zB)!
-Si tiene alguna pregunta, no dude en consultar el [Discord de Alchemy](https://discord.gg/gWuC7zB).
+## Paso 1: Conectarse a la red de Ethereum {#step-1}
-## Paso 1: Conectarse a la red Ethereum {#step-1}
+Hay muchas formas de hacer solicitudes a la cadena de Ethereum. Para simplificar, usaremos una cuenta gratuita en Alchemy, una plataforma de desarrollo de cadenas de bloques y API que nos permite comunicarnos con la cadena de Ethereum sin tener que ejecutar nuestros propios nodos. La plataforma también tiene herramientas para desarrolladores para monitoreo y análisis que aprovecharemos en este tutorial para entender lo que sucede internamente en el despliegue de nuestro contrato inteligente. Si aún no tiene una cuenta de Alchemy, [puede registrarse gratis aquí](https://dashboard.alchemy.com/signup).
-Hay muchas maneras de hacer solicitudes a la cadena Ethereum. Por simplicidad, usaremos una cuenta gratis en Alchemy, una plataforma de desarrolladores de cadenas de bloques y una API que nos permitirá comunicarnos con la cadena Ethereum sin tener que ejecutar nuestros propios nodos. La plataforma también tiene herramientas de desarrollo para el monitoreo y analíticas que nos darán ventaja en este tutorial para entender lo que está sucediendo en el desarrollo de nuestro contrato inteligente. Si aún no tiene cuenta en Alchemy, [puede registrarse gratis aquí](https://dashboard.alchemyapi.io/signup).
+## Paso 2: Cree su aplicación (y clave de API) {#step-2}
-## Paso 2: Crear su aplicación (y llave API) {#step-2}
+Una vez que haya creado una cuenta de Alchemy, puede generar una clave de API creando una aplicación. Esto nos permitirá realizar solicitudes a la red de pruebas de Sepolia. Si no está familiarizado con las redes de prueba, consulte [esta página](/developers/docs/networks/).
-Una vez que haya creado una cuenta de Alchemy, puede generar una clave de API creando una aplicación. Esto nos permitirá hacer solicitudes a la red de prueba Goerli. Si no está familiarizado con las redes de prueba, revise [esta página](/developers/docs/networks/).
+1. Vaya a la página «Crear nueva aplicación» en su panel de Alchemy seleccionando «Seleccionar una aplicación» en la barra de navegación y haciendo clic en «Crear nueva aplicación».
-1. Navegue a la página «Crear app» (Crear aplicación) en su tablero Alchemy pasando el cursor sobre «Apps» en la barra de navegación y haciendo click en «Crear app».
+
-
+2. Nombre su aplicación «Hola, mundo», ofrezca una breve descripción y elija un caso de uso, por ejemplo, «Infraestructura y herramientas». A continuación, busque «Ethereum» y seleccione la red.
-2. Nombre su aplicación “Hello World”, ofrezca una descripción corta, seleccione “Staging” para el entorno (usado para la contabilidad de su aplicación) y seleccione “Goerli” para la red.
+
-
+3. Haga clic en «Siguiente» para continuar y luego en «Crear aplicación». ¡Y eso es todo! Su aplicación debería aparecer en el menú desplegable de la barra de navegación, con una clave de API disponible para copiar.
-3. ¡Haga clic en «Crear app» y ya está! Su aplicación debería aparecer en la siguiente tabla.
+## Paso 3: Crear una cuenta de Ethereum (dirección) {#step-3}
-## Paso 3: Crear una cuenta Ethereum (dirección) {#step-3}
+Necesitamos tener una cuenta Ethereum para enviar y recibir transacciones. Para este tutorial, usaremos Metamask, una cartera virtual en el navegador usada para manejar la dirección de su cuenta Ethereum. Más información sobre [transacciones](/developers/docs/transactions/).
-Necesitamos tener una cuenta Ethereum para enviar y recibir transacciones. Para este tutorial, usaremos Metamask, una cartera virtual en el navegador usada para manejar la dirección de su cuenta Ethereum. Más información sobre las [transacciones](/developers/docs/transactions/).
+Puede descargar MetaMask y crear una cuenta de Ethereum gratis [aquí](https://metamask.io/download). Cuando cree una cuenta, o si ya tiene una, asegúrese de cambiar a la red de prueba «Sepolia» en el menú desplegable de redes (para no utilizar dinero real).
-Puede descargar y crear una cuenta Metamask gratis [aquí](https://metamask.io/download). Cuando esté creando una cuenta, o si ya tiene una, asegúrese de cambiar a la “red de prueba Goerli” en la parte superior derecha (para no operar con dinero real).
+Si no ve Sepolia en la lista, vaya al menú, luego a «Avanzado» y desplácese hacia abajo para activar «Mostrar redes de prueba». En el menú de selección de red, elija la pestaña «Personalizada» para encontrar una lista de redes de prueba y seleccione «Sepolia».
-
+
-## Paso 4: Agregar ether de un Faucet {#step-4}
+## Paso 4: Añadir ether desde un faucet {#step-4}
-Para implementar nuestro contrato inteligente en la red de prueba, necesitaremos algo de Eth falso. Para obtener Eth puede ir al [grifo de Goerli](https://goerlifaucet.com/), iniciar sesión en su cuenta de Alchemy e introducir la dirección de su billetera; luego haga clic en "Send Me Eth." para enviárselo. Puede llevar algo de tiempo recibir el Eth de prueba debido a la congestión de la red. (Al momento de escribir esto, el envío tardó cerca de 30 minutos). Debería ver su Eth en su cuenta de MetaMask a la brevedad.
+Para desplegar nuestro contrato inteligente en la red de prueba, necesitaremos algo de ETH falso. Para obtener ETH de Sepolia, puede ir a los [detalles de la red Sepolia](/developers/docs/networks/#sepolia) para ver una lista de varios faucets. Si uno no funciona, pruebe con otro, ya que a veces pueden quedarse sin fondos. Puede que tarde un tiempo en recibir su ETH falso debido al tráfico de la red. ¡Debería ver el ETH en su cuenta de MetaMask poco después!
-## Paso 5: Comprobar su balance {#step-5}
+## Paso 5: Compruebe su saldo {#step-5}
-Para comprobar que nuestro balance este ahí, hagamos una solicitud de [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) usando [la herramienta de composición de Alchemy](https://composer.alchemyapi.io?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto hará que aparezca la cantidad de ETH en nuestra billetera. Después de introducir la dirección de su cuenta de Metamask y hacer click en «Enviar Solicitud», debería ver una respuesta como esta:
+Para volver a comprobar que tenemos saldo, hagamos una solicitud [eth_getBalance](/developers/docs/apis/json-rpc/#eth_getbalance) usando la [herramienta de composición de Alchemy](https://sandbox.alchemy.com/?network=ETH_SEPOLIA&method=eth_getBalance&body.id=1&body.jsonrpc=2.0&body.method=eth_getBalance&body.params%5B0%5D=&body.params%5B1%5D=latest). Esto devolverá la cantidad de ETH a nuestra cartera. Después de introducir la dirección de su cuenta de Metamask y hacer clic en «Send Request», debería ver una respuesta como esta:
```json
{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }
```
-> **NOTA:** Este resultado es en wei, no en ETH. Wei se usa como la denominación más pequeña de Ether. La conversión de wei a ETH es: 1 eth = 1018 wei. Entonces si queremos convertir 0x2B5E3AF16B1880000 a decimales, obtenemos 5\*10¹⁸, que equivale a 5 ETH.
+> **NOTA:** Este resultado está en wei, no en ETH. Wei se usa como la denominación más pequeña de Ether. La conversión de wei a ETH es: 1 eth = 1018 wei. Así que si convertimos 0x2B5E3AF16B1880000 a decimal, obtenemos 5\*10¹⁸, que equivale a 5 ETH.
>
-> ¡Fiu! Nuestro dinero de prueba está todo ahí .
+> ¡Fiu! Nuestro dinero falso está todo ahí .
-## Paso 6: Iniciar nuestro proyecto {#step-6}
+## Paso 6: Inicializar nuestro proyecto {#step-6}
Primero, necesitaremos crear una carpeta para nuestro proyecto. Vaya a su línea de comando y escriba:
@@ -78,7 +74,7 @@ mkdir hello-world
cd hello-world
```
-Ahora que estamos dentro de nuestra carpeta de proyecto, usaremos `npm init` a fin de inicializar el proyecto. Si no tiene instalado npm, siga [estas instrucciones](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm) (también necesitaremos Node.js, así que descárgueselo también).
+Ahora que estamos dentro de la carpeta de nuestro proyecto, usaremos `npm init` para inicializar el proyecto. Si aún no tiene instalado npm, siga [estas instrucciones](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm) (¡también necesitaremos Node.js, así que descárguelo también!).
```
npm init
@@ -89,7 +85,7 @@ Realmente no importa cómo responda las preguntas de instalación; aquí le most
```
package name: (hello-world)
version: (1.0.0)
-description: hello world smart contract
+description: contrato inteligente hola, mundo
entry point: (index.js)
test command:
git repository:
@@ -101,17 +97,17 @@ About to write to /Users/.../.../.../hello-world/package.json:
{
"name": "hello-world",
"version": "1.0.0",
- "description": "hello world smart contract",
+ "description": "contrato inteligente hola, mundo",
"main": "index.js",
"scripts": {
- "test": "echo \\"Error: no test specified\\" && exit 1"
+ "test": "echo \"Error: no test specified\\" && exit 1"
},
"author": "",
"license": "ISC"
}
```
-Apruebe el package.json y listo.
+Apruebe el package.json y ¡listo!
## Paso 7: Descargar [Hardhat](https://hardhat.org/getting-started/#overview) {#step-7}
@@ -123,9 +119,9 @@ Dentro de nuestro proyecto `hello-world`, ejecute:
npm install --save-dev hardhat
```
-Revise esta página para obtener más información acerca de las [intrucciones de instalación](https://hardhat.org/getting-started/#overview).
+Consulte esta página para obtener más detalles sobre las [instrucciones de instalación](https://hardhat.org/getting-started/#overview).
-## Paso 8: Crear un proyecto en Hardhat {#step-8}
+## Paso 8: Crear un proyecto de Hardhat {#step-8}
Dentro de la carpeta de nuestro proyecto, ejecute:
@@ -133,7 +129,7 @@ Dentro de la carpeta de nuestro proyecto, ejecute:
npx hardhat
```
-Debería aparecer un mensaje de bienvenida y la opción de seleccionar lo que desee hacer. Seleccione «create an empty hardhat.config.js»:
+Entonces debería aparecer un mensaje de bienvenida y la opción de seleccionar lo que desea hacer. Seleccione «create an empty hardhat.config.js» (crear un hardhat.config.js vacío):
```
888 888 888 888 888
@@ -145,74 +141,74 @@ Debería aparecer un mensaje de bienvenida y la opción de seleccionar lo que de
888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
-👷 Welcome to Hardhat v2.0.11 👷?
+👷 Bienvenido a Hardhat v2.0.11 👷?
-What do you want to do? …
-Create a sample project
-❯ Create an empty hardhat.config.js
-Quit
+¿Qué desea hacer? …
+Crear un proyecto de ejemplo
+❯ Crear un hardhat.config.js vacío
+Salir
```
-Esto generará un archivo `hardhat.config.js` por nosotros, que es donde especificaremos todos los ajustes para nuestro proyecto (en el paso 13).
+Esta acción nos creará un archivo hardhat.config.js, que es donde especificaremos todos los ajustes para nuestro proyecto (en el paso 13).
## Paso 9: Añadir carpetas de proyecto {#step-9}
-Para mantener nuestro proyecto organizado, crearemos dos nuevas carpetas. Navegue al directorio raíz de su proyecto en su línea de comandos y escriba:
+Para mantener nuestro proyecto organizado, crearemos dos carpetas nuevas. Navegue al directorio raíz de su proyecto en su línea de comandos y teclee:
```
mkdir contracts
mkdir scripts
```
-- `contratos/` es donde mantendremos nuestro archivo de código del contrato inteligente Hola, mundo
-- `scripts/` es donde mantendremos los scripts para implementar e interactuar con nuestro contrato
+- `contracts/` es donde guardaremos nuestro archivo de código del contrato inteligente «Hola, mundo».
+- `scripts/` es donde guardaremos los scripts para desplegar e interactuar con nuestro contrato.
## Paso 10: Escribir nuestro contrato {#step-10}
-Tal vez se esté preguntando, ¿¿cuándo diablos escribiremos el código?? Bueno, aquí estamos, en el paso 10.
+Se estará preguntando, ¿cuándo diablos vamos a escribir código? Bueno, aquí estamos, en el paso 10.
-Abra el proyecto Hola, mundo en su editor favorito (nosotros preferimos [VSCode](https://code.visualstudio.com/)). Los contratos inteligentes están escritos en un lenguaje llamado Solidity, que es el que usaremos para escribir nuestro contrato inteligente HelloWorld.sol
+Abra el proyecto hello-world en su editor favorito (a nosotros nos gusta [VSCode](https://code.visualstudio.com/)). Los contratos inteligentes están escritos en un lenguaje llamado Solidity que es lo que usaremos para escribir nuestro contrato inteligente HelloWorld.sol.
-1. Navegue hasta la carpeta «contratos» y cree un nuevo archivo llamado HelloWorld.sol
-2. A continuación, se muestra un ejemplo de un contrato inteligente Hola, mundo de Ethereum Foundation, que utilizaremos para este tutorial. Copie y pegue el siguiente contenido en sus archivos HelloWorld.sol y asegúrese de leer los comentarios para enterarse de qué es lo que hace este contrato:
+1. Vaya a la carpeta «contracts» y cree un nuevo archivo llamado HelloWorld.sol.
+2. A continuación se muestra un contrato inteligente de ejemplo «Hola, mundo» de la Fundación Ethereum que utilizaremos para este tutorial. Copie y pegue el siguiente contenido en su archivo HelloWorld.sol y asegúrese de leer los comentarios para entender lo que hace este contrato:
```solidity
-// Especifica la versión de Solidity, utilizando la versión semántica.
-// Learn more: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
+// Especifica la versión de Solidity, usando el versionado semántico.
+// Más información: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
pragma solidity ^0.7.0;
-// Defines a contract named `HelloWorld`.
-// Un contrato es una colección de funciones y datos (su estado). Once deployed, a contract resides at a specific address on the Ethereum blockchain. Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+// Define un contrato llamado `HelloWorld`.
+// Un contrato es un conjunto de funciones y datos (su estado). Una vez desplegado, un contrato reside en una dirección específica en la cadena de bloques de Ethereum. Más información: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
contract HelloWorld {
- // Declares a state variable `message` of type `string`.
- // Las variables de estado son variables cuyos valores se almacenan permanentemente en el almacenamiento del contrato. The keyword `public` makes variables accessible from outside a contract and creates a function that other contracts or clients can call to access the value.
+ // Declara una variable de estado `message` de tipo `string`.
+ // Las variables de estado son variables cuyos valores se almacenan permanentemente en el almacenamiento del contrato. La palabra clave `public` hace que las variables sean accesibles desde fuera de un contrato y crea una función que otros contratos o clientes pueden llamar para acceder al valor.
string public message;
- // Similar to many class-based object-oriented languages, a constructor is a special function that is only executed upon contract creation.
- // Los constructores se utilizan para inicializar los datos del contrato. Learn more:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ // Similar a muchos lenguajes orientados a objetos basados en clases, un constructor es una función especial que solo se ejecuta en la creación del contrato.
+ // Los constructores se utilizan para inicializar los datos del contrato. Más información:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
constructor(string memory initMessage) {
- // Accepts a string argument `initMessage` and sets the value into the contract's `message` storage variable).
+ // Acepta un argumento de cadena `initMessage` y establece el valor en la variable de almacenamiento `message` del contrato.
message = initMessage;
}
- // A public function that accepts a string argument and updates the `message` storage variable.
+ // Una función pública que acepta un argumento de cadena y actualiza la variable de almacenamiento `message`.
function update(string memory newMessage) public {
message = newMessage;
}
}
```
-Es un contrato inteligente muy sencillo que almacena un mensaje al momento de la creación y puede actualizarse con la función `update`.
+Este es un contrato inteligente súper simple que almacena un mensaje en su creación y se puede actualizar llamando a la función `update`.
-## Paso 11: Conectar Metamask & Alchemy a su proyecto {#step-11}
+## Paso 11: Conectar MetaMask y Alchemy a su proyecto {#step-11}
-Hemos creado una billetera de Metamask, una cuenta de Alchemy y escrito nuestro contrato inteligente, ahora es momento de conectarlos entre sí.
+Hemos creado una billetera de MetaMask, una cuenta de Alchemy y hemos escrito nuestro contrato inteligente, ahora es el momento de conectar los tres.
Cada transacción enviada desde su billetera virtual requiere una firma utilizando su clave privada única. Para proporcionar este permiso a nuestro programa, podemos almacenar de manera segura nuestra clave privada (y clave Alchemy API) en un archivo de entorno.
-> Si quiere ahondar sobre el envío de transacciones, consulte [este tutorial](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) sobre el envío de transacciones usando web3.
+> Para obtener más información sobre el envío de transacciones, consulte [este tutorial](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) sobre el envío de transacciones utilizando web3.
Primero, instale el paquete dotenv en su directorio de proyecto:
@@ -220,51 +216,51 @@ Primero, instale el paquete dotenv en su directorio de proyecto:
npm install dotenv --save
```
-Después, cree un archivo `.env` en el directorio raíz de nuestro proyecto, y añádale la llave inteligente de Metamask y la API URL de HTTP Alchemy.
+Luego, cree un archivo `.env` en el directorio raíz de nuestro proyecto, y añada su clave privada de MetaMask y la URL de la API HTTP de Alchemy.
-- Siga [estas instrucciones](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) para exportar su llave privada
-- Abajo se le indica cómo obtener la API URL de HTTP Alchemy
+- Siga [estas instrucciones](https://support.metamask.io/configure/accounts/how-to-export-an-accounts-private-key/) para exportar su clave privada.
+- Vea a continuación cómo obtener la URL de la API de HTTP de Alchemy.
-
+
-Copie la API URL Alchemy
+Copiar URL de la API de Alchemy
Su `.env` debería verse así:
```
-API_URL = "https://eth-goerli.alchemyapi.io/v2/your-api-key"
-PRIVATE_KEY = "your-metamask-private-key"
+API_URL = "https://eth-sepolia.g.alchemy.com/v2/su-clave-de-api"
+PRIVATE_KEY = "su-clave-privada-de-metamask"
```
-Para conectarlos efectivamente a nuestro código, vincularemos estas variables en nuestro `hardhat.config.js` en el paso 13.
+Para conectar esto a nuestro código, haremos referencia a estas variables en nuestro archivo `hardhat.config.js` en el paso 13.
-¡No exponga su .env! Asegúrese de que nunca comparte ni expone su archivo .env con nadie, ya que ello conlleva revelar sus secretos. Si está haciendo un control de la versión, añada .env a un archivo gitignore.
+¡No haga commit de .env! Por favor, asegúrese de no compartir ni exponer nunca su archivo .env a nadie, ya que al hacerlo estaría comprometiendo sus secretos. Si está usando un sistema de control de versiones, añada su .env a un archivo gitignore.
## Paso 12: Instalar Ethers.js {#step-12-install-ethersjs}
-Ethers.js es una biblioteca que facilita la interacción y la realización de solicitudes a Ethereum agrupando [métodos JSON-RPC estándar](/developers/docs/apis/json-rpc/) con métodos más fáciles para el usuario.
+Ethers.js es una biblioteca que facilita la interacción y la realización de solicitudes a Ethereum envolviendo los [métodos JSON-RPC estándar](/developers/docs/apis/json-rpc/) con métodos más fáciles de usar.
-Hardhat hace que integrar [plugins](https://hardhat.org/plugins/) sea ultrafácil para herramientas adicionales y funcionalidades ampliadas. Aprovecharemos el [plugin Ethers](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers) para la implementación de contratos ([Ethers.js](https://github.com/ethers-io/ethers.js/) tiene algunos métodos de implementación de contratos ultralimpios).
+Hardhat hace que sea muy fácil integrar [Plugins](https://hardhat.org/plugins/) para herramientas adicionales y funcionalidad extendida. Aprovecharemos el [plugin de Ethers](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers) para el despliegue de contratos ([Ethers.js](https://github.com/ethers-io/ethers.js/) tiene algunos métodos de despliegue de contratos muy limpios).
-En el directorio de su proyecto, teclee:
+En el directorio de su proyecto teclee:
```
npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0"
```
-También necesitaremos ethers en nuestro `hardhat.config.js` en el próximo paso.
+También necesitaremos ethers en nuestro `hardhat.config.js` en el siguiente paso.
## Paso 13: Actualizar hardhat.config.js {#step-13-update-hardhatconfigjs}
-Hasta ahora hemos añadido varias dependencias y plugins, por lo que ahora necesitamos actualizar `hardhat.config.js` para que nuestro proyecto sepa de todas ellas.
+Hemos añadido varias dependencias y plugins hasta ahora, ahora necesitamos actualizar `hardhat.config.js` para que nuestro proyecto los conozca todos.
-Actualice su `hardhat.config.js` para que muestre el siguiente texto:
+Actualice su `hardhat.config.js` para que se vea así:
```
require('dotenv').config();
@@ -277,10 +273,10 @@ const { API_URL, PRIVATE_KEY } = process.env;
*/
module.exports = {
solidity: "0.7.3",
- defaultNetwork: "goerli",
+ defaultNetwork: "sepolia",
networks: {
hardhat: {},
- goerli: {
+ sepolia: {
url: API_URL,
accounts: [`0x${PRIVATE_KEY}`]
}
@@ -290,29 +286,29 @@ module.exports = {
## Paso 14: Compilar nuestro contrato {#step-14-compile-our-contracts}
-Para asegurarnos de que todo funciona correctamente hasta ahora, compilemos nuestro contrato. La función `compile` está incluida dentro de las funciones por defecto de hardhat.
+Para asegurarnos de que todo funciona correctamente hasta ahora, compilemos nuestro contrato. La tarea `compile` es una de las tareas incorporadas de Hardhat.
-Desde la linea de comandos, ejecute:
+Desde la línea de comandos ejecute:
```
npx hardhat compile
```
-Puede que reciba una advertencia sobre `SPDX license identifier not provided in source file` , pero no se preocupe por eso. ¡Con suerte, todo lo demás habrá ido bien! Si no es así, siempre puede escribir un mensaje en [Alchemy discord](https://discord.gg/u72VCg3).
+Puede que reciba una advertencia sobre que el `identificador de licencia SPDX no se proporcionó en el archivo de origen`, pero no hay que preocuparse por eso. ¡Esperemos que todo lo demás se vea bien! Si no es así, siempre puede enviar un mensaje en el [discord de Alchemy](https://discord.gg/u72VCg3).
## Paso 15: Escribir nuestro script de despliegue {#step-15-write-our-deploy-scripts}
Ahora que nuestro contrato está escrito y nuestro archivo de configuración está listo, es momento de escribir nuestro script de implementación del contrato.
-Vaya a la carpeta `scripts/` y cree un nuevo archivo llamado `deploy.js`, agregando los siguientes contenidos:
+Vaya a la carpeta `scripts/` y cree un nuevo archivo llamado `deploy.js`, añadiendo el siguiente contenido:
```
async function main() {
const HelloWorld = await ethers.getContractFactory("HelloWorld");
- // Start deployment, returning a promise that resolves to a contract object
+ // Iniciar el despliegue, devolviendo una promesa que se resuelve en un objeto de contrato
const hello_world = await HelloWorld.deploy("Hello World!");
- console.log("Contract deployed to address:", hello_world.address);}
+ console.log("Contrato desplegado en la dirección:", hello_world.address);}
main()
.then(() => process.exit(0))
@@ -322,48 +318,49 @@ main()
});
```
-Hardhat hace un trabajo increíble al explicar lo que hace cada una de estas líneas de código en su [tutorial de contratos](https://hardhat.org/tutorial/testing-contracts.html#writing-tests), aquí hemos asumido sus explicaciones.
+Hardhat hace un trabajo increíble explicando lo que hace cada una de estas líneas de código en su [tutorial de Contratos](https://hardhat.org/tutorial/testing-contracts.html#writing-tests), hemos adoptado sus explicaciones aquí.
```
const HelloWorld = await ethers.getContractFactory("HelloWorld");
```
-Un `ContractFactory` en ethers.js es una abstracción utilizada para desplegar nuevos contratos inteligentes, por lo que aquí, `HelloWorld` es una fábrica de instancias de nuestro contrato Hola, mundo. Al usar el plugin `hardhat-ethers`, las instancias `ContractFactory` y `Contract` están conectadas por defecto al primer firmante.
+Una `ContractFactory` en ethers.js es una abstracción que se usa para desplegar nuevos contratos inteligentes, por lo que `HelloWorld` aquí es una fábrica de instancias de nuestro contrato «Hola, mundo». Cuando se utiliza el plugin `hardhat-ethers`, las instancias de `ContractFactory` y `Contract` se conectan al primer firmante por defecto.
```
const hello_world = await HelloWorld.deploy();
```
-Ejecutar `deploy()` en una `ContractFactory` iniciará el despliegue, y obtendrá un `Promise` que determina un `Contract`. Este es el objeto que tiene un método para cada una de nuestras funciones de contrato inteligente.
+Llamar a `deploy()` en una `ContractFactory` iniciará el despliegue y devolverá una `Promise` que se resuelve en un `Contract`. Este es el elemento que tiene un método para cada una de nuestras funciones de contrato inteligente.
## Paso 16: Desplegar nuestro contrato {#step-16-deploy-our-contract}
-¡Por fin estamos listos para desplegar nuestro contrato inteligente! Desde la linea de comandos, ejecute:
+¡Ahora ya estamos listos para desplegar nuestro contrato inteligente! Vaya a la línea de comandos y ejecute:
```
-npx hardhat run scripts/deploy.js --network goerli
+npx hardhat run scripts/deploy.js --network sepolia
```
Debería mostrarse algo parecido a esto:
```
-Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
+Contrato desplegado en la dirección: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
```
-Si vamos a la [Goerli etherscan](https://goerli.etherscan.io/) y buscamos la dirección de nuestro contrato, podremos comprobar que se ha implementado correctamente. El objeto de la transacción tendrá un aspecto parecido a esto:
+Si vamos al [explorador de bloques Etherscan de Sepolia](https://sepolia.etherscan.io/) y buscamos la dirección de nuestro contrato, deberíamos poder ver que se ha desplegado con éxito. La transacción tendrá un aspecto parecido a este:
-
+
-La dirección `From` debe coincidir con su cuenta de Metamask y la dirección de envío especificará «creación de contrato», pero al hacer click en la transacción veremos nuestra dirección en el campo `To`:
+La dirección `From` debe coincidir con la dirección de su cuenta de MetaMask y la dirección `To` indicará «Contract Creation». Sin embargo, si hacemos clic en la transacción, veremos la dirección de nuestro contrato en el campo `To`:
-
+
-¡Enhorabuena! Acaba de desplegar un contrato inteligente en la cadena de Ethereum
+¡Enhorabuena! Acaba de desplegar un contrato inteligente en la cadena de Ethereum 🎉
-Para entender lo que está pasando internamente, vayamos a la pestaña de Explorer en nuestro [panel Alchemy](https://dashboard.alchemyapi.io/explorer). Si tiene varias aplicaciones de Alchemy, asegúrese de filtrar por aplicación y seleccionar «Hola, mundo». 
+Para entender lo que sucede internamente, vayamos a la pestaña Explorador en nuestro [panel de Alchemy](https://dashboard.alchemyapi.io/explorer). Si tiene varias aplicaciones de Alchemy, asegúrese de filtrar por aplicación y seleccionar «Hola, mundo».
+
-Aquí verá un puñado de ejecuciones JSON-RPC que Hardhat/Ethers hizo internamente por nosotros cuando ejecutamos a la función `.deploy()`. Dos solicitudes importantes aquí son [`eth_sendRawTransaction`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction), que es la solicitud para escribir nuestro contrato en la cadena de Goerli, y [`eth_getTransactionByHash`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_gettransactionbyhash), que consiste en una solicitud para obtener la información de nuestra transacción de acuerdo con un hash proporcionado (un patrón típico cuando realizamos transacciones). Para saber más sobre el envío de transacciones, consulte el siguiente tutorial [Enviar transacciones usando Web3](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)
+Aquí verá unas cuantas llamadas JSON-RPC que Hardhat/Ethers hicieron por nosotros de forma interna cuando llamamos a la función `.deploy()`. Dos importantes a destacar aquí son [`eth_sendRawTransaction`](https://www.alchemy.com/docs/node/abstract/abstract-api-endpoints/eth-send-raw-transaction), que es la solicitud para escribir realmente nuestro contrato en la cadena de Sepolia, y [`eth_getTransactionByHash`](https://www.alchemy.com/docs/node/abstract/abstract-api-endpoints/eth-get-transaction-by-hash) que es una solicitud para leer información sobre nuestra transacción a partir del hash (un patrón típico al procesar transacciones). Para obtener más información sobre el envío de transacciones, consulte este tutorial sobre el [envío de transacciones utilizando Web3](/developers/tutorials/sending-transactions-using-web3-and-alchemy/).
-Aquí acaba la parte 1 de este tutorial, en la parte 2, [Interacción con nuestro contrato inteligente](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#part-2-interact-with-your-smart-contract), actualizaremos nuestro mensaje inicial, y en la parte 3 [Publicación de nuestro contrato inteligente en Etherscan](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#optional-part-3-publish-your-smart-contract-to-etherscan), veremos como publicar para que todo el mundo sepa cómo interactuar con él.
+Eso es todo por la parte 1 de este tutorial. En la parte 2, [interactuaremos con nuestro contrato inteligente](https://www.alchemy.com/docs/interacting-with-a-smart-contract) actualizando nuestro mensaje inicial y, en la parte 3, [publicaremos nuestro contrato inteligente en Etherscan](https://www.alchemy.com/docs/submitting-your-smart-contract-to-etherscan) para que todo el mundo sepa cómo interactuar con él.
-**¿Quiere saber más sobre Alchemy? Eche un vistazo a nuestra [página web](https://alchemyapi.io/eth). ¿No quiere perderse ninguna actualización? Suscríbase [aquí](https://www.alchemyapi.io/newsletter) a nuestro boletín de noticias. Asegúrese de seguir también nuestro [Twitter](https://twitter.com/alchemyplatform) y unirse a nuestro [Discord](https://discord.com/invite/u72VCg3)**.
+**¿Quiere saber más sobre Alchemy? Consulte nuestro [sitio web](https://www.alchemy.com/eth). ¿No quiere perderse ninguna actualización? ¡Suscríbase a nuestro boletín [aquí](https://www.alchemy.com/newsletter)! Asegúrese de unirse también a nuestro [Discord](https://discord.gg/u72VCg3).**.
From 7ee0ff9de8eebe7b4c10bec05d50d2a718c1d26b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:47 -0300
Subject: [PATCH 260/589] update(i18n):
public/content/translations/es/contributing/translation-program/faq/index.md
---
.../translation-program/faq/index.md | 38 +++++++++----------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/public/content/translations/es/contributing/translation-program/faq/index.md b/public/content/translations/es/contributing/translation-program/faq/index.md
index 818532532ff..21b3d2b45bd 100644
--- a/public/content/translations/es/contributing/translation-program/faq/index.md
+++ b/public/content/translations/es/contributing/translation-program/faq/index.md
@@ -4,7 +4,7 @@ lang: es
description: Preguntas frecuentes acerca del Programa de traducción de ethereum.org
---
-# Guía de traducción para ethereum.org {#translating-ethereum-guide}
+# Guía para traducir ethereum.org {#translating-ethereum-guide}
Si no conoce el Programa de traducción y se está planteando participar en él, he aquí algunas preguntas frecuentes que pueden ayudarle a comenzar. Use esta guía para encontrar respuestas a las preguntas más frecuentes.
@@ -18,20 +18,20 @@ El objetivo de dicho programa es posibilitar que el contenido de Ethereum sea ac
Por esta razón, el Programa de traducción es abierto y voluntario, y su participación en él no está sujeta a remuneración. Si tuviéramos que compensar económicamente a los traductores por el número de palabras que traducen, solo podríamos invitar a aquellos con suficiente experiencia en traducción (traductores profesionales) a que se unieran al Programa de traducción. Esto haría del Programa de traducción fuera una iniciativa excluyente y nos impediría alcanzar los objetivos descritos, principalmente, el permitir que cualquiera pueda participar e involucrarse en el ecosistema.
-Hacemos todo lo posible para que nuestros colaboradores tengan éxito en el ecosistema de Ethereum. Hay muchos incentivos no monetarios como: [ofrecer POAP](/contributing/translation-program/acknowledgements/#poap) y un [certificado de traductor](/contributing/translation-program/acknowledgements/#certificate), además de organizar las [Tablas de clasificación de traductores](/contributing/translation-program/acknowledgements/) y [mencionar un listado de todos nuestros traductores en la página](/contributing/translation-program/contributors/).
+Hacemos todo lo posible para que nuestros colaboradores tengan éxito en el ecosistema de Ethereum; existen muchos incentivos no monetarios, como [ofrecer POAP](/contributing/translation-program/acknowledgements/#poap) y un [certificado de traductor](/contributing/translation-program/acknowledgements/#certificate), así como organizar las [tablas de clasificación de traducción](/contributing/translation-program/acknowledgements/) y [publicar a todos nuestros traductores en el sitio](/contributing/translation-program/contributors/).
-## ¿Cómo debo traducir las cadenas con ``? {#tags}
+## ¿Cómo traduzco cadenas con ``? {#tags}
-No todas las cadenas están escritas en forma de «texto puro». Algunas cadenas consisten en scripts mixtos como etiquetas HTML (`<0>`, `0>`). Se suelen usar para los hipervínculos, o para incluir un formato estilístico diferente en mitad de una frase.
+No todas las cadenas están escritas en forma de «texto puro». Hay algunas cadenas que consisten en scripts mixtos como etiquetas HTML (`<0>`, `0>`). Esto se usa normalmente para hipervínculos o estilos alternativos en medio de una oración.
-- Traduzca el texto dentro de las etiquetas pero no las etiquetas en sí. Cualquier palabra que aparezca en `<` y `>` no debe traducirse ni eliminarse.
+- Traduzca el texto dentro de las etiquetas pero no las etiquetas en sí. Todo lo que esté entre `<` y `>` no debe traducirse ni eliminarse.
- Para mantener la cadena segura, recomendamos que haga clic en el botón «Copiar texto original» en la parte inferior izquierda. De esta forma se copiará la cadena original y se pegará en el cuadro de texto. Así sabrá dónde están las etiquetas y podrá evitar errores.
-
+
Puede mover la posición de las etiquetas dentro de la cadena para hacerla más natural en su idioma. Para ello, asegúrese simplemente de mover toda la etiqueta.
-Si desea más información sobre cómo tratar con etiquetas y fragmentos de código, consulte la [Guía de estilo de traducción](/contributing/translation-program/translators-guide/#dealing-with-tags) de ethereum.org.
+Para obtener información más detallada sobre cómo tratar las etiquetas y los fragmentos de código, consulte la [Guía de estilo de traducción de ethereum.org](/contributing/translation-program/translators-guide/#dealing-with-tags).
## ¿Dónde se encuentran las cadenas? {#strings}
@@ -40,9 +40,9 @@ Las cadenas de origen no suelen ser suficientes por sí mismas para proporcionar
- Eche un vistazo a las «capturas de pantalla» y «contexto» para más información. En la sección de la cadena de origen, verá la captura de pantalla adjunta que le mostrará cómo usamos la cadena dentro de su contexto.
- Si aún tiene dudas, coméntelo en la «sección de comentarios». [¿No sabe cómo dejar un comentario?](#comment)
-
+
-
+
## ¿Cómo puedo dejar comentarios o hacer preguntas? Me gustaría señalar un problema o error tipográfico... {#comment}
@@ -52,11 +52,11 @@ Si quiere señalar que una cadena en particular necesita revisión, puede añadi
- Una vez añadido el comentario, este se enviará a nuestro equipo técnico. Solucionaremos el problema, responderemos al comentario y cerraremos este informe.
- Si reporta una traducción incorrecta, la traducción y la alternativa sugerida serán revisadas por un hablante nativo durante la próxima revisión.
-
+
## ¿Qué es una memoria de traducción? {#translation-memory}
-La memoria de traducción (TM, por sus siglas en inglés) es una función de Crowdin que almacena todas las cadenas de traducciones previas de [ethereum.org](https://ethereum.org/). Cuando se traduce una cadena, automáticamente se guarda en la memoria de traducción de nuestro proyecto. ¡Esta puede ser una herramienta muy útil para ayudarle a ahorrar tiempo!
+La memoria de traducción (TM, por sus siglas en inglés) es una función de Crowdin que almacena en segmentos el texto de ethereum.org previamente traducido. Cuando se traduce una cadena, automáticamente se guarda en la memoria de traducción de nuestro proyecto. ¡Esta puede ser una herramienta muy útil para ayudarle a ahorrar tiempo!
- Entre en la sección de sugerencias y podrá ver cómo han traducido otros traductores la misma cadena o una similar. Si encuentra una sugerencia con una alta tasa de coincidencia, puede asignarla pulsando sobre ella.
- Si no hay nada en la lista, puede buscar en la TM traducciones realizadas previamente y reutilizarlas para mantener coherencia.
@@ -65,17 +65,17 @@ La memoria de traducción (TM, por sus siglas en inglés) es una función de Cro
## ¿Cómo uso el glosario de Crowdin? {#glossary}
-La terminología de Ethereum es otra parte esencial de nuestro trabajo de traducción, ya que a menudo los nuevos términos tecnológicos todavía no están acuñados en muchos idiomas. También hay términos que tienen diferentes significados en diferentes contextos. [Más sobre la traducción de la terminología de Ethereum](#terminology)
+La terminología de Ethereum es otra parte esencial de nuestro trabajo de traducción, ya que a menudo los nuevos términos tecnológicos todavía no están acuñados en muchos idiomas. También hay términos que tienen diferentes significados en diferentes contextos. [Más información sobre la traducción de la terminología de Ethereum](#terminology)
El glosario de Crowdin es el mejor lugar para aclarar términos y definiciones. Existen dos formas de acceder al glosario.
- En primer lugar, cuando se encuentra un término subrayado en la cadena de origen, puede pasar el ratón por encima y ver una breve definición.
-
+
- En segundo lugar, si ve un término que no le es familiar, pero no está subrayado, puede buscar en la pestaña del glosario (el tercer botón de la columna derecha). Encontrará explicaciones de términos específicos y de los que se utilizan frecuentemente en el proyecto.
-
+
- Si aun así no lo encuentra, ¡es su oportunidad de añadir un término nuevo! Le animamos a buscarlo en un motor de búsqueda y añadir la descripción al glosario. Será de gran ayuda para que otros traductores entiendan mejor dicho término.
@@ -102,18 +102,18 @@ Le aconsejamos que no traduzca los nombres de las marcas, compañías y del pers
## ¿Cómo funciona el proceso de revisión? {#review-process}
-Para garantizar un cierto nivel de calidad y consistencia en nuestras traducciones, trabajamos con [Acolad](https://www.acolad.com/), una de las mayores empresas que ofrecen servicios de idiomas a escala mundial. Acolad cuenta con 20.000 profesionales de la lengua, lo que significa que puede proporcionar correctores profesionales para cada idioma y tipo de contenido que necesitamos.
+Para garantizar un cierto nivel de calidad y consistencia en nuestras traducciones, trabajamos con [Acolad](https://www.acolad.com/), uno de los mayores proveedores de servicios lingüísticos a nivel mundial. Acolad cuenta con 20.000 profesionales de la lengua, lo que significa que puede proporcionar correctores profesionales para cada idioma y tipo de contenido que necesitamos.
-Este proceso de corrección no tiene ningún secreto: una vez que un [bloque de contenido](/contributing/translation-program/content-buckets) se traduce por completo, nosotros les pedimos a Acolad que revise ese bloque de contenido. La corrección se hace directamente en Crowdin. Una vez corregida la traducción, actualizamos el sitio web del contenido traducido.
+El proceso de revisión es sencillo: una vez que un conjunto de contenido está traducido al 100 %, encargamos una revisión para ese bloque de contenido. La corrección se hace directamente en Crowdin. Una vez corregida la traducción, actualizamos el sitio web del contenido traducido.
## ¿Cómo puedo añadir contenido en mi idioma? {#adding-foreign-language-content}
El contenido del sitio en otros idiomas se traduce directamente del inglés. No se puede añadir contenido en otros idiomas si no existe primero en inglés.
-Si desea sugerir nuevo contenido para ethereum.org, puede [crear una incidencia](https://github.com/ethereum/ethereum-org-website/issues) en GitHub. Si se agrega, el contenido se escribirá en inglés y se traducirá a otros idiomas usando Crowdin.
+Para sugerir nuevo contenido para ethereum.org, puede [crear una incidencia](https://github.com/ethereum/ethereum-org-website/issues) en GitHub. Si se agrega, el contenido se escribirá en inglés y se traducirá a otros idiomas usando Crowdin.
Tenemos previsto ampliar la funcionalidad próximamente para añadir contenido en otros idiomas aunque no exista en inglés.
-## Contáctenos {#contact}
+## Póngase en contacto {#contact}
-Gracias por leer esta explicación. Esperemos que le sea de ayuda para colaborar con nuestro programa. ¡Siéntase libre de unirse a nuestro [canal de traducción de Discord](https://discord.gg/ethereum-org) para hacer preguntas y colaborar con otros traductores, o escríbanos a translations@ethereum.org!
+Gracias por leer esta explicación. Esperemos que le sea de ayuda para colaborar con nuestro programa. ¡Siéntase libre de unirse a nuestro [canal de traducción de Discord](https://discord.gg/ethereum-org) para hacer preguntas y colaborar con otros traductores o escríbanos a translations@ethereum.org!
From 387c3105d6662913c48cc7e8e3664b6def23a571 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:49 -0300
Subject: [PATCH 261/589] update(i18n):
public/content/translations/es/contributing/translation-program/translators-guide/index.md
---
.../translators-guide/index.md | 82 ++++++++++---------
1 file changed, 44 insertions(+), 38 deletions(-)
diff --git a/public/content/translations/es/contributing/translation-program/translators-guide/index.md b/public/content/translations/es/contributing/translation-program/translators-guide/index.md
index 4f6e141425e..aa908947b6c 100644
--- a/public/content/translations/es/contributing/translation-program/translators-guide/index.md
+++ b/public/content/translations/es/contributing/translation-program/translators-guide/index.md
@@ -4,19 +4,19 @@ lang: es
description: Instrucciones y consejos para traductores de ethereum.org
---
-# Guía de estilo de traducción de ethereum.org {#style-guide}
+# Guía de estilo de traducción de Ethereum.org {#style-guide}
La guía de estilo de traducción de ethereum.org reúne algunas de las pautas, instrucciones y consejos más importantes para que los traductores ayuden a localizar la página web.
Este documento sirve de guía general y no es específico de ningún idioma.
-Si tiene alguna pregunta, sugerencia o comentario, no dude en contactarnos en translations@ethereum.org, enviar un mensaje a @ethdotorg en Crowdin o [unirse a nuestro chat de Discord](https://discord.gg/ethereum-org), donde puede enviarnos mensajes en el canal #translations o contactar con cualquiera de los miembros del equipo.
+Si tiene alguna pregunta, sugerencia o comentario, no dude en contactarnos en translations@ethereum.org, enviar un mensaje a @ethdotorg en Crowdin o [unirse a nuestro Discord](https://discord.gg/ethereum-org), donde puede enviarnos un mensaje en el canal #translations o contactar a cualquiera de los miembros del equipo.
-## Cómo utilizar Crowdin {#using-crowdin}
+## Uso de Crowdin {#using-crowdin}
-Puede encontrar instrucciones básicas sobre cómo unirse al proyecto en Crowdin y cómo utilizar el editor en línea de Crowdin en la página [Programa de traducción](/contributing/translation-program/#how-to-translate).
+Puede encontrar instrucciones básicas sobre cómo unirse al proyecto en Crowdin y cómo usar el editor en línea de Crowdin en la [página del Programa de traducción](/contributing/translation-program/#how-to-translate).
-Si quiere saber más sobre Crowdin y usar alguna de sus funciones avanzadas, [la base de conocimientos de Crowdin](https://support.crowdin.com/online-editor/) contiene muchas guías detalladas y descripciones generales de todas las funciones de Crowdin.
+Si desea obtener más información sobre Crowdin y el uso de algunas de sus funciones avanzadas, la [base de conocimientos de Crowdin](https://support.crowdin.com/online-editor/) contiene muchas guías detalladas y resúmenes de todas las funcionalidades de Crowdin.
## Capturar la esencia del mensaje {#capturing-the-essence}
@@ -28,7 +28,7 @@ Cada idioma tiene sus reglas gramáticas, usos y orden de palabras particulares.
En lugar de traducir el texto original palabra por palabra, se recomienda leer la frase entera y adaptarla a los usos del idioma de destino.
-## ¿Estilo formal o informal? {#formal-vs-informal}
+## Formal frente a informal {#formal-vs-informal}
Utilizamos el estilo formal (usted), ya que siempre resulta más educado y apropiado para dirigirse a todos los visitantes.
@@ -50,17 +50,17 @@ Todo el contenido debe traducirse utilizando el sistema de escritura correcto pa
Al traducir el contenido, debe asegurarse de que las traducciones sean consistentes y no incluyan ningún carácter latino.
-Una idea errónea común es que Ethereum debe estar siempre escrito en latín. Esto es incorrecto en la mayoría de los casos, por favor use la ortografía de Ethereum, nativa de su idioma (por ejemplo, en chino, اريوم en árabe, etc.).
+Una idea errónea común es que Ethereum debe estar siempre escrito en latín. Esto es incorrecto en la mayoría de los casos. Por favor, utilice la escritura de Ethereum nativa de su idioma (p. ej., 以太坊 en chino, إيثيريوم en árabe, etc.).
**Lo anterior no se aplica a los idiomas, donde los nombres propios no se traducen, por regla general.**
-## Traducción de metadatos de la página {#translating-metadata}
+## Traducción de los metadatos de la página {#translating-metadata}
Algunas páginas contienen metadatos en la página, como 'title', 'lang', 'description', 'sidebar', etc.
Ocultamos el contenido que los traductores nunca deberían traducir al subir nuevas páginas a Crowdin, por lo que todos los metadatos visibles para los traductores en Crowdin deberán traducirse.
-Por favor, tenga especial cuidado cuando traduzca cadenas cuyo texto origen sea 'en'. Esto representa el idoma en el que la página está disponible y deberá traducirse al [código ISO de idioma para su idioma](https://www.andiamo.co.uk/resources/iso-language-codes/). Estas cadenas de texto siempre deben traducirse usando caracteres latinos, y no el alfabeto nativo al idioma de destino.
+Por favor, tenga especial cuidado cuando traduzca cadenas cuyo texto origen sea 'en'. Esto representa el idioma en el que está disponible la página y debe traducirse al [código de idioma ISO para su idioma](https://www.andiamo.co.uk/resources/iso-language-codes/). Estas cadenas de texto siempre deben traducirse usando caracteres latinos, y no el alfabeto nativo al idioma de destino.
Si no está seguro que código de idioma usar, puede revisar la memoria de traducción en Crowdin, o buscar el código de idoma para su idioma en la URL de la página en el editor en línea de Crowdin.
@@ -78,17 +78,20 @@ Algunas cadenas de texto contienen títulos de artículos externos. La mayoría
Puede encontrar a continuación algunos ejemplos de estas cadenas de texto para traducción y cómo identificarlas (los enlaces a artículos se pueden encontrar en la parte inferior de estas páginas, en la sección de «Leer más»):
- 
+
+
## Advertencias de Crowdin {#crowdin-warnings}
-Crowdin tiene una función incorporada que advierte a los traductores cuando están a punto de cometer un error. Crowdin le avisará automáticamente del error antes de guardar la traducción si ha cometido errores, como olvidarse de incluir una etiqueta del texto original; traducir elementos que no deberían traducirse; añadir varios espacios en blanco consecutivos; olvidar marcas de puntuación final; etc. Si ve una advertencia como esta, por favor retroceda y compruebe por segunda vez la traducción sugerida.
+Crowdin tiene una función incorporada que advierte a los traductores cuando están a punto de cometer un error. Crowdin le avisará automáticamente del error antes de guardar la traducción si ha cometido errores, como olvidarse de incluir una etiqueta del texto original; traducir elementos que no deberían traducirse; añadir varios espacios en blanco consecutivos; olvidar marcas de puntuación final; etc.
+Si ve una advertencia como esta, por favor retroceda y compruebe por segunda vez la traducción sugerida.
**Nunca ignore estas advertencias, porque usualmente significan que algo está mal, o que en la traducción falta una parte del texto original.**
-Un ejemplo de una advertencia de Crowdin cuando olvida añadir una etiqueta a su traducción: 
+Un ejemplo de una advertencia de Crowdin cuando se olvida de añadir una etiqueta a su traducción:
+
-## Cómo abordar las etiquetas y los fragmentos de código {#dealing-with-tags}
+## Manejo de etiquetas y fragmentos de código {#dealing-with-tags}
Gran parte del contenido en inglés contiene etiquetas y variables, que se destacan en amarillo en el editor de Crowdin. Estas funciones tienen diferentes funciones y deben abordarse correctamente.
@@ -96,15 +99,18 @@ Gran parte del contenido en inglés contiene etiquetas y variables, que se desta
Para facilitar la gestión de etiquetas y copiarlas directamente desde el inglés, le recomendamos cambiar su configuración en el editor de Crowdin.
-1. Abrir ajustes 
+1. Abrir configuración
+ 
2. Desplácese hacia abajo hasta la sección «Mostrar etiquetas HTML».
-3. Seleccione «Ocultar». 
+3. Seleccionar «Ocultar»
+ 
4. Haga clic en «Guardar».
-Al seleccionar esta opción, el texto completo de la etiqueta ya no se mostrará y se reemplazará por un número. Al hacer clic en esta etiqueta durante la traducción, se copiará automáticamente la etiqueta exacta en el campo de traducción.
+Al seleccionar esta opción, el texto completo de la etiqueta ya no se mostrará y se reemplazará por un número.
+Al hacer clic en esta etiqueta durante la traducción, se copiará automáticamente la etiqueta exacta en el campo de traducción.
**Enlaces**
@@ -116,7 +122,7 @@ La mejor manera de conservar los enlaces intactos es copiarlos directamente desd

-Los enlaces también aparecen en el texto de origen en forma de etiquetas (es decir, `<0> 0>`). Si pasa el cursor sobre la etiqueta, el editor mostrará su contenido completo (a veces estas etiquetas representan enlaces).
+Los enlaces también aparecen en el texto de origen en forma de etiquetas (es decir, `<0>` `0>`). Si pasa el cursor sobre la etiqueta, el editor mostrará su contenido completo (a veces estas etiquetas representan enlaces).
Es muy importante copiar los enlaces del texto original y no cambiar su orden.
@@ -130,13 +136,13 @@ El texto original contiene muchos tipos diferentes de etiquetas, que siempre deb
Las etiquetas siempre contienen una etiqueta de apertura y otra de cierre. En la mayoría de los casos, el texto entre etiquetas de apertura y cierre debe traducirse.
-Ejemplo: ``Decentralized``
+Ejemplo: ``Descentralizado``
-``: _Etiqueta de apertura que hace que el texto resalte en negrita_
+`` - _Etiqueta de apertura que pone el texto en negrita_
-Descentralizado: _texto traducible_
+Descentralizado - _Texto traducible_
-``: _Etiqueta de cierre_
+`` - _Etiqueta de cierre_

@@ -144,23 +150,23 @@ Los fragmentos de código deben abordarse de forma ligeramente diferente a las d
Ejemplo: ``nonce``
-``: _Etiqueta de apertura, que contiene un fragmento de código_
+`` - _Etiqueta de apertura que contiene un fragmento de código_
nonce - _Texto no traducible_
-``: _etiqueta de cierre_
+`` - _Etiqueta de cierre_

El texto original también contiene etiquetas acortadas, que solo contienen números, lo que significa que su función no es inmediatamente obvia. Puede pasar el cursor sobre estas etiquetas para ver qué función tienen exactamente.
-En el ejemplo de abajo, puede verlo al pasar el cursor por la `<0>` etiqueta se muestra lo que representa `` y contiene un fragmento de código, por lo tanto el contenido dentro de estas etiquetas no debe traducirse.
+En el siguiente ejemplo, puede ver que al pasar el cursor sobre la etiqueta `<0>` se muestra que representa `` y contiene un fragmento de código, por lo tanto, el contenido dentro de estas etiquetas no debe traducirse.
-
+
-## Abreviaturas/siglas vs. formas completas {#short-vs-full-forms}
+## Formas cortas frente a formas completas/abreviaturas {#short-vs-full-forms}
-En el sitio web, se utilizan muchas siglas, como por ejemplo, dapps, NFT, DAO, DeFi, etc. Estas siglas se utilizan comúnmente en inglés y la mayoría de los visitantes del sitio web están familiarizados con ellas.
+En el sitio web se utilizan muchas abreviaturas, p. ej., dapps, NFT, DAO, DeFi, etc. Estas siglas se utilizan comúnmente en inglés y la mayoría de los visitantes del sitio web están familiarizados con ellas.
Dado que no suelen tener una traducción oficial a otros idiomas, la mejor manera de traducir estos y otros términos similares es proporcionar una descripción completa y añadir la sigla en inglés entre paréntesis.
@@ -168,9 +174,9 @@ No traduzca estas siglas o abreviaturas a su idioma nativo, ya que la mayoría d
Ejemplo de cómo traducir dApps:
-- Aplicaciones descentralizadas (dApps) → _Traducida completa (abreviatura en inglés entre paréntesis)_
+- Aplicaciones descentralizadas (dapps) → _Forma completa traducida (abreviatura en inglés entre paréntesis)_
-## Términos sin traducción establecida {#terms-without-established-translations}
+## Términos sin traducciones establecidas {#terms-without-established-translations}
Puede que algunos términos aún no tengan una traducción establecida en otros idiomas y se conozcan ampliamente por su denominación en inglés. Tales términos incluyen principalmente conceptos más nuevos, como proof-of-work (prueba de trabajo), proof-of-stake (prueba de participación), beacon chain (cadena de baliza), staking (participación), etc.
@@ -186,11 +192,11 @@ El sitio web contiene numerosos botones, que deben traducirse de forma diferente
El texto del botón se puede identificar viendo las capturas de pantalla de contexto, conectadas con la mayoría de las cadenas, o buscando el contexto en el editor, que incluye la frase «botón».
-Las traducciones para los botones deben ser lo más cortas posible, para evitar errores de formato. Asimismo, la traducción de los botones debe tener un sentido imperioso, es decir, dar una order o solicitar algo.
+Las traducciones para los botones deben ser lo más cortas posible, para evitar errores de formato. Además, las traducciones de los botones deben estar en imperativo, es decir, presentar una orden o una solicitud.

-## Traducir de forma inclusiva {#translating-for-inclusivity}
+## Traducción para la inclusión {#translating-for-inclusivity}
Los visitantes de ethereum.org vienen de todo el mundo y tienen diferentes orígenes. Por lo tanto, el lenguaje en el sitio web debería ser neutral, dar la bienvenida a todos y no excluir a nadie.
@@ -220,8 +226,8 @@ He aquí algunos ejemplos de aspectos especialmente importantes:
- Las reglas de ortografía definen el uso de espacios en cada idioma. Dado que todos los idiomas se escriben con espacios, estas reglas son algunas de las más características y los espacios son algunos de los elementos que se suelen traducir mal.
- He aquí algunas diferencias comunes en el espaciado entre inglés y otros idiomas:
- - Espacio antes de unidades de medición y divisas (por ejemplo, USD, EUR, kB, MB)
- - Espacio antes de los signos de grado (por ejemplo, °C, °F)
+ - Espacio antes de las unidades de medida y las divisas (p. ej., USD, EUR, kB, MB)
+ - Espacio antes de los signos de grado (p. ej., °C, ℉)
- Espacio antes de algunos signos de puntuación, especialmente el paréntesis (…)
- Espacio antes y después de las barras (/)
@@ -229,7 +235,7 @@ He aquí algunos ejemplos de aspectos especialmente importantes:
- Cada idioma tiene un conjunto diverso y complejo de reglas para escribir listas. Pueden ser significativamente diferentes al inglés.
- En algunos idiomas, la primera palabra de cada nueva línea se escribe en mayúscula, mientras que en otros, las nuevas líneas deben comenzar en minúscula. Muchos idiomas también tienen reglas diferentes sobre el uso de mayúsculas en las listas, en función de la longitud de cada línea.
-- Lo mismo se aplica a la puntuación de los elementos de línea. La puntuación final en las listas puede ser un punto (**.**), una coma (**,**) o un punto y coma (**;**), dependiendo del idioma.
+- Lo mismo se aplica a la puntuación de los elementos de línea. La puntuación final en las listas puede ser un punto (.), una coma (,) o un punto y coma (;), dependiendo del idioma.
**Comillas**
@@ -253,10 +259,10 @@ He aquí algunos ejemplos de aspectos especialmente importantes:
- La principal diferencia en la escritura de números en diferentes idiomas es el separador utilizado para decimales y millares. Los millares se pueden expresar por punto, coma o espacio. Del mismo modo, algunos idiomas utilizan un punto decimal, mientras que otros usan una coma decimal.
- Algunos ejemplos de cifras de más de tres dígitos:
- - En inglés: **1,000.50**
- - En español: **1.000,50**
- - En francés: **1000,50**
-- Otra consideración importante a la hora de traducir números es el signo de porcentaje. Puede escribirse de diferentes maneras: **100%**, **100 %** o **%100**.
+ - Inglés – **1,000.50**
+ - Español – **1.000,50**
+ - Francés – **1 000,50**
+- Otra consideración importante a la hora de traducir números es el signo de porcentaje. Se puede escribir de diferentes maneras: **100%**, **100 %** o **%100**.
- Finalmente, los números negativos pueden mostrarse diferentemente, dependiendo del idioma: -100, 100-, (100) o [100].
**Fechas**
From 34c751a59fed46c2f04f020a6fda153e6adbd73d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:50 -0300
Subject: [PATCH 262/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md
---
.../how-to-view-nft-in-metamask/index.md | 29 +++++++++----------
1 file changed, 13 insertions(+), 16 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md b/public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md
index 6af39912c39..5752ea4a487 100644
--- a/public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md
@@ -1,36 +1,33 @@
---
-title: Cómo visualizar su NFT en su cartera (parte 3/3 de la serie de tutoriales de NFT)
-description: '¡Este tutorial describe cómo ver un NFT existente en MetaMask!'
+title: Cómo ver su NFT en su billetera (Parte 3/3 de la serie de tutoriales de NFT)
+description: ¡Este tutorial describe cómo ver un NFT existente en MetaMask!
author: "Sumi Mudgil"
-tags:
- - "ERC-721"
- - "Alchemy"
- - "Solidity"
+tags: [ "ERC-721", "Alquimia", "Solidez" ]
skill: beginner
lang: es
published: 2021-04-22
---
-Este tutorial es la parte 3/3 en la serie de tutoriales NFT, donde vemos nuestros NFT recién acuñados. Sin embargo, puede utilizar el tutorial general para cualquier token ERC-721 usando MetaMask, incluso en la red principal o cualquier red de prueba. Si quiere aprender a acuñar su propio NFT en Ethereum, debería revisar la [parte 1 en Cómo escribir & desplegar un contrato inteligente NFT](/developers/tutorials/how-to-write-and-deploy-an-nft)!
+Este tutorial es la parte 3/3 de la serie de tutoriales de NFT, en la que vemos nuestro NFT recién acuñado. Sin embargo, puede utilizar el tutorial general para cualquier token ERC-721 usando MetaMask, incluso en la red principal o en cualquier red de prueba. Si le gustaría aprender a acuñar su propio NFT en Ethereum, ¡debería consultar la [Parte 1 sobre cómo escribir y desplegar un contrato inteligente de NFT](/developers/tutorials/how-to-write-and-deploy-an-nft)!
-¡Enhorabuena! Ha llegado a la parte más corta y sencilla de nuestra serie de tutoriales NFT sobre cómo ver su NFT recién acuñado en una cartera virtual. Utilizaremos MetaMask para este ejemplo, ya que es lo que usamos en las dos partes anteriores.
+¡Enhorabuena! Ha llegado a la parte más corta y sencilla de nuestra serie de tutoriales de NFT: cómo ver su NFT recién acuñado en una billetera virtual. Utilizaremos MetaMask para este ejemplo, ya que es lo que usamos en las dos partes anteriores.
-Como requisito previo, ya debería tener MetaMask en su móvil instalado e incluir la cuenta a la que ha acuñado su NFT: puede obtener la aplicación gratis para [iOS](https://apps.apple.com/us/app/metamask-blockchain-wallet/id1438144202) o [Android](https://play.google.com/store/apps/details?id=io.metamask&hl=en_US&gl=US).
+Como requisito previo, ya debería tener MetaMask instalado en su móvil, y este debería incluir la cuenta en la que acuñó su NFT. Puede obtener la aplicación de forma gratuita en [iOS](https://apps.apple.com/us/app/metamask-blockchain-wallet/id1438144202) o [Android](https://play.google.com/store/apps/details?id=io.metamask&hl=en_US&gl=US).
-## Paso 1: Configurar su red a Sepolia {#set-network-to-sepolia}
+## Paso 1: Configure su red en Sepolia {#set-network-to-sepolia}
-En la parte superior de la aplicación, pulse el botón «Wallet» (Cartera) después de lo cual se le pedirá que seleccione una red. Cómo nuestro NFT se minó en la red de Sepolia, tiene que seleccionar Sepolia como su red.
+En la parte superior de la aplicación, pulse el botón «Billetera», tras lo cual se le pedirá que seleccione una red. Como nuestro NFT fue acuñado en la red Sepolia, deberá seleccionar Sepolia como su red.
-
+
-## Paso 2: Añadir su coleccionable a MetaMask {#add-nft-to-metamask}
+## Paso 2: Añada su coleccionable a MetaMask {#add-nft-to-metamask}
-Una vez esté en la red Sepolia, seleccione la prestaña «Coleccionables» en la derecha y añada la dirección del contrato inteligente del NFT y la ID del token ERC-721 de su NFT, el cuál debería de poder encontrar en Etherscan, a partir del hash de su transacción del NFT implementado en la Parte II de nuestro tutorial.
+Una vez que esté en la red Sepolia, seleccione la pestaña «Coleccionables» a la derecha y añada la dirección del contrato inteligente del NFT y el ID del token ERC-721 de su NFT, que debería poder encontrar en Etherscan a partir del hash de la transacción de su NFT desplegado en la parte II de nuestro tutorial.
-
+
Puede que necesite actualizar un par de veces la pantalla para ver su NFT, ¡pero estará ahí !

-¡Enhorabuena! Ha acuñado satisfactoriamente un NFT, ¡y ahora puede verlo! ¡Estamos deseando ver cómo va a arrasar en el universo NFT!
+¡Enhorabuena! ¡Ha acuñado con éxito un NFT y ya puede verlo! ¡Estamos deseando ver cómo arrasará en el mundo de los NFT!
From 4a2f9b37966a725741f3a0d4d61aa4bdc0edecc2 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:52 -0300
Subject: [PATCH 263/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/index.md
---
.../docs/consensus-mechanisms/pos/index.md | 66 +++++++++----------
1 file changed, 33 insertions(+), 33 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/index.md
index dea6849ab68..c89b69b450d 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/index.md
@@ -4,15 +4,15 @@ description: Una explicación del protocolo de consenso de la prueba de particip
lang: es
---
-La prueba de participación (PoS) subyace al [mecanismo de consenso](/developers/docs/consensus-mechanisms/) de Ethereum. Ethereum cambió su mecanismo de prueba de participación en 2022 porque es más seguro, consume menos energía y resulta más apropiado para implementar nuevas soluciones de escalabilidad en comparación con la arquitectura anterior de la [prueba de trabajo](/developers/docs/consensus-mechanisms/pow).
+La prueba de participación (PoS) es la base del [mecanismo de consenso](/developers/docs/consensus-mechanisms/) de Ethereum. Ethereum activó su mecanismo de prueba de participación en 2022 porque es más seguro, consume menos energía y es mejor para implementar nuevas soluciones de escalado en comparación con la anterior arquitectura de [prueba de trabajo](/developers/docs/consensus-mechanisms/pow).
## Requisitos previos {#prerequisites}
-Para comprender mejor esta página, te recomendamos que primero leas los [mecanismos de consenso](/developers/docs/consensus-mechanisms/).
+Para entender mejor esta página, le recomendamos que primero lea sobre los [mecanismos de consenso](/developers/docs/consensus-mechanisms/).
## ¿Qué es la prueba de participación (PoS)? {#what-is-pos}
-La prueba de participación es la manera de probar que los validadores han puesto algo de valor en la red y que puede destruirse si actúan deshonestamente. En la prueba de participación de Ethereum, los validadores explícitamente apuestan capital en forma de ETH en un contrato inteligente en Ethereum. Así pues, el validador es responsable de verificar la validez de los nuevos bloques propagados por la red y, en ciertas circunstancias, de crear y propagar nuevos bloques. Si ellos intentan estafar a la red (por ejemplo al proponer múltiples bloques cuando deberían enviar uno o enviar certificaciones contradictorias), algunas o todas sus apuestas en ETH se pueden destruir.
+La prueba de participación es la manera de probar que los validadores han puesto algo de valor en la red y que puede destruirse si actúan deshonestamente. En la prueba de participación de Ethereum, los validadores apuestan explícitamente capital en forma de ETH en un contrato inteligente en Ethereum. Así pues, el validador es responsable de verificar la validez de los nuevos bloques propagados por la red y, en ciertas circunstancias, de crear y propagar nuevos bloques. Si intentan estafar a la red (por ejemplo, al proponer múltiples bloques cuando deberían enviar uno o enviar certificaciones contradictorias), algunas o todas sus apuestas en ETH se pueden destruir.
## Validadores {#validators}
@@ -20,78 +20,78 @@ Para participar como validador, un usuario debe de depositar 32 ETH en el contra
En la prueba de trabajo (PoW) el tiempo de los bloques se determinaba por la dificultad de minado, mientras que en la prueba de participación (PoS) el tiempo es predeterminado. En la prueba de participación (PoS) de Ethereum, el tiempo se divide en ranuras (12 segundos) y épocas (32 ranuras). Se selecciona de manera aleatoria a un validador para que proponga un bloque en cada ranura. Este validador será responsable de crear un nuevo bloque y de enviarlo a otro nodo de la red. Por otra parte, se escoge de manera aleatoria a un comité de validadores para cada ranura, cuyos votos se utilizarán para determinar la validez del bloque propuesto. Dividir la configuración del validador en comités es importante para mantener la carga de la red manejable. Los comités dividen el conjunto de validadores para que todos los validadores activos certifiquen en cada época, pero no en todas las ranuras.
-## Cómo se ejecutan las transacciones en la PoS de Ethereum {#transaction-execution-ethereum-pos}
+## Cómo se ejecuta una transacción en Ethereum PoS {#transaction-execution-ethereum-pos}
La siguiente explicación detalla íntegramente cómo se ejecuta una transacción en la prueba de participación de Ethereum.
-1. Un usuario crea y firma una [transacción](/developers/docs/transactions/) con su clave privada. Esto usualmente se maneja con una cartera o una biblioteca como [ethers.js](https://docs.ethers.org/v6/), [web3js](https://docs.web3js.org/), [web3py](https://web3py.readthedocs.io/en/v5/) etc., pero internamente el usuario está realizando consultas a un nodo usando la [API JSON-RPC](/developers/docs/apis/json-rpc/) de Ethereum. El usuario define la cantidad de gas que está dispuesto a pagar como propina a un validador para animarle a incluir la transacción en un bloque. Las[propinas](/developers/docs/gas/#priority-fee)se pagan al validador, mientras que las[tarifas de base](/developers/docs/gas/#base-fee) se queman.
+1. Un usuario crea y firma una [transacción](/developers/docs/transactions/) con su clave privada. Normalmente, esto lo gestiona una cartera o una biblioteca como [ethers.js](https://docs.ethers.org/v6/), [web3js](https://docs.web3js.org/), [web3py](https://web3py.readthedocs.io/en/v5/), etc., pero internamente el usuario está haciendo una solicitud a un nodo utilizando la [API JSON-RPC](/developers/docs/apis/json-rpc/) de Ethereum. El usuario define la cantidad de gas que está dispuesto a pagar como propina a un validador para animarle a incluir la transacción en un bloque. Las [propinas](/developers/docs/gas/#priority-fee) se pagan al validador mientras que la [comisión base](/developers/docs/gas/#base-fee) se quema.
2. La transacción se envía a un [cliente de ejecución](/developers/docs/nodes-and-clients/#execution-client) de Ethereum que verifica su validez. Esto implica asegurarse de que el emisor tenga suficientes ETH para realizar la transacción y firmarla con la clave correcta.
-3. Si la transacción es válida, el cliente de ejecución la añade a su zona de espera local (lista de transacciones pendientes) y también la difunde a otros nodos a través de la red de intercambio de información (o Gossip) de la capa de ejecución. Cuando otros nodos se enteran de la transacción, la añaden también a su zona de espera local. Los usuarios avanzados podrían abstenerse de transmitir su transacción y, en su lugar, redirigirla a constructores de bloques especializados como las [subastas de Flashbots](https://docs.flashbots.net/flashbots-auction/overview). Esto les permite organizar las transacciones en los próximos bloques para obtener la máxima ganancia ([MEV](/developers/docs/mev/#mev-extraction)).
-4. Uno de los nodos validadores de la red es el proponente de bloques para la vacante actual, habiendo sido seleccionado previamente de forma pseudoaleatoria utilizando RANDAO. Este nodo es responsable de construir y difundir el siguiente bloque que se añadirá a la cadena de bloques de Ethereum y de actualizar el estado global. El nodo se compone de tres partes: un cliente de ejecución, un cliente de consenso y un cliente validador. El cliente de ejecución agrupa las transacciones de la zona de espera local en una «carga útil de ejecución» y las ejecuta localmente para generar un cambio de estado. Esta información se transmite al cliente de consenso donde la carga útil de ejecución se recoge como parte de un «bloque de baliza» que también contiene información sobre recompensas, penalizaciones, recortes, certificaciones y demás que permiten a la red acordar la secuencia de bloques en la cabeza de la cadena. La comunicación entre los clientes de ejecución y consenso se describe con más detalle en [Cómo conectar a los clientes de consenso y ejecución](/developers/docs/networking-layer/#connecting-clients).
-5. Otros nodos reciben el nuevo bloque de baliza en la red de intercambio de información de la capa de consenso. Lo pasan a su cliente de ejecución, donde las transacciones se vuelven a ejecutar localmente para garantizar que el cambio de estado propuesto es válido. El cliente validador certifica que el bloque es válido y es el siguiente bloque lógico en su visión de la cadena (lo que significa que se construye sobre la cadena con el mayor peso de certificaciones según se define en las [reglas de elección de bifurcación](/developers/docs/consensus-mechanisms/pos/#fork-choice)). El bloque se añade a la base de datos local de cada nodo que lo certifica.
+3. Si la transacción es válida, el cliente de ejecución la añade a su zona de espera local (lista de transacciones pendientes) y también la difunde a otros nodos a través de la red de intercambio de información (o Gossip) de la capa de ejecución. Cuando otros nodos se enteran de la transacción, la añaden también a su zona de espera local. Los usuarios avanzados pueden abstenerse de transmitir su transacción y, en su lugar, enviarla a constructores de bloques especializados como [Flashbots Auction](https://docs.flashbots.net/flashbots-auction/overview). Esto les permite organizar las transacciones en los próximos bloques para obtener el máximo beneficio ([MEV](/developers/docs/mev/#mev-extraction)).
+4. Uno de los nodos validadores de la red es el proponente de bloques para la vacante actual, habiendo sido seleccionado previamente de forma pseudoaleatoria utilizando RANDAO. Este nodo es responsable de construir y difundir el siguiente bloque que se añadirá a la cadena de bloques de Ethereum y de actualizar el estado global. El nodo se compone de tres partes: un cliente de ejecución, un cliente de consenso y un cliente validador. El cliente de ejecución agrupa las transacciones de la zona de espera local en una «carga útil de ejecución» y las ejecuta localmente para generar un cambio de estado. Esta información se transmite al cliente de consenso donde la carga útil de ejecución se recoge como parte de un «bloque de baliza», que también contiene información sobre recompensas, penalizaciones, recortes, certificaciones y demás que permiten a la red acordar la secuencia de bloques en la cabeza de la cadena. La comunicación entre los clientes de ejecución y de consenso se describe con más detalle en [Conexión de los clientes de consenso y de ejecución](/developers/docs/networking-layer/#connecting-clients).
+5. Otros nodos reciben el nuevo bloque de baliza en la red de intercambio de información de la capa de consenso. Lo pasan a su cliente de ejecución, donde las transacciones se vuelven a ejecutar localmente para garantizar que el cambio de estado propuesto sea válido. El cliente validador entonces atestigua que el bloque es válido y que es el siguiente bloque lógico en su visión de la cadena (lo que significa que se construye sobre la cadena con el mayor peso de atestaciones, tal como se define en las [reglas de elección de bifurcación](/developers/docs/consensus-mechanisms/pos/#fork-choice)). El bloque se añade a la base de datos local de cada nodo que lo certifica.
6. La transacción puede considerarse «finalizada» si se ha convertido en parte de una cadena con un enlace «supermayoritario» entre dos puntos de control. Los puntos de control ocurren al comienzo de cada época y existen para dar cuenta del hecho de que solo un subconjunto de validadores activos certifique en cada ranura, pero todos los validadores activos certifican en cada época. Por lo tanto, sólo se puede demostrar un «enlace supermayoritario» entre épocas (el 66 % del total del ETH apostado en la red tiene que estar de acuerdo en dos puntos de control).
En la siguiente sección se detalla la finalidad.
## Finalidad {#finality}
-Una transacción tiene la «finalidad» de distribuir redes cuando no se puede cambiar una parte del bloque sin que se queme una gran cantidad de ETH. Con la prueba de participación de Ethereum, esto se resuelve utilizando bloques de «puntos de control». El primer bloque de cada época será un punto de control. Los validadores votan por los pares de puntos que consideran válidos. Si un par de puntos de control atrae votos que representan al menos dos tercios del total de ETH apostado, los puntos de control se actualizan. El más reciente entre ambos (objetivo) se convierte en «justificado». El primero de los dos de por sí ya está justificado al ser el «objetivo» de la época anterior. Ahora se ha clasificado como «finalizado».
+Una transacción tiene la «finalidad» de distribuir redes cuando no se puede cambiar una parte del bloque sin que se queme una gran cantidad de ETH. Con la prueba de participación de Ethereum, esto se resuelve utilizando bloques de «puntos de control». El primer bloque de cada época será un punto de control. Los validadores votan por los pares de puntos de control que consideran válidos. Si un par de puntos de control atrae votos que representan al menos dos tercios del total de ETH participado, los puntos de control se actualizan. El más reciente entre ambos (objetivo) se convierte en «justificado». El primero de los dos de por sí ya está justificado al ser el «objetivo» de la época anterior. Ahora se ha clasificado como «finalizado». Este proceso de actualización de los puntos de control lo gestiona **[Casper the Friendly Finality Gadget (Casper-FFG)](https://arxiv.org/pdf/1710.09437)**. Casper-FFG es una herramienta de finalidad de bloque para el consenso. Una vez que un bloque está finalizado, no se puede revertir ni cambiar sin una penalización de la mayoría de los participantes, lo que lo hace económicamente inviable.
-Para revertir un bloque finalizado, un atacante se comprometería a perder al menos un tercio del total de ETH apostado. La razón exacta de esto se explica en esta [publicación del blog de Ethereum Fondation](https://blog.ethereum.org/2016/05/09/on-settlement-finality/). Ya que la finalización requiere una mayoría de dos tercios, un atacante podría evitar que se alcance la finalización en la red al votar con un tercio de la apuesta total. Existe un mecanismo de defensa contra esto: el [filtro de inactividad](https://eth2book.info/bellatrix/part2/incentives/inactivity). Este se activa cada vez que la cadena no logra finalizar tras más de cuatro épocas. El filtro de inactividad diluye el ETH en reserva de los validadores que han votado contra la mayoría, permitiendo así que la mayoría logre recuperar los dos tercios para finalizar la cadena.
+Para revertir un bloque finalizado, un atacante se comprometería a perder al menos un tercio del total de ETH participado. La razón exacta de esto se explica en esta [publicación del blog de la Fundación Ethereum](https://blog.ethereum.org/2016/05/09/on-settlement-finality/). Ya que la finalización requiere una mayoría de dos tercios, un atacante podría evitar que se alcance la finalización en la red al votar con un tercio de la participación total. Existe un mecanismo para defenderse de esto: la [fuga por inactividad](https://eth2book.info/bellatrix/part2/incentives/inactivity). Este filtro se activa cada vez que la cadena no logra finalizar tras más de cuatro épocas. El filtro de inactividad diluye el ETH participado de los validadores que han votado contra la mayoría, permitiendo así que la mayoría logre recuperar los dos tercios para finalizar la cadena.
## Seguridad criptoeconómica {#crypto-economic-security}
Hacer de validador significa adoptar un firme compromiso. Se espera que el validador cuente con el hardware y la conectividad suficientes para participar en la validación y propuesta de bloques. A cambio, el validador recibirá un pago en ETH (haciendo que su saldo de participación aumente). Por otra parte, al participar como validador también se abren nuevos caminos para que ciertos usuarios ataquen la red en busca de beneficios propios o sabotajes. Para evitarlo, los validadores perderán las recompensas en ETH cuando no participen tras haber sido asignados, así como también se podrá destruir el ETH de sus participaciones ante malas conductas. Dos principales comportamientos pueden considerarse deshonestos: proponer múltiples bloques en un solo espacio (equivocación) y presentar certificaciones contradictorias.
-La cantidad de ETH recortados dependerá del número de validadores que se vean afectados en ese preciso momento. Esto se conoce como [«penalización por correlación»](https://eth2book.info/bellatrix/part2/incentives/slashing#the-correlation-penalty), que podrá ser inferior (~1% de reducción del fondo de garantía para un solo validador) o incluso puede resultar en la destrucción del 100 % de la garantía del validador (evento masivo de recortes). Se podrá imponer a mitad del proceso un período de salida forzosa con una penalización inmediata (de hasta 1 ETH) el primer día, la penalización por correlación el 18.º día y, por último, la expulsión de la red el 36.º día. Recibirán multas por certificaciones menores a diario al estar presentes en la red sin participar en las votaciones. Esto significaría que un ataque coordinado podría resultar muy costoso para el atacante.
+La cantidad de ETH recortados dependerá del número de validadores que se vean afectados en ese preciso momento. Esto se conoce como la ["penalización por correlación"](https://eth2book.info/bellatrix/part2/incentives/slashing#the-correlation-penalty), y puede ser menor (~1 % de la participación para un solo validador penalizado por su cuenta) o puede resultar en la destrucción del 100 % de la participación del validador (evento de penalización masiva). Se podrá imponer a mitad del proceso un período de salida forzosa con una penalización inmediata (de hasta 1 ETH) el primer día, la penalización por correlación el 18.º día y, por último, la expulsión de la red el 36.º día. Recibirán multas por certificaciones menores a diario al estar presentes en la red sin participar en las votaciones. Esto significaría que un ataque coordinado podría resultar muy costoso para el atacante.
-## Selección de bifurcación {#fork-choice}
+## Elección de bifurcación {#fork-choice}
-Cuando la red opera de manera óptima y honesta, solo habrá un nuevo bloque en la cabeza de la cadena y todos los validadores lo certifican. A pesar de ello, existe la posibilidad de que los validadores tengan diferentes puntos de vista en relación con la cabeza de la cadena debido a latencias en la red o ante la equivocación de un proponente de bloque. Por este motivo, se requiere de un algoritmo para que los clientes de consenso puedan decidir a cuál favorecer. El algoritmo empleado en la prueba de participación de Ethereum se llama [LMD-GHOST](https://arxiv.org/pdf/2003.03052.pdf), y opera identificando la bifurcación que tenga la mayor cantidad de certificaciones en su historial.
+Cuando la red opera de manera óptima y honesta, solo habrá un nuevo bloque en la cabeza de la cadena y todos los validadores lo certifican. A pesar de ello, existe la posibilidad de que los validadores tengan diferentes puntos de vista en relación con la cabeza de la cadena debido a latencias en la red o ante la equivocación de un proponente de bloque. Por este motivo, se requiere de un algoritmo para que los clientes de consenso puedan decidir a cuál favorecer. El algoritmo utilizado en la prueba de participación de Ethereum se llama [LMD-GHOST](https://arxiv.org/pdf/2003.03052.pdf) y funciona identificando la bifurcación que tiene el mayor peso de atestaciones en su historial.
## Prueba de participación y seguridad {#pos-and-security}
-La amenaza de un [ataque del 51 %](https://www.investopedia.com/terms/1/51-attack.asp) aún está presente en la prueba de participación, al igual que en la prueba de trabajo, solo que ahora es incluso más peligroso para los atacantes. Un atacante necesitará el 51 % del ETH apostado como garantía. Luego podrían hacer uso de sus certificaciones para asegurar que la bifurcación que han elegido sea la que acumula la mayor cantidad de certificaciones. El «peso» de las certificaciones acumuladas lo utilizan los clientes de consenso para determinar cuál es la cadena correcta, por lo que este atacante podría ser capaz de convertir su bifurcación en la predilecta. Sin embargo, una ventaja que la prueba de participación (PoS) tiene frente a la prueba de trabajo (PoW) es que la comunidad cuenta con la flexibilidad de perpetrar un contraataque. Por ejemplo, los validadores honestos podrán optar por seguir construyendo en la cadena minoritaria, ignorando la bifurcación del atacante e invitando a las aplicaciones, intercambios y reservas de liquidez a actuar en consecuencia. También tendrían la posibilidad de eliminar de la red al atacante de manera forzosa, así como destruir su ETH apostado. Estas son defensas económicas sólidas contra un ataque del 51 %.
+La amenaza de un [ataque del 51 %](https://www.investopedia.com/terms/1/51-attack.asp) todavía existe en la prueba de participación, como en la prueba de trabajo, pero es aún más arriesgado para los atacantes. Un atacante necesitará el 51 % del ETH participado como garantía. Luego podrían hacer uso de sus certificaciones para asegurar que la bifurcación que han elegido sea la que acumula la mayor cantidad de certificaciones. El «peso» de las certificaciones acumuladas lo utilizan los clientes de consenso para determinar cuál es la cadena correcta, por lo que este atacante podría ser capaz de convertir su bifurcación en la predilecta. Sin embargo, una ventaja que la prueba de participación (PoS) tiene frente a la prueba de trabajo (PoW) es que la comunidad cuenta con la flexibilidad de perpetrar un contraataque. Por ejemplo, los validadores honestos podrán optar por seguir construyendo en la cadena minoritaria, ignorando la bifurcación del atacante e invitando a las aplicaciones, intercambios y reservas de liquidez a actuar en consecuencia. También tendrían la posibilidad de eliminar de la red al atacante de manera forzosa, así como destruir su ETH participado. Estas son defensas económicas sólidas contra un ataque del 51 %.
-Más allá del 51% de los ataques, los malos actores también podrían intentar otros tipos de actividades maliciosas, como:
+Aparte de los ataque del 51 %, los malos actores también podrían intentar otros tipos de acciones maliciosas, como:
- ataques de largo alcance (aunque el artilugio de finalidad neutraliza este vector de ataque)
-- reorganizaciones de corto alcance (aunque el impulso del proponente [proposer boosting] y los plazos de certificación mitigan esto)
-- ataques de rebote y equilibrio (también mitigados por el impulso del proponente; estos ataques de todos modos solo se han demostrado en condiciones de red idealizadas)
+- reorganizaciones de corto alcance (aunque el impulso del proponente [proposer boosting] y los plazos de certificación lo mitigan)
+- ataques de rebote y equilibrio (también mitigados por el impulso del proponente; estos ataques de todos modos solo se han demostrado en condiciones de red hipotéticas)
- ataques de avalancha (neutralizados por la regla de los algoritmos de elección de bifurcación de solo considerar el último mensaje)
En conjunto, la prueba de participación, tal como ha sido implementada en Ethereum, demuestra tener mayor seguridad económica que la prueba de trabajo.
## Ventajas y desventajas {#pros-and-cons}
-| Ventajas | Desventajas |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
-| Apostar facilita la participación de las personas en la protección de la seguridad de la red, promoviendo así la descentralización. el nodo de validación puede ejecutarse en un portátil convencional. Las reservas de apuestas permiten que los usuarios puedan apostar sin tener 32 ETH. | La prueba de participación es reciente y con menos pruebas de resistencia que la prueba de trabajo |
-| La participación es más descentralizada. Las economías de escala no son aplicables en la misma medida en que se hacía con el minado en PoW. | La implementación de la prueba de participación es mucho más compleja que con la prueba de trabajo. |
-| La prueba de participación ofrece mayor seguridad criptoeconómica en comparación con la prueba de trabajo. | Los usuarios deben ejecutar tres piezas de software distintas para poder participar en la prueba de participación de Ethereum. |
-| Se requiere una menor emisión de nuevos ETH para incentivar a los participantes de la red. | |
+| Pros | Contras |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
+| Apostar facilita la participación de las personas en la protección de la seguridad de la red, lo que promueve la descentralización. el nodo de validación puede ejecutarse en un portátil convencional. Las reservas de participaciones permiten que los usuarios puedan apostar sin tener 32 ETH. | La prueba de participación es reciente y con menos pruebas de resistencia que la prueba de trabajo |
+| La participación es más descentralizada. Las economías de escalabilidad no son aplicables en la misma medida en que se hacía con el minado en PoW. | La implementación de la prueba de participación es mucho más compleja que con la prueba de trabajo. |
+| La prueba de participación ofrece mayor seguridad criptoeconómica en comparación con la prueba de trabajo. | Los usuarios deben ejecutar tres piezas de software distintas para poder participar en la prueba de participación de Ethereum. |
+| Se requiere una menor emisión de nuevos ETH para incentivar a los participantes de la red. | |
### Comparación con la prueba de trabajo {#comparison-to-proof-of-work}
-Ethereum originalmente utilizaba prueba de trabajo (PoW), pero cambió a prueba de participación (PoS) en septiembre de 2022. La PoS ofrece varias ventajas sobre la PoW, a saber:
+Ethereum originalmente utilizaba prueba de trabajo (PoW), pero cambió a la prueba de participación (PoS) en septiembre de 2022. La PoS ofrece varias ventajas sobre la PoW, a saber:
-- Mayor eficiencia energética: no hay necesidad de emplear las grandes cantidades de energía requeridas para computar que se usaban con la prueba de trabajo (PoW).
+- Mayor eficiencia energética: no hay necesidad de emplear las grandes cantidades de energía para computar que se usaban con la prueba de trabajo (PoW).
- Menos barreras para entrar al reducir los requisitos de hardware: no es necesario emplear hardware de primera clase para tener las posibilidades de crear nuevos bloques.
- Un reducido riesgo de centralización: la prueba de participación debería traer consigo una mayor cantidad de nodos que protejan la red.
- Debido al bajo consumo energético, se requiere de una menor emisión de ETH para incentivar la participación.
- Las sanciones económicas por mala conducta hacen que los ataques, como el del 51 % por ejemplo, sean más costosos para un atacante en comparación con la prueba de trabajo.
- La comunidad puede recurrir al rescate social de una cadena honesta ante un ataque del 51 % realizado para superar las defensas criptoeconómicas.
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Prueba de participación PF](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html) _Vitalik Buterin_
-- [Qué es la prueba de participación](https://consensys.net/blog/blockchain-explained/what-is-proof-of-stake/) _ConsenSys_
+- [Preguntas frecuentes sobre la prueba de participación](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html) _Vitalik Buterin_
+- [¿Qué es la prueba de participación?](https://consensys.net/blog/blockchain-explained/what-is-proof-of-stake/) _ConsenSys_
- [Qué es la prueba de participación y por qué es importante](https://bitcoinmagazine.com/culture/what-proof-of-stake-is-and-why-it-matters-1377531463) _Vitalik Buterin_
-- [Por qué existe la prueba de participación (noviembre de 2020)](https://vitalik.eth.limo/general/2020/11/06/pos2020.html) _Vitalik Buterin_
-- [Prueba de participación: cómo aprendí a amar la subjetividad débil](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) _Vitalik Buterin_
-- [Ataque y defensa en la prueba de participación (PoS) de Ethereum](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs)
-- [Filosofía de diseño de las pruebas de participación](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) _Vitalik Buterin_
-- [Video: Vitalik Buterin explica la prueba de participación a Lex Fridman](https://www.youtube.com/watch?v=3yrqBG-7EVE)
+- [Por qué la prueba de participación (noviembre de 2020)](https://vitalik.eth.limo/general/2020/11/06/pos2020.html) _Vitalik Buterin_
+- [Prueba de participación: Cómo aprendí a amar la subjetividad débil](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) _Vitalik Buterin_
+- [Ataque y defensa en la prueba de participación de Ethereum](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs)
+- [Una filosofía de diseño de la prueba de participación](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) _Vitalik Buterin_
+- [Vídeo: Vitalik Buterin explica la prueba de participación a Lex Fridman](https://www.youtube.com/watch?v=3yrqBG-7EVE)
## Temas relacionados {#related-topics}
From 5013c782d258b8e655fcae14847c29d35b9f738a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:53 -0300
Subject: [PATCH 264/589] update(i18n):
public/content/translations/es/developers/docs/standards/tokens/erc-721/index.md
---
.../docs/standards/tokens/erc-721/index.md | 109 ++++++++++--------
1 file changed, 64 insertions(+), 45 deletions(-)
diff --git a/public/content/translations/es/developers/docs/standards/tokens/erc-721/index.md b/public/content/translations/es/developers/docs/standards/tokens/erc-721/index.md
index dd349a3f0d8..bbbc84e0e9c 100644
--- a/public/content/translations/es/developers/docs/standards/tokens/erc-721/index.md
+++ b/public/content/translations/es/developers/docs/standards/tokens/erc-721/index.md
@@ -1,32 +1,43 @@
---
title: Estándar de token no fungible ERC-721
-description:
+description: Familiarícese con ERC-721, el estándar para tókenes no fungibles (NFT) que representan activos digitales únicos en Ethereum.
lang: es
---
## Introducción {#introduction}
-**¿Qué es un token no fungible o funcional?**
+**¿Qué es un token no fungible?**
-Una ficha no funcional (NFT) se utiliza para identificar algo o a alguien de una manera única. Este tipo de token es perfecto para ser usado en plataformas que ofrecen artículos recolectables, acceder a llaves, boletos de lotería, asientos numerados para conciertos y partidos deportivos, etc. Este tipo especial de token tiene unas posibilidades asombrosas, por lo que merece un estándar adecuado, el ERC-721 vino a solucionarlo.
+Una ficha no funcional (NFT) se utiliza para identificar algo o a alguien de una manera única. Este tipo de token es perfecto para
+ser usado en plataformas que ofrecen artículos recolectables, acceder a llaves, boletos de lotería, asientos numerados para conciertos y
+partidos deportivos, etc. Este tipo especial de token tiene unas posibilidades asombrosas, por lo que merece un estándar adecuado, el ERC-721
+vino a solucionarlo.
-**¿Qué es ERC-721?**
+**¿Qué es el ERC-721?**
-El ERC-721 introduce una norma para NFT, en otras palabras, este tipo de ficha es único y puede tener un valor diferente que otra ficha del mismo contrato inteligente, tal vez debido a su antigüedad, rareza o incluso a algo como su visualidad. Espera, ¿visual?
+El ERC-721 introduce una norma para NFT, en otras palabras, este tipo de ficha es único y puede tener un valor diferente
+que otra ficha del mismo contrato inteligente, tal vez debido a su antigüedad, rareza o incluso a algo como su visualidad.
+Espera, ¿visual?
-¡Sí! Todos los NFT tienen una variable `uint256` llamada `tokenId`, así para cualquier Contrato ERC-721, el par `dirección del contrato, uint256 tokenId` debe ser único globalmente. Dicho esto, una dapp puede tener un "convertidor" que utilice el `tokenId` como entrada y produzca una imagen de algo atractivo, ¡como zombies, armas, habilidades o increíbles gatitos!
+¡Sí! Todos los NFT tienen una variable `uint256` llamada `tokenId`, por lo que para cualquier contrato ERC-721, el par
+`dirección del contrato, tokenId uint256` debe ser único a nivel mundial. Dicho esto, una dapp puede tener un "convertidor" que
+utilice el `tokenId` como entrada y genere una imagen de algo genial, como zombis, armas, habilidades ¡o gatitos increíbles!
## Requisitos previos {#prerequisites}
- [Cuentas](/developers/docs/accounts/)
- [Contratos inteligentes](/developers/docs/smart-contracts/)
-- [Estándares de token](/developers/docs/standards/tokens/)
+- [Estándares de tokens](/desarrolladores/documentos/estándares/tokens/)
## Cuerpo {#body}
-El ERC-721 (Ethereum Request for Comments 721), propuesto por William Entriken, Dieter Shirley, Jacob Evans, Nastassia Sachs en enero de 2018, es un Estándar de Token No Fungible que implementa una API para tokens dentro de Smart Contracts.
+El ERC-721 (Ethereum Request for Comments 721), propuesto por William Entriken, Dieter Shirley, Jacob Evans,
+Nastassia Sachs en enero de 2018, es un Estándar de Token No Fungible que implementa una API para tokens dentro de Smart Contracts.
-Proporciona funcionalidades como transferir tokens de una cuenta a otra, para obtener el saldo actual del token de una cuenta y además del suministro total del token disponible en la red. Además de estos también tiene otras funcionalidades como aprobar que una cantidad de token de una cuenta puede ser gastada por una cuenta de terceros.
+Proporciona funcionalidades como transferir tokens de una cuenta a otra, obtener el saldo de tokens actual de una
+cuenta, obtener el propietario de un token específico y también el suministro total del token disponible en la red.
+Además de estos también tiene otras funcionalidades
+como aprobar que una cantidad de token de una cuenta puede ser gastada por una cuenta de terceros.
Si un contrato inteligente implementa los siguientes métodos y eventos, se puede llamar un Contrato de Token ERC-721, y una vez desplegado será el responsable de llevar un seguimiento de los tokens creados en Ethereum.
@@ -56,11 +67,13 @@ De [EIP-721](https://eips.ethereum.org/EIPS/eip-721):
### Ejemplos {#web3py-example}
-Vamos a ver la importancia de un estándar para que inspeccionemos fácilmente cualquier contrato de token de ERC-721 en Ethereum. Sólo necesitamos la Interfaz binaria de aplicaciones de contrato (ABI) para crear una interfaz a cualquier Token ERC-721. Como puedes ver a continuación, usaremos un ABI simplificado, para que sea un ejemplo de fricción baja.
+Vamos a ver la importancia de un estándar para que inspeccionemos fácilmente cualquier contrato de token de ERC-721 en Ethereum.
+Sólo necesitamos la Interfaz binaria de aplicaciones de contrato (ABI) para crear una interfaz a cualquier Token ERC-721. Como puedes
+ver a continuación, usaremos una ABI simplificada, para que sea un ejemplo de fricción bajo.
#### Ejemplo de Web3.py {#web3py-example}
-Primero asegúrate de haber instalado [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation) Python library:
+Primero, asegúrese de que ha instalado la librería de Python [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation):
```
pip install web3
@@ -73,12 +86,12 @@ from web3._utils.events import get_event_data
w3 = Web3(Web3.HTTPProvider("https://cloudflare-eth.com"))
-ck_token_addr = "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d" # CryptoKitties Contract
+ck_token_addr = "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d" # Contrato de CryptoKitties
-acc_address = "0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C" # CryptoKitties Sales Auction
+acc_address = "0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C" # Subasta de ventas de CryptoKitties
-# This is a simplified Contract Application Binary Interface (ABI) of an ERC-721 NFT Contract.
-# It will expose only the methods: balanceOf(address), name(), ownerOf(tokenId), symbol(), totalSupply()
+# Esta es una Interfaz Binaria de Aplicación (ABI) de Contrato simplificada de un Contrato NFT ERC-721.
+# Expondrá solo los métodos: balanceOf(address), name(), ownerOf(tokenId), symbol(), totalSupply()
simplified_abi = [
{
'inputs': [{'internalType': 'address', 'name': 'owner', 'type': 'address'}],
@@ -131,12 +144,12 @@ ck_contract = w3.eth.contract(address=w3.to_checksum_address(ck_token_addr), abi
name = ck_contract.functions.name().call()
symbol = ck_contract.functions.symbol().call()
kitties_auctions = ck_contract.functions.balanceOf(acc_address).call()
-print(f"{name} [{symbol}] NFTs in Auctions: {kitties_auctions}")
+print(f"{name} [{symbol}] NFT en subastas: {kitties_auctions}")
pregnant_kitties = ck_contract.functions.pregnantKitties().call()
-print(f"{name} [{symbol}] NFTs Pregnants: {pregnant_kitties}")
+print(f"{name} [{symbol}] NFT preñados: {pregnant_kitties}")
-# Using the Transfer Event ABI to get info about transferred Kitties.
+# Usando el ABI del evento de transferencia para obtener información sobre los Kitties transferidos.
tx_event_abi = {
'anonymous': False,
'inputs': [
@@ -147,7 +160,7 @@ tx_event_abi = {
'type': 'event'
}
-# We need the event's signature to filter the logs
+# Necesitamos la firma del evento para filtrar los registros
event_signature = w3.keccak(text="Transfer(address,address,uint256)").hex()
logs = w3.eth.get_logs({
@@ -156,25 +169,25 @@ logs = w3.eth.get_logs({
"topics": [event_signature]
})
-# Notes:
-# - Increase the number of blocks up from 120 if no Transfer event is returned.
-# - If you didn't find any Transfer event you can also try to get a tokenId at:
+# Notas:
+# - Aumente el número de bloques a partir de 120 si no se devuelve ningún evento de Transferencia.
+# - Si no encontró ningún evento de Transferencia, también puede intentar obtener un tokenId en:
# https://etherscan.io/address/0x06012c8cf97BEaD5deAe237070F9587f8E7A266d#events
-# Click to expand the event's logs and copy its "tokenId" argument
+# Haga clic para expandir los registros del evento y copie su argumento "tokenId"
recent_tx = [get_event_data(w3.codec, tx_event_abi, log)["args"] for log in logs]
if recent_tx:
- kitty_id = recent_tx[0]['tokenId'] # Paste the "tokenId" here from the link above
+ kitty_id = recent_tx[0]['tokenId'] # Pegue el "tokenId" aquí desde el enlace de arriba
is_pregnant = ck_contract.functions.isPregnant(kitty_id).call()
- print(f"{name} [{symbol}] NFTs {kitty_id} is pregnant: {is_pregnant}")
+ print(f"El NFT {name} [{symbol}] {kitty_id} está preñado: {is_pregnant}")
```
El contrato de CryptoKitties tiene algunos eventos interesantes aparte de los estándar.
-Revisemos dos de ellos, `Embarazada` y `Nacimiento`.
+Revisemos dos de ellos, `Pregnant` y `Birth`.
```python
-# Usar la ABI de eventos de Embarazada y Nacimiento para obtener información sobre nuevos gatitos.
+# Usando los ABI de los eventos Pregnant y Birth para obtener información sobre los nuevos Kitties.
ck_extra_events_abi = [
{
'anonymous': False,
@@ -198,13 +211,13 @@ ck_extra_events_abi = [
'type': 'event'
}]
-# We need the event's signature to filter the logs
+# Necesitamos la firma del evento para filtrar los registros
ck_event_signatures = [
w3.keccak(text="Pregnant(address,uint256,uint256,uint256)").hex(),
w3.keccak(text="Birth(address,uint256,uint256,uint256,uint256)").hex(),
]
-# Here is a Pregnant Event:
+# Aquí hay un evento Pregnant:
# - https://etherscan.io/tx/0xc97eb514a41004acc447ac9d0d6a27ea6da305ac8b877dff37e49db42e1f8cef#eventlog
pregnant_logs = w3.eth.get_logs({
"fromBlock": w3.eth.block_number - 120,
@@ -214,7 +227,7 @@ pregnant_logs = w3.eth.get_logs({
recent_pregnants = [get_event_data(w3.codec, ck_extra_events_abi[0], log)["args"] for log in pregnant_logs]
-# Here is a Birth Event:
+# Aquí hay un evento Birth:
# - https://etherscan.io/tx/0x3978028e08a25bb4c44f7877eb3573b9644309c044bf087e335397f16356340a
birth_logs = w3.eth.get_logs({
"fromBlock": w3.eth.block_number - 120,
@@ -227,18 +240,24 @@ recent_births = [get_event_data(w3.codec, ck_extra_events_abi[1], log)["args"] f
## NFT populares {#popular-nfts}
-- [Etherscan NFT Tracker](https://etherscan.io/tokens-nft) enumera los principales NFT en Ethereum por volumen de transferencias.
-- [CryptoKitties](https://www.cryptokitties.co/) es un juego centrado en criables, coleccionables y tan adorables criaturas que llamamos CryptoKitties.
-- [Sorare](https://sorare.com/) es un juego de fútbol de fantasía global en el que puedes coleccionar coleccionables de ediciones limitadas, gestiona tus equipos y compite para ganar premios.
-- [Ethereum Name Service (ENS)](https://ens.domains/) ofrece un Nombre en forma descentralizada de abordar los recursos tanto dentro y fuera de la cadena de bloques utilizando nombres sencillos y legibles por humanos.
-- [POAP](https://poap.xyz) entrega NFT gratis a las personas que asisten a eventos o completan acciones específicas. Los POAP se pueden crear y distribuir de forma gratuita.
-- [Unstoppable Domains](https://unstoppabledomains.com/) es una empresa con sede en San Francisco que crea dominios en cadenas de bloques. Los dominios de cadena de bloques reemplazan las direcciones de criptomonedas por nombres legibles por humanos y se pueden usar para habilitar sitios web resistentes a la censura.
-- [Tarjetas de Gods Unchained:](https://godsunchained.com/) TCG en la cadena de bloques de Ethereum que utiliza NFT para otorgar propiedad real en los activos del juego.
-- [Bored Ape Yacht Club](https://boredapeyachtclub.com) es una colección de 10.000 NFT únicos que, además de ser obras de arte de probada rareza, actúa como token de membresía del club, lo que proporciona ventajas y beneficios a los miembros que aumentan con el tiempo como resultado de los esfuerzos de la comunidad.
-
-## Leer más {#further-reading}
-
-- [EIP-721: ERC-721 Estándar de token no fungible](https://eips.ethereum.org/EIPS/eip-721)
-- [OpenZeppelin: Documentos de ERC-721](https://docs.openzeppelin.com/contracts/3.x/erc721)
-- [OpenZeppelin: Implementación de ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol)
-- [API de NFT de Alchemy](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api)
+- [Etherscan NFT Tracker](https://etherscan.io/nft-top-contracts) enumera los principales NFT de Ethereum por volumen de transferencias.
+- [CryptoKitties](https://www.cryptokitties.co/) es un juego centrado en criaturas criables, coleccionables y muy adorables
+ que llamamos CryptoKitties.
+- [Sorare](https://sorare.com/) es un juego de fútbol de fantasía global en el que puedes coleccionar coleccionables de edición limitada,
+ gestionar tus equipos y competir para ganar premios.
+- [El Servicio de nombres de Ethereum (ENS)](https://ens.domains/) ofrece una forma segura y descentralizada de direccionar recursos tanto
+ dentro como fuera de la cadena de bloques, utilizando nombres sencillos y legibles por humanos.
+- [POAP](https://poap.xyz) entrega NFT gratuitos a las personas que asisten a eventos o completan acciones específicas. Los POAP se pueden crear y distribuir de forma gratuita.
+- [Unstoppable Domains](https://unstoppabledomains.com/) es una empresa con sede en San Francisco que crea dominios en
+ cadenas de bloques. Los dominios de cadena de bloques reemplazan las direcciones de criptomoneda con nombres legibles por humanos y se pueden utilizar para habilitar
+ sitios web resistentes a la censura.
+- [Gods Unchained Cards](https://godsunchained.com/) es un TCG en la cadena de bloques de Ethereum que utiliza NFT para otorgar propiedad real
+ a los activos del juego.
+- [Bored Ape Yacht Club](https://boredapeyachtclub.com) es una colección de 10.000 NFT únicos que, además de ser una obra de arte de rareza demostrable, actúa como un token de membresía para el club, proporcionando ventajas y beneficios para los miembros que aumentan con el tiempo como resultado de los esfuerzos de la comunidad.
+
+## Lecturas adicionales {#further-reading}
+
+- [EIP-721: Estándar de token no fungible ERC-721](https://eips.ethereum.org/EIPS/eip-721)
+- [OpenZeppelin - Documentación de ERC-721](https://docs.openzeppelin.com/contracts/3.x/erc721)
+- [OpenZeppelin - Implementación de ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol)
+- [API de NFT de Alchemy](https://www.alchemy.com/docs/reference/nft-api-quickstart)
From 61f8a91f5f64ac405c8c5e0de9d31b3b571e8edc Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:55 -0300
Subject: [PATCH 265/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pow/index.md
---
.../docs/consensus-mechanisms/pow/index.md | 56 +++++++++----------
1 file changed, 28 insertions(+), 28 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/index.md
index c715e2fea4d..979cbeb1047 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/index.md
@@ -4,42 +4,42 @@ description: Una explicación del protocolo de consenso de la prueba de trabajo
lang: es
---
-La red Ethereum comenzó utilizando un mecanismo de consenso que implica una**[prueba de trabajo (o PoW, por sus siglas en inglés)](/developers/docs/consensus-mechanisms/pow)**. Esto permite a la red de Ethereum ponerse de acuerdo sobre el estado de toda la información registrada en la cadena de bloques de Ethereum y prevenir ciertos tipos de ataques económicos. Sin embargo, Ethereum se desconectó de la prueba de trabajo en 2022 y empezó a usar la [prueba de participación](/developers/docs/consensus-mechanisms/pos) en su lugar.
+La red de Ethereum comenzó utilizando un mecanismo de consenso que implicaba la **[prueba de trabajo (PoW)](/developers/docs/consensus-mechanisms/pow)**. Esto permite a la red de Ethereum ponerse de acuerdo sobre el estado de toda la información registrada en la cadena de bloques de Ethereum y prevenir ciertos tipos de ataques económicos. Sin embargo, Ethereum desactivó la prueba de trabajo en 2022 y comenzó a usar la [prueba de participación](/developers/docs/consensus-mechanisms/pos) en su lugar.
- La prueba de trabajo ha quedado obsoleta. Ethereum ya no utiliza la prueba de trabajo como parte de su mecanismo de consenso. En su lugar, utiliza la prueba de participación. Descubra más cosas sobre la [prueba de participación](/developers/docs/consensus-mechanisms/pos/) y la [participación](/staking/).
+ La prueba de trabajo ha quedado obsoleta. Ethereum ya no utiliza la prueba de trabajo como parte de su mecanismo de consenso. En su lugar, utiliza la prueba de participación. Profundice sobre la [prueba de participación](/developers/docs/consensus-mechanisms/pos/) y [participación](/staking/).
## Requisitos previos {#prerequisites}
-Para comprender mejor esta página, le recomendamos que en primer lugar se informe sobre las [transacciones](/developers/docs/transactions/), los [bloques](/developers/docs/blocks/) y los [mecanismos de consenso](/developers/docs/consensus-mechanisms/).
+Para un mejor entendimiento de esta página, le recomendamos leer primero [transacciones](/developers/docs/transactions/), [bloques](/developers/docs/blocks/) y [mecanismos de consenso](/developers/docs/consensus-mechanisms/).
## ¿Qué es la prueba de trabajo (PoW)? {#what-is-pow}
-El consenso Nakamoto, que utiliza la prueba de trabajo, es el mecanismo que una vez permitió que la red descentralizada Ethereum llegara a un consenso (es decir, que todos los nodos estuvieran de acuerdo) en asuntos como los saldos de cuentas y el orden de las transacciones. De esta manera, se evita que los usuarios realicen un «doble gasto» de sus monedas y se garantiza que resulte muy difícil atacar o manipular la cadena Ethereum. Estas propiedades de seguridad ahora provienen de la prueba de particpación en su lugar utilizando el mecanismo de consenso conocido como [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/).
+El consenso de Nakamoto, que utiliza la prueba de trabajo, es el mecanismo que en su día permitió a la red descentralizada de Ethereum llegar a un consenso (es decir, que todos los nodos estén de acuerdo) en aspectos como los saldos de las cuentas y el orden de las transacciones. De esta manera, se evita que los usuarios realicen un «doble gasto» de sus monedas y se garantiza que resulte muy difícil atacar o manipular la cadena Ethereum. Ahora, estas propiedades de seguridad provienen de la prueba de participación, que utiliza el mecanismo de consenso conocido como [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/).
-## La Prueba de trabajo y la minería {#pow-and-mining}
+## Prueba de trabajo y minería {#pow-and-mining}
-La prueba de trabajo es el algoritmo subyacente que establece la dificultad y las reglas para el trabajo que realizan los mineros. Entendemos como minería el "trabajo" en sí mismo. Es el acto de añadir bloques válidos a la cadena. Esto es importante, porque la longitud de la cadena ayuda a la red a seguir la bifurcación correcta de la cadena de bloques. Cuanto más «trabajo» se haga; cuanto más larga será la cadena; y cuanto mayor sea la cantidad de bloques, mayor será la seguridad con que la red podrá adaptarse al estado actual de las cosas.
+La prueba de trabajo es el algoritmo subyacente que establece la dificultad y las reglas para el trabajo que realizan los mineros. Entendemos como minado el «trabajo» en sí mismo. Es el acto de añadir bloques válidos a la cadena. Esto es importante, porque la longitud de la cadena ayuda a la red a seguir la bifurcación correcta de la cadena de bloques. Cuanto más «trabajo» se haga; cuanto más larga será la cadena; y cuanto mayor sea la cantidad de bloques, mayor será la seguridad con que la red podrá adaptarse al estado actual de las cosas.
-[Más información sobre la minería](/developers/docs/consensus-mechanisms/pow/mining/)
+[Más sobre la minería](/developers/docs/consensus-mechanisms/pow/mining/)
## ¿Cómo funciona la prueba de trabajo de Ethereum? {#how-it-works}
Las transacciones de Ethereum se procesan en bloques. En la prueba de trabajo de Ethereum que en la actualidad se considera obsoleta, cada bloque contenía:
- Dificultad del bloque: p. ej., 3,324,092,183,262,715
-- mixHash: p. ej.: `0x44bca881b07a6a09f83b130798072441705d9a665c5ac8bdf2f39a3cdf3bee29`
-- nonce: p. ej., `0xd3ee432b4fb3d26b`
+- mixHash – por ejemplo: `0x44bca881b07a6a09f83b130798072441705d9a665c5ac8bdf2f39a3cdf3bee29`
+- nonce – por ejemplo: `0xd3ee432b4fb3d26b`
Los datos de este bloque estaban directamente relacionados con la prueba de trabajo.
-### El trabajo durante la Prueba de trabajo {#the-work}
+### El trabajo en la prueba de trabajo {#the-work}
El protocolo de prueba de trabajo, conocido como Ethash, requería que los mineros atraviesen una intensa carrera de prueba y error para encontrar el nonce para un bloque. Únicamente los bloques con nonce válido podrán añadirse a la cadena.
@@ -49,7 +49,7 @@ La dificultad determina el objetivo del hash. Cuanto menor sea el objetivo, meno
La funcionalidad «hashing» hace que el fraude sea fácil de detectar. Sin embargo, la prueba de trabajo como proceso también dificulta en gran medida el ataque a la cadena.
-### La Prueba de trabajo y la seguridad {#security}
+### Prueba de trabajo y seguridad {#security}
A los mineros se les incentiva para realizar este trabajo en la cadena principal de Ethereum. Existen pocos incentivos para que un subconjunto de mineros comience su propia cadena, ya que debilita el sistema. Las cadenas de bloques dependen de tener un solo estado como fuente de verdad.
@@ -57,11 +57,11 @@ El objetivo de la prueba de trabajo es ampliar la cadena. La cadena más larga e
Para crear sistemáticamente bloques maliciosos pero que sean válidos, un minero malicioso habría necesitado más del 51 % del poder de la minería de la red para tener más control que todos los demás. Esa cantidad de «trabajo» requiere una gran cantidad de energía de computación costosa y la energía gastada podría incluso haber superado los beneficios obtenidos en un ataque.
-### La economía de la Prueba de trabajo {#economics}
+### Economía de la prueba de trabajo {#economics}
La prueba de trabajo también es responsable de la generación de nuevas monedas en el sistema e incentivar a que los mineros lleven a cabo el trabajo.
-Desde la actualización del [Constantinople](/ethereum-forks/#constantinople), los mineros que crearon con éxito un bloque fueron recompensados con dos ETH y parte de las comisiones de transacción. Los bloques de Ommer también compensaron 1,75 ETH. Los bloques de Ommer eran bloques válidos creados por un minero prácticamente al mismo tiempo que otro minero creó el bloque exacto, que fue determinado en última instancia por la cadena que se construyó sobre la parte superior de la primera. Los bloques Ommer suelen producirse debido a la latencia de la red.
+Desde la [actualización Constantinople](/ethereum-forks/#constantinople), los mineros que creaban un bloque con éxito eran recompensados con dos ETH recién acuñados y parte de las comisiones por transacción. Los bloques de Ommer también compensaron 1,75 ETH. Los bloques de Ommer eran bloques válidos creados por un minero prácticamente al mismo tiempo que otro minero creó el bloque exacto, que fue determinado en última instancia por la cadena que se construyó sobre la parte superior de la primera. Los bloques Ommer suelen producirse debido a la latencia de la red.
## Finalidad {#finality}
@@ -69,21 +69,21 @@ Una transacción tiene «finalidad» en Ethereum cuando forma parte de un bloque
Debido a que los mineros trabajan de forma descentralizada, es posible minar dos bloques válidos al mismo tiempo. Esto crea una bifurcación temporal. Con el tiempo, una de esas cadenas será aceptada una vez que el bloque subsecuente haya sido minado y añadido, haciéndola más grande.
-Pero, para enreversarlo todo un poco más, las transacciones rechazadas durante la bifurcación temporal podrían haberse incluido en la cadena aceptada. Esto significa que esa transacción se podría revertir. Con lo cual, la finalidad se refiere al tiempo que se debería esperar antes de considerar una transacción irreversible. Bajo la prueba de trabajo anterior de Ethereum, cuantos más bloques se minaron sobre un bloque específico `N`, mayor confianza existió de que las transacciones en `N` serían exitosas y no se revertirían. Ahora, con la prueba de participación, la finalización es una propiedad explícita ―más que probabilística― de un bloque.
+Pero, para enreversarlo todo un poco más, las transacciones rechazadas durante la bifurcación temporal podrían haberse incluido en la cadena aceptada. Esto significa que esa transacción se podría revertir. Con lo cual, la finalidad se refiere al tiempo que se debería esperar antes de considerar una transacción irreversible. En el Ethereum anterior con prueba de trabajo, cuantos más bloques se minaran sobre un bloque específico `N`, mayor era la confianza en que las transacciones en `N` se habían realizado correctamente y no se revertirían. Ahora, con la prueba de participación, la finalización es una propiedad explícita ―más que probabilística― de un bloque.
-## Consumo energético de la prueba de trabajo {#energy}
+## Uso de energía de la prueba de trabajo {#energy}
-Una de las críticas principales de la prueba de trabajo es la cantidad de energía que se necesita para mantener la seguridad de la red. Para mantener la seguridad y la descentralización, Ethereum en la prueba de trabajo consumía grandes cantidades de energía. Antes del cambio a la «prueba de participación», los mineros de Ethereum consumían colectivamente alrededor de 70 TWh/año (aproximadamente lo mismo que toda la Republica Checa, según [digiconomist](https://digiconomist.net/) el 18 de julio de 2022).
+Una de las críticas principales de la prueba de trabajo es la cantidad de energía que se necesita para mantener la seguridad de la red. Para mantener la seguridad y la descentralización, Ethereum en la prueba de trabajo consumía grandes cantidades de energía. Poco antes de cambiar a la prueba de participación, los mineros de Ethereum consumían colectivamente unos 70 TWh/año (aproximadamente lo mismo que la República Checa, según [digiconomist](https://digiconomist.net/) el 18 de julio de 2022).
## Ventajas y desventajas {#pros-and-cons}
-| Ventajas | Desventajas |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| La prueba de trabajo es neutral. No necesitas disponer de ETH para comenzar y las recompensas del bloque te permiten crecer de 0 ETH a un saldo positivo. Con la [prueba de participación](/developers/docs/consensus-mechanisms/pos/), se necesita ETH para empezar. | La prueba de trabajo consume tanta energía que es perjudicial para el medio ambiente. |
-| La prueba de trabajo es un mecanismo de consenso aprobado y probado que ha mantenido la seguridad y la descentralización de Bitcoin y Ethereum durante muchos años. | Si quieres minar, necesitas un equipo tan especializado que es una gran inversión para empezar. |
-| Comparado con la Prueba de participación es relativamente fácil de implementar. | Debido al aumento de los cálculos necesarios, las piscinas (pools) de minería podrían dominar potencialmente el juego minero, lo que conduciría a la centralización y a riesgos de seguridad. |
+| Pros | Contras |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| La prueba de trabajo es neutral. No necesitas disponer de ETH para comenzar y las recompensas del bloque te permiten crecer de 0 ETH a un saldo positivo. Con la [prueba de participación](/developers/docs/consensus-mechanisms/pos/), se necesita ETH para empezar. | La prueba de trabajo consume tanta energía que es perjudicial para el medio ambiente. |
+| La prueba de trabajo es un mecanismo de consenso aprobado y probado que ha mantenido la seguridad y la descentralización de Bitcoin y Ethereum durante muchos años. | Si quiere minar, necesita un equipo tan especializado que empezar supone una gran inversión. |
+| Comparado con la Prueba de participación es relativamente fácil de implementar. | Debido al aumento de los cálculos necesarios, las piscinas (pools) de minería podrían dominar potencialmente el juego minero, lo que conduciría a la centralización y a riesgos de seguridad. |
-## Comparación con la prueba de participación (PoS, por sus siglas en inglés) {#compared-to-pos}
+## En comparación con la prueba de participación {#compared-to-pos}
A un alto nivel, la prueba de participación tiene el mismo objetivo final que la prueba de trabajo: ayudar a la red descentralizada a alcanzar un consenso de forma segura. Pero tiene algunas diferencias en el proceso y el personal:
@@ -92,18 +92,18 @@ A un alto nivel, la prueba de participación tiene el mismo objetivo final que l
- Los validadores no compiten para crear bloques, sino que son elegidos al azar por un algoritmo.
- La finalidad es más clara: en ciertos puntos de control, si dos tercios de los validadores acuerdan el estado del bloque, se considera definitivo. Los validadores deben apostar toda su apuesta por esto, así que si intentan confabular, perderán toda su apuesta.
-[Más información sobre la prueba de participación](/developers/docs/consensus-mechanisms/pos/)
+[Más sobre la prueba de participación](/developers/docs/consensus-mechanisms/pos/)
-## ¿Es usted una persona que aprende de manera visual? {#visual-learner}
+## ¿Retiene usted mejor las cosas cuando las ve? {#visual-learner}
-## Más información {#further-reading}
+## Lecturas recomendadas {#further-reading}
-- [Ataque mayoritario](https://en.bitcoin.it/wiki/Majority_attack)
-- [En la finalidad del acuerdo](https://blog.ethereum.org/2016/05/09/on-settlement-finality/)
+- [Ataque de mayoría](https://en.bitcoin.it/wiki/Majority_attack)
+- [Sobre la finalidad de la liquidación](https://blog.ethereum.org/2016/05/09/on-settlement-finality/)
-### Vídeos {#videos}
+### Videos {#videos}
- [Una explicación técnica de los protocolos de prueba de trabajo](https://youtu.be/9V1bipPkCTU)
From a1075e6b11b47134c4ea4075b35af20cc376acb7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:57 -0300
Subject: [PATCH 266/589] update(i18n):
public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md
---
.../index.md | 25 +++++++++----------
1 file changed, 12 insertions(+), 13 deletions(-)
diff --git a/public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md b/public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md
index 550b622ba11..7e46bafa927 100644
--- a/public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md
+++ b/public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md
@@ -1,27 +1,26 @@
---
-title: Cómo "crear" una cuenta de Ethereum
+title: Cómo «crear» una cuenta de Ethereum
description: Guía paso a paso sobre la creación de una cuenta de Ethereum utilizando una billetera.
lang: es
---
# Cómo crear una cuenta de Ethereum
-**Cualquiera puede crear una cuenta de Ethereum de forma gratuita. ** Solo tiene que instalar una aplicación de billetera cripto. Las billeteras digitales crean y administran su cuenta de Ethereum. Permiten enviar transacciones, comprobar sus saldos y conectarlo a otras aplicaciones creadas en Ethereum.
+**Cualquiera puede crear una cuenta de Ethereum de forma gratuita.** Solo tiene que instalar una aplicación de billetera de criptomonedas. Las billeteras digitales crean y administran su cuenta de Ethereum. Permiten enviar transacciones, comprobar sus saldos y conectarlo a otras aplicaciones creadas en Ethereum.
-Con una billetera también puede instantáneamente iniciar sesión en cualquier plataforma de intercambio de tokens, juegos o mercados de [NFT](/glossary/#nft). No hay necesidad de registro individual; se comparte una cuenta para todas las aplicaciones construidas en Ethereum.
+Con una billetera, también puede iniciar sesión al instante en cualquier plataforma de intercambio de tokens, juegos y mercados de [NFT](/glossary/#nft). No hay necesidad de registro individual; se comparte una cuenta para todas las aplicaciones construidas en Ethereum.
## Paso 1: Elija una billetera
Una cartera es una aplicación que te ayuda a gestionar tu cuenta de Ethereum. Hay docenas de billeteras diferentes para elegir: móviles, de escritorio o incluso extensiones de navegador.
-
- Lista de carteras
+ Lista de billeteras
Si es nuevo, puede seleccionar el filtro «Nuevo en cripto» en la página «encontrar una cartera» para identificar las carteras que deben incluir todas las características necesarias adecuadas para principiantes.
-
+
También hay otros filtros de perfil para satisfacer sus necesidades. Estos son ejemplos de carteras de uso común: debería de hacer su propia investigación antes de confiar en cualquier software.
@@ -31,7 +30,7 @@ Una vez que haya decidido una cartera específica, visite su sitio web oficial o
## Paso 3: Abra la aplicación y cree su cuenta de Ethereum
-La primera vez que abra su nueva cartera, es posible que se le pida que elija entre crear una nueva cuenta o importar una existente. Haga clic en «crear una nueva cuenta». **Este es el paso durante el cual el software de la billetera genera su cuenta de Ethereum. **
+La primera vez que abra su nueva cartera, es posible que se le pida que elija entre crear una nueva cuenta o importar una existente. Haga clic en «crear una nueva cuenta». **Este es el paso durante el cual el software de la billetera genera su cuenta de Ethereum.**
## Paso 4: Guarde su frase de recuperación
@@ -43,15 +42,15 @@ Algunas aplicaciones le pedirán que guarde una "frase de recuperación" secreta
-
¿Billetera instalada? Aprenda a usarla.
+
¿Billetera instalada? Aprenda a usarla.
- Cómo utilizar una cartera
+ Cómo usar una billetera
-
+
-¿Interesado en otras guías? Eche un vistazo a nuestras [Guías paso a paso](/guides/).
+¿Interesado en otras guías? Consulte nuestras: [Guías paso a paso](/guides/)
## Preguntas más frecuentes
@@ -61,11 +60,11 @@ No. La cartera es una herramienta de gestión que le ayuda a gestionar cuentas.
### ¿Puedo enviar bitcoin a una dirección de Ethereum o ether a una dirección de bitcoin?
-No, no puede. Bitcoin y ether existen en dos redes separadas (es decir, cadenas de bloques diferentes), cada una con sus propios formatos de contabilidad y dirección. Ha habido varios intentos de unir las dos redes diferentes, de las cuales la más activa actualmente es [Wrapped Bitcoin o WBTC](https://www.bitcoin.com/get-started/what-is-wbtc/). Esto no es un aval, ya que WBTC es una solución de custodia (es decir, un solo grupo de personas controla ciertas funciones críticas) y se proporciona aquí sólo para propósitos informativos.
+No, no puede. Bitcoin y ether existen en dos redes separadas (es decir, cadenas de bloques diferentes), cada una con sus propios formatos de contabilidad y dirección. Ha habido varios intentos de unir las dos redes diferentes, de los cuales el más activo actualmente es [Wrapped Bitcoin o WBTC](https://www.bitcoin.com/get-started/what-is-wbtc/). Esto no es un aval, ya que WBTC es una solución de custodia (es decir, un solo grupo de personas controla ciertas funciones críticas) y se proporciona aquí sólo para propósitos informativos.
### Si tengo una dirección de ETH, ¿tengo la misma dirección en otras cadenas de bloques?
-Puede usar la misma [dirección](/glossary/#address) en todas las cadenas de bloques que utilicen software subyacente similar a Ethereum (conocido como "compatible con EVM"). Esta [lista](https://chainlist.org/) le mostrará qué csdenas de bloques puede usar con la misma dirección. Algunas cadenas de bloques, como Bitcoin, implementan un conjunto de reglas de red completamente por separado y necesitará una dirección diferente con un formato diferente. Si tiene una billetera de contrato inteligente, debe consultar el sitio web de su producto para obtener más información sobre qué cadenas de bloques son compatibles, ya que generalmente estas tienen un alcance limitado pero más seguro.
+Puede usar la misma [dirección](/glossary/#address) en todas las cadenas de bloques que utilizan un software subyacente similar al de Ethereum (conocido como «compatible con EVM»). Esta [lista](https://chainlist.org/) te mostrará qué cadenas de bloques puedes usar con la misma dirección. Algunas cadenas de bloques, como Bitcoin, implementan un conjunto de reglas de red completamente por separado y necesitará una dirección diferente con un formato diferente. Si tiene una billetera de contrato inteligente, debe consultar el sitio web de su producto para obtener más información sobre qué cadenas de bloques son compatibles, ya que generalmente estas tienen un alcance limitado pero más seguro.
### ¿Tener mi propia cartera es más seguro que mantener mis fondos en una casa de cambio?
From 0ab4f1c3e08b19d984b638f280c5854fc3b992ab Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:58 -0300
Subject: [PATCH 267/589] update(i18n):
public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md
---
.../docs/standards/tokens/erc-4626/index.md | 58 ++++++++++++-------
1 file changed, 37 insertions(+), 21 deletions(-)
diff --git a/public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md b/public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md
index cc576edddac..e298d8c1ddb 100644
--- a/public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md
+++ b/public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md
@@ -14,11 +14,27 @@ Los mercados de préstamos, los agregadores y los tokens que intrínsecamente da
ERC-4626 en bóvedas de rendimiento reducirá el esfuerzo de integración y desbloqueará el acceso al rendimiento en varias aplicaciones con poco esfuerzo especializado de los desarrolladores gracias a la creación de patrones de implementación más consistentes y robustos.
-El token ERC-4626 se describe en detalle en [EIP-4626](https://eips.ethereum.org/EIPS/eip-4626).
+El token ERC-4626 se describe en su totalidad en [EIP-4626](https://eips.ethereum.org/EIPS/eip-4626).
-## Prerrequisitos {#prerequisites}
+**Extensión de bóvedas asíncronas (ERC-7540)**
-Para comprender mejor esta página, recomendamos leer primero sobre [estándares de token](/developers/docs/standards/tokens/) y [ERC-20](/developers/docs/standards/tokens/erc-20/).
+ERC-4626 está optimizado para depósitos y reembolsos atómicos hasta cierto límite. Si se alcanza el límite, no se podrán enviar nuevos depósitos ni reembolsos. Esta limitación no funciona bien para ningún sistema de contrato inteligente con acciones asíncronas o retrasos como prerrequisito para interactuar con la Bóveda (p. ej., protocolos de activos del mundo real, protocolos de préstamos subcolateralizados, protocolos de préstamos entre cadenas, tokens de staking líquido o módulos de seguridad de seguros).
+
+ERC-7540 amplía la utilidad de las bóvedas ERC-4626 para casos de uso asíncronos. La interfaz de la bóveda existente (`deposit`/`withdraw`/`mint`/`redeem`) se utiliza en su totalidad para reclamar solicitudes asíncronas.
+
+La extensión ERC-7540 se describe en su totalidad en [ERC-7540](https://eips.ethereum.org/EIPS/eip-7540).
+
+**Extensión de bóveda multiactivos (ERC-7575)**
+
+Un caso de uso faltante que no es compatible con ERC-4626 son las bóvedas que tienen múltiples activos o puntos de entrada, como los tókenes de proveedores de liquidez (LP). Estos suelen ser difíciles de manejar o no cumplen con los requisitos, debido a la exigencia de que ERC-4626 sea un ERC-20.
+
+ERC-7575 agrega soporte para bóvedas con múltiples activos al externalizar la implementación del token ERC-20 de la implementación de ERC-4626.
+
+La extensión ERC-7575 se describe en su totalidad en [ERC-7575](https://eips.ethereum.org/EIPS/eip-7575).
+
+## Requisitos previos {#prerequisites}
+
+Para comprender mejor esta página, le recomendamos que primero lea sobre los [estándares de tokens](/developers/docs/standards/tokens/) y [ERC-20](/developers/docs/standards/tokens/erc-20/).
## Funciones y características de ERC-4626: {#body}
@@ -46,7 +62,7 @@ Esta función devuelve la cantidad total de activos subyacentes que se poseen en
function convertToShares(uint256 assets) public view returns (uint256 shares)
```
-Esta función devuelve la cantidad de `shares` (acciones) que serían intercambiadas por la bóveda por la cantidad de `assets` (activos) proporcionados.
+Esta función devuelve la cantidad de `shares` que la bóveda intercambiaría por la cantidad de `assets` proporcionada.
#### convertToAssets {#convertoassets}
@@ -54,7 +70,7 @@ Esta función devuelve la cantidad de `shares` (acciones) que serían intercambi
function convertToAssets(uint256 shares) public view returns (uint256 assets)
```
-Esta función devuelve la cantidad de `assets` que serían intercambiados por la bóveda por la cantidad de `shares` proporcionadas.
+Esta función devuelve la cantidad de `assets` que la bóveda intercambiaría por la cantidad de `shares` proporcionada.
#### maxDeposit {#maxdeposit}
@@ -62,7 +78,7 @@ Esta función devuelve la cantidad de `assets` que serían intercambiados por la
función maxDeposit(receptor de dirección) retornos de vista pública (uint256 maxAssets)
```
-Esta función devuelve la cantidad máxima de activos subyacentes que pueden depositarse en una sola llamada de depósito ([`deposit`](#deposit)) por parte del `receiver` (receptor).
+Esta función devuelve la cantidad máxima de activos subyacentes que se pueden depositar en una única llamada a [`deposit`](#deposit), con los shares acuñados para el `receiver`.
#### previewDeposit {#previewdeposit}
@@ -78,7 +94,7 @@ Esta función permite a los usuarios simular los efectos de su depósito en el b
function deposit(uint256 assets, address receiver) public returns (uint256 shares)
```
-Esta función deposita `assets` de los tokens subyacentes en la bóveda y otorga la propiedad de acciones (`shares`) al receptor (`receiver`).
+Esta función deposita `assets` de tokens subyacentes en la bóveda y otorga la propiedad de `shares` al `receiver`.
#### maxMint {#maxmint}
@@ -86,7 +102,7 @@ Esta función deposita `assets` de los tokens subyacentes en la bóveda y otorga
función maxMint (receptor de dirección) devoluciones de vista pública (uint256 maxShares)
```
-Esta función devuelve la cantidad máxima de acciones que pueden mintearse en una sola llamada de [`mint`](#mint) (minteo) por parte del receptor (`receiver`).
+Esta función devuelve la cantidad máxima de shares que se pueden acuñar en una única llamada a [`mint`](#mint), con los shares acuñados para el `receiver`.
#### previewMint {#previewmint}
@@ -102,7 +118,7 @@ Esta función permite a los usuarios simular los efectos de su minteo en el bloq
function mint(uint256 shares, address receiver) public returns (uint256 assets)
```
-Esta función mintea exactamente `shares` acciones de la bóveda al `receiver` depositando `assets` de los tokens subyacentes.
+Esta función acuña exactamente `shares` de la bóveda para el `receiver` depositando `assets` de tokens subyacentes.
#### maxWithdraw {#maxwithdraw}
@@ -110,7 +126,7 @@ Esta función mintea exactamente `shares` acciones de la bóveda al `receiver` d
función maxWithdraw (propietario de la dirección) devuelve la vista pública (uint256 maxAssets)
```
-Esta función devuelve la cantidad máxima de activos subyacentes que se pueden retirar del saldo del propietario (`owner`) con una única llamada a [`withdraw`](#withdraw) (retiro).
+Esta función devuelve la cantidad máxima de activos subyacentes que se pueden retirar del saldo del `owner` con una única llamada a [`withdraw`](#withdraw).
#### previewWithdraw {#previewwithdraw}
@@ -126,7 +142,7 @@ Esta función permite a los usuarios simular los efectos de su retiro en el bloq
function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)
```
-Esta función quema `shares` del `owner` y envía exactamente `assets` token de la bóveda al `receiver`.
+Esta función quema `shares` del `owner` y envía exactamente la cantidad `assets` del token desde la bóveda al `receiver`.
#### maxRedeem {#maxredeem}
@@ -134,7 +150,7 @@ Esta función quema `shares` del `owner` y envía exactamente `assets` token de
función maxRedeem (propietario de la dirección) retornos de vista pública (uint256 maxShares)
```
-Esta funcion retorna la cantidad máxima de acciones que pueden ser reclamadas del saldo del `owner` a traves de una llamada a [`redeem`](#redeem) (canjeo o reclamo).
+Esta función devuelve la cantidad máxima de shares que se pueden canjear del saldo del `owner` a través de una llamada a [`redeem`](#redeem).
#### previewRedeem {#previewredeem}
@@ -150,7 +166,7 @@ Esta función permite a los usuarios simular el efecto de su canjeo en el bloque
function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)
```
-Esta función canjea un número específico de `shares` del `owner` y envía `assets` del token subyacente de la bóveda al `receiver`.
+Esta función canjea un número específico de `shares` del `owner` y envía `assets` del token subyacente desde la bóveda al `receiver`.
#### totalSupply {#totalsupply}
@@ -166,7 +182,7 @@ Devuelve el número total de acciones no canjeadas de la bóveda en circulación
function balanceOf(address owner) public view returns (uint256)
```
-Devuelve la cantidad total de acciones de la bóveda que el `owner` tiene actualmente.
+Devuelve la cantidad total de shares de la bóveda que el `owner` tiene actualmente.
### Mapa de la interfaz {#mapOfTheInterface}
@@ -176,7 +192,7 @@ Devuelve la cantidad total de acciones de la bóveda que el `owner` tiene actual
#### Evento de depósito
-**DEBE** ser emitido cuando se depositan tokens en la bóveda mediante los métodos [`mint`](#mint) y [`deposit`](#deposit)
+**DEBE** emitirse cuando se depositan tokens en la bóveda a través de los métodos [`mint`](#mint) y [`deposit`](#deposit).
```solidity
event Deposit(
@@ -187,11 +203,11 @@ event Deposit(
)
```
-Donde `sender` es el usuario que intercambió `assets` por `shares` y transfirió esas `shares` al `owner`.
+Donde `sender` es el usuario que intercambió `assets` por `shares`, y transfirió esos `shares` al `owner`.
#### Evento de retiro
-**DEBE** ser emitido cuando un depositante retira acciones de la bóveda con los métodos [`redeem`](#redeem) o [`withdraw`](#withdraw).
+**DEBE** emitirse cuando un depositante retira shares de la bóveda en los métodos [`redeem`](#redeem) o [`withdraw`](#withdraw).
```solidity
event Withdraw(
@@ -203,9 +219,9 @@ event Withdraw(
)
```
-Donde `sender` es el usuario que desencadenó el retiro e intercambió `shares`, en posesión de `owner`, por `assets`. `receiver` es el usuario que recibió los `assets` retirados.
+Donde `sender` es el usuario que activó el retiro e intercambió `shares`, propiedad del `owner`, por `assets`. `receiver` es el usuario que recibió los `assets` retirados.
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [EIP-4626: estándar de bóveda tokenizada](https://eips.ethereum.org/EIPS/eip-4626)
-- [ERC-4626: repositorio de GitHub](https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC4626.sol)
+- [EIP-4626: Estándar de bóveda tokenizada](https://eips.ethereum.org/EIPS/eip-4626)
+- [ERC-4626: Repositorio de GitHub](https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC4626.sol)
From f0b262ac4d9f3bafcd4f19cec12ff8a1973454b0 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:52:59 -0300
Subject: [PATCH 268/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/libraries/index.md
---
.../docs/smart-contracts/libraries/index.md | 46 +++++++++----------
1 file changed, 23 insertions(+), 23 deletions(-)
diff --git a/public/content/translations/es/developers/docs/smart-contracts/libraries/index.md b/public/content/translations/es/developers/docs/smart-contracts/libraries/index.md
index f1969ca9131..f026ef41151 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/libraries/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/libraries/index.md
@@ -1,6 +1,6 @@
---
title: Librerías de contratos inteligentes
-description:
+description: Descubra bibliotecas reutilizables de contratos inteligentes y bloques de construcción para acelerar sus proyectos de desarrollo en Ethereum.
lang: es
---
@@ -8,19 +8,19 @@ No es necesario que escribas cada contrato inteligente de tu proyecto desde cero
## Requisitos previos {#prerequisites}
-Antes de adentrarte en las bibliotecas de contratos inteligentes, te recomendamos que comprendas bien la estructura de estos documentos. Dirígete a [Anatomía del contrato inteligente](/developers/docs/smart-contracts/anatomy/), si aún no lo has hecho.
+Antes de adentrarte en las bibliotecas de contratos inteligentes, te recomendamos que comprendas bien la estructura de estos documentos. Visite la [anatomía de los contratos inteligentes](/developers/docs/smart-contracts/anatomy/) si aún no lo ha hecho.
-## ¿Qué hay en una biblioteca? {#whats-in-a-library}
+## ¿Qué hay en una librería? {#whats-in-a-library}
-Normalmente puedes encontrar dos tipos de bloques de construcción en las bibliotecas de contratos inteligentes: comportamientos reutilizables que puedes añadir a tus contratos, e implementaciones de varios estándares.
+Normalmente puede encontrar dos tipos de bloques de construcción en las librerías de contratos inteligentes: comportamientos reutilizables que puede añadir a sus contratos e implementaciones de varios estándares.
### Comportamientos {#behaviors}
-Cuando escribas contratos inteligentes, hay una gran posibilidad de que te encuentres escribiendo patrones similares una y otra vez, como asignar una dirección de _administrador_ para realizar operaciones protegidas en un contrato, o añadir un botón de _paro_ de emergencia en caso de producirse un problema inesperado.
+Al escribir contratos inteligentes, es muy probable que se encuentre escribiendo patrones similares una y otra vez, como asignar una dirección de _administrador_ para llevar a cabo operaciones protegidas en un contrato o añadir un botón de _pausa_ de emergencia en caso de un problema inesperado.
-Las bibliotecas de contratos inteligentes suelen proporcionar implementaciones reutilizables de estos comportamientos como [bibliotecas](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#libraries) o a través de [herencia](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#inheritance) en Solidity.
+Las librerías de contratos inteligentes suelen proporcionar implementaciones reutilizables de estos comportamientos como [librerías](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#libraries) o a través de la [herencia](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#inheritance) en Solidity.
-Como ejemplo, a continuación se muestra una versión simplificada del [>contrato de `Ownable`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/access/Ownable.sol) de la [biblioteca de contratos OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts), que diseña una dirección como el propietario de un contrato y proporciona un modificador para restringir el acceso a un método únicamente a dicho propietario.
+Como ejemplo, a continuación se muestra una versión simplificada del [contrato `Ownable`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/access/Ownable.sol) de la [librería OpenZeppelin Contracts](https://github.com/OpenZeppelin/openzeppelin-contracts), que designa una dirección como propietaria de un contrato y proporciona un modificador para restringir el acceso a un método solo a ese propietario.
```solidity
contract Ownable {
@@ -37,7 +37,7 @@ contract Ownable {
}
```
-Para utilizar un bloque de construcción como este en tu contrato, primero tendrás que importarlo y, a continuación, ampliarlo en tus propios contratos. Esto te permitirá utilizar el modificador proporcionado por el contrato base `"poseíble"` para asegurar sus propias funciones.
+Para utilizar un bloque de construcción como este en tu contrato, primero tendrás que importarlo y, a continuación, ampliarlo en tus propios contratos. Esto le permitirá utilizar el modificador proporcionado por el contrato base `Ownable` para asegurar sus propias funciones.
```solidity
import ".../Ownable.sol"; // Path to the imported library
@@ -54,15 +54,15 @@ Otro ejemplo popular es [SafeMath](https://docs.openzeppelin.com/contracts/3.x/u
### Estándares {#standards}
-Para facilitar la [composibilidad e interoperabilidad](/developers/docs/smart-contracts/composability/), la comunidad Ethereum ha definido varios estándares en forma de **ERC**. Puedes leer más sobre ellos en la sección de [estándares](/developers/docs/standards/).
+Para facilitar [la componibilidad y la interoperabilidad](/developers/docs/smart-contracts/composability/), la comunidad de Ethereum ha definido varios estándares en forma de **ERC**. Puede leer más sobre ellos en la sección de [estándares](/developers/docs/standards/).
-Al incluir un ERC como parte de sus contratos, recomendamos buscar implementaciones estándar, en lugar de intentar desplegar las tuyas. Muchas bibliotecas de contratos inteligentes incluyen implementaciones para los ERC más populares. Por ejemplo, el omnipresente [estándar de tokens fungibles ERC20](/developers/tutorials/understand-the-erc-20-token-smart-contract/) puede encontrarse en [HQ20](https://github.com/HQ20/contracts/blob/master/contracts/token/README.md), [DappSys](https://github.com/dapphub/ds-token/) y [OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/erc20). Adicionalmente, algunos ERC también proveen implementaciones canónicas como parte del propio ERC.
+Al incluir un ERC como parte de sus contratos, recomendamos buscar implementaciones estándar, en lugar de intentar desplegar las tuyas. Muchas bibliotecas de contratos inteligentes incluyen implementaciones para los ERC más populares. Por ejemplo, el omnipresente [estándar de token fungible ERC20](/developers/tutorials/understand-the-erc-20-token-smart-contract/) se puede encontrar en [HQ20](https://github.com/HQ20/contracts/blob/master/contracts/token/README.md), [DappSys](https://github.com/dapphub/ds-token/) y [OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/erc20). Adicionalmente, algunos ERC también proveen implementaciones canónicas como parte del propio ERC.
Vale la pena mencionar que algunos ERC no son autónomos, sino adiciones a otros ERC. Por ejemplo, [ERC2612](https://eips.ethereum.org/EIPS/eip-2612) añade una extensión a ERC20 para mejorar su usabilidad.
-## Cómo agregar una biblioteca {#how-to}
+## Cómo agregar una librería {#how-to}
-Consulta siempre la documentación de la biblioteca que estás incluyendo para obtener instrucciones específicas sobre cómo incluirla en tu proyecto. Varias bibliotecas de contratos de Solidity están empaquetadas usando `npm`, así que puedes simplemente `instalar npm` de ellas. La mayoría de las herramientas para [compilar](/developers/docs/smart-contracts/compiling/) contratos buscarán en tu `node_modules` las bibliotecas de contratos inteligentes, así que puedes hacer lo siguiente:
+Consulta siempre la documentación de la biblioteca que estás incluyendo para obtener instrucciones específicas sobre cómo incluirla en tu proyecto. Varias librerías de contratos de Solidity están empaquetadas usando `npm`, por lo que puede instalarlas con `npm install`. La mayoría de las herramientas para [compilar](/developers/docs/smart-contracts/compiling/) contratos buscarán en su directorio `node_modules` las librerías de contratos inteligentes, por lo que puede hacer lo siguiente:
```solidity
// Esto cargará la biblioteca @openzeppelin/contracts desde tu node_modules
@@ -73,13 +73,13 @@ contract MyNFT is ERC721 {
}
```
-Independientemente del método que utilices, al incluir una biblioteca, siempre vigila la versión del [lenguaje](/developers/docs/smart-contracts/languages/). Por ejemplo, no puede utilizar una biblioteca para Solidity 0.6 si estás escribiendo tus contratos en Solidity 0.5.
+Independientemente del método que utilice, al incluir una librería, preste siempre atención a la versión del [lenguaje](/developers/docs/smart-contracts/languages/). Por ejemplo, no puede utilizar una biblioteca para Solidity 0.6 si estás escribiendo tus contratos en Solidity 0.5.
-## Cuándo se debe utilizar {#when-to-use}
+## Cuándo usar {#when-to-use}
Usar una biblioteca de contratos inteligentes para tu proyecto tiene varias ventajas. En primer lugar y principalmente, te ahorra tiempo al proporcionarte los bloques de construcción listos para que los puedas incluir en tu sistema, en lugar de tener que codificarlos tú mismo.
-La seguridad también es un beneficio importante. Las bibliotecas de contratos inteligentes de código abierto también suelen ser objeto de un severo escrutinio. Dado que muchos proyectos dependen de ellos, existe un fuerte incentivo por parte de la comunidad para mantenerlos bajo una constante revisión. Es mucho más común encontrar errores en el código de aplicación que en las bibliotecas de contratos reutilizables. Algunas bibliotecas también son sometidas a [auditorías externas](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/audits) por seguridad adicional.
+La seguridad también es un beneficio importante. Las bibliotecas de contratos inteligentes de código abierto también suelen ser objeto de un severo escrutinio. Dado que muchos proyectos dependen de ellos, existe un fuerte incentivo por parte de la comunidad para mantenerlos bajo una constante revisión. Es mucho más común encontrar errores en el código de aplicación que en las bibliotecas de contratos reutilizables. Algunas librerías también se someten a [auditorías externas](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/audits) para mayor seguridad.
Sin embargo, el uso de bibliotecas de contratos inteligentes conlleva el riesgo de incluir código con el que no estés familiarizado en tu proyecto. Es tentador importar un contrato e incluirlo directamente en tu proyecto, pero sin entender bien lo que hace ese contrato, puedes estar introduciendo inadvertidamente un problema en tu sistema debido a un comportamiento inesperado. Asegúrate siempre de leer la documentación del código que estás importando y, a continuación, revisa el código antes de incluirlo en tu proyecto.
@@ -87,31 +87,31 @@ Por último, al decidir si incluir o no una biblioteca, considera su uso general
## Herramientas relacionadas {#related-tools}
-**Contratos de OpenZeppelin: ****_La biblioteca más popular para el desarrollo seguro de contratos inteligentes._**
+**OpenZeppelin Contracts -** **_La librería más popular para el desarrollo seguro de contratos inteligentes._**
- [Documentación](https://docs.openzeppelin.com/contracts/)
- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
- [Foro de la comunidad](https://forum.openzeppelin.com/c/general/16)
-**DappSys: ****_Bloques de creación simples, flexibles y seguros para contratos inteligentes. _**
+**DappSys -** **_Bloques de construcción seguros, simples y flexibles para contratos inteligentes._**
- [Documentación](https://dappsys.readthedocs.io/)
- [GitHub](https://github.com/dapphub/dappsys)
-**HQ20: ****_Un proyecto de Solidity con contratos, bibliotecas y ejemplos para ayudarte a construir aplicaciones distribuidas con todas las características para el mundo real._**
+**HQ20 -** **_Un proyecto de Solidity con contratos, librerías y ejemplos para ayudarle a crear aplicaciones distribuidas con todas las funciones para el mundo real._**
- [GitHub](https://github.com/HQ20/contracts)
-**thirdweb Solidity SDK:****_ Proporciona las herramientas necesarias para crear contratos inteligentes personalizados de forma eficiente_**
+**thirdweb Solidity SDK -** **_Proporciona las herramientas necesarias para crear contratos inteligentes personalizados de forma eficiente_**
- [Documentación](https://portal.thirdweb.com/contracts/build/overview)
- [GitHub](https://github.com/thirdweb-dev/contracts)
## Tutoriales relacionados {#related-tutorials}
-- [Consideraciones de seguridad para desarrolladores de Ethereum:](/developers/docs/smart-contracts/security/)_ Tutorial sobre consideraciones de seguridad que deben tenerse en cuenta al crear contratos inteligentes, incluyendo el uso de bibliotecas._
-- [Entender el contrato inteligente de token ERC-20:](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _Tutorial sobre el estándar ERC-20, proporcionado por múltiples bibliotecas._
+- [Consideraciones de seguridad para desarrolladores de Ethereum](/developers/docs/smart-contracts/security/) _– Un tutorial sobre consideraciones de seguridad al crear contratos inteligentes, incluido el uso de librerías._
+- [Entender el contrato inteligente de token ERC-20](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _-Tutorial sobre el estándar ERC20, proporcionado por múltiples librerías._
-## Más lectura {#further-reading}
+## Lecturas adicionales {#further-reading}
-_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
From 23d4ed04dd6688c6d7ff21431f1428daedc458e7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:01 -0300
Subject: [PATCH 269/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/deploying/index.md
---
.../docs/smart-contracts/deploying/index.md | 48 +++++++++----------
1 file changed, 24 insertions(+), 24 deletions(-)
diff --git a/public/content/translations/es/developers/docs/smart-contracts/deploying/index.md b/public/content/translations/es/developers/docs/smart-contracts/deploying/index.md
index 833d907ff5c..da44d533bce 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/deploying/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/deploying/index.md
@@ -1,6 +1,6 @@
---
title: Implementación de contratos inteligentes
-description:
+description: Aprenda a desplegar contratos inteligentes en redes de Ethereum, incluidos los requisitos previos, las herramientas y los pasos de implementación.
lang: es
---
@@ -10,50 +10,50 @@ Para implementar un contrato inteligente, envías una transacción de Ethereum q
## Requisitos previos {#prerequisites}
-Deberías entender las [redes Ethereum](/developers/docs/networks/), [las transacciones](/developers/docs/transactions/) y la [anatomía de los contratos inteligentes](/developers/docs/smart-contracts/anatomy/) antes de implementar contratos inteligentes.
+Debería comprender las [redes de Ethereum](/developers/docs/networks/), las [transacciones](/developers/docs/transactions/) y la [anatomía de los contratos inteligentes](/developers/docs/smart-contracts/anatomy/) antes de implementar contratos inteligentes.
-Implementar un contrato también cuesta Ether (ETH), ya que se almacenan en la cadena de bloques, así que le recomendamos familiarizarse con el [gas y las comisiones](/developers/docs/gas/) en Ethereum.
+Implementar un contrato también cuesta ether (ETH), ya que se almacenan en la cadena de bloques, por lo que debería estar familiarizado con el [gas y las comisiones](/developers/docs/gas/) en Ethereum.
-Finalmente, necesitará compilar su contrato antes de implementarlo, así que asegúrese de leer acerca de la [compilación de contratos inteligentes](/developers/docs/smart-contracts/compiling/).
+Finalmente, necesitará compilar su contrato antes de implementarlo, así que asegúrese de haber leído sobre la [compilación de contratos inteligentes](/developers/docs/smart-contracts/compiling/).
-## ¿Cómo implementar un contrato inteligente? {#how-to-deploy-a-smart-contract}
+## Cómo implementar un contrato inteligente {#how-to-deploy-a-smart-contract}
-### Lo que necesitarás {#what-youll-need}
+### Lo que necesitará {#what-youll-need}
-- El bytecode de su contrato: se genera mediante la [compilación](/devElopers/docs/smart-contracts/compiling/).
+- El bytecode de su contrato: se genera a través de la [compilación](/developers/docs/smart-contracts/compiling/)
- Ether para gas: Tú pondrás tu límite de gas como cualquier otra transacción; por eso, debes tener en cuenta que la implementación de un contrato inteligente de Ethereum necesitará mucho más gas que una transferencia simple de ETH.
- un script o complemento de implementación
-- acceso a un [nodo de Ethereum](/developers/docs/nodes-and-clients/), ya sea ejecutando el suyo propio, conectándose a un nodo público o mediante una clave de API usando un [servicio de nodo](/developers/docs/nodes-and-clients/nodes-as-a-service/)
+- acceso a un [nodo de Ethereum](/developers/docs/nodes-and-clients/), ya sea ejecutando el suyo propio, conectándose a un nodo público o mediante una clave de API utilizando un [servicio de nodos](/developers/docs/nodes-and-clients/nodes-as-a-service/)
### Pasos para implementar un contrato inteligente {#steps-to-deploy}
-Los pasos específicos involucrados dependerán del marco de desarrollo en cuestión. Por ejemplo, puede consultar la documentación de Hardhat[ sobre la implementación de sus contratos](https://hardhat.org/docs/tutorial/deploying) o la documentación de [Foundry sobre la implementación y verificación de un contrato inteligente](https://book.getfoundry.sh/forge/deploying). Una vez implementado, su contrato tendrá una dirección de Ethereum como otras [cuentas](/developers/docs/accounts/) y se puede verificar utilizando [herramientas de verificación de código fuente](/developers/docs/smart-contracts/verifying/#source-code-verification-tools).
+Los pasos específicos involucrados dependerán del marco de desarrollo en cuestión. Por ejemplo, puede consultar la [documentación de Hardhat sobre la implementación de sus contratos](https://hardhat.org/docs/tutorial/deploying) o la [documentación de Foundry sobre la implementación y verificación de un contrato inteligente](https://book.getfoundry.sh/forge/deploying). Una vez implementado, su contrato tendrá una dirección de Ethereum como otras [cuentas](/developers/docs/accounts/) y podrá ser verificado usando [herramientas de verificación de código fuente](/developers/docs/smart-contracts/verifying/#source-code-verification-tools).
## Herramientas relacionadas {#related-tools}
-**Remix: _Remix IDE permite desarrollar, implementar y administrar contratos inteligentes para Ethereum como cadenas de bloques_.**
+**Remix - _Remix IDE permite desarrollar, implementar y administrar contratos inteligentes para blockchains como Ethereum_**
- [Remix](https://remix.ethereum.org)
-**Tenderly: _plataforma de desarrollo web3 que proporciona bloques de desarrollo de depuración, observabilidad y infraestructura para desarrollar, probar, monitorear y operar contratos inteligentes_.**
+**Tenderly - _Plataforma de desarrollo Web3 que proporciona depuración, observabilidad y bloques de construcción de infraestructura para desarrollar, probar, supervisar y operar contratos inteligentes_**
- [tenderly.co](https://tenderly.co/)
- [Documentación](https://docs.tenderly.co/)
- [GitHub](https://github.com/Tenderly)
- [Discord](https://discord.gg/eCWjuvt)
-**Hardhat: _entorno de desarrollo para compilar, implementar, probar y depurar su software de Ethereum_.**
+**Hardhat - _Un entorno de desarrollo para compilar, implementar, probar y depurar su software de Ethereum_**
- [hardhat.org](https://hardhat.org/getting-started/)
-- [Documentos sobre cómo implementar sus contratos](https://hardhat.org/docs/tutorial/deploying)
+- [Documentación sobre la implementación de sus contratos](https://hardhat.org/docs/tutorial/deploying)
- [GitHub](https://github.com/nomiclabs/hardhat)
- [Discord](https://discord.com/invite/TETZs2KK4k)
-**thirdweb:_ implemente fácilmente cualquier contrato en cualquier cadena compatible con EVM, usando un solo comando_.**
+**thirdweb - _Implemente fácilmente cualquier contrato en cualquier cadena compatible con EVM, utilizando un solo comando_**
- [Documentación](https://portal.thirdweb.com/deploy/)
-**Crossmint: _Plataforma de desarrollo web3 de nivel empresarial para implementar contratos inteligentes, habilitar pagos con tarjeta de crédito y entre cadenas, y utilizar API para crear, distribuir, vender, almacenar y editar NFT. _**
+**Crossmint - _Plataforma de desarrollo web3 de nivel empresarial para implementar contratos inteligentes, habilitar pagos con tarjeta de crédito y entre cadenas, y usar API para crear, distribuir, vender, almacenar y editar NFT._**
- [crossmint.com](https://www.crossmint.com)
- [Documentación](https://docs.crossmint.com)
@@ -62,20 +62,20 @@ Los pasos específicos involucrados dependerán del marco de desarrollo en cuest
## Tutoriales relacionados {#related-tutorials}
-- [Implementar su primer contrato inteligente:](/developers/tutorials/deploying-your-first-smart-contract/)_ introducción para implementar su primer contrato inteligente en la red de prueba de Ethereum_
-- [Hola Mundo | tutorial de contratos inteligentes:](/developers/tutorials/hello-world-smart-contract/)_ tutorial fácil de seguir para crear e implementar un contrato inteligente básico en Ethereum_
-- [Interactuar con otros contratos de Solidity](/developers/tutorials/interact-with-other-contracts-from-solidity/)_: Cómo implementar un contrato inteligente de un contrato existente e interactuar con él._
-- [Reducir el tamaño de su contracto:](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/)_ cómo reducir el tamaño de su contrato para tenerlo debajo del límite y ahorrar gas_
+- [Implementar su primer contrato inteligente](/developers/tutorials/deploying-your-first-smart-contract/) _– Una introducción a la implementación de su primer contrato inteligente en una red de prueba de Ethereum._
+- [Hola, mundo | Tutorial de contrato inteligente](/developers/tutorials/hello-world-smart-contract/) _– Un tutorial fácil de seguir para crear e implementar un contrato inteligente básico en Ethereum._
+- [Interactuar con otros contratos desde Solidity](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– Cómo implementar un contrato inteligente a partir de un contrato existente e interactuar con él._
+- [Cómo reducir el tamaño de su contrato](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- Cómo reducir el tamaño de su contrato para mantenerlo por debajo del límite y ahorrar en gas_
-## Leer más {#further-reading}
+## Lecturas adicionales {#further-reading}
- [https://docs.openzeppelin.com/learn/deploying-and-interacting](https://docs.openzeppelin.com/learn/deploying-and-interacting) - _OpenZeppelin_
-- [Implemente sus contratos con Hardhat:](https://hardhat.org/docs/tutorial/deploying) _Nomic Labs_
+- [Implementar sus contratos con Hardhat](https://hardhat.org/docs/tutorial/deploying) - _Nomic Labs_
-_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Temas relacionados {#related-topics}
-- [Entornos de desarrollo](/developers/docs/frameworks/)
-- [Cómo ejecutar un nodo de Ethereum](/developers/docs/nodes-and-clients/run-a-node/)
+- [Marcos de desarrollo](/developers/docs/frameworks/)
+- [Ejecutar un nodo de Ethereum](/developers/docs/nodes-and-clients/run-a-node/)
- [Nodos como servicio](/developers/docs/nodes-and-clients/nodes-as-a-service)
From be3fe2f044f738dcdc35d4746f23195a80e6d2ac Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:03 -0300
Subject: [PATCH 270/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
---
.../how-to-write-and-deploy-an-nft/index.md | 206 ++++++++++--------
1 file changed, 120 insertions(+), 86 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md b/public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
index b154ad16224..cd8a00d02fc 100644
--- a/public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
@@ -1,12 +1,14 @@
---
-title: Cómo escribir & desplegar un NFT (parte 1/3 de la serie de tutoriales sobre NFT)
+title: Cómo escribir e implementar un NFT (Parte 1/3 de la serie de tutoriales sobre NFT)
description: Este tutorial es la parte 1 de una serie sobre NFT que le indicará cómo escribir y desplegar un contrato inteligente de un token no fungible o NFT (ERC-721 token) paso a paso usando Ethereum y el sistema de archivos interplanetario (IPFS).
author: "Sumi Mudgil"
tags:
- - "ERC-721"
- - "Alchemy"
- - "Solidity"
- - "contratos inteligentes"
+ [
+ "ERC-721",
+ "Alquimia",
+ "Solidity",
+ "contratos Inteligentes"
+ ]
skill: beginner
lang: es
published: 2021-04-22
@@ -14,84 +16,91 @@ published: 2021-04-22
Con toda la atención pública hacia la cadena de bloques que han supuesto los NFT, ¡esta es una excelente ocasión para entender el furor que han causado, publicando su propio contrato NFT (ERC-721 Token) en la cadena de bloques de Ethereum.
-Alchemy se enorgullece de promocionar a los protagonistas del espacio NFT, incluyendo Makersplace (que recientemente logró una venta récord de obras de arte digitales en Christie's por 69 millones de dólares), Dapper Labs (creadores de NBA Top Shot & Crypto Kitties), OpenSea (el mayor mercado de NFT del mundo), Zora, Super Rare, NFTfi, Foundation, Enjin, Origin Protocol e Immutable, entre muchos otros.
+Alchemy se enorgullece de potenciar a los nombres más importantes del espacio NFT, incluyendo Makersplace (que recientemente estableció un récord de venta de obras de arte digital en Christie's por 69 millones de dólares), Dapper Labs (creadores de NBA Top Shot y CryptoKitties), OpenSea (el mayor mercado de NFT del mundo), Zora, Super Rare, NFTfi, Foundation, Enjin, Origin Protocol, Immutable y más.
-En este tutorial, recorreremos la creación e implementación de un contrato inteligente ERC-721 en la red de pruebas de Sepolia usando [MetaMask](https://metamask.io/), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/), [Pinata](https://pinata.cloud/) y [Alchemy](https://alchemy.com/signup/eth) (no se preocupe si aún no entiende lo que significa esto, ¡lo explicaremos!).
+En este tutorial, le explicaremos cómo crear e implementar un contrato inteligente ERC-721 en la red de prueba Sepolia utilizando [MetaMask](https://metamask.io/), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/), [Pinata](https://pinata.cloud/) y [Alchemy](https://alchemy.com/signup/eth) (no se preocupe si aún no entiende lo que significa todo esto; ¡lo explicaremos!).
En la parte 2 de este tutorial, explicaremos cómo podemos utilizar nuestro contrato inteligente para acuñar un NFT, y en la parte 3 explicaremos cómo ver su NFT en MetaMask.
-Y, por supuesto, si le surge alguna duda en cualquier momento, no dude en consultar [Alchemy Discord](https://discord.gg/gWuC7zB) o visitar [los documentos de la API de NFT en Alchemy](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api)!
+Y, por supuesto, si tiene preguntas en cualquier momento, no dude en preguntar en el [Discord de Alchemy](https://discord.gg/gWuC7zB) o visitar [los documentos de la API de NFT de Alchemy](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api)!
-## Paso 1: Conectarse a la red Ethereum {#connect-to-ethereum}
+## Paso 1: Conectarse a la red de Ethereum {#connect-to-ethereum}
-Hay muchas maneras de hacer peticiones a la cadena de bloques Ethereum, pero para simplificarnos la vida, usaremos una cuenta gratuita en [Alchemy](https://alchemy.com/signup/eth), una plataforma de desarrollo de cadena de bloques y API que nos permite comunicarnos con la cadena Ethereum sin tener que ejecutar nuestros propios nodos.
+Hay varias maneras de hacer solicitudes a la blockchain de Ethereum, pero para facilitar las cosas, usaremos una cuenta gratuita en [Alchemy](https://alchemy.com/signup/eth), una plataforma de desarrollo de blockchain y una API que nos permite comunicarnos con la cadena de Ethereum sin tener que ejecutar nuestros propios nodos.
-En este tutorial, también aprovecharemos las herramientas de desarrollo de Alchemy para monitorizar y analizar lo que está ocurriendo dentro de nuestro despliegue de contratos inteligentes. Si aún no tiene una cuenta de Alchemy, puede registrarse gratis en [aquí](https://alchemy.com/signup/eth).
+En este tutorial, también aprovecharemos las herramientas de desarrollo de Alchemy para monitorizar y analizar lo que está ocurriendo dentro de nuestro despliegue de contratos inteligentes. Si aún no tiene una cuenta de Alchemy, μπορείτε να εγγραφείτε δωρεάν [aquí](https://alchemy.com/signup/eth).
-## Paso 2: Crear su aplicación (y llave API) {#make-api-key}
+## Paso 2: Cree su aplicación (y clave API) {#make-api-key}
-Una vez que haya creado una cuenta de Alchemy, puede generar una clave de API creando una aplicación. Esto nos permitirá realizar solicitudes a la red de pruebas de Sepolia. Consulte [esta guía](https://docs.alchemyapi.io/guides/choosing-a-network) si tiene curiosidad para saber más sobre redes de pruebas.
+Una vez que haya creado una cuenta de Alchemy, puede generar una clave de API creando una aplicación. Esto nos permitirá realizar solicitudes a la red de pruebas de Sepolia. Consulte [esta guía](https://docs.alchemyapi.io/guides/choosing-a-network) si tiene curiosidad por saber más sobre las redes de prueba.
1. Navegue a la página «Crear App» en su tablero Alchemy pasando el cursor sobre «Apps» en la barra de navegación y haciendo clic en «Crear App».
-
+
2. Dele un nombre a su aplicación (Nosotros elegimos «¡Mi primer NFT!»), incluya una breve descripción, seleccione «Ethereum» para la cadena y «Sepolia» para su red. Desde La Fusión, las otras redes de pruebas han quedado obsoletas.
-
+
-3. ¡Haga clic en «Crear app» y eso es todo! Su aplicación debería aparecer en el tablero de abajo.
+3. ¡Haga clic en «Crear app» y ya está! Su aplicación debería aparecer en la siguiente tabla.
-## Paso 3: Crear una cuenta Ethereum (dirección) {#create-eth-address}
+## Paso 3: Crear una cuenta de Ethereum (dirección) {#create-eth-address}
-Necesitamos una cuenta Ethereum para enviar y recibir transacciones. Para este tutorial, usaremos Metamask, una cartera virtual en el navegador usada para manejar la dirección de su cuenta Ethereum. Si quiere más información sobre cómo funcionan las transacciones en Ethereum, eche un vistazo a [esta página](/developers/docs/transactions/) de Ethereum Foundation.
+Necesitamos tener una cuenta Ethereum para enviar y recibir transacciones. Para este tutorial, usaremos Metamask, una cartera virtual en el navegador usada para manejar la dirección de su cuenta Ethereum. Si quiere entender más sobre cómo funcionan las transacciones en Ethereum, consulte [esta página](/developers/docs/transactions/) de la Fundación Ethereum.
-Puede descargar y crear una cuenta Metamask gratis [aquí](https://metamask.io/download). Cuando esté creando una cuenta, o si ya tiene una cuenta, asegurese de alternar a la «red de pruebas Sepolia» en la parte superior derecha (para que no estemos usando dinero real).
+Puede descargar y crear una cuenta de MetaMask gratis [aquí](https://metamask.io/download). Cuando esté creando una cuenta, o si ya tiene una cuenta, asegurese de alternar a la «red de pruebas Sepolia» en la parte superior derecha (para que no estemos usando dinero real).

-## Paso 4: Añadir ether de un faucet {#step-4-add-ether-from-a-faucet}
+## Paso 4: Añadir ether desde un Faucet {#step-4-add-ether-from-a-faucet}
-Para desarrollar nuestro contrato inteligente en la red de prueba, necesitaremos algunos ETH de prueba. Para conseguir ETH, puede ir a la [Faucet (o grifo) Sepolia](https://sepoliafaucet.com/) hospedado por Alchemy, iniciar sesión e introducir la dirección de su cuenta y luego hacer clic en «Send Me ETH» (Enviarme ETH). Deberían aparecer ETH en su cuenta de Metamask poco después.
+Para desarrollar nuestro contrato inteligente en la red de prueba, necesitaremos algunos ETH de prueba. Para obtener ETH, puede ir al [Faucet de Sepolia](https://sepoliafaucet.com/) alojado por Alchemy, inicie sesión e introduzca la dirección de su cuenta, haga clic en «Envíenme ETH». Deberían aparecer ETH en su cuenta de Metamask poco después.
-## Paso 5: Comprobar su balance {#check-balance}
+## Paso 5: Comprobar su saldo {#check-balance}
-Para comprobar que nuestro balance está ahí, hagamos una solicitud de [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) usando [la herramienta de composición de Alchemy](https://composer.alchemyapi.io?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto devolverá la cantidad de ETH a nuestra cartera. Después de introducir la dirección de su cuenta de Metamask y hacer clic en «Send Request» (Enviar Solicitud), debería ver una respuesta como esta:
+Para verificar que nuestro saldo está ahí, hagamos una solicitud [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) utilizando la [herramienta de composición de Alchemy](https://composer.alchemyapi.io?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto devolverá la cantidad de ETH a nuestra cartera. Después de introducir la dirección de su cuenta de Metamask y hacer clic en «Send Request», debería ver una respuesta como esta:
+ ```
`{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}`
+ ```
-> **Nota** Este resultado es en wei, no ETH. Wei se usa como la denominación más pequeña de Ether. La conversión de wei a ETH es 1 eth = 1018 wei. Así que si convertimos 0xde0b6b3a7640000 a decimal, obtenemos 1\*1018 wei, que es igual a 1 ETH.
+> **Nota**: Este resultado está en wei, no en ETH. Wei se usa como la denominación más pequeña de Ether. La conversión de wei a ETH es 1 eth = 1018 wei. Así que si convertimos 0xde0b6b3a7640000 a decimal, obtenemos 1\*1018 wei, que es igual a 1 ETH.
¡Fiu! Nuestro dinero de prueba está ahí sano y salvo.
-## Paso 6: Iniciar su proyecto {#initialize-project}
+## Paso 6: Inicializar nuestro proyecto {#initialize-project}
Primero, necesitaremos crear una carpeta para nuestro proyecto. Vaya a su línea de comando y escriba:
+ ```
mkdir my-nft
cd my-nft
+ ```
-Ahora que estamos dentro de nuestra carpeta de proyecto, usaremos npm init para iniciar el proyecto. Si no tiene instalado npm, siga [estas instrucciones](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm) (también necesitaremos [Node.js](https://nodejs.org/en/download/), así que ¡descárgueselo también!).
+Ahora que estamos dentro de nuestra carpeta de proyecto, usaremos npm init para iniciar el proyecto. Si aún no tiene npm instalado, siga [estas instrucciones](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm) (también necesitaremos [Node.js](https://nodejs.org/en/download/), ¡así que descárguelo también!).
+ ```
npm init
+ ```
Realmente no importa la respuesta que dé a las preguntas de instalación, he aquí un ejemplo de cómo lo hicimos nosotros:
+
```json
- package name: (my-nft)
- version: (1.0.0)
- description: My first NFT!
- entry point: (index.js)
- test command:
- git repository:
- keywords:
- author:
- license: (ISC)
- About to write to /Users/thesuperb1/Desktop/my-nft/package.json:
+ nombre del paquete: (my-nft)
+ versión: (1.0.0)
+ descripción: ¡Mi primer NFT!
+ punto de entrada: (index.js)
+ comando de prueba:
+ repositorio de git:
+ palabras clave:
+ autor:
+ licencia: (ISC)
+ A punto de escribir en /Users/thesuperb1/Desktop/my-nft/package.json:
{
"name": "my-nft",
"version": "1.0.0",
- "description": "My first NFT!",
+ "description": "¡Mi primer NFT!",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
@@ -100,6 +109,7 @@ Realmente no importa la respuesta que dé a las preguntas de instalación, he aq
"license": "ISC"
}
```
+
Apruebe package.json y ¡ya puede comenzar!
## Paso 7: Instalar [Hardhat](https://hardhat.org/getting-started/#overview) {#install-hardhat}
@@ -108,18 +118,23 @@ Hardhat es un entorno de desarrollo para compilar, implementar, probar y depurar
Dentro de nuestro proyecto my-nft, ejecute:
+ ```
npm install --save-dev hardhat
+ ```
-Revise esta página para obtener más información acerca de las [intrucciones de instalación](https://hardhat.org/getting-started/#overview).
+Consulte esta página para obtener más detalles sobre las [instrucciones de instalación](https://hardhat.org/getting-started/#overview).
-## Paso 8: Crear proyecto Hardhat {#create-hardhat-project}
+## Paso 8: Crear un proyecto Hardhat {#create-hardhat-project}
Dentro de la carpeta de nuestro proyecto, ejecute:
+ ```
npx hardhat
+ ```
-Debería aparecer un mensaje de bienvenida y la opción de seleccionar lo que desee hacer. Seleccione «create an empty hardhat.config.js»:
+Entonces debería aparecer un mensaje de bienvenida y la opción de seleccionar lo que desea hacer. Seleccione «create an empty hardhat.config.js» (crear un hardhat.config.js vacío):
+ ```
888 888 888 888 888
888 888 888 888 888
888 888 888 888 888
@@ -128,20 +143,23 @@ Debería aparecer un mensaje de bienvenida y la opción de seleccionar lo que de
888 888 .d888888 888 888 888 888 888 .d888888 888
888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
- 👷 Welcome to Hardhat v2.0.11 👷
- ? What do you want to do? …
- Create a sample project
- ❯ Create an empty hardhat.config.js
- Quit
+ 👷 Bienvenido a Hardhat v2.0.11 👷
+ ? ¿Qué desea hacer? …
+ Crear un proyecto de muestra
+ ❯ Crear un hardhat.config.js vacío
+ Salir
+ ```
Esta acción nos creará un archivo hardhat.config.js, que es donde especificaremos todos los ajustes para nuestro proyecto (en el paso 13).
-## Paso 9: Añadir carpetas de proyecto {#add-project-folders}
+## Paso 9: Añadir carpetas del proyecto {#add-project-folders}
-Para mantener nuestro proyecto organizado, crearemos dos nuevas carpetas. Navegue al directorio raíz de su proyecto en su línea de comandos y escriba:
+Para mantener nuestro proyecto organizado, crearemos dos nuevas carpetas. Navegue al directorio raíz de su proyecto en su línea de comandos y teclee:
+ ```
mkdir contracts
mkdir scripts
+ ```
- contratos/es donde guardaremos nuestro código de contrato inteligente NFT
@@ -149,16 +167,16 @@ Para mantener nuestro proyecto organizado, crearemos dos nuevas carpetas. Navegu
## Paso 10: Escribir nuestro contrato {#write-contract}
-Ahora que nuestro entorno está configurado, es hora de dedicarse a cosas más emocionantes, como por ejemplo, _¡escribir nuestro código de contrato inteligente!_
+Ahora que nuestro entorno está configurado, pasemos a cosas más emocionantes: _¡escribir el código de nuestro contrato inteligente!_
-Abra el proyecto my-nft en su editor favorito (a nosotros nos gusta [VSCode](https://code.visualstudio.com/)). Los contratos inteligentes están escritos en un lenguaje llamado Solidity que es el que utilizaremos para escribir nuestro contrato inteligente MyNFT.sol
+Abra el proyecto my-nft en su editor favorito (nos gusta [VSCode](https://code.visualstudio.com/)). Los contratos inteligentes están escritos en un lenguaje llamado Solidity que es el que utilizaremos para escribir nuestro contrato inteligente MyNFT.sol
-1. Vaya a la carpeta `contratos` y cree un nuevo archivo llamado MyNFT.sol
+1. Vaya a la carpeta `contracts` y cree un nuevo archivo llamado MyNFT.sol
-2. A continuación se muestra nuestro código NFT de contrato inteligente, el cual se basa en la implementación ERC-721 de la biblioteca [OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/erc721). Copie y pegue el contenido de abajo en su archivo MyNFT.sol.
+2. A continuación se muestra el código de nuestro contrato inteligente de NFT, que basamos en la implementación ERC-721 de la biblioteca [OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/erc721). Copie y pegue el contenido de abajo en su archivo MyNFT.sol.
```solidity
- //Contract based on [https://docs.openzeppelin.com/contracts/3.x/erc721](https://docs.openzeppelin.com/contracts/3.x/erc721)
+ //Contrato basado en [https://docs.openzeppelin.com/contracts/3.x/erc721](https://docs.openzeppelin.com/contracts/3.x/erc721)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
@@ -188,54 +206,58 @@ Abra el proyecto my-nft en su editor favorito (a nosotros nos gusta [VSCode](htt
}
```
-3. Como estamos heredando clases de la biblioteca de contratos de OpenZeppelin, en la línea de comandos, ejecute `npm install @openzeppelin/contracts` para instalar la biblioteca en nuestra carpeta.
+3. Como estamos heredando clases de la biblioteca de contratos de OpenZeppelin, en su línea de comandos, ejecute `npm install @openzeppelin/contracts^4.0.0` para instalar la biblioteca en nuestra carpeta.
-Entonces, ¿qué _hace_ exactamente este código? Desglosémoslo, línea por línea.
+Entonces, ¿qué es lo que _hace_ exactamente este código? Desglosémoslo, línea por línea.
En la parte superior de nuestro contrato inteligente, importamos tres clases de contrato inteligente de [OpenZeppelin](https://openzeppelin.com/):
-- @openzeppelin/contracts/token/ERC721/ERC721.sol contiene la implementación del estándar ERC-721, que nuestro contrato NFT heredará. (Para ser un NFT válido, su contrato inteligente debe implementar todos los métodos del estándar ERC-721.) Para obtener más información sobre las funciones ERC-721 heredadas, consulte la definición de interfaz [aquí](https://eips.ethereum.org/EIPS/eip-721).
+- @openzeppelin/contracts/token/ERC721/ERC721.sol contiene la implementación del estándar ERC-721, que nuestro contrato NFT heredará. (Para ser un NFT válido, su contrato inteligente debe implementar todos los métodos del estándar ERC-721.) Para obtener más información sobre las funciones ERC-721 heredadas, consulte la definición de la interfaz [aquí](https://eips.ethereum.org/EIPS/eip-721).
- @openzeppelin/contracts/utils/Counters.sol proporciona contadores que sólo pueden aumentar o disminuir un valor. Nuestro contrato inteligente utiliza un contador para hacer un seguimiento del número total de NFT acuñados y establecer el ID único en nuestro nuevo NFT. (A cada NFT acuñado usando un contrato inteligente se le debe asignar un identificador único—aquí nuestro identificador único sólo está determinado por el número total de NFT en existencia. Por ejemplo, el primer NFT que acuñamos con nuestro contrato inteligente tiene «1» por ID, nuestro segundo NFT tiene «2», etc.)
-- @openzeppelin/contracts/access/Ownable.sol establece un [control de acceso](https://docs.openzeppelin.com/contracts/3.x/access-control) en nuestro contrato inteligente, por lo que solo el propietario del contrato inteligente (usted) puede acuñar NFT. (Nota, incluir el control de acceso es totalmente una preferencia. Si quiere que alguien pueda acuñar un NFT usando su contrato inteligente, elimine la palabra «Ownable» [apropiable] en la línea 10 y «onlyOwner» [solo el propietario] en la línea 17.)
+- @openzeppelin/contracts/access/Ownable.sol establece el [control de acceso](https://docs.openzeppelin.com/contracts/3.x/access-control) en nuestro contrato inteligente, de modo que solo el propietario del contrato inteligente (usted) puede acuñar NFT. (Nota, incluir el control de acceso es totalmente una preferencia. Si quiere que alguien pueda acuñar un NFT usando su contrato inteligente, elimine la palabra «Ownable» [apropiable] en la línea 10 y «onlyOwner» [solo el propietario] en la línea 17.)
-Después de nuestras declaraciones de importación, tenemos nuestro contrato inteligente NFT personalizado, que es sorprendentemente corto, ¡sólo contiene un contador, un constructor y una sola función! Esto es gracias a nuestros contratos de OpenZeppelin heredados, los cuales implementan la mayoría de los métodos que necesitamos para crear un NFT, como `ownerOf` (dueño de) que indica el dueño del NFT, y `transferFrom` (transferir desde), que transfiere la propiedad del NFT de una cuenta a otra.
+Después de nuestras declaraciones de importación, tenemos nuestro contrato inteligente NFT personalizado, que es sorprendentemente corto, ¡sólo contiene un contador, un constructor y una sola función! Esto es gracias a nuestros contratos heredados de OpenZeppelin, que implementan la mayoría de los métodos que necesitamos para crear un NFT, como `ownerOf`, que devuelve el propietario del NFT, y `transferFrom`, que transfiere la propiedad del NFT de una cuenta a otra.
En nuestro constructor ERC-721, notará que pasamos 2 cadenas, «MyNFT» y «NFT». La primera variable es el nombre del contrato inteligente, y la segunda es su símbolo. ¡Puede darle el nombre que quiera a cada una de estas variables!
-Por último, tenemos nuestra función `mintNFT(address recipient, string memory tokenURI)` que nos permite acuñar un NFT. Notará que esta función toma dos variables:
+Finalmente, tenemos nuestra función `mintNFT(address recipient, string memory tokenURI)` ¡que nos permite acuñar un NFT! Notará que esta función toma dos variables:
- `address recipient` especifica la dirección que recibirá su NFT recién acuñado
-- `string memory tokenURI` es una cadena que debe resolver un documento JSON que describe los metadatos de NFT. Los metadatos de un NFT es realmente lo que lo lleva a la vida, permitiéndole tener características configurables, como el nombre, descripción, imagen y otros atributos. En la parte 2 de este tutorial, describiremos cómo configurar estos metadatos.
+- `string memory tokenURI` es una cadena que debe resolverse en un documento JSON que describe los metadatados del NFT. Los metadatos de un NFT es realmente lo que lo lleva a la vida, permitiéndole tener características configurables, como el nombre, descripción, imagen y otros atributos. En la parte 2 de este tutorial, describiremos cómo configurar estos metadatos.
-`mintNFT` activa algunos métodos de la biblioteca ERC-721 heredada, y en última instancia muestra un número que representa la ID del NFT recién acuñado.
+`mintNFT` llama a algunos métodos de la biblioteca ERC-721 heredada, y, en última instancia, devuelve un número que representa el ID del NFT recién acuñado.
-## Paso 11: Conectar MetaMask & Alchemy a su proyecto {#connect-metamask-and-alchemy}
+## Paso 11: Conectar MetaMask y Alchemy a su proyecto {#connect-metamask-and-alchemy}
Ahora que hemos creado una cartera de MetaMask, una cuenta de Alchemy y hemos escrito nuestro contrato inteligente, es hora de conectarlos a los tres.
Cada transacción enviada desde su billetera virtual requiere una firma utilizando su clave privada única. Para proporcionar este permiso a nuestro programa, podemos almacenar de manera segura nuestra clave privada (y clave Alchemy API) en un archivo de entorno.
-Si quiere ahondar sobre el envío de transacciones, consulte [este tutorial](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) sobre el envío de transacciones usando web3.
+Para obtener más información sobre el envío de transacciones, consulte [este tutorial](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) sobre el envío de transacciones utilizando web3.
Primero, instale el paquete dotenv en su directorio de proyecto:
+ ```
npm install dotenv --save
+ ```
-Después, cree un archivo `.env` en el directorio raíz de nuestro proyecto, y añádale la llave inteligente de Metamask y la API URL de HTTP Alchemy.
+Luego, cree un archivo `.env` en el directorio raíz de nuestro proyecto, y añada su clave privada de MetaMask y la URL de la API HTTP de Alchemy.
-- Siga [estas instrucciones](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) para exportar tu clave privada desde MetaMask
+- Siga [estas instrucciones](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) para exportar su clave privada de MetaMask
- Vea las indicaciones siguientes para obtener la URL de la API de Alchemy HTTP y cópiela en su portapapeles
-
+
-Su `.env` debería ser parecido a:
+Su `.env` debería tener este aspecto:
+ ```
API_URL="https://eth-sepolia.g.alchemy.com/v2/your-api-key"
PRIVATE_KEY="your-metamask-private-key"
+ ```
Para conectarlos a nuestro código, haremos referencia a estas variables en nuestro archivo hardhat.config.js en el paso 13.
@@ -243,13 +265,15 @@ Para conectarlos a nuestro código, haremos referencia a estas variables en nues
## Paso 12: Instalar Ethers.js {#install-ethers}
-Ethers.js es una biblioteca que facilita la interacción y la realización de solicitudes a Ethereum agrupando [métodos JSON-RPC estándar](/developers/docs/apis/json-rpc/) con métodos más fáciles para el usuario.
+Ethers.js es una biblioteca que facilita la interacción y la realización de solicitudes a Ethereum envolviendo los [métodos JSON-RPC estándar](/developers/docs/apis/json-rpc/) con métodos más fáciles de usar.
-Hardhat hace que integrar [plugins](https://hardhat.org/plugins/) sea ultrafácil para herramientas adicionales y funcionalidades ampliadas. Aprovecharemos el [plugin Ethers](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers) para la implementación de contratos ([Ethers.js](https://github.com/ethers-io/ethers.js/) tiene algunos métodos de implementación de contratos ultralimpios).
+Hardhat hace que sea muy fácil integrar [Plugins](https://hardhat.org/plugins/) para herramientas adicionales y funcionalidad extendida. Aprovecharemos el [plugin de Ethers](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers) para el despliegue de contratos ([Ethers.js](https://github.com/ethers-io/ethers.js/) tiene algunos métodos de despliegue de contratos muy limpios).
-En el directorio de su proyecto, teclee:
+En el directorio de su proyecto teclee:
+ ```
npm install --save-dev @nomiclabs/hardhat-ethers ethers@^5.0.0
+ ```
También necesitaremos ethers en nuestro hardhat.config.js en el siguiente paso.
@@ -283,23 +307,25 @@ Actualice su hardhat.config.js para que tenga este aspecto:
Para asegurarnos de que todo funciona correctamente hasta ahora, compilemos nuestro contrato. La tarea de compilación es una de las tareas de Hardhat incorporadas.
-Desde la linea de comandos, ejecute:
+Desde la línea de comandos ejecute:
+ ```
npx hardhat compile
+ ```
-Puede que reciba una advertencia sobre el identificador de licencia SPDX no proporcionado en el archivo fuente, pero no se preocupe si la recibe, ¡esperemos que todo lo demás esté correcto! Si no es así, siempre puede escribir un mensaje en [Alchemy discord](https://discord.gg/u72VCg3).
+Puede que reciba una advertencia sobre el identificador de licencia SPDX no proporcionado en el archivo fuente, pero no se preocupe si la recibe, ¡esperemos que todo lo demás esté correcto! Si no es así, siempre puede enviar un mensaje en el [discord de Alchemy](https://discord.gg/u72VCg3).
-## Paso 15: Escribir nuestro script de despliegue {#write-deploy}
+## Paso 15: Escribir nuestro script de implementación {#write-deploy}
Ahora que nuestro contrato está escrito y nuestro archivo de configuración está listo, es momento de escribir nuestro script de implementación del contrato.
-Vaya a la carpeta `scripts/` y cree un nuevo archivo llamado `deploy.js`, añadiendo los siguientes contenidos:
+Vaya a la carpeta `scripts/` y cree un nuevo archivo llamado `deploy.js`, añadiendo el siguiente contenido:
```js
async function main() {
const MyNFT = await ethers.getContractFactory("MyNFT")
- // Start deployment, returning a promise that resolves to a contract object
+ // Iniciar la implementación, devolviendo una promesa que se resuelve en un objeto de contrato
const myNFT = await MyNFT.deploy()
await myNFT.deployed()
console.log("Contract deployed to address:", myNFT.address)
@@ -313,40 +339,48 @@ main()
})
```
-Hardhat hace un trabajo increíble al explicar lo que hace cada una de estas líneas de código en su [tutorial de contratos](https://hardhat.org/tutorial/testing-contracts.html#writing-tests), aquí hemos asumido sus explicaciones.
+Hardhat hace un trabajo increíble explicando lo que hace cada una de estas líneas de código en su [tutorial de Contratos](https://hardhat.org/tutorial/testing-contracts.html#writing-tests), hemos adoptado sus explicaciones aquí.
+ ```
const MyNFT = await ethers.getContractFactory("MyNFT");
+ ```
Un ContractFactory en ethers.js es una abstracción utilizada para implementar nuevos contratos inteligentes, por lo que MyNFT aquí es una fábrica para las instancias de nuestro contrato NFT. Cuando se utiliza el plugin ContractFactory y las instancias de contrato del plugin de hardhat-ethers están conectadas al primer firmante por defecto.
+ ```
const myNFT = await MyNFT.deploy();
+ ```
-Ejecutar un despliegue() en un ContractFactory iniciará el despliegue y devolverá una Promesa que se resuelva a un Contrato. Este es el objeto que tiene un método para cada una de nuestras funciones de contrato inteligente.
+Ejecutar un despliegue() en un ContractFactory iniciará el despliegue y devolverá una Promesa que se resuelva a un Contrato. Este es el elemento que tiene un método para cada una de nuestras funciones de contrato inteligente.
-## Paso 16: Desplegar nuestro contrato {#deploy-contract}
+## Paso 16: Implementar nuestro contrato {#deploy-contract}
-¡Por fin estamos listos para desplegar nuestro contrato inteligente! Navegue de nuevo a la raíz del directorio de su proyecto, y en la línea de comando ejecute:
+¡Ahora ya estamos listos para desplegar nuestro contrato inteligente! Navegue de nuevo a la raíz del directorio de su proyecto, y en la línea de comando ejecute:
+ ```
npx hardhat --network sepolia run scripts/deploy.js
+ ```
Debería mostrarse algo parecido a esto:
- Contract deployed to address: 0x4C5266cCc4b3F426965d2f51b6D910325a0E7650
+ ```
+ Contrato implementado en la dirección: 0x4C5266cCc4b3F426965d2f51b6D910325a0E7650
+ ```
-Si vamos a [Sepolia etherscan](https://sepolia.etherscan.io/) y buscamos nuestra dirección de contrato deberíamos de poder ver que se ha implementado de forma exitosa. Si no puede verlo inmediatamente, por favor espere unos instantes, ya que puede llevar algún tiempo. El objeto de la transacción tendrá un aspecto parecido a esto:
+Si vamos al [Etherscan de Sepolia](https://sepolia.etherscan.io/) y buscamos la dirección de nuestro contrato, deberíamos poder ver que se ha implementado con éxito. Si no puede verlo inmediatamente, por favor espere unos instantes, ya que puede llevar algún tiempo. La transacción tendrá un aspecto parecido a este:
-
+
-La dirección de origen debe coincidir con la dirección de su cuenta de MetaMask y la dirección de destino dirá «Contract Creation» (Creación de contrato). Si hacemos clic en la transacción, veremos la dirección de nuestro contrato en la casilla To (para):
+La dirección Debería coincidir con la dirección de su cuenta de MetaMask y la dirección Para dirá «Creación de contrato». Si hacemos clic en la transacción, veremos la dirección de nuestro contrato en la casilla To (para):

¡Síííííí! ¡Acaba de implementar su contrato inteligente NFT en la cadena de Ethereum (red de pruebas)!
-Para entender lo que está pasando internamente, vayamos a la pestaña de Explorer en nuestro [panel Alchemy](https://dashboard.alchemyapi.io/explorer). Si dispone de varias aplicaciones de Alchemy, asegúrese de filtrar por aplicación y seleccione «MyNFT».
+Para entender lo que sucede internamente, vayamos a la pestaña Explorador en nuestro [panel de Alchemy](https://dashboard.alchemyapi.io/explorer). Si dispone de varias aplicaciones de Alchemy, asegúrese de filtrar por aplicación y seleccione «MyNFT».
-
+
-Aquí verá un puñado de activaciones JSON-RPC que Hardhat/Ethers ha realizado internamente cuando ejecutamos a la función .deploy(). Dos cosas importantes que se deben recalcar aquí son [eth_sendRawTransaction](/developers/docs/apis/json-rpc/#eth_sendrawtransaction), que es la solicitud para escribir realmente nuestro contrato inteligente en la cadena Sepolia, y [eth_getTransactionByHash](/developers/docs/apis/json-rpc/#eth_gettransactionbyhash), que es una solicitud para leer información sobre nuestra transacción dado el hash (un patrón típico al enviar transacciones). Para ahondar más sobre el envío de transacciones, consulte este tutorial en [Envío de transacciones mediante Web3](/developers/tutorials/sending-transactions-using-web3-and-alchemy/).
+Aquí verá un puñado de activaciones JSON-RPC que Hardhat/Ethers ha realizado internamente cuando ejecutamos a la función .deploy(). Dos importantes a destacar aquí son [eth_sendRawTransaction](/developers/docs/apis/json-rpc/#eth_sendrawtransaction), que es la solicitud para escribir realmente nuestro contrato inteligente en la cadena Sepolia, y [eth_getTransactionByHash](/developers/docs/apis/json-rpc/#eth_gettransactionbyhash), que es una solicitud para leer información sobre nuestra transacción dado el hash (un patrón típico al enviar transacciones). Para obtener más información sobre el envío de transacciones, consulte este tutorial sobre [el envío de transacciones utilizando Web3](/developers/tutorials/sending-transactions-using-web3-and-alchemy/).
-Y así concluye la parte 1 de este tutorial. En la [parte 2, interactuaremos con nuestro contrato inteligente acuñando un NFT](/developers/tutorials/how-to-mint-an-nft/), y en la [parte 3 le enseñaremos a ver su NFT en su cartera de Ethereum](/developers/tutorials/how-to-view-nft-in-metamask/).
+Y así concluye la parte 1 de este tutorial. En la [Parte 2, interactuaremos realmente con nuestro contrato inteligente acuñando un NFT](/developers/tutorials/how-to-mint-an-nft/), y en la [Parte 3 le mostraremos cómo ver su NFT en su billetera de Ethereum](/developers/tutorials/how-to-view-nft-in-metamask/)!
From 6f307e16d4ad9b85e6106a3d631883a55ba79bc2 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:04 -0300
Subject: [PATCH 271/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/java/index.md
---
.../docs/programming-languages/java/index.md | 70 ++++++++++---------
1 file changed, 36 insertions(+), 34 deletions(-)
diff --git a/public/content/translations/es/developers/docs/programming-languages/java/index.md b/public/content/translations/es/developers/docs/programming-languages/java/index.md
index 00cea95cfba..06b77139d14 100644
--- a/public/content/translations/es/developers/docs/programming-languages/java/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/java/index.md
@@ -1,63 +1,65 @@
---
-title: Ethereum para desarrolladores Java
+title: Ethereum para desarrolladores de Java
description: Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Java
lang: es
incomplete: true
---
-Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Java
+Aprenda a desarrollar para Ethereum usando proyectos y herramientas basadas en Java
-Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser fiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, es decir, ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
+Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser confiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, es decir, ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
-## Empezando con contratos inteligentes y el lenguaje Solidity {#getting-started-with-smart-contracts-and-solidity}
+## Comenzar con contratos inteligentes y con el lenguaje Solidity {#getting-started-with-smart-contracts-and-solidity}
**Da los primeros pasos para integrar Java con Ethereum**
-¿Necesitas una introducción más básica para empezar? Visite [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
+¿Necesita una introducción más básica para empezar? Consulte [ethereum.org/learn](/learn/) o [ethereum.org/developers.](/developers/)
-- [Explicación de la cadena de bloques](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [Explicación de los contratos inteligentes](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [Escribir el primer contrato inteligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
-- [Aprender a compilar e implementar Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [Cadena de bloques explicada]
+ (https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [Comprender los contratos inteligentes](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [Escriba su primer contrato inteligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Aprenda a compilar e implementar Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
## Trabajar con clientes de Ethereum {#working-with-ethereum-clients}
-Aprende cómo usar [Web3J](https://github.com/web3j/web3j) y Hyperledger Besu, dos clientes líderes de Java Ethereum
+Aprenda a usar [Web3J](https://github.com/web3j/web3j) y Hyperledger Besu, dos de los principales clientes de Ethereum para Java
-- [Conexión a un cliente de Ethereum con Java, Eclipse y Web3j](https://kauri.io/article/b9eb647c47a546bc95693acc0be72546/connecting-to-an-ethereum-client-with-java-eclipse-and-web3j)
-- [Administrar una cuenta de Ethereum con Java y Web3j](https://kauri.io/article/925d923e12c543da9a0a3e617be963b4/manage-an-ethereum-account-with-java-and-web3j)
-- [Generar un contenedor Java a partir de tu contrato inteligente](https://kauri.io/article/84475132317d4d6a84a2c42eb9348e4b/generate-a-java-wrapper-from-your-smart-contract)
-- [Interacción con un contrato inteligente de Ethereum](https://kauri.io/article/14dc434d11ef4ee18bf7d57f079e246e/interacting-with-an-ethereum-smart-contract-in-java)
+- [Conexión a un cliente de Ethereum con Java, Eclipse y Web3J](https://kauri.io/article/b9eb647c47a546bc95693acc0be72546/connecting-to-an-ethereum-client-with-java-eclipse-and-web3j)
+- [Gestionar una cuenta de Ethereum con Java y Web3j](https://kauri.io/article/925d923e12c543da9a0a3e617be963b4/manage-an-ethereum-account-with-java-and-web3j)
+- [Generar un wrapper de Java a partir de su contrato inteligente](https://kauri.io/article/84475132317d4d6a84a2c42eb9348e4b/generate-a-java-wrapper-from-your-smart-contract)
+- [Interactuar con un contrato inteligente de Ethereum](https://kauri.io/article/14dc434d11ef4ee18bf7d57f079e246e/interacting-with-an-ethereum-smart-contract-in-java)
- [Escuchar eventos de contratos inteligentes de Ethereum](https://kauri.io/article/760f495423db42f988d17b8c145b0874/listening-for-ethereum-smart-contract-events-in-java)
-- [Uso de Besu (Pantheon), el cliente de Java Ethereum con Linux](https://kauri.io/article/276dd27f1458443295eea58403fd6965/using-pantheon-the-java-ethereum-client-with-linux)
-- [Ejecución de un nodo Besu (Pantheon) de Hyperledger en las pruebas de integración de Java](https://kauri.io/article/7dc3ecc391e54f7b8cbf4e5fa0caf780/running-a-pantheon-node-in-java-integration-tests)
-- [Hoja de Cheat Web3j](https://kauri.io/web3j-cheat-sheet-(java-ethereum)/5dfa1ea941ac3d0001ce1d90/c)
+- [Usar Besu (Pantheon), el cliente de Ethereum en Java con Linux](https://kauri.io/article/276dd27f1458443295eea58403fd6965/using-pantheon-the-java-ethereum-client-with-linux)
+- [Ejecutar un nodo de Hyperledger Besu (Pantheon) en pruebas de integración de Java](https://kauri.io/article/7dc3ecc391e54f7b8cbf4e5fa0caf780/running-a-pantheon-node-in-java-integration-tests)
+- [Guía de referencia rápida de Web3j](https://kauri.io/web3j-cheat-sheet-\(java-ethereum\)/5dfa1ea941ac3d0001ce1d90/c)
-Aprenda a usar [ethers-kt](https://github.com/Kr1ptal/ethers-kt), una biblioteca Kotlin asíncrona y de alto rendimiento para interactuar con cadenas de bloques basadas en EVM. Dirigido a las plataformas JVM y Android.
-- [Transferencia de tokens ERC20](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/abi/TransferERC20.kt)
-- [Intercambio UniswapV2 con escucha de eventos](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/tokenswapwitheventlistening/TokenSwapWithEventListening.kt)
-- [Rastreador de saldo ETH/ERC20](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/balancetracker/BalanceTracker.kt)
+Aprenda a usar [ethers-kt](https://github.com/Kr1ptal/ethers-kt), una biblioteca de Kotlin asíncrona y de alto rendimiento para interactuar con cadenas de bloques basadas en EVM. Dirigido a las plataformas JVM y Android.
-## Artículos intermedios {#intermediate-articles}
+- [Transferir tokens ERC20](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/abi/TransferERC20.kt)
+- [Intercambio de UniswapV2 con escucha de eventos](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/tokenswapwitheventlistening/TokenSwapWithEventListening.kt)
+- [Seguidor de saldo de ETH / ERC20](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/balancetracker/BalanceTracker.kt)
-- [Gestión del almacenamiento en una aplicación de Java con IPFS](https://kauri.io/article/3e8494f4f56f48c4bb77f1f925c6d926/managing-storage-in-a-java-application-with-ipfs)
-- [Administrar tokens de tipo ERC20 en Java con Web3j](https://kauri.io/article/d13e911bbf624108b1d5718175a5e0a0/manage-erc20-tokens-in-java-with-web3j)
-- [Administradores de transacciones Web3j](https://kauri.io/article/4cb780bb4d0846438d11885a25b6d7e7/web3j-transaction-managers)
+## Articulos para usuarios familiarizados {#intermediate-articles}
+
+- [Gestionar el almacenamiento en una aplicación de Java con IPFS](https://kauri.io/article/3e8494f4f56f48c4bb77f1f925c6d926/managing-storage-in-a-java-application-with-ipfs)
+- [Gestionar tokens ERC20 en Java con Web3j](https://kauri.io/article/d13e911bbf624108b1d5718175a5e0a0/manage-erc20-tokens-in-java-with-web3j)
+- [Gestores de transacciones de Web3j](https://kauri.io/article/4cb780bb4d0846438d11885a25b6d7e7/web3j-transaction-managers)
## Patrones de uso avanzado {#advanced-use-patterns}
-- [Uso de Eventeum para construir una caché de datos de contratos inteligentes de Java](https://kauri.io/article/fe81ee9612eb4e5a9ab72790ef24283d/using-eventeum-to-build-a-java-smart-contract-data-cache)
+- [Usar Eventeum para crear una caché de datos de contratos inteligentes de Java](https://kauri.io/article/fe81ee9612eb4e5a9ab72790ef24283d/using-eventeum-to-build-a-java-smart-contract-data-cache)
-## Proyectos y herramientas Java {#java-projects-and-tools}
+## Proyectos y herramientas de Java {#java-projects-and-tools}
-- [Web3J (biblioteca para interactuar con los clientes de Ethereum)](https://github.com/web3j/web3j)
-- [ethers-kt (biblioteca Kotlin/Java/Android asíncrona y de alto rendimiento para cadenas de bloques basadas en EVM)](https://github.com/Kr1ptal/ethers-kt)
-- [Evento (Event Listener)](https://github.com/ConsenSys/eventeum)
-- [Mahuta (herramientas de Dev para IPFS)](https://github.com/ConsenSys/mahuta)
+- [Web3J (biblioteca para interactuar con clientes de Ethereum)](https://github.com/web3j/web3j)
+- [ethers-kt (biblioteca asíncrona y de alto rendimiento de Kotlin/Java/Android para cadenas de bloques basadas en EVM.)](https://github.com/Kr1ptal/ethers-kt)
+- [Eventeum (escucha de eventos)](https://github.com/ConsenSys/eventeum)
+- [Mahuta (herramientas de desarrollo para IPFS)](https://github.com/ConsenSys/mahuta)
-¿Buscas más recursos? Visita [ethereum.org/developers.](/developers/)
+¿Buscas más recursos? Consulte [ethereum.org/developers.](/developers/)
-## Colaboradores de la comunidad Java {#java-community-contributors}
+## Colaboradores de la comunidad de Java {#java-community-contributors}
-- [Constructores de E/S](https://io.builders)
+- [IO Builders](https://io.builders)
- [Kauri](https://kauri.io)
From 84d37e42e70b2d26a034a48a114c902dd64e4a8f Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:06 -0300
Subject: [PATCH 272/589] update(i18n):
public/content/translations/es/contributing/design/adding-design-resources/index.md
---
.../design/adding-design-resources/index.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/public/content/translations/es/contributing/design/adding-design-resources/index.md b/public/content/translations/es/contributing/design/adding-design-resources/index.md
index 4cc870fbf92..19fc2407b43 100644
--- a/public/content/translations/es/contributing/design/adding-design-resources/index.md
+++ b/public/content/translations/es/contributing/design/adding-design-resources/index.md
@@ -4,15 +4,15 @@ description: Pautas y requerimientos para asegurar la calidad de los materiales
lang: es
---
-# Añadiendo recursos de diseño {#adding-design-resources}
+# Añadir recursos de diseño {#adding-design-resources}
-Cualquiera puede sugerir nuevos materiales de diseño para la [página de diseño y experiencia del usuario en Web3](/developers/docs/design-and-ux/).
+Cualquiera puede sugerir nuevos materiales de diseño a la [página Diseño y UX en web3](/developers/docs/design-and-ux/).
Tenga en cuenta que la finalidad de esta página es proporcionar valor a los usuarios que aspiran ser diseñadores en Web3. La sección de diseño no está ahí para que la uses para anunciar tus servicios, productos o plataformas.
Para asegurar que mantenemos un standard alto de información y promover información valiosa hemos establecido un listado de políticas:
-## Estudios de Investigación y Tableros {#Research-studies}
+## Estudios de investigación y paneles {#Research-studies}
1. Metodología de Sólida
@@ -48,7 +48,7 @@ c. La escritura debería de ser concisa y directa.
a. La principal meta del artículo debería de ser compartir conocimiento por encima de promover un proyecto particular o compañía.
-## Comunidades / DAOs {#Communities-and-DAOs}
+## Comunidades / DAO {#Communities-and-DAOs}
1. El sitio web debe indicar de forma clara como ingresar a la DAO/Comunidad
@@ -56,7 +56,7 @@ a. La principal meta del artículo debería de ser compartir conocimiento por en
a. Deben incluirse y explicarse los beneficios de convertirse en miembro.
-**Ejemplos**: recibimiento de feedback en trabajos, acceso a oportunidades de trabajo o recompensas, compartimiento ideas de diseños e investigaciones.
+**Ejemplos**: recibir comentarios sobre el trabajo, acceder a oportunidades de trabajo o recompensas, compartir ideas sobre diseño e investigación.
3. Una comunicación activa y vibrante en Discord
From 7a4dc2107404d4af9457d9fc6c8288943a24a6f2 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:07 -0300
Subject: [PATCH 273/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/dot-net/index.md
---
.../programming-languages/dot-net/index.md | 87 ++++++++++---------
1 file changed, 44 insertions(+), 43 deletions(-)
diff --git a/public/content/translations/es/developers/docs/programming-languages/dot-net/index.md b/public/content/translations/es/developers/docs/programming-languages/dot-net/index.md
index 63a50d602af..07185198cfb 100644
--- a/public/content/translations/es/developers/docs/programming-languages/dot-net/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/dot-net/index.md
@@ -5,54 +5,55 @@ lang: es
incomplete: true
---
-Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en .NET
+Aprenda a desarrollar para Ethereum utilizando proyectos y herramientas basadas en .NET
-Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser confiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, lo que significa que ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
+Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprovechan las ventajas de las criptomonedas y la tecnología de blockchain. Estas dapps pueden ser confiables, lo que significa que, una vez implementadas en Ethereum, siempre se ejecutan tal y como se programaron. Pueden controlar los activos digitales para crear nuevos tipos de aplicaciones financieras. Estas aplicaciones pueden ser descentralizadas, es decir, ninguna entidad o persona las controla y, por lo tanto, son prácticamente imposibles de censurar.
Construye aplicaciones descentralizadas sobre Ethereum e interactúa con contratos inteligentes usando herramientas y lenguajes del stack de tecnología de Microsoft , compatibles con C#, # Visual Basic .NET, F#, sobre herramientas como VSCode y Visual Studio, a través de .NET Framework/.NET Core/.NET Standard. Implementa una blockchain de Ethereum en Azure mediante Microsoft Azure Blockchain en tan solo unos minutos. ¡Trae el amor de .NET a Ethereum!
-## Empezando con contratos inteligentes y el lenguaje Solidity {#getting-started-with-smart-contracts-and-the-solidity-language}
+## Comenzar con contratos inteligentes y con el lenguaje Solidity {#getting-started-with-smart-contracts-and-the-solidity-language}
**Da los primeros pasos para integrar .NET con Ethereum**
-¿Necesitas una introducción más básica para empezar? Visita [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
+¿Necesita una introducción más básica para empezar? Visite [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
-- [Blockchain explicada](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [Cadena de bloques explicada]
+ (https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
- [Comprender los contratos inteligentes](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [Escribir el primer contrato inteligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
-- [Aprende a compilar e implementar Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [Escriba su primer contrato inteligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Aprenda a compilar e implementar Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
## Referencias y enlaces para principiantes {#beginner-references-and-links}
**Introducción a la biblioteca de Nethereum y a Visual Studio Code para Solidity**
-- [Nethereum, Iniciando](https://docs.nethereum.com/en/latest/getting-started/)
-- [Instalación de Visual Studio Code para Solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity)
-- [Un flujo de trabajo para desarrolladores de .NET que crean y utilizan contratos inteligentes de Ethereum](https://medium.com/coinmonks/a-net-developers-workflow-for-creating-and-calling-ethereum-smart-contracts-44714f191db2)
+- [Nethereum, primeros pasos](https://docs.nethereum.com/en/latest/getting-started/)
+- [Instalación de VS Code Solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity)
+- [Flujo de trabajo de un desarrollador de .NET para crear e invocar contratos inteligentes de Ethereum](https://medium.com/coinmonks/a-net-developers-workflow-for-creating-and-calling-ethereum-smart-contracts-44714f191db2)
- [Integración de contratos inteligentes con Nethereum](https://kauri.io/#collections/Getting%20Started/smart-contracts-integration-with-nethereum/#smart-contracts-integration-with-nethereumm)
-- [Creación de una interfaz entre .NET y contratos inteligentes Ethereum de blockchain mediante Nethereum](https://medium.com/my-blockchain-development-daily-journey/interfacing-net-and-ethereum-blockchain-smart-contracts-with-nethereum-2fa3729ac933), también en [中文版](https://medium.com/my-blockchain-development-daily-journey/%E4%BD%BF%E7%94%A8nethereum%E9%80%A3%E6%8E%A5-net%E5%92%8C%E4%BB%A5%E5%A4%AA%E7%B6%B2%E5%8D%80%E5%A1%8A%E9%8F%88%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84-4a96d35ad1e1)
-- [Nethereum: Una biblioteca de integración de .NET de código abierto para blockchain](https://kauri.io/#collections/a%20hackathon%20survival%20guide/nethereum-an-open-source-.net-integration-library/)
-- [Escribir transacciones de Ethereum en la base de datos de SQL mediante Nethereum](https://medium.com/coinmonks/writing-ethereum-transactions-to-sql-database-using-nethereum-fd94e0e4fa36)
-- [Observa cómo implementar fácilmente contratos inteligentes de Ethereum usando C# y VisualStudio](https://koukia.ca/deploy-ethereum-smart-contracts-using-c-and-visualstudio-5be188ae928c)
+- [Interconexión de .NET y contratos inteligentes de la cadena de bloques de Ethereum con Nethereum](https://medium.com/my-blockchain-development-daily-journey/interfacing-net-and-ethereum-blockchain-smart-contracts-with-nethereum-2fa3729ac933), también en [中文版](https://medium.com/my-blockchain-development-daily-journey/%E4%BD%BF%E7%94%A8nethereum%E9%80%A3%E6%8E%A5-net%E5%92%8C%E4%BB%A5%E5%A4%AA%E7%B6%B2%E5%8D%80%E5%A1%8A%E9%8F%88%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84-4a96d35ad1e1)
+- [Nethereum: una biblioteca de integración de .NET de código abierto para la cadena de bloques](https://kauri.io/#collections/a%20hackathon%20survival%20guide/nethereum-an-open-source-.net-integration-library/)
+- [Escritura de transacciones de Ethereum en una base de datos SQL usando Nethereum](https://medium.com/coinmonks/writing-ethereum-transactions-to-sql-database-using-nethereum-fd94e0e4fa36)
+- [Vea cómo desplegar fácilmente contratos inteligentes de Ethereum usando C# y VisualStudio](https://koukia.ca/deploy-ethereum-smart-contracts-using-c-and-visualstudio-5be188ae928c)
-**¿Quieres omitir la configuración por ahora y pasar directamente a los ejemplos?**
+**¿Quiere omitir la configuración por ahora y pasar directamente a los ejemplos?**
-- [Playground](http://playground.nethereum.com/): Interactúa con Ethereum y aprende a usar Nethereum a través del navegador.
- - Consulta del saldo de la cuenta con [C#](http://playground.nethereum.com/csharp/id/1001) [VB.NET](http://playground.nethereum.com/vb/id/2001)
- - Consulta la ERC20 del saldo del contrato inteligente con [C#](http://playground.nethereum.com/csharp/id/1005) [VB.NET](http://playground.nethereum.com/vb/id/2004)
- - Transferir Ether a una cuenta [C#](http://playground.nethereum.com/csharp/id/1003) [VB.NET](http://playground.nethereum.com/vb/id/2003)
+- [Playground](http://playground.nethereum.com/): interactúe con Ethereum y aprenda a usar Nethereum a través del navegador.
+ - Consultar el saldo de la cuenta [C#](http://playground.nethereum.com/csharp/id/1001) [VB.NET](http://playground.nethereum.com/vb/id/2001)
+ - Consultar el saldo del contrato inteligente ERC20 [C#](http://playground.nethereum.com/csharp/id/1005) [VB.NET](http://playground.nethereum.com/vb/id/2004)
+ - Transferir ether a una cuenta [C#](http://playground.nethereum.com/csharp/id/1003) [VB.NET](http://playground.nethereum.com/vb/id/2003)
- ... etc.
-## Artículos de nivel intermedio {#intermediate-articles}
+## Articulos para usuarios familiarizados {#intermediate-articles}
-- [Libro de trabajo y lista de ejemplos de Nethereum](http://docs.nethereum.com/en/latest/Nethereum.Workbooks/docs/)
-- [Implementar tus propias cadenas de prueba de desarrollo](https://github.com/Nethereum/Testchains)
-- [Complemento Codegen de VS Code para Solidity](https://docs.nethereum.com/en/latest/nethereum-codegen-vscodesolidity/)
-- [Unity y Ethereum: ¿Por qué y cómo?](https://www.raywenderlich.com/5509-unity-and-ethereum-why-and-how)
-- [Crear una API web ASP.Net Core para dapps de Ethereum](https://tech-mint.com/blockchain/create-asp-net-core-web-api-for-ethereum-dapps/)
-- [Utilizar Nethereum Web3 para implementar un sistema de seguimiento de cadena de suministro](http://blog.pomiager.com/post/using-nethereum-web3-to-implement-a-supply-chain-traking-system4)
-- [Procesamiento de bloques de Nethereum](https://nethereum.readthedocs.io/en/latest/nethereum-block-processing-detail/) con [una muestra de Playground C#](http://playground.nethereum.com/csharp/id/1025)
-- [Streaming de WebSocket de Nethereum](https://nethereum.readthedocs.io/en/latest/nethereum-subscriptions-streaming/)
+- [Libro de trabajo/Lista de ejemplos de Nethereum](http://docs.nethereum.com/en/latest/Nethereum.Workbooks/docs/)
+- [Despliegue sus propias cadenas de prueba de desarrollo](https://github.com/Nethereum/Testchains)
+- [Plugin de generación de código de VSCode para Solidity](https://docs.nethereum.com/en/latest/nethereum-codegen-vscodesolidity/)
+- [Unity y Ethereum: por qué y cómo](https://www.raywenderlich.com/5509-unity-and-ethereum-why-and-how)
+- [Crear una API web de ASP.NET Core para dapps de Ethereum](https://tech-mint.com/blockchain/create-asp-net-core-web-api-for-ethereum-dapps/)
+- [Uso de Nethereum Web3 para implementar un sistema de seguimiento de la cadena de suministro](http://blog.pomiager.com/post/using-nethereum-web3-to-implement-a-supply-chain-traking-system4)
+- [Procesamiento de bloques de Nethereum](https://nethereum.readthedocs.io/en/latest/nethereum-block-processing-detail/), con [ejemplo de C# Playground](http://playground.nethereum.com/csharp/id/1025)
+- [Transmisión por websocket de Nethereum](https://nethereum.readthedocs.io/en/latest/nethereum-subscriptions-streaming/)
- [Kaleido y Nethereum](https://kaleido.io/kaleido-and-nethereum/)
- [Quorum y Nethereum](https://github.com/Nethereum/Nethereum/blob/master/src/Nethereum.Quorum/README.md)
@@ -60,27 +61,27 @@ Construye aplicaciones descentralizadas sobre Ethereum e interactúa con contrat
- [Azure Key Vault y Nethereum](https://github.com/Azure-Samples/bc-community-samples/tree/master/akv-nethereum)
- [Nethereum.DappHybrid](https://github.com/Nethereum/Nethereum.DappHybrid)
-- [Arquitectura de referencia de back-end de Ujo Nethereum](https://docs.nethereum.com/en/latest/nethereum-ujo-backend-sample/)
+- [Arquitectura de referencia del backend de Ujo Nethereum](https://docs.nethereum.com/en/latest/nethereum-ujo-backend-sample/)
## Proyectos, herramientas y otras cosas divertidas de .NET {#dot-net-projects-tools-and-other-fun-stuff}
-- [Nethereum Playground:](http://playground.nethereum.com/) _Compila, crea y ejecuta fragmentos de código de Nethereum en el navegador_
-- [Nethereum Codegen Blazor:](https://github.com/Nethereum/Nethereum.CodeGen.Blazor) _Generador de código de Nethereum con IU en Blazor_
-- [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor) : _Un explorador de blockchain ligero de .NET Wasm SPA y una cartera sencilla_
-- [Wonka Business Rules Engine:](https://docs.nethereum.com/en/latest/wonka/)_ Un motor de reglas de negocio (para ambas plataformas .NET y Ethereum) que está inherentemente impulsado por metadatos_
-- [Nethermind:](https://github.com/NethermindEth/nethermind) _Cliente .NET Core Ethereum para Linux, Windows, MacOS_
-- [eth-utils](https://github.com/ethereum/eth-utils/): _Funciones de utilidad para trabajar con bases de código relacionadas con Ethereum_
-- [TestChains:](https://github.com/Nethereum/TestChains) _DevChains de .NET preconfiguradas para responder rápidamente (PoA)_
+- [Nethereum Playground](http://playground.nethereum.com/): _compile, cree y ejecute fragmentos de código de Nethereum en el navegador_
+- [Nethereum Codegen Blazor](https://github.com/Nethereum/Nethereum.CodeGen.Blazor): _generador de código Nethereum con IU en Blazor_
+- [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor): _un explorador de la cadena de bloques ligero y SPA Wasm de .NET y una billetera sencilla_
+- [Motor de reglas de negocio Wonka](https://docs.nethereum.com/en/latest/wonka/): _un motor de reglas de negocio (tanto para la plataforma .NET como para la plataforma Ethereum) que se basa intrínsecamente en metadatos_
+- [Nethermind](https://github.com/NethermindEth/nethermind): _un cliente de Ethereum .NET Core para Linux, Windows y MacOS_
+- [eth-utils](https://github.com/ethereum/eth-utils/) - _Funciones de utilidad para trabajar con bases de código relacionadas con Ethereum_
+- [TestChains](https://github.com/Nethereum/TestChains): _cadenas de desarrollo .NET preconfiguradas para una respuesta rápida (PoA)_
-¿Buscas más recursos? Visita [ethereum.org/developers.](/developers/).
+¿Buscas más recursos? Consulte [ethereum.org/developers](/developers/).
-## Colaboradores de la comunidad de .NET {#dot-net-community-contributors}
+## Colaboradores de la comunidad .NET {#dot-net-community-contributors}
-En Nethereum, utilizamos [Gitter](https://gitter.im/Nethereum/Nethereum), una plataforma en la que los usuarios pueden preguntar o responder preguntas, obtener ayuda o simplemente relajarse. Siéntase libre de hacer una PR o abrir un problema en el [repositorio de GitHub de Nethereum](https://github.com/Nethereum), o simplemente navegue por los muchos proyectos laterales/de muestra que tenemos. ¡También puedes encontrarnos en [Discord](https://discord.gg/jQPrR58FxX)!
+En Nethereum, solemos pasar el rato en [Gitter](https://gitter.im/Nethereum/Nethereum), donde todo el mundo puede hacer/responder preguntas, obtener ayuda o simplemente relajarse. No dude en hacer una PR o abrir un problema en el [repositorio de Nethereum en GitHub](https://github.com/Nethereum), o simplemente explorar los muchos proyectos paralelos/de ejemplo que tenemos. ¡También puede encontrarnos en [Discord](https://discord.gg/jQPrR58FxX)!
-Si es nuevo en Nethermind y necesita ayuda para comenzar, únase a nuestro [Discord](http://discord.gg/PaCMRFdvWT). Nuestros desarrolladores están a su disposición para responder sus preguntas. No dude en abrir una PR o en plantear cualquier problema en el [repositorio de GitHub de Nethermind](https://github.com/NethermindEth/nethermind).
+Si es nuevo en Nethermind y necesita ayuda para empezar, únase a nuestro [Discord](http://discord.gg/PaCMRFdvWT). Nuestros desarrolladores están a su disposición para responder sus preguntas. No dude en abrir una PR o plantear cualquier problema en el [repositorio de Nethermind en GitHub](https://github.com/NethermindEth/nethermind).
-## Otras listas adicionales {#other-aggregated-lists}
+## Otras listas agregadas {#other-aggregated-lists}
-[Sitio oficial de Nethereum](https://nethereum.com/)
-[Sitio oficial de Nethermind ](https://nethermind.io/)
+[Sitio oficial de Nethereum](https://nethereum.com/)
+[Sitio oficial de Nethermind](https://nethermind.io/)
From 5d9d83306eb9c1ec9a3cacc6aa1aab61c3d5400a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:09 -0300
Subject: [PATCH 274/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/composability/index.md
---
.../smart-contracts/composability/index.md | 36 +++++++++----------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/public/content/translations/es/developers/docs/smart-contracts/composability/index.md b/public/content/translations/es/developers/docs/smart-contracts/composability/index.md
index b1353f87450..5713cab34e8 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/composability/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/composability/index.md
@@ -1,13 +1,13 @@
---
title: Componibilidad de los contratos inteligentes
-description:
+description: Descubra cómo los contratos inteligentes pueden combinarse al igual que los bloques de Lego para construir DApps complejas reutilizando componentes existentes.
lang: es
incomplete: true
---
-## Breve introducción {#a-brief-introduction}
+## Una breve introducción {#a-brief-introduction}
-Los contratos inteligentes son públicos en Ethereum y se pueden considerar API abiertas. No necesitas escribir tu propio contrato inteligente para convertirte en un desarrollador de dapp, solo necesitas saber cómo interactuar con ellos. Por ejemplo, puedes utilizar los contratos inteligentes existentes de [Uniswap](https://uniswap.exchange/swap), un mercado descentralizado, para manejar toda la lógica del intercambio de tokens en tu aplicación; No necesitas empezar desde cero. Consulte algunos de sus contratos [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) y [v3](https://github.com/Uniswap/uniswap-v3-core/tree/main/contracts).
+Los contratos inteligentes son públicos en Ethereum y se pueden considerar API abiertas. No necesitas escribir tu propio contrato inteligente para convertirte en un desarrollador de dapp, solo necesitas saber cómo interactuar con ellos. Por ejemplo, puede usar los contratos inteligentes existentes de [Uniswap](https://uniswap.exchange/swap), un intercambio descentralizado, para gestionar toda la lógica de intercambio de tokens en su aplicación; no necesita empezar desde cero. Consulte algunos de sus contratos [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) y [v3](https://github.com/Uniswap/uniswap-v3-core/tree/main/contracts).
## ¿Qué es la componibilidad? {#what-is-composability}
@@ -19,17 +19,17 @@ En Ethereum, todos los contratos inteligentes son una especie de Lego: puede usa
Los contratos inteligentes de Ethereum son como API públicas, por lo que cualquiera puede interactuar con el contrato inteligente o integrarlos en dapps para añadir nuevas funcionalidades. La componibilidad de los contratos inteligentes generalmente se basa en tres principios: modularidad, autonomía y capacidad de descubrimiento:
-**1. Modularidad**: Es la capacidad de los componentes individuales para realizar una tarea específica. En Ethereum, cada contrato inteligente tiene un caso de uso específico (como se muestra en el ejemplo de Uniswap).
+**1. Modularidad**: Es la capacidad que tienen los componentes individuales para realizar una tarea específica. En Ethereum, cada contrato inteligente tiene un caso de uso específico (como se muestra en el ejemplo de Uniswap).
-**2. Autonomía**: Los elementos componibles deben ser capaces de funcionar de forma independiente. Cada contrato inteligente en Ethereum es autoejecutable y puede funcionar sin depender de otras partes del sistema.
+**2. Autonomía**: Los componentes componibles deben poder operar de forma independiente. Cada contrato inteligente en Ethereum es autoejecutable y puede funcionar sin depender de otras partes del sistema.
-**3. Capacidad de descubrimiento**: Los desarrolladores no pueden invocar contratos externos o integrar bibliotecas de software en aplicaciones si los primeros no están disponibles públicamente. Por diseño, los contratos inteligentes son de código abierto; cualquiera puede invocar un contrato inteligente o realizar una bifurcación de la base de código.
+**3. Capacidad de descubrimiento**: Los desarrolladores no pueden llamar a contratos externos ni integrar bibliotecas de software en aplicaciones si estos no están disponibles públicamente. Por diseño, los contratos inteligentes son de código abierto; cualquiera puede invocar un contrato inteligente o realizar una bifurcación de la base de código.
## Beneficios de la componibilidad {#benefits-of-composability}
### Ciclo de desarrollo más corto {#shorter-development-cycle}
-La componibilidad reduce el trabajo que los desarrolladores tienen que hacer al crear [dapps](/apps/#what-are-dapps). [Como indica Naval Ravikant:](https://twitter.com/naval/status/1444366754650656770) "Código abierto significa que cada problema tiene que resolverse una vez."
+La componibilidad reduce el trabajo que los desarrolladores tienen que hacer al crear [dapps](/apps/#what-are-dapps). [Como dice Naval Ravikant:](https://twitter.com/naval/status/1444366754650656770) "El código abierto significa que cada problema tiene que resolverse una sola vez".
Si hay un contrato inteligente que resuelve un problema, otros desarrolladores pueden reutilizarlo, por lo que no tienen que resolver el mismo problema. De esta manera, los desarrolladores pueden usar las bibliotecas de software ya existentes y añadir funcionalidad adicional para crear nuevas dapps.
@@ -43,34 +43,34 @@ La interoperabilidad entre los componentes del ecosistema Ethereum mejora la exp
Utilizaremos un ejemplo de trading de arbitraje para mostrar los beneficios de la interoperabilidad:
-Si un token opera a un precio más alto en el `exchange A` que en el `exchange B`, entonces se puede aprovechar la diferencia de precio para obtener beneficios. Sin embargo, solo puede hacer esto si se tiene suficiente capital para financiar la transacción (comprar el token en el `exchange B` y venderlo en el `exchange A`).
+Si un token se cotiza más alto en el `intercambio A` que en el `intercambio B`, puede aprovechar la diferencia de precio para obtener ganancias. Sin embargo, solo puede hacerlo si tiene suficiente capital para financiar la transacción (es decir, comprar el token del `intercambio B` y venderlo en el `intercambio A`).
-En una situación donde no tiene suficientes fondos para cubrir la operación, un préstamo flash o instantáneo podría ser la mejor idea. Los [prestámos flash](/defi/#flash-loans) son algo muy técnico, pero la idea básica es que se puede pedir prestado activos (sin colateral) y devolver lo mismo en _una_ transacción.
+En una situación donde no tiene suficientes fondos para cubrir la operación, un préstamo flash o instantáneo podría ser la mejor idea. [Los préstamos flash](/defi/#flash-loans) son muy técnicos, pero la idea básica es que se pueden tomar prestados activos (sin garantía) y devolverlos en _una_ sola transacción.
-Volviendo a nuestro ejemplo inicial, un trader de arbitraje puede tomar un préstamo flash grande, comprar tokens del `exchange B`, venderlos en el `exchange A`, devolver el capital + los intereses, y quedarse con la diferencia, dentro de la misma transacción. Esta compleja lógica requiere combinar llamadas a múltiples contratos, lo que no sería posible si los contratos inteligentes no pudieran ser interoperables.
+Volviendo a nuestro ejemplo inicial, un operador de arbitraje puede tomar un gran préstamo flash, comprar tokens en el `intercambio B`, venderlos en el `intercambio A`, devolver el capital + los intereses y quedarse con las ganancias, todo dentro de la misma transacción. Esta compleja lógica requiere combinar llamadas a múltiples contratos, lo que no sería posible si los contratos inteligentes no pudieran ser interoperables.
## Ejemplos de componibilidad en Ethereum {#composability-in-ethereum}
-### Intercambio de tókenes {#token-swaps}
+### Intercambios de tokens {#token-swaps}
Si crea un dapp que requiere que las transacciones se paguen en ETH, puede permitir que los usuarios paguen en otros tokens ERC-20 integrando la lógica de intercambio de tokens. El código convertirá automáticamente el token del usuario a ETH antes de que el contrato ejecute la función invocada.
### Gobernanza {#governance}
-Crear sistemas de gobernanza a medida para una [DAO](/dao/) puede ser costoso y consumir mucho tiempo. En su lugar, se podría utilizar un kit de herramientas de gobernanza de código abierto, como [Aragon Client](https://client.aragon.org/), para arrancar la DAO y poder crear rápidamente un marco de gobernanza.
+Crear sistemas de gobernanza a medida para una [DAO](/dao/) puede ser caro y llevar mucho tiempo. En su lugar, podría utilizar un kit de herramientas de gobernanza de código abierto, como [Aragon Client](https://client.aragon.org/), para arrancar su DAO y crear rápidamente un marco de gobernanza.
-### Gestión de identidades {#identity-management}
+### Gestión de la identidad {#identity-management}
-En lugar de crear un sistema de autenticación personalizado o usar proveedores centralizados, puede integrar herramientas de identidad descentralizada (DID) para gestionar la autenticación de los usuarios. Un ejemplo es [SpruceID](https://www.spruceid.com/), un conjunto de herramientas de código abierto que ofrece la funcionalidad de "Iniciar sesión con Ethereum" que permite a los usuarios autenticar identidades con una billetera de Ethereum.
+En lugar de crear un sistema de autenticación personalizado o usar proveedores centralizados, puede integrar herramientas de identidad descentralizada (DID) para gestionar la autenticación de los usuarios. Un ejemplo es [SpruceID](https://www.spruceid.com/), un kit de herramientas de código abierto que ofrece una funcionalidad de "Iniciar sesión con Ethereum" que permite a los usuarios autenticar identidades con una billetera de Ethereum.
## Tutoriales relacionados {#related-tutorials}
-- [Comience con el desarrollo del fontend de su DApp con create-eth-app:](/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/)_ un resumen sobre cómo usar create-eth-app para crear aplicaciones con contratos inteligentes populares previamente formulados. _
+- [Arranque el desarrollo frontend de su dapp con create-eth-app](/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/) _– Una descripción general de cómo utilizar create-eth-app para crear aplicaciones con contratos inteligentes populares listos para usar._
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-_¿Conoce algún recurso en la comunidad que le haya servido de ayuda? Edita esta página y añádelo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
-- [Componibilidad es innovación](https://future.a16z.com/how-composability-unlocks-crypto-and-everything-else/)
+- [La componibilidad es innovación](https://a16zcrypto.com/posts/article/how-composability-unlocks-crypto-and-everything-else/)
- [Por qué la componibilidad es importante para la Web3](https://hackernoon.com/why-composability-matters-for-web3)
- [¿Qué es la componibilidad?](https://blog.aragon.org/what-is-composability/#:~:text=Aragon,connect%20to%20every%20other%20piece.)
From 4adc560745b41ff39dc9f16acdf79400d10e6bb7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:10 -0300
Subject: [PATCH 275/589] update(i18n):
public/content/translations/es/developers/tutorials/deploying-your-first-smart-contract/index.md
---
.../index.md | 76 ++++++++++---------
1 file changed, 39 insertions(+), 37 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/deploying-your-first-smart-contract/index.md b/public/content/translations/es/developers/tutorials/deploying-your-first-smart-contract/index.md
index 3d759ea76f4..23e54cb50e8 100644
--- a/public/content/translations/es/developers/tutorials/deploying-your-first-smart-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/deploying-your-first-smart-contract/index.md
@@ -1,12 +1,14 @@
---
title: Implementación de su primer contrato inteligente
-description: Una introducción para ejecutar su primer contrato inteligente en la red de prueba de Ethereum
+description: Una introducción a la implementación de su primer contrato inteligente en una red de prueba de Ethereum
author: "jdourlens"
tags:
- - "contratos inteligentes"
- - "remezcla"
- - "solidity"
- - "implementación"
+ [
+ "contratos Inteligentes",
+ "remix",
+ "Solidity",
+ "implementación"
+ ]
skill: beginner
lang: es
published: 2020-04-03
@@ -15,17 +17,17 @@ sourceUrl: https://ethereumdev.io/deploying-your-first-smart-contract/
address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
---
-Supongo que está tan emocionado como nosotros de [implementar](/developers/docs/smart-contracts/deploying/) e interactuar con su primer [contrato inteligente](/developers/docs/smart-contracts/) en la cadena de bloques de Ethereum.
+Supongo que está tan emocionado como nosotros por [implementar](/developers/docs/smart-contracts/deploying/) e interactuar con su primer [contrato inteligente](/developers/docs/smart-contracts/) en la cadena de bloques de Ethereum.
-No se preocupe; como es nuestro primer contrato inteligente, lo implementaremos en una [red de prueba local](/developers/docs/networks/), de modo que no cueste nada publicarlo y pueda experimentar tanto cuanto quiera.
+No se preocupe, como es nuestro primer contrato inteligente, lo implementaremos en una [red de prueba local](/developers/docs/networks/) para que no le cueste nada implementarlo y jugar con él todo lo que quiera.
## Escribir nuestro contrato {#writing-our-contract}
-El primer paso es [visitar Remix](https://remix.ethereum.org/) y crear un nuevo archivo. En la parte superior izquierda de la interfaz de Remix, añada un nuevo archivo e introduzca el nombre de archivo que quiera.
+El primer paso es [visitar Remix](https://remix.ethereum.org/) y crear un archivo nuevo. En la parte superior izquierda de la interfaz de Remix, agregue un archivo nuevo e introduzca el nombre de archivo que desee.
-
+
-En el nuevo archivo, vamos a pegar el siguiente código:
+En el nuevo archivo, pegaremos el siguiente código.
```solidity
// SPDX-License-Identifier: MIT
@@ -33,15 +35,15 @@ pragma solidity >=0.5.17;
contract Counter {
- // Public variable of type unsigned int to keep the number of counts
+ // Variable pública de tipo entero sin signo para mantener el número de cuentas
uint256 public count = 0;
- // Function that increments our counter
+ // Función que incrementa nuestro contador
function increment() public {
count += 1;
}
- // Not necessary getter to get the count value
+ // Getter no necesario para obtener el valor del contador
function getCount() public view returns (uint256) {
return count;
}
@@ -49,51 +51,51 @@ contract Counter {
}
```
-Si está acostumbrado a programar, puede adivinar fácilmente lo que hace este programa. Aquí hay una explicación línea por línea:
+Si está acostumbrado a programar, puede adivinar fácilmente lo que hace este programa. Aquí tiene una explicación línea por línea:
- Línea 4: Definimos un contrato con el nombre `Counter`.
-- Línea 7: Nuestro contrato almacena un entero sin firma llamado `count` que empieza con 0.
-- Línea 10: La primera función modificará el estado del contrato e incrementará (`increment()`) nuestra variable `count`.
-- Línea 15: La segunda función es solo un getter para poder leer el valor de nuestra variable `count` fuera de nuestro contrato inteligente. Nótese que, como definimos la variable `count` como pública, esto no es necesario, sino que se muestra como ejemplo.
+- Línea 7: Nuestro contrato almacena un entero sin signo llamado `count` que empieza en 0.
+- Línea 10: La primera función modificará el estado del contrato e incrementará nuestra variable `count`.
+- Línea 15: La segunda función es solo un getter para poder leer el valor de la variable `count` fuera del contrato inteligente. Tenga en cuenta que, como definimos nuestra variable `count` como pública, esto no es necesario, pero se muestra como ejemplo.
-Esto es todo para nuestro primer y simple contrato inteligente. Como es sabido, parece una clase de lenguajes OOP (programación orientada a objetos) como Java o C++. Ahora es momento de experimentar con nuestro contrato.
+Esto es todo para nuestro primer contrato inteligente simple. Como sabrá, se parece a una clase de lenguajes de POO (programación orientada a objetos) como Java o C++. Ahora es el momento de jugar con nuestro contrato.
-## Implementación del contrato {#deploying-our-contract}
+## Implementación de nuestro contrato {#deploying-our-contract}
-Como escribimos nuestro primer contrato inteligente, vamos a implementarlo en la cadena de bloques para poder experimentar con él.
+Ahora que hemos escrito nuestro primer contrato inteligente, lo implementaremos en la cadena de bloques para poder jugar con él.
-[Implementar nuestro contrato inteligente en la cadena de bloques](/developers/docs/smart-contracts/deploying/) consiste simplemente en enviar una transacción que incluya el código del contrato inteligente compilado sin especificar ningún destinatario.
+[Implementar el contrato inteligente en la cadena de bloques](/developers/docs/smart-contracts/deploying/) es en realidad solo enviar una transacción que contiene el código del contrato inteligente compilado sin especificar ningún destinatario.
-Primero [compilaremos el contrato](/developers/docs/smart-contracts/compiling/) haciendo clic en el ícono Compile situado en la parte izquierda:
+Primero [compilaremos el contrato](/developers/docs/smart-contracts/compiling/) haciendo clic en el icono de compilación del lado izquierdo:
-
+
-Luego haga clic en el botón Compile:
+Luego, haga clic en el botón de compilar:
-
+
-Puede optar por seleccionar la opción "Auto Compile" para que el contrato siempre se compile cuando guarde el contenido en el editor de texto.
+Puede elegir la opción «Compilación automática» para que el contrato se compile siempre que guarde el contenido en el editor de texto.
-Luego, navegue a la pantalla de implementación y ejecución de transacciones:
+Luego, vaya a la pantalla «Implementar y ejecutar transacciones»:
-
+
-Una vez que esté en la pantalla de "Deploy and run", compruebe que el nombre del contrato aparezca y haga clic en Deploy. Como puede ver en la parte superior de la página, el entorno actual es "JavaScript VM", lo que significa que desplegaremos e interactuaremos con nuestro contrato inteligente en una cadena de bloques de prueba local para poder probar más rápido y sin ningún costo.
+Una vez que esté en la pantalla «Implementar y ejecutar transacciones», verifique que aparezca el nombre de su contrato y haga clic en Implementar. Como puede ver en la parte superior de la página, el entorno actual es «JavaScript VM», lo que significa que implementaremos e interactuaremos con nuestro contrato inteligente en una cadena de bloques de prueba local para poder probar más rápido y sin coste alguno.
-
+
-Una vez que haya pulsado el botón “Deploy”, verá que su contrato aparece en la parte inferior. Haga clic en la flecha de la izquierda para expandir y ver el contenido de nuestro contrato. Esta es nuestra variable `counter`, nuestra función `increment()` y el getter `getCounter()`.
+Una vez que haya hecho clic en el botón «Implementar», verá que su contrato aparece en la parte inferior. Haga clic en la flecha de la izquierda para expandirlo y así veremos el contenido de nuestro contrato. Esta es nuestra variable `count`, nuestra función `increment()` y el getter `getCounter()`.
-Si hace clic en el botón `count` o `getCount`, se recuperará el contenido de la variable `count` del contrato y se mostrará. Como aún no hemos invocado la función `increment`, debería mostrarse 0.
+Si hace clic en el botón `count` o `getCount`, recuperará el contenido de la variable `count` del contrato y lo mostrará. Como todavía no hemos llamado a la función `increment`, debería mostrar 0.
-
+
-Llamemos ahora a la función `increment` haciendo clic en el botón. Verá los registros de las transacciones que se realizan, en la parte inferior de la ventana. Verá que los registros son diferentes cuando pulsa el botón para recuperar los datos en lugar del botón `increment`. Es porque leer datos en la cadena de bloques no necesita ninguna transacción (escritura) o tarifa. Porque solo modificar el estado de la cadena de bloques requiere hacer una transacción:
+Ahora llamemos a la función `increment` haciendo clic en el botón. Verá los registros de las transacciones que se realizan aparecer en la parte inferior de la ventana. Verá que los registros son diferentes cuando pulsa el botón para recuperar los datos en lugar del botón `increment`. Esto se debe a que la lectura de datos en la cadena de bloques no necesita ninguna transacción (escritura) ni tarifa. Porque solo la modificación del estado de la cadena de bloques requiere realizar una transacción:

-Después de presionar el botón de incremento que generará una transacción para llamar a nuestra función `increment()`, si volvemos a hacer clic en los botones de conteo o getCount, leeremos el estado recién actualizado de nuestro contrato inteligente con la variable de conteo siendo mayor que 0.
+Después de pulsar el botón de incremento, que generará una transacción para llamar a nuestra función `increment()`, si volvemos a hacer clic en los botones `count` o `getCount`, leeremos el estado recién actualizado de nuestro contrato inteligente con la variable `count` siendo mayor que 0.
-
+
-En el siguiente tutorial, veremos [cómo puede añadir eventos a sus contratos inteligentes](/developers/tutorials/logging-events-smart-contracts/). El registro de eventos es una forma conveniente de depurar su contrato inteligente y entender lo que sucede al llamar a una función.
+En el siguiente tutorial, cubriremos [cómo puede añadir eventos a sus contratos inteligentes](/developers/tutorials/logging-events-smart-contracts/). El registro de eventos es una forma conveniente de depurar su contrato inteligente y entender qué está sucediendo mientras se llama a una función.
From 478ac1f82bd4eca60e19522618549109ff76315a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:12 -0300
Subject: [PATCH 276/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/javascript/index.md
---
.../programming-languages/javascript/index.md | 41 +++++++++----------
1 file changed, 20 insertions(+), 21 deletions(-)
diff --git a/public/content/translations/es/developers/docs/programming-languages/javascript/index.md b/public/content/translations/es/developers/docs/programming-languages/javascript/index.md
index 5395ceb70da..422ebaad1e8 100644
--- a/public/content/translations/es/developers/docs/programming-languages/javascript/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/javascript/index.md
@@ -4,35 +4,36 @@ description: Aprende cómo desarrollar para Ethereum mediante proyectos y herram
lang: es
---
-JavaScript se encuentra entre los lenguajes más populares del ecosistema Ethereum. De hecho, hay un [equipo](https://github.com/ethereumjs) dedicado a programar la mayor cantidad posible de Ethereum en JavaScript.
+JavaScript se encuentra entre los lenguajes más populares del ecosistema Ethereum. De hecho, hay un [equipo](https://github.com/ethereumjs) dedicado a llevar la mayor cantidad posible de Ethereum a JavaScript.
-Hay posibilidad de programar en JavaScript (o algo similar) en [todos los niveles de la pila](/developers/docs/ethereum-stack/).
+Hay oportunidades para escribir en JavaScript (o algo similar) en [todos los niveles de la pila](/developers/docs/ethereum-stack/).
## Interactuar con Ethereum {#interact-with-ethereum}
-### Bibliotecas API JavaScript {#javascript-api-libraries}
+### Librerías de API de JavaScript {#javascript-api-libraries}
-Si quiere escribir JavaScript para consultar la cadena de bloques, enviar transacciones y demás, la forma más conveniente es utilizando la [biblioteca de API de JavaScript](/developers/docs/apis/javascript/). Estas API permiten a los desarrolladores interactuar fácilmente con los [nodos de la red Ethereum](/developers/docs/nodes-and-clients/).
+Si desea escribir en JavaScript para consultar la cadena de bloques, enviar transacciones y más, la forma más conveniente de hacerlo es utilizando una [librería de API de JavaScript](/developers/docs/apis/javascript/). Estas API permiten a los desarrolladores interactuar fácilmente con los [nodos de la red Ethereum](/developers/docs/nodes-and-clients/).
Puedes utilizar estas bibliotecas para interactuar con contratos inteligentes en Ethereum de modo que es posible construir una dapp que solo utilice JavaScript para interactuar con contratos preexistentes.
-**Revisa**
+**Eche un vistazo**
-- [Web3.js](https://web3js.readthedocs.io/)
-- [Ethers.js](https://docs.ethers.io/) _: Incluye la implementación de una cartera de Ethereum y utilidades en JavaScript y TypeScript._
-- [viem:](https://viem.sh) interfaz de TypeScript para Ethereum que proporciona primitives de bajo nivel sin estado para interactuar con Ethereum.
+- [Web3.js](https://web3js.readthedocs.io)
+- [Ethers.js](https://ethers.org) – _incluye una implementación de la billetera de Ethereum y utilidades en JavaScript y TypeScript._
+- [viem](https://viem.sh) – _una interfaz de TypeScript para Ethereum que proporciona primitivas de bajo nivel sin estado para interactuar con Ethereum._
+- [Drift](https://ryangoree.github.io/drift/) – _una metalibrería de TypeScript con caché integrado, «hooks» y simulacros de prueba para un desarrollo de Ethereum sin esfuerzo en todas las librerías de web3._
### Contratos inteligentes {#smart-contracts}
-Si es desarrollador de JavaScript y quiere escribir su propio contrato inteligente, tal vez quiera familiarizarse con [Solidity](https://solidity.readthedocs.io). Este es el contrato de lenguaje inteligente más popular y es sintácticamente similar a JavaScript, lo que hace que sea más fácil de aprender.
+Si es un desarrollador de JavaScript y quiere escribir su propio contrato inteligente, tal vez quiera familiarizarse con [Solidity](https://solidity.readthedocs.io). Este es el contrato de lenguaje inteligente más popular y es sintácticamente similar a JavaScript, lo que hace que sea más fácil de aprender.
-Más información sobre [contratos inteligentes](/developers/docs/smart-contracts/).
+Más información sobre los [contratos inteligentes](/developers/docs/smart-contracts/).
## Comprender el protocolo {#understand-the-protocol}
### La máquina virtual de Ethereum {#the-ethereum-virtual-machine}
-Hay una implementación JavaScript de la [máquina virtual de Ethereum](/developers/docs/evm/). Soporta las últimas reglas de bifurcación. Las reglas de bifurcación se refieren a los cambios realizados a la EVM como resultado de las actualizaciones previstas.
+Existe una implementación en JavaScript de la [máquina virtual de Ethereum](/developers/docs/evm/). Soporta las últimas reglas de bifurcación. Las reglas de bifurcación se refieren a los cambios realizados a la EVM como resultado de las actualizaciones previstas.
Esto está dividido en varios paquetes de JavaScript, los cuales pueden ser revisados para un mayor entendimiento:
@@ -46,17 +47,15 @@ Esto te ayudará a entender cosas como "¿Cuál es la estructura de datos de una
Si prefieres leer el código, JavaScript podría ser una buena alternativa para leer detenidamente nuestros documentos.
-**Revisa el monorepo**
-[`ethereumjs`](https://github.com/ethereumjs/ethereumjs-vm)
+**Eche un vistazo a la EVM**
+[`@ethereumjs/evm`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/evm)
### Nodos y clientes {#nodes-and-clients}
Un cliente de Ethereumjs es un desarrollo activo que le permite profundizar en cómo funcionan los clientes Ethereum en un idioma que comprenda; JavaScript.
-Solía estar alojado en un [`repositorio`](https://github.com/ethereumjs/ethereumjs-client) independiente; sin embargo, luego se fusionó con el monorepo EthereumVM como un paquete.
-
-**Revise el cliente**
-[`ethereumjs-client`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client)
+**Eche un vistazo al cliente**
+[`@ethereumjs/client`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client)
## Otros proyectos {#other-projects}
@@ -64,10 +63,10 @@ También están ocurriendo muchas otras cosas en la tierra de Ethereum JavaScrip
- bibliotecas de utilidades del monedero.
- herramientas para generar, importar y exportar claves de Ethereum.
-- una implementación del `merkle-patricia-tree`: Una estructura de datos descrita en el papel amarillo de Ethereum.
+- una implementación del `merkle-patricia-tree`: una estructura de datos descrita en el Yellow Paper de Ethereum.
-Profundice en cualquier tema que le interese en el [repositorio EthereumJS](https://github.com/ethereumjs).
+Profundice en lo que más le interese en el [repositorio de EthereumJS](https://github.com/ethereumjs)
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
From 22a6925d1cb8827e9cbfee12bf2691bb906c84cf Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:14 -0300
Subject: [PATCH 277/589] update(i18n):
public/content/translations/es/developers/docs/nodes-and-clients/index.md
---
.../docs/nodes-and-clients/index.md | 164 ++++++++++--------
1 file changed, 88 insertions(+), 76 deletions(-)
diff --git a/public/content/translations/es/developers/docs/nodes-and-clients/index.md b/public/content/translations/es/developers/docs/nodes-and-clients/index.md
index e0c32059ab4..318709b1991 100644
--- a/public/content/translations/es/developers/docs/nodes-and-clients/index.md
+++ b/public/content/translations/es/developers/docs/nodes-and-clients/index.md
@@ -9,9 +9,9 @@ Ethereum es una red distribuida de ordenadores (denominados nodos) que ejecutan
## Requisitos previos {#prerequisites}
-Debe estar familiarizado con el concepto de una red entre pares y [los aspectos básicos sobre la EVM](/developers/docs/evm/) antes de profundizar y ejecutar su propia instancia de un cliente de Ethereum. Eche un vistazo a nuestra [Introducción a Ethereum](/developers/docs/intro-to-ethereum/).
+Debe entender el concepto de una red de pares (peer-to-peer) y los [aspectos básicos de la EVM](/developers/docs/evm/) antes de profundizar y ejecutar su propia instancia de un cliente de Ethereum. Eche un vistazo a nuestra [introducción a Ethereum](/developers/docs/intro-to-ethereum/).
-Si no está familiarizado con los nodos, le recomendamos que primero lea nuestra sencilla introducción de [Cómo ejecutar un nodo de Ethereum](/run-a-node).
+Si es nuevo en el tema de los nodos, le recomendamos que primero consulte nuestra sencilla introducción sobre [cómo ejecutar un nodo de Ethereum](/run-a-node).
## ¿Qué son los nodos y clientes? {#what-are-nodes-and-clients}
@@ -20,64 +20,69 @@ Un «nodo» es cualquier instancia del software de un cliente de Ethereum que es
- El cliente de ejecución (también conocido como el ingeniero de ejecución, cliente EL, o anteriormente cliente Eth1) escucha las nuevas transacciones transmitidas en la red, las ejecuta en la EVM, y mantiene el estado más reciente y la base de datos de todos los datos actuales de Ethereum.
- El cliente de consenso (también conocido como el nodo de baliza, cliente CL y anteriormente cliente Eth2) implementa el algoritmo de consenso de la prueba de participación, que permite que la red alcance un acuerdo basado en datos validados del cliente de ejecución. También hay una tercera pieza de software, conocida como «validador» que se puede agregar al cliente de consenso, lo que permite que un nodo participe en la protección de la red.
-Estos clientes trabajan juntos para hacer un seguimiento de la cadena de encabezado de Ethereum y permitir que los usuarios interactúen con la red Ethereum. El diseño modular con múltiples piezas de software trabajando juntas se llama [complejidad encapsulada](https://vitalik.eth.limo/general/2022/02/28/complexity.html). Este enfoque hizo que fuera más fácil ejecutar [La Fusión](/roadmap/merge) sin problemas; hace que el software del cliente sea más fácil de mantener y desarrollar; y permite la reutilización de clientes individuales, por ejemplo, en el [ecosistema de capa 2](/layer-2/).
+Estos clientes trabajan juntos para hacer un seguimiento de la cadena de encabezado de Ethereum y permitir que los usuarios interactúen con la red Ethereum. El diseño modular con múltiples piezas de software que trabajan juntas se denomina [complejidad encapsulada](https://vitalik.eth.limo/general/2022/02/28/complexity.html). Este enfoque facilitó la ejecución de [la Fusión](/roadmap/merge) sin problemas, hace que el software del cliente sea más fácil de mantener y desarrollar, y permite la reutilización de clientes individuales, por ejemplo, en el [ecosistema de capa 2](/layer-2/).
- Diagrama simplificado de una ejecución acoplada y cliente de consenso.
+
+Diagrama simplificado de un cliente de ejecución y consenso acoplado.
### Diversidad de clientes {#client-diversity}
-Ambos [clientes de ejecución](/developers/docs/nodes-and-clients/#execution-clients) y [clientes de consenso](/developers/docs/nodes-and-clients/#consensus-clients) existen en una variedad de lenguajes de programación desarrollados por diferentes equipos.
+Tanto los [clientes de ejecución](/developers/docs/nodes-and-clients/#execution-clients) como los [clientes de consenso](/developers/docs/nodes-and-clients/#consensus-clients) existen en diversos lenguajes de programación desarrollados por diferentes equipos.
-Múltiples implementaciones de clientes pueden fortalecer la red reduciendo su dependencia de una sola base de código. El objetivo ideal es lograr la diversidad sin que ningún cliente tenga una posición dominante para reducir así los puntos únicos de error. La variedad de idiomas también invita a una comunidad de desarrolladores más amplia y les permite crear integraciones en su idioma preferido.
+Múltiples implementaciones de clientes pueden fortalecer la red reduciendo su dependencia de una sola base de código. El objetivo ideal es lograr la diversidad sin que ningún cliente tenga una posición dominante para reducir así los puntos únicos de error.
+La variedad de idiomas también invita a una comunidad de desarrolladores más amplia y les permite crear integraciones en su idioma preferido.
-Más información sobre la [diversidad de clientes](/developers/docs/nodes-and-clients/client-diversity/).
+Obtenga más información sobre la [diversidad de clientes](/developers/docs/nodes-and-clients/client-diversity/).
Lo que estas implementaciones de clientes tienen en común es que todas siguen una misma especificación. Estas especificaciones determinan cómo funcionan la red de Ethereum y las funciones de la cadena de bloques. Cada detalle técnico se define y se pueden encontrar especificaciones como:
-- En su origen, el [Protocolo de Ethereum](https://ethereum.github.io/yellowpaper/paper.pdf)
+- Originalmente, el [libro amarillo de Ethereum](https://ethereum.github.io/yellowpaper/paper.pdf)
- [Especificaciones de ejecución](https://github.com/ethereum/execution-specs/)
- [Especificaciones de consenso](https://github.com/ethereum/consensus-specs)
-- [Se han implementado las EIP](https://eips.ethereum.org/) en varias [actualizaciones de red](/ethereum-forks/)
+- [EIP](https://eips.ethereum.org/) implementadas en diversas [actualizaciones de la red](/ethereum-forks/)
-### Nodos de rastreamiento en la red {#network-overview}
+### Seguimiento de nodos en la red {#network-overview}
Múltiples rastreadores ofrecen una visión general en tiempo real de los nodos en la red Ethereum. Tenga en cuenta que debido a la naturaleza de las redes descentralizadas, estos rastreadores sólo pueden proporcionar una vista limitada de la red y podrían ofrecer diferentes resultados.
- [Mapa de nodos](https://etherscan.io/nodetracker) por Etherscan
-- [Nodos de Ether](https://ethernodes.org/) por Bitfly
-- [Nodewatch](https://www.nodewatch.io/) de Chainsafe, nodos de consenso rastreados
+- [Ethernodes](https://ethernodes.org/) por Bitfly
+- [Nodewatch](https://www.nodewatch.io/) por Chainsafe, rastrea nodos de consenso
+- [Monitoreth](https://monitoreth.io/) - por MigaLabs, una herramienta de monitorización de red distribuida
+- [Informes semanales de salud de la red](https://probelab.io) - por ProbeLab, utilizando el [rastreador Nebula](https://github.com/dennis-tra/nebula) y otras herramientas
-## Tipos de nodos {#node-types}
+## Tipos de nodo {#node-types}
-Si desea [ejecutar su propio nodo](/developers/docs/nodes-and-clients/run-a-node/), debe entender que existen diferentes tipos de nodos que consumen datos de forma diferente. De hecho, los clientes pueden ejecutar 3 tipos diferentes de nodos: ligero, completo y de almacenamiento. Además, hay opciones de diferentes estrategias de sincronización que permiten un tiempo de sincronización más rápido. La sincronización se refiere a la rapidez con que puede obtener la información más actualizada sobre el estado de Ethereum.
+Si quiere [ejecutar su propio nodo](/developers/docs/nodes-and-clients/run-a-node/), debe entender que hay diferentes tipos de nodos que consumen datos de manera diferente. De hecho, los clientes pueden ejecutar 3 tipos diferentes de nodos: ligero, completo y de almacenamiento. Además, hay opciones de diferentes estrategias de sincronización que permiten un tiempo de sincronización más rápido. La sincronización se refiere a la rapidez con que puede obtener la información más actualizada sobre el estado de Ethereum.
### Nodo completo {#full-node}
-Los nodos completos hacen una validación bloque a bloque de la cadena de bloques, incluyendo la descarga y verificación del cuerpo del bloque e información sobre el estado de cada bloque. Hay diferentes clases de nodo completo: algunas parten del bloque original y verifican cada bloque en el historial de la cadena de bloques. Otras comienzan su verificación en un bloque más reciente que confían en que sea válido (por ejemplo, la «sincronía instantánea» de Geth). Independientemente de dónde comience la verificación, los nodos completos solo guardan una copia local de los datos relativamente recientes (normalmente los 128 bloques recientes de msot), lo que permite eliminar los datos más antiguos para ahorrar espacio en el disco. Los datos más antiguos se pueden regenerar cuando se necesiten.
+Los nodos completos hacen una validación bloque a bloque de la cadena de bloques, incluyendo la descarga y verificación del cuerpo del bloque e información sobre el estado de cada bloque. Hay diferentes clases de nodos completos: algunos empiezan desde el bloque génesis y verifican cada uno de los bloques de todo el historial de la cadena de bloques. Otros comienzan su verificación en un bloque más reciente que consideran válido (p. ej., la «sincronización snap» de Geth). Independientemente de dónde comience la verificación, los nodos completos solo guardan una copia local de datos relativamente recientes (normalmente los 128 bloques más recientes), lo que permite eliminar datos más antiguos para ahorrar espacio en el disco. Los datos más antiguos se pueden regenerar cuando se necesiten.
- Almacena datos completos de la cadena de bloques (aunque esto se recorta periódicamente para que un nodo completo no almacene todos los datos de estado de vuelta al origen).
- Participa en la validación de bloques, verifica todos los bloques y estados.
- Todos los estados pueden recuperarse del almacenamiento local o regenerarse de «instantáneas» por un nodo completo.
- Sirve a la red y proporciona datos si se le solicita.
-### Nodo de almacenamiento {#archive-node}
+### Nodo de archivo {#archive-node}
Los nodos de archivo son nodos completos que verifican cada bloque de genesis y nunca eliminan ninguno de los datos descargados.
-- Almacena todo lo que se guarda en el nodo completo y construye un archivo de estados históricos. Esto es necesario si quiere consultar algún elemento como el saldo de una cuenta en el bloque número 4.000.000, o simplemente probar sus propias transacciones sin minarlas usando el seguimiento.
+- Almacena todo lo que se guarda en el nodo completo y construye un archivo de estados históricos. Es necesario si desea consultar algo como un saldo de cuenta en el bloque #4.000.000, o simplemente y de manera fiable su propio conjunto de transacciones sin validarlas utilizando el rastreo.
- Estos datos representan unidades de terabytes, lo que hace que los nodos de almacenamiento sean menos atractivos para el usuario medio, pero que pueden ser útiles para servicios como los exploradores de bloques, proveedores de carteras y análisis de cadena.
Sincronizar clientes en algún modo distinto al almacenamiento (archivo) ocasionará que los datos de la cadena de bloques resultante sean truncados. Esto significa que no hay un archivo de todo el historial de estados, pero el nodo completo es capaz de construirlo bajo demanda.
-Más información sobre [Nodos de almacenamiento](/developers/docs/nodes-and-clients/archive-nodes).
+Obtenga más información sobre los [nodos de archivo](/developers/docs/nodes-and-clients/archive-nodes).
### Nodo ligero {#light-node}
-En lugar de descargar cada bloque, los nodos ligeros solo descargan los encabezados de los bloques. Estos encabezados contienen información resumida sobre el contenido de los bloques. Cualquier otra información que requiera el nodo ligero se solicita a un nodo completo. El nodo ligero puede entonces verificar independientemente los datos que recibe frente a raíces de estado en los encabezados de bloque. Los nodos ligeros permiten a los usuarios participar en la red Ethereum sin el potente hardware o amplitud de achura de banda necesarios para ejecutar nodos completos. Con el tiempo, los nodos ligeros podrían ejecutarse en teléfonos móviles o dispositivos pequeños. Los nodos ligeros no participan en el consenso (es decir, no pueden ser mineros/validadores), pero sí pueden acceder a la cadena de bloques de Ethereum con las mismas garantías de funcionalidad y seguridad que un nodo completo.
+En lugar de descargar cada bloque, los nodos ligeros solo descargan los encabezados de los bloques. Estos encabezados contienen información resumida sobre el contenido de los bloques. Cualquier otra información que requiera el nodo ligero se solicita a un nodo completo. El nodo ligero puede entonces verificar independientemente los datos que recibe frente a raíces de estado en los encabezados de bloque. Los nodos ligeros permiten a los usuarios participar en la red Ethereum sin el potente hardware o amplitud de achura de banda necesarios para ejecutar nodos completos. Con el tiempo, los nodos ligeros podrían ejecutarse en teléfonos móviles o dispositivos pequeños. Los nodos ligeros no participan en el consenso (es decir, no pueden ser validadores), pero pueden acceder a la cadena de bloques de Ethereum con la misma funcionalidad y garantías de seguridad que un nodo completo.
-Los clientes ligeros son un área de desarrollo activo para Ethereum y esperamos ver pronto nuevos clientes ligeros para la capa de consenso y la capa de ejecución. También hay rutas potenciales para proporcionar datos ligeros del cliente a través de la [red de intercambio de información (o Gossip)](https://www.ethportal.net/). Lo que supone una ventaja, ya que la red de intercambio de información podría soportar una red de nodos ligeros sin necesidad de nodos completos para servir solicitudes.
+Los clientes ligeros son un área de desarrollo activo para Ethereum y esperamos ver pronto nuevos clientes ligeros para la capa de consenso y la capa de ejecución.
+También existen rutas potenciales para proporcionar datos de clientes ligeros a través de la [red de difusión (gossip)](https://www.ethportal.net/). Lo que supone una ventaja, ya que la red de intercambio de información podría soportar una red de nodos ligeros sin necesidad de nodos completos para servir solicitudes.
-Ethereum aún no soporta una gran cantidad de nodos ligeros, pero se espera que el soporte para nodos ligeros se desarrolle rápidamente en un futuro cercano. En particular, clientes como [Nimbus](https://nimbus.team/), [Helios](https://github.com/a16z/helios)y [LodeStar](https://lodestar.chainsafe.io/) están actualmente muy centrados en nodos ligeros.
+Ethereum aún no soporta una gran cantidad de nodos ligeros, pero se espera que el soporte para nodos ligeros se desarrolle rápidamente en un futuro cercano. En particular, clientes como [Nimbus](https://nimbus.team/), [Helios](https://github.com/a16z/helios) y [LodeStar](https://lodestar.chainsafe.io/) están actualmente muy centrados en los nodos ligeros.
## ¿Por qué debería ejecutar un nodo de Ethereum? {#why-should-i-run-an-ethereum-node}
@@ -88,36 +93,36 @@ Ejecutar un nodo le permite usar Ethereum de forma directa y privada, sin confia
Ejecutar su propio nodo le permite utilizar Ethereum de una manera realmente privada, autosuficiente y sin confianza. No necesita confiar en la red, porque usted mismo puede verificar los datos con su cliente. «No confíe, verifique» es un mantra popular en la cadena de bloques.
- Su nodo verifica todas las transacciones y bloquea aquellas que vayan en contra de las reglas del consenso en sí. Esto significa que no tiene que depender de ningún otro nodo de la red o confiar plenamente en ellos.
-- Puede utilizar una cartera Ethereum con su propio nodo. Puede usar DApps de forma más segura y privada, porque no tendrá que filtrar sus direcciones y saldos a intermediarios. Todo puede ser verificado con tu propio cliente. [MetaMask](https://metamask.io), [Frame](https://frame.sh/) y [muchas otras carteras](/wallets/find-wallet/) ofrecen importación RPC, permitiéndoles usar su nodo.
+- Puede utilizar una cartera Ethereum con su propio nodo. Puede usar DApps de forma más segura y privada, porque no tendrá que filtrar sus direcciones y saldos a intermediarios. Todo puede ser verificado con tu propio cliente. [MetaMask](https://metamask.io), [Frame](https://frame.sh/) y [muchas otras billeteras](/wallets/find-wallet/) ofrecen importación de RPC, lo que les permite usar su nodo.
- Puede ejecutar y tener otros servicios autoalojados que dependen de los datos de Ethereum. Por ejemplo, podría ser un validador de la cadena de baliza como la capa 2, infraestructura, exploradores de bloques, procesadores de pagos, etc.
-- Puede proporcionar sus propias [terminales RPC personalizadas](/developers/docs/apis/json-rpc/). Incluso podría ofrecer estas terminales públicamente a la comunidad para ayudarles a evitar los grandes proveedores centralizados.
-- Puede conectarse a su nodo usando la **comunicación entre procesos (IPC)** o reescribiendo el nodo para cargar su programa como un complemento. Esto otorga poca latencia, lo que ayuda mucho, p. ej., al procesar una gran cantidad de datos usando bibliotecas Web 3, o cuando necesite reemplazar sus transacciones lo más rápido posible (por ejemplo, operaciones ventajistas o «frontrunning»).
-- Puede participar directamente con ETH para asegurar la red y ganar recompensas. Vea [Cómo hacer participaciones en solitario](/staking/solo/) para empezar.
+- Puede proporcionar sus propios [puntos de conexión RPC](/developers/docs/apis/json-rpc/) personalizados. Incluso podría ofrecer estas terminales públicamente a la comunidad para ayudarles a evitar los grandes proveedores centralizados.
+- Puede conectarse a su nodo mediante **comunicaciones entre procesos (IPC)** o reescribir el nodo para cargar su programa como un complemento. Esto garantiza una baja latencia, lo que ayuda mucho, por ejemplo, al procesar una gran cantidad de datos utilizando bibliotecas de web3 o cuando necesita reemplazar sus transacciones lo más rápido posible (es decir, «front-running»).
+- Puede participar directamente con ETH para asegurar la red y ganar recompensas. Consulte [staking en solitario](/staking/solo/) para empezar.
-
+
-### Beneficios de la red {#network-benefits}
+### Beneficios para la red {#network-benefits}
Un conjunto diverso de nodos es importante para la salud, seguridad y resiliencia operativa de Ethereum.
- Los nodos completos hacen cumplir las reglas de consenso, de modo que no se les pueda engañar para que acepten bloques que no siguen dichas reglas. Esto proporciona seguridad adicional a la red, porque si todos los nodos fueran nodos ligeros y no realizaran la verificación completa, los validadores podrían atacar la red.
-- En caso de un ataque que supere las defensas criptoeconómicas de [la prueba de participación](/developers/docs/consensus-mechanisms/pos/#what-is-pos), se puede realizar una recuperación social por nodos completos eligiendo seguir la cadena honesta.
+- En caso de un ataque que supere las defensas criptoeconómicas de la [prueba de participación](/developers/docs/consensus-mechanisms/pos/#what-is-pos), los nodos completos pueden realizar una recuperación social eligiendo seguir la cadena honesta.
- Más nodos en la red dan como resultado una red más diversa y robusta, que es el objetivo absoluto de la descentralización, y que permite un sistema resistente a la censura y de confianza.
-- Los nodos completos proporcionan acceso a los datos de la cadena de bloques para clientes ligeros que dependen de ellos. Los nodos ligeros no almacenan la cadena de bloques completa, sino que verifican los datos usando [ los estados raíz en los encabezamientos de los bloques](/developers/docs/blocks/#block-anatomy). Pueden solicitar más información de los nodos completos si la necesitan.
+- Los nodos completos proporcionan acceso a los datos de la cadena de bloques para clientes ligeros que dependen de ellos. Los nodos ligeros no almacenan toda la cadena de bloques, sino que verifican los datos a través de las [raíces de estado en las cabeceras de los bloques](/developers/docs/blocks/#block-anatomy). Pueden solicitar más información de los nodos completos si la necesitan.
Si ejecuta un nodo completo, toda la red Ethereum se beneficia de él, incluso si no se ejecuta un validador.
-## Ejecución de tu propio nodo {#running-your-own-node}
+## Ejecutar su propio nodo {#running-your-own-node}
¿Le interesaría ejecutar su propio cliente de Ethereum?
-En nuestra página de [Cómo ejecutar un nodo](/run-a-node) puede ver una sencilla introducción apta para principiantes.
+Para una introducción apta para principiantes, visite nuestra página [ejecutar un nodo](/run-a-node) para obtener más información.
-Si es usted un usuario más avezado y quiere profundizar más sobre cómo [Ejecutar su propio nodo](/developers/docs/nodes-and-clients/run-a-node/).
+Si es un usuario más técnico, profundice en más detalles y opciones sobre cómo [poner en marcha su propio nodo](/developers/docs/nodes-and-clients/run-a-node/).
## Alternativas {#alternatives}
-Configurar su propio nodo puede costarle tiempo y recursos, pero no siempre necesita ejecutar su propia instancia. En este caso, puede utilizar un proveedor de API externo. Para obtener una visión general sobre el uso de estos servicios, consulte la página [Nodos como servicio](/developers/docs/nodes-and-clients/nodes-as-a-service/).
+Configurar su propio nodo puede costarle tiempo y recursos, pero no siempre necesita ejecutar su propia instancia. En este caso, puede utilizar un proveedor de API externo. Para obtener una descripción general del uso de estos servicios, consulte [nodos como servicio](/developers/docs/nodes-and-clients/nodes-as-a-service/).
Si alguien ejecuta un nodo de Ethereum con una API pública en su comunidad, puede apuntar sus carteras a un nodo comunitario a través de RPC personalizado y ganar más privacidad que con algún tercero de confianza aleatorio.
@@ -125,20 +130,20 @@ Por otra parte, si ejecuta un cliente, puede compartirlo con amigos suyos que lo
## Clientes de ejecución {#execution-clients}
-La comunidad de Ethereum tiene múltiples clientes de ejecución de código abierto (anteriormente conocidos como «clientes Eth1», o simplemente «clientes de Ethereum»), desarrollados por diferentes equipos mediante el uso de diferentes lenguajes de programación. Esto hace que la red sea más sólida y más [diversa](/developers/docs/nodes-and-clients/client-diversity/). El objetivo ideal es lograr la diversidad sin que ningún cliente tenga una posición dominante para reducir así los puntos únicos de error.
+La comunidad de Ethereum tiene múltiples clientes de ejecución de código abierto (anteriormente conocidos como «clientes Eth1», o simplemente «clientes de Ethereum»), desarrollados por diferentes equipos mediante el uso de diferentes lenguajes de programación. Esto hace que la red sea más fuerte y más [diversa](/developers/docs/nodes-and-clients/client-diversity/). El objetivo ideal es lograr la diversidad sin que ningún cliente tenga una posición dominante para reducir así los puntos únicos de error.
-En esta tabla se resumen los diferentes clientes. Todos ellos pasan [pruebas de cliente](https://github.com/ethereum/tests) y se gestionan de manera activa para mantenerse actualizados con actualizaciones de red.
+En esta tabla se resumen los diferentes clientes. Todos ellos superan las [pruebas de cliente](https://github.com/ethereum/tests) y se mantienen activamente para estar al día con las actualizaciones de la red.
-| Cliente | Idioma | Sistemas operativos | Redes | Estrategias de sincronización | Lima de estado |
-| ------------------------------------------------------------------------ | ---------- | --------------------- | ------------------------------- | ---------------------------------------------------------------- | --------------- |
-| [Geth](https://geth.ethereum.org/) | Go | Linux, Windows, macOS | Red principal, Sepolia, Holesky | [Snap](#snap-sync), [Completa](#full-sync) | Archivo, podado |
-| [Nethermind](https://www.nethermind.io/) | C#, .NET | Linux, Windows, macOS | Red principal, Sepolia, Holesky | [Snap](#snap-sync) (sin servir), Rápida, [Completa](#full-sync) | Archivo, podado |
-| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, macOS | Red principal, Sepolia, Holesky | [Snap](#snap-sync), [Rápida](#fast-sync), [Completa](#full-sync) | Archivo, podado |
-| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | Red principal, Sepolia, Holesky | [Completa](#full-sync) | Archivo, podado |
-| [Reth](https://reth.rs/) | Rust | Linux, Windows, macOS | Red principal, Sepolia, Holesky | [Completa](#full-sync) | Archivo, podado |
-| [EthereumJS](https://github.com/ethereumjs/ethereumjs-monorepo) _(beta)_ | TypeScript | Linux, Windows, macOS | Sepolia, Holesky | [Completa](#full-sync) | Podado |
+| Cliente | Idioma | Sistemas operativos | Redes | Estrategias de sincronización | Lima de estado |
+| ------------------------------------------------------------------------------------------- | ------------------------ | --------------------- | ----------------------------- | ---------------------------------------------------------------------------------- | ------------------ |
+| [Geth](https://geth.ethereum.org/) | Go | Linux, Windows, macOS | Red principal, Sepolia, Hoodi | [Snap](#snap-sync), [Completa](#full-sync) | Archivo, eliminado |
+| [Nethermind](https://www.nethermind.io/) | C#, .NET | Linux, Windows, macOS | Red principal, Sepolia, Hoodi | [Snap](#snap-sync) (sin servir), Rápida, [Completa](#full-sync) | Archivo, eliminado |
+| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, macOS | Red principal, Sepolia, Hoodi | [Snap](#snap-sync), [Rápida](#fast-sync), [Completa](#full-sync) | Archivo, eliminado |
+| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | Red principal, Sepolia, Hoodi | [Completa](#full-sync) | Archivo, eliminado |
+| [Reth](https://reth.rs/) | Rust | Linux, Windows, macOS | Red principal, Sepolia, Hoodi | [Completa](#full-sync) | Archivo, eliminado |
+| [EthereumJS](https://github.com/ethereumjs/ethereumjs-monorepo) _(beta)_ | TypeScript | Linux, Windows, macOS | Sepolia, Hoodi | [Completa](#full-sync) | Podado |
-Si desea obtener más información sobre redes compatibles, puede leer el apartado de [Redes de Ethereum](/developers/docs/networks/).
+Para obtener más información sobre las redes compatibles, lea sobre las [redes de Ethereum](/developers/docs/networks/).
Cada cliente tiene casos de uso y ventajas únicas, por lo que debe elegirlo basándose en sus propias preferencias. La diversidad permite que las implementaciones se centren en diferentes características y públicos. Puede elegir un cliente en función de las características, el soporte, el lenguaje de programación o las licencias.
@@ -146,17 +151,17 @@ Cada cliente tiene casos de uso y ventajas únicas, por lo que debe elegirlo bas
Hyperledger Besu es un cliente empresarial de Ethereum para redes públicas y autorizadas. Ejecuta todas las características de la red principal de Ethereum, desde el seguimiento hasta GraphQL, ejerce una amplia supervisión y es compatible con ConsenSys, tanto en canales comunitarios abiertos como a través de SLA comerciales para empresas. Está escrito en Java y dispone de licencia Apache 2.0.
-La extensa [documentación](https://besu.hyperledger.org/en/stable/) de Besu le guiará a través de todos los detalles y sus características y configuraciones.
+La extensa [documentación](https://besu.hyperledger.org/en/stable/) de Besu le guiará a través de todos los detalles sobre sus características y configuraciones.
### Erigon {#erigon}
Erigon, antiguamente conocido como Turbo Geth, es una variante de Go Ethereum orientada hacia la velocidad y la eficiencia del espacio en el disco. Erigon es una implementación completamente restructurada de Ethereum, actualmente escrita en Go pero con implementaciones en otros lenguajes en desarrollo. El objetivo de Erigon es proporcionar una implementación más rápida, modular y optimizada de Ethereum. Puede realizar una sincronización completa de nodos de archivo usando menos de 2 Tb de espacio en disco, en menos de 3 días.
-### Go-Ethereum {#geth}
+### Go Ethereum {#geth}
Go-Ethereum (Geth, para abreviar) es una de las implementaciones originales del protocolo de Ethereum. Actualmente, es el cliente más difundido con la mayor base de usuarios y variedad de herramientas para usuarios y desarrolladores. Está escrito en Go, es de código totalmente abierto y se comercializa con la licencia GNU LGPL v3.
-Descubra más sobre Geth en su [documentación](https://geth.ethereum.org/docs/).
+Obtenga más información sobre Geth en su [documentación](https://geth.ethereum.org/docs/).
### Nethermind {#nethermind}
@@ -166,7 +171,7 @@ Nethermind es una implementación de Ethereum diseñada con el bloque de C# .NET
- acceso al estado
- redes y características ricas como paneles de control de Prometheus/Grafana, soporte de registro empresarial seq, rastreo JSON-RPC y complementos de análisis
-Además, Nethermind dispone de [documentación detallada](https://docs.nethermind.io), una sólido soporte para desarrolladores, una comunidad en línea y asistencia ininterrumpida disponible para usuarios premium.
+Nethermind también tiene [documentación detallada](https://docs.nethermind.io), un sólido soporte para desarrolladores, una comunidad en línea y soporte 24/7 disponible para los usuarios prémium.
### Reth {#reth}
@@ -174,7 +179,7 @@ Reth (abreviatura de Rust Ethereum) es una implementación de nodo completo de E
Reth está listo para producción y es adecuado para su uso en entornos de misión crítica como staking o servicios de alto tiempo de actividad. Funciona bien en casos de uso donde se requiere alto rendimiento con grandes márgenes como RPC, MEV, indexación, simulaciones y actividades P2P.
-Obtenga más información en el [Reth Book](https://reth.rs/) o el [repositorio Reth GitHub](https://github.com/paradigmxyz/reth?tab=readme-ov-file#reth).
+Obtenga más información consultando el [Reth Book](https://reth.rs/) o el [repositorio de Reth en GitHub](https://github.com/paradigmxyz/reth?tab=readme-ov-file#reth).
### En desarrollo {#execution-in-development}
@@ -184,51 +189,58 @@ Estos clientes están aún en etapas tempranas de desarrollo y aún no se recomi
El cliente de ejecución EthereumJS (EthereumJS) está escrito en TypeScript y se compone de una serie de paquetes, incluidas las primitivas principales de Ethereum representadas por las clases Bloque, Transacción y Merkle-Patricia Trie y los componentes principales del cliente, incluida una implementación de la Máquina Virtual de Ethereum (EVM), una clase de cadena de bloques y la pila de red DevP2P.
-Obtenga más información al respecto leyendo su [documentación](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master).
+Obtenga más información sobre ello leyendo su [documentación](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master)
## Clientes de consenso {#consensus-clients}
-Existen múltiples clientes de consenso (antes conocidos como clientes Eth2) que respaldan las [actualizaciones de consenso](/roadmap/beacon-chain/). Son responsables de toda la lógica relacionada con el consenso, incluido el algoritmo de elección de bifurcación, el procesamiento de certificados y la gestión de [prueba de participación](/developers/docs/consensus-mechanisms/pos) recompensas y penalizaciones.
+Existen múltiples clientes de consenso (anteriormente conocidos como clientes «Eth2») para dar soporte a las [actualizaciones del consenso](/roadmap/beacon-chain/). Son responsables de toda la lógica relacionada con el consenso, incluido el algoritmo de elección de bifurcación, el procesamiento de atestaciones y la gestión de las recompensas y penalizaciones de la [prueba de participación](/developers/docs/consensus-mechanisms/pos).
-| Cliente | Idioma | Sistemas operativos | Redes |
-| ------------------------------------------------------------- | ---------- | --------------------- | --------------------------------------------------------- |
-| [Lighthouse](https://lighthouse.sigmaprime.io/) | Rust | Linux, Windows, macOS | Cadena de baliza, Goerli, Pyrmont, Sepolia, Ropsten y más |
-| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux, Windows, macOS | Cadena de baliza, Goerli, Pyrmont, Sepolia, Ropsten y más |
-| [Nimbus](https://nimbus.team/) | Nim | Linux, Windows, macOS | Cadena de baliza, Goerli, Pyrmont, Sepolia, Ropsten y más |
-| [Prysm](https://prysm.offchainlabs.com/docs/) | Go | Linux, Windows, macOS | Cadena de baliza, Goerli, Pyrmont, Sepolia, Ropsten y más |
-| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | Java | Linux, Windows, macOS | Cadena de baliza, Goerli, Pyrmont, Sepolia, Ropsten y más |
+| Cliente | Idioma | Sistemas operativos | Redes |
+| ------------------------------------------------------------- | ---------- | --------------------- | ------------------------------------------------------- |
+| [Lighthouse](https://lighthouse.sigmaprime.io/) | Rust | Linux, Windows, macOS | Cadena de baliza, Hoodi, Pyrmont, Sepolia y más |
+| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux, Windows, macOS | Cadena de baliza, Hoodi, Sepolia y más |
+| [Nimbus](https://nimbus.team/) | Nim | Linux, Windows, macOS | Cadena de baliza, Hoodi, Sepolia y más |
+| [Prysm](https://prysm.offchainlabs.com/docs/) | Go | Linux, Windows, macOS | Cadena de baliza, Gnosis, Hoodi, Pyrmont, Sepolia y más |
+| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | Java | Linux, Windows, macOS | Cadena de baliza, Gnosis, Hoodi, Sepolia y más |
+| [Grandine](https://docs.grandine.io/) | Rust | Linux, Windows, macOS | Cadena de baliza, Hoodi, Sepolia y más |
### Lighthouse {#lighthouse}
Lighthouse es una implementación de cliente de consenso en Rust bajo la licencia Apache-2.0. La mantiene Sigma Prime y está estable y lista para la producción desde el origen de la cadena de baliza. Depende de varias empresas, participaciones agrupadas e individuos. Su objetivo es ser segura, ejecutable e interoperable en una amplia gama de entornos, desde PC de escritorio hasta sofisticados despliegues automatizados.
-La documentación se puede encontrar en el [Manual de Lighthouse](https://lighthouse-book.sigmaprime.io/)
+Puede encontrar la documentación en el [Lighthouse Book](https://lighthouse-book.sigmaprime.io/)
### Lodestar {#lodestar}
Lodestar es una implementación de cliente de consenso lista para la producción y escrita en Typescript bajo licencia LGPL-3.0. La mantiene ChainSafe Systems y es el más reciente de los clientes de consenso para participantes en solitario, desarrolladores e investigadores. Lodestar consiste en un cliente de nodos y validador de baliza basado en implementaciones en JavaScript de protocolos Ethereum. Lodestar tiene como objetivo mejorar la facilidad de uso de Ethereum con clientes ligeros, ampliar la accesibilidad a un grupo más grande de desarrolladores y contribuir aún más a la diversidad de los ecosistemas.
-Puede encontrar más información en nuestro [sitio web de Lodestar](https://lodestar.chainsafe.io/)
+Puede encontrar más información en el [sitio web de Lodestar](https://lodestar.chainsafe.io/)
### Nimbus {#nimbus}
Lighthouse es una implementación de cliente de consenso escrita en Rust bajo la licencia Apache-2.0. Es un cliente listo para la producción que ya lo están usando los participantes en solitario o las participaciones agrupadas. Nimbus está diseñado para la eficiencia de los recursos, facilitando el funcionamiento en dispositivos restringidos a recursos e infraestructura empresarial con la misma facilidad, sin comprometer la estabilidad ni recompensar el rendimiento. Una huella de recursos más ligera significa que el cliente tiene un mayor margen de seguridad cuando la red está sometida a estrés.
-Encontrará más información en el [manual de Nimbus](https://nimbus.guide/)
+Obtenga más información en la [documentación de Nimbus](https://nimbus.guide/)
### Prysm {#prysm}
Prysm es un cliente de consenso de código abierto completamente escrito en Go bajo la licencia GPL-3.0. Cuenta con una interfaz de usuario opcional de la aplicación web y prioriza la experiencia del usuario, la documentación y la configurabilidad tanto para usuarios interesados como institucionales.
-Visite [documentos de Prysm](https://prysm.offchainlabs.com/docs/) para obtener más información.
+Visite la [documentación de Prysm](https://prysm.offchainlabs.com/docs/) para obtener más información.
### Teku {#teku}
Teku es uno de los clientes originales desde los orígenes de la cadena de baliza. Junto con los objetivos habituales (seguridad, robustez, estabilidad, facilidad de uso, rendimiento), Teku específicamente pretende cumplir con todos los estándares de consenso de los clientes.
-Teku ofrece opciones de despliegue muy flexibles. El nodo de baliza y el cliente validador pueden ejecutarse juntos como un solo proceso, lo que es extremadamente conveniente para los interesados en la participación en solitario, o los nodos pueden ejecutarse por separado para sofisticadas operaciones de participación. Además, Teku es completamente interoperable con [Web3Signer](https://github.com/ConsenSys/web3signer/) para firmar la seguridad clave y protección de recortes.
+Teku ofrece opciones de despliegue muy flexibles. El nodo de baliza y el cliente validador pueden ejecutarse juntos como un solo proceso, lo que es extremadamente conveniente para los interesados en la participación en solitario, o los nodos pueden ejecutarse por separado para sofisticadas operaciones de participación. Además, Teku es totalmente interoperable con [Web3Signer](https://github.com/ConsenSys/web3signer/) para la seguridad de la clave de firma y la protección contra el «slashing».
-Está escrito en Java y dispone de licencia Apache 2.0. Es desarrollado por el equipo de Protocols de ConsenSys que también es responsable de Besu y Web3Signer. Obtenga más información en el [manual de Teku](https://docs.teku.consensys.net/en/latest/).
+Está escrito en Java y dispone de licencia Apache 2.0. Es desarrollado por el equipo de Protocols de ConsenSys que también es responsable de Besu y Web3Signer. Obtenga más información en la [documentación de Teku](https://docs.teku.consensys.net/en/latest/).
+
+### Grandine {#grandine}
+
+Grandine es una implementación de cliente de consenso, escrita en Rust bajo la licencia GPL-3.0. La mantiene el equipo de Grandine y es una implementación rápida, de alto rendimiento y ligera. Grandine ofrece opciones para una amplia gama de participantes desde participación individual ejecutándose en dispositivos tales como Raspberry Pi a operaciones de participación en gran escala con ejecuciones de decenas de miles de validadores.
+
+Puede encontrar la documentación en el [Grandine Book](https://docs.grandine.io/)
## Modos de sincronización {#sync-modes}
@@ -247,7 +259,7 @@ Una sincronización completa descarga todos los bloques (incluidos los encabezad
- Minimiza la confianza y ofrece la máxima seguridad al verificar cada transacción.
- Debido al número creciente de transacciones, puede llevar de días a semanas procesar todas las transacciones.
-Los [nodos de archivo](#archive-node) realizan una sincronización completa para crear (y retener) un historial completo de los cambios de estado realizados por cada transacción en cada bloque.
+Los [nodos de archivo](#archive-node) realizan una sincronización completa para construir (y conservar) un historial completo de los cambios de estado realizados por cada transacción en cada bloque.
#### Sincronización rápida {#fast-sync}
@@ -272,30 +284,30 @@ El modo de cliente ligero descarga todos los encabezados de los bloques, datos d
- Obtiene solamente el último estado mientras confía en los desarrolladores y en el mecanismo de consenso.
- Cliente listo para usar con el estado actual de la red en pocos minutos.
-**NB** La sincronización ligera aún no funciona con la prueba de participación en Ethereum. ¡Las nuevas versiones de la sincronización ligera saldrán próximamente!
+**Nota:** La sincronización ligera aún no funciona con la prueba de participación de Ethereum. ¡Las nuevas versiones de la sincronización ligera deberían llegar pronto!
-[Más información sobre clientes ligeros](/developers/docs/nodes-and-clients/light-clients/)
+[Más información sobre los clientes ligeros](/developers/docs/nodes-and-clients/light-clients/)
### Modos de sincronización de la capa de consenso {#consensus-layer-sync-modes}
#### Sincronización optimista {#optimistic-sync}
-La sincronización óptima es una estrategia de sincronización después de La Fusión diseñada para ser compatible opt-in y backwards permitiendo que los nodos de ejecución se sincronicen a través de métodos establecidos. El motor de ejecución puede importar _bloques de baliza optimistamente_ sin verificarlos completamente, encontrar el último encabezado y luego comenzar a sincronizar la cadena con los métodos anteriores. Seguidamente, una vez que el cliente de ejecución se haya actualizado, informará al cliente de consenso de la validez de las transacciones en la cadena de baliza.
+La sincronización óptima es una estrategia de sincronización después de La Fusión diseñada para ser compatible opt-in y backwards permitiendo que los nodos de ejecución se sincronicen a través de métodos establecidos. El motor de ejecución puede importar bloques de baliza de forma _optimista_ sin verificarlos por completo, encontrar la cabecera más reciente y luego comenzar a sincronizar la cadena con los métodos anteriores. Seguidamente, una vez que el cliente de ejecución se haya actualizado, informará al cliente de consenso de la validez de las transacciones en la cadena de baliza.
-[Más sobre la sincronización optimista](https://github.com/ethereum/consensus-specs/blob/dev/sync/optimistic.md)
+[Más información sobre la sincronización optimista](https://github.com/ethereum/consensus-specs/blob/dev/sync/optimistic.md)
-#### Sincronización de punto de verificación {#checkpoint-sync}
+#### Sincronización desde punto de control {#checkpoint-sync}
-Una sincronización de punto de verificación o control, también conocida como sincronización de subjetividad débil, crea una experiencia de usuario superior para sincronizar un nodo de Baliza. Se basa en suposiciones de [subjetividad débil](/developers/docs/consensus-mechanisms/pos/weak-subjectivity/) que permite sincronizar la Cadena de Baliza desde un punto de verificación de subjetividad débil reciente en lugar del bloque inicial. Las sincronizaciones de punto de verificación hacen que el tiempo de sincronización inicial sea significativamente más rápido con suposiciones de confianza similares a la sincronización desde el [bloque inicial](/glossary/#genesis-block).
+Una sincronización de punto de verificación o control, también conocida como sincronización de subjetividad débil, crea una experiencia de usuario superior para sincronizar un nodo de Baliza. Se basa en supuestos de [subjetividad débil](/developers/docs/consensus-mechanisms/pos/weak-subjectivity/), lo que permite sincronizar la Cadena de baliza desde un punto de control de subjetividad débil reciente en lugar de desde el génesis. Las sincronizaciones desde punto de control hacen que el tiempo de sincronización inicial sea significativamente más rápido, con supuestos de confianza similares a la sincronización desde el [génesis](/glossary/#genesis-block).
En la práctica, esto significa que el nodo se conecta a un servicio remoto para descargar estados finalizados recientes y continúa verificando datos desde ese punto. El proveedor externo que proporciona los datos debe ser confiable y debe de ser elegido cautelosamente.
-Más sobre la [sincronización de punto de verificación](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice)
+Más información sobre la [sincronización desde punto de control](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice)
-## Más lectura {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Ethereum 101 - Parte 2 - Explicación de los nodos](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– Wil Barnes, 13 de febrero de 2019_
-- [Cómo ejecutar los nodos completos de Ethereum: una guía para aquellas personas que se encuentren desmotivadas](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _, Justin Leroux, 7 de noviembre de 2019_
+- [Ethereum 101 - Parte 2 - Entendiendo los nodos](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– Wil Barnes, 13 de febrero de 2019_
+- [Ejecutando nodos completos de Ethereum: una guía para los poco motivados](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, 7 de noviembre de 2019_
## Temas relacionados {#related-topics}
@@ -304,4 +316,4 @@ Más sobre la [sincronización de punto de verificación](https://notes.ethereum
## Tutoriales relacionados {#related-tutorials}
-- [Convierta su Raspberry Pi 4 en un nodo validador con solo intercambiar su tarjeta MicroSD - Guía de instalación](/developers/tutorials/run-node-raspberry-pi/) _Intercambie su Raspberry Pi 4, conecte un cable Ethernet, conecte el disco SSD y encienda el dispositivo para convertir el Raspberry Pi 4 en un nodo completo de Ethereum mediante la activación de la capa de ejecución (red principal) o la capa de consenso (cadena de baliza/validador)._
+- [Convierta su Raspberry Pi 4 en un nodo validador simplemente flasheando la tarjeta MicroSD – Guía de instalación](/developers/tutorials/run-node-raspberry-pi/) _– Flashee su Raspberry Pi 4, conecte un cable Ethernet, conecte el disco SSD y encienda el dispositivo para convertir el Raspberry Pi 4 en un nodo completo de Ethereum que ejecute la capa de ejecución (red principal) y/o la capa de consenso (Cadena de baliza/validador)._
From c54069d60bc6d3d4ad881388778c24849f5eb737 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:16 -0300
Subject: [PATCH 278/589] update(i18n):
public/content/translations/es/developers/tutorials/all-you-can-cache/index.md
---
.../tutorials/all-you-can-cache/index.md | 326 +++++++++---------
1 file changed, 163 insertions(+), 163 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/all-you-can-cache/index.md b/public/content/translations/es/developers/tutorials/all-you-can-cache/index.md
index b99c564cc15..443374b99e7 100644
--- a/public/content/translations/es/developers/tutorials/all-you-can-cache/index.md
+++ b/public/content/translations/es/developers/tutorials/all-you-can-cache/index.md
@@ -1,42 +1,39 @@
---
-title: "Todo lo que pueda almacenar en una memoria caché"
-description: Aprenda a crear y usar un contrato de almacenamiento en caché para transacciones acumuladas más baratas.
+title: "Todo lo que puede almacenar en caché"
+description: Aprenda a crear y usar un contrato de almacenamiento en caché para transacciones de rollup más baratas.
author: Ori Pomerantz
-tags:
- - "capa 2"
- - "guardar en caché"
- - "almacenamiento"
+tags: [ "capa 2", "almacenamiento en caché", "almacenamiento" ]
skill: intermediate
published: 2022-09-15
lang: es
---
-Cuando se utilizan rollups (o acumulaciones), el coste de un byte en la transacción es mucho más caro que el coste de una ranura de almacenamiento. Por lo tanto, tiene sentido almacenar en caché la mayor cantidad de información posible en la cadena.
+Al usar rollups, el costo de un byte en la transacción es mucho más caro que el costo de una ranura de almacenamiento. Por lo tanto, tiene sentido almacenar en caché tanta información como sea posible en la cadena.
-En este artículo, aprenderá a crear y usar un contrato de almacenamiento en caché de tal manera que cualquier valor de parámetro que se pueda usar varias veces se almacenará en caché, y estará disponible para su uso (después de la primera vez) con un número mucho menor de bytes, y cómo cancelar el código de cadena que utiliza esa caché.
+En este artículo, aprenderá a crear y usar un contrato de almacenamiento en caché de tal manera que cualquier valor de parámetro que pueda usarse varias veces se almacenará en caché y estará disponible para su uso (después de la primera vez) con un número mucho menor de bytes, y cómo escribir código fuera de la cadena que use esta caché.
-Si quiere omitir el artículo y ver el código fuente, [lo encontrará aquí](https://github.com/qbzzt/20220915-all-you-can-cache). La pila de desarrollo es [Foundry](https://book.getfoundry.sh/getting-started/installation).
+Si quiere saltarse el artículo y ver directamente el código fuente, [está aquí](https://github.com/qbzzt/20220915-all-you-can-cache). La pila de desarrollo es [Foundry](https://getfoundry.sh/introduction/installation/).
## Diseño general {#overall-design}
-En aras de la simplicidad, asumiremos que todos los parámetros de la transacción tienen una longitud de `uint256`, 32 bytes. Cuando recibamos una transacción, analizaremos cada parámetro de la siguiente manera:
+En aras de la simplicidad, supondremos que todos los parámetros de la transacción son `uint256` y tienen 32 bytes de longitud. Cuando recibamos una transacción, analizaremos cada parámetro de la siguiente manera:
-1. Si el primer byte es `0xFF`, tome los siguientes 32 bytes como valor de parámetro y escríbalos en la caché.
+1. Si el primer byte es `0xFF`, tome los siguientes 32 bytes como un valor de parámetro y escríbalo en la caché.
-2. Si el primer byte es `0xFE`, tome los siguientes 32 bytes como valor de parámetro, pero _no_ lo escriba en la caché.
+2. Si el primer byte es `0xFE`, tome los siguientes 32 bytes como un valor de parámetro, pero _no_ lo escriba en la caché.
-3. Para cualquier otro valor, tome los cuatro bits superiores como el número de bytes adicionales, y los cuatro bits inferiores como los bits más significativos de la clave de caché. He aquí algunos ejemplos:
+3. Para cualquier otro valor, tome los cuatro bits superiores como el número de bytes adicionales y los cuatro bits inferiores como los bits más significativos de la clave de caché. Estos son algunos ejemplos:
| Bytes en calldata | Clave de caché |
- |:----------------- | --------------:|
+ | :---------------- | -------------: |
| 0x0F | 0x0F |
| 0x10,0x10 | 0x10 |
| 0x12,0xAC | 0x02AC |
| 0x2D,0xEA, 0xD6 | 0x0DEAD6 |
-## Manipulación de caché {#cache-manipulation}
+## Manipulación de la caché {#cache-manipulation}
-La caché se implementa en [`Cache.sol`](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol). Vamos a repasarlo línea por línea.
+La caché está implementada en [`Cache.sol`](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol). Vamos a repasarlo línea por línea.
```solidity
// SPDX-License-Identifier: UNLICENSED
@@ -49,26 +46,26 @@ contract Cache {
bytes1 public constant DONT_CACHE = 0xFE;
```
-Estas constantes se utilizan para interpretar los casos especiales en los que proporcionamos toda la información y queremos que se escriba en la caché o no. Escribir en la caché requiere dos operaciones [`SSTORE`](https://www.evm.codes/#55) en ranuras de almacenamiento no utilizadas hasta el momento a un coste de 22.100 de gas cada una, por lo que lo hacemos opcional.
+Estas constantes se utilizan para interpretar los casos especiales en los que proporcionamos toda la información y queremos que se escriba o no en la caché. Escribir en la caché requiere dos operaciones [`SSTORE`](https://www.evm.codes/#55) en ranuras de almacenamiento no utilizadas previamente, con un costo de 22 100 de gas cada una, por lo que lo hacemos opcional.
```solidity
mapping(uint => uint) public val2key;
```
-Un [mapeo](https://www.geeksforgeeks.org/solidity-mappings/) entre los valores y sus claves. Esta información es necesaria para codificar los valores antes de enviar la transacción.
+Un [mapeo](https://www.geeksforgeeks.org/solidity/solidity-mappings/) entre los valores y sus claves. Esta información es necesaria para codificar los valores antes de enviar la transacción.
```solidity
- // Location n has the value for key n+1, because we need to preserve
- // zero as "not in the cache".
+ // La ubicación n tiene el valor para la clave n+1, porque necesitamos preservar
+ // el cero como «no está en la caché».
uint[] public key2val;
```
-Podemos usar una matriz para el mapeo de claves a valores porque asignamos las claves, y por simplicidad, lo hacemos secuencialmente.
+Podemos usar una matriz para el mapeo de claves a valores porque asignamos las claves y, para simplificar, lo hacemos secuencialmente.
```solidity
function cacheRead(uint _key) public view returns (uint) {
- require(_key <= key2val.length, "Reading uninitialize cache entry");
+ require(_key <= key2val.length, "Lectura de entrada de caché sin inicializar");
return key2val[_key-1];
} // cacheRead
```
@@ -76,10 +73,10 @@ Podemos usar una matriz para el mapeo de claves a valores porque asignamos las c
Leer un valor de la caché.
```solidity
- // Write a value to the cache if it's not there already
- // Only public to enable the test to work
+ // Escribir un valor en la caché si no existe ya
+ // Público solo para permitir que la prueba funcione
function cacheWrite(uint _value) public returns (uint) {
- // If the value is already in the cache, return the current key
+ // Si el valor ya está en la caché, devolver la clave actual
if (val2key[_value] != 0) {
return val2key[_value];
}
@@ -88,18 +85,18 @@ Leer un valor de la caché.
No tiene sentido poner el mismo valor en la caché más de una vez. Si el valor ya está ahí, simplemente devuelva la clave existente.
```solidity
- // Since 0xFE is a special case, the largest key the cache can
- // hold is 0x0D followed by 15 0xFF's. If the cache length is already that
- // large, fail.
+ // Como 0xFE es un caso especial, la clave más grande que la caché puede
+ // contener es 0x0D seguida de 15 0xFF. Si la longitud de la caché ya es
+ // tan grande, falla.
// 1 2 3 4 5 6 7 8 9 A B C D E F
require(key2val.length+1 < 0x0DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
- "cache overflow");
+ "desbordamiento de caché");
```
-No creo que alguna vez tengamos una caché tan grande (aproximadamente 1,8\*1037 entradas, lo que requeriría alrededor de 1027 TB para almacenar). Sin embargo, tengo la edad suficiente para recordar que ["640 kB siempre sería suficiente"](https://quoteinvestigator.com/2011/09/08/640k-enough/). Esta prueba es muy barata.
+No creo que lleguemos a tener una caché tan grande (aproximadamente 1,8\*1037 entradas, lo que requeriría unos 1027 TB para almacenarse). Sin embargo, soy lo suficientemente mayor para recordar [«640 kB serían siempre suficientes»](https://quoteinvestigator.com/2011/09/08/640k-enough/). Esta prueba es muy barata.
```solidity
- // Write the value using the next key
+ // Escribir el valor usando la siguiente clave
val2key[_value] = key2val.length+1;
```
@@ -109,7 +106,7 @@ Añada la búsqueda inversa (del valor a la clave).
key2val.push(_value);
```
-Añade la búsqueda hacia adelante (desde la clave hasta el valor). Debido a que asignamos valores secuencialmente, podemos añadirlos después del último valor de la matriz.
+Añada la búsqueda hacia adelante (de la clave al valor). Como asignamos los valores de forma secuencial, podemos añadirlo después del último valor de la matriz.
```solidity
return key2val.length;
@@ -123,19 +120,19 @@ Devuelve la nueva longitud de `key2val`, que es la celda donde se almacena el nu
private pure returns (uint)
```
-Esta función lee un valor de Calldata de longitud arbitraria (hasta 32 bytes, el tamaño de la palabra).
+Esta función lee un valor de los calldata de longitud arbitraria (hasta 32 bytes, el tamaño de la palabra).
```solidity
{
uint _retVal;
require(length < 0x21,
- "_calldataVal length limit is 32 bytes");
+ "El límite de longitud de _calldataVal es de 32 bytes");
require(length + startByte <= msg.data.length,
- "_calldataVal trying to read beyond calldatasize");
+ "_calldataVal intenta leer más allá de calldatasize");
```
-Esta función es interna, por lo que si el resto del código está escrito correctamente, estas pruebas no son necesarias. Aunque tampoco es que cuesten tanto, así que podríamos tenerlas.
+Esta función es interna, por lo que si el resto del código está escrito correctamente, estas pruebas no son necesarias. Sin embargo, no cuestan mucho, así que es mejor tenerlas.
```solidity
assembly {
@@ -143,7 +140,7 @@ Esta función es interna, por lo que si el resto del código está escrito corre
}
```
-Este código está en [Yul](https://docs.soliditylang.org/en/v0.8.16/yul.html). Lee un valor de 32 bytes de los Calldata. Esto funciona incluso si los Calldata se detienen antes de `startByte+32` porque el espacio no inicializado en EVM se considera cero.
+Este código está en [Yul](https://docs.soliditylang.org/en/v0.8.16/yul.html). Lee un valor de 32 bytes de los calldata. Esto funciona incluso si los calldata se detienen antes de `startByte+32`, porque el espacio no inicializado en la EVM se considera cero.
```solidity
_retVal = _retVal >> (256-length*8);
@@ -156,43 +153,43 @@ No queremos necesariamente un valor de 32 bytes. Esto elimina el exceso de bytes
} // _calldataVal
- // Read a single parameter from the calldata, starting at _fromByte
+ // Leer un solo parámetro de los calldata, a partir de _fromByte
function _readParam(uint _fromByte) internal
returns (uint _nextByte, uint _parameterValue)
{
```
-Lea un solo parámetro de los Calldata. Tenga en cuenta que necesitamos devolver no solo el valor que leemos, sino también la ubicación del siguiente byte, porque la longitud de los parámetros puede variar de 1 byte a 33 bytes.
+Leer un único parámetro de los calldata. Tenga en cuenta que no solo necesitamos devolver el valor que leemos, sino también la ubicación del siguiente byte, porque los parámetros pueden tener una longitud de entre 1 y 33 bytes.
```solidity
- // The first byte tells us how to interpret the rest
+ // El primer byte nos dice cómo interpretar el resto
uint8 _firstByte;
_firstByte = uint8(_calldataVal(_fromByte, 1));
```
-Solidity intenta reducir el número de errores al prohibir [conversiones de tipo implícito potencialmente peligrosas](https://docs.soliditylang.org/en/v0.8.16/types.html#implicit-conversions). Una degradación, por ejemplo, de 256 bits a 8 bits, debe ser explícita.
+Solidity intenta reducir el número de errores prohibiendo [conversiones de tipo implícitas](https://docs.soliditylang.org/en/v0.8.16/types.html#implicit-conversions) potencialmente peligrosas. Una degradación, por ejemplo de 256 bits a 8 bits, debe ser explícita.
```solidity
- // Read the value, but do not write it to the cache
+ // Leer el valor, pero no escribirlo en la caché
if (_firstByte == uint8(DONT_CACHE))
return(_fromByte+33, _calldataVal(_fromByte+1, 32));
- // Read the value, and write it to the cache
+ // Leer el valor y escribirlo en la caché
if (_firstByte == uint8(INTO_CACHE)) {
uint _param = _calldataVal(_fromByte+1, 32);
cacheWrite(_param);
return(_fromByte+33, _param);
}
- // If we got here it means that we need to read from the cache
+ // Si hemos llegado aquí, significa que tenemos que leer de la caché
- // Number of extra bytes to read
+ // Número de bytes extra para leer
uint8 _extraBytes = _firstByte / 16;
```
-Toma el [nibble](https://en.wikipedia.org/wiki/Nibble) inferior y combínalo con los otros bytes para leer el valor de la caché.
+Tome el [nibble](https://en.wikipedia.org/wiki/Nibble) inferior y combínelo con los otros bytes para leer el valor de la caché.
```solidity
uint _key = (uint256(_firstByte & 0x0F) << (8*_extraBytes)) +
@@ -203,17 +200,17 @@ Toma el [nibble](https://en.wikipedia.org/wiki/Nibble) inferior y combínalo con
} // _readParam
- // Read n parameters (functions know how many parameters they expect)
+ // Leer n parámetros (las funciones saben cuántos parámetros esperan)
function _readParams(uint _paramNum) internal returns (uint[] memory) {
```
-Podríamos obtener el número de parámetros que tenemos de los propios Calldata, pero las funciones que nos invocan, saben cuántos parámetros esperan. Es más fácil dejar que nos lo digan.
+Podríamos obtener el número de parámetros que tenemos de los propios calldata, pero las funciones que nos llaman saben cuántos parámetros esperan. Es más fácil dejar que nos lo digan.
```solidity
- // The parameters we read
+ // Los parámetros que leemos
uint[] memory params = new uint[](_paramNum);
- // Parameters start at byte 4, before that it's the function signature
+ // Los parámetros empiezan en el byte 4, antes de eso está la firma de la función
uint _atByte = 4;
for(uint i=0; i<_paramNum; i++) {
@@ -221,14 +218,14 @@ Podríamos obtener el número de parámetros que tenemos de los propios Calldata
}
```
-Lea los parámetros hasta obtener el número que necesite. Si nos pasamos el final de los Calldata, `_readParams` esta revertirá.
+Lea los parámetros hasta que tenga el número que necesita. Si pasamos del final de los calldata, `_readParams` revertirá la llamada.
```solidity
return(params);
} // readParams
- // For testing _readParams, test reading four parameters
+ // Para probar _readParams, pruebe la lectura de cuatro parámetros
function fourParam() public
returns (uint256,uint256,uint256,uint256)
{
@@ -238,45 +235,45 @@ Lea los parámetros hasta obtener el número que necesite. Si nos pasamos el fin
} // fourParam
```
-Una de las principales ventajas de Foundry es que permite escribir las pruebas en Solidity ([ver más adelante Probar la caché](#testing-the-cache)). Esto hace que las pruebas unitarias sean mucho más fáciles. Esta es una función que lee cuatro parámetros y los devuelve, de manera que la prueba puede verificar si son correctos.
+Una gran ventaja de Foundry es que permite escribir pruebas en Solidity ([véase Probar la caché más abajo](#testing-the-cache)). Esto facilita mucho las pruebas unitarias. Esta es una función que lee cuatro parámetros y los devuelve para que la prueba pueda verificar que son correctos.
```solidity
- // Get a value, return bytes that will encode it (using the cache if possible)
+ // Obtener un valor, devolver los bytes que lo codificarán (usando la caché si es posible)
function encodeVal(uint _val) public view returns(bytes memory) {
```
-`encodeVal` es una función que activa el código fuera de la cadena para ayudar a crear los Calldata que utilizan la caché. Esta recibe un único valor y devuelve los bytes que lo codifican. Esta función es una `view`, por lo que no requiere una transacción y cuando se activa externamente no cuesta gas.
+`encodeVal` es una función a la que llama el código fuera de la cadena para ayudar a crear los calldata que usan la caché. Recibe un único valor y devuelve los bytes que lo codifican. Esta función es una `view`, por lo que no requiere una transacción y, cuando se la llama externamente, no cuesta nada de gas.
```solidity
uint _key = val2key[_val];
- // The value isn't in the cache yet, add it
+ // El valor aún no está en la caché, lo añade
if (_key == 0)
return bytes.concat(INTO_CACHE, bytes32(_val));
```
-En la [EVM](/developers/docs/evm/) se asume que todo el almacenamiento sin inicializar son ceros. Por tanto, si buscamos la clave para un valor que no está ahí, obtenemos un cero. En ese caso, los bytes que lo codifican son `INTO_CACHE` (por lo que estará en la caché la próxima vez), seguido de un valor real.
+En la [EVM](/developers/docs/evm/), se asume que todo el almacenamiento no inicializado es cero. Así que si buscamos la clave para un valor que no está ahí, obtenemos un cero. En ese caso, los bytes que lo codifican son `INTO_CACHE` (por lo que se almacenará en caché la próxima vez), seguido del valor real.
```solidity
- // If the key is <0x10, return it as a single byte
+ // Si la clave es <0x10, la devuelve como un solo byte
if (_key < 0x10)
return bytes.concat(bytes1(uint8(_key)));
```
-Los bytes individuales son los más fáciles. Solo usamos [`bytes.concat`](https://docs.soliditylang.org/en/v0.8.16/types.html#the-functions-bytes-concat-and-string-concat) para convertir un tipo `bytes` en una matriz de bytes que puede tener cualquier longitud. A pesar del nombre, funciona bien cuando se le proporciona un solo argumento.
+Los bytes únicos son los más fáciles. Solo usamos [`bytes.concat`](https://docs.soliditylang.org/en/v0.8.16/types.html#the-functions-bytes-concat-and-string-concat) para convertir un tipo `bytes` en una matriz de bytes que puede tener cualquier longitud. A pesar del nombre, funciona bien cuando se proporciona un solo argumento.
```solidity
- // Two byte value, encoded as 0x1vvv
+ // Valor de dos bytes, codificado como 0x1vvv
if (_key < 0x1000)
return bytes.concat(bytes2(uint16(_key) | 0x1000));
```
-Cuando tenemos una clave que es inferior a 163, podemos expresarla en dos bytes. Primero convertimos `_key`, que es un valor de 256 bits, a un valor de 16 bits y usamos la lógica o para añadir el número de bytes adicionales al primer byte. Luego lo convertimos en un valor de `bytes2`, que se puede convertir en `bytes`.
+Cuando tenemos una clave que es inferior a 163, podemos expresarla en dos bytes. Primero convertimos `_key`, que es un valor de 256 bits, a un valor de 16 bits y usamos un OR lógico para añadir el número de bytes adicionales al primer byte. Luego lo convertimos en un valor `bytes2`, que se puede convertir a `bytes`.
```solidity
- // There is probably a clever way to do the following lines as a loop,
- // but it's a view function so I'm optimizing for programmer time and
- // simplicity.
+ // Probablemente haya una forma inteligente de hacer las siguientes líneas como un bucle,
+ // pero es una función de vista, así que estoy optimizando para el tiempo del programador y
+ // la simplicidad.
if (_key < 16*256**2)
return bytes.concat(bytes3(uint24(_key) | (0x2 * 16 * 256**2)));
@@ -291,14 +288,14 @@ Cuando tenemos una clave que es inferior a 163, podemos expresarla en
return bytes.concat(bytes16(uint128(_key) | (0xF * 16 * 256**15)));
```
-Los otros valores (3 bytes, 4 bytes, etc.) se manejan de la misma manera, solo con diferentes tamaños de campo.
+Los otros valores (3 bytes, 4 bytes, etc.) se manejan de la misma manera, solo que con tamaños de campo diferentes.
```solidity
- // If we get here, something is wrong.
- revert("Error in encodeVal, should not happen");
+ // Si llegamos aquí, algo anda mal.
+ revert("Error en encodeVal, no debería ocurrir");
```
-Si hemos llegado aquí, quiere decir que tenemos una llave que no es inferior a 16\*25615. Pero `cacheWrite` limita las claves, por lo que ni siquiera podemos llegar a 14\*25616 (que tendría un primer byte de 0xFE, por lo que se vería como `DONT_CACHE`). Tampoco nos costaría mucho añadir una prueba en caso de que un futuro programador introduzca un error.
+Si llegamos aquí, significa que obtuvimos una clave que no es inferior a 16\*25615. Pero `cacheWrite` limita las claves, por lo que ni siquiera podemos llegar a 14\*25616 (que tendría un primer byte de 0xFE, por lo que parecería `DONT_CACHE`). Pero no nos cuesta mucho añadir una prueba en caso de que un futuro programador introduzca un error.
```solidity
} // encodeVal
@@ -308,7 +305,7 @@ Si hemos llegado aquí, quiere decir que tenemos una llave que no es inferior a
### Probar la caché {#testing-the-cache}
-Una de las ventajas de Foundry es que [te permite escribir pruebas en Solidity](https://book.getfoundry.sh/forge/tests), lo que facilita la escritura de pruebas unitarias. Las pruebas para la clase `Cache` son [aquí](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/Cache.t.sol). Dado que el código de prueba es repetitivo, como suelen ser las pruebas, este artículo solo explica las partes interesantes.
+Una de las ventajas de Foundry es que [le permite escribir pruebas en Solidity](https://getfoundry.sh/forge/tests/overview/), lo que facilita la escritura de pruebas unitarias. Las pruebas para la clase `Cache` están [aquí](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/Cache.t.sol). Dado que el código de prueba es repetitivo, como suelen ser las pruebas, este artículo solo explica las partes interesantes.
```solidity
// SPDX-License-Identifier: UNLICENSED
@@ -317,11 +314,11 @@ pragma solidity ^0.8.13;
import "forge-std/Test.sol";
-// Need to run `forge test -vv` for the console.
+// Es necesario ejecutar `forge test -vv` para la consola.
import "forge-std/console.sol";
```
-Esto es solo la norma que es necesaria para usar el paquete de prueba y `console.log`.
+Esto es solo un texto repetitivo que es necesario para usar el paquete de prueba y `console.log`.
```solidity
import "src/Cache.sol";
@@ -338,13 +335,13 @@ contract CacheTest is Test {
}
```
-La función `setUp` se activa antes de cada prueba. En este caso, solo creamos una nueva caché, para que nuestras pruebas no se afecten entre sí.
+La función `setUp` se llama antes de cada prueba. En este caso, solo creamos una nueva caché para que nuestras pruebas no se afecten entre sí.
```solidity
function testCaching() public {
```
-Las pruebas son funciones cuyos nombres comienzan por `test`. Esta función comprueba la funcionalidad básica de la caché, escribiendo valores y leyéndolos de nuevo.
+Las pruebas son funciones cuyos nombres comienzan con `test`. Esta función comprueba la funcionalidad básica de la caché, escribiendo valores y leyéndolos de nuevo.
```solidity
for(uint i=1; i<5000; i++) {
@@ -355,15 +352,15 @@ Las pruebas son funciones cuyos nombres comienzan por `test`. Esta función comp
assertEq(cache.cacheRead(i), i*i);
```
-Así es como se hacen las pruebas reales, utilizando las funciones [`assert...`](https://book.getfoundry.sh/reference/forge-std/std-assertions). En este caso, comprobamos que el valor que escribimos es el mismo que leemos. Podemos descartar el resultado de `cache.cacheWrite` porque sabemos que las claves de caché se asignan de forma lineal.
+Así es como se realizan las pruebas reales, usando las [funciones `assert...`](https://getfoundry.sh/reference/forge-std/std-assertions/). En este caso, comprobamos que el valor que escribimos es el que leemos. Podemos descartar el resultado de `cache.cacheWrite` porque sabemos que las claves de caché se asignan linealmente.
```solidity
}
} // testCaching
- // Cache the same value multiple times, ensure that the key stays
- // the same
+ // Almacenar en caché el mismo valor varias veces, asegurarse de que la clave siga siendo
+ // la misma
function testRepeatCaching() public {
for(uint i=1; i<100; i++) {
uint _key1 = cache.cacheWrite(i);
@@ -372,7 +369,7 @@ Así es como se hacen las pruebas reales, utilizando las funciones [`assert...`]
}
```
-Primero escribimos cada valor dos veces en la caché y nos aseguramos de que las claves sean las mismas (lo que significa que la segunda escritura no ocurrió realmente).
+Primero escribimos cada valor dos veces en la caché y nos aseguramos de que las claves sean las mismas (lo que significa que la segunda escritura no se realizó).
```solidity
for(uint i=1; i<100; i+=3) {
@@ -382,16 +379,16 @@ Primero escribimos cada valor dos veces en la caché y nos aseguramos de que las
} // testRepeatCaching
```
-En teoría, podría haber un error que no afecte a las escrituras consecutivas en caché. Así que aquí hacemos algunas escrituras que no son consecutivas y vemos que los valores aún no se han reescrito.
+En teoría, podría haber un error que no afecte a las escrituras consecutivas en la caché. Así que aquí hacemos algunas escrituras que no son consecutivas y vemos que los valores aún no se han reescrito.
```solidity
- // Read a uint from a memory buffer (to make sure we get back the parameters
- // we sent out)
+ // Leer un uint desde un búfer de memoria (para asegurarnos de que recuperamos los parámetros
+ // que enviamos)
function toUint256(bytes memory _bytes, uint256 _start) internal pure
returns (uint256)
```
-Lee una palabra de 256 bits desde un búfer de `bytes de memoria`. Esta función de utilidad nos permite verificar que recibimos los resultados correctos cuando ejecutamos una activación de la función que utiliza la caché.
+Lee una palabra de 256 bits desde un búfer de memoria de `bytes`. Esta función de utilidad nos permite verificar que recibimos los resultados correctos cuando ejecutamos una llamada de función que utiliza la caché.
```solidity
{
@@ -403,31 +400,31 @@ Lee una palabra de 256 bits desde un búfer de `bytes de memoria`. Esta función
}
```
-Yul no admite estructuras de datos más allá de `uint256`, por lo que cuando usted se refiere a una estructura de datos más sofisticada, como el búfer de memoria `_bytes`, se obtiene la dirección de esa estructura. Solidity almacena valores de `bytes de memoria` como una palabra de 32 bytes que contiene la longitud, seguida de los bytes reales, por lo que para obtener el número de bytes `_start` necesitamos calcular `_bytes+32+_start`.
+Yul no admite estructuras de datos más allá de `uint256`, por lo que cuando se refiere a una estructura de datos más sofisticada, como el búfer de memoria `_bytes`, obtiene la dirección de esa estructura. Solidity almacena los valores de `bytes memory` como una palabra de 32 bytes que contiene la longitud, seguida de los bytes reales, por lo que para obtener el número de byte `_start` necesitamos calcular `_bytes+32+_start`.
```solidity
return tempUint;
} // toUint256
- // Function signature for fourParams(), courtesy of
+ // Firma de la función para fourParams(), cortesía de
// https://www.4byte.directory/signatures/?bytes4_signature=0x3edc1e6d
bytes4 constant FOUR_PARAMS = 0x3edc1e6d;
- // Just some constant values to see we're getting the correct values back
+ // Solo algunos valores constantes para ver que estamos obteniendo los valores correctos
uint256 constant VAL_A = 0xDEAD60A7;
uint256 constant VAL_B = 0xBEEF;
uint256 constant VAL_C = 0x600D;
uint256 constant VAL_D = 0x600D60A7;
```
-Algunas de las constantes que necesitamos probar.
+Algunas constantes que necesitamos para las pruebas.
```solidity
function testReadParam() public {
```
-Llame a `fourParams()`, una función que utiliza `readParams`, para probar que podemos leer los parámetros correctamente.
+Llame a `fourParams()`, una función que usa `readParams`, para probar que podemos leer los parámetros correctamente.
```solidity
address _cacheAddr = address(cache);
@@ -436,23 +433,23 @@ Llame a `fourParams()`, una función que utiliza `readParams`, para probar que p
bytes memory _callOutput;
```
-No podemos usar el mecanismo ABI normal para llamar a una función usando la caché, por lo que necesitamos usar el mecanismo de bajo nivel [`.call()`](https://docs.soliditylang.org/en/v0.8.16/types.html#members-of-addresses). Ese mecanismo toma una memoria de `bytes` como entrada, y la devuelve (así como un valor booleano) como salida.
+No podemos usar el mecanismo ABI normal para llamar a una función usando la caché, por lo que necesitamos usar el mecanismo de bajo nivel [`.call()`](https://docs.soliditylang.org/en/v0.8.16/types.html#members-of-addresses). Ese mecanismo toma un `bytes memory` como entrada, y lo devuelve (así como un valor booleano) como salida.
```solidity
- // First call, the cache is empty
+ // Primera llamada, la caché está vacía
_callInput = bytes.concat(
FOUR_PARAMS,
```
-Es útil que el mismo contrato admita tanto funciones en caché (para activaciones directamente desde transacciones) como funciones no en caché (para activaciones desde otros contratos inteligentes). Para ell, tenemos que seguir confiando en el mecanismo Solidity para activar la función correcta, en lugar de poner todo en [una función `fallback`](https://docs.soliditylang.org/en/v0.8.16/contracts.html#fallback-function). Esto hace que la composición sea mucho más fácil. Un solo byte sería suficiente para identificar la función en la mayoría de los casos, por lo que estamos desperdiciando tres bytes (16\*3=48 gas). Sin embargo, mientras escribo esto, esos 48 de gas cuestan 0,07 centavos, que es un coste razonable de un código más simple y menos propenso a errores.
+Es útil que el mismo contrato admita tanto funciones en caché (para llamadas directamente desde transacciones) como funciones no cacheadas (para llamadas desde otros contratos inteligentes). Para ello, debemos seguir confiando en el mecanismo de Solidity para llamar a la función correcta, en lugar de poner todo en una [función `fallback`](https://docs.soliditylang.org/en/v0.8.16/contracts.html#fallback-function). Hacer esto facilita mucho la componibilidad. Un solo byte sería suficiente para identificar la función en la mayoría de los casos, por lo que estamos desperdiciando tres bytes (16\*3=48 de gas). Sin embargo, mientras escribo esto, esos 48 de gas cuestan 0,07 centavos, que es un costo razonable para un código más simple y menos propenso a errores.
```solidity
- // First value, add it to the cache
+ // Primer valor, agréguelo a la caché
cache.INTO_CACHE(),
bytes32(VAL_A),
```
-El primer valor: una bandera que dice que es un valor completo que debe escribirse en la caché, seguido de los 32 bytes del valor. Los otros tres valores son similares, con la salvedad de que `VAL_B` no están escritos en la caché y `VAL_C` es tanto el tercer parámetro como el cuarto.
+El primer valor: una bandera que indica que es un valor completo que debe escribirse en la caché, seguido de los 32 bytes del valor. Los otros tres valores son similares, excepto que `VAL_B` no se escribe en la caché y `VAL_C` es tanto el tercer como el cuarto parámetro.
```solidity
.
@@ -462,20 +459,20 @@ El primer valor: una bandera que dice que es un valor completo que debe escribir
(_success, _callOutput) = _cacheAddr.call(_callInput);
```
-Aquí es donde realmente llamamos al contrato `Cache`.
+Aquí es donde realmente llamamos al contrato de `Cache`.
```solidity
assertEq(_success, true);
```
-Esperamos que la activación tenga éxito.
+Esperamos que la llamada tenga éxito.
```solidity
assertEq(cache.cacheRead(1), VAL_A);
assertEq(cache.cacheRead(2), VAL_C);
```
-Comenzamos con una caché vacía y luego añadimos `VAL_A` seguido de `VAL_C`. Esperaríamos que la primera tuviera la clave 1 y que la segunda tuviera 2.
+Empezamos con una caché vacía y luego añadimos `VAL_A` seguido de `VAL_C`. Esperaríamos que la primera tuviera la clave 1 y la segunda tuviera la 2.
```
assertEq(toUint256(_callOutput,0), VAL_A);
@@ -487,22 +484,22 @@ Comenzamos con una caché vacía y luego añadimos `VAL_A` seguido de `VAL_C`. E
La salida son los cuatro parámetros. Aquí verificamos que es correcto.
```solidity
- // Second call, we can use the cache
+ // Segunda llamada, podemos usar la caché
_callInput = bytes.concat(
FOUR_PARAMS,
- // First value in the Cache
+ // Primer valor en la caché
bytes1(0x01),
```
-Las claves de caché por debajo de 16 son solo un byte.
+Las claves de caché por debajo de 16 son de solo un byte.
```solidity
- // Second value, don't add it to the cache
+ // Segundo valor, no añadirlo a la caché
cache.DONT_CACHE(),
bytes32(VAL_B),
- // Third and fourth values, same value
+ // Tercer y cuarto valor, mismo valor
bytes1(0x02),
bytes1(0x02)
);
@@ -512,13 +509,13 @@ Las claves de caché por debajo de 16 son solo un byte.
} // testReadParam
```
-Las pruebas después de la activación son idénticas a las posteriores a la primera activación.
+Las pruebas después de la llamada son idénticas a las posteriores a la primera llamada.
```solidity
function testEncodeVal() public {
```
-Esta función es similar a `testReadParam`, salvo que en lugar de escribir los parámetros explícitamente usamos `encodeVal()`.
+Esta función es similar a `testReadParam`, excepto que en lugar de escribir los parámetros explícitamente, usamos `encodeVal()`.
```solidity
.
@@ -538,23 +535,23 @@ Esta función es similar a `testReadParam`, salvo que en lugar de escribir los p
} // testEncodeVal
```
-La única prueba adicional en `testEncodeVal()` es verificar que la longitud de `_callInput` es correcta. Para la primera activación es 4+33\*4. Para la segunda, donde cada valor ya está en la caché, es 4+1\*4.
+La única prueba adicional en `testEncodeVal()` es verificar que la longitud de `_callInput` es correcta. Para la primera llamada es 4+33_4. Para la segunda, donde cada valor ya está en la caché, es 4+1_4.
```solidity
- // Test encodeVal when the key is more than a single byte
- // Maximum three bytes because filling the cache to four bytes takes
- // too long.
+ // Probar encodeVal cuando la clave es de más de un solo byte
+ // Máximo de tres bytes porque llenar la caché a cuatro bytes lleva
+ // demasiado tiempo.
function testEncodeValBig() public {
- // Put a number of values in the cache.
- // To keep things simple, use key n for value n.
+ // Poner una serie de valores en la caché.
+ // Para simplificar, use la clave n para el valor n.
for(uint i=1; i<0x1FFF; i++) {
cache.cacheWrite(i);
}
```
-La función `testEncodeVal` anterior solo escribe cuatro valores en la caché, por lo que [la parte de la función que se ocupa de los valores de varios bytes](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol#L144-L171) no está marcada. Pero ese código es complicado y propenso a errores.
+La función `testEncodeVal` anterior solo escribe cuatro valores en la caché, por lo que [la parte de la función que trata con valores de varios bytes](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol#L144-L171) no se comprueba. Pero ese código es complicado y propenso a errores.
-La primera parte de esta función es un bucle que escribe todos los valores de 1 a 0x1FFF en la caché en orden, por lo que podremos codificar esos valores y saber a dónde van.
+La primera parte de esta función es un bucle que escribe todos los valores de 1 a 0x1FFF en la caché en orden, para que podamos codificar esos valores y saber a dónde van.
```solidity
.
@@ -563,14 +560,14 @@ La primera parte de esta función es un bucle que escribe todos los valores de 1
_callInput = bytes.concat(
FOUR_PARAMS,
- cache.encodeVal(0x000F), // One byte 0x0F
- cache.encodeVal(0x0010), // Two bytes 0x1010
- cache.encodeVal(0x0100), // Two bytes 0x1100
- cache.encodeVal(0x1000) // Three bytes 0x201000
+ cache.encodeVal(0x000F), // Un byte 0x0F
+ cache.encodeVal(0x0010), // Dos bytes 0x1010
+ cache.encodeVal(0x0100), // Dos bytes 0x1100
+ cache.encodeVal(0x1000) // Tres bytes 0x201000
);
```
-Pruebe con los valores de un byte, dos bytes y tres bytes. No probamos más allá de eso, porque llevaría demasiado tiempo escribir suficientes entradas de pila (al menos 0 x 10000000, aproximadamente un cuarto de mil millones).
+Pruebe con los valores de un byte, dos bytes y tres bytes. No probamos más allá de eso, porque llevaría demasiado tiempo escribir suficientes entradas de pila (al menos 0x10000000, aproximadamente un cuarto de mil millones).
```solidity
.
@@ -580,11 +577,11 @@ Pruebe con los valores de un byte, dos bytes y tres bytes. No probamos más all
} // testEncodeValBig
- // Test what with an excessively small buffer we get a revert
+ // Probar qué ocurre si, con un búfer excesivamente pequeño, obtenemos una reversión
function testShortCalldata() public {
```
-Pruebe lo que sucede en el caso anormal en el que no haya suficientes parámetros.
+Pruebe qué ocurre en el caso anómalo en el que no hay suficientes parámetros.
```solidity
.
@@ -595,10 +592,10 @@ Pruebe lo que sucede en el caso anormal en el que no haya suficientes parámetro
} // testShortCalldata
```
-Dado que se revierte, el resultado que deberíamos obtener es `false`.
+Como se revierte, el resultado que deberíamos obtener es `false`.
```
- // Call with cache keys that aren't there
+ // Llamar con claves de caché que no están ahí
function testNoCacheKey() public {
.
.
@@ -606,11 +603,11 @@ Dado que se revierte, el resultado que deberíamos obtener es `false`.
_callInput = bytes.concat(
FOUR_PARAMS,
- // First value, add it to the cache
+ // Primer valor, agréguelo a la caché
cache.INTO_CACHE(),
bytes32(VAL_A),
- // Second value
+ // Segundo valor
bytes1(0x0F),
bytes2(0x1234),
bytes11(0xA10102030405060708090A)
@@ -623,30 +620,30 @@ Esta función obtiene cuatro parámetros perfectamente legítimos, excepto que l
.
.
.
- // Test what with an excessively long buffer everything works file
+ // Probar que, con un búfer excesivamente largo, todo funciona
function testLongCalldata() public {
address _cacheAddr = address(cache);
bool _success;
bytes memory _callInput;
bytes memory _callOutput;
- // First call, the cache is empty
+ // Primera llamada, la caché está vacía
_callInput = bytes.concat(
FOUR_PARAMS,
- // First value, add it to the cache
+ // Primer valor, agréguelo a la caché
cache.INTO_CACHE(), bytes32(VAL_A),
- // Second value, add it to the cache
+ // Segundo valor, agréguelo a la caché
cache.INTO_CACHE(), bytes32(VAL_B),
- // Third value, add it to the cache
+ // Tercer valor, agréguelo a la caché
cache.INTO_CACHE(), bytes32(VAL_C),
- // Fourth value, add it to the cache
+ // Cuarto valor, agréguelo a la caché
cache.INTO_CACHE(), bytes32(VAL_D),
- // And another value for "good luck"
+ // Y otro valor de "buena suerte"
bytes4(0x31112233)
);
```
@@ -665,9 +662,9 @@ Esta función envía cinco valores. Sabemos que el quinto valor se ignora porque
```
-## Una aplicación de muestra {#a-sample-app}
+## Una aplicación de ejemplo {#a-sample-app}
-Escribir pruebas en Solidity está muy bien, pero al fin y al cabo una DApp tiene que ser capaz de procesar solicitudes de fuera de la cadena para ser útil. Este artículo muestra cómo usar el almacenamiento en caché en una DApp con `WORM`, que significa «Write Once, Read Many». Si aún no se ha escrito una clave, puede escribirle un valor. Si la clave ya está escrita, se obtiene una reversión.
+Escribir pruebas en Solidity está muy bien, pero al fin y al cabo una dapp tiene que ser capaz de procesar solicitudes de fuera de la cadena para ser útil. Este artículo demuestra cómo usar el almacenamiento en caché en una dapp con WORM, que significa «Write Once, Read Many» (Escribir una vez, leer muchas). Si aún no se ha escrito una clave, puede escribirle un valor. Si la clave ya está escrita, obtiene una reversión.
### El contrato {#the-contract}
@@ -688,18 +685,18 @@ La forma más fácil de usar `Cache` es heredarlo en nuestro propio contrato.
} // writeEntryCached
```
-Esta función es similar a `fourParam` en `CacheTest` anterior. Debido a que no seguimos las especificaciones de ABI, es mejor no declarar ningún parámetro en la función.
+Esta función es similar a `fourParam` en `CacheTest` más arriba. Como no seguimos las especificaciones de ABI, es mejor no declarar ningún parámetro en la función.
```solidity
- // Make it easier to call us
- // Function signature for writeEntryCached(), courtesy of
+ // Facilitar que nos llamen
+ // Firma de la función para writeEntryCached(), cortesía de
// https://www.4byte.directory/signatures/?bytes4_signature=0xe4e4f2d3
bytes4 constant public WRITE_ENTRY_CACHED = 0xe4e4f2d3;
```
-El código externo que activa a `writeEntryCached` tendrá que construir manualmente los Calldata, en lugar de usar `worm.writeEntryCached`, porque no seguimos las especificaciones de ABI. Tener este valor constante hace que sea más fácil escribirlo.
+El código externo que llama a `writeEntryCached` tendrá que construir manualmente los calldata, en lugar de usar `worm.writeEntryCached`, porque no seguimos las especificaciones de ABI. Tener este valor constante hace que sea más fácil escribirlo.
-Tenga en cuenta que a pesar de que definimos `WRITE_ENTRY_CACHED` como una variable de estado, para leerla externamente es necesario usar la función getter para ella, `worm.WRITE_ENTRY_CACHED()`.
+Tenga en cuenta que aunque definimos `WRITE_ENTRY_CACHED` como una variable de estado, para leerla externamente es necesario usar su función getter, `worm.WRITE_ENTRY_CACHED()`.
```solidity
function readEntry(uint key) public view
@@ -710,7 +707,7 @@ La función de lectura es una `view`, por lo que no requiere una transacción y
### El código de prueba {#the-testing-code}
-[Este es el código de prueba para el contrato](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/WORM.t.sol). Una vez más, echemos un vistazo a lo que es interesante.
+[Este es el código de prueba para el contrato](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/WORM.t.sol). Una vez más, echemos un vistazo solo a lo que es interesante.
```solidity
function testWReadWrite() public {
@@ -720,14 +717,14 @@ La función de lectura es una `view`, por lo que no requiere una transacción y
worm.writeEntry(0xDEAD, 0xBEEF);
```
-[Esto (`vm.expectRevert`)](https://book.getfoundry.sh/cheatcodes/expect-revert#expectrevert) es como especificamos en una prueba de Foundry que la siguiente activación debe fallar, e informamos de la razón del fallo. Esto se aplica cuando usamos la sintaxis `.()` en lugar de construir los Calldata y activar el contrato utilizando la interfaz de bajo nivel (`.call()`, etc.).
+[Esto (`vm.expectRevert`)](https://book.getfoundry.sh/cheatcodes/expect-revert#expectrevert) es cómo especificamos en una prueba de Foundry que la siguiente llamada debe fallar, y la razón informada del fallo. Esto se aplica cuando usamos la sintaxis `.() en lugar de construir los calldata y llamar al contrato usando la interfaz de bajo nivel (`.call()\`, etc.).
```solidity
function testReadWriteCached() public {
uint cacheGoat = worm.cacheWrite(0x60A7);
```
-Aquí nos basamos en que `cacheWrite` devuelve la clave de la caché. Nno es algo que esperábamos usar en la producción, porque `cacheWrite` cambia el estado y, por lo tanto, solo se puede llamar durante una transacción. Las transacciones no tienen valores de retorno, si tienen resultados, se supone que esos resultados se emiten como eventos. Por lo tanto, el valor de retorno `cacheWrite` solo es accesible desde el código en cadena, y el código en cadena no necesita almacenamiento en caché de parámetros.
+Aquí nos basamos en que `cacheWrite` devuelve la clave de la caché. Esto no es algo que esperaríamos usar en producción, porque `cacheWrite` cambia el estado y, por lo tanto, solo se puede llamar durante una transacción. Las transacciones no tienen valores de retorno; si tienen resultados, se supone que esos resultados se emiten como eventos. Por lo tanto, el valor de retorno de `cacheWrite` solo es accesible desde el código en la cadena, y el código en la cadena no necesita almacenamiento en caché de parámetros.
```solidity
(_success,) = address(worm).call(_callInput);
@@ -740,7 +737,7 @@ Así es como le decimos a Solidity que, si bien `.call()` tien
assertEq(_success, false);
```
-Dado que usamos la función de bajo nivel `.call()`, no podemos usar `vm.expectRevert()` y tenemos que mirar el valor de éxito booleano que obtenemos de la activación.
+Dado que usamos la función de bajo nivel `.call()`, no podemos usar `vm.expectRevert()` y tenemos que mirar el valor booleano de éxito que obtenemos de la llamada.
```solidity
event EntryWritten(uint indexed key, uint indexed value);
@@ -756,11 +753,11 @@ Dado que usamos la función de bajo nivel `.call()`, no podemos usar `v
(_success,) = address(worm).call(_callInput);
```
-Esta es la forma en que verificamos que el código [emite un evento correctamente](https://book.getfoundry.sh/cheatcodes/expect-emit) en Foundry.
+Esta es la forma en que verificamos que el código [emite un evento correctamente](https://getfoundry.sh/reference/cheatcodes/expect-emit/) en Foundry.
### El cliente {#the-client}
-Una cosa que no se consigue con las pruebas de Solidity es un código JavaScript para cortar y pegar en su propia aplicación. Para escribir ese código, implementé WORM en [Optimism Goerli](https://community.optimism.io/docs/useful-tools/networks/#optimism-goerli), [Optimism](https://www.optimism.io/) nueva red de prueba. Está en la dirección [`0xd34335b1d818cee54e3323d3246bd31d94e6a78a`](https://goerli-optimism.etherscan.io/address/0xd34335b1d818cee54e3323d3246bd31d94e6a78a).
+Una cosa que no se consigue con las pruebas de Solidity es un código JavaScript para cortar y pegar en su propia aplicación. Para escribir ese código, desplegué WORM en [Optimism Goerli](https://community.optimism.io/docs/useful-tools/networks/#optimism-goerli), la nueva red de prueba de [Optimism](https://www.optimism.io/). Está en la dirección [`0xd34335b1d818cee54e3323d3246bd31d94e6a78a`](https://goerli-optimism.etherscan.io/address/0xd34335b1d818cee54e3323d3246bd31d94e6a78a).
[Puede ver el código JavaScript para el cliente aquí](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/javascript/index.js). Para usarlo:
@@ -783,12 +780,12 @@ Una cosa que no se consigue con las pruebas de Solidity es un código JavaScript
cp .env.example .env
```
-4. Edite `.env` en su configuración:
+4. Edite `.env` para su configuración:
- | Parámetro | Valor |
- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | MNEMONIC | El mnemotécnico de una cuenta que tiene suficiente ETH para pagar una transacción. [Puede obtener ETH gratis para la red Optimism Goerli aquí](https://optimismfaucet.xyz/). |
- | OPTIMISM_GOERLI_URL | La URL a Optimism Goerli. La terminal pública, `https://goerli.optimism.io`, tiene una tasa limitada pero suficiente para lo que necesitamos aquí |
+ | Parámetro | Valor |
+ | ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | MNEMONIC | El mnemónico de una cuenta que tiene suficiente ETH para pagar una transacción. [Puede obtener ETH gratis para la red Optimism Goerli aquí](https://optimismfaucet.xyz/). |
+ | OPTIMISM_GOERLI_URL | URL a Optimism Goerli. El punto de conexión público, `https://goerli.optimism.io`, tiene una tasa limitada pero es suficiente para lo que necesitamos aquí. |
5. Ejecute `index.js`.
@@ -796,9 +793,9 @@ Una cosa que no se consigue con las pruebas de Solidity es un código JavaScript
node index.js
```
- Esta aplicación de ejemplo escribe primero una entrada en WORM, mostrando los Calldata y un enlace a la transacción en Etherscan. Luego lee esa entrada y muestra la clave que utiliza y los valores de la entrada (valor, número de bloque y autor).
+ Esta aplicación de ejemplo escribe primero una entrada en WORM, mostrando los calldata y un enlace a la transacción en Etherscan. Luego lee esa entrada y muestra la clave que utiliza y los valores de la entrada (valor, número de bloque y autor).
-La mayor parte del cliente es una DApp JavaScript normal. Así que, de nuevo, solo repasamos las partes interesantes.
+La mayor parte del cliente es JavaScript de una dapp normal. Así que, de nuevo, solo repasaremos las partes interesantes.
```javascript
.
@@ -807,20 +804,20 @@ La mayor parte del cliente es una DApp JavaScript normal. Así que, de nuevo, so
const main = async () => {
const func = await worm.WRITE_ENTRY_CACHED()
- // Need a new key every time
+ // Se necesita una nueva clave cada vez
const key = await worm.encodeVal(Number(new Date()))
```
-Una ranura determinada solo se puede escribir una vez, por lo que usamos la marca de tiempo para asegurarnos de no reutilizar las ranuras.
+En una ranura determinada solo se puede escribir una vez, por lo que usamos la marca de tiempo para asegurarnos de no reutilizar las ranuras.
```javascript
const val = await worm.encodeVal("0x600D")
-// Write an entry
+// Escribir una entrada
const calldata = func + key.slice(2) + val.slice(2)
```
-Ethers espera que los datos de la activación sean una cadena hexadecimal, `0x` seguida de un número par de dígitos hexadecimales. Como `key` y `val` comienzan por `0x`, tenemos que eliminar esos encabezados.
+Ethers espera que los datos de la llamada sean una cadena hexadecimal, `0x` seguida de un número par de dígitos hexadecimales. Como `key` y `val` comienzan con `0x`, necesitamos eliminar esas cabeceras.
```javascript
const tx = await worm.populateTransaction.writeEntryCached()
@@ -829,14 +826,14 @@ tx.data = calldata
sentTx = await wallet.sendTransaction(tx)
```
-Al igual que con el código de prueba de Solidity, no podemos activar a una función en caché normalmente. En su lugar, necesitamos usar un mecanismo de nivel inferior.
+Al igual que con el código de prueba de Solidity, no podemos llamar a una función en caché normalmente. En su lugar, necesitamos usar un mecanismo de nivel inferior.
```javascript
.
.
.
- // Read the entry just written
- const realKey = '0x' + key.slice(4) // remove the FF flag
+ // Leer la entrada que se acaba de escribir
+ const realKey = '0x' + key.slice(4) // eliminar la bandera FF
const entryRead = await worm.readEntry(realKey)
.
.
@@ -847,21 +844,24 @@ Para leer las entradas podemos usar el mecanismo normal. No es necesario usar el
## Conclusión {#conclusion}
-El código de este artículo es una prueba de concepto, el propósito es hacer que la idea sea fácil de entender. Para un sistema listo para la producción, es posible que se deseen implementar algunas funciones adicionales:
+El código de este artículo es una prueba de concepto, el propósito es hacer que la idea sea fácil de entender. Para un sistema listo para la producción, es posible que se deseen implementar algunas funcionalidades adicionales:
-- Manejar valores que no son `uint256`. Por ejemplo, cadenas.
-- En lugar de una caché global, tal vez tenga una asignación entre los usuarios y las cachés. Diferentes usuarios usan diferentes valores.
+- Manejar valores que no sean `uint256`. Por ejemplo, cadenas.
+- En lugar de una caché global, tal vez se podría tener un mapeo entre los usuarios y las cachés. Diferentes usuarios usan diferentes valores.
- Los valores utilizados para las direcciones son distintos de los utilizados para otros fines. Tener una caché separada solo para las direcciones podría ser oportuno.
-- Actualmente, las claves de caché están en un algoritmo de «el primero en llegar se lleva la clave más pequeña». Los primeros dieciséis valores se pueden enviar como un solo byte. Los siguientes 4.080 valores se pueden enviar como dos bytes. Los siguientes valores de cerca de un millón son de tres bytes, etc. Un sistema de producción debe mantener los contadores de uso en las entradas de la caché y reorganizarlos de modo que los dieciséis _valores más comunes_ sean de un byte, los siguientes 4.080 valores más comunes de dos bytes, etc.
+- Actualmente, las claves de caché están en un algoritmo de «el primero en llegar se lleva la clave más pequeña». Los primeros dieciséis valores se pueden enviar como un solo byte. Los siguientes 4080 valores se pueden enviar como dos bytes. Los siguientes valores, aproximadamente un millón, son de tres bytes, etc. Un sistema de producción debe mantener los contadores de uso en las entradas de la caché y reorganizarlos de modo que los dieciséis valores _más comunes_ sean de un byte, los siguientes 4080 valores más comunes de dos bytes, etc.
Sin embargo, esta es una operación potencialmente peligrosa. Imagine la siguiente secuencia de eventos:
- 1. Noam Naive activa `encodeVal` para codificar la dirección a la que quiere enviar tókenes. Esa dirección es una de las primeras utilizadas en la aplicación, por lo que el valor codificado es 0 x 06. Esta es una función `view`, no una transacción, así que está entre Noam y el nodo que usa, y nadie más lo sabe.
+ 1. Noam Naive llama a `encodeVal` para codificar la dirección a la que quiere enviar tókenes. Esa dirección es una de las primeras utilizadas en la aplicación, por lo que el valor codificado es 0x06. Esta es una función `view`, no una transacción, así que está entre Noam y el nodo que usa, y nadie más lo sabe.
- 2. Owen Owner ejecuta la operación de reordenación de la caché. Muy pocas personas realmente usan esa dirección, por lo que ahora está codificada como 0 x 201122. Un valor diferente, 1018, se asigna 0 x 06.
+ 2. Owen Owner ejecuta la operación de reordenación de la caché. Muy pocas personas realmente usan esa dirección, por lo que ahora está codificada como 0x201122. A un valor diferente, 1018, se le asigna 0x06.
- 3. Noam Naive envía sus fichas a 0 x 06. Van a la dirección `0x0000000000000000000000000de0b6b3a7640000`, y como nadie conoce la clave privada de esa dirección, están atrapados allí. Noam _no está contento al respecto_.
+ 3. Noam Naive envía sus tókenes a 0x06. Van a la dirección `0x0000000000000000000000000de0b6b3a7640000`, y como nadie conoce la clave privada de esa dirección, están atrapados allí. Noam _no está contento_.
- Hay formas de resolver este problema y el problema relacionado con las transacciones que están en la zona de espera durante el reorden de la caché, pero debe ser consciente de ello.
+ Hay formas de resolver este problema y el problema relacionado con las transacciones que están en la mempool durante el reorden de la caché, pero debe ser consciente de ello.
+
+He demostrado el almacenamiento en caché aquí con Optimism, porque soy un empleado de Optimism y este es el rollup que mejor conozco. Pero debería funcionar con cualquier rollup que cobre un costo mínimo por el procesamiento interno, de modo que, en comparación, escribir los datos de la transacción en L1 sea el mayor gasto.
+
+[Vea aquí más de mi trabajo](https://cryptodocguy.pro/).
-He demostrado el almacenamiento en caché aquí con Optimism, porque soy un empleado de Optimism y este es el rollup que mejor conozco. Pero debería funcionar con cualquier rollup que cobre un coste mínimo por el procesamiento interno, de modo que, en comparación, escribir los datos de la transacción en L1 sea el mayor gasto.
From 1496d91ae3b467f8b399fd97ad55ae892974939a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:17 -0300
Subject: [PATCH 279/589] update(i18n):
public/content/translations/es/contributing/translation-program/how-to-translate/index.md
---
.../how-to-translate/index.md | 22 +++++++++----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/public/content/translations/es/contributing/translation-program/how-to-translate/index.md b/public/content/translations/es/contributing/translation-program/how-to-translate/index.md
index 46ce3b062ae..fcec90f9bfe 100644
--- a/public/content/translations/es/contributing/translation-program/how-to-translate/index.md
+++ b/public/content/translations/es/contributing/translation-program/how-to-translate/index.md
@@ -12,7 +12,7 @@ Para quienes aprenden mejor observando, vean la guía paso a paso de Luka para c
-## Guía por escrito {#written-guide}
+## Guía escrita {#written-guide}
### Únase a nuestro proyecto en Crowdin {#join-project}
@@ -24,7 +24,8 @@ Deberá iniciar sesión en su cuenta de Crowdin o registrarse si aún no tiene u
### Abra su idioma {#open-language}
-Tras iniciar sesión en Crowdin, verá la descripción de un proyecto y la lista de todos los idiomas disponibles. Cada idioma contiene información sobre la cantidad total de palabras por traducir y un resumen de cuánto contenido se ha tanto traducido como aprobado en un idioma específico.
+Tras iniciar sesión en Crowdin, verá la descripción de un proyecto y la lista de todos los idiomas disponibles.
+Cada idioma contiene información sobre la cantidad total de palabras por traducir y un resumen de cuánto contenido se ha tanto traducido como aprobado en un idioma específico.
Abra el idioma al que quiera traducir para ver la lista de archivos disponibles para su traducción.
@@ -34,17 +35,15 @@ Abra el idioma al que quiera traducir para ver la lista de archivos disponibles
El sitio web se divide en una serie de documentos y lotes de contenido. Puede ver el progreso de cada documento en la parte derecha. Si el progreso de una traducción está por debajo del 100 %, ¡ayúdenos a terminarla!
-¿No ve su idioma en la lista de idiomas? [Abra una incidencia](https://github.com/ethereum/ethereum-org-website/issues/new/choose) o pregunte en nuestro [Discord](https://discord.gg/ethereum-org),
+¿No ve su idioma en la lista de idiomas? [Abra una incidencia](https://github.com/ethereum/ethereum-org-website/issues/new/choose) o pregunte en nuestro [Discord](https://discord.gg/ethereum-org)

-Un apunte sobre las versiones de contenido: utilizamos "cubos de contenido" dentro de Crowdin para que el contenido de máxima prioridad se publique primero. Cuando seleccione un idioma (como el [filipino](https://crowdin.com/project/ethereum-org/fil#), por ejemplo) verá carpetas para cada versión del sitio («v2.1», «v2.», etc.). Homepage", "2. Essentials", "3. Exploring", etc.).
+Un apunte sobre las versiones de contenido: utilizamos "cubos de contenido" dentro de Crowdin para que el contenido de máxima prioridad se publique primero. Cuando seleccione un idioma, por ejemplo, [filipino](https://crowdin.com/project/ethereum-org/fil#), verá carpetas para el lote de contenido («1. Homepage", "2. Essentials", "3. Exploring", etc.).
Le recomendamos que traduzca en el orden numérico (1 → 2 → 3 → R) para asegurar que las páginas de mayor impacto sean traducidas primero.
-[Más información sobre los cubos de contenido ethereum.org](/contributing/translation-program/content-buckets/)
-
-### Traduce {#translate}
+### Traducir {#translate}
Despues de que selecciones el archivo que tu quieres traducir, el se abrirá en el editor online. Si nunca antes ha usado Crowdin, puede leer esta pequeña guía para aprender lo básico.
@@ -60,7 +59,8 @@ También puede usar los botones de la parte superior para buscar cadenas especí
**_2 – Área de edición_**
-Área principal de traducción – el texto original se muestra arriba junto con contexto adicional y capturas de pantalla (si las hay). Para sugerir una nueva traducción debe escribirla en el campo «Enter translation here» y hacer clic en «Save».
+Área principal de traducción – el texto original se muestra arriba junto con contexto adicional y capturas de pantalla (si las hay).
+Para sugerir una nueva traducción debe escribirla en el campo «Enter translation here» y hacer clic en «Save».
También puede encontrar traducciones existentes del enunciado en otros idiomas en esta sección, así como coincidencias en la memoria de traducción y sugerencias del motor de traducción automática.
@@ -74,7 +74,7 @@ Los botones de la parte superior le permiten cambiar a la sección de coincidenc
### Proceso de revisión {#review-process}
-Una vez que complete la traducción (es decir, cuando todos los archivos de un lote de contenido indiquen un 100%), nuestro servicio de traducción profesional revisará (y editará personalmente) el contenido. Cuando la revisión esté lista (cuando el progreso de la revisión sea 100 %), añadiremos la traducción al sitio web.
+Una vez que complete la traducción (es decir, cuando todos los archivos de un lote de contenido indiquen el 100 %), nuestro servicio de traducción profesional revisará (y potencialmente editará) el contenido. Una vez que la revisión esté completa (es decir, el progreso de la revisión es del 100 %), añadiremos la traducción al sitio web.
@@ -83,9 +83,9 @@ Una vez que complete la traducción (es decir, cuando todos los archivos de un l
-### Contáctenos {#get-in-touch}
+### Póngase en contacto {#get-in-touch}
-¿Tiene alguna pregunta? ¿O quiere colaborar con nuestro equipo y otros traductores? Envíe un mensaje al canal #translations de nuestro servidor [Discord de ethereum.org](https://discord.gg/ethereum-org)
+¿Tiene alguna pregunta? ¿O quiere colaborar con nuestro equipo y otros traductores? Publique en el canal #translations de nuestro [servidor de Discord de ethereum.org](https://discord.gg/ethereum-org)
También puede contactarnos a través de nuestro correo electrónico translations@ethereum.org.
From db9bc95772988de7cbf288db17ed982473bc6317 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:20 -0300
Subject: [PATCH 280/589] update(i18n):
public/content/translations/es/whitepaper/index.md
---
.../translations/es/whitepaper/index.md | 281 +++++++++---------
1 file changed, 145 insertions(+), 136 deletions(-)
diff --git a/public/content/translations/es/whitepaper/index.md b/public/content/translations/es/whitepaper/index.md
index dc1a1a08a93..ee37a0898f7 100644
--- a/public/content/translations/es/whitepaper/index.md
+++ b/public/content/translations/es/whitepaper/index.md
@@ -1,36 +1,36 @@
---
-title: Guía de Ethereum
+title: Informe oficial de Ethereum
description: Una guía introductoria a Ethereum publicada en 2013 antes de su lanzamiento.
lang: es
sidebarDepth: 2
hideEditButton: true
---
-# Guía de Ethereum {#ethereum-whitepaper}
+# Informe de Ethereum {#ethereum-whitepaper}
-_Este artículo introductorio fue publicado originalmente en 2014 por Vitalik Buterin, el fundador de [Ethereum](/what-is-ethereum/), antes del lanzamiento del proyecto en 2015. Vale la pena señalar que Ethereum, al igual que muchos proyectos de software de código abierto impulsados por la comunidad, ha evolucionado desde su inicio._
+_Este documento introductorio fue publicado originalmente en 2014 por Vitalik Buterin, el fundador de [Ethereum](/what-is-ethereum/), antes del lanzamiento del proyecto en 2015. Vale la pena señalar que Ethereum, al igual que muchos proyectos de software de código abierto impulsados por la comunidad, ha evolucionado desde su inicio._
-_Aunque tenga varios años de antigüedad, mantenemos este documento porque sigue sirviendo como una referencia útil y una representación precisa de Ethereum y su visión. Para aprender sobre los últimos desarrollos de Ethereum, y cómo se hacen los cambios en el protocolo, recomendamos [esta guía](/learn/)._
+_Aunque tenga varios años de antigüedad, mantenemos este documento porque sigue sirviendo como una referencia útil y una representación precisa de Ethereum y su visión. Para obtener más información sobre los últimos desarrollos de Ethereum y cómo se realizan los cambios en el protocolo, le recomendamos [esta guía](/learn/)._
[Los investigadores y académicos que busquen una versión histórica o canónica del informe [de diciembre de 2014] deben utilizar este PDF.](./whitepaper-pdf/Ethereum_Whitepaper_-_Buterin_2014.pdf)
-## Un contrato inteligente de próxima generación y una plataforma de aplicaciones descentralizadas {#a-next-generation-smart-contract-and-decentralized-application-platform}
+## Una plataforma de contratos inteligentes y aplicaciones descentralizadas de nueva generación {#a-next-generation-smart-contract-and-decentralized-application-platform}
-El desarrollo de Bitcoin por parte de Satoshi Nakamoto en 2009 ha sido aclamado a menudo como un desarrollo radical en dinero y moneda, siendo el primer ejemplo de un activo digital que simultáneamente no tiene respaldo ni "[valor intrínseco](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/)" y ningún emisor o controlador centralizado. Sin embargo, otra parte del experimento de Bitcoin, posiblemente más importante, es la tecnología blockchain subyacente como una herramienta de consenso distribuido, y la atención está comenzando a cambiar rápidamente a este otro aspecto de Bitcoin. Las aplicaciones alternativas que se citan comunmente de la tecnología de cadena de bloques incluyen el el uso de los activos digitales de cadena de bloques para representar divisas a medida e instrumentos financieros ("[monedas de color](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)"), la propiedad de un artefacto físico subyacente ([propiedad inteligente](https://en.bitcoin.it/wiki/Smart_Property)), activos no fungibles como nombres de dominio ([Namecoin](http://namecoin.org)), así como aplicaciones más complejas que involucran activos digitales controlados directamente por un fragmento de código que implementa reglas arbitrarias ("[contratos inteligentes](http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html)") o incluso [organizaciones autónomas descentralizadas (DAO)](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/) basadas en la cadena de bloques. Ethereum pretende proporcionar una cadena de bloques con un lenguaje de programación completo de Turing que se integra a la perfección y puede utilizarse para crear «contratos» que pueden servir para codificar funciones de transición de estado arbitrario, permitiendo a los usuarios crear cualquiera de los sistemas descritos anteriormente, así como muchos otros que todavía no hemos imaginado, simplemente escribiendo la lógica en algunas líneas de código.
+El desarrollo de Bitcoin por parte de Satoshi Nakamoto en 2009 ha sido aclamado a menudo como un desarrollo radical en el dinero y la moneda, siendo el primer ejemplo de un activo digital que simultáneamente no tiene respaldo o "[valor intrínseco](https://bitcoinmagazine.com/culture/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it)" y no tiene un emisor o controlador centralizado. Sin embargo, otra parte del experimento de Bitcoin, posiblemente más importante, es la tecnología blockchain subyacente como una herramienta de consenso distribuido, y la atención está comenzando a cambiar rápidamente a este otro aspecto de Bitcoin. Las aplicaciones alternativas de la tecnología de cadena de bloques que se citan habitualmente incluyen el uso de activos digitales en la cadena de bloques para representar monedas e instrumentos financieros personalizados ("[monedas coloreadas](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)"), la propiedad de un dispositivo físico subyacente ("[propiedad inteligente](https://en.bitcoin.it/wiki/Smart_Property)"), activos no fungibles como nombres de dominio ("[Namecoin](http://namecoin.org)"), así como aplicaciones más complejas que implican que los activos digitales sean controlados directamente por un fragmento de código que implementa reglas arbitrarias ("[contratos inteligentes](http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html)") o incluso "[organizaciones autónomas descentralizadas](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/)" (DAO) basadas en la cadena de bloques. Ethereum pretende proporcionar una cadena de bloques con un lenguaje de programación completo de Turing que se integra a la perfección y puede utilizarse para crear «contratos» que pueden servir para codificar funciones de transición de estado arbitrario, permitiendo a los usuarios crear cualquiera de los sistemas descritos anteriormente, así como muchos otros que todavía no hemos imaginado, simplemente escribiendo la lógica en algunas líneas de código.
## Introducción a Bitcoin y a los conceptos existentes {#introduction-to-bitcoin-and-existing-concepts}
-### Historial {#history}
+### Historia {#history}
-El concepto de moneda digital descentralizada, así como aplicaciones alternativas como registros de propiedades, ha existido durante décadas. Los protocolos anónimos de dinero electrónico de las décadas de 1980 y 1990, que en su mayoría dependían de una primitiva criptográfica conocida como firma digital ciega, proporcionaban una moneda con un alto grado de privacidad, pero los protocolos en gran medida no lograron ganar terreno, debido a su dependencia de un intermediario centralizado. En 1988, [b-money](http://www.weidai.com/bmoney.txt) de Wei Dai se convirtió en la primera propuesta de introducir la idea de crear dinero a través de la resolución de rompecabezas computacionales, así como de consensos descentralizados, pero la propuesta no entraba en detalle sobre cómo se podría aplicar realmente el consenso descentralizado. En 2005, Hal Finney introdujo un concepto de "[pruebas de trabajo reutilizables (PoW)](https://nakamotoinstitute.org/finney/rpow/)", un sistema que utiliza ideas de b-money junto con los rompecabezas Hashcash de Adam Back difíciles para crear un concepto de criptomoneda, pero una vez más no cumplió con el ideal al apoyarse en la computación confiable como backend. En 2009, Satoshi Nakamoto implementó por primera vez en la práctica una moneda descentralizada, combinando primitivas establecidas para administrar la propiedad a través de criptografía de clave pública con un algoritmo de consenso para realizar un seguimiento de quién posee monedas, conocido como «prueba de trabajo».
+El concepto de moneda digital descentralizada, así como aplicaciones alternativas como registros de propiedades, ha existido durante décadas. Los protocolos anónimos de dinero electrónico de las décadas de 1980 y 1990, que en su mayoría dependían de una primitiva criptográfica conocida como firma digital ciega, proporcionaban una moneda con un alto grado de privacidad, pero los protocolos en gran medida no lograron ganar terreno, debido a su dependencia de un intermediario centralizado. En 1998, el [b-money](http://www.weidai.com/bmoney.txt) de Wei Dai se convirtió en la primera propuesta que introdujo la idea de crear dinero mediante la resolución de acertijos computacionales y el consenso descentralizado, pero la propuesta era escasa en detalles sobre cómo se podría implementar realmente el consenso descentralizado. En 2005, Hal Finney introdujo un concepto de "[pruebas de trabajo reutilizables](https://nakamotoinstitute.org/finney/rpow/)", un sistema que utiliza ideas de b-money junto con los enigmas computacionalmente difíciles de Hashcash de Adam Back para crear un concepto de criptomoneda, pero que una vez más se quedó corto del ideal al depender de la computación confiable como backend. En 2009, Satoshi Nakamoto implementó por primera vez en la práctica una moneda descentralizada, combinando primitivas establecidas para administrar la propiedad a través de criptografía de clave pública con un algoritmo de consenso para realizar un seguimiento de quién posee monedas, conocido como «prueba de trabajo».
-El mecanismo detrás de la prueba de trabajo fue un gran avance en el espacio, ya que resolvió simultáneamente dos problemas. Primero, proporcionó un algoritmo de consenso simple y moderadamente efectivo, que permitió a los nodos de la red acordar colectivamente un conjunto de actualizaciones canónicas del estado del libro mayor de Bitcoin. En segundo lugar, proporcionó un mecanismo para permitir la libre entrada en el proceso de consenso, resolviendo el problema político de decidir quién puede influir en el consenso y, al mismo tiempo, prevenir los ataques sybil. Lo logra sustituyendo una barrera formal a la participación, como el requisito de estar registrado como una entidad única en una lista en particular, con una barrera económica: el peso de un solo nodo en el proceso de votación por consenso es directamente proporcional a la potencia computacional que aporta el nodo. Desde entonces, se ha propuesto un enfoque alternativo llamado _prueba-de-participación_, calculando el peso de un nodo que sea proporcional a sus tenencias monetarias y no a los recursos computacionales; la discusión de los méritos relativos de los dos enfoques va más allá del alcance de este informe, pero debe tenerse en cuenta que ambos enfoques se pueden utilizar como columna vertebral de una criptomoneda.
+El mecanismo detrás de la prueba de trabajo fue un gran avance en el espacio, ya que resolvió simultáneamente dos problemas. Primero, proporcionó un algoritmo de consenso simple y moderadamente efectivo, que permitió a los nodos de la red acordar colectivamente un conjunto de actualizaciones canónicas del estado del libro mayor de Bitcoin. En segundo lugar, proporcionó un mecanismo para permitir la libre entrada en el proceso de consenso, resolviendo el problema político de decidir quién puede influir en el consenso y, al mismo tiempo, prevenir los ataques sybil. Lo logra sustituyendo una barrera formal a la participación, como el requisito de estar registrado como una entidad única en una lista en particular, con una barrera económica: el peso de un solo nodo en el proceso de votación por consenso es directamente proporcional a la potencia computacional que aporta el nodo. Desde entonces, se ha propuesto un enfoque alternativo llamado _prueba de participación_, que calcula el peso de un nodo como proporcional a sus tenencias de moneda y no a sus recursos computacionales; la discusión de los méritos relativos de los dos enfoques está fuera del alcance de este documento, pero debe tenerse en cuenta que ambos enfoques pueden servir como la columna vertebral de una criptomoneda.
-### Bitcoin como un sistema de transición de estados {#bitcoin-as-a-state-transition-system}
+### Bitcoin como un sistema de transición de estado {#bitcoin-as-a-state-transition-system}

-Desde un punto de vista técnico, el libro mayor de una criptomoneda como Bitcoin se puede considerar como un sistema de transición de estados, donde existe un «estado» que consiste en el estado de propiedad de todos los bitcoins existentes y una «función de transición de estados» que tome un estado y una transacción y devuelva un nuevo estado como resultado. En un sistema bancario estándar, por ejemplo, el estado es una hoja de balance, una transacción es una petición para mover $X de A a B, y la función de transición de estado reduce el valor en la cuenta A en $X y aumenta el valor en la cuenta B en $X. Si la cuenta A tiene menos de $X en primer lugar, la función de transición de estado devuelve un error. Por lo tanto, se puede definir formalmente:
+Desde un punto de vista técnico, el libro mayor de una criptomoneda como Bitcoin se puede considerar como un sistema de transición de estados, donde existe un «estado» que consiste en el estado de propiedad de todos los bitcoins existentes y una «función de transición de estados» que tome un estado y una transacción y devuelva un nuevo estado como resultado. En un sistema bancario estándar, por ejemplo, el estado es un balance general, una transacción es una solicitud para mover X $ de A a B y la función de transición de estado reduce el valor en la cuenta de A en X $ y aumenta el valor en la cuenta de B en X $. Si, en primer lugar, la cuenta de A tiene menos de X $, la función de transición de estado devuelve un error. Por lo tanto, se puede definir formalmente:
```
APPLY(S,TX) -> S' o ERROR
@@ -50,111 +50,111 @@ APPLY({ Alice: $50, Bob: $50 },"enviar $70 de Alice a Bob") = ERROR
El «estado» en Bitcoin es el conjunto de todas las monedas (técnicamente, «transacciones de salida no gastadas» o UTXO, por sus siglas en inglés) que se han creado, pero que aún no se han gastado, donde cada UTXO tiene una denominación y un propietario (definido por una dirección de 20 bytes, que es esencialmente una clave pública criptográfica[fn1](#notes)). Una transacción contiene uno o más entradas, donde cada entrada contiene una referencia a una UTXO existente y una firma criptográfica producida por una clave privada asociada con la dirección del propietario y una o más salidas, donde cada salida contiene una nueva UTXO que se añadirá al estado.
-La función de transición de estado `APPLY(S,TX) -> S'` puede definirse aproximadamente de la siguiente manera:
+La función de transición de estado `APPLY(S,TX) -> S'` se puede definir a grandes rasgos de la siguiente manera:
- Para cada entrada en TX:
+ Por cada entrada en TX:
- Si la UTXO referenciada no está en S, da error.
+ Si la UTXO a la que se hace referencia no está en S, se devuelve un error.
- Si la firma proporcionada no coincide con el propietario de la UTXO, devuelve un error.
+ Si la firma proporcionada no coincide con el propietario de la UTXO, se devuelve un error.
- Si la suma de las denominaciones de todas las UTXO de entrada es menor que la suma de las denominaciones de todas las UTXO de salida, da error.
+ Si la suma de las denominaciones de todas las UTXO de entrada es menor que la suma de las denominaciones de todas las UTXO de salida, se devuelve un error.
- Da S en todas las entradas UTXO eliminadas y todas las salidas UTXO añadidas.
+ Devuelve S con todas las UTXO de entrada eliminadas y todas las UTXO de salida añadidas.
-La primera mitad del primer paso impide a los emisores de transacciones que gasten monedas que no existen, la segunda mitad del primer paso impide que los emisores de transacciones gasten las monedas de otras personas, y el segundo paso hace cumplir la conservación del valor. Para poder utilizar esto para hacer pagos, el protocolo es el siguiente. Supongamos que Alice quiere enviar 11,7 BTC a Bob. En primer lugar, Alice buscará un conjunto de UTXO disponibles en su poder que sumen un total de al menos 11,7 BTC. En la práctica, Alice no será capaz de obtener exactamente 11,7 BTC; digamos que la cifra más pequeña que puede obtener es 6+4+2=12. A continuación, crea una transacción con estas tres entradas y dos salidas. La primera salida será 11,7 BTC con la dirección de Bob como propietario, y la segunda salida será el "cambio" restante de 0,3 BTC, siendo la propietaria la misma Alice.
+La primera mitad del primer paso evita que los remitentes de transacciones gasten monedas que no existen, la segunda mitad del primer paso evita que los remitentes de transacciones gasten las monedas de otras personas, y el segundo paso hace cumplir la conservación del valor. Para utilizar esto para el pago, el protocolo es el siguiente. Suponga que Alice quiere enviar 11,7 BTC a Bob. Primero, Alice buscará un conjunto de UTXO disponibles que posea y que sumen al menos 11,7 BTC. Siendo realistas, Alice no podrá obtener exactamente 11,7 BTC; digamos que lo mínimo que puede conseguir es 6+4+2=12. Luego crea una transacción con esas tres entradas y dos salidas. La primera salida será de 11,7 BTC con la dirección de Bob como propietaria, y la segunda salida será el "cambio" restante de 0,3 BTC, con la propietaria siendo la propia Alice.
### Minería {#mining}

-Si tuviéramos acceso a un servicio centralizado de confianza, este sistema sería trivial de implementar; se podría exactamente como se ha descrito, usando el disco duro de un servidor centralizado para mantener el registro del estado. Sin embargo, con Bitcoin estamos tratando de construir un sistema monetario descentralizado, así que necesitaremos combinar el sistema de transición de estados con un sistema de consenso para asegurarse de que todo el mundo esté de acuerdo en el orden de las transacciones. El proceso de consenso descentralizado de Bitcoin requiere que los nodos que integran la red intenten producir continuamente paquetes de transacciones llamados "bloques". La red está pensada para producir aproximadamente un bloque cada diez minutos, donde cada bloque contiene una marca temporal, un nonce, una referencia (es decir, un hash de) al bloque anterior y una lista de todas las transacciones que han tenido lugar desde el bloque anterior. Con el tiempo, esto crea una "blockchain" persistente, cada vez mayor, que se actualiza constantemente para representar el último estado del libro de contabilidad de Bitcoin.
+Si tuviéramos acceso a un servicio centralizado de confianza, este sistema sería trivial de implementar; podría codificarse exactamente como se describe, utilizando el disco duro de un servidor centralizado para hacer un seguimiento del estado. Sin embargo, con Bitcoin estamos tratando de construir un sistema monetario descentralizado, por lo que tendremos que combinar el sistema de transacción de estado con un sistema de consenso para asegurar que todos estén de acuerdo en el orden de las transacciones. El proceso de consenso descentralizado de Bitcoin requiere que los nodos de la red intenten continuamente producir paquetes de transacciones llamados "bloques". La red está diseñada para producir aproximadamente un bloque cada diez minutos, y cada bloque contiene una marca de tiempo, un nonce, una referencia (es decir, el hash) del bloque anterior y una lista de todas las transacciones que han tenido lugar desde el bloque anterior. Con el tiempo, esto crea una "cadena de bloques" persistente y en constante crecimiento que se actualiza constantemente para representar el último estado del libro mayor de Bitcoin.
El algoritmo para comprobar si un bloque es válido, expresado en este paradigma, es el siguiente:
1. Comprueba si el bloque anterior al que hace referencia el bloque existe y es válido.
2. Compruebe que la marca temporal del bloque es mayor que la del bloque anterior[fn2](#notes) y menor de 2 horas en el futuro.
3. Compruebe que la prueba de trabajo del bloque sea válida.
-4. Permita que `S[0]` sea el estado al final del bloque anterior.
-5. Supongamos que `TX` es la lista de transacciones del bloque con `n` transacciones. Para todo `i` de `0... -1`, asigne `S[i+1] = APPLY(S[i], X[i])` Si cualquier aplicación da error, salga y mostrará False.
-6. Muestra true y registra `S[n]` como el estado al final de este bloque.
+4. Sea `S[0]` el estado al final del bloque anterior.
+5. Suponga que `TX` es la lista de transacciones del bloque con `n` transacciones. Para todo `i` en `0...n-1`, establezca `S[i+1] = APPLY(S[i],TX[i])`. Si alguna aplicación devuelve un error, salga y devuelva falso.
+6. Devuelva verdadero y registre `S[n]` como el estado al final de este bloque.
-Fundamentalmente, cada transacción en el bloque debe proporcionar una transición de estado válido de lo que era el estado canónico antes de que la transacción fuera ejecutada a otro nuevo estado. Obsérvese que el estado no se codifica en el bloque en modo alguno; es una abstracción pura que debe ser recordada por el nodo validador y solo puede ser calculada (de forma segura) para cualquier bloque empezando desde el estado de génesis y aplicando secuencialmente cada transacción en cada bloque. Además, hay que tener en cuenta que es importante el orden en el que el minero incluye transacciones en el bloque; si hay dos transacciones A y B en un bloque tal que B gasta un UTXO creado por A, entonces el bloque será válido si A viene antes que B pero no en caso contrario.
+En esencia, cada transacción en el bloque debe proporcionar una transición de estado válida desde lo que era el estado canónico antes de que se ejecutara la transacción a un nuevo estado. Tenga en cuenta que el estado no está codificado en el bloque de ninguna manera; es puramente una abstracción para ser recordada por el nodo de validación y solo puede ser calculada (de forma segura) para cualquier bloque partiendo del estado de génesis y aplicando secuencialmente cada transacción en cada bloque. Además, tenga en cuenta que el orden en que el minero incluye las transacciones en el bloque es importante; si hay dos transacciones A y B en un bloque tales que B gasta una UTXO creada por A, entonces el bloque será válido si A viene antes que B, pero no de otra manera.
-La única condición de validación presente en la lista anterior que no se encuentra en otros sistemas es el requisito de la "prueba de trabajo". La condición concreta es que el hash SHA256 doble de cada bloque, tratado como un número de 256 bits, debe ser inferior a un objetivo ajustado dinámicamente, que en el momento de escribir estas líneas es aproximadamente 2187. El propósito de esto es hacer que la creación de bloques sea computacionalmente "difícil", impidiendo así que los atacantes de sybil reconstruyan todo el blockchain en su beneficio. Dado que SHA256 está diseñada para ser una función pseudoraleatoria completamente impredecible, la única forma de crear un bloque válido es mediante simple prueba y error, incrementando repetidamente el nonce y comprobando si el nuevo hash coincide.
+La única condición de validez presente en la lista anterior que no se encuentra en otros sistemas es el requisito de la "prueba de trabajo". La condición precisa es que el hash doble SHA256 de cada bloque, tratado como un número de 256 bits, debe ser menor que un objetivo ajustado dinámicamente, que en el momento de escribir este artículo es de aproximadamente 2187. El propósito de esto es hacer que la creación de bloques sea computacionalmente "difícil", evitando así que los atacantes Sybil rehagan toda la cadena de bloques a su favor. Dado que SHA256 está diseñada para ser una función pseudoaleatoria completamente impredecible, la única forma de crear un bloque válido es mediante el sencillo método de ensayo y error, incrementando repetidamente el nonce y comprobando si el nuevo hash coincide.
-Para el objetivo actual de \~2187, la red debe hacer un promedio de \~269 intentos antes de encontrar un bloque válido; en general el objetivo se recalibra por la red cada 2016 blques, por lo que que en promedio se crea un bloque nuevo por parte de algún nodo en la red cada diez minutos. Para compensar a los mineros por este trabajo computacional, el minero de cada bloque tiene derecho a incluir una transacción dándose a si mismo 12,5 BTC creados de la nada. Además, si cualquier transacción tiene un valor total más alto en sus entradas que en sus salidas, la diferencia también se destina al minero como "tarifa de transacción". Por otra parte, este es también el único mecanismo por el cual se emiten BTC; el estado inicial no contenía monedas en absoluto.
+En el objetivo actual de ~2187, la red debe realizar un promedio de ~269 intentos antes de que se encuentre un bloque válido; en general, el objetivo es recalibrado por la red cada 2016 bloques para que, en promedio, un nuevo bloque sea producido por algún nodo de la red cada diez minutos. Para compensar a los mineros por este trabajo computacional, el minero de cada bloque tiene derecho a incluir una transacción que le otorga 25 BTC de la nada. Además, si alguna transacción tiene una denominación total más alta en sus entradas que en sus salidas, la diferencia también va al minero como una "comisión de transacción". Por cierto, este es también el único mecanismo por el que se emiten los BTC; el estado de génesis no contenía ninguna moneda.
-Para comprender mejor el propósito de la minería, examinemos que ocurre en el caso de un atacante malicioso. Puesto que se sabe que la criptografía subyacente de Bitcoin es segura, el atacante se enfoncará en una parte del sistema Bitcoin que no está protegida directamente por criptografía: el orden de las transacciones. La estrategia del atacante es simple:
+Para entender mejor el propósito de la minería, examinemos lo que sucede en caso de un atacante malicioso. Dado que se sabe que la criptografía subyacente de Bitcoin es segura, el atacante se centrará en la única parte del sistema de Bitcoin que no está protegida directamente por la criptografía: el orden de las transacciones. La estrategia del atacante es simple:
1. Envía 100 BTC a un comerciante como intercambio de algún producto (preferentemente un bien digital de entrega rápida).
2. Espera a la entrega del producto.
3. Crea otra transacción en la que se envía los mismos 100 BTC a sí mismo.
4. Intenta convencer a la red que su transacción a sí mismo fue la primera en surgir.
-Una vez que se ha dado el paso (1), después de unos minutos algún minero incluirá la transacción en un bloque, digamos el bloque número 270000. Tras aproximadamente una hora, se habrán añadido cinco bloques más a la cadena tras ese bloque, con cada uno de esos bloques apuntando indirectamente a la transacción y así "confirmándola". En este punto, el vendedor aceptará el pago, lo tomará como finalizado y entregará el producto; ya que estamos asumiendo que se trata de un bien digital, la entrega es instantánea. Ahora, el atacante crea otra transacción en la que se envía 100 BTC a sí mismo. Si el atacante lo suelta sin más, la transacción no se procesará; los mineros intentarán ejecutar `APPLY(S, X)` y observarán que `TX` consume una UTXO que ya no está en el estado. En su lugar, el atacante crea una "bifurcación" del blockchain, comenzando por minar otra versión del bloque 270 apuntando al mismo bloque 269 como padre pero con la nueva transacción en lugar de la antigua. Dado que los datos del bloque son diferentes, esto requiere volver a hacer la prueba de trabajo. Además, la nueva versión del bloque 270 del atacante tiene un hash diferente, por lo que los bloques originales 271 a 275 no "apuntan" a él; por lo tanto, la cadena original y la nueva cadena del atacante están completamente separadas. La regla es que en una bifurcación se toma la blockchain más larga como la verdadera, y así los mineros legítimos trabajarán en la cadena 275 mientras el atacante por sí solo está trabajando en la cadena 270. Para que el atacante haga que su blockchain sea el más largo, necesitaría tener más poder computacional que el resto de la red combinada para alcanzarles (de ahí, "ataque del 51%").
+Una vez que se ha dado el paso (1), después de unos minutos algún minero incluirá la transacción en un bloque, digamos el bloque número 270000. Después de aproximadamente una hora, se habrán agregado cinco bloques más a la cadena después de ese bloque, y cada uno de esos bloques apuntará indirectamente a la transacción y, por lo tanto, la "confirmará". En este punto, el comerciante aceptará el pago como finalizado y entregará el producto; como asumimos que se trata de un bien digital, la entrega es instantánea. Ahora, el atacante crea otra transacción enviándose los 100 BTC a sí mismo. Si el atacante simplemente la libera, la transacción no se procesará; los mineros intentarán ejecutar `APPLY(S,TX)` y notarán que `TX` consume una UTXO que ya no está en el estado. Así que, en su lugar, el atacante crea una "bifurcación" de la cadena de bloques, comenzando por minar otra versión del bloque 270000 que apunta al mismo bloque 269999 como padre, pero con la nueva transacción en lugar de la antigua. Debido a que los datos del bloque son diferentes, esto requiere rehacer la prueba de trabajo. Además, la nueva versión del atacante del bloque 270000 tiene un hash diferente, por lo que los bloques originales del 270001 al 270005 no "apuntan" a él; por lo tanto, la cadena original y la nueva cadena del atacante están completamente separadas. La regla es que en una bifurcación, la cadena de bloques más larga se considera la verdadera, por lo que los mineros legítimos trabajarán en la cadena 270005 mientras que el atacante solo trabaja en la cadena 270000. Para que el atacante haga que su cadena de bloques sea la más larga, necesitaría tener más poder computacional que el resto de la red combinada para ponerse al día (de ahí, el "ataque del 51 %").
### Árboles de Merkle {#merkle-trees}

-_Izquierda: Basta con presentar solo un pequeño número de nodos en un árbol de Merkle para demostrar la validez de una bifurcación._
+_Izquierda: es suficiente presentar solo un pequeño número de nodos en un árbol de Merkle para dar una prueba de la validez de una rama._
-_Derecha: Cualquier intento de cambiar cualquier parte del árbol de Merkle llevará eventualmente a una inconsistencia en algún lugar previo de la cadena._
+_Derecha: cualquier intento de cambiar cualquier parte del árbol de Merkle conducirá finalmente a una inconsistencia en algún punto de la cadena._
-Una característica importante de escalabilidad de Bitcoin es que el bloque se almacena en una estructura de datos multinivel. El "hash" de un bloque es en realidad solo el hash del encabezado del bloque, aproximadamente 200 bytes de datos que contienen la marca de tiempo, el nonce, el hash del bloque anterior y el hash raíz de una estructura de datos llamada el árbol de Merkle que almacena todas las transacciones en el bloque. Un árbol de Merkle es un tipo de árbol binario, compuesto por un conjunto de nodos con un gran número de nodos hoja en la parte inferior del árbol que contienen los datos subyacentes, un conjunto de nodos intermedios donde cada nodo es el hash de sus dos hijos, y finalmente un único nodo raíz, también formado por el hash de sus dos hijos, representando la parte "superior" del árbol. El propósito del árbol de Merkle es permitir que los datos en un bloque se entreguen fragmentados: un nodo solo puede descargar el encabezado de un bloque de una fuente, la pequeña parte del árbol relevante para ellos de otra fuente, y aún así tener la certeza de que todos los datos son correctos. La razón por la que esto funciona es que los hashes se propagan hacia arriba: si un usuario malicioso intenta insertar una transacción falsa en la parte inferior de un árbol Merkle, este cambio causará un cambio en el nodo anterior, y luego un cambio en el nodo anterior, finalmente cambiando la raíz del árbol y por lo tanto el hash del bloque, causando que el protocolo lo registre como un bloque completamente diferente (casi con total seguridad con una prueba de trabajo no válida).
+Una característica importante de la escalabilidad de Bitcoin es que el bloque se almacena en una estructura de datos de varios niveles. El "hash" de un bloque es en realidad solo el hash de la cabecera del bloque, un fragmento de datos de aproximadamente 200 bytes que contiene la marca de tiempo, el nonce, el hash del bloque anterior y el hash raíz de una estructura de datos llamada árbol de Merkle que almacena todas las transacciones del bloque. Un árbol de Merkle es un tipo de árbol binario, compuesto por un conjunto de nodos con un gran número de nodos hoja en la parte inferior del árbol que contienen los datos subyacentes, un conjunto de nodos intermedios donde cada nodo es el hash de sus dos hijos y, finalmente, un único nodo raíz, también formado a partir del hash de sus dos hijos, que representa la "cima" del árbol. El propósito del árbol de Merkle es permitir que los datos de un bloque se entreguen por partes: un nodo puede descargar solo la cabecera de un bloque de una fuente, la pequeña parte del árbol relevante para él de otra fuente, y aun así tener la seguridad de que todos los datos son correctos. La razón por la que esto funciona es que los hashes se propagan hacia arriba: si un usuario malicioso intenta intercambiar una transacción falsa en la parte inferior de un árbol de Merkle, este cambio provocará un cambio en el nodo superior, y luego un cambio en el nodo que está por encima de ese, cambiando finalmente la raíz del árbol y, por lo tanto, el hash del bloque, lo que hace que el protocolo lo registre como un bloque completamente diferente (casi con toda seguridad con una prueba de trabajo no válida).
-Se podría decir que el protocolo del árbol de Merkle es esencial para la sostenibilidad a largo plazo. Un "nodo completo" en la red Bitcoin, uno que almacene y procesa la totalidad de todos los bloques, ocupa unos 15 GB de espacio en disco en la red Bitcoin a fecha de abril de 2014, y está creciendo más de un gigabyte al mes. Actualmente, esto es viable para algunos ordenadores de escritorio y no para teléfonos, y más adelante en el futuro sólo las empresas y entusiastas podrán participar. Un protocolo conocido como "verificación de pago simplificada" (SPV) permite que existan otra clase de nodos, llamados "nodos ligeros", que descargan los encabezados del bloque, verifican la prueba de trabajo en los encabezados de bloque, y luego descargan solo las "bifurcaciones" asociadas con las transacciones que son relevantes para ellos. Esto permite que los nodos ligeros determinen con una sólida garantía de seguridad cuál es el estado de cualquier transacción de Bitcoin, y cuál es su saldo actual con tan solo descargar una pequeña porción de toda la blockchain.
+El protocolo del árbol de Merkle es posiblemente esencial para la sostenibilidad a largo plazo. Un "nodo completo" en la red de Bitcoin, uno que almacena y procesa la totalidad de cada bloque, ocupa alrededor de 15 GB de espacio en disco en la red de Bitcoin a fecha de abril de 2014, y está creciendo en más de un gigabyte por mes. Actualmente, esto es viable para algunos ordenadores de sobremesa y no para teléfonos, y más adelante en el futuro solo las empresas y los aficionados podrán participar. Un protocolo conocido como "verificación de pago simplificada" (SPV) permite la existencia de otra clase de nodos, llamados "nodos ligeros", que descargan las cabeceras de los bloques, verifican la prueba de trabajo en las cabeceras de los bloques y luego descargan solo las "ramas" asociadas a las transacciones que son relevantes para ellos. Esto permite a los nodos ligeros determinar con una fuerte garantía de seguridad cuál es el estado de cualquier transacción de Bitcoin, y su saldo actual, mientras descargan solo una porción muy pequeña de toda la cadena de bloques.
-### Aplicaciones alternativas de la blockchain {#alternative-blockchain-applications}
+### Aplicaciones alternativas de la cadena de bloques {#alternative-blockchain-applications}
-La idea de tomar el concepto subyacente de blockchain y aplicarla a otros conceptos también tiene un largo historial. En 2005, Nick Szabo publicó el concepto de "[títulos de propiedad seguros con autoridad del propietario](https://nakamotoinstitute.org/secure-property-titles/)", un documento que describe cómo los «nuevos avances en la tecnología de bases de datos replicadas» permitirían un sistema basado en cadena de bloques para almacenar un registro de quién posee qué tierra, creando un marco elaborado que incluye conceptos de la vivienda, la posesión adversa y el impuesto sobre la tierra de Georgia. Lamentablemente, no había ningún sistema efectivo de bases de datos replicadas disponible en ese momento, por lo que el protocolo nunca se implementó en la práctica. Sin embargo, después de 2009, una vez que se desarrolló el consenso descentralizado de Bitcoin, un número de aplicaciones alternativas comenzaron a surgir rápidamente.
+La idea de tomar la idea subyacente de la cadena de bloques y aplicarla a otros conceptos también tiene una larga historia. En 2005, Nick Szabo presentó el concepto de "[títulos de propiedad seguros con autoridad del propietario](https://nakamotoinstitute.org/library/secure-property-titles/)", un documento que describe cómo los "nuevos avances en la tecnología de bases de datos replicadas" permitirán un sistema basado en la cadena de bloques para almacenar un registro de quién posee qué tierra, creando un marco elaborado que incluye conceptos como la ocupación de tierras, la posesión adversa y el impuesto sobre la tierra georgiano. Sin embargo, desafortunadamente no había ningún sistema de base de datos replicada eficaz disponible en ese momento, por lo que el protocolo nunca se implementó en la práctica. Sin embargo, a partir de 2009, una vez que se desarrolló el consenso descentralizado de Bitcoin, comenzaron a surgir rápidamente varias aplicaciones alternativas.
-- **Namecoin**: creada en 2010, [Namecoin](https://namecoin.org/) se describe como una base de datos de registro de nombres descentralizada. En protocolos descentralizados como Tor, Bitcoin y BitMessage, existe la necesidad de identificar las cuentas de alguna manera para que otra gente pueda interactuar con ellas, pero en todas las soluciones existentes la única clase de identificador disponible es un hash pseudoaleatorio como `1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWy`. Idóneamente, a uno le gustaría poder tener una cuenta con un nombre como «George». Sin embargo, el problema es que si una persona puede crear una cuenta llamada «George», otras personas podrían usar el mismo proceso para registrar «George» para sí mismas y suplantarlos. La única solución es un paradigma de «primero que realiza la inscripción», donde la primer persona en registrar triunfa y la segunda falla: un problema perfectamente adaptado para el protocolo de consenso de Bitcoin. Namecoin es la implementación más antigua y exitosa de un sistema de registro de nombres utilizando tal idea.
-- **Monedas de color**: el propósito de las[monedas de color](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit) es servir como un protocolo que le permita a la gente crear su propia moneda digital o, en el importante caso trivial de una moneda con una unidad, tókenes digitales, en la cadena de bloques de Bitcoin. En el protocolo de monedas de color, alguien «emite» una nueva moneda al asignar públicamente un color a una UTXO específica de Bitcoin, y el protocolo define recursivamente el color de otra UTXO para que sea el mismo que gastaron las entradas de la transacción creándolas (se aplican algunas reglas especiales en caso de entradas de color mixto). Esto permite a los usuarios tener sus carteras con solo UTXO de un color específico y enviarlas como bitcoins normales, siendo rastreados por la cadena de bloques para determinar el color de cualquier UTXO que reciban.
-- **Metacoin**: la idea detrás de una metacoin es tener un protocolo que está montado sobre Bitcoin, usando transacciones de Bitcoin para almacenar las transacciones de metacoin, pero con una función de transición de estado diferente, `APPLY'`. Dado que el protocolo de metacoin no puede evitar que aparezcan transacciones de metacoin inválidas en la cadena de bloques de Bitcoin, se añade una regla por la que si `APPLY'(S,TX)` da error, el protocolo por defecto es `APPLY'(S,TX) = S`. Esto proporciona un mecanismo fácil para crear un protocolo arbitrario de criptomonedas, con potenciales funcionalidades avanzadas que no se pueden implementar sobre el propio Bitcoin, pero con un coste de desarrollo muy bajo, ya que las complejidades de minado y de trabajo en red ya las gestiona el protocolo de Bitcoin. Metacoins se han utilizado para implementar algunas clases de contratos financieros, registros de nombre e intercambios descentralizados.
+- **Namecoin**: creada en 2010, [Namecoin](https://namecoin.org/) se describe mejor como una base de datos de registro de nombres descentralizada. En protocolos descentralizados como Tor, Bitcoin y BitMessage, es necesario que haya alguna forma de identificar las cuentas para que otras personas puedan interactuar con ellas, pero en todas las soluciones existentes el único tipo de identificador disponible es un hash pseudoaleatorio como `1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWy`. Idóneamente, a uno le gustaría poder tener una cuenta con un nombre como «George». Sin embargo, el problema es que si una persona puede crear una cuenta llamada «George», otras personas podrían usar el mismo proceso para registrar «George» para sí mismas y suplantarlos. La única solución es un paradigma de «primero que realiza la inscripción», donde la primer persona en registrar triunfa y la segunda falla: un problema perfectamente adaptado para el protocolo de consenso de Bitcoin. Namecoin es la implementación más antigua y exitosa de un sistema de registro de nombres utilizando tal idea.
+- **Monedas coloreadas**: el propósito de las [monedas coloreadas](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit) es servir como un protocolo para permitir a las personas crear sus propias monedas digitales o, en el importante caso trivial de una moneda con una sola unidad, tokens digitales, en la cadena de bloques de Bitcoin. En el protocolo de monedas de color, alguien «emite» una nueva moneda al asignar públicamente un color a una UTXO específica de Bitcoin, y el protocolo define recursivamente el color de otra UTXO para que sea el mismo que gastaron las entradas de la transacción creándolas (se aplican algunas reglas especiales en caso de entradas de color mixto). Esto permite a los usuarios tener sus carteras con solo UTXO de un color específico y enviarlas como bitcoins normales, siendo rastreados por la cadena de bloques para determinar el color de cualquier UTXO que reciban.
+- **Metamonedas**: la idea detrás de una metamoneda es tener un protocolo que se ejecuta sobre Bitcoin, utilizando las transacciones de Bitcoin para almacenar las transacciones de la metamoneda pero teniendo una función de transición de estado diferente, `APPLY'`. Debido a que el protocolo de la metamoneda no puede evitar que aparezcan transacciones de metamoneda no válidas en la cadena de bloques de Bitcoin, se añade una regla que establece que si `APPLY'(S,TX)` devuelve un error, el protocolo por defecto es `APPLY'(S,TX) = S`. Esto proporciona un mecanismo fácil para crear un protocolo arbitrario de criptomonedas, con potenciales funcionalidades avanzadas que no se pueden implementar sobre el propio Bitcoin, pero con un coste de desarrollo muy bajo, ya que las complejidades de minado y de trabajo en red ya las gestiona el protocolo de Bitcoin. Metacoins se han utilizado para implementar algunas clases de contratos financieros, registros de nombre e intercambios descentralizados.
-Por lo tanto, en general, hay dos enfoques para la construcción de un protocolo de consenso: construir una red independiente, o construir un protocolo sobre Bitcoin. El primer enfoque, aunque ha sido razonablemente exitoso en el caso de aplicaciones como Namecoin, es difícil de implementar; cada implementación individual necesita iniciar una blockchain independiente, además de construir y probar todas las transiciones de estado necesarias y el código de red. Además, predecimos que el conjunto de aplicaciones para la tecnología de consenso descentralizado seguirá una distribución de ley de potencias donde la gran mayoría de las aplicaciones serían demasiado pequeñas para garantizar su propia blockchain, y observamos que existen grandes clases de aplicaciones descentralizadas, en particular organizaciones autónomas descentralizadas, que necesitan interactuar entre sí.
+Por lo tanto, en general, hay dos enfoques para construir un protocolo de consenso: construir una red independiente y construir un protocolo sobre Bitcoin. El primer enfoque, aunque razonablemente exitoso en el caso de aplicaciones como Namecoin, es difícil de implementar; cada implementación individual necesita arrancar una cadena de bloques independiente, así como construir y probar todo el código de transición de estado y de red necesario. Además, predecimos que el conjunto de aplicaciones para la tecnología de consenso descentralizado seguirá una distribución de ley de potencias donde la gran mayoría de las aplicaciones serían demasiado pequeñas para justificar su propia cadena de bloques, y observamos que existen grandes clases de aplicaciones descentralizadas, en particular las organizaciones autónomas descentralizadas, que necesitan interactuar entre sí.
-El enfoque basado en Bitcoin, por otra parte, tiene el defecto de que no hereda las características de verificación de pago simplificada de Bitcoin. SPV funciona en Bitcoin porque puede usar la profundidad de blockchain como indicador de validez; en algún momento, una vez que los antecesores de una transacción van lo suficientemente atrás, se puede afirmar con seguridad que fueron legítimamente parte del estado. Los metaprotocolos basados en blockchain, por otra parte, no pueden forzar a la blockchain a no incluir transacciones que no son válidas en el contexto de sus propios protocolos. Por lo tanto, una implementación de metaprotocolo SPV completamente segura necesitaría escanear hasta el comienzo de la blockchain de Bitcoin para determinar si ciertas transacciones son válidas. Actualmente, todas las implementaciones "ligeras" de los metaprotocolos basados en Bitcoin dependen de un servidor de confianza para proporcionar los datos, lo que es presumiblemente un resultado altamente subóptimo, especialmente cuando uno de los propósitos primarios de una criptomoneda es eliminar la necesidad de confianza.
+El enfoque basado en Bitcoin, por otro lado, tiene el defecto de que no hereda las características de verificación de pago simplificada de Bitcoin. La SPV funciona para Bitcoin porque puede utilizar la profundidad de la cadena de bloques como un indicador de validez; en algún momento, una vez que los ancestros de una transacción retroceden lo suficiente, es seguro decir que formaban parte legítimamente del estado. Los metaprotocolos basados en la cadena de bloques, por otro lado, no pueden forzar a la cadena de bloques a no incluir transacciones que no son válidas en el contexto de sus propios protocolos. Por lo tanto, una implementación de metaprotocolo SPV totalmente segura necesitaría escanear hacia atrás hasta el principio de la cadena de bloques de Bitcoin para determinar si ciertas transacciones son válidas o no. Actualmente, todas las implementaciones "ligeras" de los metaprotocolos basados en Bitcoin dependen de un servidor de confianza para proporcionar los datos, lo que es un resultado muy subóptimo, especialmente cuando uno de los propósitos principales de una criptomoneda es eliminar la necesidad de confianza.
-### Scripting {#scripting}
+### Scripts {#scripting}
-Incluso sin ninguna extensión, el protocolo Bitcoin de hecho facilita una versión débil del concepto de "contratos inteligentes". La UTXO en Bitcoin puede ser propiedad no solo de una clave pública, sino también de un script más complicado expresado en un lenguaje simple de programación basado en pila. En este paradigma, una transacción que gaste esa UTXO debe proporcionar datos que satisfagan el script. De hecho, incluso el mecanismo público básico de propiedad de claves se implementa a través de un script: el script toma una firma de curva elíptica como entrada, lo verifica contra la transacción y la dirección que posee la UTXO, y devuelve 1 si la verificación es correcta y 0 en caso contrario. Existen otros scripts más complicados para varios casos de uso adicionales. Por ejemplo, se puede desarrollar un script que requiere firmas de dos de cada tres claves privadas para la validación ("multisig"), una configuración útil para cuentas corporativas, cuentas de ahorro seguras y algunos contextos de fideicomiso de comerciantes. Los scripts también pueden utilizarse para pagar recompensas por soluciones a problemas computacionales. y uno puede incluso construir un script que diga algo como: "este Bitcoin UTXO es tuyo si puedes proporcionar una prueba de SPV en la que enviaste una transacción de Dogecoin de esta denominación", permitiendo en esencia un intercambio descentralizado de criptomonedas.
+Incluso sin ninguna extensión, el protocolo de Bitcoin facilita una versión débil del concepto de "contratos inteligentes". Las UTXO en Bitcoin pueden ser propiedad no solo de una clave pública, sino también de un script más complicado expresado en un lenguaje de programación simple basado en pilas. En este paradigma, una transacción que gaste esa UTXO debe proporcionar datos que satisfagan el script. De hecho, incluso el mecanismo básico de propiedad de clave pública se implementa a través de un script: el script toma una firma de curva elíptica como entrada, la verifica contra la transacción y la dirección que posee la UTXO, y devuelve 1 si la verificación es exitosa y 0 en caso contrario. Existen otros scripts más complicados para diversos casos de uso adicionales. Por ejemplo, se puede construir un script que requiera firmas de dos de un conjunto de tres claves privadas para validar ("multifirma"), una configuración útil para cuentas corporativas, cuentas de ahorro seguras y algunas situaciones de depósito en garantía de comerciantes. Los scripts también se pueden usar para pagar recompensas por soluciones a problemas computacionales, e incluso se puede construir un script que diga algo como "esta UTXO de Bitcoin es tuya si puedes proporcionar una prueba de SPV de que me enviaste una transacción de Dogecoin de esta denominación", permitiendo esencialmente el intercambio descentralizado entre criptomonedas.
-Sin embargo, el lenguaje de scripting implementado en Bitcoin tiene varias limitaciones importantes:
+Sin embargo, el lenguaje de scripting tal como se implementa en Bitcoin tiene varias limitaciones importantes:
-- **Falta de conclusion de Turing**: es decir, mientras hay un gran subconjunto de computación que el lenguaje de scripting de Bitcoin soporta, no es compatible con todo. La categoría principal que falta son los bucles. Esto se hace para evitar bucles infinitos durante la verificación de transacciones; teóricamente es un obstáculo superable para los programadores de scripts, ya que cualquier bucle se puede simular simplemente repitiendo el código subyacente muchas veces con una sentencia condicional, pero esto conduce a scripts que son muy ineficientes en cuanto al espacio. Por ejemplo, la implementación de un algoritmo alternativo de firma de curva elíptica probablemente requeriría 256 rondas de multiplicación repetidas, todas incluidas individualmente en el código.
-- **Indiferencia al valor**: no hay forma de que un script UTXO proporcione un control detallado de la cantidad que se pueda retirar. Por ejemplo, un caso de uso importante de un contrato de oráculo podría ser un contrato de cobertura, donde A y B ponen 1.000 $ en BTC, y después de 30 días el código envía 1.000 $ en BTC a A y el resto a B. Este proceso requiere un oráculo para determinar el valor de 1 BTC en USD, pero aún así se trata de una gran mejora en términos de confianza y requerimientos de infraestructura sobre las soluciones completamente centralizadas que existen hoy en día. Sin embargo, debido a que las UTXO son de todo o nada, la única forma de logralo es a través del truco muy ineficiente de tener muchas UTXO de diferentes denominaciones, (por ejemplo, una UTXO de dosk por cada 1.000 hasta 30) y hacer que el oráculo elija qué UTXO enviar a A y cuál a B.
-- **Falta de estado**: una UTXO se puede gastar o no gastar; no hay ninguna posibilidad de contratos multietapa o scripts que mantengan cualquier otro estado interno más allá de eso. Esto hace difícil realizar contratos de opciones multietapa, ofertas de intercambio descentralizadas o protocolos de compromiso criptográficos de dos etapas (necesarios para recompensas computacionales seguras). También significa que UTXO solo puede utilizarse para construir contratos únicos aislados y no más contratos complejos «con estado», como organizaciones descentralizadas, y dificulta la implementación de metaprotocolos. El estado binario combinado con la indiferencia al valor también significa que otra aplicación importante, el límite de retirada, es imposible.
-- **Indiferencia a la cadena de bloques**: las UTXO no pueden ver datos de la cadena de bloques como el nonce, la marca temporal y el hash del bloque anterior. Esto limita severamente las aplicaciones en juegos de azar y en otras categorías, al privar al lenguaje de scripting de una fuente potencialmente valiosa de aleatoriedad.
+- **Falta de completitud de Turing**: es decir, aunque hay un gran subconjunto de computación que el lenguaje de scripting de Bitcoin soporta, no lo soporta casi todo. La categoría principal que falta son los bucles. Esto se hace para evitar bucles infinitos durante la verificación de transacciones; teóricamente es un obstáculo superable para los programadores de scripts, ya que cualquier bucle se puede simular simplemente repitiendo el código subyacente muchas veces con una sentencia condicional, pero esto conduce a scripts que son muy ineficientes en cuanto al espacio. Por ejemplo, la implementación de un algoritmo alternativo de firma de curva elíptica probablemente requeriría 256 rondas de multiplicación repetidas, todas incluidas individualmente en el código.
+- **Indiferencia al valor**: no hay forma de que un script de UTXO proporcione un control detallado sobre la cantidad que se puede retirar. Por ejemplo, un caso de uso importante de un contrato de oráculo podría ser un contrato de cobertura, donde A y B ponen 1.000 $ en BTC, y después de 30 días el código envía 1.000 $ en BTC a A y el resto a B. Este proceso requiere un oráculo para determinar el valor de 1 BTC en USD, pero aún así se trata de una gran mejora en términos de confianza y requerimientos de infraestructura sobre las soluciones completamente centralizadas que existen hoy en día. Sin embargo, como las UTXO son de todo o nada, la única forma de lograrlo es a través del truco muy ineficiente de tener muchas UTXO de diferentes denominaciones (p. ej., una UTXO de 2k por cada k hasta 30) y hacer que el oráculo elija qué UTXO enviar a A y cuál a B.
+- **Falta de estado**: las UTXO pueden ser gastadas o no gastadas; no hay oportunidad para contratos o scripts de varias etapas que mantengan cualquier otro estado interno más allá de eso. Esto hace difícil realizar contratos de opciones multietapa, ofertas de intercambio descentralizadas o protocolos de compromiso criptográficos de dos etapas (necesarios para recompensas computacionales seguras). También significa que UTXO solo puede utilizarse para construir contratos únicos aislados y no más contratos complejos «con estado», como organizaciones descentralizadas, y dificulta la implementación de metaprotocolos. El estado binario combinado con la indiferencia al valor también significa que otra aplicación importante, el límite de retirada, es imposible.
+- **Indiferencia a la cadena de bloques**: las UTXO no ven los datos de la cadena de bloques, como el nonce, la marca de tiempo y el hash del bloque anterior. Esto limita severamente las aplicaciones en juegos de azar y en otras categorías, al privar al lenguaje de scripting de una fuente potencialmente valiosa de aleatoriedad.
-Por tanto, consideramos tres enfoques para construir aplicaciones avanzadas encima de las criptomonedas: construir una nueva blockchain, usando scripting por encima de Bitcoin, y construyendo un metaprotocolo encima de Bitcoin. Construir una nueva blockchain permitiría libertad ilimitada al construir un conjunto de funcionalidades, pero a costa del tiempo de desarrollo, esfuerzo para ponerla en marcha, y seguridad. El uso de scripts es fácil de implementar y estandarizar, pero está muy limitado en sus capacidades, y los metaprotocolos, aunque sencillos, sufren de defectos en la escalabilidad. Con Ethereum, pretendemos construir un framework alternativo que proporcione mejoras aún mayores en cuanto a facilidad de desarrollo, así como como propiedades más robustas para clientes ligeros, al tiempo que permite a las aplicaciones compartir un entorno económico y la seguridad de la blockchain.
+Así, vemos tres enfoques para construir aplicaciones avanzadas sobre una criptomoneda: construir una nueva cadena de bloques, usar scripts sobre Bitcoin y construir un metaprotocolo sobre Bitcoin. Construir una nueva cadena de bloques permite una libertad ilimitada en la construcción de un conjunto de características, pero a costa del tiempo de desarrollo, el esfuerzo de arranque y la seguridad. El uso de scripts es fácil de implementar y estandarizar, pero tiene capacidades muy limitadas, y los metaprotocolos, aunque fáciles, sufren de fallos de escalabilidad. Con Ethereum, tenemos la intención de construir un marco alternativo que proporcione ganancias aún mayores en la facilidad de desarrollo, así como propiedades de cliente ligero aún más fuertes, al mismo tiempo que permite a las aplicaciones compartir un entorno económico y la seguridad de la cadena de bloques.
## Ethereum {#ethereum}
-El propósito de Ethereum es crear un protocolo alternativo para construir aplicaciones descentralizadas, proporcionando un conjunto diferente de contrapartidas que creemos que serán muy útiles para un amplio abanico de aplicaciones descentralizadas, con especial énfasis en situaciones en las que el rápido tiempo de desarrollo, la seguridad para aplicaciones pequeñas y rara vez usadas y la capacidad de las diferentes aplicaciones para interactuar de manera muy eficiente son importantes. Ethereum lo logra construyendo lo que es esencialmente la capa fundacional abstracta definitiva: una blockchain con un lenguaje de programación Turing completo, que permite a cualquiera escribir contratos y aplicaciones descentralizadas donde pueden crear sus propias reglas reglas arbitrarias de propiedad, formatos de transacción y funciones de transición de estado. Una versión básica de Namecoin puede escribirse en dos líneas de código, y otros protocolos como monedas y sistemas de reputación se pueden incorporar en menos de veinte. Los contratos inteligentes, "cajas" criptográficas que contienen valor y sólo lo desbloquean si se cumplen ciertas condiciones también se pueden desarrollar por encima de la plataforma, con mucho más poder que el que ofrece el script de Bitcoin gracias a los poderes añadidos de completitud Turing, conocimiento del valor, conocimiento de la blockchain y estado.
+La intención de Ethereum es crear un protocolo alternativo para construir aplicaciones descentralizadas, proporcionando un conjunto diferente de compensaciones que creemos que serán muy útiles para una gran clase de aplicaciones descentralizadas, con especial énfasis en situaciones donde el tiempo de desarrollo rápido, la seguridad para aplicaciones pequeñas y poco usadas, y la capacidad de diferentes aplicaciones para interactuar de manera muy eficiente, son importantes. Ethereum logra esto construyendo lo que es esencialmente la capa fundamental abstracta definitiva: una cadena de bloques con un lenguaje de programación de completitud de Turing incorporado, que permite a cualquiera escribir contratos inteligentes y aplicaciones descentralizadas donde pueden crear sus propias reglas arbitrarias para la propiedad, los formatos de transacción y las funciones de transición de estado. Una versión básica de Namecoin se puede escribir en dos líneas de código, y otros protocolos como monedas y sistemas de reputación se pueden construir en menos de veinte. Los contratos inteligentes, "cajas" criptográficas que contienen valor y solo lo desbloquean si se cumplen ciertas condiciones, también se pueden construir sobre la plataforma, con un poder mucho mayor que el ofrecido por los scripts de Bitcoin debido a los poderes añadidos de la completitud de Turing, la conciencia del valor, la conciencia de la cadena de bloques y el estado.
### Cuentas de Ethereum {#ethereum-accounts}
En Ethereum, el estado esta compuesto por objetos llamados «cuentas», donde cada cuenta posee una dirección de 20 bytes y transiciones de estado, que son transferencias directas de valor e información entre cuentas. Una cuenta de Ethereum tiene cuatro campos:
-- El **nonce**: un contador usado para comprobar que cada transacción se haya procesado solo una vez.
-- El **saldo ether** actual de la cuenta.
-- El **código de contrato** de la cuenta si está presente.
+- El **nonce**, un contador utilizado para asegurar que cada transacción solo se pueda procesar una vez.
+- El **saldo actual de ether** de la cuenta.
+- El **código del contrato** de la cuenta, si está presente.
- El **almacenamiento** de la cuenta (vacío por defecto).
-«Ether» es el principal criptocombustible interno de Ethereum, y se utiliza para pagar las comisiones por transacción. En general, hay dos tipos de cuentas: **cuentas de propiedad externa**, manejadas por claves privadas y **cuentas de contrato**, manejadas por el código del contrato. Una cuenta de propiedad externa no tiene código, y uno puede enviar mensajes desde una cuenta de propiedad externa creando y firmando una transacción; en una cuenta de contrato, cada vez que una cuenta de contrato recibe un mensaje su código se activa, permitiendo leer y escribir en el almacenamiento interno y enviar otros mensajes o crear contratos a su vez.
+«Ether» es el principal criptocombustible interno de Ethereum, y se utiliza para pagar las comisiones por transacción. En general, hay dos tipos de cuentas: **cuentas de propiedad externa**, controladas por claves privadas, y **cuentas de contrato**, controladas por el código de su contrato. Una cuenta de propiedad externa no tiene código, y uno puede enviar mensajes desde una cuenta de propiedad externa creando y firmando una transacción; en una cuenta de contrato, cada vez que una cuenta de contrato recibe un mensaje su código se activa, permitiendo leer y escribir en el almacenamiento interno y enviar otros mensajes o crear contratos a su vez.
Observe que los «contratos» en Ethereum no deben entenderse como algo que debe estar «satisfecho» o «cumplido»; al contrario, son más parecidos a «agentes independientes» que viven dentro del ambiente de ejecución de Ethereum, siempre ejecutando un pedazo de código específico cuando un mensaje o transacción les da «un toque», y tienen control directo sobre su propio saldo en ether y su propio almacén de clave/valor para hacer un seguimiento de las variables persistentes.
@@ -166,12 +166,12 @@ El término «transacción» se utiliza en Ethereum para referirse al paquete de
- Una firma que identifica al remitente
- La cantidad de ether por transferir del remitente al destinatario.
- Un campo de datos opcional
-- Un valor `STARTGAS`, que representa el número máximo de pasos computacionales que puede ejecutar la transacción.
-- Un valor `GASPRICE`, que representa la comisión que el remitente paga por paso computacional.
+- Un valor `STARTGAS`, que representa el número máximo de pasos computacionales que se permite que tome la ejecución de la transacción.
+- Un valor `GASPRICE`, que representa la comisión que el remitente paga por cada paso computacional.
Los tres primeros son campos estándar que se esperan en cualquier criptomoneda. El campo de datos no tiene ninguna función por defecto, pero la máquina virtual tiene un código de operación con el que un contrato puede acceder a los datos; como ejemplo práctico, si un contrato funciona como un servicio de registro de dominios sobre la cadena de bloques, es posible que se desee interpretar la información que se le pasa contienen dos «campos», el primer campo es un dominio para registrar y el segundo campo es la dirección IP para registrarlo. El contrato leería estos valores de los datos del mensaje y los guardaría adecuadamente en el almacenamiento.
-Los campos `STARTGAS` y `GASPRICE` son cruciales para el modelo de antidenegación de servicio de Ethereum. Para prevenir la generación de bucles infinitos o accidentales hostiles, así como de otros desperdicios computacionales generados en el código, cada transacción debe establecer un límite del número de pasos computacionales de código que puede utilizar. La unidad fundamental de computación es el «gas»; usualmente, un paso computacional cuesta 1 gas, pero algunas operaciones cuestan más gas, porque son computacionalmente más caras, o incrementan la cantidad de información que se debe guardar como parte del estado. También hay una tarifa de 5 gas por cada byte en los datos de la transacción. La intención del sistema de tarifas es obligar a un atacante a pagar proporcionalmente por cada recurso que consuma, incluyendo la computación, el ancho de banda y el almacenamiento; por ende, cualquier transacción que lleve a la red un mayor consumo que cualquiera de estos recursos, debe tener una comisión aproximadamente proporcional al incremento.
+Los campos `STARTGAS` y `GASPRICE` son cruciales para el modelo de anti-denegación de servicio de Ethereum. Para prevenir la generación de bucles infinitos o accidentales hostiles, así como de otros desperdicios computacionales generados en el código, cada transacción debe establecer un límite del número de pasos computacionales de código que puede utilizar. La unidad fundamental de computación es el «gas»; usualmente, un paso computacional cuesta 1 gas, pero algunas operaciones cuestan más gas, porque son computacionalmente más caras, o incrementan la cantidad de información que se debe guardar como parte del estado. También hay una tarifa de 5 gas por cada byte en los datos de la transacción. La intención del sistema de tarifas es obligar a un atacante a pagar proporcionalmente por cada recurso que consuma, incluyendo la computación, el ancho de banda y el almacenamiento; por ende, cualquier transacción que lleve a la red un mayor consumo que cualquiera de estos recursos, debe tener una comisión aproximadamente proporcional al incremento.
### Mensajes {#messages}
@@ -181,21 +181,21 @@ Los contratos tienen la capacidad de enviar «mensajes» a otros contratos. Los
- El destinatario del mensaje
- La cantidad de ether por transferir junto con el mensaje
- Un campo de datos opcional
-- Un valor de `STARTGAS`
+- Un valor `STARTGAS`
-Esencialmente, un mensaje es como una transacción, con la salvedad de que lo produce un contrato y no un actor externo. Se produce un mensaje cuando un código de ejecución actual del contrato ejecuta el código de operación `CALL`, que produce y ejecuta un mensaje. Al igual que una transacción, un mensaje conduce a la cuenta del destinatario que ejecuta su código. Por lo tanto, los contratos pueden tener relaciones con otros contratos exactamente de la misma manera que los actores externos.
+Esencialmente, un mensaje es como una transacción, con la salvedad de que lo produce un contrato y no un actor externo. Se produce un mensaje cuando un contrato que está ejecutando código ejecuta el código de operación `CALL`, que produce y ejecuta un mensaje. Al igual que una transacción, un mensaje conduce a la cuenta del destinatario que ejecuta su código. Por lo tanto, los contratos pueden tener relaciones con otros contratos exactamente de la misma manera que los actores externos.
Tenga en cuenta que la asignación de gas asignada por una transacción o contrato se aplica al gas total consumido por esa transacción y todas las subejecuciones. Por ejemplo, si un actor externo A envía una transacción a B con 1.000 gases y B consume 600 gases antes de enviar un mensaje a C, y la ejecución interna de C consume 300 gases antes de regresar, entonces B puede gastar otros 100 gases antes de ejecutar sin gas.
### Función de transición de estado de Ethereum {#ethereum-state-transition-function}
-
+
-La función de transición de estado de Ethereum, `APPLY(S,TX) -> S'` se puede definir de la siguiente manera:
+La función de transición de estado de Ethereum, `APPLY(S,TX) -> S'`, se puede definir de la siguiente manera:
-1. Comprobar si la transacción está bien formada (es decir, si tiene el número correcto de valores), si la firma es válida, y el nonce coincide con el nonce en la cuenta del remitente. De lo contrario, da error.
-2. Calcular la tarifa de transacción como `STARTGAS * GASPRICE` y determinar la dirección de envío a partir de la firma. Restar la tarifa del saldo de la cuenta del remitente e incrementar el nonce del remitente. Si no hay suficiente saldo para gastar, da error.
-3. Inicializar `GAS = STARTGAS` y retirar una cierta cantidad de gas por byte para pagar por los bytes de la transacción.
+1. Compruebe si la transacción está bien formada (es decir, tiene el número correcto de valores), si la firma es válida y si el nonce coincide con el nonce de la cuenta del remitente. De lo contrario, da error.
+2. Calcular la comisión de la transacción como `STARTGAS * GASPRICE`, y determinar la dirección de envío a partir de la firma. Restar la tarifa del saldo de la cuenta del remitente e incrementar el nonce del remitente. Si no hay suficiente saldo para gastar, da error.
+3. Inicialice `GAS = STARTGAS`, y reste una cierta cantidad de gas por byte para pagar los bytes de la transacción.
4. Transferir el valor de la transacción desde la cuenta del remitente a la cuenta receptora. Si la cuenta receptora aún no existe, créela. Si la cuenta receptora es un contrato, ejecute el código del contrato hasta su finalización o hasta que la ejecución se quede sin gas.
5. Si la transferencia de valor falló porque el remitente no tenía suficiente dinero, o la ejecución del código se quedó sin energía, revierta todos los cambios de estado excepto el pago de las tarifas y añada las tarifas a la cuenta del minero.
6. En caso contrario, devuelva las comisiones por todo el gas restante al remitente y envíe las tarifas pagadas por el gas consumido al minero.
@@ -207,55 +207,55 @@ if !self.storage[calldataload(0)]:
self.storage[calldataload(0)] = calldataload(32)
```
-Tenga en cuenta que, en realidad, el código del contrato está escrito en el código de EVM de bajo nivel —en este ejemplo, para mayor claridad, está escrito en Serpent, uno de nuestros lenguajes de alto nivel— y se puede compilar en código de EVM. Imagine que el almacenamiento del contrato comienza vacío y se envía una transacción con 10 valores de éter, 2000 gases, 0,001 de precio de gas de éter y 64 bytes de datos, donde los bytes 0-31 representan el número `2` y los bytes 32-63 representan la cadena `CHARLIE`. El proceso para la función de transición de estado en este caso es el siguiente:
+Tenga en cuenta que, en realidad, el código del contrato está escrito en el código de EVM de bajo nivel —en este ejemplo, para mayor claridad, está escrito en Serpent, uno de nuestros lenguajes de alto nivel— y se puede compilar en código de EVM. Suponga que el almacenamiento del contrato comienza vacío, y se envía una transacción con un valor de 10 ether, 2000 de gas, 0,001 ether de precio de gas y 64 bytes de datos, con los bytes 0-31 representando el número `2` y los bytes 32-63 representando la cadena `CHARLIE`. El proceso para la función de transición de estado en este caso es el siguiente:
1. Comprobar que la transacción es válida y está bien formada.
2. Comprobar que el remitente de la transacción tiene al menos 2000 \* 0,001 = 2 ether. Si los tiene, restar 2 ether de la cuenta del remitente.
3. Inicializar gas = 2000; suponiendo que la transacción tenga 170 bytes de longitud y que la tarifa por byte sea 5, restar 850 y quedarán 1150 gases.
4. Restar 10 ether más de la cuenta del remitente y añadirlos a la cuenta del contrato.
-5. Ejecutar el código. En este caso es simple: comprueba si se utiliza el almacenamiento del contrato en índice `2`; observa que no, por tanto, se asigna el almacenamiento en el índice `2` al valor `CHARLIE`. Supongamos que esto consume 187 gases, así que la cantidad restante de gas es 1.150 - 187 = 963.
+5. Ejecutar el código. En este caso, esto es simple: comprueba si se está utilizando el almacenamiento del contrato en el índice `2`, se da cuenta de que no, por lo que establece el almacenamiento en el índice `2` al valor `CHARLIE`. Supongamos que esto consume 187 gases, así que la cantidad restante de gas es 1.150 - 187 = 963.
6. Añadir 963 \* 0,001 = 0,963 ether de vuelta a la cuenta del remitente y devolver el estado resultante.
-Si no hubiera ningún contrato en el extremo receptor de la transacción, la tarifa total de la transacción simplemente sería igual al `GASPRICE` proporcionado, multiplicado por la longitud de la transacción en bytes, y los datos enviados junto con la transacción serían irrelevantes.
+Si no hubiera ningún contrato en el extremo receptor de la transacción, entonces la comisión total de la transacción sería simplemente igual al `GASPRICE` proporcionado multiplicado por la longitud de la transacción en bytes, y los datos enviados junto con la transacción serían irrelevantes.
-Tenga en cuenta que los mensajes funcionan de manera equivalente a las transacciones en lo referente a las reversiones: si la ejecución de un mensaje se queda sin gas, entonces la ejecución de ese mensaje y todas las demás ejecuciones desencadenadas por esa ejecución, revertirán, pero las ejecuciones principales no necesitan revertirse. Esto significa que es «seguro» que un contrato llame a otro contrato, ya que si A llama a B con G gas, entonces se garantiza que la ejecución de A perderá como máximo G gas. Finalmente, tenga en cuenta que hay un código de operación, `CREATE`, que crea un contrato; su mecánica de ejecución es generalmente similar a `CALL`, con la excepción de que la salida de la ejecución determina el código de un contrato recién creado.
+Tenga en cuenta que los mensajes funcionan de manera equivalente a las transacciones en lo referente a las reversiones: si la ejecución de un mensaje se queda sin gas, entonces la ejecución de ese mensaje y todas las demás ejecuciones desencadenadas por esa ejecución, revertirán, pero las ejecuciones principales no necesitan revertirse. Esto significa que es «seguro» que un contrato llame a otro contrato, ya que si A llama a B con G gas, entonces se garantiza que la ejecución de A perderá como máximo G gas. Finalmente, tenga en cuenta que hay un código de operación, `CREATE`, que crea un contrato; su mecánica de ejecución es generalmente similar a `CALL`, con la excepción de que el resultado de la ejecución determina el código de un contrato recién creado.
### Ejecución de código {#code-execution}
-El código en los contratos de Ethereum está escrito en un lenguaje de bajo nivel, en bytecode, conocido como «código de la máquina virtual de Ethereum» o «código de la EVM». El código consiste en una serie de bytes, donde cada byte representa una operación. Por lo general, la ejecución del código es un bucle infinito que consiste en ejecutar repetidamente la operación en el contador del programa actual (que comienza en cero) y luego incrementa el contador en uno, hasta que se alcanza el final del código, o se detecta un error o una instrucción `STOP` o `RETURN`. Las operaciones tienen acceso a tres tipos de espacio en el que almacenar datos:
+El código en los contratos de Ethereum está escrito en un lenguaje de bajo nivel, en bytecode, conocido como «código de la máquina virtual de Ethereum» o «código de la EVM». El código consiste en una serie de bytes, donde cada byte representa una operación. En general, la ejecución de código es un bucle infinito que consiste en llevar a cabo repetidamente la operación en el contador de programa actual (que comienza en cero) y luego incrementar el contador de programa en uno, hasta que se llega al final del código o se detecta un error o una instrucción `STOP` o `RETURN`. Las operaciones tienen acceso a tres tipos de espacio en el que almacenar datos:
-- La **pila**, un contenedor «último en entrar, primero en salir» cuyos valores se pueden apilar y retirar.
-- **Memoria** es una matriz de bytes expandible infinitamente.
-- El **almacenamiento** a largo plazo del contrato es un almacén de clave/valor. A diferecia de la pila y la memoria, que se resetean una vez terminada la computación, el almacenamiento persiste en el largo plazo.
+- La **pila**, un contenedor de tipo último en entrar, primero en salir al que se pueden apilar y desapilar valores.
+- **Memoria**, un array de bytes infinitamente expandible.
+- El **almacenamiento** a largo plazo del contrato, un almacén de clave/valor. A diferecia de la pila y la memoria, que se resetean una vez terminada la computación, el almacenamiento persiste en el largo plazo.
El código también puede acceder al valor, emisor y datos del mensaje entrante, así como datos de la cabecera del bloque, y el código también puede dar una matriz de bytes de datos como salida.
-El modelo de ejecución formal de código de la EVM es sorprendentemente simple. Mientras la máquina virtual de Ethereum está corriendo, su estado computacional completo se puede definir por la tupla `(estado_del_bloque, transacción, mensaje, código, memoria, pila, pc, gas)`, donde `estado_del_bloque` es el estado global que contiene todas las cuentas e incluye saldos y almacenamiento. Al comienzo de cada ronda de ejecución, la instrucción actual se encuentra tomando el `pc`-ésimo byte del `código` (o 0 en caso de `pc >= len(código)`), y cada instrucción tiene su propia definición en terminos de cómo afecta a la tupla. Por ejemplo,`ADD` saca dos elementos de la pila y empuja su suma, reduce `gas` en 1 y aumenta `pc` otro factor, y `SSTORE` extrae los dos elementos superiores de la pila e inserta el segundo elemento en el almacenamiento del contrato en el índice especificado por el primer elemento. Aunque hay muchas maneras de optimizar la ejecución de la máquina virtual de Ethereum mediante la compilación en tiempo de ejecución, una implementación básica de Ethereum puede hacerse en unos pocos cientos de líneas de código.
+El modelo de ejecución formal de código de la EVM es sorprendentemente simple. Mientras la máquina virtual de Ethereum se está ejecutando, su estado computacional completo puede definirse por la tupla `(block_state, transaction, message, code, memory, stack, pc, gas)`, donde `block_state` es el estado global que contiene todas las cuentas e incluye saldos y almacenamiento. Al principio de cada ronda de ejecución, la instrucción actual se encuentra tomando el `pc`-ésimo byte de `code` (o 0 si `pc >= len(code)`), y cada instrucción tiene su propia definición en términos de cómo afecta a la tupla. Por ejemplo, `ADD` extrae dos elementos de la pila y apila su suma, reduce `gas` en 1 e incrementa `pc` en 1, y `SSTORE` extrae los dos elementos superiores de la pila e inserta el segundo elemento en el almacenamiento del contrato en el índice especificado por el primer elemento. Aunque hay muchas maneras de optimizar la ejecución de la máquina virtual de Ethereum mediante la compilación en tiempo de ejecución, una implementación básica de Ethereum puede hacerse en unos pocos cientos de líneas de código.
### Cadena de bloques y minería {#blockchain-and-mining}
-
+
La cadena de bloque de Ethereum es similar en muchas maneras a la cadena de bloques de Bitcoin, aunque con alguna salvedad. La principal diferencia entre Ethereum y Bitcoin en relación a la arquitectura de la cadena de bloques radica en que, a diferencia de Bitcoin, los bloques de Ethereum contienen una copia tanto de la lista de transacciones como del estado más reciente. Aparte de esto, hay otros dos valores, que son el número de bloque y la dificultad, que también se guardan en el bloque. El algoritmo básico de validación de un bloque de Ethereum es el siguiente:
1. Comprobar si el bloque anterior referenciado existe y es válido.
2. Comprobar que la marca temporal del bloque es mayor que la del bloque anterior referenciado e inferior a 15 minutos en el futuro
3. Verificar que el número de bloque, la dificultad, la raíz de la transacción, la raíz del tío y el límite de gas (varios conceptos específicos de Ethereum de bajo nivel) sean válidos.
-4. Chequea que la prueba de trabajo del bloque sea válida.
-5. Permitir que `S[0]` sea el estado al final del bloque anterior.
-6. Dejar que `TX` sea la lista de transacciones del bloque, con `n` transacciones. Para todo `i` en `0...n-1`, asigne `S[i+1] = APPLY(S[i],TX[i])`. Si cualquier aplicación da error, o si el gas total consumido en el bloque hasta este punto excede el `GASLIMIT`, da error.
-7. Dejar que `S_FINAL` sea `S[n]`, pero añadiendo la recompensa del bloque pagada al minero.
-8. Comprobar si la raíz del árbol Merkle del estado `S_FINAL` es igual a la raíz del estado final proporcionada en la cabecera del bloque. Si es así, el bloque es válido; de lo contrario, no es válido.
+4. Compruebe que la prueba de trabajo del bloque sea válida.
+5. Sea `S[0]` el estado al final del bloque anterior.
+6. Sea `TX` la lista de transacciones del bloque, con `n` transacciones. Para todo `i` en `0...n-1`, establezca `S[i+1] = APPLY(S[i],TX[i])`. Si alguna aplicación devuelve un error, o si el gas total consumido en el bloque hasta este punto excede el `GASLIMIT`, se devuelve un error.
+7. Sea `S_FINAL` igual a `S[n]`, pero añadiendo la recompensa de bloque pagada al minero.
+8. Compruebe si la raíz del árbol de Merkle del estado `S_FINAL` es igual a la raíz del estado final proporcionada en la cabecera del bloque. Si es así, el bloque es válido; de lo contrario, no es válido.
-El enfoque puede parecer altamente ineficiente a primera vista, porque necesita almacenar todo el estado con cada bloque, pero en realidad la eficiencia debería ser comparable a la de Bitcoin. La razón es que el estado se almacena en la estructura del árbol, y después de cada bloque solo se tiene que modificar una pequeña parte del árbol. Por lo tanto, en general, entre dos bloques adyacentes, la mayoría del árbol debe ser el mismo y, por lo tanto, los datos se pueden almacenar una vez y referenciar dos veces utilizando punteros (es decir, hashes de subárboles). Para lograrlo, se utiliza un tipo especial de árbol conocido como «árbol de Patricia», incluida una modificación del concepto de árbol de Merkle que permite que los nodos se inserten y eliminen —y no solo se cambien— eficientemente. Además, debido a que toda la información del estado es parte del último bloque, no hay necesidad de almacenar todo el historial de la cadena de bloques —una estrategia que, si se pudiera aplicar a Bitcoin— podría calcularse para ahorrar entre 5 y 20 veces más espacio.
+El enfoque puede parecer altamente ineficiente a primera vista, porque necesita almacenar todo el estado con cada bloque, pero en realidad la eficiencia debería ser comparable a la de Bitcoin. La razón es que el estado se almacena en la estructura del árbol, y después de cada bloque solo se tiene que modificar una pequeña parte del árbol. Por lo tanto, en general, entre dos bloques adyacentes la gran mayoría del árbol debería ser la misma y, por lo tanto, los datos se pueden almacenar una vez y hacer referencia a ellos dos veces utilizando punteros (es decir, hashes de subárboles). Para lograrlo, se utiliza un tipo especial de árbol conocido como «árbol de Patricia», incluida una modificación del concepto de árbol de Merkle que permite que los nodos se inserten y eliminen —y no solo se cambien— eficientemente. Además, debido a que toda la información del estado es parte del último bloque, no hay necesidad de almacenar todo el historial de la cadena de bloques —una estrategia que, si se pudiera aplicar a Bitcoin— podría calcularse para ahorrar entre 5 y 20 veces más espacio.
-Una pregunta habitual es «dónde» se ejecuta el código del contrato, en términos del hardware físico. La respuesta a esto es sencilla: el proceso de ejecución del código del contrato es parte de la definición de la función de transición de estado, que a su vez es parte del algoritmo de validación de bloques. Por tanto, si una transacción se añade al bloque `B`, la ejecución del código que genera esa transacción la ejecutarán todos los nodos, ahora y en el futuro, que descarguen y validen el bloque `B`.
+Una pregunta habitual es «dónde» se ejecuta el código del contrato, en términos del hardware físico. Esto tiene una respuesta simple: el proceso de ejecución del código del contrato es parte de la definición de la función de transición de estado, que es parte del algoritmo de validación de bloques, por lo que si se añade una transacción al bloque `B`, la ejecución del código generada por esa transacción será ejecutada por todos los nodos, ahora y en el futuro, que descarguen y validen el bloque `B`.
## Aplicaciones {#applications}
En general, hay tres tipos de aplicaciones además de Ethereum. La primer categoría son las aplicaciones financieras, que ofrecen a los usuarios formas más potentes de gestionar y suscribir contratos con su dinero. Esto incluye submonedas, derivados financieros, contratos de cobertura, carteras de ahorro, testamentos e incluso, en última instancia, algunas clases de contratos de empleos a gran escala. La segunda categoría son las aplicaciones semifinancieras, donde el dinero está presente pero también le acompaña un importante factor no-monetario; un ejemplo perfecto son las recompensas autoaplicadas por resolver problemas computacionales. Por último, hay aplicaciones como el voto en línea y la gobernanza descentralizada que no son en absoluto financieras.
-### Sistemas de token {#token-systems}
+### Sistemas de tokens {#token-systems}
Los sistemas de token en la blockchain tienen muchas aplicaciones que van desde submonedas que representan activos, como el USD o el oro, hasta acciones de empresas, tokens individuales que representan propiedad inteligente, cuponse seguros infalsificables, e incluso sistemas de tokens sin ningún vínculo con un valor convecional en absoluto, utilizados como sistemas de puntos para incentivos. Los sistemas de token son sorprendentemente fáciles de implementar en Ethereum. El punto clave por retener es que una moneda, o sistema de token, fundamentalmente es una base de datos con una operación: restar X unidades de A y dar X unidades a B, con la disposición de que (1) A tuviera al menos X unidades antes de la transacción y (2) que la transacción la apruebe A. Lo único que se necesita para implementar un sistema de token es implementar esta lógica en un contrato.
@@ -268,11 +268,11 @@ def send(to, value):
self.storage[to] = self.storage[to] + value
```
-Esta es en esencia una implementación literal de la función de transición de estado de un «sistema bancario» descrita más arriba en este documento. Hay que añadir algunas líneas de código adicionales para crear, en primer lugar, el paso inicial en el que se distribuyen las unidades de moneda y otros casos extremos, e idóneamente se añadiría una función para permitir que otros contratos puedan consultar el saldo de una dirección. ¡Y eso es todo lo que hay que hacer! Theoretically, Ethereum-based token systems acting as sub-currencies can potentially include another important feature that on-chain Bitcoin-based meta-currencies lack: the ability to pay transaction fees directly in that currency. La forma en que se implementaría esto sería hacer que el contrato mantenga un saldo de ether con el cual reembolsaría el ether utilizado para pagar comisiones al remitente, y recargar este saldo recolectando las unidades de moneda interna que cobra en tarifas y revenderlas en una subasta en ejecución constante. De esta manera, los usuarios necesitarían «activar» sus cuentas con ether, pero una vez que el ether está ahí, sería reutilizable porque el contrato lo reembolsaría cada vez.
+Esta es en esencia una implementación literal de la función de transición de estado de un «sistema bancario» descrita más arriba en este documento. Hay que añadir algunas líneas de código adicionales para crear, en primer lugar, el paso inicial en el que se distribuyen las unidades de moneda y otros casos extremos, e idóneamente se añadiría una función para permitir que otros contratos puedan consultar el saldo de una dirección. ¡Y eso es todo lo que hay que hacer! En teoría, los sistemas de tókenes basados en Ethereum que actúan como submonedas pueden incluir potencialmente otra funcionalidad importante de la que carecen las metamonedas basadas en la cadena de bloques de Bitcoin: la capacidad de pagar tarifas de transacción directamente en esa moneda. La forma en que se implementaría esto sería hacer que el contrato mantenga un saldo de ether con el cual reembolsaría el ether utilizado para pagar comisiones al remitente, y recargar este saldo recolectando las unidades de moneda interna que cobra en tarifas y revenderlas en una subasta en ejecución constante. De esta manera, los usuarios necesitarían «activar» sus cuentas con ether, pero una vez que el ether está ahí, sería reutilizable porque el contrato lo reembolsaría cada vez.
### Derivados financieros y monedas de valor estable {#financial-derivatives-and-stable-value-currencies}
-Los derivados financieros son la aplicación más común de un «contrato inteligente», y uno de los más sencillos de implementar en código. El mayor desafío a la hora de implementar contratos financieros es que la mayoría de ellos requiere una referencia a una cotización externa; por ejemplo, una aplicación muy deseable es un contrato inteligente que protege contra la volatibilidad del ether (o de cualquier otra criptomoneda) con respecto al valor del dólar, pero hacer esto requiere que el contrato sepa el valor de la paridad ETH/USD. La forma más sencilla de hacerlo es a través de un contrato de «fuente de datos» que sea gestionado por una entidad específica (como el NASDAQ) designada, para que dicha entidad tenga la potestad de actualizar el contrato según sea necesario, y que provea una interfaz que permita a otros contratos enviar mensajes a ese contrato y obtener una respuesta que proporcione el precio.
+Los derivados financieros son la aplicación más común de un «contrato inteligente», y uno de los más sencillos de implementar en código. El mayor desafío a la hora de implementar contratos financieros es que la mayoría de ellos requiere una referencia a una cotización externa; por ejemplo, una aplicación muy deseable es un contrato inteligente que protege contra la volatibilidad del ether (o de cualquier otra criptomoneda) con respecto al valor del dólar, pero hacer esto requiere que el contrato sepa el valor de la paridad ETH/USD. La forma más sencilla de hacerlo es a través de un contrato de "fuente de datos" mantenido por una parte específica (p. ej., NASDAQ) diseñado para que esa parte tenga la capacidad de actualizar el contrato según sea necesario, y que proporcione una interfaz que permita a otros contratos enviar un mensaje a ese contrato y obtener una respuesta que proporcione el precio.
Dado dicho ingrediente crítico, el contrato de cobertura se vería así:
@@ -281,13 +281,13 @@ Dado dicho ingrediente crítico, el contrato de cobertura se vería así:
3. Almacenar el valor de 1.000 ether en USD, calculados mediante la consulta al contrato de la fuente de datos, en el almacenamiento, diegamos que es $x.
4. Transcurridos 30 días, permitir a A o B «reactivar» el contrato para enviar $x en ether (calculado mediante consulta al contrato de la fuente de datos para obtener el nuevo precio) a A y el resto a B.
-Un contrato así tendría un gran potencial en el comercio en criptomonedas. Uno de los mayores problemas que se citan sobre las criptomonedas es su volatilidad. Aunque muchos usuarios y comerciantes quieran la seguridad y conveniencia de operar con activos criptográficos, tal vez no quieran afrontar la perspectiva de perder el 23 % del valor de sus fondos en un solo día. Hasta ahora, la solución más propuesta ha sido la de activos respaldados por sus emisores; la idea consiste en que un emisor cree una submoneda en la que yace el derecho de emitir y retirar unidades, y proporcionar una unidad de la moneda a cualquiera que les provea (fuera de línea) una unidad de un activo subyacente especificado (p. ej., oro, USD). El emisor por su parte se compromete a proporcionar una unidad del activo subyacente a cualquiera que envíe de vuelta una unidad del criptoactivo. Este mecanismo permite que cualquier activo no criptográfico pueda ser «recatalogado» en un activo criptográfico, siempre que se pueda confiar en el emisor.
+Un contrato así tendría un gran potencial en el comercio en criptomonedas. Uno de los mayores problemas que se citan sobre las criptomonedas es su volatilidad. Aunque muchos usuarios y comerciantes quieran la seguridad y conveniencia de operar con activos criptográficos, tal vez no quieran afrontar la perspectiva de perder el 23 % del valor de sus fondos en un solo día. Hasta ahora, la solución más comúnmente propuesta ha sido la de los activos respaldados por el emisor; la idea es que un emisor crea una submoneda en la que tiene el derecho de emitir y revocar unidades, y proporciona una unidad de la moneda a cualquiera que le proporcione (fuera de línea) una unidad de un activo subyacente especificado (p. ej., oro, USD). El emisor por su parte se compromete a proporcionar una unidad del activo subyacente a cualquiera que envíe de vuelta una unidad del criptoactivo. Este mecanismo permite que cualquier activo no criptográfico pueda ser «recatalogado» en un activo criptográfico, siempre que se pueda confiar en el emisor.
-En la práctica, sin embargo, los emisores no siempre son fiables, y en algunos casos la infraestructura bancaria es demasiado débil o demasiado hostil para que estos servicios existan. Los derivados financieros ofrecen una alternativa. En este caso, en lugar de un único emisor que proporciona los fondos para respaldar un activo, un mercado descentralizado de especuladores que apuestan a que el precio de un activo criptográfico de referencia (p. ej., ETH) subirá, desempeñará ese papel. A diferencia de los emisores, los especuladores no tienen la opción de suspender pagos en su parte del acuerdo, porque el contrato de cobertura mantiene sus fondos en fideicomiso. Observe que este enfoque no está completamente descentralizado, dado que todavía se necesita una fuente de confianza para proporcionar el indicador de precios, aunque presumiblemente incluso esto sea una notable mejora en términos de reducción de requisitos de infraestructura (a diferencia de ser un emisor, la emisión de una fuente de precios no requiere ninguna licencia y es probable que se pueda categorizar dentro de la libre expresión) y de reducción del riesgo de fraude.
+En la práctica, sin embargo, los emisores no siempre son fiables, y en algunos casos la infraestructura bancaria es demasiado débil o demasiado hostil para que estos servicios existan. Los derivados financieros ofrecen una alternativa. Aquí, en lugar de un único emisor que proporciona los fondos para respaldar un activo, un mercado descentralizado de especuladores, que apuestan a que el precio de un activo de referencia criptográfico (p. ej., ETH) subirá, desempeña ese papel. A diferencia de los emisores, los especuladores no tienen la opción de suspender pagos en su parte del acuerdo, porque el contrato de cobertura mantiene sus fondos en fideicomiso. Observe que este enfoque no está completamente descentralizado, dado que todavía se necesita una fuente de confianza para proporcionar el indicador de precios, aunque presumiblemente incluso esto sea una notable mejora en términos de reducción de requisitos de infraestructura (a diferencia de ser un emisor, la emisión de una fuente de precios no requiere ninguna licencia y es probable que se pueda categorizar dentro de la libre expresión) y de reducción del riesgo de fraude.
### Sistemas de identidad y reputación {#identity-and-reputation-systems}
-La criptomoneda alternativa más antigua de todas, [Namecoin](http://namecoin.org/), intentó usar una cadena de bloques similar a Bitcoin para proporcionar un sistema de registro de nombres, donde los usuarios pueden registrar sus nombres en una base de datos pública junto con otros datos. El principal caso de uso citado es para un sistema [DNS](https://wikipedia.org/wiki/Domain_Name_System), que asigna nombres de dominio como "bitcoin.org" (o, en el caso de Namecoin, «bitcoin.bit») a una dirección IP. Otros casos de uso incluyen la autenticación de correo electrónico y sistemas de reputación potencialmente más avanzados. He aquí el contrato básico para proporcionar un sistema de registro de nombres similar a Namecoin en Ethereum:
+La primera criptomoneda alternativa, [Namecoin](http://namecoin.org/), intentó usar una cadena de bloques similar a la de Bitcoin para proporcionar un sistema de registro de nombres, donde los usuarios pueden registrar sus nombres en una base de datos pública junto con otros datos. El principal caso de uso citado es para un sistema [DNS](https://wikipedia.org/wiki/Domain_Name_System), que mapea nombres de dominio como "bitcoin.org" (o, en el caso de Namecoin, "bitcoin.bit") a una dirección IP. Otros casos de uso incluyen la autenticación de correo electrónico y sistemas de reputación potencialmente más avanzados. He aquí el contrato básico para proporcionar un sistema de registro de nombres similar a Namecoin en Ethereum:
```py
def register(name, value):
@@ -295,27 +295,32 @@ def register(name, value):
self.storage[name] = value
```
-El contrato es muy simple; es una base de datos dentro de la red Ethereum que se puede agregar, pero no modificar ni eliminar. Cualquiera puede registrar un nombre con algún valor, y ese registro se mantiene para siempre. Un contrato de registro de nombres más sofisticado también tendrá una «cláusula de función» que permitirá que otros contratos lo consulten, así como un mecanismo para que el «propietario» (es decir, el primer registrador) de un nombre cambie los datos o transfiera la propiedad. Incluso se puede añadir la reputación y la funcionalidad web de confianza en la parte superior.
+El contrato es muy simple; es una base de datos dentro de la red Ethereum que se puede agregar, pero no modificar ni eliminar. Cualquiera puede registrar un nombre con algún valor, y ese registro se mantiene para siempre. Un contrato de registro de nombres más sofisticado también tendrá una "cláusula de función" que permitirá a otros contratos consultarlo, así como un mecanismo para que el "propietario" (es decir, el primer registrador) de un nombre cambie los datos o transfiera la propiedad. Incluso se puede añadir la reputación y la funcionalidad web de confianza en la parte superior.
### Almacenamiento de archivos descentralizado {#decentralized-file-storage}
-En los últimos años, ha surgido una serie de almacenamientos de archivos en línea populares, siendo Dropbox el más destacado, que permite a los usuarios cargar una copia de seguridad de su disco duro y tener el servicio de almacenamiento de la copia de seguridad y permitir al usuario acceder a ella a cambio de una cuota mensual. Sin embargo, en este punto el mercado de almacenamiento de archivos es a veces relativamente ineficiente; una mirada superficial a varias soluciones existentes muestra que, particularmente en el «valle misterioso» del nivel de 20-200 GB en que ni las cuotas libres, ni los descuentos a nivel de empresa se ponen en marcha, los precios mensuales de los costes de almacenamiento de archivos principales son tales que usted está pagando más que el coste de todo el disco duro en un solo mes. Los contratos de Ethereum pueden permitir el desarrollo de un ecosistema de almacenamiento de archivos descentralizado, donde los usuarios individuales pueden ganar pequeñas cantidades de dinero alquilando sus propios discos duros y el espacio no utilizado puede servir para reducir aún más el coste del almacenamiento de archivos.
+En los últimos años, ha surgido una serie de almacenamientos de archivos en línea populares, siendo Dropbox el más destacado, que permite a los usuarios cargar una copia de seguridad de su disco duro y tener el servicio de almacenamiento de la copia de seguridad y permitir al usuario acceder a ella a cambio de una cuota mensual. Sin embargo, en este punto el mercado de almacenamiento de archivos es a veces relativamente ineficiente; una mirada superficial a varias soluciones existentes muestra que, particularmente en el «valle misterioso» del nivel de 20-200 GB en que ni las cuotas libres, ni los descuentos a nivel de empresa se ponen en marcha, los precios mensuales de los costes de almacenamiento de archivos principales son tales que usted está pagando más que el coste de todo el disco duro en un solo mes. Los contratos de Ethereum pueden permitir el desarrollo de un
+ecosistema de almacenamiento de archivos descentralizado, donde los usuarios individuales pueden ganar pequeñas cantidades de dinero alquilando sus propios discos duros y el espacio no utilizado puede servir para reducir aún más el coste del almacenamiento de archivos.
-La pieza clave fundamental de dicho dispositivo sería lo que hemos llamado el «contrato Dropbox descentralizado». Este contrato funciona como se indica a continuación. First, one splits the desired data up into blocks, encrypting each block for privacy, and builds a Merkle tree out of it. Se crea entonces un contrato con la regla de que cada N bloques, el contrato elegirá un índice aleatorio en el árbol de Merkle (usando el hash del bloque anterior, accesible desde el código del contrato, como fuente de aleatoriedad), y dará X ether a la primera entidad que proporcione una transacción con una prueba de propiedad similar a la verificación de pago simplificado del bloque para ese índice específico del árbol. Cuando un usuario quiere volver a descargar su archivo, puede utilizar un protocolo de canal de micropago (p. ej., pagar 1 szabo por cada 32 kilobytes) para recuperar el archivo; el enfoque más eficiente de tarificación es que el pagador no publique la transacción hasta el final, y en su lugar reemplace la transacción por otra ligeramente más lucrativa con el mismo nonce tras cada 32 kilobytes.
+La pieza clave fundamental de dicho dispositivo sería lo que hemos llamado
+el «contrato Dropbox descentralizado». Este contrato funciona como se indica a continuación. First, one splits the desired data up into blocks, encrypting each block for privacy, and builds a Merkle tree out of it. Se crea entonces un contrato con la regla de que cada N bloques, el contrato elegirá un índice aleatorio en el árbol de Merkle (usando el hash del bloque anterior, accesible desde el código del contrato, como fuente de aleatoriedad), y dará X ether a la primera entidad que proporcione una transacción con una prueba de propiedad similar a la verificación de pago simplificado del bloque para ese índice específico del árbol. Cuando un usuario quiere volver a descargar su archivo, puede usar un protocolo de canal de micropagos (p. ej., pagar 1 szabo por 32 kilobytes) para recuperar el archivo; el enfoque más eficiente en cuanto a comisiones es que el pagador no publique la transacción hasta el final, sino que la reemplace por una ligeramente más lucrativa con el mismo nonce después de cada 32 kilobytes.
Una característica importante del protocolo es que, aunque pueda parecer que se confía en que muchos nodos aleatorios decidan no olvidar el archivo, se puede reducir ese riesgo a casi cero dividiendo el archivo en muchas piezas a través de una compartición secreta, y observar los contratos para comprobar si cada pieza sigue en posesión de algunos nodos. Si un contrato sigue remunerando, esto proporciona una prueba criptográfica de que alguien todavía está almacenando el archivo.
-### Organizaciones autonómas descentralizadas {#decentralized-autonomous-organizations}
+### Organizaciones autónomas descentralizadas {#decentralized-autonomous-organizations}
-El concepto general de una «organización autónoma descentralizada» (DAO, por sus siglas en inglés) es el de una entidad virtual que tiene cierto número de miembros o accionistas que, quizás con una mayoría del 67 %, tienen el derecho a gastar los fondos de la entidad y modificar su código. Los miembros decidirían colectivamente el modo en el que la organización debe destinar sus fondos. Los métodos para destinar los fondos de una DAO podrían variar, desde recompensas y sueldos, hasta mecanismos más exóticos, como una moneda interna para recompensar el trabajo. Esto esencialmente replica los elementos legales de una empresa tradicional o sin fines de lucro, pero utiliza solo tecnología criptográfica de cadena de bloques para su cumplimiento. Hasta ahora, gran parte de las conversaciones sobre las DAO giraban en torno al modelo «capitalista» de una «corporación autónoma descentralizada» (o DAC, por sus siglas en inglés), con accionistas que reciben dividendos y acciones negociables. Una alternativa tal vez descrita como una «comunidad autónoma descentralizada» haría que todos los miembros tuvieran una parte idéntica en la toma de decisiones y requeriría que el 67 % de los miembros existentes aceptaran añadir o eliminar a un miembro. El grupo debería imponer colectiviamente el requisito de que una persona pueda ser miembro solo una vez.
+El concepto general de una «organización autónoma descentralizada» (DAO, por sus siglas en inglés) es el de una entidad virtual que tiene cierto número de miembros o accionistas que, quizás con una mayoría del 67 %, tienen el derecho a gastar los fondos de la entidad y modificar su código. Los miembros decidirían colectivamente el modo en el que la organización debe destinar sus fondos. Los métodos para destinar los fondos de una DAO podrían variar, desde recompensas y sueldos, hasta mecanismos más exóticos, como una moneda interna para recompensar el trabajo. Esto esencialmente replica los elementos legales de una empresa tradicional o sin fines de lucro, pero utiliza solo tecnología criptográfica de cadena de bloques para su cumplimiento. Hasta ahora, gran parte de las conversaciones sobre las DAO giraban en torno al modelo «capitalista» de una «corporación autónoma descentralizada» (o DAC, por sus siglas en inglés), con accionistas que reciben dividendos y acciones negociables. Una alternativa tal vez descrita como una «comunidad autónoma descentralizada» haría que todos los miembros tuvieran una parte idéntica en la toma de decisiones y requeriría que el 67 % de los miembros existentes
+aceptaran añadir o eliminar a un miembro. El grupo debería imponer colectiviamente el requisito de que una persona pueda ser miembro solo una vez.
-Un esquema general de cómo implementar una DAO es el siguiente: El diseño más simple consiste en una sección de código automodificable que cambia si dos tercios de los miembros están de acuerdo en un cambio. Aunque el código es teóricamente inmutable, esto se puede eludir fácilmente y tener mutabilidad de facto mediante fragmentos del código en contratos separados, y teniendo la dirección de los contratos que puedan considerar guardados en el almacenamiento modificable. En una sencilla implementación de dicho contrato DAO, habría tres tipos de transacción, diferenciados por los datos proporcionados en la transacción:
+Un esquema general de cómo implementar una DAO es el siguiente: El diseño más simple consiste en una sección de código automodificable que cambia si dos tercios de los miembros están de acuerdo en un cambio. Aunque el código es teóricamente inmutable, esto se puede eludir fácilmente y tener mutabilidad de facto mediante fragmentos del código en contratos separados, y teniendo la dirección de los contratos que puedan considerar guardados en el almacenamiento modificable. En una sencilla implementación de dicho contrato DAO, habría tres
+tipos de transacción, diferenciados por los datos proporcionados en la
+transacción:
-- `[0,i,K,V]` para registrar una propuesta con índice `i` para cambiar la dirección en el índice de almacenamiento `K` al valor `V`
+- `[0,i,K,V]` para registrar una propuesta con el índice `i` para cambiar la dirección en el índice de almacenamiento `K` al valor `V`
- `[1,i]` para registrar un voto a favor de la propuesta `i`
-- `[2,i]` para finalizar la propuesta `i` si tiene los suficientes votos
+- `[2,i]` para finalizar la propuesta `i` si se han realizado suficientes votos
-El contrato tendría entonces cláusulas para cada una de ellas. Mantendría un registro de todos los cambios de almacenamiento abiertos, junto con una lista de quienes los han votado. También tendría una lista de todos los miembros. Cuando cualquier cambio de almacenamiento alcanza el voto de dos tercios de los miembros, una transacción finalizadora podría ejecutar el cambio. Un esquema más sofisticado también tendría capacidad de voto incorporada para funciones tales como el envío de una transacción, añadir y borrar miembros, e incluso proporcionar una delegación de votos tipo [Democracia líquida](https://es.wikipedia.org/wiki/Democracia_l%C3%ADquida) (p. ej., cualquiera puede asignar a alguien para votar por él, y dicha asignación es transitiva, de modo que si A asigna a B y B asigna a C, entonces C determina el voto de A). Este diseño permitiría que la DAO crezca orgánicamente como una comunidad descentralizada, permitiendo que la gente eventualmente delegue la tarea de filtrar quién sería miembro a especialistas, aunque a diferencia de lo que ocurre en el «sistema actual», los especialistas pueden aparecer y desaparecer a medida que los miembros individuales de la comunidad cambian de postura.
+El contrato tendría entonces cláusulas para cada una de ellas. Mantendría un registro de todos los cambios de almacenamiento abiertos, junto con una lista de quienes los han votado. También tendría una lista de todos los miembros. Cuando cualquier cambio de almacenamiento alcanza el voto de dos tercios de los miembros, una transacción finalizadora podría ejecutar el cambio. Un esqueleto más sofisticado también tendría una capacidad de votación incorporada para características como el envío de una transacción, la adición de miembros y la eliminación de miembros, e incluso podría prever una delegación de votos al estilo de la [Democracia Líquida](https://wikipedia.org/wiki/Liquid_democracy) (es decir, cualquiera puede asignar a alguien para que vote por él, y la asignación es transitiva, por lo que si A asigna a B y B asigna a C, entonces C determina el voto de A). Este diseño permitiría que la DAO crezca orgánicamente como una comunidad descentralizada, permitiendo que la gente eventualmente delegue la tarea de filtrar quién sería miembro a especialistas, aunque a diferencia de lo que ocurre en el «sistema actual», los especialistas pueden aparecer y desaparecer a medida que los miembros individuales de la comunidad cambian de postura.
Hay un modelo alternativo para una corporación descentralizada, donde cualquier cuenta puede tener cero o más acciones, y se necesitan dos tercios de las acciones para tomar una decisión. A complete skeleton would involve asset management functionality, the ability to make an offer to buy or sell shares, and the ability to accept offers (preferably with an order-matching mechanism inside the contract). La delegación también existiría al estilo de la Democracia líquida, generalizando el concepto de un «consejo directivo».
@@ -331,23 +336,23 @@ Normalmente, el 1% diario es suficiente para Alice, y si ella quiere retirar fon
**2. Seguro de cosecha**. Uno puede hacer fácilmente un contrato de derivados financieros, pero utilizando una fuente de datos del clima, en lugar de cualquier índice de precios. Si un agricultor en Iowa compra un derivado que paga inversamente en función de las precipitaciones en Iowa, entonces si hay una sequía, el agricultor recibirá dinero automáticamente y si hay suficiente lluvia, el agricultor estará feliz porque a sus cultivos les iría bien. Esto puede ampliarse a los seguros de desastres naturales en general.
-**3. Una fuente de datos descentralizada**. Para los contratos financieros por diferencia, puede ser posible descentralizar la fuente de datos a través de un protocolo llamado "[SchellingCoin](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/)". SchellingCoin básicamente funciona de la siguiente manera: N partes ponen en el sistema el valor de un dato determinado (por ejemplo, el precio ETH/USD), los valores se ordenan y todos aquellos entre el percentil 25 y 75 obtienen un token como recompensa. Todos tienen el incentivo de proporcionar la respuesta que todos los demás proporcionarán, y el único valor en el que un gran número de jugadores pueden estar de acuerdo de manera realista es el valor predeterminado obvio: la verdad. Esto crea un protocolo descentralizado que teóricamente puede proporcionar cualquier número de valores, incluido el precio ETH/USD, la temperatura en Berlín o incluso el resultado de un cálculo particularmente dificil.
+**3. Una fuente de datos descentralizada**. Para los contratos financieros por diferencia, podría ser posible descentralizar la fuente de datos a través de un protocolo llamado "[SchellingCoin](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/)". SchellingCoin funciona básicamente de la siguiente manera: N partes introducen en el sistema el valor de un dato determinado (p. ej., el precio ETH/USD), los valores se ordenan y todos los que se encuentren entre el percentil 25 y el 75 obtienen un token como recompensa. Todos tienen el incentivo de proporcionar la respuesta que todos los demás proporcionarán, y el único valor en el que un gran número de jugadores pueden estar de acuerdo de manera realista es el valor predeterminado obvio: la verdad. Esto crea un protocolo descentralizado que teóricamente puede proporcionar cualquier número de valores, incluido el precio ETH/USD, la temperatura en Berlín o incluso el resultado de un cálculo particularmente dificil.
**4. Fideicomiso multifirma inteligente**. Bitcoin permite contratos de transacción multifirma donde, por ejemplo, tres de las cinco claves dadas pueden gastar los fondos. Ethereum permite una mayor granularidad; por ejemplo, cuatro de los cinco pueden gastarlo todo, tres de los cinco pueden gastar hasta un 10 % al día y dos de los cinco pueden gastar hasta un 0,5 % al día. Además, la multifirma de Ethereum es asíncrona: dos partes pueden registrar sus firmas en la cadena de bloques en diferentes momentos y la última firma enviará automáticamente la transacción.
-**5. Computación en la nube**. La tecnología EVM también se puede utilizar para crear un entorno informático verificable, lo que permite a los usuarios pedir a otros que realicen cálculos y luego, opcionalmente, solicitar pruebas de que los cálculos en ciertos puntos de control seleccionados al azar se realizaron correctamente. Esto permite la creación de un mercado de computación en la nube donde cualquier usuario puede participar con su computadora de escritorio, portátil o servidor especializado, y efectuar comprobaciones al azar, junto con los depósitos de seguridad, para garantizar que el sistema sea fiable (es decir, los nodos no pueden hacer trampa y obtener beneficios). Aunque puede que tal sistema no sea el adecuado para todas las tareas; estas requieren un alto nivel de comunicación entre procesos, por ejemplo, no se pueden realizar fácilmente en una gran nube de nodos. Otras tareas, sin embargo, son mucho más fáciles de hacer en paralelo; proyectos como SETI@home, folding@home y algoritmos genéticos se pueden implementar fácilmente sobre dicha plataforma.
+**5. Computación en la nube**. La tecnología EVM también se puede utilizar para crear un entorno informático verificable, lo que permite a los usuarios pedir a otros que realicen cálculos y luego, opcionalmente, solicitar pruebas de que los cálculos en ciertos puntos de control seleccionados al azar se realizaron correctamente. Esto permite la creación de un mercado de computación en la nube en el que cualquier usuario puede participar con su ordenador de sobremesa, portátil o servidor especializado, y las comprobaciones puntuales junto con los depósitos de seguridad pueden utilizarse para garantizar que el sistema es fiable (es decir, que los nodos no pueden hacer trampas de forma rentable). Aunque puede que tal sistema no sea el adecuado para todas las tareas; estas requieren un alto nivel de comunicación entre procesos, por ejemplo, no se pueden realizar fácilmente en una gran nube de nodos. Otras tareas, sin embargo, son mucho más fáciles de hacer en paralelo; proyectos como SETI@home, folding@home y algoritmos genéticos se pueden implementar fácilmente sobre dicha plataforma.
-**6. Apuestas entre pares**. Cualquier número de protocolos de juego de persona a persona, como los de Frank Stajano y Richard Clayton's [Cyberdice](http://www.cl.cam.ac.uk/~fms27/papers/2008-StajanoCla-cyberdice.pdf), se pueden implementar en la cadena de bloques de Ethereum. El protocolo de juego más sencillo es, en realidad simplemente, un contrato por diferencia en el siguiente hash de bloque, y se pueden construir protocolos más avanzados a partir de ahí, creando servicios de juego con tárifas cercanas a cero que no tienen la capacidad de hacer trampa.
+**6. Apuestas entre pares**. Cualquier número de protocolos de juego entre pares, como el [Cyberdice](http://www.cl.cam.ac.uk/~fms27/papers/2008-StajanoCla-cyberdice.pdf) de Frank Stajano y Richard Clayton, se puede implementar en la cadena de bloques de Ethereum. El protocolo de juego más sencillo es, en realidad simplemente, un contrato por diferencia en el siguiente hash de bloque, y se pueden construir protocolos más avanzados a partir de ahí, creando servicios de juego con tárifas cercanas a cero que no tienen la capacidad de hacer trampa.
-**7. Mercados de predicciones**. Con un oráculo o SchellingCoin, los mercados de predicción tambien son fáciles de implementar, y junto con SchelligCoin pueden llegar a ser la primera aplicación principal de[futarchy](http://hanson.gmu.edu/futarchy.html) como protocolo de gobernanza para organizaciones descentralizadas.
+**7. Mercados de predicciones**. Con un oráculo o SchellingCoin, los mercados de predicción también son fáciles de implementar, y los mercados de predicción junto con SchellingCoin pueden llegar a ser la primera aplicación principal de la [futarchy](https://mason.gmu.edu/~rhanson/futarchy.html) como protocolo de gobernanza para las organizaciones descentralizadas.
-**8. Plataformas decentralizadas sobre la cadena de bloques** usando el sistema de identidad y de reputación como base.
+**8. Mercados descentralizados en la cadena**, utilizando el sistema de identidad y reputación como base.
-## Miscelánea y dudas {#miscellanea-and-concerns}
+## Miscelánea e inquietudes {#miscellanea-and-concerns}
### Implementación de GHOST modificada {#modified-ghost-implementation}
-El protocolo «Subárbol observado más pesado codicioso» (GHOST) es una innovación introducida por primera vez por Yonatan Sompolinsky y Aviv Zohar en[diciembre 2013](https://eprint.iacr.org/2013/881.pdf). La motivación subyacente a GHOST es que las cadenas de bloques con tiempos de confirmación rápidos actualmente sufren una seguridad reducida debido a una alta tasa de obsolescencia, ya que los bloques tardan cierto tiempo en propagarse a través de la red, si el minero A extrae un bloque y luego el minero B extrae otro bloque, antes de que el bloque del minero A se propague a B, el bloque del minero B se desperdiciará y no contribuirá a la seguridad de la red. Además, hay un problema de centralización: si suponemos que el minero A es una plataforma de minería con un 30 % de potencia de hash y que el minero B tiene un 10 % de potencia de hash, el minero A correrá el riesgo de producir bloques obsoletos el 70 % del tiempo (ya que en el otro 30 % del tiempo, el minero A producirá el último bloque y entonces obtendrá los datos de minado inmediatamente) mientras que el minero B correrá el riesgo de producir bloques obsoletos el 90 % del tiempo. Por lo tanto, si el intervalo de bloque es lo suficientemente corto como para que la tasa obsoleta sea alta, A será sustancialmente más eficiente, simplemente en virtud de su tamaño. Con estos dos efectos combinados, es muy probable que las cadenas de bloques que producen bloques rápidamente conduzcan a que un grupo de míneria tenga un porcentaje lo suficientemente grande del poder de hash de la red para tener control de facto sobre el proceso de mineria.
+El protocolo "Greedy Heaviest Observed Subtree" (GHOST) es una innovación introducida por primera vez por Yonatan Sompolinsky y Aviv Zohar en [diciembre de 2013](https://eprint.iacr.org/2013/881.pdf). La motivación subyacente a GHOST es que las cadenas de bloques con tiempos de confirmación rápidos actualmente sufren una seguridad reducida debido a una alta tasa de obsolescencia, ya que los bloques tardan cierto tiempo en propagarse a través de la red, si el minero A extrae un bloque y luego el minero B extrae otro bloque, antes de que el bloque del minero A se propague a B, el bloque del minero B se desperdiciará y no contribuirá a la seguridad de la red. Además, hay un problema de centralización: si suponemos que el minero A es una plataforma de minería con un 30 % de potencia de hash y que el minero B tiene un 10 % de potencia de hash, el minero A correrá el riesgo de producir bloques obsoletos el 70 % del tiempo (ya que en el otro 30 % del tiempo, el minero A producirá el último bloque y entonces obtendrá los datos de minado inmediatamente) mientras que el minero B correrá el riesgo de producir bloques obsoletos el 90 % del tiempo. Por lo tanto, si el intervalo de bloque es lo suficientemente corto como para que la tasa obsoleta sea alta, A será sustancialmente más eficiente, simplemente en virtud de su tamaño. Con estos dos efectos combinados, es muy probable que las cadenas de bloques que producen bloques rápidamente conduzcan a que un grupo de míneria tenga un porcentaje lo suficientemente grande del poder de hash de la red para tener control de facto sobre el proceso de mineria.
Como lo describen Sompolinsky y Zohar, GHOST resuelve el primer problema de la pérdida de seguridad de la red al incluir bloques obsoletos en el cálculo de qué cadena es la «más larga»; es decir, no solo el padre y los ancestros de un bloque, sino también los descendientes obsoletos del ancestro del bloque (conocidos en la jerga de Ethereum, como «tíos») se añaden al cálculo de qué bloque tiene la mayor prueba de trabajo que lo respalda. Para resolver el segundo problema del sesgo de centralización, vamos más allá del protocolo descrito por Sompolinsky y Zohar, y también proporcionamos recompensas en bloque a los obsoletos: un bloque obsoleto recibe el 87,5 % de su recompensa base, y el sobrino que incluye el bloque obsoleto recibe el resto del 12,5 %. Sin embargo, las tasas de transacción no se otorgan a los tíos.
@@ -355,7 +360,7 @@ En Ethereum, se emplea una versión simplificada de GHOST que se solo extiende h
- Un bloque debe especificar un padre, y debe especificar 0 o más tíos.
- Un bloque tío incluido en el bloque B debe tener las siguientes propiedades:
- - Debe ser un hijo directo del antepasado de la generación kth, donde `2 <= k <= 7`.
+ - Debe ser un hijo directo del k-ésimo ancestro de la generación de B, donde `2 <= k <= 7`.
- No puede ser ancestro de B
- Un tío debe ser una cabecera de bloque válida, pero no necesita ser un bloque previamente verificado, ni siquiera válido.
- Un tío debe ser distinto de todos los tíos incluidos en bloques anteriores y de todos los otros tíos incluidos en el mismo bloque (no debe haber doble inclusión).
@@ -363,7 +368,7 @@ En Ethereum, se emplea una versión simplificada de GHOST que se solo extiende h
Esta versión limitada de GHOST, con tíos que solo se pueden incluir hasta 7 generaciones, se utilizó por dos razones. Primero, GHOST ilimitado incluiría demasiadas complicaciones en el cálculo de qué tíos son válidos para un bloque determinado. En segundo lugar, GHOST ilimitado con compensación como se usa en Ethereum elimina el incentivo para que un minero extraiga en la cadena principal y no en la cadena de un atacante público.
-### Tarifas {#fees}
+### Comisiones {#fees}
Debido a que cada transacción publicada en la cadena de bloques impone a la red el coste de descargarla y verificarla, se necesita algún mecanismo regulatorio, que generalmente involucra tarifas de transacción, para evitar abusos. El enfoque predeterminado, utilizado en Bitcoin, es tener tarifas puramente voluntarias, confiando en que los mineros actúen como guardianes y establezcan mínimos dinámicos. Este enfoque ha gozado de una gran acogida en la comunidad de Bitcoin, particularmente porque está «basado en el mercado», lo que permite que la oferta y la demanda entre los mineros y los remitentes de transacciones determinen el precio. Sin embargo, el problema con esta línea de razonamiento es que el procesamiento de transacciones no es un mercado. Aunque es intuitivamente atractivo interpretar el procesamiento de transacciones como un servicio que el minero ofrece al remitente, en realidad, cada transacción que incluya un minero deberá procesarla cada nodo de la red, por lo que la gran mayoría del coste de la transacción el procesamiento corre a cargo de terceros y no del minero que está tomando la decisión de incluirlo o no. Por lo tanto, es muy probable que surjan problemas del estilo «tragedia de los comunes».
@@ -371,10 +376,10 @@ Sin embargo, resulta que este fallo en el mecanismo basado en el mercado, cuando
1. Una transacción conduce a `k` operaciones, ofreciendo la recompensa `kR` a cualquier minero que la incluya, donde `R` lo establece el remitente y `k` y `R` son (aproximadamente) visibles para el minero de antemano.
2. Una operación tiene un coste de procesamiento de `C` para cualquier nodo (es decir, todos los nodos tienen la misma eficiencia).
-3. Hay `N` nodos de minado, cada uno con exactamente la misma potencia de procesamiento (es decir, `1/N` del total)
+3. Hay `N` nodos de minería, cada uno con exactamente la misma potencia de procesamiento (es decir, `1/N` del total).
4. No existen nodos completos que no minen.
-Un minero estaría dispuesto a procesar una transacción si la recompensa esperada es mayor que el coste. Por lo tanto, la recompensa esperada es `kR/N` ya que el minero tiene una `1/N` probabilidad de procesar el siguiente bloque, y el coste del procesamiento para el minero es simplemente `kC`. Por lo tanto, los mineros incluirán transacciones en las que `kR/N> kC`, o `R> NC`. Tenga en cuenta que `R` es la tarifa por operación facilitada por el remitente, y es un límite inferior del beneficio que obtiene el remitente de la transacción, y `NC` es el coste de toda la red en conjunto para procesar una operación. Por eso, los mineros tienen el incentivo de incluir solo aquellas transacciones cuyo beneficio utilitario total exceda el coste.
+Un minero estaría dispuesto a procesar una transacción si la recompensa esperada es mayor que el coste. Por lo tanto, la recompensa esperada es `kR/N`, ya que el minero tiene una probabilidad de `1/N` de procesar el siguiente bloque, y el coste de procesamiento para el minero es simplemente `kC`. Por lo tanto, los mineros incluirán transacciones donde `kR/N > kC`, o `R > NC`. Tenga en cuenta que `R` es la comisión por operación proporcionada por el remitente, y por lo tanto es un límite inferior del beneficio que el remitente obtiene de la transacción, y `NC` es el coste para toda la red en conjunto de procesar una operación. Por eso, los mineros tienen el incentivo de incluir solo aquellas transacciones cuyo beneficio utilitario total exceda el coste.
No obstante, hay varias desviaciones de esos supuestos en la realidad:
@@ -383,42 +388,44 @@ No obstante, hay varias desviaciones de esos supuestos en la realidad:
3. La distribución de potencia de minado puede acabar siendo radicalmente desigualitaria en la práctica.
4. Los especuladores, enemigos políticos y dementes, cuya función de utilidad incluye causar daño a la red, existen y pueden establecer hábilmente contratos cuyo coste es mucho menor que el coste pagado por otros nodos de verificación.
-(1) proporciona una tendencia al minero a que incluya menos transacciones, e (2) incrementa `NC`; por lo tanto, estos dos efectos al menos parcialmente se cancelan entre sí.[¿Cómo?](https://web.archive.org/web/20250427212319/https://github.com/ethereum/wiki/issues/447#issuecomment-316972260#issuecomment-316972260) (3) y (4) son el principal problema; para resolverlos, simplemente fijamos un límite reajustable: ningún bloque puede tener más operaciones que `BLK_LIMIT_FACTOR` veces el promedio de la media móvil exponencial a largo plazo. Específicamente:
+(1) proporciona una tendencia para que el minero incluya menos transacciones, y (2) aumenta `NC`; por lo tanto, estos dos efectos se anulan mutuamente al menos en parte.[¿Cómo?](https://web.archive.org/web/20250427212319/https://github.com/ethereum/wiki/issues/447#issuecomment-316972260#issuecomment-316972260)
+(3) y (4) son el problema principal; para resolverlos, simplemente instituimos un límite flotante: ningún bloque puede tener más operaciones que `BLK_LIMIT_FACTOR` veces el promedio móvil exponencial a largo plazo.
+Específicamente:
```js
blk.oplimit = floor((blk.parent.oplimit \* (EMAFACTOR - 1) +
floor(parent.opcount \* BLK\_LIMIT\_FACTOR)) / EMA\_FACTOR)
```
-`BLK_LIMIT_FACTOR` y `EMA_FACTOR` son constantes que se establecerán a 65536 y 1,5 de momento, pero será posible cambiarlas después de más análisis.
+`BLK_LIMIT_FACTOR` y `EMA_FACTOR` son constantes que se establecerán en 65536 y 1,5 por el momento, pero que probablemente se cambiarán después de un análisis más profundo.
Hay otro factor que desincentiva los grandes tamaños de bloques en Bitcoin: la propagación de bloques que son grandes llevará más tiempo y tendrán mayor probabilidad de volverse rancios. En Ethereum, los bloques que consumen la mayor cantidad de gas pueden tardar más en propagarse, porque sus dimensiones son mayores y porque les lleva más tiempo procesar las transiciones del estado por validar. Este desincentivo por demora es una consideración importante en Bitcoin, aunque menos en Ethereum debido al protocolo GHOST; por lo tanto, confiar en límites de bloques regulados proporciona una base más estable.
-### Computación y conclusión de Turing {#computation-and-turing-completeness}
+### Computación y completitud de Turing {#computation-and-turing-completeness}
-Un dato importante a tener en cuenta es que la máquina virtual de Ethereum es Turing al 100 %; esto implica que el código de la EVM puede representar cualquier cálculo que pueda concebirse, incluyendo bucles infinitos. El código de la EVM permite realizar bucles de dos maneras. En primer lugar, hay una instrucción `JUMP` que permite al programa volver a un punto previo en el código, y una instrucción `JUMPI` para realizar saltos condicionales, permitiendo sentencias como `while x < 27: x = x * 2`. En segundo lugar, los contratos pueden invocar a otros contratos, lo que permite potenciales bucles a través de la recursión. Esto lleva naturalmente a un problema: ¿pueden los usuarios maliciosos paralizar a los mineros y a los nodos completos al obligarlos a entrar en un bucle infinito? El problema surge debido a un dilema en la informática conocido como el problema de la detención: generalmente no hay forma de saber si tal programa se va a detener o no.
+Un dato importante a tener en cuenta es que la máquina virtual de Ethereum es Turing al 100 %; esto implica que el código de la EVM puede representar cualquier cálculo que pueda concebirse, incluyendo bucles infinitos. El código de la EVM permite realizar bucles de dos maneras. Primero, hay una instrucción `JUMP` que permite al programa saltar a un punto anterior en el código, y una instrucción `JUMPI` para hacer saltos condicionales, permitiendo sentencias como `while x < 27: x = x * 2`. En segundo lugar, los contratos pueden invocar a otros contratos, lo que permite potenciales bucles a través de la recursión. Esto lleva naturalmente a un problema: ¿pueden los usuarios maliciosos paralizar a los mineros y a los nodos completos al obligarlos a entrar en un bucle infinito? El problema surge debido a un dilema en la informática conocido como el problema de la detención: generalmente no hay forma de saber si tal programa se va a detener o no.
Como se explica en la sección de transición de estado, nuestra solución funciona al requerir que una transacción establezca un número máximo de pasos computacionales que se le permiten tomar, y si la ejecución lleva más tiempo, la computación se revierte, pero las tarifas se siguen pagando. Los mensajes funcionan del mismo modo. Para ilustrar la motivación detrás de nuestra solución, considera los siguientes ejemplos:
- Un atacante crea un contrato que ejecuta un bucle infinito y luego envía una transacción para activarle ese bucle al minero. El minero procesa la transacción, ejecutando de esta manera el bucle infinito, y espera a que se le agote el gas. Aunque la ejecución se quede sin gas y se detenga a la mitad, la transacción sigue siendo válida y el minero todavía cobra la tarifa al atacante por cada paso computacional.
-- Un atacante crea un bucle infinito extremadamente largo para obligar al minero a realizar cálculos durante tanto tiempo que, de manera que cuando termine la computación, aparecen varios bloques más y no es posible que el minero incluya la transacción para reclamar la tarifa. Sin embargo, requiere que el atacante proporcione un valor para `STARTGAS` que limite el número de pasos computacionales que la ejecución puede realizar, motivo por el cual el minero sabe de antemano que la computación lleva un número excesivamente grande de pasos.
-- Un atacante observa un contrato con un código similar a `send(A,contract.storage[A]); contract.storage[A] = 0`, y envía una transacción con el gas justo para ejecutar el primer paso pero no el segundo (es decir, hace una retirada sin que el saldo disminuya). El autor del contrato no se tiene que preocuparse por protegerse contra este tipo de ataques, ya que si la ejecución se detiene a la mitad, los cambios se revierten.
+- Un atacante crea un bucle infinito extremadamente largo para obligar al minero a realizar cálculos durante tanto tiempo que, de manera que cuando termine la computación, aparecen varios bloques más y no es posible que el minero incluya la transacción para reclamar la tarifa. Sin embargo, el atacante deberá presentar un valor para `STARTGAS` que limite el número de pasos computacionales que puede tomar la ejecución, por lo que el minero sabrá de antemano que la computación tomará un número excesivamente grande de pasos.
+- Un atacante ve un contrato con un código de alguna forma como `send(A,contract.storage[A]); contract.storage[A] = 0`, y envía una transacción con el gas justo para ejecutar el primer paso pero no el segundo (es decir, hacer una retirada pero no dejar que el saldo baje). El autor del contrato no se tiene que preocuparse por protegerse contra este tipo de ataques, ya que si la ejecución se detiene a la mitad, los cambios se revierten.
- Un contrato financiero funciona tomando el punto medio de nueve fuentes de datos en propiedad con el objetivo de reducir el riesgo al mínimo. Un atacante toma el control de una de las fuentes de datos, la cual está diseñada para que se modifique mediante el mecanismo de llamada-dirección-variable, descrito en la sección de DAO, y la convierte en un bucle infinito, intentando de esta manera forzar que cualquier intento de reclamar fondos del contrato financiero se quede sin gas. Sin embargo, el contrato financiero puede configurarse limitando el gas en el mensaje para que este problema no suceda.
-La alternativa a la conclusión de Turing es la inconclusión de Turing, donde `JUMP` y `JUMPI` no existen, y donde solo se permite una copia de cada contrato en la pila de llamadas en cualquier momento. Con este sistema, el sistema de tarifas descrito y las incertidumbres en torno a la eficacia de nuestra solución podrían no ser necesarios, ya que el coste de ejecutar un contrato estaría limitado por su tamaño. Además, la Turing incompletitud ni siquiera es una limitación tan significativa; de todos los ejemplos de contratos que hemos concebido internamente, solo uno requería de un bucle hasta el momento, e incluso ese bucle se puede eliminar haciendo 26 repeticiones de una línea de código. Dadas las graves implicaciones de la conclusión de Turing y el beneficio limitado, ¿por qué no basta con tener un lenguaje incompleto de Turing? En la práctica, no obstante, la inconclusión de Turing está lejos de ser la solución perfecta al problema. Examina los siguientes contratos para entender el por qué:
+La alternativa a la completitud de Turing es la incompletitud de Turing, donde `JUMP` y `JUMPI` no existen y solo se permite que exista una copia de cada contrato en la pila de llamadas en un momento dado. Con este sistema, el sistema de tarifas descrito y las incertidumbres en torno a la eficacia de nuestra solución podrían no ser necesarios, ya que el coste de ejecutar un contrato estaría limitado por su tamaño. Además, la Turing incompletitud ni siquiera es una limitación tan significativa; de todos los ejemplos de contratos que hemos concebido internamente, solo uno requería de un bucle hasta el momento, e incluso ese bucle se puede eliminar haciendo 26 repeticiones de una línea de código. Dadas las graves implicaciones de la conclusión de Turing y el beneficio limitado, ¿por qué no basta con tener un lenguaje incompleto de Turing? En la práctica, no obstante, la inconclusión de Turing está lejos de ser la solución perfecta al problema. Examina los siguientes contratos para entender el por qué:
```sh
-C0: llamada(C1); llamada(C1);
-C1: llamada(C2); llamada(C2);
-C2: llamada(C3); llamada(C3);
+C0: call(C1); call(C1);
+C1: call(C2); call(C2);
+C2: call(C3); call(C3);
...
-C49: llamada (C50); llamada(C50);
-C50: (ejecutar un paso de un programa y guardar el cambio en el almacenamiento)
+C49: call(C50); call(C50);
+C50: (ejecutar un paso de un programa y registrar el cambio en el almacenamiento)
```
Ahora, envié una transacción a A. Así, en 51 transacciones, tenemos un contrato que ocupa 250 pasos computacionales. Los mineros pueden intentar detectar este tipo de bombas lógicas con antelación manteniendo un valor junto a cada contrato que especifique el número máximo de pasos computacionales que pueden adoptar, y calculándolo para contratos que llaman recursivamente a otros contratos. Sin embargo, eso requiere que los mineros prohíban contratos que creen otros contratos (ya que la creación y ejecución de los 26 contratos mencionados anteriormente podría integrar fácilmente en un solo contrato). Otro punto problemático es que el campo de dirección de un mensaje es una variable, por lo que, en general, puede que ni siquiera se pueda saber qué otros contratos dentro de un contrato determinado se invocarán antes de tiempo. Por lo tanto y en definitiva, tenemos una conclusión sorprendente: la conclusión de Turing es sorprendentemente fácil de gestionar y la falta de conclusión de Turing también es sorprendentemente dificil de gestionar, a menos que se establezcan exactamente los mismos controles, pero en ese caso ¿por qué no dejar que el protocolo sea completo de Turing?
-### Moneda y emisión monetaria {#currency-and-issuance}
+### Moneda y emisión {#currency-and-issuance}
La red Ethereum incluye su propia moneda incorporada, ether, cuyo propósito consiste tanto en proporcionar una capa de liquidez primaria para permitir un intercambio eficiente entre diversos tipos de activos digitales, como de proporcionar un mecanismo para pagar tarifas de transacción, lo cual es más importante. Por mayor comodidad y para evitar futuras discusiones (como el actual debate sobre mBTC/uBTC/satoshi en Bitcoin), las denominaciones aparecen preetiquetadas:
@@ -450,27 +457,29 @@ El modelo de emisión será el siguiente:
_A pesar de la emisión lineal de moneda, a igual que con Bitcoin, con el tiempo la tasa de crecimiento de la oferta tiende a cero._
-Las dos opciones principales en el modelo anterior son (1) la existencia y el tamaño de un fondo de dotación, y (2) la existencia de una oferta lineal en permanente crecimiento, a diferencia de una oferta limitada como en Bitcoin. La justificación del fondo de dotación es la siguiente. Si el fondo de dotación no existiera, y la emisión lineal se redujera a x 0,217 para proporcionar la misma tasa de inflación, entonces la cantidad total de ether sería un 16,5 % menor y, por lo tanto, cada unidad sería un 19,8 % más valiosa. Por lo tanto, en el equilibrio se compraría un 19,8 % más ether en la venta, por lo que cada unidad volvería a ser exactamente tan valiosa como antes. La organización también tendría entonces 1,198 veces más BTC, que se puede considerar dividido en dos porciones: el BTC original y el 0,198 veces adicional. Por lo tanto, esta situación es _exactamente equivalente_ a la dotación, pero con una diferencia importante: la organización posee solo BTC y, por lo tanto, no está incentivada a respaldar el valor de la unidad de ether.
+Las dos opciones principales en el modelo anterior son (1) la existencia y el tamaño de un fondo de dotación, y (2) la existencia de una oferta lineal en permanente crecimiento, a diferencia de una oferta limitada como en Bitcoin. La justificación del fondo de dotación es la siguiente. Si el fondo de dotación no existiera, y la emisión lineal se redujera a x 0,217 para proporcionar la misma tasa de inflación, entonces la cantidad total de ether sería un 16,5 % menor y, por lo tanto, cada unidad sería un 19,8 % más valiosa. Por lo tanto, en el equilibrio se compraría un 19,8 % más ether en la venta, por lo que cada unidad volvería a ser exactamente tan valiosa como antes. La organización también tendría entonces 1,198 veces más BTC, que se puede considerar dividido en dos porciones: el BTC original y el 0,198 veces adicional. Por lo tanto, esta situación es _exactamente equivalente_ a la dotación, pero con una diferencia importante: la organización posee únicamente BTC, por lo que no tiene incentivos para respaldar el valor de la unidad de ether.
-El modelo de crecimiento lineal permanente de la oferta reduce el riesgo de lo que algunos ven como una concentración excesiva de riqueza de Bitcoin y brinda a las personas que viven en épocas presentes y futuras una oportunidad justa de aquirir unidades monetarias, al mismo tiempo que conserva un fuerte incentivo para obtener y mantener ether, porque la «tasa de crecimiento de la oferta» como porcentaje todavía tiende a cero con el tiempo. También pensamos que debido a que las monedas siempre se pierden con el tiempo a causa de descuidos, fallecimientos, etc., y la pérdida de monedas se puede modelar como un porcentaje de la oferta total por año, la oferta total de moneda en circulación, de hecho, eventualmente se estabilizará en un valor igual a la emisión anual dividida entre la tasa de pérdida (por ejemplo, con una tasa de pérdida de 1%, una vez que la oferta alcance x 26, se extraerá x 0,26 y se perderá x 0,26 cada año, creando un equilibrio).
+El modelo de crecimiento lineal permanente de la oferta reduce el riesgo de lo que algunos ven como una concentración excesiva de riqueza de Bitcoin y brinda a las personas que viven en épocas presentes y futuras una oportunidad justa de aquirir unidades monetarias, al mismo tiempo que conserva un fuerte incentivo para obtener y mantener ether, porque la «tasa de crecimiento de la oferta» como porcentaje todavía tiende a cero con el tiempo. También teorizamos que, como las monedas siempre se pierden con el tiempo por descuido, muerte, etc., y la pérdida de monedas puede modelarse como un porcentaje del suministro total por año, el suministro total de moneda en circulación se estabilizará finalmente en un valor igual a la emisión anual dividida por la tasa de pérdida (p. ej., a una tasa de pérdida del 1 %, una vez que el suministro alcance 26X, se minarán 0,26X y se perderán 0,26X cada año, creando un equilibrio).
-Tenga en cuenta que, en el futuro, es probable que Ethereum cambie a un modelo de prueba de participación por motivos de seguridad, reduciendo el requisito de emisión de entre cero y 0,05 veces por año. En caso de que la organización de Ethereum pierda financiación o por cualquier otro motivo desaparezca, dejamos abierto un «contrato social»: cualquiera tiene derecho a crear una futura versión candidata de Ethereum, con la única condición de que la cantidad de ether sea como máximo igual a `60102216 * (1,198 + 0,26 *n)`donde `n` es el número de años despues del bloque de génesis. Los creadores son libres de realizar ventas colectivas o asignar parte o la totalidad de la diferencia entre la expansión de la oferta impulsada por PoS y la expansión de la oferta máxima permitida para pagar el desarrollo. Las actualizaciones de candidatos que no cumplan con el contrato social pueden, justificadamente, bifurcarse en versiones compatibles.
+Tenga en cuenta que, en el futuro, es probable que Ethereum cambie a un modelo de prueba de participación por motivos de seguridad, reduciendo el requisito de emisión de entre cero y 0,05 veces por año. En el caso de que la organización de Ethereum pierda financiación o desaparezca por cualquier otro motivo, dejamos abierto un "contrato social": cualquiera tiene derecho a crear una futura versión candidata de Ethereum, con la única condición de que la cantidad de ether debe ser como máximo igual a `60102216 * (1,198 + 0,26 * n)` donde `n` es el número de años después del bloque de génesis. Los creadores son libres de realizar ventas colectivas o asignar parte o la totalidad de la diferencia entre la expansión de la oferta impulsada por PoS y la expansión de la oferta máxima permitida para pagar el desarrollo. Las actualizaciones de candidatos que no cumplan con el contrato social pueden, justificadamente, bifurcarse en versiones compatibles.
-### Centralización del minado {#mining-centralization}
+### Centralización de la minería {#mining-centralization}
El algoritmo de míneria de Bitcoin funciona haciendo que los mineros calculen SHA256 en versiones ligeramente modificadas del encabezado del bloque millones de veces una y otra vez, hasta que finalmente un nodo genera una versión cuyo hash es menor que el objetivo (actualmente alrededor de 2192). Sin embargo, este algoritmo de míneria es vulnerable a dos forma de centralización. En primer lugar, el ecosistema minero ha llegado a estar dominado por los ASIC (circuitos integrados de aplicaciones específicas), chips de computadora diseñados para la tarea específica de la minería de Bitcoin y, por lo tanto, miles de veces más eficientes. Esto significa que la minería de Bitcoin ya no es una actividad altamente descentralizada o igualitaria, que requiere millones de dólares de capital para participar efectivamente. En segundo lugar, la mayoría de los míneros de Bitcoin en realidad no realizan la validación de bloques localmente; en cambio, dependen de un grupo de míneria centralizado para proporcionar los encabezados de los bloques. Podría decirse que este problema es peor: al momento de escribir este artículo, los tres grupos principales de míneria controlan indirectamente aproximadamente el 50 % de la potencia de procesamiento en la red de Bitcoin, aunque esto se ve mitigado por el hecho de que los mineros pueden cambiar a otros grupos de míneria si un grupo o coalición intenta un ataque del 51 %.
-La intención actual en Ethereum es utilizar un algoritmo de míneria en el que los mineros deben obtener datos aleatorios del estado, calcular algunas transacciones seleccionadas al azar de los últimos N bloques de la cadena de bloques y devolver el hash del resultado. Esto tiene dos ventajas importantes. En primer lugar, los contratos de Ethereum pueden incluir cualquier tipo de cálculo, por lo que un ASIC de Ethereum sería escencialmente un ASIC para cálculo general, es decir un mejor CPU. En segundo lugar, la míneria requiere acceso a toda la cadena de bloques, lo que obliga a los mineros a almacenar toda la cadena de bloques y al menos ser capaces de verificar cada transacción. Esto elimina la necesidad de grupos de míneria centralizados; aunque las reservas de minería aún pueden desempeñar el papel legítimo de equilibrar la aleatoriedad en la distribución de recompensas, esta función puede ser igualmente cumplida por reservas entre pares sin control central.
+La intención actual en Ethereum es utilizar un algoritmo de míneria en el que los mineros deben obtener datos aleatorios del estado, calcular algunas transacciones seleccionadas al azar de los últimos N bloques de la cadena de bloques y devolver el hash del resultado. Esto tiene dos ventajas importantes. Primero, los contratos de Ethereum pueden incluir cualquier tipo de computación, por lo que un ASIC de Ethereum sería esencialmente un ASIC para la computación general, es decir, una mejor CPU. En segundo lugar, la míneria requiere acceso a toda la cadena de bloques, lo que obliga a los mineros a almacenar toda la cadena de bloques y al menos ser capaces de verificar cada transacción. Esto elimina la necesidad de grupos de míneria centralizados; aunque las reservas de minería aún pueden desempeñar el papel legítimo de equilibrar la aleatoriedad en la distribución de recompensas, esta función puede ser igualmente cumplida por reservas entre pares sin control central.
-Este modelo aún no ha sido probado, y puede haber dificultades a lo largo del camino para evitar ciertas optimizaciones inteligentes cuando se utiliza la ejecución del contrato como algoritmo de minado. Sin embargo, una característica notablemente interesante de este algoritmo es que permite a cualquiera «envenenar el pozo», al introducir un gran número de contratos en la cadena de bloques específicamente diseñados para bloquear ciertos ASIC. Existen incentivos económicos para que los fabricantes de ASIC utilicen un truco así para atacarse mutuamente. Por tanto, la solución que estamos desarrollando es en última instancia, una solución adaptativa humana en vez de una solución puramente técnica.
+Este modelo aún no ha sido probado, y puede haber dificultades a lo largo del camino para evitar ciertas optimizaciones inteligentes cuando se utiliza la ejecución del contrato como algoritmo de minado. Sin embargo, una característica notablemente interesante de este algoritmo
+es que permite a cualquiera «envenenar el pozo», al introducir
+un gran número de contratos en la cadena de bloques específicamente diseñados para bloquear ciertos ASIC. Existen incentivos económicos para que los fabricantes de ASIC utilicen un truco así para atacarse mutuamente. Por tanto, la solución que estamos desarrollando es en última instancia, una solución adaptativa humana en vez de una solución puramente técnica.
### Escalabilidad {#scalability}
Una preocupación común en Ethereum es la cuestión de la escalabilidad. Así como Bitcoin, Ethereum sufre el desperfecto de que cada transaccion debe ser procesada por todos los nodos dentro de la red. Con Bitcoin, el tamaño actual de la cadena de bloques se estima es de alrededor de 15 GB, incrementando su tamaño en alrededor de 1 MB por hora. Si la red de Bitcoin procesara 2.000 transacciones por segundo, crecería entre 1 MB por cada tres segundos (1 GB por hora, 8 TB por año). Es probable que Ethereum sufra un patrón de crecimiento similar, empeorado por el hecho de que habrá muchas aplicaciones funcionando además de la cadena de bloque de Ethereum, en lugar de solo una moneda, como es el caso de Bitcoin, pero mitigado por el hecho de que los nodos completos de Ethereum necesitan almacenar sólo el estado en lugar de todo el historial de la cadena de bloques.
-El problema con un tamaño tan grande de cadena de bloques es el riesgo de centralización. Si el tamaño de la cadena de bloques incrementara, por decir, 100 TB, entonces el posible escenario sería que solo una pequeña parte de los numerosos negocios se ejecurarían por nodos enteros y todos los usuarios utilizarían nodos ligeros SPV. En esta situación, surge el problema potencial de que los nodos completos se unan y acuerden hacer trampas de algún modo rentable (p. ej., cambiando la recompensa por bloque, darse a sí mismos BTC). Los nodos de luz no tendrían forma de detectarlo inmediatamente. Por supuesto, probablemente existiría al menos un nodo completo honesto, y al cabo de unas horas la información sobre el fraude se iría filtrando a través de canales como Reddit, pero llegados a ese punto sería demasiado tarde: correspondería a los usuarios ordinarios organizar un esfuerzo para elaborar una lista negra de dichos bloques, un problema masivo y probablemente no factible de coordinación a una escala similar a la de lograr con éxito un ataque del 51 %. En el caso de Bitcoin, esto es actualmente un problema, pero existe una modificación de la cadena de bloques [propuesta por Peter Todd](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/) que mitigará este problema.
+El problema con un tamaño tan grande de cadena de bloques es el riesgo de centralización. Si el tamaño de la cadena de bloques incrementara, por decir, 100 TB, entonces el posible escenario sería que solo una pequeña parte de los numerosos negocios se ejecurarían por nodos enteros y todos los usuarios utilizarían nodos ligeros SPV. En tal situación, surge la preocupación potencial de que los nodos completos puedan unirse y acordar hacer trampas de alguna manera rentable (p. ej., cambiar la recompensa de bloque, darse a sí mismos BTC). Los nodos de luz no tendrían forma de detectarlo inmediatamente. Por supuesto, probablemente existiría al menos un nodo completo honesto, y al cabo de unas horas la información sobre el fraude se iría filtrando a través de canales como Reddit, pero llegados a ese punto sería demasiado tarde: correspondería a los usuarios ordinarios organizar un esfuerzo para elaborar una lista negra de dichos bloques, un problema masivo y probablemente no factible de coordinación a una escala similar a la de lograr con éxito un ataque del 51 %. En el caso de Bitcoin, esto es actualmente un problema, pero existe una modificación de la cadena de bloques [sugerida por Peter Todd](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/) que aliviará este problema.
-A corto plazo, Ethereum utilizará dos estrategias adicionales para hacer frente a este problema. Primera, dados los algoritmos de minado basados en la cadena de bloque, todos y cada uno de los mineros estarán obligados a ser nodos completos, creando un límite inferior en el número de nodos completos. Segunda —y sin embargo, más importante—, incluiremos una raíz del árbol de estado intermedio en la cadena de bloques después de procesar cada transacción. Incluso si la validación del bloque está centralizada, siempre y cuando exista un nodo de verificación honesto, el problema de la centralización se puede eludir a través de un protocolo de verificación. Si un minero publica un bloque no válido, ese bloque debe tener un mal formato o el estado `S[n]` es incorrecto. Dado que se sabe que `S[0]` es correcto, debe haber algún primer estado `S[i]` que sea incorrecto donde `S[i-1]` sea correcto. El nodo de verificación proporcionaría el índice `i`, junto con una «prueba de invalidez» que consiste en el subconjunto de nodos del árbol Patricia que necesitan procesar `APPLY(S[i-1],TX[i]) -> S[i]`. Los nodos podrían usar esos nodos para ejecutar esa parte del cálculo, y ver que el `S[i]` generado no coincide con el `S[i]` proporcionado.
+A corto plazo, Ethereum utilizará dos estrategias adicionales para hacer frente a este problema. Primera, dados los algoritmos de minado basados en la cadena de bloque, todos y cada uno de los mineros estarán obligados a ser nodos completos, creando un límite inferior en el número de nodos completos. Segunda —y sin embargo, más importante—, incluiremos una raíz del árbol de estado intermedio en la cadena de bloques después de procesar cada transacción. Incluso si la validación del bloque está centralizada, siempre y cuando exista un nodo de verificación honesto, el problema de la centralización se puede eludir a través de un protocolo de verificación. Si un minero publica un bloque no válido, ese bloque debe estar mal formateado o el estado `S[n]` es incorrecto. Dado que se sabe que `S[0]` es correcto, debe haber un primer estado `S[i]` que sea incorrecto donde `S[i-1]` sea correcto. El nodo de verificación proporcionaría el índice `i`, junto con una "prueba de invalidez" que consiste en el subconjunto de nodos del árbol de Patricia necesarios para procesar `APPLY(S[i-1],TX[i]) -> S[i]`. Los nodos podrían usar esos nodos para ejecutar esa parte del cálculo y ver que el `S[i]` generado no coincide con el `S[i]` proporcionado.
Otro ataque más sofisticado implicaría que los mineros maliciosos publiquen bloques incompletos, por lo que la información completa ni siquiera existe para determinar si los bloques son válidos o no. La solución a esto es un protocolo de desafío-respuesta: los nodos de verificación emiten «desafíos» en forma de índices de transacción objetivo, y al recibir un nodo, un nodo ligero trata el bloque como no fiable hasta que otro nodo, ya sea el minero u otro verificador, proporcione un subconjunto de nodos Patricia como prueba de validez.
@@ -488,18 +497,18 @@ El concepto de una función de transición de estado arbitraria implementada por
2. Técnicamente, el punto medio de los 11 bloques anteriores.
3. Internamente, 2 y «CHARLIE» son ambos números[fn3](#notes), estando estos últimos almacenados en representación base 256 "big-endian". Los números pueden ser como mínimo 0 y como máximo 2256-1.
-### Más información {#further-reading}
+### Lecturas recomendadas {#further-reading}
-1. [Valor intrínseco](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/)
+1. [Valor intrínseco](https://bitcoinmagazine.com/culture/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it)
2. [Propiedad inteligente](https://en.bitcoin.it/wiki/Smart_Property)
3. [Contratos inteligentes](https://en.bitcoin.it/wiki/Contracts)
4. [B-money](http://www.weidai.com/bmoney.txt)
5. [Pruebas de trabajo reutilizables](https://nakamotoinstitute.org/finney/rpow/)
-6. [Títulos de propiedad seguros con autoridad del propietario](https://nakamotoinstitute.org/secure-property-titles/)
-7. [Informe de Bitcoin](http://bitcoin.org/bitcoin.pdf)
+6. [Títulos de propiedad seguros con autoridad del propietario](https://nakamotoinstitute.org/library/secure-property-titles/)
+7. [Libro blanco de Bitcoin](http://bitcoin.org/bitcoin.pdf)
8. [Namecoin](https://namecoin.org/)
9. [Triángulo de Zooko](https://wikipedia.org/wiki/Zooko's_triangle)
-10. [Informe de monedas de color](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)
+10. [Informe de monedas coloreadas](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)
11. [Informe de Mastercoin](https://github.com/mastercoin-MSC/spec)
12. [Corporaciones autónomas descentralizadas, Bitcoin Magazine](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/)
13. [Verificación de pago simplificada](https://en.bitcoin.it/wiki/Scalability#Simplified_payment_verification)
@@ -507,11 +516,11 @@ El concepto de una función de transición de estado arbitraria implementada por
15. [Árboles de Patricia](https://wikipedia.org/wiki/Patricia_tree)
16. [GHOST](https://eprint.iacr.org/2013/881.pdf)
17. [StorJ y agentes autónomos, Jeff Garzik](http://garzikrants.blogspot.ca/2013/01/storj-and-bitcoin-autonomous-agents.html)
-18. [Mike Hearn, sobre propiedad inteligente en Turing Festival](https://www.youtube.com/watch?v=MVyv4t0OKe4)
-19. [RLP en Ethereum](https://web.archive.org/web/20250427212320/https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP)
-20. [Árboles de Merkle y Patricia en Ethereum](https://web.archive.org/web/20250427212320/https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree)
-21. [Peter Todd sobre los árboles de suma Merkle](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/)
+18. [Mike Hearn sobre la propiedad inteligente en el Turing Festival](https://www.youtube.com/watch?v=MVyv4t0OKe4)
+19. [RLP de Ethereum](/developers/docs/data-structures-and-encoding/rlp/)
+20. [Árboles Merkle Patricia de Ethereum](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/)
+21. [Peter Todd sobre los árboles de suma de Merkle](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/)
-_Para consultar el historial del informe, ver [este enlace](https://web.archive.org/web/20250427212319/https://github.com/ethereum/wiki/blob/old-before-deleting-all-files-go-to-wiki-wiki-instead/old-whitepaper-for-historical-reference.md)._
+_Para la historia del informe, consulte [este wiki](https://web.archive.org/web/20250427212319/https://github.com/ethereum/wiki/blob/old-before-deleting-all-files-go-to-wiki-wiki-instead/old-whitepaper-for-historical-reference.md)._
-_Ethereum, al igual que muchos proyectos de software de código abierto impulsados por la comunidad, ha evolucionado desde su concepción inicial. Para aprender sobre los últimos desarrollos de Ethereum, y cómo se hacen los cambios en el protocolo, recomendamos [esta guía](/learn/)._
+_Ethereum, al igual que muchos proyectos de software de código abierto impulsados por la comunidad, ha evolucionado desde su concepción inicial. Para obtener más información sobre los últimos desarrollos de Ethereum y cómo se realizan los cambios en el protocolo, le recomendamos [esta guía](/learn/)._
From 6025ccda76f03e55e81915ecc9671a0978252951 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:21 -0300
Subject: [PATCH 281/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/anatomy/index.md
---
.../docs/smart-contracts/anatomy/index.md | 347 +++++++++---------
1 file changed, 173 insertions(+), 174 deletions(-)
diff --git a/public/content/translations/es/developers/docs/smart-contracts/anatomy/index.md b/public/content/translations/es/developers/docs/smart-contracts/anatomy/index.md
index 3fe2a2ba75d..018042025e0 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/anatomy/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/anatomy/index.md
@@ -1,6 +1,6 @@
---
title: Anatomía de los contratos inteligentes
-description: 'Una mirada en profundidad a la anatomía de un contacto inteligente: Sus funciones, datos y variables.'
+description: "Una mirada en profundidad a la anatomía de un contacto inteligente: Sus funciones, datos y variables."
lang: es
---
@@ -8,20 +8,20 @@ Un contrato inteligente es un programa que se ejecuta en una dirección en Ether
## Requisitos previos {#prerequisites}
-Asegúrate de haber leído primero la documentación sobre los [contratos inteligentes](/developers/docs/smart-contracts/). Este documento asume que ya estás familiarizado con lenguajes de programación como JavaScript o Python.
+Asegúrese de haber leído primero sobre los [contratos inteligentes](/developers/docs/smart-contracts/). Este documento asume que ya estás familiarizado con lenguajes de programación como JavaScript o Python.
## Datos {#data}
-Cualquier dato del contrato debe asignarse a una ubicación: ya sea a `almacenamiento` o `memoria`. Es costoso modificar el almacenamiento en un contrato inteligente, por lo que debes considerar dónde deben ubicarse sus datos.
+Cualquier dato del contrato debe asignarse a una ubicación: ya sea a `storage` o `memory`. Es costoso modificar el almacenamiento en un contrato inteligente, por lo que debes considerar dónde deben ubicarse sus datos.
### Almacenamiento {#storage}
Los datos persistentes se denominan almacenamiento y se representan por variables de estado. Estos valores se almacenan permanentemente en la blockchain. Necesitas declarar el tipo de dato para que el contrato pueda llevar un seguimiento de la cantidad de almacenamiento en la blockchain que se necesitará cuando compile.
```solidity
-// ejemplo de Solidity
+// Ejemplo de Solidity
contract SimpleStorage {
- uint storedData; // variable de estado
+ uint storedData; // Variable de estado
// ...
}
```
@@ -31,9 +31,9 @@ contract SimpleStorage {
storedData: int128
```
-Si ya has utilizado lenguajes de programación orientados a objetos, probablemente estarás familiarizado con la mayoría de tipos de datos. Sin embargo, la `dirección` debe ser nueva para ti si eres nuevo en el desarrollo de Ethereum.
+Si ya has utilizado lenguajes de programación orientados a objetos, probablemente estarás familiarizado con la mayoría de tipos de datos. Sin embargo, `address` debería ser nuevo para usted si es nuevo en el desarrollo de Ethereum.
-Una variable de tipo `dirección ` puede contener una dirección de Ethereum que equivale a 20 bytes o 160 bits. Devuelve en notación hexadecimal con un 0x al inicio.
+Un tipo `address` puede contener una dirección de Ethereum que equivale a 20 bytes o 160 bits. Devuelve en notación hexadecimal con un 0x al inicio.
Otros tipos de variables incluyen:
@@ -42,21 +42,21 @@ Otros tipos de variables incluyen:
- números de punto fijo
- matrices de bytes de punto fijo
- matrices de bytes de tamaño dinámico
-- Literales de tipo real, racional o integradores
-- Literales de cadenas de caracteres
-- Literales en base hexadecimal
-- Enumeraciones
+- literales racionales y enteros
+- literales de cadena
+- literales hexadecimales
+- enums
Para más explicación, echa un vistazo a la documentación:
-- [Ver los de tipo Vyper](https://vyper.readthedocs.io/en/v0.1.0-beta.6/types.html#value-types)
-- [Ver los de tipo Solidity](https://solidity.readthedocs.io/en/latest/types.html#value-types)
+- [Ver tipos de Vyper](https://docs.vyperlang.org/en/v0.1.0-beta.6/types.html#value-types)
+- [Ver tipos de Solidity](https://docs.soliditylang.org/en/latest/types.html#value-types)
### Memoria {#memory}
Los valores que sólo se almacenan durante la vida útil de la ejecución de una función de contrato se llaman variables de memoria. Dado que estos no se almacenan permanentemente en la blockchain, son mucho más baratos de usar.
-Obtén más información sobre cómo la EVM almacena datos (almacenamiento, memoria y pila) en la [documentación de Solidity](https://solidity.readthedocs.io/en/latest/introduction-to-smart-contracts.html?highlight=memory#storage-memory-and-the-stack).
+Obtenga más información sobre cómo la EVM almacena los datos (almacenamiento, memoria y pila) en los [documentos de Solidity](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#storage-memory-and-the-stack).
### Variables de entorno {#environment-variables}
@@ -64,9 +64,9 @@ Además de las variables que se definen en su contrato, hay algunas variables gl
Ejemplos:
-| **Propiedad** | **Variable de estado** | **Descripción** |
-| ----------------- | ---------------------- | -------------------------------------- |
-| `block.timestamp` | uint256 | Marca de tiempo del bloque actual |
+| **Propiedad** | **Variable de estado** | **Descripción** |
+| ----------------- | ---------------------- | --------------------------------------------------------- |
+| `block.timestamp` | uint256 | Marca de tiempo del bloque actual |
| `msg.sender` | dirección | Remitente del mensaje (llamada actual) |
## Funciones {#functions}
@@ -75,15 +75,15 @@ De una forma simplista, las funciones pueden obtener información o establecer i
Existen dos tipos de llamadas de funciones:
-- `Internas`: Estas no crean una llamada a la EVM.
- - Solo se puede acceder a las funciones internas y a las variables de estado internamente (es decir, desde el contrato actual o los contratos que derivan de él)
-- `Externas`: Estas crean una llamada a la EVM.
- - Las funciones externas forman parte de la interfaz del contrato, lo que significa que se pueden llamar desde otros contratos y a través de transacciones. Una función externa `f` no puede llamarse internamente (es decir, `f()` no funciona, pero `this.f()` funciona).
+- `internal`: estas no crean una llamada a la EVM
+ - Solo se puede acceder a las funciones y variables de estado internas desde dentro (es decir, desde el contrato actual o los contratos que se deriven de él)
+- `external`: estas sí crean una llamada a la EVM
+ - Las funciones externas forman parte de la interfaz del contrato, lo que significa que se pueden llamar desde otros contratos y a través de transacciones. Una función externa `f` no se puede llamar internamente (es decir, `f()` no funciona, pero `this.f()` sí).
-También pueden ser `públicas` o `privadas`.
+También pueden ser `public` o `private`
-- las funciones `públicas` pueden llamarse internamente desde dentro del contrato o externamente a través de mensajes
-- las funciones `privadas` solo son visibles para el contrato en el que están definidas y no en contratos derivados
+- Las funciones `public` se pueden llamar internamente desde el contrato o externamente a través de mensajes
+- Las funciones `private` solo son visibles para el contrato en el que se definen y no para los contratos derivados
Tanto las funciones como las variables de estado pueden hacerse públicas o privadas.
@@ -96,11 +96,11 @@ function update_name(string value) public {
}
```
-- El parámetro `valor` del tipo `string` se transfiere a la función: `update_name`
-- Se declara `pública`, lo que significa que cualquiera puede acceder a ella.
-- No está declarada `view` para solo lectura, por lo que puede modificar el estado del contrato.
+- El parámetro `value` de tipo `string` se pasa a la función: `update_name`
+- Se declara como `public`, lo que significa que cualquiera puede acceder a ella
+- No se declara como `view`, por lo que puede modificar el estado del contrato
-### Funciones de visualización {#view-functions}
+### Funciones de vista {#view-functions}
Estas funciones no modifican el estado de los datos del contrato. Ejemplos comunes son las funciones "getter", que se pueden utilizar para recibir el saldo o balance de un usuario, por ejemplo.
@@ -123,26 +123,26 @@ def readName() -> string:
Qué se considera modificar un estado:
1. Escribir a variables de estado.
-2. [Emisión de eventos](https://solidity.readthedocs.io/en/v0.7.0/contracts.html#events).
-3. [Creando otros contratos](https://solidity.readthedocs.io/en/v0.7.0/control-structures.html#creating-contracts).
-4. Usar la variable `selfdestruct`.
+2. [Emisión de eventos](https://docs.soliditylang.org/en/v0.7.0/contracts.html#events).
+3. [Creación de otros contratos](https://docs.soliditylang.org/en/v0.7.0/control-structures.html#creating-contracts).
+4. Uso de `selfdestruct`.
5. Enviae ethers mediante llamadas.
-6. Llamar a cualquier función no marcada como sólo lectura `view` o `pure`.
+6. Llamar a cualquier función no marcada como `view` o `pure`.
7. Usar llamadas de bajo nivel.
8. Utilizando un ensamblaje en línea que contiene ciertos códigos de operador.
-### Funciones de constructor {#constructor-functions}
+### Funciones constructoras {#constructor-functions}
-Las funciones `constructor` solo se ejecutan una vez cuando el contrato es implementado por primera vez. Al igual que ocurre con `constructor` en muchos otros lenguajes de programación basados en clases, estas funciones a menudo inicializan variables de estado a sus valores especificados.
+Las funciones `constructor` solo se ejecutan una vez cuando el contrato se implementa por primera vez. Al igual que `constructor` en muchos lenguajes de programación basados en clases, estas funciones a menudo inicializan las variables de estado con sus valores especificados.
```solidity
// Ejemplo de Solidity
-// Inicializa los datos del contrato, estableciendo el `propietario`
-// Establece la dirección del creador del contrato
+// Inicializa los datos del contrato, estableciendo el `owner`
+// a la dirección del creador del contrato.
constructor() public {
// Todos los contratos inteligentes dependen de transacciones externas para activar sus funciones.
- // `msg` es una variable global que incluye datos relevantes en la transacción dada,
- // tales como la dirección del remitente y el valor ETH incluido en la transacción.
+ // `msg` es una variable global que incluye datos relevantes sobre la transacción dada,
+ // como la dirección del remitente y el valor de ETH incluido en la transacción.
// Más información: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties
owner = msg.sender;
}
@@ -158,16 +158,16 @@ def __init__(_beneficiary: address, _bidding_time: uint256):
self.auctionEnd = self.auctionStart + _bidding_time
```
-### Funciones integradas {#built-in-functions}
+### Funciones incorporadas {#built-in-functions}
Además de las variables y funciones que define en su contrato, hay algunas funciones especiales integradas. El ejemplo más obvio es:
-- `address.send()`: Solidity
+- `address.send()` – Solidity
- `send(address)` – Vyper
Esto permite que los contratos envíen ETH a otras cuentas.
-## Funciones de escritura {#writing-functions}
+## Escribir funciones {#writing-functions}
Su función necesita:
@@ -180,19 +180,19 @@ Su función necesita:
pragma solidity >=0.4.0 <=0.6.0;
contract ExampleDapp {
- string dapp_name; // state variable
+ string dapp_name; // variable de estado
- // Called when the contract is deployed and initializes the value
+ // Se llama cuando el contrato se implementa e inicializa el valor
constructor() public {
- dapp_name = "My Example dapp";
+ dapp_name = "Mi dapp de ejemplo";
}
- // Get Function
+ // Función Get
function read_name() public view returns(string) {
return dapp_name;
}
- // Set Function
+ // Función Set
function update_name(string value) public {
dapp_name = value;
}
@@ -207,34 +207,34 @@ Los eventos permiten que su contrato inteligente se comunique con su interfaz o
## Ejemplos anotados {#annotated-examples}
-Estos son algunos ejemplos escritos en Solidity. Si quiere experimentar con el código, puede interactuar con ellos en [Remix](http://remix.ethereum.org).
+Estos son algunos ejemplos escritos en Solidity. Si le gustaría jugar con el código, puede interactuar con ellos en [Remix](http://remix.ethereum.org).
-### Hello World {#hello-world}
+### Hola, mundo {#hello-world}
```solidity
-// Especifica la versión de Solidity, utilizando la versión semántica.
-// Más información: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragmma
+// Especifica la versión de Solidity, usando un versionado semántico.
+// Más información: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
pragma solidity ^0.5.10;
// Define un contrato llamado `HelloWorld`.
// Un contrato es una colección de funciones y datos (su estado).
-// Una vez desplegado, un contrato reside en una dirección específica en la blockchain de Ethereum.
+// Una vez implementado, un contrato reside en una dirección específica de la cadena de bloques de Ethereum.
// Más información: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
contract HelloWorld {
- // Declara una variable de estado `message` del tipo `string`.
+ // Declara una variable de estado `message` de tipo `string`.
// Las variables de estado son variables cuyos valores se almacenan permanentemente en el almacenamiento del contrato.
// La palabra clave `public` hace que las variables sean accesibles desde fuera de un contrato
- // y crea una función que otros contratos o clientes pueden llamar para acceder al valor.
+ // y crea una función a la que otros contratos o clientes pueden llamar para acceder al valor.
string public message;
- // Similar a muchos idiomas orientados a objetos basados en clases, un constructor es
- // una función especial que sólo se ejecuta cuando se crea un contrato.
+ // Al igual que en muchos lenguajes de programación orientados a objetos basados en clases, un constructor es
+ // una función especial que solo se ejecuta en la creación del contrato.
// Los constructores se utilizan para inicializar los datos del contrato.
- // Más información: https://solidity.readthedocs.io/es/v0.5.10/contracts. tml#constructors
+ // Más información: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
constructor(string memory initMessage) public {
// Acepta un argumento de cadena `initMessage` y establece el valor
- // en la variable de almacenamiento `message` del contrato).
+ // en la variable de almacenamiento `message` del contrato.
message = initMessage;
}
@@ -252,54 +252,54 @@ contract HelloWorld {
pragma solidity ^0.5.10;
contract Token {
- // Una `dirección` es comparable a una dirección de correo electrónico - se usa para identificar una cuenta en Ethereum.
- // Direcciones pueden representar un contrato inteligente o una cuenta externa (de usuario).
+ // Una `address` es comparable a una dirección de correo electrónico; se utiliza para identificar una cuenta en Ethereum.
+ // Las direcciones pueden representar un contrato inteligente o cuentas externas (de usuario).
// Más información: https://solidity.readthedocs.io/en/v0.5.10/types.html#address
address public owner;
- // Un `mapping` es esencialmente una estructura de datos de tabla hash.
- // Este `mapping` asigna un entero sin signo (el saldo del token) a una dirección (el titular del token).
+ // Un `mapping` es, esencialmente, una estructura de datos de tabla de hash.
+ // Este `mapping` asigna un número entero sin signo (el saldo del token) a una dirección (el poseedor del token).
// Más información: https://solidity.readthedocs.io/en/v0.5.10/types.html#mapping-types
mapping (address => uint) public balances;
- // Los eventos permiten registrar la actividad en la blockchain.
+ // Los eventos permiten registrar la actividad en la cadena de bloques.
// Los clientes de Ethereum pueden escuchar eventos para reaccionar a los cambios de estado del contrato.
- // Más información: https://solidity.readthedocs.io/es/v0.5.10/contracts. tml#events
+ // Más información: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#events
event Transfer(address from, address to, uint amount);
- // Inicializa los datos del contrato establecer el `dueño`
+ // Inicializa los datos del contrato, estableciendo el `owner`
// a la dirección del creador del contrato.
constructor() public {
- // Todos los contratos inteligentes dependen de transacciones externas para activar sus funciones.
- // `msg` es una variable global que incluye datos relevantes en la transacción dada,
- // tales como la dirección del remitente y el valor ETH incluido en la transacción.
+ // Todos los contratos inteligentes dependen de transacciones externas para activar sus funciones.
+ // `msg` es una variable global que incluye datos relevantes sobre la transacción dada,
+ // como la dirección del remitente y el valor de ETH incluido en la transacción.
// Más información: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties
owner = msg.sender;
}
// Crea una cantidad de nuevos tokens y los envía a una dirección.
function mint(address receiver, uint amount) public {
- // `requiere` es una estructura de control utilizada para hacer cumplir ciertas condiciones.
- // Si una instrucción `require` evalúa a `falso`, se activa una excepción,
- // la cual revierte todos los cambios realizados en el estado durante la llamada actual.
+ // `require` es una estructura de control que se utiliza para aplicar ciertas condiciones.
+ // Si una declaración `require` se evalúa como `false`, se activa una excepción,
+ // que revierte todos los cambios realizados en el estado durante la llamada actual.
// Más información: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions
- // Sólo el propietario del contrato puede llamar a esta función
- require(msg.sender == owner, "You are not the owner.");
+ // Solo el propietario del contrato puede llamar a esta función
+ require(msg.sender == owner, "Usted no es el propietario.");
- // Impone una cantidad máxima de tokens
- require(amount < 1e60, "Maximum issuance exceeded");
+ // Aplica una cantidad máxima de tokens
+ require(amount < 1e60, "Se superó la emisión máxima");
- // Aumenta el saldo del `receiver` en `amount`.
+ // Aumenta el saldo de `receiver` en `amount`
balances[receiver] += amount;
}
- // Envía una cantidad de tokens existentes de cualquier llamante a una dirección.
+ // Envía una cantidad de tokens existentes desde cualquier llamador a una dirección.
function transfer(address receiver, uint amount) public {
// El remitente debe tener suficientes tokens para enviar
- require(amount <= balances[msg.sender], "Insufficient balance.");
+ require(amount <= balances[msg.sender], "Saldo insuficiente.");
- // Ajusta el saldo del token de las dos direcciones
+ // Ajusta los saldos de tokens de las dos direcciones
balances[msg.sender] -= amount;
balances[receiver] += amount;
@@ -314,75 +314,74 @@ contract Token {
```solidity
pragma solidity ^0.5.10;
-// Importa símbolos de otros archivos al contrato actual.
+// Importa símbolos de otros archivos en el contrato actual.
// En este caso, una serie de contratos de ayuda de OpenZeppelin.
-// Learn more: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#importing-other-source-files
+// Más información: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#importing-other-source-files
import "../node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol";
import "../node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
import "../node_modules/@openzeppelin/contracts/introspection/ERC165.sol";
import "../node_modules/@openzeppelin/contracts/math/SafeMath.sol";
-// The `is` keyword is used to inherit functions and keywords from external contracts.
+// La palabra clave `is` se utiliza para heredar funciones y palabras clave de contratos externos.
// En este caso, `CryptoPizza` hereda de los contratos `IERC721` y `ERC165`.
// Más información: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#inheritance
contract CryptoPizza is IERC721, ERC165 {
// Utiliza la librería SafeMath de OpenZeppelin para realizar operaciones aritméticas de forma segura.
- // Más información:
-https://docs.openzeppelin.com/contracts/3. /api/math#SafeMath
+ // Más información: https://docs.openzeppelin.com/contracts/2.x/api/math#SafeMath
using SafeMath for uint256;
- // Las variables de estado constantes en Solidity son similares a otros idiomas
- // pero debe asignar desde una expresión que es constante en el momento de compilar.
- // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constant-state-variables
+ // Las variables de estado constantes en Solidity son similares a las de otros lenguajes,
+ // pero debe asignarlas desde una expresión que sea constante en tiempo de compilación.
+ // Más información: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constant-state-variables
uint256 constant dnaDigits = 10;
uint256 constant dnaModulus = 10 ** dnaDigits;
bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;
- // Struct types let you define your own type
- // Learn more: https://solidity.readthedocs.io/en/v0.5.10/types.html#structs
+ // Los tipos de estructura le permiten definir su propio tipo
+ // Más información: https://solidity.readthedocs.io/en/v0.5.10/types.html#structs
struct Pizza {
string name;
uint256 dna;
}
- // Creates an empty array of Pizza structs
+ // Crea una matriz vacía de estructuras de Pizza
Pizza[] public pizzas;
- // Mapping from pizza ID to its owner's address
+ // Mapeo del ID de la pizza a la dirección de su propietario
mapping(uint256 => address) public pizzaToOwner;
- // Mapping from owner's address to number of owned token
+ // Mapeo de la dirección del propietario al número de tokens que posee
mapping(address => uint256) public ownerPizzaCount;
- // Mapping from token ID to approved address
+ // Mapeo del ID del token a la dirección aprobada
mapping(uint256 => address) pizzaApprovals;
- // You can nest mappings, this example maps owner to operator approvals
+ // Puede anidar mapeos, este ejemplo mapea al propietario a las aprobaciones del operador
mapping(address => mapping(address => bool)) private operatorApprovals;
- // Internal function to create a random Pizza from string (name) and DNA
+ // Función interna para crear una Pizza aleatoria a partir de una cadena (nombre) y un ADN
function _createPizza(string memory _name, uint256 _dna)
- // The `internal` keyword means this function is only visible
- // within this contract and contracts that derive this contract
- // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#visibility-and-getters
+ // La palabra clave `internal` significa que esta función solo es visible
+ // dentro de este contrato y de los contratos que derivan de este
+ // Más información: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#visibility-and-getters
internal
- // `isUnique` is a function modifier that checks if the pizza already exists
- // Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html#function-modifiers
+ // `isUnique` es un modificador de función que comprueba si la pizza ya existe
+ // Más información: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html#function-modifiers
isUnique(_name, _dna)
{
- // Adds Pizza to array of Pizzas and get id
+ // Añade una pizza a la matriz de pizzas y obtiene el ID
uint256 id = SafeMath.sub(pizzas.push(Pizza(_name, _dna)), 1);
- // Checks that Pizza owner is the same as current user
- // Learn more: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions
+ // Comprueba que el propietario de la pizza es el mismo que el usuario actual
+ // Más información: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions
- // note that address(0) is the zero address,
- // indicating that pizza[id] is not yet allocated to a particular user.
+ // tenga en cuenta que address(0) es la dirección cero,
+ // lo que indica que pizza[id] aún no está asignada a un usuario en particular.
assert(pizzaToOwner[id] == address(0));
- // Maps the Pizza to the owner
+ // Mapea la pizza al propietario
pizzaToOwner[id] = msg.sender;
ownerPizzaCount[msg.sender] = SafeMath.add(
ownerPizzaCount[msg.sender],
@@ -390,38 +389,38 @@ https://docs.openzeppelin.com/contracts/3. /api/math#SafeMath
);
}
- // Creates a random Pizza from string (name)
+ // Crea una pizza aleatoria a partir de una cadena (nombre)
function createRandomPizza(string memory _name) public {
uint256 randDna = generateRandomDna(_name, msg.sender);
_createPizza(_name, randDna);
}
- // Generates random DNA from string (name) and address of the owner (creator)
+ // Genera un ADN aleatorio a partir de una cadena (nombre) y la dirección del propietario (creador)
function generateRandomDna(string memory _str, address _owner)
public
- // Functions marked as `pure` promise not to read from or modify the state
- // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#pure-functions
+ // Las funciones marcadas como `pure` prometen no leer ni modificar el estado
+ // Más información: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#pure-functions
pure
returns (uint256)
{
- // Generates random uint from string (name) + address (owner)
+ // Genera un uint aleatorio a partir de una cadena (nombre) + dirección (propietario)
uint256 rand = uint256(keccak256(abi.encodePacked(_str))) +
uint256(_owner);
rand = rand % dnaModulus;
return rand;
}
- // Returns array of Pizzas found by owner
+ // Devuelve una matriz de pizzas encontradas por el propietario
function getPizzasByOwner(address _owner)
public
- // Functions marked as `view` promise not to modify state
- // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#view-functions
+ // Las funciones marcadas como `view` prometen no modificar el estado
+ // Más información: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#view-functions
view
returns (uint256[] memory)
{
- // Uses the `memory` storage location to store values only for the
- // lifecycle of this function call.
- // Learn more: https://solidity.readthedocs.io/en/v0.5.10/introduction-to-smart-contracts.html#storage-memory-and-the-stack
+ // Utiliza la ubicación de almacenamiento `memory` para almacenar valores solo durante
+ // el ciclo de vida de esta llamada de función.
+ // Más información: https://solidity.readthedocs.io/en/v0.5.10/introduction-to-smart-contracts.html#storage-memory-and-the-stack
uint256[] memory result = new uint256[](ownerPizzaCount[_owner]);
uint256 counter = 0;
for (uint256 i = 0; i < pizzas.length; i++) {
@@ -433,28 +432,28 @@ https://docs.openzeppelin.com/contracts/3. /api/math#SafeMath
return result;
}
- // Transfers Pizza and ownership to other address
+ // Transfiere la pizza y la propiedad a otra dirección
function transferFrom(address _from, address _to, uint256 _pizzaId) public {
- require(_from != address(0) && _to != address(0), "Invalid address.");
- require(_exists(_pizzaId), "Pizza does not exist.");
- require(_from != _to, "Cannot transfer to the same address.");
- require(_isApprovedOrOwner(msg.sender, _pizzaId), "Address is not approved.");
+ require(_from != address(0) && _to != address(0), "Dirección no válida.");
+ require(_exists(_pizzaId), "La pizza no existe.");
+ require(_from != _to, "No se puede transferir a la misma dirección.");
+ require(_isApprovedOrOwner(msg.sender, _pizzaId), "La dirección no está aprobada.");
ownerPizzaCount[_to] = SafeMath.add(ownerPizzaCount[_to], 1);
ownerPizzaCount[_from] = SafeMath.sub(ownerPizzaCount[_from], 1);
pizzaToOwner[_pizzaId] = _to;
- // Emits event defined in the imported IERC721 contract
+ // Emite el evento definido en el contrato IERC721 importado
emit Transfer(_from, _to, _pizzaId);
_clearApproval(_to, _pizzaId);
}
/**
- * Safely transfers the ownership of a given token ID to another address
- * If the target address is a contract, it must implement `onERC721Received`,
- * which is called upon a safe transfer, and return the magic value
+ * Transfiere de forma segura la propiedad de un ID de token determinado a otra dirección
+ * Si la dirección de destino es un contrato, debe implementar `onERC721Received`,
+ * que se llama en una transferencia segura, y devuelve el valor mágico
* `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`;
- * otherwise, the transfer is reverted.
+ * de lo contrario, la transferencia se revierte.
*/
function safeTransferFrom(address from, address to, uint256 pizzaId)
public
@@ -464,11 +463,11 @@ https://docs.openzeppelin.com/contracts/3. /api/math#SafeMath
}
/**
- * Safely transfers the ownership of a given token ID to another address
- * If the target address is a contract, it must implement `onERC721Received`,
- * which is called upon a safe transfer, and return the magic value
+ * Transfiere de forma segura la propiedad de un ID de token determinado a otra dirección
+ * Si la dirección de destino es un contrato, debe implementar `onERC721Received`,
+ * que se llama en una transferencia segura, y devuelve el valor mágico
* `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`;
- * otherwise, the transfer is reverted.
+ * de lo contrario, la transferencia se revierte.
*/
function safeTransferFrom(
address from,
@@ -477,12 +476,12 @@ https://docs.openzeppelin.com/contracts/3. /api/math#SafeMath
bytes memory _data
) public {
this.transferFrom(from, to, pizzaId);
- require(_checkOnERC721Received(from, to, pizzaId, _data), "Must implement onERC721Received.");
+ require(_checkOnERC721Received(from, to, pizzaId, _data), "Debe implementar onERC721Received.");
}
/**
- * Internal function to invoke `onERC721Received` on a target address
- * The call is not executed if the target address is not a contract
+ * Función interna para invocar `onERC721Received` en una dirección de destino
+ * La llamada no se ejecuta si la dirección de destino no es un contrato
*/
function _checkOnERC721Received(
address from,
@@ -503,13 +502,13 @@ https://docs.openzeppelin.com/contracts/3. /api/math#SafeMath
return (retval == _ERC721_RECEIVED);
}
- // Burns a Pizza - destroys Token completely
- // The `external` function modifier means this function is
- // part of the contract interface and other contracts can call it
+ // Quema una pizza: destruye el token por completo
+ // El modificador de función `external` significa que esta función forma
+ // parte de la interfaz del contrato y otros contratos pueden llamarla
function burn(uint256 _pizzaId) external {
- require(msg.sender != address(0), "Invalid address.");
- require(_exists(_pizzaId), "Pizza does not exist.");
- require(_isApprovedOrOwner(msg.sender, _pizzaId), "Address is not approved.");
+ require(msg.sender != address(0), "Dirección no válida.");
+ require(_exists(_pizzaId), "La pizza no existe.");
+ require(_isApprovedOrOwner(msg.sender, _pizzaId), "La dirección no está aprobada.");
ownerPizzaCount[msg.sender] = SafeMath.sub(
ownerPizzaCount[msg.sender],
@@ -518,58 +517,58 @@ https://docs.openzeppelin.com/contracts/3. /api/math#SafeMath
pizzaToOwner[_pizzaId] = address(0);
}
- // Returns count of Pizzas by address
+ // Devuelve el recuento de pizzas por dirección
function balanceOf(address _owner) public view returns (uint256 _balance) {
return ownerPizzaCount[_owner];
}
- // Returns owner of the Pizza found by id
+ // Devuelve el propietario de la pizza encontrada por ID
function ownerOf(uint256 _pizzaId) public view returns (address _owner) {
address owner = pizzaToOwner[_pizzaId];
- require(owner != address(0), "Invalid Pizza ID.");
+ require(owner != address(0), "ID de pizza no válido.");
return owner;
}
- // Approves other address to transfer ownership of Pizza
+ // Aprueba a otra dirección para transferir la propiedad de la pizza
function approve(address _to, uint256 _pizzaId) public {
- require(msg.sender == pizzaToOwner[_pizzaId], "Must be the Pizza owner.");
+ require(msg.sender == pizzaToOwner[_pizzaId], "Debe ser el propietario de la pizza.");
pizzaApprovals[_pizzaId] = _to;
emit Approval(msg.sender, _to, _pizzaId);
}
- // Returns approved address for specific Pizza
+ // Devuelve la dirección aprobada para una pizza específica
function getApproved(uint256 _pizzaId)
public
view
returns (address operator)
{
- require(_exists(_pizzaId), "Pizza does not exist.");
+ require(_exists(_pizzaId), "La pizza no existe.");
return pizzaApprovals[_pizzaId];
}
/**
- * Private function to clear current approval of a given token ID
- * Reverts if the given address is not indeed the owner of the token
+ * Función privada para borrar la aprobación actual de un ID de token determinado
+ * Se revierte si la dirección dada no es realmente la propietaria del token
*/
function _clearApproval(address owner, uint256 _pizzaId) private {
- require(pizzaToOwner[_pizzaId] == owner, "Must be pizza owner.");
- require(_exists(_pizzaId), "Pizza does not exist.");
+ require(pizzaToOwner[_pizzaId] == owner, "Debe ser el propietario de la pizza.");
+ require(_exists(_pizzaId), "La pizza no existe.");
if (pizzaApprovals[_pizzaId] != address(0)) {
pizzaApprovals[_pizzaId] = address(0);
}
}
/*
- * Sets or unsets the approval of a given operator
- * An operator is allowed to transfer all tokens of the sender on their behalf
+ * Establece o anula la aprobación de un operador determinado
+ * Un operador puede transferir todos los tokens del remitente en su nombre
*/
function setApprovalForAll(address to, bool approved) public {
- require(to != msg.sender, "Cannot approve own address");
+ require(to != msg.sender, "No se puede aprobar la propia dirección");
operatorApprovals[msg.sender][to] = approved;
emit ApprovalForAll(msg.sender, to, approved);
}
- // Tells whether an operator is approved by a given owner
+ // Indica si un operador está aprobado por un propietario determinado
function isApprovedForAll(address owner, address operator)
public
view
@@ -578,27 +577,27 @@ https://docs.openzeppelin.com/contracts/3. /api/math#SafeMath
return operatorApprovals[owner][operator];
}
- // Takes ownership of Pizza - only for approved users
+ // Toma la propiedad de la pizza: solo para usuarios aprobados
function takeOwnership(uint256 _pizzaId) public {
- require(_isApprovedOrOwner(msg.sender, _pizzaId), "Address is not approved.");
+ require(_isApprovedOrOwner(msg.sender, _pizzaId), "La dirección no está aprobada.");
address owner = this.ownerOf(_pizzaId);
this.transferFrom(owner, msg.sender, _pizzaId);
}
- // Checks if Pizza exists
+ // Comprueba si la pizza existe
function _exists(uint256 pizzaId) internal view returns (bool) {
address owner = pizzaToOwner[pizzaId];
return owner != address(0);
}
- // Checks if address is owner or is approved to transfer Pizza
+ // Comprueba si la dirección es la propietaria o está aprobada para transferir la pizza
function _isApprovedOrOwner(address spender, uint256 pizzaId)
internal
view
returns (bool)
{
address owner = pizzaToOwner[pizzaId];
- // Disable solium check because of
+ // Desactivar la comprobación de solium debido a
// https://github.com/duaraghav8/Solium/issues/175
// solium-disable-next-line operator-whitespace
return (spender == owner ||
@@ -606,7 +605,7 @@ https://docs.openzeppelin.com/contracts/3. /api/math#SafeMath
this.isApprovedForAll(owner, spender));
}
- // Check if Pizza is unique and doesn't exist yet
+ // Comprueba si la pizza es única y no existe todavía
modifier isUnique(string memory _name, uint256 _dna) {
bool result = true;
for (uint256 i = 0; i < pizzas.length; i++) {
@@ -618,19 +617,19 @@ https://docs.openzeppelin.com/contracts/3. /api/math#SafeMath
result = false;
}
}
- require(result, "Pizza with such name already exists.");
+ require(result, "Ya existe una pizza con ese nombre.");
_;
}
- // Returns whether the target address is a contract
+ // Devuelve si la dirección de destino es un contrato
function isContract(address account) internal view returns (bool) {
uint256 size;
- // Currently there is no better way to check if there is a contract in an address
- // than to check the size of the code at that address.
- // En https://ethereum.stackexchange.com/a/14016/36603
- // podrás consultar más detalles sobre cómo funciona esto.
- // TODO Verifica esto de nuevo antes de el lanzamiento de Serenity, porque todas las direcciones serán
- // contratos entonces.
+ // Actualmente no hay una forma mejor de comprobar si hay un contrato en una dirección
+ // que comprobar el tamaño del código en esa dirección.
+ // Consulte https://ethereum.stackexchange.com/a/14016/36603
+ // para obtener más detalles sobre cómo funciona.
+ // TODO: Vuelva a comprobar esto antes del lanzamiento de Serenity, porque entonces todas las direcciones serán
+ // contratos.
// solium-disable-next-line security/no-inline-assembly
assembly {
size := extcodesize(account)
@@ -640,12 +639,12 @@ https://docs.openzeppelin.com/contracts/3. /api/math#SafeMath
}
```
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
Revise la documentación de Solidity y Vyper para ver una descripción más completa de los contratos inteligentes:
-- [Solidity](https://solidity.readthedocs.io/)
-- [Vyper](https://vyper.readthedocs.io/)
+- [Solidity](https://docs.soliditylang.org/)
+- [Vyper](https://docs.vyperlang.org/en/stable/)
## Temas relacionados {#related-topics}
@@ -654,6 +653,6 @@ Revise la documentación de Solidity y Vyper para ver una descripción más comp
## Tutoriales relacionados {#related-tutorials}
-- [Reducir el tamaño de los contratos para luchar contra el límite de tamaño del contrato](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _: Algunos consejos prácticos para reducir el tamaño de tu contrato inteligente._
-- [Registro de datos de contratos inteligentes con eventos](/developers/tutorials/logging-events-smart-contracts/) _: Una introducción a los eventos de contratos inteligentes y cómo puede utilizarlos para registrar datos._
-- [Interactuar con otros contratos de Solidity](/developers/tutorials/interact-with-other-contracts-from-solidity/)_: Cómo implementar un contrato inteligente de un contrato existente e interactuar con él._
+- [Reducción del tamaño de los contratos para luchar contra el límite de tamaño de los contratos](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _– Algunos consejos prácticos para reducir el tamaño de su contrato inteligente._
+- [Registro de datos de contratos inteligentes con eventos](/developers/tutorials/logging-events-smart-contracts/) _– Una introducción a los eventos de contratos inteligentes y cómo puede utilizarlos para registrar datos._
+- [Interactuar con otros contratos desde Solidity](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– Cómo implementar un contrato inteligente a partir de un contrato existente e interactuar con él._
From 92c35a545bfc9941cfcb202502273f7f6bccea77 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:23 -0300
Subject: [PATCH 282/589] update(i18n):
public/content/translations/es/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
---
.../index.md | 92 ++++++++++---------
1 file changed, 47 insertions(+), 45 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/translations/es/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
index d2316529904..80b2a6844ab 100644
--- a/public/content/translations/es/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
+++ b/public/content/translations/es/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
@@ -1,54 +1,56 @@
---
-title: "Waffle: Llamadas dinámicas de simulación y prueba de contratos"
+title: "Waffle: simulación dinámica y pruebas de llamadas a contratos"
description: Tutorial avanzado de Waffle para el uso de simulaciones dinámicas y pruebas de llamadas a contratos
author: "Daniel Izdebski"
tags:
- - "waffle"
- - "contratos inteligentes"
- - "solidity"
- - "pruebas"
- - "simular"
+ [
+ "waffle",
+ "contratos Inteligentes",
+ "Solidity",
+ "pruebas",
+ "simular"
+ ]
skill: intermediate
lang: es
-published: 2020-11-14
+published: 14-11-2020
---
## ¿De qué trata este tutorial? {#what-is-this-tutorial-about}
-En este tutorial aprenderás como:
+En este tutorial aprenderás cómo:
- utilizar simulación dinámica
- comprobar las interacciones entre contratos inteligentes
-Supuestos:
+Suposiciones:
-- ya sabes como escribir un contrato inteligente simple en `Solidity`
+- ya sabes cómo escribir un contrato inteligente simple en `Solidity`
- ya sabes utilizar `JavaScript` y `TypeScript`
-- ya has hecho otrod tutoriales de `Waffle` o sabes algunas cosas sobre él
+- ya has hecho otros tutoriales de `Waffle` o sabes algunas cosas sobre él
## Simulación dinámica {#dynamic-mocking}
-¿Por qué es útil la simulación dinámica? Bueno, porque nos permite escribir pruebas unitarias en lugar de pruebas de integración. ¿Y eso, qué significa? Significa que no tenemos que preocuparnos por las dependencias de los contratos inteligentes, por lo que podremos probarlos de forma aislada. Déjame mostrarte cómo puedes hacerlo.
+¿Por qué es útil la simulación dinámica? Bueno, nos permite escribir pruebas unitarias en lugar de pruebas de integración. ¿Y eso, qué significa? Significa que no tenemos que preocuparnos por las dependencias de los contratos inteligentes, por lo que podremos probarlos de forma aislada. Déjame mostrarte cómo puedes hacerlo.
### **1. Proyecto** {#1-project}
Antes de comenzar debemos preparar un proyecto simple node.js:
```bash
-mkdir dynamic-mocking
-cd dynamic-mocking
+mkdir simulacion-dinamica
+cd simulacion-dinamica
mkdir contracts src
yarn init
-# or if you're using npm
+# o si estás usando npm
npm init
```
-Comencemos agregando dependencias de typescript y prueba - mocha & chai:
+Comencemos agregando dependencias de typescript y prueba: mocha y chai:
```bash
yarn add --dev @types/chai @types/mocha chai mocha ts-node typescript
-# or if you're using npm
+# o si estás usando npm
npm install @types/chai @types/mocha chai mocha ts-node typescript --save-dev
```
@@ -56,7 +58,7 @@ Ahora agreguemos `Waffle` y `ethers`:
```bash
yarn add --dev ethereum-waffle ethers
-# or if you're using npm
+# o si estás usando npm
npm install ethereum-waffle ethers --save-dev
```
@@ -73,7 +75,7 @@ La estructura de tu proyecto debería verse así:
Para comenzar una simulación dinámica, necesitamos un contrato inteligente con dependencias. No te preocupes, ¡yo me encargo!
-Aquí hay un contrato inteligente simple escrito en `Solidity` cuyo único proposito es comporbar si somos ricos. Utiliza el token ERC20 para comprobar si tenemos suficientes tokens. Ponlo en `./contracts/AmIRichAlready.sol`.
+Aquí hay un contrato inteligente simple escrito en `Solidity` cuyo único propósito es comprobar si somos ricos. Utiliza el token ERC20 para comprobar si tenemos suficientes tokens. Ponlo en `./contracts/AmIRichAlready.sol`.
```solidity
pragma solidity ^0.6.2;
@@ -99,7 +101,7 @@ contract AmIRichAlready {
Como queremos utilizar la simulación dinámica no necesitamos el ERC20 completo, por eso estamos utilizando la interfaz de IERC20 con sólo una función.
-¡Es hora de construir este contrato! Para ello utilizaremos `Waffle`. Primero, debemos crear un archivo de configuración simple `waffle.json` que especifique las opciones de compilación.
+¡Es hora de construir este contrato! Para ello utilizaremos `Waffle`. Primero, vamos a crear un archivo de configuración simple `waffle.json` que especifica las opciones de compilación.
```json
{
@@ -133,7 +135,7 @@ import {
} from "ethereum-waffle"
```
-Excepto para las dependencias JS, necesitaremos importar o crear el contrato y la interfaz:
+Aparte de las dependencias de JS, necesitamos importar nuestro contrato compilado y la interfaz:
```typescript
import IERC20 from "../build/IERC20.json"
@@ -146,21 +148,21 @@ Waffle utiliza `chai` para las pruebas. Sin embargo, antes de utilizarlo, debemo
use(solidity)
```
-Necesitamos implementar una función `beforeEach()` que restablezca el estado del contrato antes de cada prueba. Pensemos primero en lo que necesitamos allí. Para implementar un contrato necesitaremos dos cosas: un monedero y un contrato ERC20 ya implementado para utilizarlo como argumento del contrato `AmIRichAlready`.
+Necesitamos implementar una función `beforeEach()` que restablezca el estado del contrato antes de cada prueba. Pensemos primero en lo que necesitamos allí. Para desplegar un contrato, necesitamos dos cosas: una billetera y un contrato ERC20 desplegado para pasarlo como argumento del contrato `AmIRichAlready`.
-Primero creamos el monedero:
+Primero, creamos la billetera:
```typescript
const [wallet] = new MockProvider().getWallets()
```
-Luego debemos desplegar un contrato ERC20. Aquí está la parte difícil - sólo tenemos una interfaz. Esta es la parte en que Waffle viene a salvarnos. Waffle tiene una función mágica `deployMockContract()` que crea un contrato usando únicamente el _abi_ de la interfaz:
+Luego debemos desplegar un contrato ERC20. Aquí está la parte difícil: sólo tenemos una interfaz. Esta es la parte en que Waffle viene a salvarnos. Waffle tiene una función mágica `deployMockContract()` que crea un contrato usando únicamente el _abi_ de la interfaz:
```typescript
const mockERC20 = await deployMockContract(wallet, IERC20.abi)
```
-Ahora con el monedero y el ERC20 desplegado, podemos continuar con la implementación del contrato `AmIRichAlready`:
+Ahora con la billetera y el ERC20 desplegado, podemos continuar e implementar el contrato `AmIRichAlready`:
```typescript
const contract = await deployContract(wallet, AmIRichAlready, [
@@ -200,7 +202,7 @@ describe("Am I Rich Already", () => {
Escribamos la primera prueba para el contrato `AmIRichAlready`. ¿De qué crees que debería ser nuestra prueba? ¡Sí, tienes razón! Deberíamos comprobar si ya somos ricos :)
-Pero espera un segundo. ¿Cómo sabrá nuestro contrato simulado que valores devolver? No hemos implementado ninguna lógica para la función `balanceOf()`. Nuevamente, Waffle nos puede ayudar. Nuestro contrato simulado tiene algunas cosas nuevas:
+Pero espera un segundo. ¿Cómo sabrá nuestro contrato simulado qué valores devolver? No hemos implementado ninguna lógica para la función `balanceOf()`. Nuevamente, Waffle nos puede ayudar. Nuestro contrato simulado tiene algunas cosas nuevas:
```typescript
await mockERC20.mock..returns()
@@ -210,7 +212,7 @@ await mockERC20.mock..withArgs().returns()
Con este conocimiento podemos, finalmente, escribir nuestra primera prueba:
```typescript
-it("returns false if the wallet has less than 1000000 tokens", async () => {
+it("devuelve «false» si la billetera tiene menos de 1000000 tokens", async () => {
await mockERC20.mock.balanceOf.returns(utils.parseEther("999999"))
expect(await contract.check()).to.be.equal(false)
})
@@ -218,17 +220,17 @@ it("returns false if the wallet has less than 1000000 tokens", async () => {
Separemos esta prueba en partes:
-1. Establecimos nuestro contrato ERC20 para devolver siempre un balance de 999999 tokens.
-2. Comprobar si el método`contract.check()` devuelve `false`.
+1. Establecimos nuestro contrato ERC20 simulado para devolver siempre un saldo de 999999 tokens.
+2. Comprobar si el método `contract.check()` devuelve `false`.
Estamos listos para liberar a la bestia:
-
+
-Así que la prueba funciona, pero... todavía hay margen de mejora. La función `balanceOf()` siempre devolverá 999999. Podemos mejorarla especificando un monedero para el cual la función devolverá algo, como un contrato real:
+Así que la prueba funciona, pero... todavía hay margen de mejora. La función `balanceOf()` siempre devolverá 999999. Podemos mejorarla especificando una billetera para la que la función devolverá algo, como un contrato real:
```typescript
-it("returns false if the wallet has less than 1000001 tokens", async () => {
+it("devuelve «false» si la billetera tiene menos de 1000001 tokens", async () => {
await mockERC20.mock.balanceOf
.withArgs(wallet.address)
.returns(utils.parseEther("999999"))
@@ -239,7 +241,7 @@ it("returns false if the wallet has less than 1000001 tokens", async () => {
Hasta el momento, sólo probamos el caso donde aún no somos suficientemente ricos. Probemos el opuesto esta vez:
```typescript
-it("returns true if the wallet has at least 1000001 tokens", async () => {
+it("devuelve «true» si la billetera tiene al menos 1000001 tokens", async () => {
await mockERC20.mock.balanceOf
.withArgs(wallet.address)
.returns(utils.parseEther("1000001"))
@@ -249,26 +251,26 @@ it("returns true if the wallet has at least 1000001 tokens", async () => {
Ejecutas las pruebas...
-
+
... ¡y aquí está! Nuestro contrato parece funcionar según lo previsto :)
-## Probando llamadas de contrato {#testing-contract-calls}
+## Prueba de llamadas a contratos {#testing-contract-calls}
-Veamos lo que hicimos hasta ahora. Probamos la funcionalidad de nuestro contrato `AmIRichAlready` y parece estar funcionando correctamente. Esto significa que terminamos, ¿verdad? ¡No exactamente! Waffle nos permite probar nuestro contrato aún más. ¿Pero cómo? Bueno, en el arsenal de Waffle tenemos `calledOnContract()` y los matchers `calledOnContractWith()`. Siempre nos permitirán corroborar si nuestro contrato llamó al contrato simulado ERC20. Aquí hay una prueba básica con uno de estos matchers:
+Veamos lo que hicimos hasta ahora. Hemos probado la funcionalidad de nuestro contrato `AmIRichAlready` y parece que funciona correctamente. Esto significa que terminamos, ¿verdad? ¡No exactamente! Waffle nos permite probar nuestro contrato aún más. ¿Pero cómo? Bueno, en el arsenal de Waffle están los emparejadores `calledOnContract()` y `calledOnContractWith()`. Nos permitirán comprobar si nuestro contrato llamó al contrato simulado de ERC20. Aquí hay una prueba básica con uno de estos emparejadores:
```typescript
-it("checks if contract called balanceOf on the ERC20 token", async () => {
+it("comprueba si el contrato llamó a balanceOf en el token ERC20", async () => {
await mockERC20.mock.balanceOf.returns(utils.parseEther("999999"))
await contract.check()
expect("balanceOf").to.be.calledOnContract(mockERC20)
})
```
-Incluso podemos ir más allá y mejorar esta prueba con los otros matchers de los que te hablé:
+Podemos ir aún más lejos y mejorar esta prueba con el otro emparejador del que te hablé:
```typescript
-it("checks if contract called balanceOf with certain wallet on the ERC20 token", async () => {
+it("comprueba si el contrato llamó a balanceOf con una billetera determinada en el token ERC20", async () => {
await mockERC20.mock.balanceOf
.withArgs(wallet.address)
.returns(utils.parseEther("999999"))
@@ -279,20 +281,20 @@ it("checks if contract called balanceOf with certain wallet on the ERC20 token",
Vamos a comprobar si las pruebas fueron correctas:
-
+
Genial, todas las pruebas están verdes.
-Probar las llamadas de contrato con Waffle es muy fácil. Y aquí está la mejor parte. ¡Estos emparejadores trabajan tanto con contratos normales como simulados! Esto se debe a que Waffle registra y filtra las llamadas EVM en lugar de introducir código, como en el caso de las librerías de prueba populares para otras tecnologías.
+Probar las llamadas de contrato con Waffle es muy fácil. Y aquí está la mejor parte. ¡Estos emparejadores funcionan tanto con contratos normales como simulados! Esto se debe a que Waffle registra y filtra las llamadas de la EVM en lugar de inyectar código, como es el caso de las librerías de prueba populares para otras tecnologías.
-## La Línea de Llegada {#the-finish-line}
+## La recta final {#the-finish-line}
-¡Felicidades! Ahora sabes como usar Waffle para probar las llamadas de contrato y contratos simulados de forma dinámica. Hay características mucho más interesantes que descubrir. Recomiendo revisar la documentación de Waffle.
+¡Enhorabuena! Ahora sabes cómo usar Waffle para probar las llamadas de contrato y contratos simulados de forma dinámica. Hay características mucho más interesantes que descubrir. Recomiendo revisar la documentación de Waffle.
La documentación de Waffle está disponible [aquí](https://ethereum-waffle.readthedocs.io/).
-El código fuente de este tutorial puedes econtrarlo [aquí](https://github.com/EthWorks/Waffle/tree/master/examples/dynamic-mocking-and-testing-calls).
+El código fuente de este tutorial se puede encontrar [aquí](https://github.com/EthWorks/Waffle/tree/master/examples/dynamic-mocking-and-testing-calls).
Otros tutoriales que podrían interesarte:
-- [Probar contratos inteligentes con Waffle](/developers/tutorials/testing-smart-contract-with-waffle/)
+- [Prueba de contratos inteligentes con Waffle](/developers/tutorials/waffle-test-simple-smart-contract/)
From 84a3fcc83192b6b68c62c5ae596d9e284114388a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:24 -0300
Subject: [PATCH 283/589] update(i18n):
public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md
---
.../web3-secret-storage/index.md | 195 ++++++++++++++++++
1 file changed, 195 insertions(+)
create mode 100644 public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md
diff --git a/public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md b/public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md
new file mode 100644
index 00000000000..8cb7ea7456f
--- /dev/null
+++ b/public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md
@@ -0,0 +1,195 @@
+---
+title: Definición de almacenamiento secreto Web3
+description: Definicion formal para el almacenamiento secreto web3
+lang: es
+sidebarDepth: 2
+---
+
+Para hacer que su app funcione en Ethereum, puede usar el objeto web3 proporcionado por la biblioteca web3.js. Este se comunica debajo del capó con un nodo local a través de llamadas RPC. [web3](https://github.com/ethereum/web3.js/) funciona con cualquier nodo de Ethereum que exponga una capa RPC.
+
+`web3` contiene el objeto `eth`: web3.eth.
+
+```js
+var fs = require("fs")
+var recognizer = require("ethereum-keyfile-recognizer")
+
+fs.readFile("keyfile.json", (err, data) => {
+ var json = JSON.parse(data)
+ var result = recognizer(json)
+})
+
+/** resultado
+ * [ 'web3', 3 ] archivo de claves web3 (v3)
+ * [ 'ethersale', undefined ] archivo de claves Ethersale
+ * null archivo de claves no válido
+ */
+```
+
+Este documento describe la **versión 3** de la Definición de almacenamiento secreto de Web3.
+
+## Definición {#definition}
+
+La codificación y decodificación real del archivo permanece prácticamente sin cambios desde la versión 1, excepto que el algoritmo criptográfico ya no está fijado en AES-128-CBC (AES-128-CTR es ahora el requisito mínimo). La mayoría de los significados y el algoritmo son similares a los de la versión 1, a excepción de `mac`, que se proporciona como el SHA3 (keccak-256) de las concatenaciones de los segundos 16 bytes desde la izquierda de la clave derivada junto con el `ciphertext` completo.
+
+Los archivos de clave secreta se guardan directamente en `~/.web3/keystore` (para sistemas de tipo Unix) y en `~/AppData/Web3/keystore` (para Windows). Pueden tener cualquier nombre, pero una buena convención es usar `.json`, donde `` es el UUID de 128 bits que se le asigna a la clave secreta (un proxy que preserva la privacidad para la dirección de la clave secreta).
+
+Todos esos archivos se asocian a una contraseña. Para derivar la clave secreta de un archivo `.json` dado, primero hay que derivar la clave de cifrado del archivo; esto se hace tomando la contraseña del archivo y pasándola por una función de derivación de claves, como se describe en la clave `kdf`. La clave `kdfparams` describe los parámetros estáticos y dinámicos que dependen de la función KDF.
+
+PBKDF2 debe ser aceptado por toda implementation mínimamente compatible, aunque cabe mencionar que:
+
+- `kdf`: `pbkdf2`
+
+Para PBKDF2, el kdfparams incluye:
+
+- `prf`: Debe ser `hmac-sha256` (podría ampliarse en el futuro);
+- `c`: número de iteraciones;
+- `salt`: salt pasado a PBKDF;
+- `dklen`: longitud de la clave derivada. Debe ser >= 32.
+
+Una vez que la clave del archivo se haya derivado, esta tiene que verificarse a través de la derivación del MAC. El MAC debe calcularse como el hash SHA3 (keccak-256) de la matriz de bytes formada por las concatenaciones de los segundos 16 bytes desde la izquierda de la clave derivada con el contenido de la clave `ciphertext`, es decir:
+
+```js
+KECCAK(DK[16..31] ++ )
+```
+
+(donde `++` es el operador de concatenación)
+
+Este valor debe compararse con el contenido de la clave `mac`; si son diferentes, se debe solicitar una contraseña alternativa (o cancelar la operación).
+
+Una vez verificada la clave del archivo, el texto cifrado (la clave `ciphertext` del archivo) se puede descifrar utilizando el algoritmo de cifrado simétrico especificado por la clave `cipher` y parametrizado a través de la clave `cipherparams`. Si el tamaño de la clave derivada y el tamaño de la clave del algoritmo no coinciden, los bytes más a la derecha rellenados con ceros de la clave derivada deberían de utilizarse como clave del algoritmo.
+
+Toda implementation mínimamente compatible debe soportar el algoritmo AES-128-CTR, aunque se debe tener en cuenta que:
+
+- `cipher: aes-128-ctr`
+
+Este cifrado toma los siguientes parámetros, dados como claves para la clave cipherparams:
+
+- `iv`: vector de inicialización de 128 bits para el cifrado.
+
+La clave para el cifrado son los 16 bytes más a la izquierda de la clave derivada, es decir, `DK[0..15]`.
+
+La creación/encriptación de la clave secreta debería ser lo contrario a estas instrucciones. Asegúrese de que `uuid`, `salt` e `iv` sean realmente aleatorios.
+
+Además del campo `version`, que debe actuar como un identificador "fijo" de la versión, las implementaciones también pueden usar `minorversion` para rastrear cambios más pequeños en el formato que no rompan la compatibilidad.
+
+## Vectores de prueba {#test-vectors}
+
+Detalles:
+
+- `Dirección`: `008aeeda4d805471df9b2a5b0f38a0c3bcba786b`
+- `ICAP`: `XE542A5PZHH8PYIZUBEJEO0MFWRAPPIL67`
+- `UUID`: `3198bc9c-6672-5ab3-d9954942343ae5b6`
+- `Contraseña`: `testpassword`
+- `Secreto`: `7a28b5ba57c53603b0b07b56bba752f7784bf506fa95edc395f5cf6c7514fe9d`
+
+### PBKDF2-SHA-256 {#PBKDF2-SHA-256}
+
+Vector de prueba usando `AES-128-CTR` y `PBKDF2-SHA-256`:
+
+Contenido del archivo de `~/.web3/keystore/3198bc9c-6672-5ab3-d9954942343ae5b6.json`:
+
+```json
+{
+ "crypto": {
+ "cipher": "aes-128-ctr",
+ "cipherparams": {
+ "iv": "6087dab2f9fdbbfaddc31a909735c1e6"
+ },
+ "ciphertext": "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",
+ "kdf": "pbkdf2",
+ "kdfparams": {
+ "c": 262144,
+ "dklen": 32,
+ "prf": "hmac-sha256",
+ "salt": "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"
+ },
+ "mac": "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"
+ },
+ "id": "3198bc9c-6672-5ab3-d995-4942343ae5b6",
+ "version": 3
+}
+```
+
+**Intermedios**:
+
+`Clave derivada`: `f06d69cdc7da0faffb1008270bca38f5e31891a3a773950e6d0fea48a7188551`
+`Cuerpo del MAC`: `e31891a3a773950e6d0fea48a71885515318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46`
+`MAC`: `517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2`
+`Clave de cifrado`: `f06d69cdc7da0faffb1008270bca38f5`
+
+### Scrypt {#scrypt}
+
+Vector de prueba usando AES-128-CTR y el Scrypt:
+
+```json
+{
+ "crypto": {
+ "cipher": "aes-128-ctr",
+ "cipherparams": {
+ "iv": "740770fce12ce862af21264dab25f1da"
+ },
+ "ciphertext": "dd8a1132cf57db67c038c6763afe2cbe6ea1949a86abc5843f8ca656ebbb1ea2",
+ "kdf": "scrypt",
+ "kdfparams": {
+ "dklen": 32,
+ "n": 262144,
+ "p": 1,
+ "r": 8,
+ "salt": "25710c2ccd7c610b24d068af83b959b7a0e5f40641f0c82daeb1345766191034"
+ },
+ "mac": "337aeb86505d2d0bb620effe57f18381377d67d76dac1090626aa5cd20886a7c"
+ },
+ "id": "3198bc9c-6672-5ab3-d995-4942343ae5b6",
+ "version": 3
+}
+```
+
+**Intermedios**:
+
+`Clave derivada`: `7446f59ecc301d2d79bc3302650d8a5cedc185ccbb4bf3ca1ebd2c163eaa6c2d`
+`Cuerpo del MAC`: `edc185ccbb4bf3ca1ebd2c163eaa6c2ddd8a1132cf57db67c038c6763afe2cbe6ea1949a86abc5843f8ca656ebbb1ea2`
+`MAC`: `337aeb86505d2d0bb620effe57f18381377d67d76dac1090626aa5cd20886a7c`
+`Clave de cifrado`: `7446f59ecc301d2d79bc3302650d8a5c`
+
+## Alteraciones con respecto a la versión 1 {#alterations-from-v2}
+
+Esta versión corrige varias incoherencias con la versión 1 publicada [aquí](https://github.com/ethereum/homestead-guide/blob/master/old-docs-for-reference/go-ethereum-wiki.rst/Passphrase-protected-key-store-spec.rst). Resumiendo, son estas:
+
+- La capitalización es injustificada e inconsistentes (minúsculas en el scrypt, caso mixto Kdf, MAC en Mayúsculas).
+- Dirección innecesaria y privacidad comprometida.
+- `Salt` es intrínsecamente un parámetro de la función de derivación de claves y merece estar asociado a ella, no a la criptografía en general.
+- _SaltLen_ innecesario (basta con derivarlo a partir de Salt).
+- La función de derivación de la clave es determinada, no obstante, el algoritmo es difícil de especificar.
+- `Version` es intrínsecamente numérico y, sin embargo, es una cadena (el control de versiones estructurado sería posible con una cadena, pero puede considerarse fuera del alcance para un formato de archivo de configuración que cambia con poca frecuencia).
+- `KDF` y `cipher` son conceptos teóricamente análogos, aunque están organizados de forma diferente.
+- `MAC` se calcula a partir de un fragmento de datos que no tiene en cuenta los espacios en blanco (!).
+
+Se han hecho cambios al formato para obtener el siguiente archivo, es funcionalmente equivalente al ejemplo dado en la página previamente vinculada:
+
+```json
+{
+ "crypto": {
+ "cipher": "aes-128-cbc",
+ "ciphertext": "07533e172414bfa50e99dba4a0ce603f654ebfa1ff46277c3e0c577fdc87f6bb4e4fe16c5a94ce6ce14cfa069821ef9b",
+ "cipherparams": {
+ "iv": "16d67ba0ce5a339ff2f07951253e6ba8"
+ },
+ "kdf": "scrypt",
+ "kdfparams": {
+ "dklen": 32,
+ "n": 262144,
+ "p": 1,
+ "r": 8,
+ "salt": "06870e5e6a24e183a5c807bd1c43afd86d573f7db303ff4853d135cd0fd3fe91"
+ },
+ "mac": "8ccded24da2e99a11d48cda146f9cc8213eb423e2ea0d8427f41c3be414424dd",
+ "version": 1
+ },
+ "id": "0498f19a-59db-4d54-ac95-33901b4f1870",
+ "version": 2
+}
+```
+
+## Alteraciones con respecto a la versión 2 {#alterations-from-v2}
+
+La versión 2 fue una implementation temprana en C++ con un número de errores. Todo lo esencial permanece sin cambios.
From 8fe21681de2587b673809c0ea75a2ccf5c078c1e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:26 -0300
Subject: [PATCH 284/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/attestations/index.md
---
.../pos/attestations/index.md | 62 +++++++++----------
1 file changed, 31 insertions(+), 31 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attestations/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attestations/index.md
index ca094523ffb..b078b0e4fef 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attestations/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attestations/index.md
@@ -1,5 +1,5 @@
---
-title: Certificaciones
+title: Atestaciones
description: Una descripción de las certificaciones sobre la prueba de participación de Ethereum.
lang: es
---
@@ -8,35 +8,35 @@ Se espera que un validador cree, firme y emita una certificación durante cada
## ¿Qué es una certificación? {#what-is-an-attestation}
-Cada [época](/glossary/#epoch) (6,4 minutos) un validador propone una certificación a la red. La certificación es para un espacio específico en la época. El propósito de la certificación es votar a favor de la visión del validador de la cadena, en particular el bloque justificado más reciente y el primer bloque de la época actual (conocidos como puntos de control `fuente` y `destino`). Esta información se combina para todos los validadores participantes, lo que permite a la red llegar a un consenso sobre el estado de la cadena de bloques.
+Cada [época](/glossary/#epoch) (6,4 minutos), un validador propone una atestación a la red. La certificación es para un espacio específico en la época. El propósito de la atestación es votar a favor de la visión de la cadena que tiene el validador; en particular, el bloque justificado más reciente y el primer bloque de la época actual (conocidos como puntos de control de `source` y `target`). Esta información se combina para todos los validadores participantes, lo que permite a la red llegar a un consenso sobre el estado de la cadena de bloques.
La certificación contiene los siguientes componentes:
-- `aggregation_bits`: una lista de validadores de bits cuya posición se asigna al índice del validador en su comité; el valor (0/1) indica si el validador firmó los `datos` (es decir, si están activos y están de acuerdo con el proponente del bloque)
-- `datos`: detalles relacionados con la certificación, como se define a continuación
-- `signature`: Una firma BLS que agrega las firmas de validadores individuales
+- `aggregation_bits`: una lista de bits de validadores en la que la posición se asigna al índice del validador en su comité; el valor (0/1) indica si el validador firmó el `data` (es decir, si está activo y de acuerdo con el proponente del bloque).
+- `data`: detalles relacionados con la atestación, como se define a continuación.
+- `signature`: una firma BLS que agrega las firmas de los validadores individuales.
-La primera tarea para un validador de atestación es construir `datos`. Los `datos` contienen la siguiente información:
+La primera tarea de un validador que atestigua es construir el `data`. El `data` contiene la siguiente información:
-- `ranura`: el número de ranura al que se refiere la certificación
-- `índice`: un número que identifica a qué comité pertenece el validador en un espacio determinado
-- `beacon_block_root`: hash raíz del bloque que el validador ve en la cabeza de la cadena (el resultado de aplicar el algoritmo de elección de bifurcación)
-- `fuente`: parte de la votación final que indica lo que los validadores ven como el bloqueo justificado más reciente
-- `destino`: parte de la votación final indica lo que los validadores ven como el primer bloque en la época actual
+- `slot`: el número de slot al que se refiere la atestación.
+- `index`: un número que identifica a qué comité pertenece el validador en un slot determinado.
+- `beacon_block_root`: hash raíz del bloque que el validador ve en la cabecera de la cadena (el resultado de aplicar el algoritmo de elección de bifurcación).
+- `source`: parte del voto de finalidad que indica lo que los validadores ven como el bloque justificado más reciente.
+- `target`: parte del voto de finalidad que indica lo que los validadores ven como el primer bloque de la época actual.
-Una vez que los `datos` están construidos, el validador puede girar el bit en `aggregation_bits` correspondientes a su propio índice de validador de 0 a 1 para demostrar su participación.
+Una vez construido el `data`, el validador puede cambiar el bit en `aggregation_bits` correspondiente a su propio índice de validador de 0 a 1 para demostrar que ha participado.
Por último, el validador firma la certificación y la transmite a la red.
-### Certificación añadida {#aggregated-attestation}
+### Atestación agregada {#aggregated-attestation}
-Hay una sobrecarga sustancial asociada con el paso de estos datos por la red para cada validador. Por lo tanto, las certificaciones de validadores individuales se añaden dentro de las subredes antes de transmitirse más ampliamente. Esto incluye el añadido de firmas para que una certificación que se transmita incluya los `datos` de consenso y una sola firma formada por la combinación de las firmas de todos los validadores que están de acuerdo con esos `datos`. Esto se puede comprobar utilizando `aggregation_bits`, ya que proporciona el índice de cada validador en su comité (cuyo ID se proporciona en los `datos`) que se puede utilizar para consultar firmas individuales.
+Hay una sobrecarga sustancial asociada con el paso de estos datos por la red para cada validador. Por lo tanto, las certificaciones de validadores individuales se añaden dentro de las subredes antes de transmitirse más ampliamente. Esto incluye la agregación de firmas para que una atestación que se transmite incluya el `data` de consenso y una única firma formada por la combinación de las firmas de todos los validadores que están de acuerdo con ese `data`. Esto se puede comprobar utilizando `aggregation_bits` porque esto proporciona el índice de cada validador en su comité (cuyo ID se proporciona en `data`), que se puede utilizar para consultar firmas individuales.
-En cada época, se seleccionan 16 validadores en cada subred para que sean los `agregadores`. Los agregadores recopilan todos los certificados o atestaciones de los que escuchan a través de la red de gossip que tienen `datos` equivalentes a los suyos. El remitente de cada certificación coincidente se registra en los `aggregation_bits`. A continuación, los agregadores transmiten el agregado de atestaciones a la red más amplia.
+En cada época, 16 validadores de cada subred son seleccionados para ser los `agregadores`. Los agregadores recopilan todas las atestaciones que escuchan en la red de gossip que tienen un `data` equivalente al suyo. El remitente de cada atestación coincidente se registra en los `aggregation_bits`. A continuación, los agregadores transmiten el agregado de atestaciones a la red más amplia.
Cuando se selecciona un validador para ser un proponente de bloques, este agrupa las certificaciones agregadas de las subredes hasta la última ranura en el nuevo bloque.
-### Ciclo de vida de inclusión de la certificación {#attestation-inclusion-lifecycle}
+### Ciclo de vida de la inclusión de la atestación {#attestation-inclusion-lifecycle}
1. Generación
2. Propagación
@@ -46,7 +46,7 @@ Cuando se selecciona un validador para ser un proponente de bloques, este agrupa
El ciclo de vida de la certificación se describe en el siguiente esquema:
-
+
## Recompensas {#rewards}
@@ -60,33 +60,33 @@ La mejor situación se produce cuando las tres banderas son ciertas, en cuyo cas
La tasa de certificación de la bandera se mide utilizando la suma de los saldos efectivos de todos los validadores de certificación para la bandera dada, en comparación con el saldo efectivo del activo total.
-### La recompensa de base {#base-reward}
+### Recompensa base {#base-reward}
La recompensa de base se calcula de acuerdo con el número de validadores de certificación y sus saldos de ether efectivo en participación:
-`base reward = validator effective balance x 2^6 / SQRT(Effective balance of all active validators)`
+`recompensa base = saldo efectivo del validador x 2^6 / SQRT(saldo efectivo de todos los validadores activos)`
-#### El retraso de inclusión {#inclusion-delay}
+#### Retraso de inclusión {#inclusion-delay}
-En el momento en que los validadores votaron sobre la cabeza de la cadena (`bloque n`), `bloque n+1` aún no se había propuesto. Por lo tanto, las certificaciones se incluyen naturalmente **un bloque más adelante**, por lo que todas las certificaciones que votaron sobre `bloque n` como cabeza de la cadena se incluyeron en `bloque n+1` y el **retraso de la inclusión** es 1. Si el retraso de inclusión se duplica a dos ranuras, la recompensa de certificación se reduce a la mitad, porque para calcular la recompensa de certificación, la recompensa de base se multiplica por el recíproco del retraso de inclusión.
+En el momento en que los validadores votaron por la cabecera de la cadena (`bloque n`), el `bloque n+1` aún no se había propuesto. Por lo tanto, las atestaciones se incluyen de forma natural **un bloque después**, por lo que todas las atestaciones que votaron que el `bloque n` era la cabecera de la cadena se incluyeron en el `bloque n+1` y el **retraso de inclusión** es de 1. Si el retraso de inclusión se duplica a dos ranuras, la recompensa de certificación se reduce a la mitad, porque para calcular la recompensa de certificación, la recompensa de base se multiplica por el recíproco del retraso de inclusión.
-### Posibles casos de certificación {#attestation-scenarios}
+### Escenarios de atestación {#attestation-scenarios}
-#### Falta el voto del validador {#missing-voting-validator}
+#### Falta del validador votante {#missing-voting-validator}
Los validadores tienen un máximo de 1 época para presentar su certificación. Si la certificación se perdió en la época 0, pueden presentarla con un retraso de inclusión en la época 1.
-#### Falta el agregador {#missing-aggregator}
+#### Falta del agregador {#missing-aggregator}
-Hay 16 agregadores por época en total. Además, los validadores aleatorios se suscriben a **dos subredes por 256 épocas** y sirven como copia de seguridad en caso de que falten agregadores.
+Hay 16 agregadores por época en total. Además, los validadores aleatorios se suscriben a **dos subredes durante 256 épocas** y sirven como respaldo en caso de que falten los agregadores.
-#### Falta el proponente de bloque {#missing-block-proposer}
+#### Falta del proponente de bloque {#missing-block-proposer}
-Tenga en cuenta que en algunos casos un agregador afortunado también puede convertirse en el proponente de bloques. Si la certificación no se incluyó porque el proponente del bloque ha desaparecido, el siguiente proponente del bloque elegiría la certificación añadida y la incluiría en el siguiente bloque. Sin embargo, el **retraso de la inclusión** aumentará un valor.
+Tenga en cuenta que en algunos casos un agregador afortunado también puede convertirse en el proponente de bloques. Si la certificación no se incluyó porque el proponente del bloque ha desaparecido, el siguiente proponente del bloque elegiría la certificación añadida y la incluiría en el siguiente bloque. Sin embargo, el **retraso de inclusión** aumentará en uno.
-## Más lecturas {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Certificaciones en la especificación de consenso anotada de Vitalik](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#attestationdata)
-- [Certificaciones en eth2book.info](https://eth2book.info/capella/part3/containers/dependencies/#attestationdata)
+- [Atestaciones en la especificación de consenso anotada de Vitalik](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#attestationdata)
+- [Atestaciones en eth2book.info](https://eth2book.info/capella/part3/containers/dependencies/#attestationdata)
-_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
From d65d2ff27e0e95c39225b8d2e9b4e15a411cdf03 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:28 -0300
Subject: [PATCH 285/589] update(i18n):
public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md
---
.../docs/design-and-ux/dex-design-best-practice/index.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md b/public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md
index 63a43904774..9933c73da74 100644
--- a/public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md
+++ b/public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md
@@ -5,7 +5,7 @@ lang: es
---
Desde el lanzamiento de Uniswap en 2018, se han creado cientos de exchanges, o plataformas de intercambio, descentralizados en docenas de diferentes cadenas de bloques.
-Muchos de ellos han introducido nuevos elementos o han añadido su propio toque, pero la interfaz ha seguido siendo la misma en general.
+Muchos de ellos han introducido nuevos elementos o han añadido su propio toque, pero la interfaz ha seguido siendo la misma, por lo general.
Una de las razones es la [Ley de Jakob](https://lawsofux.com/jakobs-law/):
@@ -74,7 +74,7 @@ En los primeros tiempos de DeFi, a menudo faltaba el equivalente en fiat. Si est
En el segundo campo (en el que elige el token al que va a cambiar) también puede incluir el impacto del precio junto al importe en moneda fiat, calculando la diferencia entre el importe de entrada y el importe estimado resultante. Es muy útil incluir este detalle.
-Los botones de porcentaje (por ejemplo, 25%, 50%, 75%) pueden ser útiles, pero ocupan más espacio, añaden más llamados a la acción y añaden más carga mental. Lo mismo ocurre con los deslizadores de porcentaje. Algunas de estas decisiones sobre la interfaz de usuario dependerán de su marca y de su tipo de usuario.
+Los botones de porcentaje (por ejemplo, 25 %, 50 %, 75 %) pueden ser una característica útil, pero ocupan más espacio, añaden más llamadas a la acción y aumentan la carga mental. Lo mismo ocurre con los deslizadores de porcentaje. Algunas de estas decisiones sobre la interfaz de usuario dependerán de su marca y de su tipo de usuario.
Debajo del formulario principal se pueden mostrar detalles adicionales. Como este tipo de información es sobre todo para usuarios profesionales, tiene sentido:
@@ -168,7 +168,7 @@ La conclusión es que probablemente no haga una gran diferencia en la usabilidad
Ha sido medianamente interesante ver cómo cambiaba la moda con el tiempo. Al principio, Uniswap tenía el token a la izquierda, pero ahora la ha desplazado a la derecha. Sushiswap también hizo este cambio durante una actualización de diseño. La mayoría de los protocolos, aunque no todos, han seguido su ejemplo.
-Tradicionalmente, las convenciones financieras anteponen el símbolo de la moneda a la cifra, por ejemplo, $50, €50, £50, pero nosotros _decimos_ 50 dólares, 50 euros, 50 libras.
+Tradicionalmente, las convenciones financieras anteponen el símbolo de la moneda a la cifra, por ejemplo, 50 $, 50 €, 50 £, pero nosotros _decimos_ 50 dólares, 50 euros, 50 libras.
Para el usuario en general, especialmente alguien que lee de izquierda a derecha, de arriba a abajo, el token de la derecha probablemente se sienta más natural.
@@ -206,7 +206,7 @@ El botón también puede ser **mapeado a la acción** a realizar. Por ejemplo, s

-### Construya el suyo con este archivo figma {#build-your-own-with-this-figma-file}
+## Construya el suyo con este archivo figma {#build-your-own-with-this-figma-file}
Gracias a la ardua labor de múltiples protocolos, el diseño de DEX ha mejorado mucho. Sabemos qué información necesita el usuario, cómo debemos mostrarla y cómo hacer que el flujo sea lo más fluido posible.
Esperamos que este artículo ofrezca una sólida visión general de los principios de la UX.
From 80060ae853bbb85437565061089fadfe13ee4adf Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:29 -0300
Subject: [PATCH 286/589] update(i18n):
public/content/translations/es/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
---
.../index.md | 117 +++++++++---------
1 file changed, 57 insertions(+), 60 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md b/public/content/translations/es/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
index 5503d5436fb..ea90b79663d 100644
--- a/public/content/translations/es/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
+++ b/public/content/translations/es/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
@@ -1,11 +1,8 @@
---
title: Aprenda temas fundamentales de Ethereum con SQL
-description: Este tutorial ayudará a los lectores a comprender conceptos fundamentales de Ethereum, incluyendo transacciones, bloques y gas consultando datos en cadena con Structured Query Language (SQL).
+description: Este tutorial ayuda a los lectores a comprender los conceptos fundamentales de Ethereum, como las transacciones, los bloques y el gas, mediante la consulta de datos en la cadena con el lenguaje de consulta estructurado (SQL).
author: "Paul Apivat"
-tags:
- - "SQL"
- - "Consultas"
- - "Transacciones"
+tags: [ "SQL", "Consultas", "Transacciones" ]
skill: beginner
lang: es
published: 2021-05-11
@@ -13,27 +10,27 @@ source: paulapivat.com
sourceUrl: https://paulapivat.com/post/query_ethereum/
---
-Muchos tutoriales de Ethereum están dirigidos a desarrolladores, pero hacen falta recursos educativos para analistas de datos o para personas que quieren ver datos en cadena sin tener que ejecutar un cliente o nodo.
+Muchos tutoriales de Ethereum están dirigidos a desarrolladores, pero faltan recursos educativos para los analistas de datos o para las personas que desean ver datos en la cadena sin ejecutar un cliente o un nodo.
-Este tutorial ayuda a los lectores a entender los conceptos fundamentals de Ethereum, incluyendo transacciones, bloques y gas consultando datos en la cadena con SQL a través de una interfaz proporcionada por [Dune Analytics](https://dune.xyz/home).
+Este tutorial ayuda a los lectores a comprender los conceptos fundamentales de Ethereum, como las transacciones, los bloques y el gas, mediante la consulta de datos en la cadena con el lenguaje de consulta estructurado (SQL) a través de una interfaz proporcionada por [Dune Analytics](https://dune.com/).
-Los datos en cadena pueden ayudarnos a entender Ethereum, la red y como una economía para el poder computacional, y deberían servir como una base para entender los cambios a los que se enferenta Ethereum hoy en día (p. ej., el aumento de los costos de gas) y, lo que resulta más importante, discusiones en torno a las soluciones de escalabilidad.
+Los datos en la cadena pueden ayudarnos a entender Ethereum, la red y su economía de potencia de cálculo, y deberían servir como base para comprender los retos a los que se enfrenta Ethereum hoy en día (es decir, el aumento de los precios del gas) y, lo que es más importante, los debates en torno a las soluciones de escalabilidad.
### Transacciones {#transactions}
-El recorrido de un usuario en Ethereum comienza con la inicialización de una cuenta controlada por el usuario o de una entidad con un saldo de ETH. Hay dos tipos de cuentas: las controladas por los usuarios o un contrato inteligente (ver [ethereum.org](/developers/docs/accounts/)).
+El recorrido de un usuario en Ethereum comienza con la inicialización de una cuenta controlada por el usuario o de una entidad con un saldo de ETH. Hay dos tipos de cuentas: las controladas por el usuario o un contrato inteligente (consulte [ethereum.org](/developers/docs/accounts/)).
-Cualquier cuenta puede verse en un explorador de bloques como [Etherscan](https://etherscan.io/). Los exploradores de bloques son un portal a los datos de Ethereum. Muestran en tiempo real datos en bloques, transacciones, mineros, cuentas y otra actividad en la cadena (ver [aquí](/developers/docs/data-and-analytics/block-explorers/)).
+Cualquier cuenta puede verse en un explorador de bloques como [Etherscan](https://etherscan.io/) o [Blockscout](https://eth.blockscout.com/). Los exploradores de bloques son un portal a los datos de Ethereum. Muestran, en tiempo real, datos sobre bloques, transacciones, mineros, cuentas y otra actividad en la cadena (consulte [aquí](/developers/docs/data-and-analytics/block-explorers/)).
-De todos modos, un usuario podría desear consultar los datos directamente para conciliar la información brindada por los exploradores de bloques externos. [Dune Analytics](https://duneanalytics.com/) proporciona esta capacidad a cualquier persona con algún conocimiento de SQL.
+Sin embargo, un usuario puede desear consultar los datos directamente para conciliar la información proporcionada por los exploradores de bloques externos. [Dune Analytics](https://dune.com/) proporciona esta capacidad a cualquier persona con algún conocimiento de SQL.
-Para referencia, la cuenta de contrato inteligente para la Ethereum Foundation (EF) puede consultarse en [Etherscan](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae).
+Como referencia, la cuenta del contrato inteligente de la Ethereum Foundation (EF) se puede ver en [Blockscout](https://eth.blockscout.com/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe).
-Una cosa a tener en cuenta es que todas las cuentas, incluidas las de la FE, tienen una dirección pública que se puede utilizar para enviar y recibir transacciones.
+Una cosa a tener en cuenta es que todas las cuentas, incluidas las de la EF, tienen una dirección pública que se puede utilizar para enviar y recibir transacciones.
-El saldo de la cuenta en Etherscan comprende transacciones regulares y transacciones internas. Las transacciones internas, a pesar de su nombre, no son _transacciones reales_ que cambian el estado de la cadena. Por el contrario, son transferencias de valor iniciadas al ejecutar un contrato ([fuente](https://ethereum.stackexchange.com/questions/3417/how-to-get-contract-internal-transactions)). Dado que las transacciones internas no tienen firma, **no** se incluyen en la cadena de bloques y no se pueden consultar con Dune Analytics.
+El saldo de la cuenta en Etherscan comprende transacciones regulares y transacciones internas. Las transacciones internas, a pesar de su nombre, no son transacciones _reales_ que cambien el estado de la cadena. Son transferencias de valor iniciadas por la ejecución de un contrato ([fuente](https://ethereum.stackexchange.com/questions/3417/how-to-get-contract-internal-transactions)). Dado que las transacciones internas no tienen firma, **no** se incluyen en la cadena de bloques y no se pueden consultar con Dune Analytics.
-Por lo tanto, este tutorial se centrará en las transacciones regulares. Esto puede ser consultado como tal:
+Por lo tanto, este tutorial se centrará en las transacciones regulares. Esto se puede consultar de la siguiente manera:
```sql
WITH temp_table AS (
@@ -61,33 +58,33 @@ SELECT
FROM temp_table
```
-Esto generará la misma información que se proporciona en la página de transacciones de Etherscan. A modo de comparación, estas son las dos fuentes:
+Esto producirá la misma información que se proporciona en la página de transacciones de Etherscan. A modo de comparación, estas son las dos fuentes:
#### Etherscan {#etherscan}

-[Página de contrato de la EF en Etherscan.](https://etherscan.io/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe)
+[Página del contrato de EF en Blockscout.](https://eth.blockscout.com/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe)
#### Dune Analytics {#dune-analytics}

-Puede encontrar el panel [aquí](https://duneanalytics.com/paulapivat/Learn-Ethereum). Haga clic en la tabla para ver la consulta (también ver arriba).
+Puede encontrar el panel de control [aquí](https://dune.com/paulapivat/Learn-Ethereum). Haga clic en la tabla para ver la consulta (véase también más arriba).
-### Desglose de transacciones {#breaking_down_transactions}
+### Desglose de las transacciones {#breaking_down_transactions}
-Una transacción enviada incluye varios tipos de datos, incluyendo ([fuente](/developers/docs/transactions/)):
+Una transacción enviada incluye varios datos, entre ellos ([fuente](/developers/docs/transactions/)):
-- **Receptor**: La dirección receptora (se consulta como "to")
-- **Firma**: Mientras que las claves privadas del emisor firman una transacción, lo que podemos consultar con SQL es la dirección pública del emisor ("from").
-- **Valor**: Esta es la cantidad de ETH transferida (ver la columna `ether`).
-- **Datos**: Esta es la información arbitraria que ha sido hasheada (ver la columna `data`).
-- **gasLimit**: Cantidad máxima de unidades de gas que puede consumir la transacción. Las unidades de gas representan pasos computacionales.
-- **maxPriorityFeePerGas**: La cantidad máxima de gas que se incluirá como recompensa para el minero.
-- **maxFeePerGas**: La cantidad máxima de gas que se pagará por la transacción (incluye el baseFeePerGas y el maxPriorityFeePerGas).
+- **Destinatario**: la dirección de recepción (consultada como "to")
+- **Firma**: aunque las claves privadas de un remitente firman una transacción, lo que podemos consultar con SQL es la dirección pública de un remitente ("from").
+- **Valor**: esta es la cantidad de ETH transferido (véase la columna `ether`).
+- **Datos**: son datos arbitrarios que se han hasheado (véase la columna `data`).
+- **gasLimit**: la cantidad máxima de unidades de gas que puede consumir la transacción. Las unidades de gas representan pasos computacionales.
+- **maxPriorityFeePerGas**: la cantidad máxima de gas que se incluirá como propina para el minero.
+- **maxFeePerGas**: la cantidad máxima de gas que se está dispuesto a pagar por la transacción (incluye baseFeePerGas y maxPriorityFeePerGas).
-Podemos consultar estos datos específicos para transacciones a la dirección pública de la Ethereum Foundation:
+Podemos consultar estos datos específicos para las transacciones a la dirección pública de la Ethereum Foundation:
```sql
SELECT
@@ -106,15 +103,15 @@ ORDER BY block_time DESC
### Bloques {#blocks}
-Cada transacción cambiará el estado de la máquina virtual de Ethereum ([EVM](/developers/docs/evm/)) ([fuente](/developers/docs/transactions/)). Las transacciones son transmitidas a la red para ser verificadas e incluidas en un bloque. Cada transacción es asociada con un número de bloque. Para ver la información, podemos consultar un número de bloque específico: 12396854 (el bloque más reciente entre las transacciones de la Ethereum Foundation al momento de escribir este artículo, 5/11/21).
+Cada transacción cambiará el estado de la máquina virtual de Ethereum ([EVM](/developers/docs/evm/)) ([fuente](/developers/docs/transactions/)). Las transacciones se transmiten a la red para ser verificadas e incluidas en un bloque. Cada transacción está asociada a un número de bloque. Para ver los datos, podríamos consultar un número de bloque específico: 12396854 (el bloque más reciente entre las transacciones de la Ethereum Foundation en el momento de escribir este artículo, 11/5/21).
-Además, cuando consultamos los dos siguientes bloques, podemos ver que cada bloque contiene el hash del anterior (hash principal o parent hash), lo que ilustra cómo se forma la cadena de bloques.
+Además, cuando consultamos los dos bloques siguientes, podemos ver que cada bloque contiene el hash del bloque anterior (es decir, el hash padre), lo que ilustra cómo se forma la cadena de bloques.
-Cada bloque contiene una referencia a su bloque principal o parent. Esto se ve a continuación entre las columnas `hash` y `parent_hash` ([fuente](/developers/docs/blocks/)):
+Cada bloque contiene una referencia a su bloque padre. Esto se muestra a continuación entre las columnas `hash` y `parent_hash` ([fuente](/developers/docs/blocks/)):

-Esta es la [consulta](https://duneanalytics.com/queries/44856/88292) en Dune Analytics:
+Esta es la [consulta](https://dune.com/queries/44856/88292) en Dune Analytics:
```sql
SELECT
@@ -128,18 +125,18 @@ WHERE "number" = 12396854 OR "number" = 12396855 OR "number" = 12396856
LIMIT 10
```
-Podemos examinar un bloque consultando el momento, el número de bloque, la dificultad, el hash, el parent hash y el nonce.
+Podemos examinar un bloque consultando la hora, el número de bloque, la dificultad, el hash, el hash padre y el nonce.
-Lo único no cubierto por esta consulta es la _lista de transacción_, que requiere una consulta por separado abajo y la _raíz de estado_. Un nodo completo o archivado almacenará todas las transacciones y transiciones de estado, permitiendo a los clientes consultar el estado de la cadena en cualquier momento. Como esto requiere gran espacio de almacenamiento, podemos separar la información de la cadena de la información del estado:
+Lo único que no cubre esta consulta es la _lista de transacciones_, que requiere una consulta separada a continuación, y la _raíz de estado_. Un nodo completo o de archivo almacenará todas las transacciones y transiciones de estado, lo que permite a los clientes consultar el estado de la cadena en cualquier momento. Como esto requiere un gran espacio de almacenamiento, podemos separar los datos de la cadena de los datos de estado:
-- Información de la cadena (listado de bloques, transacciones)
-- Información de estado (resultado del estado de transición de cada transacción)
+- Datos de la cadena (lista de bloques, transacciones)
+- Datos de estado (resultado de la transición de estado de cada transacción)
-La raíz de estado entra en el segundo grupo y es información _implícita_ (no almacenada en la cadena), mientras que la información de la cadena es explícita y se almacena en la propia cadena ([fuente](https://ethereum.stackexchange.com/questions/359/where-is-the-state-data-stored)).
+La raíz de estado entra en esta última categoría y son datos _implícitos_ (no se almacenan en la cadena), mientras que los datos de la cadena son explícitos y se almacenan en la propia cadena ([fuente](https://ethereum.stackexchange.com/questions/359/where-is-the-state-data-stored)).
-Para este tutorial, nos enfocaremos en la información en la cadena que _puede_ ser consultada con SQL a través de Dune Analytics.
+En este tutorial, nos centraremos en los datos en la cadena que _pueden_ consultarse con SQL a través de Dune Analytics.
-Como se mencionó anteriormente, cada bloque contiene un listado de transacciones, que podemos consultar filtrando por bloque específico. Probaremos el bloque más reciente, 12396854:
+Como se ha indicado anteriormente, cada bloque contiene una lista de transacciones; podemos consultarla filtrando por un bloque específico. Probaremos el bloque más reciente, 12396854:
```sql
SELECT * FROM ethereum."transactions"
@@ -147,13 +144,13 @@ WHERE block_number = 12396854
ORDER BY block_time DESC`
```
-Aquí está el resultado de la consulta de SQL en Dune:
+Este es el resultado de SQL en Dune:

-La adición de este único bloque a la cadena cambia el estado de la máquina virtual de Ethereum ([EVM](/developers/docs/evm/)). Centenares de transacciones, a veces decenas, son verificadas a la vez. En este caso específico, se incluyeron 222 transacciones.
+La adición de este único bloque a la cadena cambia el estado de la máquina virtual de Ethereum ([EVM](/developers/docs/evm/)). Se verifican a la vez docenas, a veces cientos, de transacciones. En este caso concreto, se incluyeron 222 transacciones.
-Para ver cuántas fueron exitosas, agregaríamos otro filtro para contar transacciones exitosas:
+Para ver cuántas tuvieron éxito, añadiríamos otro filtro para contar las transacciones exitosas:
```sql
WITH temp_table AS (
@@ -166,26 +163,26 @@ SELECT
FROM temp_table
```
-Para el bloque 12396854, de un total de 222 transacciones, 204 fueron verificadas con éxito:
+Para el bloque 12396854, de un total de 222 transacciones, 204 se verificaron con éxito:

-Las solicitudes de transacciones ocurren docenas de veces por segundo, pero los bloques son consignados aproximadamente una vez cada 15 segundos ([fuente](/developers/docs/blocks/)).
+Las solicitudes de transacciones se producen docenas de veces por segundo, pero los bloques se confirman aproximadamente una vez cada 15 segundos ([fuente](/developers/docs/blocks/)).
-Para ver que se produce un bloque aproximadamente cada 15 segundos, podemos tomar el número de segundos en un día (86.400) dividido por 15 para obtener un promedio estimado del número de bloques por día (~ 5760).
+Para ver que se produce un bloque aproximadamente cada 15 segundos, podríamos tomar el número de segundos de un día (86 400) y dividirlo por 15 para obtener un número medio estimado de bloques por día (~5760).
-El cuadro de bloques de Ethereum producidos por día (2016 - presente) es:
+El gráfico de bloques de Ethereum producidos por día (2016 - actualidad) es:

-El número promedio de bloques producidos a diario durante este periodo es ~5,874:
+El número promedio de bloques producidos diariamente durante este período de tiempo es de ~5874:

Las consultas son:
```sql
-# query to visualize number of blocks produced daily since 2016
+# consulta para visualizar el número de bloques producidos diariamente desde 2016
SELECT
DATE_TRUNC('day', time) AS dt,
@@ -194,7 +191,7 @@ FROM ethereum."blocks"
GROUP BY dt
OFFSET 1
-# average number of blocks produced per day
+# número promedio de bloques producidos por día
WITH temp_table AS (
SELECT
@@ -209,13 +206,13 @@ SELECT
FROM temp_table
```
-El número promedio de bloques producidos por día desde 2016 es ligeramente superior: 5874. Alternativamente, dividir 86.400 segundos por 5874 bloques promedio da como resultado 14,7 segundos o aproximadamente un bloque cada 15 segundos.
+El número promedio de bloques producidos por día desde 2016 es ligeramente superior a esa cifra, con 5874. Alternativamente, si se dividen 86 400 segundos por un promedio de 5874 bloques, el resultado es de 14,7 segundos o, aproximadamente, un bloque cada 15 segundos.
### Gas {#gas}
-Los bloques están limitados en tamaño. El tamaño máximo de bloque es dinámico y varía de acuerdo a la demanda de la red entre 12.500.000 y 25.000.000 unidades. Los límites son necesarios para prevenir arbitrariamente los tamaños grandes de bloques, que ponen presión en los nodos completos en términos de espacio en disco y requisitos de velocidad ([fuente](/developers/docs/blocks/)).
+Los bloques tienen un tamaño limitado. El tamaño máximo de los bloques es dinámico y varía en función de la demanda de la red entre 12 500 000 y 25 000 000 de unidades. Se necesitan límites para evitar que los bloques de tamaño arbitrariamente grande sobrecarguen los nodos completos en cuanto a espacio en disco y requisitos de velocidad ([fuente](/developers/docs/blocks/)).
-Una manera de conceptualizar el límite de gas de un bloque es pensar en esto como el **suministro** de espacio de bloque disponible en el que se agrupan las transacciones. El límite de gas de los bloques puede ser consultado y visualizado desde 2016 hasta el presente:
+Una forma de conceptualizar el límite de gas de un bloque es pensar en él como la **oferta** de espacio de bloque disponible para agrupar las transacciones. El límite de gas de los bloques puede consultarse y visualizarse desde 2016 hasta la actualidad:

@@ -228,7 +225,7 @@ GROUP BY dt
OFFSET 1
```
-Luego está el gas real utilizado a diario para pagar por la computación realizada en la cadena de Ethereum (ej: enviar transacciones, llamar a un contrato inteligente, mintear un NFT). Esta es la **demanda** para el espacio de bloques disponible en Ethereum:
+Luego está el gas real que se utiliza diariamente para pagar la computación realizada en la cadena de Ethereum (es decir, enviar una transacción, llamar a un contrato inteligente, acuñar un NFT). Esta es la **demanda** de espacio de bloque disponible en Ethereum:

@@ -241,17 +238,17 @@ GROUP BY dt
OFFSET 1
```
-También podemos yuxtaponer estos dos gráficos para ver cómo **la demanda y el suministro** se alínean:
+También podemos yuxtaponer estos dos gráficos para ver cómo se alinean la **demanda y la oferta**:

-Así, podemos comprender los precios del gas como una función de la demanda de espacio de bloques de Ethereum dado un suministro disponible.
+Por lo tanto, podemos entender los precios del gas como una función de la demanda de espacio de bloque de Ethereum, dada la oferta disponible.
-Finalmente, puede que querramos consultar el promedio diario del precio del gas para la cadena de Ethereum; sin embargo, hacerlo puede resultar en un tiempo especialmente largo de consulta, por lo que filtraremos nuestra consulta a la cantidad promedio de gas pagado por transacción por la Ethereum Foundation.
+Por último, es posible que queramos consultar el precio promedio diario del gas para la cadena de Ethereum; sin embargo, si lo hacemos, el tiempo de consulta será especialmente largo, por lo que filtraremos nuestra consulta a la cantidad promedio de gas pagada por transacción por la Ethereum Foundation.

-Podemos ver los precios de gas pagados por todas las transacciones hechas a la dirección de la Ethereum Foundation a lo largo de los años. Esta es la consulta:
+Podemos ver los precios del gas pagados por todas las transacciones realizadas a la dirección de la Ethereum Foundation a lo largo de los años. Esta es la consulta:
```sql
SELECT
@@ -265,8 +262,8 @@ ORDER BY block_time DESC
### Resumen {#summary}
-Con este tutorial, podemos entender conceptos fundamentales de Ethereum y cómo funciona la cadena de bloques de Ethereum consultando y obteniendo una idea de datos en cadena.
+Con este tutorial, entendemos los conceptos fundamentales de Ethereum y cómo funciona la cadena de bloques de Ethereum consultando y familiarizándonos con los datos en la cadena.
-El panel que contiene todo el código utilizado en este tutorial se puede encontrar [aquí](https://duneanalytics.com/paulapivat/Learn-Ethereum).
+El panel de control que contiene todo el código utilizado en este tutorial se puede encontrar [aquí](https://dune.com/paulapivat/Learn-Ethereum).
-Para más usos de datos para explorar web3 [encuéntreme en Twitter](https://twitter.com/paulapivat).
+Para ver más usos de los datos para explorar la web3, [encuéntreme en Twitter](https://twitter.com/paulapivat).
From 823eb4c06a6f4595d35dd6cb152916285fc8fd55 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:31 -0300
Subject: [PATCH 287/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
---
.../pos/rewards-and-penalties/index.md | 58 +++++++++----------
1 file changed, 29 insertions(+), 29 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
index 13ad7358dcc..45396f93b6a 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
@@ -4,7 +4,7 @@ description: Descubra más detalles sobre los incentivos en el protocolo en la p
lang: es
---
-Ethereum está protegido gracias al uso de su criptomoneda nativa, el ether (ETH). Los operadores de nodos que deseen participar en la validación de los bloques e identificar al jefe de la cadena depositan ether en el [contrato de depósito](/staking/deposit-contract/) en Ethereum. Luego se les paga en ether para ejecutar un software de validación que compruebe la validez de los nuevos bloques recibidos a través de la red entre pares y aplicar el algoritmo de elección de bifurcación para identificar la cabeza de la cadena.
+Ethereum está protegido gracias al uso de su criptomoneda nativa, el ether (ETH). Los operadores de nodos que deseen participar en la validación de bloques y en la identificación de la cabeza de la cadena, depositan ether en el [contrato de depósito](/staking/deposit-contract/) en Ethereum. Luego se les paga en ether para ejecutar un software de validación que compruebe la validez de los nuevos bloques recibidos a través de la red entre pares y aplicar el algoritmo de elección de bifurcación para identificar la cabeza de la cadena.
Hay dos funciones principales para un validador: 1) comprobar los nuevos bloques y «certificar» si son válidos, 2) proponer nuevos bloques cuando se seleccionan al azar del grupo total de validadores. Si el validador no realiza ninguna de estas tareas cuando se le pide, pierde un pago de ether. A veces, los validadores también tienen la tarea de agregar firmas y participar en comités de sincronización.
@@ -14,55 +14,55 @@ Todas las recompensas y penalizaciones se aplican una vez por época.
Siga leyendo si desea ahondar más al respecto...
-## Penalizaciones y recompensas {#rewards}
+## Recompensas y penalizaciones {#rewards}
### Recompensas {#rewards}
-Los validadores reciben recompensas cuando hacen votos que son consistentes con la mayoría de otros validadores, cuando proponen bloques y cuando participan en comités de sincronización. El valor de las recompensas en cada época se calcula a partir de una `base_reward`. Esta es la unidad de base a partir de la cual se calculan otras recompensas. La `base_reward` representa la recompensa media recibida por un validador en condiciones óptimas por época. Esto se calcula a partir del saldo efectivo del validador y el número total de validadores activos de la siguiente manera:
+Los validadores reciben recompensas cuando hacen votos que son consistentes con la mayoría de otros validadores, cuando proponen bloques y cuando participan en comités de sincronización. El valor de las recompensas en cada época se calcula a partir de una `base_reward`. Esta es la unidad de base a partir de la cual se calculan otras recompensas. La `base_reward` representa la recompensa media que recibe un validador en condiciones óptimas por época. Esto se calcula a partir del saldo efectivo del validador y el número total de validadores activos de la siguiente manera:
```
base_reward = effective_balance * (base_reward_factor / (base_rewards_per_epoch * sqrt(sum(active_balance))))
```
-donde `base_reward_factor` es 64, `base_rewards_per_epoch` es 4 y `suma (balance activo)` es el ether total en participación en todos los validadores activos.
+donde `base_reward_factor` es 64, `base_rewards_per_epoch` es 4 y `sum(active balance)` es el ether total en staking entre todos los validadores activos.
-Esto significa que la recompensa de base es proporcional al saldo efectivo del validador e inversamente proporcional al número de validadores en la red. Cuantos más validadores, mayor es la emisión general (como `sqrt(N)`, pero cuanto menor es la `base_reward` por validador (como `1/sqrt(N)`). Estos factores influyen en la APR de un nodo de participación. Lea la argumentación de esto en [Notas de Vitalik](https://notes.ethereum.org/@vbuterin/rkhCgQteN?type=view#Base-rewards).
+Esto significa que la recompensa de base es proporcional al saldo efectivo del validador e inversamente proporcional al número de validadores en la red. Cuantos más validadores, mayor será la emisión total (como `sqrt(N)`), pero menor será la `base_reward` por validador (como `1/sqrt(N)`). Estos factores influyen en la APR de un nodo de participación. Lea la justificación de esto en [las notas de Vitalik](https://notes.ethereum.org/@vbuterin/rkhCgQteN?type=view#Base-rewards).
La recompensa total se calcula entonces como la suma de cinco componentes, cada uno de los cuales tiene una ponderación que determina cuánto suma cada componente a la recompensa total. Los componentes son:
```
-1. source vote: the validator has made a timely vote for the correct source checkpoint
-2. target vote: the validator has made a timely vote for the correct target checkpoint
-3. head vote: the validator has made a timely vote for the correct head block
-4. sync committee reward: the validator has participated in a sync committee
-5. proposer reward: the validator has proposed a block in the correct slot
+1. source vote: el validador ha realizado un voto a tiempo para el punto de control de origen correcto
+2. target vote: el validador ha realizado un voto a tiempo para el punto de control de destino correcto
+3. head vote: el validador ha realizado un voto a tiempo para el bloque de cabeza correcto
+4. sync committee reward: el validador ha participado en un comité de sincronización
+5. proposer reward: el validador ha propuesto un bloque en la ranura correcta
```
Las ponderaciones para cada componente son las siguientes:
```
-TIMELY_SOURCE_WEIGHT uint64(14)
-TIMELY_TARGET_WEIGHT uint64(26)
-TIMELY_HEAD_WEIGHT uint64(14)
-SYNC_REWARD_WEIGHT uint64(2)
-PROPOSER_WEIGHT uint64(8)
+TIMELY_SOURCE_WEIGHT uint64(14)
+TIMELY_TARGET_WEIGHT uint64(26)
+TIMELY_HEAD_WEIGHT uint64(14)
+SYNC_REWARD_WEIGHT uint64(2)
+PROPOSER_WEIGHT uint64(8)
```
-Estos pesos suman 64. La recompensa se calcula como la suma de los pesos aplicables divididos entre 64. Un validador que haya hecho votos oportunos de fuente, destino y cabeza, propuesto un bloqueo y participado en un comité de sincronización podría recibir `64/64 * base_reward == base_reward`. Sin embargo, un validador no suele ser un proponente de bloques, por lo que su recompensa máxima es `64-8 /64 * base_reward == 7/8 * base_reward`. Los validadores que no son proponentes de bloques ni están en un comité de sincronización pueden recibir `64-8-2 / 64 * base_reward == 6.75/8 * base_reward`.
+Estos pesos suman 64. La recompensa se calcula como la suma de los pesos aplicables divididos entre 64. Un validador que haya realizado votos de origen, destino y cabeza a tiempo, haya propuesto un bloque y haya participado en un comité de sincronización podría recibir `64/64 * base_reward == base_reward`. Sin embargo, un validador no suele ser un proponente de bloques, por lo que su recompensa máxima es `64-8 /64 * base_reward == 7/8 * base_reward`. Los validadores que no son proponentes de bloques ni están en un comité de sincronización pueden recibir `64-8-2 / 64 * base_reward == 6.75/8 * base_reward`.
-Se añade una recompensa adicional para incentivar las certificaciones rápidas. Es el `inclusion_delay_reward`. Tiene un valor igual al `base_reward` multiplicado por `1/retraso` donde `retraso` es el número de ranuras que separan la propuesta de bloque y la certificación. Por ejemplo, si la certificación se presenta dentro de una ranura de la propuesta de bloque, el certificador recibe `base_reward * 1/1 == base_reward`. Si la certificación llega en la siguiente ranura, el certificador recibe`base_reward * 1/2`y así sucesivamente.
+Se añade una recompensa adicional para incentivar las certificaciones rápidas. Esta es la `inclusion_delay_reward`. Tiene un valor igual a la `base_reward` multiplicada por `1/delay`, donde `delay` es el número de ranuras que separan la propuesta de bloque y la atestación. Por ejemplo, si la atestación se envía dentro de una ranura de la propuesta de bloque, el atestador recibe `base_reward * 1/1 == base_reward`. Si la atestación llega en la siguiente ranura, el atestador recibe `base_reward * 1/2` y así sucesivamente.
-Los proponentes de bloques reciben `8 / 64 * base_reward` por **cada certificación válida** incluida en el bloque, por lo que el valor real de la recompensa se escala con el número de validadores de certificación. Los proponentes de bloques también pueden aumentar su recompensa al incluir evidencia de mal comportamiento por parte de otros validadores en su bloque propuesto. Estas recompensas son los alicientes que fomentan la honestidad del validador. Un proponente de bloques que incluya la reducción será recompensado con `slashed_validators_effective_balance / 512`.
+Los proponentes de bloques reciben `8 / 64 * base_reward` por **cada atestación válida** incluida en el bloque, por lo que el valor real de la recompensa escala con el número de validadores que atestan. Los proponentes de bloques también pueden aumentar su recompensa al incluir evidencia de mal comportamiento por parte de otros validadores en su bloque propuesto. Estas recompensas son los alicientes que fomentan la honestidad del validador. Un proponente de bloque que incluya un «slashing» será recompensado con `slashed_validators_effective_balance / 512`.
### Penalizaciones {#penalties}
Hasta ahora hemos considerado validadores con un comportamiento ejemplar, pero ¿qué pasa con los validadores que no hacen votos portunamente de cabeza, fuente y destino, o se toman demasiado tiempo en hacerlos?
-Las penalizaciones por no alcanzar el objetivo y los votos de la fuente son iguales a las recompensas que el certificador habría recibido si las hubiera presentado. Esto significa que en lugar de tener la recompensa añadida a su saldo, tienen un valor igual eliminado de su saldo. No hay penalización por perder el voto de la cabeza (es decir, los votos de la cabeza solo son recompensados, nunca penalizados). No hay ninguna penalización asociada con el `inclusion_delay`: la recompensa simplemente no se añadirá al saldo del validador. Tampoco hay penalización por fallar en proponer un bloque.
+Las penalizaciones por no alcanzar el objetivo y los votos de la fuente son iguales a las recompensas que el certificador habría recibido si las hubiera presentado. Esto significa que en lugar de tener la recompensa añadida a su saldo, tienen un valor igual eliminado de su saldo. No hay penalización por omitir el voto de cabeza (es decir, los votos de cabeza solo se recompensan, nunca se penalizan). No hay ninguna penalización asociada con el `inclusion_delay`; la recompensa simplemente no se añadirá al saldo del validador. Tampoco hay penalización por fallar en proponer un bloque.
-Lea más sobre recompensas y penalizaciones en las [especificaciones de consenso](https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/beacon-chain.md). Las recompensas y las penalizaciones se ajustaron en la actualización de Bellatrix, vea a Danny Ryan y Vitalik comentarlo en este [vídeo Eche un vistazo a una propuesta de mejora de Ethereum](https://www.youtube.com/watch?v=iaAEGs1DMgQ).
+Lea más sobre recompensas y penalizaciones en las [especificaciones de consenso](https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/beacon-chain.md). Las recompensas y penalizaciones se ajustaron en la actualización Bellatrix. Vea a Danny Ryan y a Vitalik discutir esto en este [vídeo de «Peep an EIP»](https://www.youtube.com/watch?v=iaAEGs1DMgQ).
-## Recortes {#slashing}
+## Slashing {#slashing}
Los recortes son una acción más grave que resulta en la eliminación forzada de un validador de la red y una pérdida asociada de su ether apostado. Hay tres formas en las que se puede recortar un validador, todas ellas equivalen a la propuesta deshonesta o la certificación de bloques:
@@ -70,21 +70,21 @@ Los recortes son una acción más grave que resulta en la eliminación forzada d
- Certificar un bloque que «rodea» a otro (cambiando completamente la historia).
- Por «doble votación» al certificar a dos candidatos para el mismo bloque.
-Si se detectan estas acciones, el validador se recorta. Esto significa que 1/32 de su ether apostado (hasta un máximo de 1 ether) se quema inmediatamente, luego comienza un período de eliminación de 36 días. Durante este período de eliminación, la participación del validador se desvanece gradualmente. En el punto medio (18.º día) se aplica una penalización adicional cuya magnitud se prorratea con el ether total en participación de todos los validadores recortados en los 36 días anteriores al evento de recorte. Esto significa que cuando se recortan más validadores, la magnitud del recorte aumenta. El recorte máximo es el balance efectivo completo de todos los validadores recortados (es decir, si hay muchos validadores que se recortan, podrían perder toda su participación). Por otro lado, un solo evento de recorte aislado solo quema una pequeña parte de la participación del validador. Esta penalización de punto medio que se prorratea con el número de validadores recortados se llama «pena de correlación».
+Si se detectan estas acciones, el validador se recorta. Esto quiere decir que 0,0078125 ETH se queman inmediatamente para un validador de 32 ETH (escalado linealmente con el balance activo), seguido de un periodo de eliminación de 36 días. Durante este período de eliminación, la participación del validador se desvanece gradualmente. En el punto medio (18.º día) se aplica una penalización adicional cuya magnitud se prorratea con el ether total en participación de todos los validadores recortados en los 36 días anteriores al evento de recorte. Esto significa que cuando se recortan más validadores, la magnitud del recorte aumenta. El «slashing» máximo es el saldo efectivo completo de todos los validadores que han sufrido «slashing» (es decir, si hay muchos validadores que sufren «slashing», podrían perder toda su participación). Por otro lado, un solo evento de recorte aislado solo quema una pequeña parte de la participación del validador. Esta penalización de punto medio que se prorratea con el número de validadores recortados se llama «pena de correlación».
-## Pérdida por inactividad {#inactivity-leak}
+## Fuga por inactividad {#inactivity-leak}
Si la capa de consenso ha pasado más de cuatro épocas sin finalizar, se activa un protocolo de emergencia llamado «pérdida por inactividad». El objetivo final de la pérdida por inactividad es crear las condiciones necesarias para que la cadena recupere la finalidad. Como se explicó anteriormente, la finalidad requiere una mayoría de 2/3 del ether en participación para acordar los puntos de control de origen y destino. Si los validadores que representan más de 1/3 del total de validadores se desconectan o no envían las certificaciones correctas, entonces no es posible que una supermayoría de 2/3 finalice los puntos de control. La pérdida por inactividad permite que la participación relativa a los validadores inactivos se desvanezca gradualmente hasta que controlen menos de 1/3 de la participación total, lo que permite que los validadores activos restantes finalicen la cadena. Por grande que sea el grupo de validadores inactivos, los validadores activos restantes eventualmente controlarán >2/3 de la participación. ¡La pérdida de participación es un fuerte incentivo para que los validadores inactivos se reactiven lo antes posible! Se encontró un caso de pérdida por inactividad en la red de pruebas de Medalla, cuando < 66 % de los validadores activos pudieron llegar a un consenso sobre la cabeza actual de la cadena de bloques. ¡La pérdida por inactividad se activó y finalmente se recuperó la finalidad!
El diseño de recompensa, penalización y recorte del mecanismo de consenso anima a los validadores individuales a comportarse correctamente. No obstante, de estas opciones de diseño surge un sistema que incentiva poderosamente la distribución equitativa de validadores entre múltiples clientes, y debería desincentivar con ahínco el dominio de un solo cliente.
-## Leer más {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Actualización de Ethereum: la capa de incentivos](https://eth2book.info/altair/part2/incentives)
-- [Incentivos en el protocolo híbrido Casper de Ethereum](https://arxiv.org/pdf/1903.04205.pdf)
-- [Especificaciones anotadas de Vitalik](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#rewards-and-penalties-1)
-- [Consejos para la prevención de recortes en Eth2](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50)
-- [Análisis de las penalizaciones por recortes bajo EIP-7251](https://ethresear.ch/t/slashing-penalty-analysis-eip-7251/16509)
+- [Actualizando Ethereum: la capa de incentivos](https://eth2book.info/altair/part2/incentives)
+- [Incentivos en el protocolo Casper híbrido de Ethereum](https://arxiv.org/pdf/1903.04205.pdf)
+- [Especificaciones comentadas de Vitalik](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#rewards-and-penalties-1)
+- [Consejos para la prevención del «slashing» en Eth2](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50)
+- [Análisis de las penalizaciones por «slashing» bajo la EIP-7251](https://ethresear.ch/t/slashing-penalty-analysis-eip-7251/16509)
_Fuentes_
From 96117ded5655b5a0658cea4cc4c0994234eefcbf Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:34 -0300
Subject: [PATCH 288/589] update(i18n):
public/content/translations/es/developers/docs/evm/opcodes/index.md
---
.../es/developers/docs/evm/opcodes/index.md | 327 +++++++++---------
1 file changed, 165 insertions(+), 162 deletions(-)
diff --git a/public/content/translations/es/developers/docs/evm/opcodes/index.md b/public/content/translations/es/developers/docs/evm/opcodes/index.md
index 7a926fc3c5b..3fd0d18d578 100644
--- a/public/content/translations/es/developers/docs/evm/opcodes/index.md
+++ b/public/content/translations/es/developers/docs/evm/opcodes/index.md
@@ -4,171 +4,174 @@ description: Una lista de todos los opcodes disponibles para la máquina virtual
lang: es
---
-## Resumen {#overview}
+## Presentación {#overview}
-Esta es una versión actualizada de la página de referencia de la EVM en [wolflo/evm-opcodes](https://github.com/wolflo/evm-opcodes). También extraído del [protocolo](https://ethereum.github.io/yellowpaper/paper.pdf), el[Jello Paper](https://jellopaper.org/evm/), y la implementación [geth](https://github.com/ethereum/go-ethereum). Pretende ser una referencia accesible, pero no es particularmente rigurosa. Si quiere asegurarse a ciencia cierta y conocer todos los casos extremos, es aconsejable utilizar el Jello Paper o una implementación cliente.
+Esta es una versión actualizada de la página de referencia de EVM en [wolflo/evm-opcodes](https://github.com/wolflo/evm-opcodes).
+También extraído del [Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf), del [Jello Paper](https://jellopaper.org/evm/) y de la implementación de [geth](https://github.com/ethereum/go-ethereum).
+Pretende ser una referencia accesible, pero no es particularmente rigurosa.
+Si quiere asegurarse a ciencia cierta y conocer todos los casos extremos, es aconsejable utilizar el Jello Paper o una implementación cliente.
-¿Busca una referencia interactiva? Visite [evm.codes.](https://www.evm.codes/).
+¿Busca una referencia interactiva? Consulte [evm.codes](https://www.evm.codes/).
-Para operaciones con costes dinámicos de gas, véase [gas.md](https://github.com/wolflo/evm-opcodes/blob/main/gas.md).
+Para las operaciones con costes de gas dinámicos, consulte [gas.md](https://github.com/wolflo/evm-opcodes/blob/main/gas.md).
💡 Consejo rápido: para ver líneas enteras, utilice `[shift] + scroll` para desplazarse horizontalmente en el escritorio.
-| Pila | Nombre | Gas | Pila inicial | Pila resultante | Mem / Almacenamiento | Notas |
-|:-----:|:-------------- |:--------------------------------------------------------------------------------------------------:|:------------------------------------------------ |:-------------------------------------------- |:----------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 00 | DETENER | 0 | | | | halt execution |
-| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 addition modulo 2\*\*256 |
-| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 multiplication modulo 2\*\*256 |
-| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 addition modulo 2\*\*256 |
-| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 division |
-| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 division |
-| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 modulus |
-| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 modulus |
-| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 addition modulo N |
-| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 multiplication modulo N |
-| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 exponentiation modulo 2\*\*256 |
-| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | [sign extend](https://wikipedia.org/wiki/Sign_extension) `x` from `(b+1)` bytes to 32 bytes |
-| 0C-0F | _invalid_ | | | | | |
-| 10 | LT | 3 | `a, b` | `a < b` | | uint256 less-than |
-| 11 | GT | 3 | `a, b` | `a > b` | | uint256 greater-than |
-| 12 | SLT | 3 | `a, b` | `a < b` | | int256 less-than |
-| 13 | SGT | 3 | `a, b` | `a > b` | | int256 greater-than |
-| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 equality |
-| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 iszero |
-| 16 | AND | 3 | `a, b` | `a && b` | | bitwise AND |
-| 17 | OR | 3 | `a, b` | `a \|\| b` | | bitwise OR |
-| 18 | XOR | 3 | `a, b` | `a ^ b` | | bitwise XOR |
-| 19 | NOT | 3 | `a` | `~a` | | bitwise NOT |
-| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | `i`th byte of (u)int256 `x`, from the left |
-| 1B | SHL | 3 | `shift, val` | `val << shift` | | shift left |
-| 1C | SHR | 3 | `shift, val` | `val >> shift` | | logical shift right |
-| 1D | SAR | 3 | `shift, val` | `val >> shift` | | arithmetic shift right |
-| 1E-1F | _invalid_ | | | | | |
-| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 |
-| 21-2F | _invalid_ | | | | | |
-| 30 | ADDRESS | 2 | `.` | `address(this)` | | address of executing contract |
-| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | balance, in wei |
-| 32 | ORIGIN | 2 | `.` | `tx.origin` | | address that originated the tx |
-| 33 | CALLER | 2 | `.` | `msg.sender` | | address of msg sender |
-| 34 | CALLVALUE | 2 | `.` | `msg.value` | | msg value, in wei |
-| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | read word from msg data at index `idx` |
-| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | length of msg data, in bytes |
-| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | copy msg data |
-| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | length of executing contract's code, in bytes |
-| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | copy executing contract's bytecode |
-| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | gas price of tx, in wei per unit gas [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) |
-| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | size of code at addr, in bytes |
-| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | copy code from `addr` |
-| 3D | RETURNDATASIZE | 2 | `.` | `size` | | size of returned data from last external call, in bytes |
-| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | copy returned data from last external call |
-| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `hash` | | hash = addr.exists ? keccak256(addr.code) : 0 |
-| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | |
-| 41 | COINBASE | 2 | `.` | `block.coinbase` | | dirección del proponente del bloque actual |
-| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | timestamp of current block |
-| 43 | NUMBER | 2 | `.` | `block.number` | | number of current block |
-| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | randomness beacon |
-| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | gas limit of current block |
-| 46 | CHAINID | 2 | `.` | `chain_id` | | push current [chain id](https://eips.ethereum.org/EIPS/eip-155) onto stack |
-| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | balance of executing contract, in wei |
-| 48 | BASEFEE | 2 | `.` | `block.basefee` | | base fee of current block |
-| 49 | BLOBHASH | 3 | `idx` | `tx.blob_versioned_hashes[idx]` | | [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) |
-| 4A | BLOBBASEFEE | 2 | `.` | `block.blobbasefee` | | tarifa base BLOB para el bloque actual ([EIP-7516](https://eips.ethereum.org/EIPS/eip-7516)) |
-| 4B-4F | _invalid_ | | | | | |
-| 50 | POP | 2 | `_anon` | `.` | | remove item from top of stack and discard it |
-| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | read word from memory at offset `ost` |
-| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | write a word to memory |
-| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | write a single byte to memory |
-| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | read word from storage |
-| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | write word to storage |
-| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` mark that `pc` is only assigned if `dst` is a valid jumpdest |
-| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ? dst : $pc + 1` |
-| 58 | PC | 2 | `.` | `$pc` | | program counter |
-| 59 | MSIZE | 2 | `.` | `len(mem)` | | size of memory in current execution context, in bytes |
-| 5A | GAS | 2 | `.` | `gasRemaining` | | |
-| 5B | JUMPDEST | 1 | | | mark valid jump destination | a valid jump destination for example a jump destination not inside the push data |
-| 5C | TLOAD | 100 | `key` | `tstorage[key]` | | leer palabra de almacenamiento transitorio ([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) |
-| 5D | TSTORE | 100 | `key, val` | `.` | tstorage[key] := val | escribir palabra a almacenamiento transitorio ([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) |
-| 5E | MCOPY | 3+3\*palabras+[A0](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `dstOst, ost, len` | `.` | mem[dstOst] := mem[ost:ost+len] | copia memoria de un área a otra ([EIP-5656](https://eips.ethereum.org/EIPS/eip-5656)) |
-| 5E | PUSH0 | 2 | `.` | `uint8` | | impulsar el valor constante 0 a la pila |
-| 60 | PUSH1 | 3 | `.` | `uint8` | | push 1-byte value onto stack |
-| 61 | PUSH2 | 3 | `.` | `uint16` | | push 2-byte value onto stack |
-| 62 | PUSH3 | 3 | `.` | `uint24` | | push 3-byte value onto stack |
-| 63 | PUSH4 | 3 | `.` | `uint32` | | push 4-byte value onto stack |
-| 64 | PUSH5 | 3 | `.` | `uint40` | | push 5-byte value onto stack |
-| 65 | PUSH6 | 3 | `.` | `uint48` | | push 6-byte value onto stack |
-| 66 | PUSH7 | 3 | `.` | `uint56` | | push 7-byte value onto stack |
-| 67 | PUSH8 | 3 | `.` | `uint64` | | push 8-byte value onto stack |
-| 68 | PUSH9 | 3 | `.` | `uint72` | | push 9-byte value onto stack |
-| 69 | PUSH10 | 3 | `.` | `uint80` | | push 10-byte value onto stack |
-| 6A | PUSH11 | 3 | `.` | `uint88` | | push 11-byte value onto stack |
-| 6B | PUSH12 | 3 | `.` | `uint96` | | push 12-byte value onto stack |
-| 6C | PUSH13 | 3 | `.` | `uint104` | | push 13-byte value onto stack |
-| 6D | PUSH14 | 3 | `.` | `uint112` | | push 14-byte value onto stack |
-| 6E | PUSH15 | 3 | `.` | `uint120` | | push 15-byte value onto stack |
-| 6F | PUSH16 | 3 | `.` | `uint128` | | push 16-byte value onto stack |
-| 70 | PUSH17 | 3 | `.` | `uint136` | | push 17-byte value onto stack |
-| 71 | PUSH18 | 3 | `.` | `uint144` | | push 18-byte value onto stack |
-| 72 | PUSH19 | 3 | `.` | `uint152` | | push 19-byte value onto stack |
-| 73 | PUSH20 | 3 | `.` | `uint160` | | push 20-byte value onto stack |
-| 74 | PUSH21 | 3 | `.` | `uint168` | | push 21-byte value onto stack |
-| 75 | PUSH22 | 3 | `.` | `uint176` | | push 22-byte value onto stack |
-| 76 | PUSH23 | 3 | `.` | `uint184` | | push 23-byte value onto stack |
-| 77 | PUSH24 | 3 | `.` | `uint192` | | push 24-byte value onto stack |
-| 78 | PUSH25 | 3 | `.` | `uint200` | | push 25-byte value onto stack |
-| 79 | PUSH26 | 3 | `.` | `uint208` | | push 26-byte value onto stack |
-| 7A | PUSH27 | 3 | `.` | `uint216` | | push 27-byte value onto stack |
-| 7B | PUSH28 | 3 | `.` | `uint224` | | push 28-byte value onto stack |
-| 7C | PUSH29 | 3 | `.` | `uint232` | | push 29-byte value onto stack |
-| 7D | PUSH30 | 3 | `.` | `uint240` | | push 30-byte value onto stack |
-| 7E | PUSH31 | 3 | `.` | `uint248` | | push 31-byte value onto stack |
-| 7F | PUSH32 | 3 | `.` | `uint256` | | push 32-byte value onto stack |
-| 80 | DUP1 | 3 | `a` | `a, a` | | clone 1st value on stack |
-| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | clone 2nd value on stack |
-| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | clone 3rd value on stack |
-| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | clone 4th value on stack |
-| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | clone 5th value on stack |
-| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | clone 6th value on stack |
-| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | clone 7th value on stack |
-| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | clone 8th value on stack |
-| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | clone 9th value on stack |
-| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | clone 10th value on stack |
-| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | clone 11th value on stack |
-| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | clone 12th value on stack |
-| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | clone 13th value on stack |
-| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | clone 14th value on stack |
-| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | clone 15th value on stack |
-| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | clone 16th value on stack |
-| 90 | SWAP1 | 3 | `a, b` | `b, a` | | |
-| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | |
-| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | |
-| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | |
-| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | |
-| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | |
-| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) |
-| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) |
-| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG2(memory[ost:ost+len-1], topic0, topic1) |
-| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG3(memory[ost:ost+len-1], topic0, topic1, topic2) |
-| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) |
-| A5-EF | _invalid_ | | | | | |
-| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) |
-| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | same as DELEGATECALL, but does not propagate original msg.sender and msg.value |
-| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
-| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
-| F6-F9 | _invalid_ | | | | | |
-| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| FB-FC | _invalid_ | | | | | |
-| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
-| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | designated invalid opcode - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | |
-| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | envía todos los ETH a `addr`; si se ejecuta en la misma transacción en la que se creó el contrato lo destruye |
+| Pila | Nombre | Gas | Pila inicial | Pila resultante | Mem / Almacenamiento | Notas | |
+| :---: | :------------- | :---------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
+| 00 | DETENER | 0 | | | | detener ejecución | |
+| 01 | ADD | 3 | `a, b` | `a + b` | | adición (u)int256 módulo 2\*\*256 | |
+| 02 | MUL | 5 | `a, b` | `a * b` | | multiplicación (u)int256 módulo 2\*\*256 | |
+| 03 | SUB | 3 | `a, b` | `a - b` | | sustracción (u)int256 módulo 2\*\*256 | |
+| 04 | DIV | 5 | `a, b` | `a // b` | | división uint256 | |
+| 05 | SDIV | 5 | `a, b` | `a // b` | | división int256 | |
+| 06 | MOD | 5 | `a, b` | `a % b` | | módulo uint256 | |
+| 07 | SMOD | 5 | `a, b` | `a % b` | | módulo int256 | |
+| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | adición (u)int256 módulo N | |
+| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | multiplicación (u)int256 módulo N | |
+| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | exponenciación uint256 módulo 2\*\*256 | |
+| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | [extensión de signo](https://wikipedia.org/wiki/Sign_extension) de `x` desde `(b+1)` bytes a 32 bytes | |
+| 0C-0F | _inválido_ | | | | | | |
+| 10 | LT | 3 | `a, b` | `a < b` | | uint256 menor que | |
+| 11 | GT | 3 | `a, b` | `a > b` | | uint256 mayor que | |
+| 12 | SLT | 3 | `a, b` | `a < b` | | int256 menor que | |
+| 13 | SGT | 3 | `a, b` | `a > b` | | int256 mayor que | |
+| 14 | EQ | 3 | `a, b` | `a == b` | | igualdad (u)int256 | |
+| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 es cero | |
+| 16 | AND | 3 | `a, b` | `a && b` | | AND a nivel de bits | |
+| 17 | OR | 3 | `a, b` | `a \\|\\| b` | | OR a nivel de bits | |
+| 18 | XOR | 3 | `a, b` | `a ^ b` | | XOR a nivel de bits | |
+| 19 | NOT | 3 | `a` | `~a` | | NOT a nivel de bits | |
+| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | el `i`-ésimo byte de (u)int256 `x`, desde la izquierda | |
+| 1B | SHL | 3 | `shift, val` | `val << shift` | | desplazamiento a la izquierda | |
+| 1C | SHR | 3 | `shift, val` | `val >> shift` | | desplazamiento lógico a la derecha | |
+| 1D | SAR | 3 | `shift, val` | `val >> shift` | | desplazamiento aritmético a la derecha | |
+| 1E-1F | _inválido_ | | | | | | |
+| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 | |
+| 21-2F | _inválido_ | | | | | | |
+| 30 | ADDRESS | 2 | `.` | `address(this)` | | dirección del contrato en ejecución | |
+| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | saldo, en wei | |
+| 32 | ORIGIN | 2 | `.` | `tx.origin` | | dirección que originó la transacción | |
+| 33 | CALLER | 2 | `.` | `msg.sender` | | dirección del remitente del mensaje | |
+| 34 | CALLVALUE | 2 | `.` | `msg.value` | | valor del mensaje, en wei | |
+| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | leer palabra de los datos del mensaje en el índice `idx` | |
+| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | longitud de los datos del mensaje, en bytes | |
+| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | copiar datos del mensaje | |
+| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | longitud del código del contrato en ejecución, en bytes | |
+| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | copiar el bytecode del contrato en ejecución |
+| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | precio del gas de la transacción, en wei por unidad de gas [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) | |
+| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | tamaño del código en la dirección, en bytes | |
+| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | copiar código desde `addr` | |
+| 3D | RETURNDATASIZE | 2 | `.` | `size` | | tamaño de los datos devueltos de la última llamada externa, en bytes | |
+| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | copiar datos devueltos de la última llamada externa | |
+| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `hash` | | hash = addr.exists ? keccak256(addr.code) : 0 | |
+| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | | |
+| 41 | COINBASE | 2 | `.` | `block.coinbase` | | dirección del proponente del bloque actual | |
+| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | marca de tiempo del bloque actual | |
+| 43 | NUMBER | 2 | `.` | `block.number` | | número del bloque actual | |
+| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | baliza de aleatoriedad | |
+| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | límite de gas del bloque actual | |
+| 46 | CHAINID | 2 | `.` | `chain_id` | | inserta el [ID de la cadena](https://eips.ethereum.org/EIPS/eip-155) actual en la pila | |
+| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | saldo del contrato en ejecución, en wei | |
+| 48 | BASEFEE | 2 | `.` | `block.basefee` | | tarifa base del bloque actual | |
+| 49 | BLOBHASH | 3 | `idx` | `tx.blob_versioned_hashes[idx]` | | [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) | |
+| 4A | BLOBBASEFEE | 2 | `.` | `block.blobbasefee` | | tarifa base de blob del bloque actual ([EIP-7516](https://eips.ethereum.org/EIPS/eip-7516)) | |
+| 4B-4F | _inválido_ | | | | | | |
+| 50 | POP | 2 | `_anon` | `.` | | elimina el elemento de la parte superior de la pila y lo descarta | |
+| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | leer palabra de la memoria en el desplazamiento `ost` | |
+| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | escribir una palabra en la memoria | |
+| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | escribir un solo byte en la memoria | |
+| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | leer palabra del almacenamiento | |
+| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | escribir palabra en el almacenamiento | |
+| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` indica que a `pc` solo se le asigna un valor si `dst` es un destino de salto válido | |
+| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ?` dst : $pc + 1\` | |
+| 58 | PC | 2 | `.` | `$pc` | | contador de programa | |
+| 59 | MSIZE | 2 | `.` | `len(mem)` | | tamaño de la memoria en el contexto de ejecución actual, en bytes | |
+| 5A | GAS | 2 | `.` | `gasRemaining` | | | |
+| 5B | JUMPDEST | 1 | | | marcar destino de salto válido | un destino de salto válido, por ejemplo, un destino de salto que no se encuentra dentro de los datos de inserción | |
+| 5C | TLOAD | 100 | `key` | `tstorage[key]` | | leer palabra del almacenamiento transitorio ([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) | |
+| 5D | TSTORE | 100 | `key, val` | `.` | tstorage[key] := val | escribir palabra en el almacenamiento transitorio ([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) | |
+| 5E | MCOPY | 3+3\*words+[A0](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `dstOst, ost, len` | `.` | mem[dstOst] := mem[ost:ost+len] | copiar memoria de un área a otra ([EIP-5656](https://eips.ethereum.org/EIPS/eip-5656)) | |
+| 5E | PUSH0 | 2 | `.` | `uint8` | | impulsar el valor constante 0 a la pila | |
+| 60 | PUSH1 | 3 | `.` | `uint8` | | insertar un valor de 1 byte en la pila | |
+| 61 | PUSH2 | 3 | `.` | `uint16` | | insertar un valor de 2 bytes en la pila | |
+| 62 | PUSH3 | 3 | `.` | `uint24` | | insertar un valor de 3 bytes en la pila | |
+| 63 | PUSH4 | 3 | `.` | `uint32` | | insertar un valor de 4 bytes en la pila | |
+| 64 | PUSH5 | 3 | `.` | `uint40` | | insertar un valor de 5 bytes en la pila | |
+| 65 | PUSH6 | 3 | `.` | `uint48` | | insertar un valor de 6 bytes en la pila | |
+| 66 | PUSH7 | 3 | `.` | `uint56` | | insertar un valor de 7 bytes en la pila | |
+| 67 | PUSH8 | 3 | `.` | `uint64` | | insertar un valor de 8 bytes en la pila | |
+| 68 | PUSH9 | 3 | `.` | `uint72` | | insertar un valor de 9 bytes en la pila | |
+| 69 | PUSH10 | 3 | `.` | `uint80` | | insertar un valor de 10 bytes en la pila | |
+| 6A | PUSH11 | 3 | `.` | `uint88` | | insertar un valor de 11 bytes en la pila | |
+| 6B | PUSH12 | 3 | `.` | `uint96` | | insertar un valor de 12 bytes en la pila | |
+| 6C | PUSH13 | 3 | `.` | `uint104` | | insertar un valor de 13 bytes en la pila | |
+| 6D | PUSH14 | 3 | `.` | `uint112` | | insertar un valor de 14 bytes en la pila | |
+| 6E | PUSH15 | 3 | `.` | `uint120` | | insertar un valor de 15 bytes en la pila | |
+| 6F | PUSH16 | 3 | `.` | `uint128` | | insertar un valor de 16 bytes en la pila | |
+| 70 | PUSH17 | 3 | `.` | `uint136` | | insertar un valor de 17 bytes en la pila | |
+| 71 | PUSH18 | 3 | `.` | `uint144` | | insertar un valor de 18 bytes en la pila | |
+| 72 | PUSH19 | 3 | `.` | `uint152` | | insertar un valor de 19 bytes en la pila | |
+| 73 | PUSH20 | 3 | `.` | `uint160` | | insertar un valor de 20 bytes en la pila | |
+| 74 | PUSH21 | 3 | `.` | `uint168` | | insertar un valor de 21 bytes en la pila | |
+| 75 | PUSH22 | 3 | `.` | `uint176` | | insertar un valor de 22 bytes en la pila | |
+| 76 | PUSH23 | 3 | `.` | `uint184` | | insertar un valor de 23 bytes en la pila | |
+| 77 | PUSH24 | 3 | `.` | `uint192` | | insertar un valor de 24 bytes en la pila | |
+| 78 | PUSH25 | 3 | `.` | `uint200` | | insertar un valor de 25 bytes en la pila | |
+| 79 | PUSH26 | 3 | `.` | `uint208` | | insertar un valor de 26 bytes en la pila | |
+| 7A | PUSH27 | 3 | `.` | `uint216` | | insertar un valor de 27 bytes en la pila | |
+| 7B | PUSH28 | 3 | `.` | `uint224` | | insertar un valor de 28 bytes en la pila | |
+| 7C | PUSH29 | 3 | `.` | `uint232` | | insertar un valor de 29 bytes en la pila | |
+| 7D | PUSH30 | 3 | `.` | `uint240` | | insertar un valor de 30 bytes en la pila | |
+| 7E | PUSH31 | 3 | `.` | `uint248` | | insertar un valor de 31 bytes en la pila | |
+| 7F | PUSH32 | 3 | `.` | `uint256` | | insertar un valor de 32 bytes en la pila | |
+| 80 | DUP1 | 3 | `a` | `a, a` | | clonar el primer valor en la pila | |
+| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | clonar el segundo valor en la pila | |
+| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | clonar el tercer valor en la pila | |
+| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | clonar el cuarto valor en la pila | |
+| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | clonar el quinto valor en la pila | |
+| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | clonar el sexto valor en la pila | |
+| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | clonar el séptimo valor en la pila | |
+| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | clonar el octavo valor en la pila | |
+| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | clonar el noveno valor en la pila | |
+| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | clonar el décimo valor en la pila | |
+| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | clonar el undécimo valor en la pila | |
+| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | clonar el duodécimo valor en la pila | |
+| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | clonar el decimotercer valor en la pila | |
+| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | clonar el decimocuarto valor en la pila | |
+| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | clonar el decimoquinto valor en la pila | |
+| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | clonar el decimosexto valor en la pila | |
+| 90 | SWAP1 | 3 | `a, b` | `b, a` | | | |
+| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | | |
+| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | | |
+| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | | |
+| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) | |
+| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) | |
+| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG2(memory[ost:ost+len-1], topic0, topic1) | |
+| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG3(memory[ost:ost+len-1], topic0, topic1, topic2) | |
+| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) | |
+| A5-EF | _inválido_ | | | | | | |
+| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) | |
+| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen | `éxito` | mem[retOst:retOst+retLen-1] := returndata | | |
+| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `éxito` | mem[retOst:retOst+retLen-1] = returndata | igual que DELEGATECALL, pero no propaga los valores originales msg.sender y msg.value | |
+| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] | |
+| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `éxito` | mem[retOst:retOst+retLen-1] := returndata | | |
+| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] | |
+| F6-F9 | _inválido_ | | | | | | |
+| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `éxito` | mem[retOst:retOst+retLen-1] := returndata | | |
+| FB-FC | _inválido_ | | | | | | |
+| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) | |
+| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | código de operación inválido designado - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | | |
+| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | envía todos los ETH a `addr`; si se ejecuta en la misma transacción en la que se creó un contrato, lo destruye | |
From 1e5f809e1cc30cfa6e01de00ae1819e483ebab7b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:38 -0300
Subject: [PATCH 289/589] update(i18n):
public/content/translations/es/developers/tutorials/reverse-engineering-a-contract/index.md
---
.../reverse-engineering-a-contract/index.md | 866 +++++++++---------
1 file changed, 433 insertions(+), 433 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/reverse-engineering-a-contract/index.md b/public/content/translations/es/developers/tutorials/reverse-engineering-a-contract/index.md
index 1bac22fd7ba..00950b0e1f5 100644
--- a/public/content/translations/es/developers/tutorials/reverse-engineering-a-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/reverse-engineering-a-contract/index.md
@@ -1,628 +1,626 @@
---
-title: "Aplicación de ingeniería inversa en un contrato"
-description: Cómo entender un contrato cuando no tiene el código fuente
+title: "Ingeniería inversa de un contrato"
+description: Cómo entender un contrato cuando no se tiene el código fuente
author: Ori Pomerantz
lang: es
-tags:
- - "evm"
- - "códigos de operación"
+tags: [ "evm", "códigos de operación" ]
skill: advanced
-published: 2021-12-30
+published: 30-12-2021
---
## Introducción {#introduction}
-_No hay secretos en la cadena de bloques_, todo lo que sucede es consistente, verificable y se encuentra públicamente disponible. Idealmente, [los contratos debieran tener su codigo fuente publicado y verificado en Etherscan](https://etherscan.io/address/0xb8901acb165ed027e32754e0ffe830802919727f#code). Sin embargo, [este no siempre es el caso](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#code). En este articulo puede aprender cómo aplicar ingenieria inversa a los contratos revisando el contrato sin su código fuente, [`0x2510c039cc3b061d79e564b38836da87e31b342f`](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f).
+_No hay secretos en la cadena de bloques; todo lo que sucede es coherente, verificable y está disponible públicamente._ Idealmente, [los contratos deberían tener su código fuente publicado y verificado en Etherscan](https://etherscan.io/address/0xb8901acb165ed027e32754e0ffe830802919727f#code). Sin embargo, [no siempre es así](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#code). En este artículo aprenderá a aplicar la ingeniería inversa a los contratos, observando un contrato sin código fuente: [`0x2510c039cc3b061d79e564b38836da87e31b342f`](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f).
-Hay compiladores inversos, pero no siempre producen [resultados utilizables](https://etherscan.io/bytecode-decompiler?a=0x2510c039cc3b061d79e564b38836da87e31b342f). En este artículo aprenderá a realizar ingeniería inversa manualmente y entender un contrato a partir de [los códigos de operación](https://github.com/wolflo/evm-opcodes), así como a interpretar los resultados de un decompilador.
+Existen decompiladores, pero no siempre producen [resultados utilizables](https://etherscan.io/bytecode-decompiler?a=0x2510c039cc3b061d79e564b38836da87e31b342f). En este artículo, aprenderá a realizar manualmente la ingeniería inversa y a entender un contrato a partir de [los códigos de operación](https://github.com/wolflo/evm-opcodes), así como a interpretar los resultados de un decompilador.
-Para poder entender este artículo, ya debería conocer los conceptos básicos de la EVM y estar al menos un poco familiarizado con el ensamblador de EVM. [Puede leer sobre estos temas aquí](https://medium.com/mycrypto/the-ethereum-virtual-machine-how-does-it-work-9abac2b7c9e).
+Para poder entender este artículo, debe conocer los conceptos básicos de la EVM y estar, al menos, algo familiarizado con el ensamblador de la EVM. [Puede leer sobre estos temas aquí](https://medium.com/mycrypto/the-ethereum-virtual-machine-how-does-it-work-9abac2b7c9e).
## Preparar el código ejecutable {#prepare-the-executable-code}
-Puede obtener los códigos de operación yendo a Etherscan para el contrato, haciendo clic en la pestaña **Contract** y luego en **Switch to Opcodes View**. Obtendrá una vista que mostrará un código de operación por línea.
+Puede obtener los códigos de operación yendo a Etherscan para el contrato, haciendo clic en la pestaña **Contract** y, luego, en **Switch to Opcodes View**. Obtendrá una vista con un código de operación por línea.

-Sin embargo, para poder entender los saltos, necesita saber en qué parte del código se encuentra cada código de operación. Para ello, una forma es abrir una hoja de cálculo de Google y pegar los códigos de operación en la columna C. [Puede omitir los siguientes pasos haciendo una copia de esta hoja de cálculo ya preparada](https://docs.google.com/spreadsheets/d/1tKmTJiNjUwHbW64wCKOSJxHjmh0bAUapt6btUYE7kDA/edit?usp=sharing).
+Sin embargo, para poder entender los saltos, necesita saber en qué parte del código se encuentra cada código de operación. Para ello, una forma es abrir una hoja de cálculo de Google y pegar los códigos de operación en la columna C. [Puede saltarse los siguientes pasos haciendo una copia de esta hoja de cálculo ya preparada](https://docs.google.com/spreadsheets/d/1tKmTJiNjUwHbW64wCKOSJxHjmh0bAUapt6btUYE7kDA/edit?usp=sharing).
-El siguiente paso es obtener las ubicaciones correctas del código para entender los saltos. Pondremos el tamaño del código de operación en la columna B y la ubicación (en hexadecimal) en la columna A. Escriba esta función en la celda `B1` y luego cópiela y péguela para el resto de la columna B, hasta el final del código. Después de hacer esto, puede ocultar la columna B.
+El siguiente paso es obtener las ubicaciones correctas del código para que podamos entender los saltos. Pondremos el tamaño del código de operación en la columna B y la ubicación (en hexadecimal) en la columna A. Escriba esta función en la celda `B1` y, a continuación, cópiela y péguela en el resto de la columna B, hasta el final del código. Después de hacer esto, puede ocultar la columna B.
```
=1+IF(REGEXMATCH(C1,"PUSH"),REGEXEXTRACT(C1,"PUSH(\d+)"),0)
```
-Primero, esta función agrega un byte para el código de operación en sí y luego busca `PUSH`. Los códigos de operación push son especiales porque necesitan tener bytes adicionales para el valor que se está empujando. Si el código de operación es `PUSH`, extraemos el número de bytes y lo añadimos.
+Primero, esta función añade un byte para el propio código de operación y, a continuación, busca `PUSH`. Los códigos de operación «push» son especiales porque necesitan tener bytes adicionales para el valor que se está insertando. Si el código de operación es `PUSH`, extraemos el número de bytes y lo sumamos.
-En `A1` ponga el primer desplazamiento, cero. Luego, en `A2`, ponga esta función y vuelva a copiarla y pegarla para el resto de la columna A:
+En `A1`, ponga el primer desplazamiento, cero. A continuación, en `A2`, ponga esta función y de nuevo cópiela y péguela para el resto de la columna A:
```
=dec2hex(hex2dec(A1)+B1)
```
-Necesitamos que esta función nos dé el valor hexadecimal porque los valores que se empujan antes de los saltos (`JUMP` y `JUMPI`) se nos dan en valor hexadecimal.
+Necesitamos esta función para que nos dé el valor hexadecimal, porque los valores que se insertan antes de los saltos (`JUMP` y `JUMPI`) se nos dan en hexadecimal.
## El punto de entrada (0x00) {#the-entry-point-0x00}
-Los contratos siempre se ejecutan desde el primer byte. Esta es la parte inicial del código:
+Los contratos se ejecutan siempre desde el primer byte. Esta es la parte inicial del código:
-| Offset | Código de operación | Pila (después del código de operación) |
-| ------:| ------------------- | -------------------------------------- |
-| 0 | PUSH1 0x80 | 0x80 |
-| 2 | PUSH1 0x40 | 0x40, 0x80 |
-| 4 | MSTORE | Vacío |
-| 5 | PUSH1 0x04 | 0x04 |
-| 7 | CALLDATASIZE | CALLDATASIZE 0x04 |
-| 8 | LT | CALLDATASIZE\<4 |
-| 9 | PUSH2 0x005e | 0x5E CALLDATASIZE\<4 |
-| C | JUMPI | Vacío |
+| Desplazamiento | Código de operación | Pila (después del código de operación) |
+| -------------: | ------------------- | --------------------------------------------------------- |
+| 0 | PUSH1 0x80 | 0x80 |
+| 2 | PUSH1 0x40 | 0x40, 0x80 |
+| 4 | MSTORE | Vacío |
+| 5 | PUSH1 0x04 | 0x04 |
+| 7 | CALLDATASIZE | CALLDATASIZE 0x04 |
+| 8 | LT | CALLDATASIZE\<4 |
+| 9 | PUSH2 0x005e | 0x5E CALLDATASIZE\<4 |
+| C | JUMPI | Vacío |
Este código hace dos cosas:
-1. Escribe 0x80 como valor de 32 bytes en las ubicaciones de memoria 0x40-0x5F (0x80 se almacena en 0x5F, y 0x40-0x5E son todos ceros).
-2. Leer el tamaño de los datos de llamada. Normalmente, los datos de llamada de un contrato de Ethereum siguen [la ABI (interfaz binaria de la aplicación)](https://docs.soliditylang.org/en/v0.8.10/abi-spec.html), que como mínimo requiere cuatro bytes para el selector de funciones. Si el tamaño de los datos de la llamada es inferior a cuatro, se salta a 0x5E.
+1. Escribe 0x80 como un valor de 32 bytes en las ubicaciones de memoria 0x40-0x5F (0x80 se almacena en 0x5F, y de 0x40-0x5E son todo ceros).
+2. Lee el tamaño de los datos de llamada. Normalmente, los datos de llamada de un contrato de Ethereum siguen [la ABI (interfaz binaria de la aplicación)](https://docs.soliditylang.org/en/v0.8.10/abi-spec.html), que como mínimo requiere cuatro bytes para el selector de funciones. Si el tamaño de los datos de llamada es inferior a cuatro, salta a 0x5E.
-
+
-### El controlador en 0x5E (para datos de llamadas que no son ABI) {#the-handler-at-0x5e-for-non-abi-call-data}
+### El controlador en 0x5E (para datos de llamada que no son de ABI) {#the-handler-at-0x5e-for-non-abi-call-data}
-| Offset | Código de operación |
-| ------:| ------------------- |
-| 5E | JUMPDEST |
-| 5F | CALLDATASIZE |
-| 60 | PUSH2 0x007c |
-| 63 | JUMPI |
+| Desplazamiento | Código de operación |
+| -------------: | ------------------- |
+| 5E | JUMPDEST |
+| 5E | CALLDATASIZE |
+| 60 | PUSH2 0x007c |
+| 63 | JUMPI |
-Este fragmento comienza con un `JUMPDEST`. Los programas de EVM (máquina virtual de Ethereum) lanzan una excepción si salta a un código de operación que no sea `JUMPDEST`. Luego mira el CALLDATASIZE y si es "verdadero" (es decir, distinto de cero), salta a 0x7C. Veremos esto a continuación.
+Este fragmento comienza con un `JUMPDEST`. Los programas de la EVM (máquina virtual de Ethereum) lanzan una excepción si se salta a un código de operación que no es `JUMPDEST`. A continuación, mira el CALLDATASIZE y si es «verdadero» (es decir, no es cero) salta a 0x7C. Llegaremos a eso más abajo.
-| Offset | Código de operación | Pila (después del código de operación) |
-| ------:| ------------------- | ----------------------------------------------------------------------------------- |
-| 64 | CALLVALUE | [Wei](/glossary/#wei) proporcionado por la llamada. Llamado `msg.value` en Solidity |
-| 65 | PUSH1 0x06 | 6 CALLVALUE |
-| 67 | PUSH1 0x00 | 0 6 CALLVALUE |
-| 69 | DUP3 | CALLVALUE 0 6 CALLVALUE |
-| 6A | DUP3 | 6 CALLVALUE 0 6 CALLVALUE |
-| 6B | SLOAD | Storage[6] CALLVALUE 0 6 CALLVALUE |
+| Desplazamiento | Código de operación | Pila (después del código de operación) |
+| -------------: | ------------------- | --------------------------------------------------------------------------------------------------- |
+| 64 | CALLVALUE | [Wei](/glossary/#wei) proporcionado por la llamada. Llamado `msg.value` en Solidity |
+| 65 | PUSH1 0x06 | 6 CALLVALUE |
+| 67 | PUSH1 0x00 | 0 6 CALLVALUE |
+| 69 | DUP3 | CALLVALUE 0 6 CALLVALUE |
+| 6A | DUP3 | 6 CALLVALUE 0 6 CALLVALUE |
+| 6B | SLOAD | Storage[6] CALLVALUE 0 6 CALLVALUE |
-Así que cuando no hay datos de llamada, leemos el valor de Storage[6]. Todavía no sabemos cuál es este valor, pero podemos buscar transacciones que el contrato haya recibido sin datos de llamada. Las transacciones que solo transfieren ETH sin ningún dato de llamada (y, por lo tanto, ningún método) tienen en Etherscan el método `Transfer`. De hecho, [la primera transacción que recibió el contrato](https://etherscan.io/tx/0xeec75287a583c36bcc7ca87685ab41603494516a0f5986d18de96c8e630762e7) es una transferencia.
+Así que cuando no hay datos de llamada, leemos el valor de Almacenamiento[6]. Todavía no sabemos cuál es este valor, pero podemos buscar transacciones que el contrato haya recibido sin datos de llamada. Las transacciones que solo transfieren ETH sin ningún dato de llamada (y, por lo tanto, sin ningún método) tienen en Etherscan el método `Transfer`. De hecho, [la primera transacción que recibió el contrato](https://etherscan.io/tx/0xeec75287a583c36bcc7ca87685ab41603494516a0f5986d18de96c8e630762e7) es una transferencia.
-Si miramos en esa transacción y hacemos clic en **Click to see More**, vemos que los datos de llamada, llamados datos de entrada, están de hecho vacíos (`0x`). Tenga en cuenta también que el valor es de 1,559 ETH, lo que será relevante más adelante.
+Si miramos en esa transacción y hacemos clic en **Click to see More**, vemos que los datos de llamada, denominados datos de entrada, están de hecho vacíos (`0x`). Tenga en cuenta también que el valor es de 1,559 ETH, lo que será relevante más adelante.
-
+
-A continuación, haga clic en la pestaña **State** y expanda el contrato en el que estamos haciendo ingeniería inversa (0x2510...). Puede ver que `Storage[6]` cambió durante la transacción, y si cambia Hex a **Number**, verá que se convirtió en 1.559.000.000.000.000.000, el valor transferido en wei (añadí los puntos para mayor claridad), correspondiente al valor del contrato siguiente.
+A continuación, haga clic en la pestaña **State** y expanda el contrato en el que estamos haciendo ingeniería inversa (0x2510...). Puede ver que `Storage[6]` cambió durante la transacción, y si cambia de Hex a **Number**, verá que se convirtió en 1.559.000.000.000.000.000, el valor transferido en wei (añadí los puntos para mayor claridad), correspondiente al valor del contrato siguiente.
![El cambio en Storage[6]](storage6.png)
-Si miramos los cambios de estado causados por [otras transacciones `Transfer` del mismo período](https://etherscan.io/tx/0xf708d306de39c422472f43cb975d97b66fd5d6a6863db627067167cbf93d84d1#statechange), vemos que `Storage[6]` realizó un seguimiento del valor del contrato durante un tiempo. Por ahora lo llamaremos `Value*`. El asterisco (`*`) nos recuerda que aún no _sabemos_ lo que hace esta variable, pero no puede ser solo para rastrear el valor del contrato porque no hay necesidad de usar el almacenamiento, que es muy caro, cuando puede obtener el saldo de sus cuentas usando `ADDRESS BALANCE`. El primer código de operación empuja la dirección del contrato. El segundo lee la dirección en la parte superior de la pila y la reemplaza con el saldo de esa dirección.
+Si observamos los cambios de estado causados por [otras transacciones de `Transfer` del mismo período](https://etherscan.io/tx/0xf708d306de39c422472f43cb975d97b66fd5d6a6863db627067167cbf93d84d1#statechange) vemos que `Storage[6]` rastreó el valor del contrato durante un tiempo. Por ahora lo llamaremos `Value*`. El asterisco (\*) nos recuerda que todavía no _sabemos_ lo que hace esta variable, pero no puede ser solo para rastrear el valor del contrato, porque no es necesario usar el almacenamiento, que es muy caro, cuando se puede obtener el saldo de sus cuentas usando `ADDRESS BALANCE`. El primer código de operación inserta la propia dirección del contrato. El segundo lee la dirección en la parte superior de la pila y la reemplaza con el saldo de esa dirección.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | --------------------------------------------- |
-| 6C | PUSH2 0x0075 | 0x75 Value\* CALLVALUE 0 6 CALLVALUE |
-| 6F | SWAP2 | CALLVALUE Value\* 0x75 0 6 CALLVALUE |
-| 70 | SWAP1 | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
-| 71 | PUSH2 0x01a7 | 0x01A7 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
-| 74 | JUMP | |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ------------------------------------------- |
+| 6C | PUSH2 0x0075 | 0x75 Value\* CALLVALUE 0 6 CALLVALUE |
+| 6F | SWAP2 | CALLVALUE Value\* 0x75 0 6 CALLVALUE |
+| 70 | SWAP1 | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 71 | PUSH2 0x01a7 | 0x01A7 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 74 | JUMP | |
-Seguiremos rastreando este código en el destino de salto.
+Continuaremos rastreando este código en el destino del salto.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ------------------------------------------------------------- |
-| 1A7 | JUMPDEST | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
-| 1A8 | PUSH1 0x00 | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
-| 1AA | DUP3 | CALLVALUE 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
-| 1AB | NOT | 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ----------------------------------------------------------- |
+| 1A7 | JUMPDEST | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1A8 | PUSH1 0x00 | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AA | DUP3 | CALLVALUE 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AB | NOT | 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
-El `NOT` es bitwise, por lo que invierte el valor de cada bit en el valor de llamada.
+El `NOT` es bit a bit, por lo que invierte el valor de cada bit en el valor de llamada.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ------------------------------------------------------------------------------- |
-| 1AC | DUP3 | Value\* 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
-| 1AD | GT | Value\*>2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
-| 1AE | ISZERO | Value\*\<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
-| 1AF | PUSH2 0x01df | 0x01DF Value\*\<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
-| 1B2 | JUMPI | |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ------------------------------------------------------------------------------------------------------ |
+| 1AC | DUP3 | Value\* 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AD | GT | Value\*>2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AE | ISZERO | Value\*\<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AF | PUSH2 0x01df | 0x01DF Value\*\<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1B2 | JUMPI | |
-Saltamos si `Value*` es menor que 2^256-CALLVALUE-1 o igual. Esto parece lógica para evitar el desbordamiento. Y, de hecho, vemos que después de algunas operaciones sin sentido (escribir en la memoria está a punto de eliminarse, por ejemplo) en el desplazamiento 0x01DE, el contrato se revierte si se detecta el desbordamiento, que es un comportamiento normal.
+Saltamos si `Value*` es menor o igual que 2^256-CALLVALUE-1. Esto parece una lógica para prevenir el desbordamiento. Y, de hecho, vemos que después de algunas operaciones sin sentido (escribir en la memoria está a punto de eliminarse, por ejemplo) en el desplazamiento 0x01DE, el contrato se revierte si se detecta el desbordamiento, que es un comportamiento normal.
-Tenga en cuenta que tal desbordamiento es extremadamente improbable, porque requeriría que el valor de llamada más `Value*` sea comparable a 2^256 wei, alrededor de 10^59 ETH. [El suministro total de ETH, al momento de escribir esto, es inferior a doscientos millones](https://etherscan.io/stat/supply).
+Tenga en cuenta que dicho desbordamiento es extremadamente improbable, ya que requeriría que el valor de la llamada más `Value*` fuera comparable a 2^256 wei, aproximadamente 10^59 ETH. [El suministro total de ETH, en el momento de redactar este informe, es inferior a doscientos millones](https://etherscan.io/stat/supply).
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ------------------------------------------- |
-| 1DF | JUMPDEST | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
-| 1E0 | POP | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
-| 1E1 | ADD | Value\*+CALLVALUE 0x75 0 6 CALLVALUE |
-| 1E2 | SWAP1 | 0x75 Value\*+CALLVALUE 0 6 CALLVALUE |
-| 1E3 | JUMP | |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ----------------------------------------- |
+| 1DF | JUMPDEST | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E0 | POP | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E1 | ADD | Value\*+CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E2 | SWAP1 | 0x75 Value\*+CALLVALUE 0 6 CALLVALUE |
+| 1E3 | JUMP | |
-Si llegamos aquí, obtenga `Value* + CALLVALUE` y salte al desplazamiento 0x75.
+Si llegamos aquí, obtenemos `Value* + CALLVALUE` y saltamos al desplazamiento 0x75.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | --------------------------------- |
-| 75 | JUMPDEST | Value\*+CALLVALUE 0 6 CALLVALUE |
-| 76 | SWAP1 | 0 Value\*+CALLVALUE 6 CALLVALUE |
-| 77 | SWAP2 | 6 Value\*+CALLVALUE 0 CALLVALUE |
-| 78 | SSTORE | 0 CALLVALUE |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ------------------------------- |
+| 75 | JUMPDEST | Value\*+CALLVALUE 0 6 CALLVALUE |
+| 76 | SWAP1 | 0 Value\*+CALLVALUE 6 CALLVALUE |
+| 77 | SWAP2 | 6 Value\*+CALLVALUE 0 CALLVALUE |
+| 78 | SSTORE | 0 CALLVALUE |
-Si llegamos aquí (lo que requiere que los datos de la llamada estén vacíos), añadimos a `Value*` el valor de la llamada. Esto es consistente con lo que decimos que hacen las transferencias `Transfer`.
+Si llegamos aquí (lo que requiere que los datos de la llamada estén vacíos), añadimos a `Value*` el valor de la llamada. Esto es coherente con lo que decimos que hacen las transacciones de `Transfer`.
-| Offset | Código de operación |
-| ------:| ------------------- |
-| 79 | POP |
-| 7A | POP |
-| 7B | DETENER |
+| Desplazamiento | Código de operación |
+| -------------: | ------------------- |
+| 79 | POP |
+| 7A | POP |
+| 7B | DETENER |
Finalmente, borre la pila (no es necesario) e indique el final exitoso de la transacción.
-En resumen, aquí hay un diagrama de flujo del código inicial.
+Para resumir, aquí hay un diagrama de flujo para el código inicial.

## El controlador en 0x7C {#the-handler-at-0x7c}
-No puse a propósito en el encabezado lo que hace este controlador. El punto no es enseñarle cómo funciona este contrato específico, sino cómo aplicar ingeniería inversa a los contratos. Aprenderá lo que hace de la misma manera que yo, siguiendo el código.
+A propósito, no puse en el encabezado lo que hace este controlador. El objetivo no es enseñarle cómo funciona este contrato específico, sino cómo aplicar la ingeniería inversa a los contratos. Aprenderá lo que hace de la misma manera que lo hice yo, siguiendo el código.
Llegamos aquí desde varios lugares:
- Si hay datos de llamada de 1, 2 o 3 bytes (desde el desplazamiento 0x63)
- Si se desconoce la firma del método (de los desplazamientos 0x42 y 0x5D)
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | -------------------- |
-| 7C | JUMPDEST | |
-| 7D | PUSH1 0x00 | 0x00 |
-| 7F | PUSH2 0x009d | 0x9D 0x00 |
-| 82 | PUSH1 0x03 | 0x03 0x9D 0x00 |
-| 84 | SLOAD | Storage[3] 0x9D 0x00 |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ------------------------------------------------------------------------ |
+| 7C | JUMPDEST | |
+| 7D | PUSH1 0x00 | 0x00 |
+| 7F | PUSH2 0x009d | 0x9D 0x00 |
+| 82 | PUSH1 0x03 | 0x03 0x9D 0x00 |
+| 84 | SLOAD | Storage[3] 0x9D 0x00 |
-Esta es otra celda de almacenamiento, una que no pude encontrar en ninguna transacción, por lo que es más difícil saber lo que significa. El siguiente código lo hará más claro.
+Esta es otra celda de almacenamiento, una que no pude encontrar en ninguna transacción, por lo que es más difícil saber lo que significa. El siguiente código lo aclarará.
-| Offset | Código de operación | Pila |
-| ------:| ------------------------------------------------- | ------------------------------- |
-| 85 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xff....ff Storage[3] 0x9D 0x00 |
-| 9A | AND | Storage[3]-as-address 0x9D 0x00 |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 85 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xff....ff Storage[3] 0x9D 0x00 |
+| 9A | AND | Storage[3]-as-address 0x9D 0x00 |
-Estos códigos de operación truncan el valor que leemos de Storage[3] a 160 bits, la longitud de una dirección de Ethereum.
+Estos códigos de operación truncan el valor que leemos de Almacenamiento[3] a 160 bits, la longitud de una dirección de Ethereum.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ------------------------------- |
-| 9B | SWAP1 | 0x9D Storage[3]-as-address 0x00 |
-| 9C | JUMP | Storage[3]-as-address 0x00 |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ----------------------------------------------------------------------------------- |
+| 9B | SWAP1 | 0x9D Storage[3]-as-address 0x00 |
+| 9C | JUMP | Storage[3]-as-address 0x00 |
Este salto es superfluo, ya que vamos al siguiente código de operación. Este código no es tan eficiente en materia de gas como podría ser.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ------------------------------- |
-| 9D | JUMPDEST | Storage[3]-as-address 0x00 |
-| 9E | SWAP1 | 0x00 Storage[3]-as-address |
-| 9F | POP | Storage[3]-as-address |
-| A0 | PUSH1 0x40 | 0x40 Storage[3]-as-address |
-| A2 | MLOAD | Mem[0x40] Storage[3]-as-address |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
+| 9D | JUMPDEST | Storage[3]-as-address 0x00 |
+| 9E | SWAP1 | 0x00 Storage[3]-as-address |
+| 9F | POP | Storage[3]-as-address |
+| A0 | PUSH1 0x40 | 0x40 Storage[3]-as-address |
+| A2 | MLOAD | Mem[0x40] Storage[3]-as-address |
-Al principio del código establecimos Mem[0x40] en 0x80. Si miramos 0x40 más adelante, vemos que no lo cambiamos, por lo que podemos asumir que es 0x80.
+Al principio del código, establecimos Mem[0x40] en 0x80. Si miramos el 0x40 más adelante, vemos que no lo cambiamos, por lo que podemos asumir que es 0x80.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ------------------------------------------------- |
-| A3 | CALLDATASIZE | CALLDATASIZE 0x80 Storage[3]-as-address |
-| A4 | PUSH1 0x00 | 0x00 CALLDATASIZE 0x80 Storage[3]-as-address |
-| A6 | DUP3 | 0x80 0x00 CALLDATASIZE 0x80 Storage[3]-as-address |
-| A7 | CALLDATACOPY | 0x80 Storage[3]-as-address |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ----------------------------------------------------------------------------------------------------- |
+| A3 | CALLDATASIZE | CALLDATASIZE 0x80 Storage[3]-as-address |
+| A4 | PUSH1 0x00 | 0x00 CALLDATASIZE 0x80 Storage[3]-as-address |
+| A6 | DUP3 | 0x80 0x00 CALLDATASIZE 0x80 Storage[3]-as-address |
+| A7 | CALLDATACOPY | 0x80 Storage[3]-as-address |
Copie todos los datos de la llamada a la memoria, comenzando en 0x80.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | -------------------------------------------------------------------------------- |
-| A8 | PUSH1 0x00 | 0x00 0x80 Storage[3]-as-address |
-| AA | DUP1 | 0x00 0x00 0x80 Storage[3]-as-address |
-| AB | CALLDATASIZE | CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
-| AC | DUP4 | 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
-| AD | DUP6 | Storage[3]-as-address 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
-| AE | GAS | GAS Storage[3]-as-address 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
-| AF | DELEGATE_CALL | |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| A8 | PUSH1 0x00 | 0x00 0x80 Storage[3]-as-address |
+| AA | DUP1 | 0x00 0x00 0x80 Storage[3]-as-address |
+| AB | CALLDATASIZE | CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AC | DUP4 | 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AD | DUP6 | Storage[3]-as-address 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AE | GAS | GAS Storage[3]-as-address 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AF | DELEGATE_CALL | |
-Ahora las cosas están mucho más claras. Este contrato puede actuar como [proxy](https://blog.openzeppelin.com/proxy-patterns/), llamando a la dirección en Storage[3] para que haga el trabajo real. `DELEGATE_CALL` llama a un contrato separado, pero permanece en el mismo almacenamiento. Esto significa que el contrato delegado, para el que somos un proxy, accede al mismo espacio de almacenamiento. Los parámetros de la llamada son:
+Ahora las cosas están mucho más claras. Este contrato puede actuar como un [proxy](https://blog.openzeppelin.com/proxy-patterns/), llamando a la dirección en Almacenamiento[3] para hacer el trabajo real. `DELEGATE_CALL` llama a un contrato separado, pero permanece en el mismo almacenamiento. Esto significa que el contrato delegado, para el que somos un proxy, accede al mismo espacio de almacenamiento. Los parámetros para la llamada son:
- _Gas_: Todo el gas restante
-- _Called address_: Storage[3]-as-address
-- _Call data_: Los bytes CALLDATASIZE a partir de 0x80, que es donde ponemos los datos de llamada originales
-- _Return data_: Ninguno (0x00 - 0x00); obtendremos los datos de devolución por otros medios (ver más abajo)
-
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | --------------------------------------------------------------------------------------------- |
-| B0 | RETURNDATASIZE | RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| B1 | DUP1 | RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| B2 | PUSH1 0x00 | 0x00 RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| B4 | DUP5 | 0x80 0x00 RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| B5 | RETURNDATACOPY | RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+- _Dirección llamada_: Almacenamiento[3]-como-dirección
+- _Datos de llamada_: los bytes CALLDATASIZE que comienzan en 0x80, que es donde colocamos los datos de llamada originales
+- _Datos de retorno_: ninguno (0x00 - 0x00). Obtendremos los datos de retorno por otros medios (véase más adelante)
+
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| B0 | RETURNDATASIZE | RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B1 | DUP1 | RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B2 | PUSH1 0x00 | 0x00 RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B4 | DUP5 | 0x80 0x00 RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B5 | RETURNDATACOPY | RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
Aquí copiamos todos los datos de retorno al búfer de memoria a partir de 0x80.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
-| B6 | DUP2 | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| B7 | DUP1 | (((call success/failure))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| B8 | ISZERO | (((did the call fail))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| B9 | PUSH2 0x00c0 | 0xC0 (((did the call fail))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| BC | JUMPI | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| BD | DUP2 | RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| BE | DUP5 | 0x80 RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| BF | RETURN | |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| B6 | DUP2 | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B7 | DUP1 | (((call success/failure))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B8 | ISZERO | (((did the call fail))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B9 | PUSH2 0x00c0 | 0xC0 (((did the call fail))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BC | JUMPI | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BD | DUP2 | RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BE | DUP5 | 0x80 RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BF | RETURN | |
-Así que después de la llamada copiamos los datos de retorno en el búfer 0x80 - 0x80+RETURNDATASIZE, y si la llamada tiene éxito, entonces devolvemos (`RETURN`) con exactamente ese búfer.
+Así que después de la llamada copiamos los datos de retorno en el búfer 0x80 - 0x80+RETURNDATASIZE, y si la llamada tiene éxito, entonces hacemos `RETURN` con exactamente ese búfer.
-### DELEGATECALL fallido {#delegatecall-failed}
+### Error en DELEGATECALL {#delegatecall-failed}
Si llegamos aquí, a 0xC0, significa que el contrato al que llamamos se revirtió. Como solo somos un proxy de ese contrato, queremos devolver los mismos datos y también revertirlos.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ------------------------------------------------------------------------------------------------------------------- |
-| C0 | JUMPDEST | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| C1 | DUP2 | RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| C2 | DUP5 | 0x80 RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
-| C3 | REVERT | |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| C0 | JUMPDEST | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C1 | DUP2 | RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C2 | DUP5 | 0x80 RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C3 | REVERT | |
-Así que hacemos `REVERT` con el mismo búfer que usamos para `RETURN` antes: 0x80 - 0x80+RETURNDATASIZE
+Así que hacemos `REVERT` con el mismo búfer que usamos para `RETURN` antes: 0x80 - 0x80+RETURNDATASIZE.
-
+
-## Llamadas a ABI {#abi-calls}
+## Llamadas de ABI {#abi-calls}
-Si el tamaño de los datos de la llamada es de cuatro bytes o más, esta podría ser una llamada ABI válida.
+Si el tamaño de los datos de llamada es de cuatro bytes o más, podría tratarse de una llamada de ABI válida.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ------------------------------------------------- |
-| D | PUSH1 0x00 | 0x00 |
-| F | CALLDATALOAD | (((First word (256 bits) of the call data))) |
-| 10 | PUSH1 0xe0 | 0xE0 (((First word (256 bits) of the call data))) |
-| 12 | SHR | (((first 32 bits (4 bytes) of the call data))) |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
+| D | PUSH1 0x00 | 0x00 |
+| F | CALLDATALOAD | (((Primera palabra (256 bits) de los datos de la llamada))) |
+| 10 | PUSH1 0xe0 | 0xE0 (((Primera palabra (256 bits) de los datos de la llamada))) |
+| 12 | SHR | (((primeros 32 bits (4 bytes) de los datos de llamada))) |
-Etherscan nos dice que `1C` es un código de operación desconocido, porque [se añadió después de que Etherscan escribiera esta función](https://eips.ethereum.org/EIPS/eip-145) y no la han actualizado. Una [tabla actualizada de códigos de operación](https://github.com/wolflo/evm-opcodes) nos muestra que esto es un cambio a la derecha (shift right).
+Etherscan nos dice que `1C` es un código de operación desconocido porque [se añadió después de que Etherscan escribiera esta característica](https://eips.ethereum.org/EIPS/eip-145) y no la han actualizado. Una [tabla de códigos de operación actualizada](https://github.com/wolflo/evm-opcodes) nos muestra que se trata de un desplazamiento a la derecha
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | -------------------------------------------------------------------------------------------------------- |
-| 13 | DUP1 | (((first 32 bits (4 bytes) of the call data))) (((first 32 bits (4 bytes) of the call data))) |
-| 14 | PUSH4 0x3cd8045e | 0x3CD8045E (((first 32 bits (4 bytes) of the call data))) (((first 32 bits (4 bytes) of the call data))) |
-| 19 | GT | 0x3CD8045E>first-32-bits-of-the-call-data (((first 32 bits (4 bytes) of the call data))) |
-| 1A | PUSH2 0x0043 | 0x43 0x3CD8045E>first-32-bits-of-the-call-data (((first 32 bits (4 bytes) of the call data))) |
-| 1D | JUMPI | (((first 32 bits (4 bytes) of the call data))) |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| 13 | DUP1 | (((primeros 32 bits (4 bytes) de los datos de llamada))) (((primeros 32 bits (4 bytes) de los datos de llamada))) |
+| 14 | PUSH4 0x3cd8045e | 0x3CD8045E (((primeros 32 bits (4 bytes) de los datos de llamada))) (((primeros 32 bits (4 bytes) de los datos de llamada))) |
+| 19 | GT | 0x3CD8045E>primeros-32-bits-de-los-datos-de-llamada (((primeros 32 bits (4 bytes) de los datos de llamada))) |
+| 1A | PUSH2 0x0043 | 0x43 0x3CD8045E>primeros-32-bits-de-los-datos-de-llamada (((primeros 32 bits (4 bytes) de los datos de llamada))) |
+| 1D | JUMPI | (((primeros 32 bits (4 bytes) de los datos de llamada))) |
-Al dividir las pruebas de coincidencia de firma del método en dos de esta forma, esto ahorra la mitad de las pruebas en promedio. El código que inmediatamente sigue esto y el código en 0x43 siguen el mismo patrón: `DUP1` los primeros 32 bits de los datos de llamada, `PUSH4 (((method signature>`, ejecutar `EQ` para revisar la equidad y luego `JUMPI` si la firma del método coincide. Aquí están las firmas del método, sus direcciones y, si se conoce, la [definición de método correspondiente](https://www.4byte.directory/):
+Dividir de este modo en dos las pruebas de coincidencia de firma del método ahorra la mitad de las pruebas en promedio. El código que sigue inmediatamente a esto y el código en 0x43 siguen el mismo patrón: `DUP1` los primeros 32 bits de los datos de llamada, `PUSH4 (((firma de método>`, ejecutar `EQ` para comprobar la igualdad, y luego `JUMPI` si la firma del método coincide. Aquí están las firmas de los métodos, sus direcciones y, si se conoce, [la definición del método correspondiente](https://www.4byte.directory/):
-| Método | Firma del método | Offset para saltar |
-| -------------------------------------------------------------------------------------- | ---------------- | ------------------ |
-| [splitter()](https://www.4byte.directory/signatures/?bytes4_signature=0x3cd8045e) | 0x3cd8045e | 0x0103 |
-| ??? | 0x81e580d3 | 0x0138 |
-| [currentWindow()](https://www.4byte.directory/signatures/?bytes4_signature=0xba0bafb4) | 0xba0bafb4 | 0x0158 |
-| ??? | 0x1f135823 | 0x00C4 |
-| [merkleRoot()](https://www.4byte.directory/signatures/?bytes4_signature=0x2eb4a7ab) | 0x2eb4a7ab | 0x00ED |
+| Método | Firma del método | Desplazamiento para el salto |
+| --------------------------------------------------------------------------------------------------------- | ---------------- | ---------------------------- |
+| [splitter()](https://www.4byte.directory/signatures/?bytes4_signature=0x3cd8045e) | 0x3cd8045e | 0x0103 |
+| ¿? | 0x81e580d3 | 0x0138 |
+| [currentWindow()](https://www.4byte.directory/signatures/?bytes4_signature=0xba0bafb4) | 0xba0bafb4 | 0x0158 |
+| ¿? | 0x1f135823 | 0x00C4 |
+| [merkleRoot()](https://www.4byte.directory/signatures/?bytes4_signature=0x2eb4a7ab) | 0x2eb4a7ab | 0x00ED |
-Si no se encuentra ninguna coincidencia, el código salta al [controlador de proxy en 0x7C](#the-handler-at-0x7c), con la esperanza de que el contrato en el que somos proxy tenga una coincidencia.
+Si no se encuentra ninguna coincidencia, el código salta al [controlador del proxy en 0x7C](#the-handler-at-0x7c), con la esperanza de que el contrato para el que somos un proxy tenga una coincidencia.
-
+
## splitter() {#splitter}
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ----------------------------- |
-| 103 | JUMPDEST | |
-| 104 | CALLVALUE | CALLVALUE |
-| 105 | DUP1 | CALLVALUE CALLVALUE |
-| 106 | ISZERO | CALLVALUE==0 CALLVALUE |
-| 107 | PUSH2 0x010f | 0x010F CALLVALUE==0 CALLVALUE |
-| 10A | JUMPI | CALLVALUE |
-| 10B | PUSH1 0x00 | 0x00 CALLVALUE |
-| 10D | DUP1 | 0x00 0x00 CALLVALUE |
-| 10E | REVERT | |
-
-Lo primero que hace esta función es comprobar que la llamada no haya enviado ETH. Esta función no es [`pagable`](https://solidity-by-example.org/payable/). Si alguien nos envió ETH, debe ser un error, y queremos revertir (`REVERT`) para evitar tener ETH que no puedan recuperar.
-
-| Offset | Código de operación | Pila |
-| ------:| ------------------------------------------------- | --------------------------------------------------------------------------- |
-| 10F | JUMPDEST | |
-| 110 | POP | |
-| 111 | PUSH1 0x03 | 0x03 |
-| 113 | SLOAD | (((Storage[3] a.k.a the contract for which we are a proxy))) |
-| 114 | PUSH1 0x40 | 0x40 (((Storage[3] a.k.a the contract for which we are a proxy))) |
-| 116 | MLOAD | 0x80 (((Storage[3] a.k.a the contract for which we are a proxy))) |
-| 117 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xFF...FF 0x80 (((Storage[3] a.k.a the contract for which we are a proxy))) |
-| 12C | SWAP1 | 0x80 0xFF...FF (((Storage[3] a.k.a the contract for which we are a proxy))) |
-| 12D | SWAP2 | (((Storage[3] a.k.a the contract for which we are a proxy))) 0xFF...FF 0x80 |
-| 12E | AND | ProxyAddr 0x80 |
-| 12F | DUP2 | 0x80 ProxyAddr 0x80 |
-| 130 | MSTORE | 0x80 |
-
-Y 0x80 ahora contiene la dirección del proxy
-
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | --------- |
-| 131 | PUSH1 0x20 | 0x20 0x80 |
-| 133 | ADD | 0xA0 |
-| 134 | PUSH2 0x00e4 | 0xE4 0xA0 |
-| 137 | JUMP | 0xA0 |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ----------------------------- |
+| 103 | JUMPDEST | |
+| 104 | CALLVALUE | CALLVALUE |
+| 105 | DUP1 | CALLVALUE CALLVALUE |
+| 106 | ISZERO | CALLVALUE==0 CALLVALUE |
+| 107 | PUSH2 0x010f | 0x010F CALLVALUE==0 CALLVALUE |
+| 10A | JUMPI | CALLVALUE |
+| 10B | PUSH1 0x00 | 0x00 CALLVALUE |
+| 10D | DUP1 | 0x00 0x00 CALLVALUE |
+| 10E | REVERT | |
+
+Lo primero que hace esta función es comprobar que la llamada no haya enviado ETH. Esta función no es [`pagadera`](https://solidity-by-example.org/payable/). Si alguien nos envió ETH, debe ser un error, y queremos hacer `REVERT` para evitar tener ETH que no puedan recuperar.
+
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 10F | JUMPDEST | |
+| 110 | POP | |
+| 111 | PUSH1 0x03 | 0x03 |
+| 113 | SLOAD | (((Almacenamiento[3], es decir, el contrato para el que somos un proxy))) |
+| 114 | PUSH1 0x40 | 0x40 (((Almacenamiento[3], es decir, el contrato para el que somos un proxy))) |
+| 116 | MLOAD | 0x80 (((Almacenamiento[3], es decir, el contrato para el que somos un proxy))) |
+| 117 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xFF...FF 0x80 (((Almacenamiento[3], es decir, el contrato para el que somos un proxy))) |
+| 12C | SWAP1 | 0x80 0xFF...FF (((Almacenamiento[3], es decir, el contrato para el que somos un proxy))) |
+| 12D | SWAP2 | (((Almacenamiento[3], es decir, el contrato para el que somos un proxy))) 0xFF...FF 0x80 |
+| 12E | AND | ProxyAddr 0x80 |
+| 12F | DUP2 | 0x80 ProxyAddr 0x80 |
+| 130 | MSTORE | 0x80 |
+
+Y 0x80 ahora contiene la dirección del proxy.
+
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | --------- |
+| 131 | PUSH1 0x20 | 0x20 0x80 |
+| 133 | ADD | 0xA0 |
+| 134 | PUSH2 0x00e4 | 0xE4 0xA0 |
+| 137 | JUMP | 0xA0 |
### El código E4 {#the-e4-code}
-Esta es la primera vez que vemos estas líneas, pero se comparten con otros métodos (ver más abajo). Así que llamaremos al valor de la pila X y simplemente recordaremos que en `splitter()` el valor de esta X es 0xA0.
+Esta es la primera vez que vemos estas líneas, pero se comparten con otros métodos (véase más abajo). Así que llamaremos al valor de la pila X y simplemente recordaremos que en `splitter()` el valor de esta X es 0xA0.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ----------- |
-| E4 | JUMPDEST | X |
-| E5 | PUSH1 0x40 | 0x40 X |
-| E7 | MLOAD | 0x80 X |
-| E8 | DUP1 | 0x80 0x80 X |
-| E9 | SWAP2 | X 0x80 0x80 |
-| EA | SUB | X-0x80 0x80 |
-| EB | SWAP1 | 0x80 X-0x80 |
-| EC | RETURN | |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ----------- |
+| E4 | JUMPDEST | X |
+| E5 | PUSH1 0x40 | 0x40 X |
+| E7 | MLOAD | 0x80 X |
+| E8 | DUP1 | 0x80 0x80 X |
+| E9 | SWAP2 | X 0x80 0x80 |
+| EA | SUB | X-0x80 0x80 |
+| EB | SWAP1 | 0x80 X-0x80 |
+| EC | RETURN | |
-Por lo tanto, este código recibe un puntero de memoria en la pila (X) y hace que el contrato haga `RETURN` con un búfer que es 0x80 - X.
+Así que este código recibe un puntero de memoria en la pila (X) y hace que el contrato haga `RETURN` con un búfer que es 0x80 - X.
En el caso de `splitter()`, esto devuelve la dirección para la que somos un proxy. `RETURN` devuelve el búfer en 0x80-0x9F, que es donde escribimos estos datos (desplazamiento 0x130 arriba).
## currentWindow() {#currentwindow}
-El código en los desplazamientos 0x158-0x163 es idéntico al que vimos en 0x103-0x10E en `splitter()` (aparte del destino `JUMPI`), por lo que sabemos que `currentWindow()` tampoco es `payable`.
+El código en los desplazamientos 0x158-0x163 es idéntico al que vimos en 0x103-0x10E en `splitter()` (aparte del destino de `JUMPI`), por lo que sabemos que `currentWindow()` tampoco es `pagadero`.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | -------------------- |
-| 164 | JUMPDEST | |
-| 165 | POP | |
-| 166 | PUSH2 0x00da | 0xDA |
-| 169 | PUSH1 0x01 | 0x01 0xDA |
-| 16B | SLOAD | Storage[1] 0xDA |
-| 16C | DUP2 | 0xDA Storage[1] 0xDA |
-| 16D | JUMP | Storage[1] 0xDA |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ------------------------------------------------------------------------ |
+| 164 | JUMPDEST | |
+| 165 | POP | |
+| 166 | PUSH2 0x00da | 0xDA |
+| 169 | PUSH1 0x01 | 0x01 0xDA |
+| 16B | SLOAD | Storage[1] 0xDA |
+| 16C | DUP2 | 0xDA Storage[1] 0xDA |
+| 16D | JUMP | Storage[1] 0xDA |
### El código DA {#the-da-code}
-Este código también se comparte con otros métodos. Así que llamaremos al valor de la pila Y y simplemente recordaremos que en `currentWindow()` el valor de esta Y es Storage[1].
+Este código también se comparte con otros métodos. Así que llamaremos al valor de la pila Y y simplemente recordaremos que en `currentWindow()` el valor de esta Y es Almacenamiento[1].
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ---------------- |
-| DA | JUMPDEST | Y 0xDA |
-| DB | PUSH1 0x40 | 0x40 Y 0xDA |
-| DD | MLOAD | 0x80 Y 0xDA |
-| DE | SWAP1 | Y 0x80 0xDA |
-| DF | DUP2 | 0x80 Y 0x80 0xDA |
-| E0 | MSTORE | 0x80 0xDA |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ---------------- |
+| DA | JUMPDEST | Y 0xDA |
+| DB | PUSH1 0x40 | 0x40 Y 0xDA |
+| DD | MLOAD | 0x80 Y 0xDA |
+| DE | SWAP1 | Y 0x80 0xDA |
+| DF | DUP2 | 0x80 Y 0x80 0xDA |
+| E0 | MSTORE | 0x80 0xDA |
Escriba Y en 0x80-0x9F.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | -------------- |
-| E1 | PUSH1 0x20 | 0x20 0x80 0xDA |
-| E3 | ADD | 0xA0 0xDA |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | -------------- |
+| E1 | PUSH1 0x20 | 0x20 0x80 0xDA |
+| E3 | ADD | 0xA0 0xDA |
-Y el resto ya está explicado [arriba](#the-e4-code). Así que salta a 0xDA, escribe la parte superior de la pila (Y) en 0x80-0x9F y devuelve ese valor. En el caso de `currentWindow()`, devuelve Storage[1].
+Y el resto ya está explicado [arriba](#the-e4-code). Así que los saltos a 0xDA escriben la parte superior de la pila (Y) en 0x80-0x9F, y devuelven ese valor. En el caso de `currentWindow()`, devuelve Almacenamiento[1].
## merkleRoot() {#merkleroot}
-El código en los desplazamientos 0xED-0xF8 es idéntico al que vimos en 0x103-0x10E en `splitter()` (aparte del destino `JUMPI`), por lo que sabemos que `merkleRoot()` tampoco es `payable`.
+El código en los desplazamientos 0xED-0xF8 es idéntico al que vimos en 0x103-0x10E en `splitter()` (aparte del destino de `JUMPI`), por lo que sabemos que `merkleRoot()` tampoco es `pagadero`.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | -------------------- |
-| F9 | JUMPDEST | |
-| FA | POP | |
-| FB | PUSH2 0x00da | 0xDA |
-| FE | PUSH1 0x00 | 0x00 0xDA |
-| 100 | SLOAD | Storage[0] 0xDA |
-| 101 | DUP2 | 0xDA Storage[0] 0xDA |
-| 102 | JUMP | Storage[0] 0xDA |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ------------------------------------------------------------------------ |
+| F9 | JUMPDEST | |
+| FA | POP | |
+| FB | PUSH2 0x00da | 0xDA |
+| FE | PUSH1 0x00 | 0x00 0xDA |
+| 100 | SLOAD | Storage[0] 0xDA |
+| 101 | DUP2 | 0xDA Storage[0] 0xDA |
+| 102 | JUMP | Storage[0] 0xDA |
-Lo que sucede después del salto [ya lo descubrimos](#the-da-code). Así que `merkleRoot()` devuelve Storage[0].
+Lo que sucede después del salto [ya lo hemos descubierto](#the-da-code). Así que `merkleRoot()` devuelve Almacenamiento[0].
## 0x81e580d3 {#0x81e580d3}
-El código en los desplazamientos 0x138-0x143 es idéntico al que vimos en 0x103-0x10E en `splitter()` (aparte del destino `JUMPI`), por lo que sabemos que esta función tampoco es `payable`.
-
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ------------------------------------------------------------ |
-| 144 | JUMPDEST | |
-| 145 | POP | |
-| 146 | PUSH2 0x00da | 0xDA |
-| 149 | PUSH2 0x0153 | 0x0153 0xDA |
-| 14C | CALLDATASIZE | CALLDATASIZE 0x0153 0xDA |
-| 14D | PUSH1 0x04 | 0x04 CALLDATASIZE 0x0153 0xDA |
-| 14F | PUSH2 0x018f | 0x018F 0x04 CALLDATASIZE 0x0153 0xDA |
-| 152 | JUMP | 0x04 CALLDATASIZE 0x0153 0xDA |
-| 18F | JUMPDEST | 0x04 CALLDATASIZE 0x0153 0xDA |
-| 190 | PUSH1 0x00 | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
-| 192 | PUSH1 0x20 | 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
-| 194 | DUP3 | 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
-| 195 | DUP5 | CALLDATASIZE 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
-| 196 | SUB | CALLDATASIZE-4 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
-| 197 | SLT | CALLDATASIZE-4\<32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
-| 198 | ISZERO | CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
-| 199 | PUSH2 0x01a0 | 0x01A0 CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
-| 19C | JUMPI | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+El código en los desplazamientos 0x138-0x143 es idéntico al que vimos en 0x103-0x10E en `splitter()` (aparte del destino de `JUMPI`), por lo que sabemos que esta función tampoco es `pagadera`.
+
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | ------------------------------------------------------------------------------- |
+| 144 | JUMPDEST | |
+| 145 | POP | |
+| 146 | PUSH2 0x00da | 0xDA |
+| 149 | PUSH2 0x0153 | 0x0153 0xDA |
+| 14C | CALLDATASIZE | CALLDATASIZE 0x0153 0xDA |
+| 14D | PUSH1 0x04 | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 14F | PUSH2 0x018f | 0x018F 0x04 CALLDATASIZE 0x0153 0xDA |
+| 152 | JUMP | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 18F | JUMPDEST | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 190 | PUSH1 0x00 | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 192 | PUSH1 0x20 | 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 194 | DUP3 | 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 195 | DUP5 | CALLDATASIZE 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 196 | SUB | CALLDATASIZE-4 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 197 | SLT | CALLDATASIZE-4\<32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 198 | ISZERO | CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 199 | PUSH2 0x01a0 | 0x01A0 CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19C | JUMPI | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
Parece que esta función toma al menos 32 bytes (una palabra) de datos de llamada.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | -------------------------------------------- |
-| 19D | DUP1 | 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
-| 19E | DUP2 | 0x00 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
-| 19F | REVERT | |
+| Desplazamiento | Código de operación | Pila |
+| -------------: | ------------------- | -------------------------------------------- |
+| 19D | DUP1 | 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19E | DUP2 | 0x00 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19F | REVERT | |
Si no recibe los datos de la llamada, la transacción se revierte sin ningún dato de devolución.
Veamos qué sucede si la función _sí_ obtiene los datos de llamada que necesita.
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ---------------------------------------- |
-| 1A0 | JUMPDEST | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
-| 1A1 | POP | 0x04 CALLDATASIZE 0x0153 0xDA |
-| 1A2 | CALLDATALOAD | calldataload(4) CALLDATASIZE 0x0153 0xDA |
-
-`calldataload(4)` es la primera palabra de los datos de llamada _después_ de la firma del método
-
-| Offset | Código de operación | Pila |
-| ------:| ------------------- | ---------------------------------------------------------------------------- |
-| 1A3 | SWAP2 | 0x0153 CALLDATASIZE calldataload(4) 0xDA |
-| 1A4 | SWAP1 | CALLDATASIZE 0x0153 calldataload(4) 0xDA |
-| 1A5 | POP | 0x0153 calldataload(4) 0xDA |
-| 1A6 | JUMP | calldataload(4) 0xDA |
-| 153 | JUMPDEST | calldataload(4) 0xDA |
-| 154 | PUSH2 0x016e | 0x016E calldataload(4) 0xDA |
-| 157 | JUMP | calldataload(4) 0xDA |
-| 16E | JUMPDEST | calldataload(4) 0xDA |
-| 16F | PUSH1 0x04 | 0x04 calldataload(4) 0xDA |
-| 171 | DUP2 | calldataload(4) 0x04 calldataload(4) 0xDA |
-| 172 | DUP2 | 0x04 calldataload(4) 0x04 calldataload(4) 0xDA |
-| 173 | SLOAD | Storage[4] calldataload(4) 0x04 calldataload(4) 0xDA |
-| 174 | DUP2 | calldataload(4) Storage[4] calldataload(4) 0x04 calldataload(4) 0xDA |
-| 175 | LT | calldataload(4)\)`, y otro es `isClaimed()`, así que parece un contrato de airdrop. En lugar de ver el resto opcode por opcode, podemos [probar el decompilador](https://etherscan.io/bytecode-decompiler?a=0x2f81e57ff4f4d83b40a9f719fd892d8e806e0761), que produce resultados utilizables para tres funciones de este contrato. La ingeniería inversa de los otros se deja como ejercicio para el lector.
+Uno de los métodos restantes es `claim()`, y otro es `isClaimed()`, por lo que parece un contrato de airdrop. En lugar de revisar el resto código de operación por código de operación, podemos [probar el decompilador](https://etherscan.io/bytecode-decompiler?a=0x2f81e57ff4f4d83b40a9f719fd892d8e806e0761), que produce resultados utilizables para tres funciones de este contrato. La ingeniería inversa de los otros se deja como ejercicio para el lector.
### scaleAmountByPercentage {#scaleamountbypercentage}
Esto es lo que el decompilador nos da para esta función:
```python
-def unknown8ffb5c97(uint256 _param1, uint256 _param2) payable:
+def unknown8ffb5c97(uint256 _param1, uint256 _param2) pagadero:
require calldata.size - 4 >=′ 64
if _param1 and _param2 > -1 / _param1:
revert with 0, 17
return (_param1 * _param2 / 100 * 10^6)
```
-Las primeras pruebas `require` que tienen los datos de la llamada, además de los cuatro bytes de la firma de la función, al menos 64 bytes, suficientes para los dos parámetros. Si no, obviamente hay algo mal.
+La primera prueba `require` que tienen los datos de la llamada, además de los cuatro bytes de la firma de la función, es de al menos 64 bytes, suficientes para los dos parámetros. Si no, obviamente hay algo mal.
-La declaración `if` parece comprobar que `_param1` no es cero y que `_param1 * _param2` no es negativo. Probablemente sea para evitar casos de wrap around.
+La declaración `if` parece comprobar que `_param1` no es cero y que `_param1 * _param2` no es negativo. Probablemente sea para evitar casos de envoltura.
-Por último, la función devuelve un valor escalado.
+Finalmente, la función devuelve un valor escalado.
### claim {#claim}
-El código que crea el decompilador es complejo, y no todo es relevante para nosotros. Voy a omitir algo de eso para centrarme en las líneas que creo que proporcionan información útil.
+El código que crea el decompilador es complejo, y no todo es relevante para nosotros. Voy a omitir parte de él para centrarme en las líneas que creo que proporcionan información útil.
```python
-def unknown2e7ba6ef(uint256 _param1, uint256 _param2, uint256 _param3, array _param4) payable:
+def unknown2e7ba6ef(uint256 _param1, uint256 _param2, uint256 _param3, array _param4) pagadero:
...
require _param2 == addr(_param2)
...
if currentWindow <= _param1:
- revert with 0, 'cannot claim for a future window'
+ revert with 0, 'no se puede reclamar por una ventana futura'
```
Aquí vemos dos cosas importantes:
-- `_param2`, aunque se declara como `uint256`, es en realidad una dirección
-- `_param1` es la ventana reclamada, que tiene que ser `currentWindow` o anterior.
+- `_param2`, aunque se declara como `uint256`, es en realidad una dirección.
+- `_param1` es la ventana que se reclama, que tiene que ser `currentWindow` o anterior.
```python
...
if stor5[_claimWindow][addr(_claimFor)]:
- revert with 0, 'Account already claimed the given window'
+ revert with 0, 'La cuenta ya ha reclamado para la ventana dada'
```
-Así que ahora sabemos que Storage[5] es una serie de ventanas y direcciones, y si la dirección reclamó la recompensa por esa ventana.
+Así que ahora sabemos que Almacenamiento[5] es una matriz de ventanas y direcciones, y si la dirección reclamó la recompensa por esa ventana.
```python
...
@@ -639,10 +637,10 @@ Así que ahora sabemos que Storage[5] es una serie de ventanas y direcciones, y
s = sha3(mem[_66 + 32 len mem[_66]])
continue
if unknown2eb4a7ab != s:
- revert with 0, 'Invalid proof'
+ revert with 0, 'Prueba no válida'
```
-Sabemos que `unknown2eb4a7ab` es en realidad la función `merkleRoot()`, por lo que este código parece que está verificando una [prueba de merkle](https://medium.com/crypto-0-nite/merkle-proofs-explained-6dd429623dc5). Esto significa que `_param4` es una prueba de merkle.
+Sabemos que `unknown2eb4a7ab` es en realidad la función `merkleRoot()`, por lo que este código parece que está verificando una [prueba de Merkle](https://medium.com/crypto-0-nite/merkle-proofs-explained-6dd429623dc5). Esto significa que `_param4` es una prueba de Merkle.
```python
call addr(_param2) with:
@@ -660,25 +658,25 @@ Así es como un contrato transfiere su propio ETH a otra dirección (contrato o
value unknown81e580d3[_param1] * _param3 / 100 * 10^6 wei
```
-Las dos últimas líneas nos dicen que Storage[2] también es un contrato al que llamamos. Si [miramos la transacción del constructor](https://etherscan.io/tx/0xa1ea0549fb349eb7d3aff90e1d6ce7469fdfdcd59a2fd9b8d1f5e420c0d05b58#statechange), vemos que este contrato es [0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2), un contrato de Ether envuelto (Wrapped Ether) [cuyo código fuente se subió a Etherscan](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2#code).
+Las dos últimas líneas nos dicen que Almacenamiento[2] también es un contrato al que llamamos. Si [observamos la transacción del constructor](https://etherscan.io/tx/0xa1ea0549fb349eb7d3aff90e1d6ce7469fdfdcd59a2fd9b8d1f5e420c0d05b58#statechange) vemos que este contrato es [0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2), un contrato de Wrapped Ether [cuyo código fuente se ha subido a Etherscan](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2#code).
-Así que parece que el contrato intenta enviar ETH a `_param2`. Si puede hacerlo, genial. Si no, intenta enviar [WETH](https://weth.io/). Si `_param2` es una cuenta de propiedad externa (EOA), siempre puede recibir ETH, pero los contratos pueden negarse a recibir ETH. Sin embargo, WETH es ERC-20 y los contratos no pueden negarse a aceptarlo.
+Así que parece que el contrato intenta enviar ETH a `_param2`. Si puede hacerlo, genial. Si no, intenta enviar [WETH](https://weth.tkn.eth.limo/). Si `_param2` es una cuenta de propiedad externa (EOA), entonces siempre puede recibir ETH, pero los contratos pueden negarse a recibir ETH. Sin embargo, el WETH es un ERC-20 y los contratos no pueden negarse a aceptarlo.
```python
...
log 0xdbd5389f: addr(_param2), unknown81e580d3[_param1] * _param3 / 100 * 10^6, bool(ext_call.success)
```
-Al final de la función vemos que se genera una entrada de registro. [Mire las entradas de registro generadas](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#events) y filtre el tema que comienza con `0xdbd5...`. Si [hacemos clic en una de las transacciones que generaron dicha entrada](https://etherscan.io/tx/0xe7d3b7e00f645af17dfbbd010478ef4af235896c65b6548def1fe95b3b7d2274), vemos que, de hecho, parece una reclamación: la cuenta envió un mensaje al contrato en el que estamos haciendo ingeniería inversa y como retribución obtuvo ETH.
+Al final de la función vemos que se genera una entrada de registro. [Mire las entradas de registro generadas](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#events) y filtre por el tema que comienza con `0xdbd5...`. Si [hacemos clic en una de las transacciones que generaron dicha entrada](https://etherscan.io/tx/0xe7d3b7e00f645af17dfbbd010478ef4af235896c65b6548def1fe95b3b7d2274), vemos que, de hecho, parece una reclamación: la cuenta envió un mensaje al contrato en el que estamos haciendo ingeniería inversa y a cambio obtuvo ETH.
-
+
### 1e7df9d3 {#1e7df9d3}
-Esta función es muy similar a [`claim`](#claim) arriba. También comprueba una prueba de merkle, intenta transferir ETH a la primera y produce el mismo tipo de entrada de registro.
+Esta función es muy similar a la de `claim` anterior. También comprueba una prueba de Merkle, intenta transferir ETH a la primera y produce el mismo tipo de entrada de registro.
```python
-def unknown1e7df9d3(uint256 _param1, uint256 _param2, array _param3) payable:
+def unknown1e7df9d3(uint256 _param1, uint256 _param2, array _param3) pagadero:
...
idx = 0
s = 0
@@ -693,7 +691,7 @@ def unknown1e7df9d3(uint256 _param1, uint256 _param2, array _param3) payable:
mem[mem[64] + 32] = s + sha3(mem[(32 * _param3.length) + 160 len mem[(32 * _param3.length) + 128]])
...
if unknown2eb4a7ab != s:
- revert with 0, 'Invalid proof'
+ revert with 0, 'Prueba no válida'
...
call addr(_param1) with:
value s wei
@@ -708,7 +706,7 @@ def unknown1e7df9d3(uint256 _param1, uint256 _param2, array _param3) payable:
log 0xdbd5389f: addr(_param1), s, bool(ext_call.success)
```
-La principal diferencia es que el primer parámetro, la ventana para hacer el retiro, no está ahí. En su lugar, hay un bucle sobre todas las ventanas que se podrían reclamar.
+La principal diferencia es que el primer parámetro, la ventana para retirar, no está ahí. En su lugar, hay un bucle sobre todas las ventanas que se podrían reclamar.
```python
idx = 0
@@ -741,4 +739,6 @@ Así que parece una variante de `claim` que reclama todas las ventanas.
## Conclusión {#conclusion}
-A estas alturas debería saber cómo entender los contratos cuyo código fuente no esté disponible, utilizando los códigos de operación (u opcodes) o, cuando funcione, el decompilador. Como es evidente en la longitud de este artículo, la ingeniería inversa de un contrato no es trivial, pero, en un sistema donde la seguridad es esencial, es una habilidad importante poder verificar que los contratos funcionen según lo previsto.
+A estas alturas ya debería saber cómo entender los contratos cuyo código fuente no está disponible, utilizando los códigos de operación o (cuando funciona) el decompilador. Como es evidente por la extensión de este artículo, la ingeniería inversa de un contrato no es trivial, pero en un sistema donde la seguridad es esencial, es una habilidad importante poder verificar que los contratos funcionan como se promete.
+
+[Vea aquí más de mi trabajo](https://cryptodocguy.pro/).
From a373cfb19d3594418d3706d517eedf2cad3f745b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:40 -0300
Subject: [PATCH 290/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
---
.../mining/mining-algorithms/ethash/index.md | 82 +++++++++----------
1 file changed, 41 insertions(+), 41 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
index a0785818a19..e8e6d1b6dae 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
@@ -8,12 +8,12 @@ lang: es
- Ethash era el algoritmo de minería de prueba de trabajo de Ethereum. La prueba de trabajo ahora se ha **desactivado por completo** y Ethereum ahora está protegido utilizando la [prueba de participación](/developers/docs/consensus-mechanisms/pos/) en su lugar. Descubra más en [La Fusión](/roadmap/merge/), [prueba de participación (PoS)](/developers/docs/consensus-mechanisms/pos/) y la [participación](/staking/). ¡Esta página es de interés histórico!
+ Ethash era el algoritmo de minería de prueba de trabajo de Ethereum. La prueba de trabajo ahora se ha **desactivado por completo** y Ethereum ya está protegido utilizando la [prueba de participación](/developers/docs/consensus-mechanisms/pos/) en su lugar. Profundice sobre [la Fusión](/roadmap/merge/), [prueba de participación](/developers/docs/consensus-mechanisms/pos/) y la [participación](/staking/). ¡Esta página es de interés histórico!
-Ethash es una versión modificada del algoritmo [Dagger-Hashimoto](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto). La prueba de trabajo de Ethash es de [memoria dura](https://wikipedia.org/wiki/Memory-hard_function), lo que se pensaba que hacía que el algoritmo fuera resistente a ASIC. Finalmente se desarrollaron los ASIC de Ethash, pero la minería de GPU seguía siendo una opción viable hasta que se desactivó la prueba de trabajo. Ethash todavía se utiliza para minar otras monedas en otras redes de prueba de trabajo que no son de Ethereum.
+Ethash es una versión modificada del algoritmo [Dagger-Hashimoto](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto). La prueba de trabajo de Ethash es [con memoria dura](https://wikipedia.org/wiki/Memory-hard_function), lo que se pensaba que hacía al algoritmo resistente a los ASIC. Finalmente se desarrollaron los ASIC de Ethash, pero la minería de GPU seguía siendo una opción viable hasta que se desactivó la prueba de trabajo. Ethash todavía se utiliza para minar otras monedas en otras redes de prueba de trabajo que no son de Ethereum.
## ¿Cómo funciona Ethash? {#how-does-ethash-work}
@@ -21,9 +21,9 @@ La dureza de la memoria se logra con un algoritmo de prueba de trabajo que requi
La ruta general que toma el algoritmo es la siguiente:
-1. Existe una **semilla** que se puede calcular para cada bloque escaneando a través los encabezados de los bloques hasta ese punto.
-2. Desde la semilla, se puede calcular una memoria ** caché pseudoaleatoria de 16 MB**. Los clientes ligeros almacenan la caché.
-3. Desde la caché, podemos generar un conjunto de datos de **1 GB**, con la propiedad de que cada elemento del conjunto de datos dependa solo de un pequeño número de elementos de la caché. Los clientes completos y los mineros almacenan el conjunto de datos. El conjunto de datos crece linealmente con el tiempo.
+1. Existe una **semilla** que se puede calcular para cada bloque analizando los encabezados de los bloques hasta ese punto.
+2. A partir de la semilla, se puede calcular una **caché pseudoaleatoria de 16 MB**. Los clientes ligeros almacenan la caché.
+3. Desde la caché, podemos generar un **conjunto de datos de 1 GB**, con la propiedad de que cada elemento del conjunto de datos depende solo de un pequeño número de elementos de la caché. Los clientes completos y los mineros almacenan el conjunto de datos. El conjunto de datos crece linealmente con el tiempo.
4. La minería implica extraer secciones aleatorias del conjunto de datos y agruparlas. La verificación se puede hacer con poca memoria utilizando la caché para regenerar las piezas específicas del conjunto de datos que necesita, por lo que solo tiene que almacenar la memoria caché.
El gran conjunto de datos se actualiza una vez cada 30000 bloques, por lo que la gran mayoría del esfuerzo de un minero será leer el conjunto de datos, no hacer cambios en él.
@@ -33,23 +33,23 @@ El gran conjunto de datos se actualiza una vez cada 30000 bloques, por lo que la
Utilizamos las siguientes definiciones:
```
-WORD_BYTES = 4 # bytes in word
-DATASET_BYTES_INIT = 2**30 # bytes in dataset at genesis
-DATASET_BYTES_GROWTH = 2**23 # dataset growth per epoch
-CACHE_BYTES_INIT = 2**24 # bytes in cache at genesis
-CACHE_BYTES_GROWTH = 2**17 # cache growth per epoch
-CACHE_MULTIPLIER=1024 # Size of the DAG relative to the cache
-EPOCH_LENGTH = 30000 # blocks per epoch
-MIX_BYTES = 128 # width of mix
-HASH_BYTES = 64 # hash length in bytes
-DATASET_PARENTS = 256 # number of parents of each dataset element
-CACHE_ROUNDS = 3 # number of rounds in cache production
-ACCESSES = 64 # number of accesses in hashimoto loop
+WORD_BYTES = 4 # bytes en la palabra
+DATASET_BYTES_INIT = 2**30 # bytes en el conjunto de datos en el génesis
+DATASET_BYTES_GROWTH = 2**23 # crecimiento del conjunto de datos por época
+CACHE_BYTES_INIT = 2**24 # bytes en la caché en el génesis
+CACHE_BYTES_GROWTH = 2**17 # crecimiento de la caché por época
+CACHE_MULTIPLIER=1024 # Tamaño del DAG en relación con la caché
+EPOCH_LENGTH = 30000 # bloques por época
+MIX_BYTES = 128 # ancho de la mezcla
+HASH_BYTES = 64 # longitud del hash en bytes
+DATASET_PARENTS = 256 # número de padres de cada elemento del conjunto de datos
+CACHE_ROUNDS = 3 # número de rondas en la producción de la caché
+ACCESSES = 64 # número de accesos en el bucle hashimoto
```
-### El uso de SHA3 {#sha3}
+### El uso de 'SHA3' {#sha3}
-El desarrollo de Ethereum coincidió con el desarrollo del estándar SHA3, y el proceso de estándares hizo un cambio tardío en el relleno del algoritmo hash finalizado, de modo que los hashes de Ethereum sha3_256 y sha3_512 no son hashes SHA3 estándar, sino una variante a la que se hace referencia a menudo referida a menudo como Keccak-256 y Keccak-512 en otros contextos. Vea la discusión, por ejemplo, [aquí](https://eips.ethereum.org/EIPS/eip-1803), [aquí](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use) o [aquí](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
+El desarrollo de Ethereum coincidió con el desarrollo del estándar SHA3, y el proceso de estándares hizo un cambio tardío en el relleno del algoritmo hash finalizado, de modo que los hashes de Ethereum sha3_256 y sha3_512 no son hashes SHA3 estándar, sino una variante a la que se hace referencia a menudo referida a menudo como Keccak-256 y Keccak-512 en otros contextos. Véase la discusión, p. ej., [aquí](https://eips.ethereum.org/EIPS/eip-1803), [aquí](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use) o [aquí](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057).
Por favor, tenga esto en cuenta, ya que los hashes SHA3 se mencionan en la descripción del algoritmo a continuación.
@@ -75,7 +75,7 @@ def get_full_size(block_number):
En el apéndice se proporcionan tablas de valores de conjuntos de datos y tamaño de caché.
-## Generación de la memoria caché {#cache-generation}
+## Generación de la caché {#cache-generation}
A continuación, especifiquemos la función para producir una memoria caché:
@@ -83,12 +83,12 @@ A continuación, especifiquemos la función para producir una memoria caché:
def mkcache(cache_size, seed):
n = cache_size // HASH_BYTES
- # Sequentially produce the initial dataset
+ # Producir secuencialmente el conjunto de datos inicial
o = [sha3_512(seed)]
for i in range(1, n):
o.append(sha3_512(o[-1]))
- # Use a low-round version of randmemohash
+ # Usar una versión de pocas rondas de randmemohash
for _ in range(CACHE_ROUNDS):
for i in range(n):
v = o[i][0] % n
@@ -97,11 +97,11 @@ def mkcache(cache_size, seed):
return o
```
-El proceso de producción de una memoria caché implica primero llenar secuencialmente 32 MB de memoria, luego realizar dos pasadas del algoritmo _RandMemoHash_ de Sergio Demian Lerner de [_Funciones de hashing para memoria dura extricta_ (2014)](http://www.hashcash.org/papers/memohash.pdf). El resultado es un conjunto de 524.288 valores de 64 bytes.
+El proceso de producción de la caché implica primero llenar secuencialmente hasta 32 MB de memoria, luego realizar dos pasadas del algoritmo _RandMemoHash_ de Sergio Demian Lerner de [_Strict Memory Hard Hashing Functions_ (2014)](http://www.hashcash.org/papers/memohash.pdf). El resultado es un conjunto de 524.288 valores de 64 bytes.
## Función de agregación de datos {#date-aggregation-function}
-Utilizamos un algoritmo inspirado en el hash [FNV](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) en algunos casos como un sustituto no asociativo de XOR. Tenga en cuenta que multiplicamos el número primo con la entrada completa de 32 bits, en contraste con la especificación FNV-1, que multiplica el número primo con un byte (octeto) a su vez.
+Utilizamos un algoritmo inspirado en el [hash FNV](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) en algunos casos como sustituto no asociativo de XOR. Tenga en cuenta que multiplicamos el número primo con la entrada completa de 32 bits, en contraste con la especificación FNV-1, que multiplica el número primo con un byte (octeto) a su vez.
```python
FNV_PRIME = 0x01000193
@@ -120,11 +120,11 @@ Cada elemento de 64 bytes en el conjunto de datos completo de 1 GB se calcula de
def calc_dataset_item(cache, i):
n = len(cache)
r = HASH_BYTES // WORD_BYTES
- # initialize the mix
+ # inicializar la mezcla
mix = copy.copy(cache[i % n])
mix[0] ^= i
mix = sha3_512(mix)
- # fnv it with a lot of random cache nodes based on i
+ # hacer fnv con muchos nodos de caché aleatorios basados en i
for j in range(DATASET_PARENTS):
cache_index = fnv(i ^ j, mix[j % r])
mix = map(fnv, mix, cache[cache_index % n])
@@ -140,27 +140,27 @@ def calc_dataset(full_size, cache):
## Bucle principal {#main-loop}
-Seguidamente, especificamos el bucle principal similar a Hashimoto, donde agregamos datos del conjunto de datos completo para producir nuestro valor final para un encabezado y nonce en particular. En el siguiente código, `encabezado` representa el SHA3-256 _hash_ de la representación RLP de un encabezado de bloque _truncated_, es decir, de un encabezado que excluye los campos **mixHash** y **nonce**. `nonce` son los ocho bytes de un entero sin signo de 64 bits en orden «big-endian». Así que `nonce[::-1]` es la representación «little-endian « de ocho bytes de ese valor:
+Seguidamente, especificamos el bucle principal similar a Hashimoto, donde agregamos datos del conjunto de datos completo para producir nuestro valor final para un encabezado y nonce en particular. En el código siguiente, `header` representa el _hash_ SHA3-256 de la representación RLP de un encabezado de bloque _truncado_, es decir, de un encabezado que excluye los campos **mixHash** y **nonce**. `nonce` son los ocho bytes de un entero sin signo de 64 bits en orden big-endian. Por tanto, `nonce[::-1]` es la representación little-endian de ocho bytes de ese valor:
```python
def hashimoto(header, nonce, full_size, dataset_lookup):
n = full_size / HASH_BYTES
w = MIX_BYTES // WORD_BYTES
mixhashes = MIX_BYTES / HASH_BYTES
- # combine header+nonce into a 64 byte seed
+ # combinar header+nonce en una semilla de 64 bytes
s = sha3_512(header + nonce[::-1])
- # start the mix with replicated s
+ # iniciar la mezcla con s replicado
mix = []
for _ in range(MIX_BYTES / HASH_BYTES):
mix.extend(s)
- # mix in random dataset nodes
+ # mezclar con nodos aleatorios del conjunto de datos
for i in range(ACCESSES):
p = fnv(i ^ s[0], mix[i % w]) % (n // mixhashes) * mixhashes
newdata = []
for j in range(MIX_BYTES / HASH_BYTES):
newdata.extend(dataset_lookup(p + j))
mix = map(fnv, mix, newdata)
- # compress mix
+ # comprimir la mezcla
cmix = []
for i in range(0, len(mix), 4):
cmix.append(fnv(fnv(fnv(mix[i], mix[i+1]), mix[i+2]), mix[i+3]))
@@ -176,9 +176,9 @@ def hashimoto_full(full_size, dataset, header, nonce):
return hashimoto(header, nonce, full_size, lambda x: dataset[x])
```
-Esencialmente, mantenemos una mezcla de 128 bytes de ancho, y recuperamos repetidamente de forma secuencial de 128 bytes del conjunto de datos completo y utilizamos la función `FNV` para combinarlo con la mezcla. Se utilizan 128 bytes de acceso secuencial para que cada ronda del algoritmo siempre obtenga una página completa de la RAM, minimizando las faltas de búfer de traducción que los ASIC teóricamente podrían evitar.
+Esencialmente, mantenemos una "mezcla" de 128 bytes de ancho, y recuperamos secuencialmente y repetidamente 128 bytes del conjunto de datos completo y usamos la función `fnv` para combinarla con la mezcla. Se utilizan 128 bytes de acceso secuencial para que cada ronda del algoritmo siempre obtenga una página completa de la RAM, minimizando las faltas de búfer de traducción que los ASIC teóricamente podrían evitar.
-Si el resultado de este algoritmo está por debajo del objetivo deseado, entonces el nonce es válido. Tenga en cuenta que la aplicación adicional de `sha3_256` al final asegura que exista un nonce intermedio que se puede proporcionar para demostrar que se realizó al menos una pequeña cantidad de trabajo; esta rápida verificación externa de PoW se puede utilizar con fines anti-DDoS. También sirve para proporcionar una garantía estadística de que el resultado es un número imparcial de 256 bits.
+Si el resultado de este algoritmo está por debajo del objetivo deseado, entonces el nonce es válido. Tenga en cuenta que la aplicación adicional de `sha3_256` al final garantiza que existe un nonce intermedio que se puede proporcionar para demostrar que se realizó al menos una pequeña cantidad de trabajo; esta verificación externa rápida de la PoW (prueba de trabajo) se puede utilizar con fines anti-DDoS. También sirve para proporcionar una garantía estadística de que el resultado es un número imparcial de 256 bits.
## Minería {#mining}
@@ -186,7 +186,7 @@ El algoritmo de minería se define de la siguiente manera:
```python
def mine(full_size, dataset, header, difficulty):
- # zero-pad target to compare with hash on the same digit
+ # rellenar con ceros el objetivo para compararlo con el hash en el mismo dígito
target = zpad(encode_int(2**256 // difficulty), 64)[::-1]
from random import randint
nonce = randint(0, 2**64)
@@ -195,7 +195,7 @@ def mine(full_size, dataset, header, difficulty):
return nonce
```
-## Definición del hash de semilla {#seed-hash}
+## Definición del hash de la semilla {#seed-hash}
Para calcular el hash semilla que se usaría para minar en la parte superior de un bloque dado, utilizamos el siguiente algoritmo:
@@ -209,9 +209,9 @@ Para calcular el hash semilla que se usaría para minar en la parte superior de
Tenga en cuenta que para una minería y verificación sin problemas, recomendamos precalcular futuros hashes semilla y conjuntos de datos en un hilo por separado.
-## Más información {#further-reading}
+## Lecturas adicionales {#further-reading}
-_¿Conoce un recurso comunitario que le ayudó? Editar esta página y agregarla!_
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Apéndice {#appendix}
@@ -220,7 +220,7 @@ El siguiente código debe anteponese si está interesado en ejecutar la especifi
```python
import sha3, copy
-# Assumes little endian bit ordering (same as Intel architectures)
+# Asume un orden de bits little-endian (el mismo que en las arquitecturas Intel)
def decode_int(s):
return int(s[::-1].encode('hex'), 16) if s else 0
@@ -248,7 +248,7 @@ def serialize_cache(ds):
serialize_dataset = serialize_cache
-# sha3 hash function, outputs 64 bytes
+# función de hash sha3, produce 64 bytes
def sha3_512(x):
return hash_words(lambda v: sha3.sha3_512(v).digest(), 64, x)
@@ -265,7 +265,7 @@ def isprime(x):
return True
```
-### Tamaños de datos {#data-sizes}
+### Tamaños de los datos {#data-sizes}
Las siguientes tablas de búsqueda proporcionan aproximadamente 2048 épocas tabuladas de tamaños de datos y tamaños de caché.
@@ -729,7 +729,7 @@ cache_sizes = [
50724032, 50853952, 50986048, 51117632, 51248576, 51379904, 51510848,
51641792, 51773248, 51903296, 52035136, 52164032, 52297664, 52427968,
52557376, 52690112, 52821952, 52952896, 53081536, 53213504, 53344576,
-53475776, 53608384, 53738816, 53870528, 54000832, 54131776, 54263744,
+53475776, 53608384, 53738816, 54000832, 54131776, 54263744,
54394688, 54525248, 54655936, 54787904, 54918592, 55049152, 55181248,
55312064, 55442752, 55574336, 55705024, 55836224, 55967168, 56097856,
56228672, 56358592, 56490176, 56621888, 56753728, 56884928, 57015488,
From b6ca55823eb7e935880f41dc5df534bdbb08e153 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:41 -0300
Subject: [PATCH 291/589] update(i18n):
public/content/translations/es/guides/index.md
---
public/content/translations/es/guides/index.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/public/content/translations/es/guides/index.md b/public/content/translations/es/guides/index.md
index e13fa859248..cdd7db4e961 100644
--- a/public/content/translations/es/guides/index.md
+++ b/public/content/translations/es/guides/index.md
@@ -10,18 +10,18 @@ lang: es
## Introducción
-1. [Cómo «crear» una cuenta de Ethereum](/guides/how-to-create-an-ethereum-account/): cualquiera puede crear una cartera de forma gratuita. Esta guía le mostrará por dónde empezar.
+1. [Cómo «crear» una cuenta de Ethereum](/guides/how-to-create-an-ethereum-account/) - Cualquiera puede crear una billetera de forma gratuita. Esta guía le mostrará por dónde empezar.
-2. [Cómo utilizar una cartera](/guides/how-to-use-a-wallet/) - Aprende a enviar y recibir tókenes en tu cartera y cómo conectar tu cartera a distintos proyectos.
+2. [Cómo usar una billetera](/guides/how-to-use-a-wallet/) - Aprende a enviar y recibir tokens en tu billetera y a conectar la billetera a distintos proyectos.
## Aspectos básicos de la seguridad
-1. [Cómo revocar el acceso al contrato inteligente a sus fondos criptográficos](/guides/how-to-revoke-token-access/): si de repente ve una transacción en su cartera que no inició, esta guía le enseñará a evitar que eso suceda de nuevo.
+1. [Cómo revocar el acceso de los contratos inteligentes a tus fondos de criptomonedas](/guides/how-to-revoke-token-access/) - Si de repente ves una transacción en tu billetera que no iniciaste, esta guía te enseñará a evitar que vuelva a suceder.
-2. [Cómo identificar fichas de estafa](/guides/how-to-id-scam-tokens/): qué son las fichas de estafa, cómo hacen para parecer legítimas y cómo identificarlas para protegerse y evitar estafas.
+2. [Cómo identificar tokens de estafa](/guides/how-to-id-scam-tokens/) - ¿Qué son los tokens de estafa? ¿Cómo hacen que parezcan legítimos y cómo puede identificarlos para protegerse y evitar caer en estafas?
## Uso de Ethereum
-1. [Cómo puentear los tókenes para capa 2](/guides/how-to-use-a-bridge/): ¿las transacciones de Ethereum son demasiado costosas? Considere el pasar a soluciones de escalado de Ethereum llamadas capa 2.
+1. [Cómo puentear tokens a la capa 2](/guides/how-to-use-a-bridge/) - ¿Son demasiado costosas las transacciones de Ethereum? Considere el pasar a soluciones de escalado de Ethereum llamadas capa 2.
-2. [Cómo intercambiar tókenes](/guides/how-to-swap-tokens/): ¿quiere cambiar sus tókenes por otro diferente? Esta sencilla guía le mostrará cómo hacerlo.
+2. [Cómo intercambiar tokens](/guides/how-to-swap-tokens/) - ¿Quieres cambiar tus tokens por otro diferente? Esta sencilla guía le mostrará cómo hacerlo.
From e3ef13166738b10fe42be88559ed634b278575d8 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:43 -0300
Subject: [PATCH 292/589] update(i18n):
public/content/translations/es/developers/docs/index.md
---
public/content/translations/es/developers/docs/index.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/content/translations/es/developers/docs/index.md b/public/content/translations/es/developers/docs/index.md
index 5dc504156cc..6ded456e182 100644
--- a/public/content/translations/es/developers/docs/index.md
+++ b/public/content/translations/es/developers/docs/index.md
@@ -6,7 +6,7 @@ lang: es
Esta documentación está diseñada para ayudarle a construir con Ethereum. Cubre Ethereum como concepto, explica la pila de tecnología de Ethereum y documenta temas avanzados para aplicaciones y casos de uso más complejos.
-Es un esfuerzo comunitario de código abierto, así que siéntase libre de sugerir nuevos temas, añadir nuevo contenido y proporcionar ejemplos dondequiera que crea que puede ser útil. Toda la documentación puede editarse a través de GitHub: si no está seguro/a de cómo hacerlo, [ siga estas instrucciones](https://github.com/ethereum/ethereum-org-website/blob/dev/docs/editing-markdown.md).
+Es un esfuerzo comunitario de código abierto, así que siéntase libre de sugerir nuevos temas, añadir nuevo contenido y proporcionar ejemplos dondequiera que crea que puede ser útil. Toda la documentación se puede editar a través de GitHub. Si no sabes cómo, [sigue estas instrucciones](https://github.com/ethereum/ethereum-org-website/blob/dev/docs/editing-markdown.md).
## Módulos de desarrollo {#development-modules}
@@ -16,7 +16,7 @@ Si este es su primer intento de desarrollo de Ethereum, le recomendamos que empi
-### Bloque de Ethereum {#ethereum-stack}
+### Pila de Ethereum {#ethereum-stack}
From cbc3557560e32e2433cd4b9b3f91529a345208d0 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:44 -0300
Subject: [PATCH 293/589] update(i18n):
public/content/translations/es/guides/how-to-use-a-bridge/index.md
---
.../es/guides/how-to-use-a-bridge/index.md | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/public/content/translations/es/guides/how-to-use-a-bridge/index.md b/public/content/translations/es/guides/how-to-use-a-bridge/index.md
index 1df0853c562..847ff924603 100644
--- a/public/content/translations/es/guides/how-to-use-a-bridge/index.md
+++ b/public/content/translations/es/guides/how-to-use-a-bridge/index.md
@@ -10,20 +10,20 @@ Si hay mucho tráfico en la red de Ethereum, puede ser costoso. Una solución pa
**Requisitos previos:**
-- tenga su propia cartera de criptomonedas, para ello puede seguir este tutorial:[ Como «registrar» una cuenta de Ethereum](/guides/how-to-create-an-ethereum-account/)
+- tener una billetera de criptomonedas; si no tiene una, siga esta guía para [crear una cuenta de Ethereum](/guides/how-to-create-an-ethereum-account/)
- añadir fondos a su cartera
## 1. Determine la red de capa 2 que quiere usar
-Puede enterarse de más cosas sobre los diferentes proyectos y enlaces importantes en nuestra[ página de capa 2](/layer-2/).
+Puede obtener más información sobre los diferentes proyectos y enlaces importantes en nuestra [página de capa 2](/layer-2/).
## 2. Vaya al puente seleccionado
Algunas capas 2 populares son:
-- [Puente Arbitrum](https://bridge.arbitrum.io/?l2ChainId=42161)
-- [Puente Optimism](https://app.optimism.io/bridge/deposit)
-- [Puente de red Boba](https://gateway.boba.network/)
+- [Puente de Arbitrum](https://portal.arbitrum.io/bridge?l2ChainId=42161)
+- [Puente de Optimism](https://app.optimism.io/bridge/deposit)
+- [Puente de la red Boba](https://hub.boba.network/)
## 3. Conéctese al puente con su cartera
@@ -39,7 +39,7 @@ Revise la cantidad que obtendrá a cambio de la red capa 2 y las comisiones para
## 5. Confirme la transacción en su cartera
-Usted deberá pagar una tasa en forma de ETH para procesar la transacción.
+Tendrá que pagar una tasa (llamada [gas](/glossary/#gas)) en ETH para procesar la transacción.

@@ -49,8 +49,7 @@ Este proceso no debería tardar más de 10 minutos.
## 7. Añada la red de la capa 2 seleccionada a su cartera (opcional)
-Puede utilizar [chainlist.org](http://chainlist.org) para encontrar los detalles RPC de la red. Una vez que se añada la red y la transacción haya finalizado, deberían aparecer los tókenes en su cartera.
-
+Puede utilizar [chainlist.org](http://chainlist.org) para encontrar los detalles RPC de la red. Una vez que se añada la red y la transacción haya finalizado, deberían aparecer los tókenes en su cartera.
@@ -66,7 +65,7 @@ Puede utilizar [chainlist.org](http://chainlist.org) para encontrar los detalles
### ¿Qué pasa si tengo fondos en un intercambio?
-Es posible que pueda retirar de algunas redes de capa 2 directamente desde algunos intercambios. Consulte la sección «Mover a la capa 2» de nuestra página [Capa 2](/layer-2/) para más información.
+Es posible que pueda retirar de algunas redes de capa 2 directamente desde algunos intercambios. Consulte la sección «Mover a la capa 2» de nuestra [página de la capa 2](/layer-2/) para más información.
### ¿Puedo volver a la red principal de Ethereum después de conectar mis tókenes a L2?
From 17b1ee2095c13740a62419037b45ded8baf07479 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:46 -0300
Subject: [PATCH 294/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/compiling/index.md
---
.../docs/smart-contracts/compiling/index.md | 22 +++++++++----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/public/content/translations/es/developers/docs/smart-contracts/compiling/index.md b/public/content/translations/es/developers/docs/smart-contracts/compiling/index.md
index 72ce7d96793..6c5bea25152 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/compiling/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/compiling/index.md
@@ -9,41 +9,41 @@ Necesita compilar su contrato para que su aplicación web y la máquina virtual
## Requisitos previos {#prerequisites}
-Resultará útil leer nuestra introducción a los [contratos inteligentes](/developers/docs/smart-contracts/) y la [Máquina virtual de Ethereum](/developers/docs/evm/) antes de leer acerca de la compilación.
+Podría resultarle útil leer nuestra introducción a los [contratos inteligentes](/developers/docs/smart-contracts/) y la [máquina virtual de Ethereum](/developers/docs/evm/) antes de leer sobre la compilación.
## La EVM {#the-evm}
-Para que la [EVM](/developers/docs/evm/) pueda ejecutar su contrato, debe estar en **bytecode**. La compilación convierte esto:
+Para que la [EVM](/developers/docs/evm/) pueda ejecutar su contrato, este debe estar en formato **bytecode**. La compilación convierte esto:
```solidity
pragma solidity 0.4.24;
contract Greeter {
- function greet() public constant returns (string) {
+ function greet() public view returns (string memory) {
return "Hello";
}
}
```
-**en esto:**
+**en esto**
```
PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0xCFAE3217 EQ PUSH2 0x46 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9B JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x80 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x48656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SLT 0xec 0xe 0xf5 0xf8 SLT 0xc7 0x2d STATICCALL ADDRESS SHR 0xdb COINBASE 0xb1 BALANCE 0xe8 0xf8 DUP14 0xda 0xad DUP13 LOG1 0x4c 0xb4 0x26 0xc2 DELEGATECALL PUSH7 0x8994D3E002900
```
-Se les denomina **códigos de operación**. Los códigos de operación con instrucciones simples que la máquina virtual de Ethereum (EVM) puede ejecutar. Cada código de operación representa una operación específica, como operaciones aritméticas, operaciones lógicas, manipulación de datos, flujo de control, etc.
+Estos se denominan **códigos de operación**. Los códigos de operación con instrucciones simples que la máquina virtual de Ethereum (EVM) puede ejecutar. Cada código de operación representa una operación específica, como operaciones aritméticas, operaciones lógicas, manipulación de datos, flujo de control, etc.
-[Más sobre los códigos de operación](/developers/docs/evm/opcodes/)
+[Más información sobre los códigos de operación](/developers/docs/evm/opcodes/)
## Aplicaciones web {#web-applications}
-El compilador también producirá la **interfaz binaria de aplicación (ABI)** que necesitas para que tu aplicación entienda el contrato y solicite las funciones del contrato.
+El compilador también producirá la **interfaz binaria de aplicación (ABI)**, que necesitará para que su aplicación entienda el contrato y llame a las funciones de este.
La ABI es un archivo JSON que describe el contrato implementado y sus funciones de contrato inteligente. Esto ayuda a cerrar la brecha entre web2 y web3
-Una [biblioteca de cliente de JavaScript](/developers/docs/apis/javascript/) leerá la **ABI** para que usted invoque su contrato inteligente en la interfaz de su aplicación web.
+Una [biblioteca de cliente de JavaScript](/developers/docs/apis/javascript/) leerá la **ABI** para que pueda llamar a su contrato inteligente desde la interfaz de su aplicación web.
A continuación se muestra la ABI para el contrato de token ERC-20. Un ERC-20 es un token que puedes operar en Ethereum.
@@ -272,11 +272,11 @@ A continuación se muestra la ABI para el contrato de token ERC-20. Un ERC-20 es
]
```
-## Leer más {#further-reading}
+## Lecturas adicionales {#further-reading}
-- [Especificación de ABI](https://solidity.readthedocs.io/en/v0.7.0/abi-spec.html) _: Solidity_
+- [Especificación de la ABI](https://solidity.readthedocs.io/en/v0.7.0/abi-spec.html) _– Solidity_
## Temas relacionados {#related-topics}
- [Bibliotecas de cliente de JavaScript](/developers/docs/apis/javascript/)
-- [Máquina virtual de Ehereum](/developers/docs/evm/)
+- [Máquina virtual de Ethereum](/developers/docs/evm/)
From 3135ca88ea68eef59502ff815515999e29ac00e5 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:47 -0300
Subject: [PATCH 295/589] update(i18n):
public/content/translations/es/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
---
.../index.md | 48 ++++++++++---------
1 file changed, 25 insertions(+), 23 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md b/public/content/translations/es/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
index c307c190c0a..640c3ad60f7 100644
--- a/public/content/translations/es/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
@@ -1,12 +1,14 @@
---
-title: Entender el contrato inteligente de token ERC
-description: Una intoducción a publicar tu primer contrato inteligente en una red de prueba de Ethereum
+title: Comprender el contrato inteligente del token ERC-20
+description: Aprenda a implementar el estándar de token ERC-20 con un ejemplo y una explicación completos del contrato inteligente de Solidity.
author: "jdourlens"
tags:
- - "contratos inteligentes"
- - "tókenes"
- - "Solidity"
- - "erc-20"
+ [
+ "contratos Inteligentes",
+ "tókenes",
+ "Solidity",
+ "erc-20"
+ ]
skill: beginner
lang: es
published: 2020-04-05
@@ -15,11 +17,11 @@ sourceUrl: https://ethereumdev.io/understand-the-erc20-token-smart-contract/
address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
---
-Uno de los [estándares de contrato inteligentes](/developers/docs/standards/) más significativos en Ethereum es conocido como [ERC-20](/developers/docs/standards/tokens/erc-20/), que se ha convertido en el estándar técnico utilizado para todos los contratos inteligentes en la cadena de bloques de Ethereum para implementaciones de tókenes fungibles.
+Uno de los [estándares de contratos inteligentes](/developers/docs/standards/) más significativos de Ethereum es el conocido como [ERC-20](/developers/docs/standards/tokens/erc-20/), que se ha convertido en el estándar técnico utilizado para todos los contratos inteligentes en la cadena de bloques de Ethereum para implementaciones de tokens fungibles.
-ERC-20 define una lista común de reglas a las que deben adherirse todos los tókenes fungibles de Ethereum. En consecuencia, este estándar de token permite a todo tipo de desarrolladores, predecir con precisión, cómo funcionarán los nuevos tókenes dentro del sistema Ethereum en general. Esto simplifica y facilita las tareas de los desarrolladores, ya que estos pueden continuar con su trabajo, sabiendo que todos y cada uno de los nuevos proyectos no se tendrán que repetir, cada vez que se libere un nuevo token, siempre y cuando el token siga las reglas.
+ERC-20 define una lista común de reglas a las que todos los tokens fungibles de Ethereum deben adherirse. En consecuencia, este estándar de token permite a los desarrolladores de todo tipo predecir con precisión cómo funcionarán los nuevos tokens dentro del sistema Ethereum en general. Esto simplifica y facilita las tareas de los desarrolladores, porque pueden continuar con su trabajo sabiendo que no será necesario rehacer cada nuevo proyecto cada vez que se lance un nuevo token, siempre que el token siga las reglas.
-He aquí, a modo de interfaz, las funciones que un ERC debe implementar. Si no está seguro de lo que es una interfaz, consulte nuestro artículo sobre [programación OOP en Solidity](https://ethereumdev.io/inheritance-in-solidity-contracts-are-classes/).
+A continuación se presentan, a modo de interfaz, las funciones que un ERC-20 debe implementar. Si no está seguro de lo que es una interfaz, consulte nuestro artículo sobre la [programación orientada a objetos (POO) en Solidity](https://ethereumdev.io/inheritance-in-solidity-contracts-are-classes/).
```solidity
pragma solidity ^0.6.0;
@@ -40,7 +42,7 @@ interface IERC20 {
}
```
-Aquí encontrará una explicación detallada del propósito de cada función. Seguidamente, presentaremos una implementación simple del token ERC-20.
+A continuación, se ofrece una explicación línea por línea de la finalidad de cada función. Después de esto, presentaremos una implementación sencilla del token ERC-20.
## Getters {#getters}
@@ -48,19 +50,19 @@ Aquí encontrará una explicación detallada del propósito de cada función. Se
function totalSupply() external view returns (uint256);
```
-Devuelve la cantidad de tókenes que existen. Esta función es un getter (capturador) y no modifica el estado del contrato. Tenga en cuenta que no hay valores decimales, solo enteros en Solidity. Por lo tanto, la mayoría de los tókenes adoptan 18 decimales y devolverán el suministro total y otros resultados a razón de 100000000000000 por token. No todos los tókenes tienen definidos 18 decimales y esto es algo que debe tener en cuenta al tratar con tókenes.
+Devuelve la cantidad de tokens existentes. Esta función es un «getter» y no modifica el estado del contrato. Tenga en cuenta que en Solidity no existen los números de punto flotante (conocidos como «floats»). Por lo tanto, la mayoría de los tokens adoptan 18 decimales y devolverán el suministro total y otros resultados como 1000000000000000000 para 1 token. No todos los tokens tienen 18 decimales y esto es algo a lo que debe prestar mucha atención cuando trabaje con tokens.
```solidity
function balanceOf(address account) external view returns (uint256);
```
-Devuelve la cantidad de tókenes pertenecientes a una dirección (`cuenta`). Esta función es un getter (capturador) y no modifica el estado del contrato.
+Devuelve la cantidad de tokens que posee una dirección (`account`). Esta función es un «getter» y no modifica el estado del contrato.
```solidity
function allowance(address owner, address spender) external view returns (uint256);
```
-El estándar ERC-20 permite que una dirección dé una asignación a otra dirección para poder recuperar tókenes de ella. Este getter (capturador) devuelve el número restante de tókenes que el `spender` (gastador) podrá gastar en nombre del `owner` (propietario). Esta función es un getter (capturador) y no modifica el estado del contrato y debería devolver 0 por defecto.
+El estándar ERC-20 permite que una dirección dé una asignación («allowance») a otra dirección para poder retirar tokens de ella. Este «getter» devuelve el número restante de tokens que el `spender` podrá gastar en nombre del `owner`. Esta función es un «getter», no modifica el estado del contrato y debería devolver 0 por defecto.
## Funciones {#functions}
@@ -68,19 +70,19 @@ El estándar ERC-20 permite que una dirección dé una asignación a otra direcc
function transfer(address recipient, uint256 amount) external returns (bool);
```
-Mueve la `amount` (cantidad) de tókenes de la dirección de la persona que llama a la función (`msg.sender`) a la dirección del destinatario. Esta función emite el evento de `Transfer` definido más adelante. Ella devuelve verdadero si la transferencia fuera posible.
+Mueve la `amount` (cantidad) de tokens desde la dirección de quien llama a la función (`msg.sender`) a la dirección del destinatario. Esta función emite el evento `Transfer` que se define más adelante. Devuelve `true` si la transferencia fue posible.
```solidity
function approve(address spender, uint256 amount) external returns (bool);
```
-Establece la cantidad `permitida` que el `gastador` puede transferir desde la función de llamada -caller- (`msg.sender) balance`. Esta función emite el evento de aprobación. La función devuelve si el permiso se ha establecido correctamente.
+Establece la cantidad de `allowance` (asignación) que el `spender` tiene permitido transferir desde el saldo de quien llama a la función (`msg.sender`). Esta función emite el evento `Approval`. La función devuelve un valor que indica si la asignación (`allowance`) se estableció con éxito.
```solidity
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
```
-Pasa la `cantidad` de tókenes de `remitente` al `destinatario` usando el mecanismo de autorización. La cantidad se deduce del total del solicitante. Esta función emite el evento `Transfer` (transferencia).
+Mueve la `amount` (cantidad) de tokens de `sender` a `recipient` utilizando el mecanismo de asignación (`allowance`). La `amount` (cantidad) se deduce entonces de la asignación (`allowance`) de quien llama. Esta función emite el evento `Transfer`.
## Eventos {#events}
@@ -88,17 +90,17 @@ Pasa la `cantidad` de tókenes de `remitente` al `destinatario` usando el mecani
event Transfer(address indexed from, address indexed to, uint256 value);
```
-Este evento se emite cuando se envía la cantidad de tókenes (valor) de la dirección `from ` a la dirección `to`.
+Este evento se emite cuando la cantidad de tokens (`value`) se envía desde la dirección `from` a la dirección `to`.
-En el caso de acuñar nuevos tókenes, la transferencia suele hacerse `from` la dirección 0x00..0000, mientras que en el caso de la grabación de tókenes la transferencia es a `to` 0x00..0000.
+En el caso de acuñar nuevos tokens, la transferencia suele ser `from` la dirección 0x00..0000, mientras que en el caso de quemar tokens, la transferencia es `to` 0x00..0000.
```solidity
event Approval(address indexed owner, address indexed spender, uint256 value);
```
-Este evento se emite cuando el `owner` (propietario) aprueba la cantidad de tókenes (`value` [valor]) que quiere utilizar el `spender` (gastador).
+Este evento se emite cuando el `owner` aprueba la cantidad de tokens (`value`) que puede usar el `spender`.
-## Una implementación básica de los tókenes ERC-20 {#a-basic-implementation-of-erc-20-tokens}
+## Una implementación básica de los tokens ERC-20 {#a-basic-implementation-of-erc-20-tokens}
Este es el código más sencillo en el que puede basar su token ERC-20:
@@ -136,11 +138,11 @@ contract ERC20Basic is IERC20 {
constructor() {
- balances[msg.sender] = totalSupply_;
+ balances[msg.sender] = totalSupply_;
}
function totalSupply() public override view returns (uint256) {
- return totalSupply_;
+ return totalSupply_;
}
function balanceOf(address tokenOwner) public override view returns (uint256) {
@@ -178,4 +180,4 @@ contract ERC20Basic is IERC20 {
}
```
-Otra implementación excelente del estándar de token ERC-20 es la implementación de [OpenZeppelin ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20).
+Otra excelente implementación del estándar de token ERC-20 es la [implementación de ERC-20 de OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20).
From b8166786f4e8e7eb765d16fbf5a33a9b695343f4 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:48 -0300
Subject: [PATCH 296/589] update(i18n):
public/content/translations/es/developers/docs/data-structures-and-encoding/index.md
---
.../data-structures-and-encoding/index.md | 20 +++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/public/content/translations/es/developers/docs/data-structures-and-encoding/index.md b/public/content/translations/es/developers/docs/data-structures-and-encoding/index.md
index 53c11abba16..f801d70c9b3 100644
--- a/public/content/translations/es/developers/docs/data-structures-and-encoding/index.md
+++ b/public/content/translations/es/developers/docs/data-structures-and-encoding/index.md
@@ -1,32 +1,32 @@
---
-title: Estructura de datos y codificación
+title: Estructuras de datos y codificación
description: Visión general de las estructuras de datos fundamentales de Ethereum.
lang: es
sidebarDepth: 2
---
-Ethereum crea, almacena y transfiere grandes cantidades de datos. Estos datos deben ser formateados de forma estandarizada y eficiente en el uso de memoria para permitir a cualquiera [ejecutar un nodo](/run-a-node/) en hardware relativamente modesto para consumidores. Para lograrlo, se utilizan varias estructuras de datos específicas en la pila de Ethereum.
+Ethereum crea, almacena y transfiere grandes cantidades de datos. Estos datos deben formatearse de manera estandarizada y eficiente en cuanto a la memoria para permitir que cualquiera [ejecute un nodo](/run-a-node/) en un hardware de consumo relativamente modesto. Para lograrlo, se utilizan varias estructuras de datos específicas en la pila de Ethereum.
-## Pre requisitos: {#prerequisites}
+## Requisitos previos {#prerequisites}
-Es aconsejable entender los fundamentos de Ethereum y de [software cliente](/developers/docs/nodes-and-clients/). También es recomendable estar familiarizado con la capa de red y el [Informe sobre Ethereum](/whitepaper/).
+Debe comprender los fundamentos de Ethereum y el [software de cliente](/developers/docs/nodes-and-clients/). Se recomienda estar familiarizado con la capa de red y [el informe técnico de Ethereum](/whitepaper/).
-## Estructura de datos {#data-structures}
+## Estructuras de datos {#data-structures}
-### Patricia Merkle tries {#patricia-merkle-tries}
+### Tries de Patricia Merkle {#patricia-merkle-tries}
Los Patricia Merkle Tries son estructuras que codifican pares clave-valor en un trie determinista y criptográficamente autenticado. Estos se utilizan en toda la capa de ejecución de Ethereum.
-[Más información sobre los Patricia Merkle Tries](/developers/docs/data-structures-and-encoding/patricia-merkle-trie)
+[Más sobre los tries de Patricia Merkle](/developers/docs/data-structures-and-encoding/patricia-merkle-trie)
### Prefijo de longitud recursiva {#recursive-length-prefix}
El prefijo de longitud recursiva (RLP) es un método de serialización que se utiliza extensivamente en toda la capa de ejecución de Ethereum.
-[Más información sobre el RLP](/developers/docs/data-structures-and-encoding/rlp)
+[Más sobre RLP](/developers/docs/data-structures-and-encoding/rlp)
-### Simple Serialize {#simple-serialize}
+### Serialización simple {#simple-serialize}
Simple Serialize (SSZ) es el formato de serialización dominante en la capa de consenso de Ethereum debido a su compatibilidad con la merklelización (merklelization).
-[Más información sobre SSZ](/developers/docs/data-structures-and-encoding/ssz)
+[Más sobre SSZ](/developers/docs/data-structures-and-encoding/ssz)
From 8ead9297ebc7458e8d44127a5444a1bad529d8b0 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:50 -0300
Subject: [PATCH 297/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
---
.../index.md | 200 ++++++++++--------
1 file changed, 106 insertions(+), 94 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md b/public/content/translations/es/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
index 5d931480552..7989661cff1 100644
--- a/public/content/translations/es/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
@@ -4,11 +4,13 @@ description: Cómo utilizar Echidna para probar contratos inteligentes automáti
author: "Trailofbits"
lang: es
tags:
- - "solidity"
- - "contratos inteligentes"
- - "seguridad"
- - "pruebas"
- - "fuzzing"
+ [
+ "Solidity",
+ "contratos Inteligentes",
+ "seguridades",
+ "pruebas",
+ "fuzzing"
+ ]
skill: advanced
published: 2020-04-10
source: Desarrollar contratos seguros
@@ -19,16 +21,16 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/progr
Echidna se puede instalar a través de docker o por medio del binario precompilado.
-### Echidna a través de docker {#echidna-through-docker}
+### Echidna a través de Docker {#echidna-through-docker}
```bash
docker pull trailofbits/eth-security-toolbox
docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox
```
-_El comando de arriba ejecuta eth-security-toolbox en un docker que tiene acceso a su directorio actual. Puede cambiar los archivos desde su host y correr las herramientas dentro de los archivos desde el docker._
+_El comando anterior ejecuta eth-security-toolbox en un Docker que tiene acceso a su directorio actual. Puede cambiar los archivos desde su host y ejecutar las herramientas en los archivos desde el Docker_
-Dentro de docker, ejecute:
+Dentro de Docker, ejecute:
```bash
solc-select 0.5.11
@@ -41,27 +43,27 @@ cd /home/training
## Introducción al fuzzing basado en propiedades {#introduction-to-property-based-fuzzing}
-Echidna es un fuzzer basado en propiedades; está descrito en nuestras entradas de blog anteriores ([1](https://blog.trailofbits.com/2018/03/09/echidna-a-smart-fuzzer-for-ethereum/), [2](https://blog.trailofbits.com/2018/05/03/state-machine-testing-with-echidna/), [3](https://blog.trailofbits.com/2020/03/30/an-echidna-for-all-seasons/)).
+Echidna es un fuzzer basado en propiedades, que describimos en nuestras entradas de blog anteriores ([1](https://blog.trailofbits.com/2018/03/09/echidna-a-smart-fuzzer-for-ethereum/), [2](https://blog.trailofbits.com/2018/05/03/state-machine-testing-with-echidna/), [3](https://blog.trailofbits.com/2020/03/30/an-echidna-for-all-seasons/)).
### Fuzzing {#fuzzing}
-El [fuzzing](https://wikipedia.org/wiki/Fuzzing) es una técnica conocida en la comunidad de la seguridad. Consiste en la generación de entradas que son más o menos aleatorias para encontrar errores en el programa. Los fuzzers para software tradicional (como [AFL](http://lcamtuf.coredump.cx/afl/) o [LibFuzzer](https://llvm.org/docs/LibFuzzer.html)) son herramientas eficaces para encontrar errores.
+[Fuzzing](https://wikipedia.org/wiki/Fuzzing) es una técnica muy conocida en la comunidad de la seguridad. Consiste en generar entradas que son más o menos aleatorias para encontrar errores en el programa. Los fuzzers para software tradicional (como [AFL](http://lcamtuf.coredump.cx/afl/) o [LibFuzzer](https://llvm.org/docs/LibFuzzer.html)) son conocidos por ser herramientas eficientes para encontrar errores.
Más allá de la generación de entradas puramente aleatorias, existen muchas técnicas y estrategias para generar buenas entradas, que incluyen:
- Obtener feedback de cada ejecución y guiar la generación usándolo. Por ejemplo, si una entrada recién generada conduce al descubrimiento de una nueva ruta, puede tener sentido generar nuevas entradas cercanas a ella.
-- Generar la entrada respetando una restricción estructural. Por ejemplo, si su entrada contiene un encabezado con una suma de control o checksum, tendrá sentido dejar que el fuzzer genere una entrada que valide la suma de control.
-- Usar entradas conocidas para generar nuevas entradas: si tiene acceso a un gran conjunto de datos de entrada válidos, el fuzzer puede generar nuevas entradas a partir de ellos, en lugar de comenzar la generación desde cero. Estas se conocen usualmente como _seeds_.
+- Generar la entrada respetando una restricción estructural. Por ejemplo, si su entrada contiene una cabecera con una suma de verificación (checksum), tendrá sentido dejar que el fuzzer genere una entrada que valide la suma de verificación.
+- Utilizar entradas conocidas para generar nuevas entradas: si tiene acceso a un gran conjunto de datos de entradas válidas, su fuzzer puede generar nuevas entradas a partir de ellas, en lugar de comenzar la generación desde cero. Estas se suelen llamar _seeds_.
### Fuzzing basado en propiedades {#property-based-fuzzing}
-Echidna pertenece a una familia específica de fuzzer: fuzzing basado en propiedades inspirado en gran medida en [QuickCheck](https://wikipedia.org/wiki/QuickCheck). En contraste a un fuzzer clásico que intentará encontrar crashes, Echidna intentará romper invariantes definidas por el usuario.
+Echidna pertenece a una familia específica de fuzzer: el fuzzing basado en propiedades, muy inspirado en [QuickCheck](https://wikipedia.org/wiki/QuickCheck). A diferencia del fuzzer clásico, que intentará encontrar fallos, Echidna intentará romper las invariantes definidas por el usuario.
-En los contratos inteligentes, las invariantes son funciones de Solidity que pueden representar cualquier estado incorrecto o inválido al que pueda llegar el contrato, incluyendo:
+En los contratos inteligentes, las invariantes son funciones de Solidity, que pueden representar cualquier estado incorrecto o inválido que el contrato puede alcanzar, incluyendo:
- Control de acceso incorrecto: el atacante se convirtió en el propietario del contrato.
-- Máquina de estado incorrecta: los tokens se pueden transferir mientras el contrato está en pausa.
-- Aritmética incorrecta: el usuario puede desbordar su saldo y obtener tokens gratis ilimitados.
+- Máquina de estado incorrecta: los tokens pueden transferirse mientras el contrato está en pausa.
+- Aritmética incorrecta: el usuario puede provocar un subdesbordamiento en su saldo y obtener tokens gratis ilimitados.
### Probar una propiedad con Echidna {#testing-a-property-with-echidna}
@@ -83,26 +85,26 @@ contract Token{
}
```
-Supondremos que este token debe tener las siguientes propiedades:
+Asumiremos que este token debe tener las siguientes propiedades:
-- Cualquier persona puede tener como máximo 1000 tokens
-- El token no puede transferirse (no es un token ERC20)
+- Cualquiera puede tener un máximo de 1000 tokens
+- El token no se puede transferir (no es un token ERC20)
### Escribir una propiedad {#write-a-property}
-Las propiedades de Echidna son funciones de Solidity. Una propiedad:
+Las propiedades de Echidna son funciones de Solidity. Una propiedad debe:
-- No debe tener ningún argumento.
-- Devolver `true` si hay éxito.
-- Su nombre debe comenzar con `echidna`.
+- No tener argumentos
+- Devolver `true` si tiene éxito
+- Tener un nombre que empiece con `echidna`
-Echidna:
+Echidna hará lo siguiente:
-- Generará automáticamente transacciones arbitrarias para probar la propiedad.
-- Reportará cualquier transacción que haga que una propiedad devuelva `false` o arroje un error.
-- Descartará efectos secundarios al llamar a una propiedad (es decir, si la propiedad cambia una variable de estado, se descarta después de la prueba).
+- Generar automáticamente transacciones arbitrarias para probar la propiedad.
+- Informar de cualquier transacción que lleve a una propiedad a devolver `false` o a lanzar un error.
+- Descartar los efectos secundarios al llamar a una propiedad (es decir, si la propiedad cambia una variable de estado, se descarta después de la prueba)
-La siguiente propiedad comprueba que el invocante no tenga más de 1000 tokens:
+La siguiente propiedad comprueba que quien realiza la llamada no tiene más de 1000 tokens:
```solidity
function echidna_balance_under_1000() public view returns(bool){
@@ -110,7 +112,7 @@ function echidna_balance_under_1000() public view returns(bool){
}
```
-Use herencia para separar su contrato de sus propiedades:
+Utilice la herencia para separar su contrato de sus propiedades:
```solidity
contract TestToken is Token{
@@ -120,18 +122,18 @@ contract TestToken is Token{
}
```
-[`token.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/token.sol) implementa la propiedad y hereda del contrato.
+[`token.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/token.sol) implementa la propiedad y hereda del token.
### Iniciar un contrato {#initiate-a-contract}
-Echidna necesita un [constructor](/developers/docs/smart-contracts/anatomy/#constructor-functions) sin argumento. Si su contrato necesita una inicialización específica, debe hacerlo en el constructor.
+Echidna necesita un [constructor](/developers/docs/smart-contracts/anatomy/#constructor-functions) sin argumentos. Si su contrato necesita una inicialización específica, debe hacerlo en el constructor.
Hay algunas direcciones específicas en Echidna:
- `0x00a329c0648769A73afAc7F9381E08FB43dBEA72`, que llama al constructor.
-- `0x10000`, `0x20000` y `0x00a329C0648769a73afAC7F9381e08fb43DBEA70`, que llama de forma aleatoria a las otras funciones.
+- `0x10000`, `0x20000` y `0x00a329C0648769a73afAC7F9381e08fb43DBEA70`, que llaman aleatoriamente a las otras funciones.
-No necesitamos ninguna inicialización en particular en nuestro ejemplo actual; como resultado, nuestro constructor está vacío.
+No necesitamos ninguna inicialización particular en nuestro ejemplo actual; como resultado, nuestro constructor está vacío.
### Ejecutar Echidna {#run-echidna}
@@ -141,15 +143,15 @@ Echidna se inicia con:
echidna-test contract.sol
```
-Si contract.sol contiene varios contratos, puede especificar el objetivo:
+Si `contract.sol` contiene varios contratos, puede especificar el objetivo:
```bash
echidna-test contract.sol --contract MyContract
```
-### Resumen: probar una propiedad {#summary-testing-a-property}
+### Resumen: Probar una propiedad {#summary-testing-a-property}
-A continuación se resume la ejecución de echidna en nuestro ejemplo:
+A continuación se resume la ejecución de Echidna en nuestro ejemplo:
```solidity
contract TestToken is Token{
@@ -172,11 +174,12 @@ echidna_balance_under_1000: failed!💥
...
```
-Echidna descubrió que la propiedad se viola si se llama a `backdoor`.
+Echidna encontró que la propiedad se viola si se llama a `backdoor`.
-## Filtrado de funciones para llamar durante una campaña de fuzzing {#filtering-functions-to-call-during-a-fuzzing-campaign}
+## Filtrar funciones para llamar durante una campaña de fuzzing {#filtering-functions-to-call-during-a-fuzzing-campaign}
-Veremos cómo filtrar las funciones a fuzzear. El objetivo es el siguiente contrato inteligente.
+Veremos cómo filtrar las funciones a las que aplicar fuzzing.
+El objetivo es el siguiente contrato inteligente:
```solidity
contract C {
@@ -227,7 +230,9 @@ contract C {
}
```
-Este pequeño ejemplo obliga a Echidna a encontrar una secuencia determinada de transacciones para cambiar una variable de estado. Esto es difícil para un fuzzer (se recomienda utilizar una herramienta de ejecución simbólica como [Manticore](https://github.com/trailofbits/manticore)). Podemos ejecutar Echidna para verificar esto:
+Este pequeño ejemplo obliga a Echidna a encontrar una secuencia determinada de transacciones para cambiar una variable de estado.
+Esto es difícil para un fuzzer (se recomienda usar una herramienta de ejecución simbólica como [Manticore](https://github.com/trailofbits/manticore)).
+Podemos ejecutar Echidna para verificar esto:
```bash
echidna-test multi.sol
@@ -236,9 +241,11 @@ echidna_state4: passed! 🎉
Seed: -3684648582249875403
```
-### Filtrar funciones {#filtering-functions}
+### Filtrado de funciones {#filtering-functions}
-Echidna tiene problemas para encontrar la secuencia correcta para probar este contrato porque las dos funciones de restablecimiento (`reset1` y `reset2`) establecerán todas las variables de estado a `false`. Sin embargo, podemos usar una función especial de Echidna para poner en la lista negra la función de restablecimiento o para poner en la lista blanca solo las funciones `f`, `g`, `h` e `i`.
+Echidna tiene problemas para encontrar la secuencia correcta para probar este contrato porque las dos funciones de reseteo (`reset1` y `reset2`) establecerán todas las variables de estado a `false`.
+Sin embargo, podemos usar una característica especial de Echidna para incluir en la lista negra la función de reseteo o para incluir en la lista blanca solo las funciones `f`, `g`,
+`h` e `i`.
Para incluir funciones en la lista negra, podemos usar este archivo de configuración:
@@ -247,15 +254,15 @@ filterBlacklist: true
filterFunctions: ["reset1", "reset2"]
```
-Otro enfoque para filtrar funciones es incluir funciones en la lista blanca. Para ello, podemos utilizar este archivo de configuración:
+Otro enfoque para filtrar funciones es listar las funciones incluidas en la lista blanca. Para ello, podemos usar este archivo de configuración:
```yaml
filterBlacklist: false
filterFunctions: ["f", "g", "h", "i"]
```
-- `filterBlacklist` es `true` de forma predeterminada.
-- El filtrado se realizará únicamente por nombre (sin parámetros). Si tiene `f()` y `f(uint256)`, el filtro `"f"` coincidirá con ambas funciones.
+- `filterBlacklist` es `true` por defecto.
+- El filtrado se realizará solo por nombre (sin parámetros). Si tiene `f()` y `f(uint256)`, el filtro `"f"` coincidirá con ambas funciones.
### Ejecutar Echidna {#run-echidna-1}
@@ -272,11 +279,11 @@ echidna_state4: failed!💥
i()
```
-Echidna encontrará la secuencia de transacciones para falsificar la propiedad casi de inmediato.
+Echidna encontrará la secuencia de transacciones para falsear la propiedad casi de inmediato.
-### Resumen: filtrado de funciones {#summary-filtering-functions}
+### Resumen: Filtrado de funciones {#summary-filtering-functions}
-Echidna puede incluir funciones en una lista negra o lista blanca para llamar durante una campaña de fuzzing utilizando:
+Echidna puede incluir funciones en una lista negra o en una lista blanca para llamar durante una campaña de fuzzing usando:
```yaml
filterBlacklist: true
@@ -288,11 +295,11 @@ echidna-test contract.sol --config config.yaml
...
```
-Echidna comienza una campaña de fuzzing, ya sea colocando en la lista negra `f1`, `f2` y `f3` o solo los invocándolas según el valor del booleano `filterBlacklist`.
+Echidna inicia una campaña de fuzzing, ya sea incluyendo en la lista negra a `f1`, `f2` y `f3` o solo llamando a estas, según el valor del booleano `filterBlacklist`.
-## Cómo probar la afirmación de Solidity con Echidna {#how-to-test-soliditys-assert-with-echidna}
+## Cómo probar el assert de Solidity con Echidna {#how-to-test-soliditys-assert-with-echidna}
-En este breve tutorial, mostraremos cómo usar Echidna para probar la verificación de afirmaciones en contratos. Supongamos que tenemos un contrato como este:
+En este breve tutorial, vamos a mostrar cómo usar Echidna para probar la comprobación de aserciones en los contratos. Supongamos que tenemos un contrato como este:
```solidity
contract Incrementor {
@@ -307,9 +314,9 @@ contract Incrementor {
}
```
-### Escriba una afirmación {#write-an-assertion}
+### Escribir una aserción {#write-an-assertion}
-Queremos asegurarnos de que `tmp` sea menor o igual que `counter` después de devolver su diferencia. Podríamos escribir una propiedad de Echidna, pero tendremos que almacenar el valor `tmp` en algún lugar. En su lugar, podríamos usar una afirmación como esta:
+Queremos asegurarnos de que `tmp` es menor o igual que `counter` después de devolver su diferencia. Podríamos escribir una propiedad de Echidna, pero necesitaremos almacenar el valor `tmp` en algún lugar. En su lugar, podríamos usar una aserción como esta:
```solidity
contract Incrementor {
@@ -326,13 +333,13 @@ contract Incrementor {
### Ejecutar Echidna {#run-echidna-2}
-Para habilitar la prueba de falla de afirmaciones, cree un [archivo de configuración de Echidna](https://github.com/crytic/echidna/wiki/Config) `config.yaml`:
+Para habilitar la prueba de fallos de aserción, cree un [archivo de configuración de Echidna](https://github.com/crytic/echidna/wiki/Config) `config.yaml`:
```yaml
checkAsserts: true
```
-Al ejecutar este contrato en Echidna, obtenemos los resultados esperados:
+Cuando ejecutamos este contrato en Echidna, obtenemos los resultados esperados:
```bash
echidna-test assert.sol --config config.yaml
@@ -346,11 +353,11 @@ assertion in inc: failed!💥
Seed: 1806480648350826486
```
-Como puede ver, Echidna informa de un error de afirmación en la función `inc`. Es posible agregar más de una afirmación por función, pero Echidna no puede distinguir qué afirmación falló.
+Como puede ver, Echidna informa de un fallo de aserción en la función `inc`. Es posible añadir más de una aserción por función, pero Echidna no puede decir qué aserción ha fallado.
-### Cómo y cuándo utilizar afirmaciones {#when-and-how-use-assertions}
+### Cuándo y cómo usar aserciones {#when-and-how-use-assertions}
-Las afirmaciones pueden usarse como alternativas a las propiedades explícitas, especialmente si las condiciones a verificar están directamente relacionadas con el uso correcto de alguna operación `f`. Agregar afirmaciones luego de algo de código hará que la verificación suceda inmediatamente después de la ejecución:
+Las aserciones se pueden utilizar como alternativas a las propiedades explícitas, especialmente si las condiciones a comprobar están directamente relacionadas con el uso correcto de alguna operación `f`. Añadir aserciones después de un código forzará que la comprobación se produzca inmediatamente después de que se haya ejecutado:
```solidity
function f(..) public {
@@ -362,7 +369,7 @@ function f(..) public {
```
-Por el contrario, el uso de una propiedad explícita de Echidna ejecutará transacciones de forma aleatoria y no hay una manera fácil de asegurar exactamente cuándo habrá una verificación. Es posible utilizar esta alternativa:
+Por el contrario, usar una propiedad explícita de Echidna ejecutará transacciones aleatoriamente y no hay una forma fácil de forzar exactamente cuándo se comprobará. Aún es posible usar esta solución:
```solidity
function echidna_assert_after_f() public returns (bool) {
@@ -371,22 +378,22 @@ function echidna_assert_after_f() public returns (bool) {
}
```
-Sin embargo, existen algunos problemas:
+Sin embargo, hay algunos problemas:
- Falla si `f` se declara como `internal` o `external`.
-- No está claro qué argumentos deben usarse para llamar a `f`.
+- No está claro qué argumentos se deben usar para llamar a `f`.
- Si `f` se revierte, la propiedad fallará.
-En general, recomendamos seguir la [recomendación de John Regehr](https://blog.regehr.org/archives/1091) sobre cómo utilizar las afirmaciones:
+En general, recomendamos seguir la [recomendación de John Regehr](https://blog.regehr.org/archives/1091) sobre cómo usar las aserciones:
-- No fuerce ningún efecto secundario durante la verificación de afirmaciones. Por ejemplo: `assert(ChangeStateAndReturn() == 1)`
-- No haga afirmaciones obvias. Por ejemplo `assert(var >= 0)`, donde `var` se declara como `uint`.
+- No fuerce ningún efecto secundario durante la comprobación de la aserción. Por ejemplo: `assert(ChangeStateAndReturn() == 1)`
+- No asegure declaraciones obvias. Por ejemplo, `assert(var >= 0)` donde `var` se declara como `uint`.
-Por último, **no utilice** `require` en lugar de `assert`, ya que Echidna no podrá detectarlo (el contrato se revertirá de todos modos).
+Finalmente, por favor, **no use** `require` en lugar de `assert`, ya que Echidna no podrá detectarlo (pero el contrato se revertirá de todos modos).
-### Resumen: verificación de afirmaciones {#summary-assertion-checking}
+### Resumen: comprobación de aserciones {#summary-assertion-checking}
-A continuación se resume la ejecución de echidna en nuestro ejemplo:
+A continuación se resume la ejecución de Echidna en nuestro ejemplo:
```solidity
contract Incrementor {
@@ -413,11 +420,11 @@ assertion in inc: failed!💥
Seed: 1806480648350826486
```
-Echidna descubrió que la afirmación en `inc` puede fallar si se llama a esta función varias veces con argumentos grandes.
+Echidna encontró que la aserción en `inc` puede fallar si esta función se llama varias veces con argumentos grandes.
-## Recolectar y modificar un corpus de Echidna {#collecting-and-modifying-an-echidna-corpus}
+## Recopilar y modificar un corpus de Echidna {#collecting-and-modifying-an-echidna-corpus}
-Veremos cómo recopilar y utilizar un corpus de transacciones con Echidna. El objetivo es el siguiente contrato inteligente [`magic.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/magic.sol):
+Veremos cómo recopilar y usar un corpus de transacciones con Echidna. El objetivo es el siguiente contrato inteligente [`magic.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/magic.sol):
```solidity
contract C {
@@ -437,7 +444,8 @@ contract C {
}
```
-Este pequeño ejemplo obliga a Echidna a encontrar ciertos valores para cambiar una variable de estado. Esto es difícil para un fuzzer (se recomienda utilizar una herramienta de ejecución simbólica como [Manticore](https://github.com/trailofbits/manticore)). Podemos ejecutar Echidna para verificar esto:
+Este pequeño ejemplo obliga a Echidna a encontrar ciertos valores para cambiar una variable de estado. Esto es difícil para un fuzzer (se recomienda usar una herramienta de ejecución simbólica como [Manticore](https://github.com/trailofbits/manticore)).
+Podemos ejecutar Echidna para verificar esto:
```bash
echidna-test magic.sol
@@ -448,11 +456,11 @@ echidna_magic_values: passed! 🎉
Seed: 2221503356319272685
```
-Sin embargo, aún podemos usar Echidna para recolectar el corpus al ejecutar esta campaña de fuzzing.
+Sin embargo, aún podemos usar Echidna para recopilar un corpus al ejecutar esta campaña de fuzzing.
-### Recolección de un corpus {#collecting-a-corpus}
+### Recopilando un corpus {#collecting-a-corpus}
-Para habilitar la recolección de un corpus, cree un directorio de corpus:
+Para habilitar la recopilación del corpus, cree un directorio de corpus:
```bash
mkdir corpus-magic
@@ -465,13 +473,14 @@ coverage: true
corpusDir: "corpus-magic"
```
-Ahora podemos ejecutar nuestra herramienta y verificar el corpus recopilado:
+Ahora podemos ejecutar nuestra herramienta y comprobar el corpus recopilado:
```bash
echidna-test magic.sol --config config.yaml
```
-Echidna aún no puede encontrar los valores mágicos correctos, pero podemos ver el corpus recopilado. Por ejemplo, uno de estos archivos era:
+Echidna todavía no puede encontrar los valores mágicos correctos, pero podemos echar un vistazo al corpus que ha recopilado.
+Por ejemplo, uno de estos archivos era:
```json
[
@@ -516,7 +525,7 @@ Echidna aún no puede encontrar los valores mágicos correctos, pero podemos ver
]
```
-Claramente, esta entrada no provocará la falla en nuestra propiedad. Sin embargo, en el siguiente paso veremos cómo modificarla para ello.
+Claramente, esta entrada no activará el fallo en nuestra propiedad. Sin embargo, en el siguiente paso veremos cómo modificarlo para ello.
### Sembrar un corpus {#seeding-a-corpus}
@@ -526,7 +535,7 @@ Echidna necesita ayuda para lidiar con la función `magic`. Vamos a copiar y mod
cp corpus/2712688662897926208.txt corpus/new.txt
```
-Modificaremos `new.txt` para llamar a `magic (42,129,333,0)`. Ahora, podemos volver a ejecutar Echidna:
+Modificaremos `new.txt` para llamar a `magic(42,129,333,0)`. Ahora, podemos volver a ejecutar Echidna:
```bash
echidna-test magic.sol --config config.yaml
@@ -542,11 +551,11 @@ Seed: -7293830866560616537
```
-En esta ocasión, encontró que la propiedad es violada inmediatamente.
+Esta vez, encontró que la propiedad es violada inmediatamente.
-## Buscar transacciones con alto consumo de gas {#finding-transactions-with-high-gas-consumption}
+## Encontrar transacciones con alto consumo de gas {#finding-transactions-with-high-gas-consumption}
-Veremos cómo encontrar las transacciones con un alto consumo de gas utilizando Echidna. El objetivo es el siguiente contrato inteligente.
+Veremos cómo encontrar las transacciones con un alto consumo de gas utilizando Echidna. El objetivo es el siguiente contrato inteligente:
```solidity
contract C {
@@ -571,9 +580,10 @@ contract C {
}
```
-Aquí `expensive` puede tener un alto consumo de gas.
+Aquí `expensive` puede tener un gran consumo de gas.
-Actualmente, Echidna siempre necesita una propiedad para probar: aquí `echidna_test` siempre devuelve `true`. Podemos ejecutar Echidna para verificar esto:
+Actualmente, Echidna siempre necesita una propiedad para probar: aquí `echidna_test` siempre devuelve `true`.
+Podemos ejecutar Echidna para verificar esto:
```
echidna-test gas.sol
@@ -583,7 +593,7 @@ echidna_test: passed! 🎉
Seed: 2320549945714142710
```
-### Medir el consumo de gas {#measuring-gas-consumption}
+### Medición del consumo de gas {#measuring-gas-consumption}
Para habilitar el consumo de gas con Echidna, cree un archivo de configuración `config.yaml`:
@@ -591,7 +601,7 @@ Para habilitar el consumo de gas con Echidna, cree un archivo de configuración
estimateGas: true
```
-En este ejemplo, también reduciremos el tamaño de la secuencia de la transacción para que los resultados sean más fáciles de entender:
+En este ejemplo, también reduciremos el tamaño de la secuencia de transacciones para que los resultados sean más fáciles de entender:
```yaml
seqLen: 2
@@ -600,7 +610,7 @@ estimateGas: true
### Ejecutar Echidna {#run-echidna-3}
-Una vez que tenemos el archivo de configuración creado, podemos ejecutar Echidna así:
+Una vez que hemos creado el archivo de configuración, podemos ejecutar Echidna de esta manera:
```bash
echidna-test gas.sol --config config.yaml
@@ -619,10 +629,11 @@ Seed: -325611019680165325
- El gas que se muestra es una estimación proporcionada por [HEVM](https://github.com/dapphub/dapptools/tree/master/src/hevm#hevm-).
-### Filtrar llamadas de reducción de gas {#filtering-out-gas-reducing-calls}
+### Filtrar llamadas que reducen el gas {#filtering-out-gas-reducing-calls}
-El tutorial sobre **filtrado de funciones para llamar durante una campaña de fuzzing** anterior muestra cómo eliminar algunas funciones de sus pruebas.
-Esto puede ser fundamental para obtener una estimación precisa del gas. Considere el siguiente ejemplo:
+El tutorial anterior sobre el **filtrado de funciones a las que llamar durante una campaña de fuzzing** muestra cómo eliminar algunas funciones de sus pruebas.
+Esto puede ser fundamental para obtener una estimación precisa del gas.
+Considere el siguiente ejemplo:
```solidity
contract C {
@@ -648,7 +659,7 @@ contract C {
}
```
-Si Echidna puede llamar a todas las funciones, no encontrará fácilmente transacciones con un alto costo de gas:
+Si Echidna puede llamar a todas las funciones, no encontrará fácilmente transacciones con un alto coste de gas:
```
echidna-test pushpop.sol --config config.yaml
@@ -662,7 +673,8 @@ clear used a maximum of 35916 gas
push used a maximum of 40839 gas
```
-Eso es porque el costo depende del tamaño de `addrs` y las llamadas aleatorias tienden a dejar el array casi vacío. Sin embargo, incluir `pop` y `clear` en una lista negra nos da mejores resultados:
+Esto se debe a que el coste depende del tamaño de `addrs` y las llamadas aleatorias tienden a dejar el array casi vacío.
+Sin embargo, incluir en la lista negra `pop` y `clear` nos da resultados mucho mejores:
```yaml
filterBlacklist: true
@@ -677,9 +689,9 @@ push used a maximum of 40839 gas
check used a maximum of 1484472 gas
```
-### Resumen: buscar transacciones con alto consumo de gas {#summary-finding-transactions-with-high-gas-consumption}
+### Resumen: Encontrar transacciones con alto consumo de gas {#summary-finding-transactions-with-high-gas-consumption}
-Echidna puede encontrar transacciones con un alto consumo de gas utilizando la opción de configuración `estimateGas`:
+Echidna puede encontrar transacciones con un alto consumo de gas usando la opción de configuración `estimateGas`:
```yaml
estimateGas: true
@@ -690,4 +702,4 @@ echidna-test contract.sol --config config.yaml
...
```
-Echidna reportará una secuencia con el consumo máximo de gas para cada función una vez finalizada la campaña de fuzzing.
+Echidna informará de una secuencia con el consumo máximo de gas para cada función, una vez que la campaña de fuzzing haya terminado.
From 40bff6ce6e19392e137d0bd27f5863e1a4e41f03 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:52 -0300
Subject: [PATCH 298/589] update(i18n):
public/content/translations/es/community/language-resources/index.md
---
.../es/community/language-resources/index.md | 160 +++++++++---------
1 file changed, 80 insertions(+), 80 deletions(-)
diff --git a/public/content/translations/es/community/language-resources/index.md b/public/content/translations/es/community/language-resources/index.md
index 30aa1d0b73a..dab1cb611ce 100644
--- a/public/content/translations/es/community/language-resources/index.md
+++ b/public/content/translations/es/community/language-resources/index.md
@@ -12,142 +12,142 @@ Nuestro objetivo es proporcionar contenido educativo en todos los idiomas y ayud
Si prefiere leer en su idioma nativo o conoce a alguien que no hable inglés, a continuación le facilitamos toda una serie de recursos en idiomas diferentes al inglés. Cientos de miles de entusiastas de Ethereum se reúnen en estos foros en línea para compartir noticias, hablar de desarrollos recientes, debatir cuestiones técnicas e imaginar el futuro.
-¿Conoce algún recurso educativo en su idioma? [Abra un asunto](https://github.com/ethereum/ethereum-org-website/issues/new/choose) para agregarlo a la lista.
+¿Conoce algún recurso educativo en su idioma? [Abra una incidencia](https://github.com/ethereum/ethereum-org-website/issues/new/choose) ¡para añadirlo a la lista!
## Recursos de Ethereum.org {#ethereum-org}
Ethereum.org está traducido de forma nativa a más de 40 idiomas que puede encontrar utilizando nuestro menú de selección de idiomas, que se encuentra en la parte superior de cada página.
-
+
-Si es bilingüe y quiere ayudarnos a llegar a más personas, también puede involucrarse en [ethereum.org Translation Program](/contributing/translation-program/#translation-program) y ayudarnos a traducir el sitio web.
+Si es bilingüe y quiere ayudarnos a llegar a más personas, también puede participar en el [Programa de traducción de ethereum.org](/contributing/translation-program/#translation-program) y ayudarnos a traducir el sitio web.
## Recursos de la comunidad {#community}
-### Portugués de Brasil {#br-pt}
+### Portugués brasileño {#br-pt}
**Noticias**
-- [BeInCrypto](http://www.beincrypto.com.br): noticias y artículos sobre criptomonedas, incluida una lista de intercambios, disponibles en Brasil.
-- [Cointelegraph](http://cointelegraph.com.br/category/analysis): versión brasileña de Cointelegraph, un importante medio de noticias de criptomonedas.
-- [Livecoins](http://www.livecoins.com.br/ethereum): herramientas y noticias sobre criptomonedas.
-- [Seudinheiro](http://www.seudinheiro.com/criptomoedas/): noticias e Informes sobre criptomonedas.
-- [Modular Crypto](https://modularcrypto.xyz/): noticias y artículos educativos sobre criptomonedas
+- [BeInCrypto](http://www.beincrypto.com.br) - noticias y artículos sobre criptomonedas, incluida una lista de intercambios disponibles en Brasil
+- [Cointelegraph](http://cointelegraph.com.br/category/analysis) - versión brasileña de Cointelegraph, un importante medio de noticias sobre criptomonedas
+- [Livecoins](http://www.livecoins.com.br/ethereum) - noticias y herramientas sobre criptomonedas
+- [Seudinheiro](http://www.seudinheiro.com/criptomoedas/) - noticias e informes sobre criptomonedas
+- [Modular Crypto](https://modularcrypto.xyz/) - noticias y artículos educativos sobre criptomonedas
**Educación**
-- [web3dev](https://www.web3dev.com.br/): centro de contenidos y comunidad de Discord para desarrolladores de web 3.
-- [Web3Brasil](https://github.com/web3brasil/web3brasil): recursos para el aprendizaje Web3 y DeFi.
-- [CriptoFacil](http://www.criptofacil.com/ultimas-noticias/) - noticias y educación sobre criptomonedas, incluyendo ¨Ethereum para principiantes¨ y ¨ DeFi para principiantes¨
-- [CriptoFacil](http://www.criptoativos.wiki.br/): noticias y educación sobre criptomonedas, incluyendo Ethereum para principiantes y DeFi para principiantes.
-- [Cointimes](http://www.cointimes.com.br/): noticias sobre criptomonedas y educación.
-- [Web3 starter pack](https://docs.google.com/document/d/1X8PSTFH7FTw9J-gbKWM6Y430SWCBT8d4t4pJgFQHJ8E/): una guía que responde las preguntas más frecuentes y preguntas fundamentales sobre cripto.
+- [web3dev](https://www.web3dev.com.br/) - Centro de contenido y comunidad de Discord para desarrolladores de Web3.
+- [Web3Brasil](https://github.com/web3brasil/web3brasil) - recursos para aprender sobre Web3 y DeFi
+- [CriptoFacil](http://www.criptofacil.com/ultimas-noticias/) - noticias y educación sobre criptomonedas, que incluye «Ethereum para principiantes» y «DeFi para principiantes»
+- [CriptoAtivos](http://www.criptoativos.wiki.br/) - información del espacio de las criptomonedas, educación y blog
+- [Cointimes](http://www.cointimes.com.br/) - noticias y educación sobre criptomonedas
+- [Paquete de inicio de Web3](https://docs.google.com/document/d/1X8PSTFH7FTw9J-gbKWM6Y430SWCBT8d4t4pJgFQHJ8E/) - una guía que responde a las preguntas más frecuentes y fundamentales sobre cripto
### Chino {#zh}
**Recursos generales**
-- [Ethereum.cn](https://www.ethereum.cn/): contenido mantenido por la comunidad, que cubre las actualizaciones de la capa de consenso, todas la notas de la reunión de desarrollo central, capa2, etc.
-- [EthFans](https://github.com/editor-Ajian/EthFans.org-annual-collected-works/): para profundizar en Ethereum, desde los temas básicos hasta los más avanzados.
-- [Unitimes](https://mp.weixin.qq.com/s/tvloZSDBSOQN9zDQj_91kA): contenido mantenido por la comunidad, que cubre Ethereum, DeFi, NFT, conocimientos relacionados con la Web3.
-- [123ETH](https://123eth.org/): un portal al ecosistema Ethereum.
-- [Zhen Xiao](http://zhenxiao.com/blockchain/): cursos en linea gratis acerca de criptomonedas y sus aplicaciones.
-- [Ethereum Whitepaper](https://github.com/ethereum/wiki/wiki/[%E4%B8%AD%E6%96%87]-%E4%BB%A5%E5%A4%AA%E5%9D%8A%E7%99%BD%E7%9A%AE%E4%B9%A6): versión china del informe de Ethereum.
+- [Ethereum.cn](https://www.ethereum.cn/) - contenido mantenido por la comunidad que cubre la actualización de la capa de consenso, todas las notas de las reuniones de los desarrolladores principales, la capa 2, etc.
+- [EthFans](https://github.com/editor-Ajian/EthFans.org-annual-collected-works/) - aprenda todo, desde lo básico hasta temas avanzados de Ethereum
+- [Unitimes](https://mp.weixin.qq.com/s/tvloZSDBSOQN9zDQj_91kA) - contenido mantenido por la comunidad, que cubre conocimientos relacionados con Ethereum, DeFi, NFT y Web3
+- [123ETH](https://123eth.org/) - un portal al ecosistema de Ethereum
+- [Zhen Xiao](http://zhenxiao.com/blockchain/) - cursos gratuitos en línea sobre criptomonedas y sus aplicaciones
+- [Libro Blanco de Ethereum](/zh/whitepaper/) - versión en chino del Libro Blanco de Ethereum
**Ecosistema Ethereum**
-- [ETHPlanet](https://www.ethplanet.org/): hackathons en línea y en persona, ofreciendo entrenamiento a estudiantes universitarios.
-- [PrimitivesLane](https://www.primitiveslane.org/): un grupo de investigación sin fines de lucro, enfocado en la tecnología de cadena de bloques.
-- [Ethereum Translation Community CN](https://www.notion.so/Ethereum-Translation-Community-CN-05375fe0a94c4214acaf90f42ba40171): una comunidad dedicada a traducir contenido educativo de Ethereum.
+- [ETHPlanet](https://www.ethplanet.org/) - hackatones en línea y presenciales, que ofrecen formación a estudiantes universitarios
+- [PrimitivesLane](https://www.primitiveslane.org/) - un grupo de investigación sin ánimo de lucro centrado en la tecnología blockchain
+- [Comunidad de traducción de Ethereum CN](https://www.notion.so/Ethereum-Translation-Community-CN-05375fe0a94c4214acaf90f42ba40171) - una comunidad dedicada a traducir contenido educativo de Ethereum
**Para desarrolladores**
-- [DappLearning](https://github.com/Dapp-Learning-DAO/Dapp-Learning): un grupo de aprendizaje que estudia los proyectos DApp más populares y comparte sus visiones y opiniones todas las semanas.
-- [LearnBlockchain](https://learnblockchain.cn/): una comunidad de desarrolladores, que comparte información acerca de la tecnología de cadena de bloques.
+- [DappLearning](https://github.com/Dapp-Learning-DAO/Dapp-Learning) - un grupo de aprendizaje para estudiar los principales proyectos de dapps y compartir ideas y comentarios cada semana
+- [LearnBlockchain](https://learnblockchain.cn/) - una comunidad para desarrolladores que comparte información sobre la tecnología blockchain
**Para investigadores en criptografía**
-- [SecbitLabs](https://mp.weixin.qq.com/s/69_tqBJpr_sbaKtR1sBRMw): una cuenta de WeChat que explica la criptografía, la seguridad, etc.
-- [Sparkbyte](https://mp.weixin.qq.com/s/9KgKTc_jtJ7bWKdbNPoqvQ): una cuenta de WeChat que explica la tecnología zk.
+- [SecbitLabs](https://mp.weixin.qq.com/s/69_tqBJpr_sbaKtR1sBRMw) - una cuenta de WeChat que explica criptografía, seguridad, etc.
+- [Sparkbyte](https://mp.weixin.qq.com/s/9KgKTc_jtJ7bWKdbNPoqvQ) - una cuenta de WeChat que explica la tecnología zk
### Checo {#cs}
-- [Gwei.cz](https://gwei.cz): comunidad local con enfoque en Web3 que crea contenido educativo y organiza eventos tanto en línea como presenciales.
-- [Gwei.cz Příručka](https://prirucka.gwei.cz/): guía de Ethereum para principiantes.
-- [DAO Příručka](https://dao.gwei.cz/): guía sobre las DAO para principiantes.
-- [Dominar Ethereum](https://ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m): dominar Ethereum en checo.
+- [Gwei.cz](https://gwei.cz) - comunidad local en torno a Web3, crea contenido educativo, organiza eventos en línea y presenciales
+- [Gwei.cz Příručka](https://prirucka.gwei.cz/) - guía de Ethereum para principiantes
+- [DAO Příručka](https://dao.gwei.cz/) - guía para principiantes sobre las DAO
+- [Mastering Ethereum](https://ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) - Mastering Ethereum en checo
### Francés {#fr}
-- [Ethereum France](https://www.ethereum-france.com/): Ethereum France organiza eventos, crea contenido y fomenta discusiones en torno a Ethereum.
-- [Ethereum.fr](https://ethereum.fr/): noticias y educación sobre Ethereum.
-- [BanklessFR](https://banklessfr.substack.com/): boletín informativo en francés sobre Bankless.
-- [CryptoFR](https://cryptofr.com/category/44/ethereum-general): foro de criptomonedas con una subpágina de Ethereum.
+- [Ethereum France](https://www.ethereum-france.com/) - Ethereum France organiza eventos, crea contenido y fomenta los debates en torno a Ethereum
+- [Ethereum.fr](https://ethereum.fr/) - noticias y educación sobre Ethereum
+- [BanklessFR](https://banklessfr.substack.com/) - boletín de Bankless en francés
+- [CryptoFR](https://cryptofr.com/category/44/ethereum-general) - foro de criptomonedas con una subpágina de Ethereum
### Alemán {#de}
-- [Microsoft Learn (Solidity)](https://docs.microsoft.com/de-de/learn/modules/blockchain-learning-solidity/): el uso de Solidity.
-- [Microsoft Learn (contratos inteligentes)](https://docs.microsoft.com/de-de/learn/modules/blockchain-solidity-ethereum-smart-contracts/): escribir contratos inteligentes en Ethereum con Solidity.
-- [Microsoft Learn (redes Ethereum)](https://docs.microsoft.com/de-de/learn/modules/blockchain-ethereum-networks/): conectar e implementar redes de Ethereum.
-- [Microsoft Learn (cadenas de bloque)](https://docs.microsoft.com/de-de/learn/paths/ethereum-blockchain-development/): adentrarse en el desarrollo de cadenas de bloque.
+- [Microsoft Learn (Solidity)](https://docs.microsoft.com/de-de/learn/modules/blockchain-learning-solidity/) - uso de Solidity
+- [Microsoft Learn (contratos inteligentes)](https://docs.microsoft.com/de-de/learn/modules/blockchain-solidity-ethereum-smart-contracts/) - escribir contratos inteligentes de Ethereum con Solidity
+- [Microsoft Learn (redes de Ethereum)](https://docs.microsoft.com/de-de/learn/modules/blockchain-ethereum-networks/) - conectar y desplegar redes de Ethereum
+- [Microsoft Learn (blockchains)](https://docs.microsoft.com/de-de/learn/paths/ethereum-blockchain-development/) - introducción al desarrollo de blockchain
### Hebreo {#he}
-- [Udi Wertheimer: Lo que los bitcoiners pueden aprender de Ethereum](https://www.cryptojungle.co.il/udi-wertheimer-what-bitcoiners-can-learn-from-ethereum/)
-- [Omer Greismen (OpenZeppelin): Cómo evitamos un hackeo de contrato inteligente de 15.000 millones de dólares](https://www.cryptojungle.co.il/omer-greisman-openzeppelin/)
-- [Shy Datika (INX): La tokenización y el futuro de los valores, incluido Ethereum es un valor](https://www.cryptojungle.co.il/shy-datika-tokenization/)
-- [Roy Confino (Lemonade): Seguro en Ethereum](https://www.cryptojungle.co.il/roy-confino-insurance/)
-- [Idan Ofrat (Fireblocks): Adopción institucional](https://www.cryptojungle.co.il/idan-ofrat-fireblocks/)
-- [Gal Weizman (MetaMask): ¿Qué es MetaMask?](https://www.cryptojungle.co.il/gal-weizman-metamask/)
-- [Dror Aviely (Consensys): El centro de Ethereum](https://www.cryptojungle.co.il/dror-aviely-ethereum-center/)
-- [Nir Rozin: Ser un cryptopunk](https://www.cryptojungle.co.il/nir-rozin-cryptopunk/)
-- [Adan Kedem: Juegos y metaverso](https://www.cryptojungle.co.il/adan-kedem-web3-gaming/)
-- [Uri Kolodny (Starkware): Ethereum y las capas de la cadena de bloques](https://www.cryptojungle.co.il/uri-kolodny-starkware/)
-- [Udi Wertheimer: Ethereum 2.0 vs. la competencia](https://www.cryptojungle.co.il/udi-on-eth2/)
-- [Ben Samocha (yo mismo): Ethereum 2.0, ¿una oportunidad?](https://www.cryptojungle.co.il/etherurm2-week-summary/)
-- [Alon Muroch (Bloxstaking): ¿Qué es Ethereum 2.0?](https://www.cryptojungle.co.il/alon-moroch-eth2/)
-- [Eilon Aviv (Collider Ventures): ¿Qué puede salir mal con Ethereum 2.0?](https://www.cryptojungle.co.il/eilon-aviv-eth2-0/)
-- [Eilon Aviv (Collider Ventures): ¿Por qué necesitamos Ethereum 2.0?](https://www.cryptojungle.co.il/eilon-aviv-ethereum-2-0/)
+- [Udi Wertheimer - Lo que los bitcoiners pueden aprender de Ethereum](https://www.cryptojungle.co.il/udi-wertheimer-what-bitcoiners-can-learn-from-ethereum/)
+- [Omer Greismen (OpenZeppelin) - Cómo evitamos un hackeo de un contrato inteligente de 15 000 millones de dólares](https://www.cryptojungle.co.il/omer-greisman-openzeppelin/)
+- [Shy Datika (INX) - La tokenización y el futuro de los valores, incluyendo si Ethereum es un valor](https://www.cryptojungle.co.il/shy-datika-tokenization/)
+- [Roy Confino (Lemonade) - Seguros en Ethereum](https://www.cryptojungle.co.il/roy-confino-insurance/)
+- [Idan Ofrat (Fireblocks) - Adopción institucional](https://www.cryptojungle.co.il/idan-ofrat-fireblocks/)
+- [Gal Weizman (MetaMask) - Qué es MetaMask](https://www.cryptojungle.co.il/gal-weizman-metamask/)
+- [Dror Aviely (Consensys) - El centro de Ethereum](https://www.cryptojungle.co.il/dror-aviely-ethereum-center/)
+- [Nir Rozin - Ser un cryptopunk](https://www.cryptojungle.co.il/nir-rozin-cryptopunk/)
+- [Adan Kedem - Juegos y Metaverso](https://www.cryptojungle.co.il/adan-kedem-web3-gaming/)
+- [Uri Kolodny (Starkware) - Capas de Ethereum y de la blockchain](https://www.cryptojungle.co.il/uri-kolodny-starkware/)
+- [Udi Wertheimer - Ethereum 2.0 vs. la competencia](https://www.cryptojungle.co.il/udi-on-eth2/)
+- [Ben Samocha (yo mismo) - Ethereum 2.0: ¿una oportunidad?](https://www.cryptojungle.co.il/etherurm2-week-summary/)
+- [Alon Muroch (Bloxstaking) - ¿Qué es Ethereum 2.0?](https://www.cryptojungle.co.il/alon-moroch-eth2/)
+- [Eilon Aviv (Collider Ventures) - Qué puede salir mal con Ethereum 2.0](https://www.cryptojungle.co.il/eilon-aviv-eth2-0/)
+- [Eilon Aviv (Collider Ventures) - Por qué necesitamos Ethereum 2.0](https://www.cryptojungle.co.il/eilon-aviv-ethereum-2-0/)
### Italiano {#it}
-- [Ethereum Italia](https://www.ethereum-italia.it/): formación sobre Ethereum, eventos y noticias, centrados en contratos inteligentes y tecnología de cadena de bloques.
-- [Pódcast Ethereum Italia](https://www.ethereum-italia.it/podcast/): pódcast en italiano sobre Ethereum.
-- [Microsoft Learn (Solidity)](https://docs.microsoft.com/it-it/learn/modules/blockchain-learning-solidity/): aprenda a usar Solidity.
-- [Microsoft Learn (contratos inteligentes)](https://docs.microsoft.com/it-it/learn/modules/blockchain-solidity-ethereum-smart-contracts/): aprenda acerca de cómo escribir contratos inteligentes usando Solidity.
-- [Microsoft Learn (DApps)](https://docs.microsoft.com/it-it/learn/modules/blockchain-create-ui-decentralized-apps/): cree una interfaz de usuario con aplicaciones descentralizadas.
+- [Ethereum Italia](https://www.ethereum-italia.it/) - educación, eventos y noticias sobre Ethereum, centrándose en los contratos inteligentes y la tecnología blockchain
+- [Pódcast de Ethereum Italia](https://www.ethereum-italia.it/podcast/) - pódcast sobre Ethereum en italiano
+- [Microsoft Learn (Solidity)](https://docs.microsoft.com/it-it/learn/modules/blockchain-learning-solidity/) - aprenda a usar Solidity
+- [Microsoft Learn (Contratos inteligentes)](https://docs.microsoft.com/it-it/learn/modules/blockchain-solidity-ethereum-smart-contracts/) - aprenda a escribir contratos inteligentes con Solidity
+- [Microsoft Learn (dapps)](https://docs.microsoft.com/it-it/learn/modules/blockchain-create-ui-decentralized-apps/) - cree una interfaz de usuario con aplicaciones descentralizadas
### Japonés {#ja}
-- [Asociación de intercambio de activos virtuales y criptomonedas de Japón](https://jvcea.or.jp/)
-- [Asociación empresarial de criptoactivos de Japón](https://cryptocurrency-association.org/)
-- [Comience con el desarrollo de la cadena de bloques: Aprender | Microsoft Docs](https://docs.microsoft.com/ja-jp/learn/paths/ethereum-blockchain-development/) Este módulo de aprendizaje es una introducción a la cadena de bloques y al desarrollo en la plataforma Ethereum.
-- [Dominar Ethereum](https://www.oreilly.co.jp/books/9784873118963/): dominar Ethereum en japonés.
-- [Desarrollo práctico de contratos inteligentes con Solidity y Ethereum](https://www.oreilly.co.jp/books/9784873119342/): desarrollo práctico de contratos inteligentes con Solidity y Ethereum en japonés.
+- [Asociación de Intercambio de Activos Virtuales y Criptoactivos de Japón](https://jvcea.or.jp/)
+- [Asociación Japonesa de Empresas de Criptoactivos](https://cryptocurrency-association.org/)
+- [Introducción al desarrollo de blockchain - Learn | Microsoft Docs](https://docs.microsoft.com/ja-jp/learn/paths/ethereum-blockchain-development/) - Esta ruta de aprendizaje le introduce al desarrollo en la plataforma Ethereum y blockchain.
+- [Mastering Ethereum](https://www.oreilly.co.jp/books/9784873118963/) - Mastering Ethereum en japonés
+- [Desarrollo práctico de contratos inteligentes con Solidity y Ethereum](https://www.oreilly.co.jp/books/9784873119342/) - Desarrollo práctico de contratos inteligentes con Solidity y Ethereum en japonés
### Ruso {#ru}
-- [Cyber Academy](https://cyberacademy.dev): espacio educativo para constructores de Web 3.0.
-- [Forklog](https://forklog.com): noticias y artículos educativos sobre criptomonedas en general, tecnologías existentes y futuras actualizaciones de diferentes cadenas de bloques
-- [BeInCrypto](https://ru.beincrypto.com): noticias, análisis de precios de criptos y artículos no técnicos con explicaciones simples sobre todo en cripto
+- [Cyber Academy](https://cyberacademy.dev) - espacio educativo para constructores de Web3
+- [Forklog](https://forklog.com) - noticias y artículos educativos sobre cripto en general, tecnologías existentes y futuras actualizaciones de diferentes blockchains
+- [BeInCrypto](https://ru.beincrypto.com) - noticias, análisis de precios de criptomonedas y artículos no técnicos con explicaciones sencillas sobre todo lo relacionado con las criptomonedas
### Español {#es}
-- [Ethereum Madrid](https://ethereummadrid.com/): cadena de bloques, DeFi, y cursos de gobernanza, eventos y blog.
-- [Cointelegraph](https://es.cointelegraph.com/ethereum-for-beginners): guía de Ethereum para principiantes en español.
-- [Tutoriales en línea](https://tutoriales.online/curso/solidity): para aprender Solidity y programación en Ethereum.
-- [Curso introductorio al desarrollo en Ethereum](https://youtube.com/playlist?list=PLTqiwJDd_R8y9pfUBjhkVa1IDMwyQz-fU): introducción a Solidity, prueba y desarrollo de su primer contrato inteligente.
-- [Curso introductorio a la seguridad y piratería en Ethereum](https://youtube.com/playlist?list=PLTqiwJDd_R8yHOvteko_DmUxUTMHnlfci): entender los aspectos vulnerables comunes y problemas de seguridad en un contrato inteligente real.
-- [Curso Introducción a Desarrollo DeFi](https://youtube.com/playlist?list=PLTqiwJDd_R8zZiP9_jNdaPqA3HqoW2lrS): profundice en el funcionamiento de los contratos intelifentes DeFi en Solidity y genere su propio creador de mercado automatizado.
-- [Cryptoversidad](https://www.youtube.com/c/Cryptoversidad) - Formación genérica para principiantes y avanzados sobre la cadena de bloques. Conozca más sobre criptomonedas y Ethereum.
+- [Ethereum Madrid](https://ethereummadrid.com/) - cursos de blockchain, DeFi y gobernanza, eventos y blog
+- [Cointelegraph](https://es.cointelegraph.com/ethereum-for-beginners) - guía de Ethereum para principiantes en español
+- [Tutoriales online](https://tutoriales.online/curso/solidity) - aprenda Solidity y programación en Ethereum
+- [Curso de introducción al desarrollo de Ethereum](https://youtube.com/playlist?list=PLTqiwJDd_R8y9pfUBjhkVa1IDMwyQz-fU) - conceptos básicos de Solidity, pruebas y despliegue de su primer contrato inteligente
+- [Curso de introducción a la seguridad y el hacking en Ethereum](https://youtube.com/playlist?list=PLTqiwJDd_R8yHOvteko_DmUxUTMHnlfci) - comprenda las vulnerabilidades comunes y los problemas de seguridad en los contratos inteligentes reales
+- [Curso de introducción al desarrollo de DeFi](https://youtube.com/playlist?list=PLTqiwJDd_R8zZiP9_jNdaPqA3HqoW2lrS) - aprenda cómo funcionan los contratos inteligentes de DeFi en Solidity y cree su propio creador de mercado automatizado
+- [Cryptoversidad](https://www.youtube.com/c/Cryptoversidad) - Educación no técnica sobre blockchain desde principiante hasta avanzado. Conozca más sobre criptomonedas y Ethereum.
### Turco {#tr}
-- [BTK Akademi](https://www.btkakademi.gov.tr/portal/course/blokzincir-ve-kripto-paralar-10569#!/about): curso enfocado a la cadena de bloques y a las criptomonedas.
-- [El gran cambio de nombre: ¿qué pasó con Eth2?](https://miningturkiye.org/konu/ethereum-madenciligi-bitiyor-mu-onemli-gelisme.655/): versión en turco de la decisiva entrada del blog sobre el cambio de nombre, que explica el alejamiento de la terminología «Eth2».
+- [BTK Akademi](https://www.btkakademi.gov.tr/portal/course/blokzincir-ve-kripto-paralar-10569#!/about) - curso centrado en blockchain y criptomonedas
+- [El gran cambio de nombre: ¿qué pasó con Eth2?](https://miningturkiye.org/konu/ethereum-madenciligi-bitiyor-mu-onemli-gelisme.655/) - traducción al turco de la publicación del blog sobre el gran cambio de nombre, que explica el abandono de la terminología «Eth2»
### Vietnamita {#vi}
-- [Tino Group](https://wiki.tino.org/ethereum-la-gi/): visión general sobre Ethereum, DApps, carteras, preguntas y respuestas.
-- [Tap Chi Bitcoin](https://tapchibitcoin.io/tap-chi/tin-tuc-ethereum-eth): plataforma web con subpáginas de noticias y educación de Ethereum.
-- [Coin68](https://coin68.com/ethereum-tieu-diem/): portal de criptomonedas con contenido educativo y noticias de Ethereum
+- [Tino Group](https://wiki.tino.org/ethereum-la-gi/) - descripción general de Ethereum, dapps, billeteras y preguntas frecuentes
+- [Tap Chi Bitcoin](https://tapchibitcoin.io/tap-chi/tin-tuc-ethereum-eth) - plataforma web con subpáginas de noticias y educación sobre Ethereum
+- [Coin68](https://coin68.com/ethereum-tieu-diem/) - portal de criptomonedas con noticias y contenido educativo sobre Ethereum
From 9f0f71480911c98e50bef9acd56c95c01dcdeea5 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:53 -0300
Subject: [PATCH 299/589] update(i18n):
public/content/translations/es/contributing/design-principles/index.md
---
.../contributing/design-principles/index.md | 54 +++++++++----------
1 file changed, 27 insertions(+), 27 deletions(-)
diff --git a/public/content/translations/es/contributing/design-principles/index.md b/public/content/translations/es/contributing/design-principles/index.md
index 7e88f3aca07..1d4a1c77246 100644
--- a/public/content/translations/es/contributing/design-principles/index.md
+++ b/public/content/translations/es/contributing/design-principles/index.md
@@ -10,27 +10,27 @@ description: Principios que sustentan las decisiones de diseño y contenido de e
Nuestros principios guían el aspecto y la sensación que se tiene del sitio y del contenido.
-Debería leerlo antes de [colaborar con ethereum.org](/contributing/).
+Debería leerlos antes de [contribuir en ethereum.org](/contributing/).
## ¿Cuáles son los principios del diseño? {#ways-to-contribute}
-No se preocupe, son bastante sencillos. **Los principios de diseño** son un conjunto de directrices que nos dan la pauta cuando diseñamos (es decir, creamos, mantenemos o actualizamos) algo.
+No se preocupe, son bastante sencillos. Los **principios de diseño** son un conjunto de directrices a las que nos remitimos cuando diseñamos (es decir, creamos, mantenemos o actualizamos) algo.
-Dentro de ethereum.org, estos principios de diseño son la base de lo que queremos que el sitio web represente y proyecte al mundo. Son tanto ambiciosos **como** funcionales. No se trata únicamente de la _percepción_ que se tiene del sitio web, sino de cómo _funciona_ e incluso cómo hace que alguien _se sienta navegando por él._ Todo, desde los colores hasta los diseños de la página, pasando por lo que decimos de Ethereum en el sitio web debe estar regido por estos principios.
+Dentro de ethereum.org, estos principios de diseño son la base de lo que queremos que el sitio web represente y proyecte al mundo. Son tanto aspiracionales **como** funcionales. No es solo cómo se _ve_ el sitio web, sino también cómo _funciona_ e incluso cómo hace _sentir_ a alguien. Todo, desde los colores hasta el diseño de las páginas y la forma en que hablamos de Ethereum en el sitio web, debe basarse en estos principios.
## Los principios en la práctica {#how-decisions-about-the-site-are-made}
-Veamos un ejemplo. Uno de los principios es «Credibilidad» lo que significa que queremos que los visitantes del sitio _sientan_ y _sepan_ que el sitio es digno de confianza, tal como el ecosistema Ethereum más amplio. Dentro de ese principio, tenemos 3 «subprincipios» funcionales que creemos que son pasos viables que podemos tomar para hacer que el sitio sea creíble:
+Veamos un ejemplo. Uno de los principios es “Creíble”, lo que significa que queremos que los visitantes del sitio _sientan_ y _sepan_ que el sitio es digno de confianza, al igual que el ecosistema de Ethereum en su conjunto. Dentro de ese principio, tenemos 3 «subprincipios» funcionales que creemos que son pasos viables que podemos tomar para hacer que el sitio sea creíble:
-- _«Reciente»_ es decir, que el contenido se vaya actualizando.
-- _«Prueba social»_ es decir, mostrar el tamaño, la diversidad y la actividad del ecosistema (o sea, progreso de actualización de Ethereum, DeFi, juegos, todos los hackathons, etc.)
-- _«Consistente»_ es decir, consistencia en el diseño del sitio y el tono y precisión de la escritura.
+- _“Reciente”_, es decir, mantener el contenido actualizado.
+- _“Prueba social”_, es decir, mostrar el tamaño, la diversidad y la actividad del ecosistema (por ejemplo: el progreso de la actualización de Ethereum, DeFi, los juegos, todos los hackatones, etc.).
+- _“Consistente”_, es decir, consistencia en el diseño del sitio y el tono y la precisión de la redacción.
Así que cuando estamos tomando decisiones de diseño, o de copywriting, entonces podemos hacer referencia al principio de «Credibilidad» y preguntarnos:
-- _«¿El sitio refleja la información actual?»._
-- _«¿Cómo y dónde mostramos el tamaño y la actividad del ecosistema?»._
-- _«¿Las nuevas aportaciones propuestas por un miembro de la comunidad que estoy revisando son coherentes con el diseño actual y la escritura en el sitio?»._
+- _“¿El sitio refleja la información actual?”_
+- _“¿Cómo y dónde mostramos el tamaño y la actividad del ecosistema?”_
+- _“¿Las nuevas contribuciones propuestas por un miembro de la comunidad que estoy revisando son coherentes con el diseño actual y la redacción del sitio?”_
## Los principios de diseño de ethereum.org {#contributors}
@@ -38,8 +38,8 @@ Así que cuando estamos tomando decisiones de diseño, o de copywriting, entonce
El sitio debe inspirar a los usuarios a soñar la forma en que Ethereum puede cambiar el mundo. Debería motivar a la gente a explorar, jugar y experimentar con las herramientas y aplicaciones del ecosistema Ethereum.
-- **Radical:** el sitio debe comunicar las ambiciosas metas de Ethereum para cambiar el mundo de forma significativa. Debe quedar claro que Ethereum no es solo un conjunto de innovadora tecnología; es una tecnología transformadora.
-- **Capacitación a través de la formación:** el sitio debe tener carácter divulgativo para que la gente pueda entender el potencial de Ethereum; encontrar su lugar en el ecosistema; y sentirse capacitada para participar en él.
+- **Radical:** el sitio debe comunicar los ambiciosos objetivos de Ethereum de cambiar el mundo de forma significativa. Debe quedar claro que Ethereum no es solo un conjunto de innovadora tecnología; es una tecnología transformadora.
+- **Empoderamiento a través de la educación:** el sitio debe educar a la gente para que pueda entender el potencial de Ethereum, encontrar su lugar en el ecosistema y sentirse empoderada para participar en él.
Dirección visual • Contenido
@@ -47,9 +47,9 @@ Dirección visual • Contenido
Ethereum es un proyecto global descentralizado y nuestro público es puro reflejo de ello. El sitio debería aspirar a ser accesible a todos e incluir a todas las culturas del mundo.
-- **Accesible:** el sitio debe seguir las pautas de accesibilidad e incluir a personas con conexiones a internet de ancho de banda bajo.
-- **Directo:** El sitio debe ser simple y sin ambigüedad. El texto no debe usar un lenguaje que se preste a malententendidos o traducciones imprecisas.
-- **Ethereum es polifacético:** Ethereum es un proyecto, un código base, una comunidad y una visión. Ethereum es valioso para diferentes personas por diferentes razones, y hay muchas maneras de participar.
+- **Accesible:** el sitio debe seguir las pautas de accesibilidad, incluidas las de personas con conexiones de bajo ancho de banda.
+- **Directo:** el sitio debe ser sencillo y sin ambigüedades. El texto no debe usar un lenguaje que se preste a malententendidos o traducciones imprecisas.
+- **Ethereum es multifacético:** Ethereum es un proyecto, una base de código, una comunidad y una visión. Ethereum es valioso para diferentes personas por diferentes razones, y hay muchas maneras de participar.
Sistemas de escritura • Uso del color • Dirección visual • Contenido
@@ -57,8 +57,8 @@ Sistemas de escritura • Uso del color • Dirección visual • Contenido
El sitio web debe funcionar como una buena historia. Los visitantes recorren las páginas y el contenido que usted aporta forma parte de su experiencia. Su aportación debe encajar dentro de un hilo narrativo claro: uno con un inicio (introducción/punto de partida), una mitad (conjunto de aprendizaje e información) y un final (enlace[s] a recursos pertinentes, o a pasos siguientes).
-- **Jerárquico**: una arquitectura de información clara y estructurada jerárquicamente ayuda a los visitantes de ethereum.org navegar por el sitio «siguiendo una narrativa» en busca de los contenidos que les interesen.
-- **Un importante avance:** somos un avance para cualquiera que busque respuestas. No queremos reemplazar ni convertirnos en un sustituto de los muchos recursos que ya existen. Damos una respuesta y proporcionamos los siguientes pasos fiables.
+- **Jerárquico**: una arquitectura de la información clara y estructurada jerárquicamente ayuda a los visitantes de ethereum.org a navegar por el sitio "como una historia" mientras buscan alcanzar sus objetivos.
+- **Un trampolín:** somos un trampolín para cualquiera que busque respuestas. No queremos reemplazar ni convertirnos en un sustituto de los muchos recursos que ya existen. Damos una respuesta y proporcionamos los siguientes pasos fiables.
Experiencias de usuario • Contenido
@@ -67,8 +67,8 @@ Experiencias de usuario • Contenido
Habra gente que quiera iniciarse en el ecosistema de Ethereum o habrá gente que sea escéptica. Tenga en cuenta esa responsabilidad en la forma en que se comunica. Asegúrese de que ambos afiancen su confianza en el ecosistema de Ethereum.
- **Reciente:** siempre al día.
-- **Prueba social:** muestra el tamaño, diversidad y actividad del ecosistema.
-- **Consistente:** consistencia en el diseño y el contenido comunica credibilidad.
+- **Prueba social:** muestra el tamaño, la diversidad y la actividad del ecosistema.
+- **Consistente:** la consistencia en el diseño y el contenido comunica credibilidad.
Dirección visual • Contenido
@@ -76,18 +76,18 @@ Dirección visual • Contenido
El sitio web es el producto de muchos colaboradores, al igual que el ecosistema en su conjunto.
-- **Abierto:** celebre la transparencia del código fuente, procesos y proyectos en todo el ecosistema.
-- **Extensible:** la modularidad es el enfoque clave que rige todo lo que hacemos, por lo tanto, las aportaciones también deben ser modulares. El diseño central, código de componente y la implementación del sitio deben permitir una fácil ampliación en el futuro.
-- **Experimental:** estamos constantemente experimentando, probando y repitiendo.
+- **Abierto:** celebrar la transparencia del código fuente, los procesos y los proyectos en todo el ecosistema.
+- **Extensible:** la modularidad es un enfoque clave en todo lo que hacemos, por lo que las contribuciones también deben ser modulares. El diseño central, el código de los componentes y la implementación del sitio deben permitir su fácil ampliación en el futuro.
+- **Experimental:** estamos constantemente experimentando, probando e iterando.
- **Colaborativo:** este proyecto nos reúne a todos.
-- **Sostenible:** con una visión de su mantenimiento a largo plazo por parte de la comunidad.
+- **Sostenible:** preparado para el mantenimiento a largo plazo por parte de la comunidad
Puede ver nuestros principios de diseño en acción [en todo nuestro sitio](/).
-## Hacer comentarios {#give-feedback}
+## Comentarios {#give-feedback}
-**¡Comparta sus comentarios en este documento!** Uno de nuestros principios propuestos es «**Mejora colaborativa**» lo que significa que queremos que el sitio web sea el producto de muchos colaboradores. Por eso, a tenor de esa premisa, queremos compartir estos principios de diseño con la comunidad Ethereum.
+**¡Comparta sus comentarios sobre este documento!** Uno de nuestros principios propuestos es la “**Mejora colaborativa**”, lo que significa que queremos que el sitio web sea el producto de muchos colaboradores. Por eso, a tenor de esa premisa, queremos compartir estos principios de diseño con la comunidad Ethereum.
-Aunque estos principios se centran en el sitio web de ethereum.org, esperamos que muchos de ellos sean representativos de los valores del ecosistema Ethereum en general. ¡Tal vez incluso quiera incorporar algunos de ellos en su propio proyecto!
+Aunque estos principios se centran en el sitio web ethereum.org, esperamos que muchos de ellos sean representativos de los valores del ecosistema de Ethereum en general. ¡Tal vez incluso quiera incorporar algunos de ellos en su propio proyecto!
-Háganos saber su opinión en el [servidor de Discord](https://discord.gg/ethereum-org) o [creando una incidencia](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=).
+Háganos saber lo que piensa en nuestro [servidor de Discord](https://discord.gg/ethereum-org) o [creando una incidencia](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=).
From 22e25fee6ac397b96efce85f8916a11225fb38c3 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:55 -0300
Subject: [PATCH 300/589] update(i18n):
public/content/translations/es/developers/docs/apis/javascript/index.md
---
.../developers/docs/apis/javascript/index.md | 124 +++++++++---------
1 file changed, 61 insertions(+), 63 deletions(-)
diff --git a/public/content/translations/es/developers/docs/apis/javascript/index.md b/public/content/translations/es/developers/docs/apis/javascript/index.md
index dc38ef3aebd..50161f2ea70 100644
--- a/public/content/translations/es/developers/docs/apis/javascript/index.md
+++ b/public/content/translations/es/developers/docs/apis/javascript/index.md
@@ -4,38 +4,40 @@ description: Una introducción a las bibliotecas de cliente de JavaScript, que t
lang: es
---
-Para que una aplicación web interactúe con el blockchain de Ethereum (es decir, para que lea datos de blockchain y/o envíe transacciones a la red), este debe conectarse a un nodo de Ethereum.
+Para que una aplicación web interactúe con la cadena de bloques de Ethereum (es decir, leer datos de la cadena de bloques y/o enviar transacciones a la red), debe conectarse a un nodo de Ethereum.
-Para este proposito, cada cliente de Ethereum implementa una especificacion [JSON-RPC](/developers/docs/apis/json-rpc/) para que haya un grupo uniforme de [métodos](/developers/docs/apis/json-rpc/#json-rpc-methods) en que las aplicaciones pueden confiar.
+Para este propósito, cada cliente de Ethereum implementa la especificación [JSON-RPC](/developers/docs/apis/json-rpc/), por lo que hay un conjunto uniforme de [métodos](/developers/docs/apis/json-rpc/#json-rpc-methods) en los que las aplicaciones pueden confiar.
-Si quiere usar JavaScript para conectar con un nodo de Ethereum, puede usar VanillaJS (Vanilla JavaScript). Sin embargo, hay varias bibliotecas de conveniencia que existen dentro del ecosistema que simplifican esto mucho más. Mediante estas bibliotecas, los desarrolladores pueden escribir métodos intuitivos de una línea para iniciar solicitudes JSON RPC (de manera invisible), que interactúan con Ethereum.
+Si quiere usar JavaScript para conectar con un nodo de Ethereum, puede usar VanillaJS (Vanilla JavaScript). Sin embargo, hay varias bibliotecas de conveniencia que existen dentro del ecosistema que simplifican esto mucho más. Con estas bibliotecas, los desarrolladores pueden crear métodos intuitivos de una sola línea para inicializar solicitudes JSON-RPC (de manera interna) que interactúan con Ethereum.
-Tenga en cuenta que desde [La Fusión](/roadmap/merge/), dos piezas conectadas de software de Ethereum― un cliente de ejecucion y un cliente de consenso― son necesarias para ejecutar un nodo. Asegúrese de que su nodo incluya tanto un cliente de ejecución como un cliente de consenso. Si su nodo no se encuentra en su computadora local (por ejemplo, se ejecuta en una instancia de AWS), actualice las direcciones IP en el tutorial según corresponda. Para obtener más información, vea nuestra página sobre [ejecutar un nodo](/developers/docs/nodes-and-clients/run-a-node/).
+Tenga en cuenta que desde [la Fusión](/roadmap/merge/), se requieren dos piezas de software de Ethereum conectadas, un cliente de ejecución y un cliente de consenso, para ejecutar un nodo. Asegúrese de que su nodo incluya tanto un cliente de ejecución como un cliente de consenso. Si su nodo no está en su máquina local (p. ej., su nodo se está ejecutando en una instancia de AWS), actualice las direcciones IP en el tutorial según corresponda. Para más información, consulte nuestra página sobre [cómo ejecutar un nodo](/developers/docs/nodes-and-clients/run-a-node/).
## Requisitos previos {#prerequisites}
-Además de para comprender JavaScript, podría ser útil entender la [pila de Ethereum](/developers/docs/ethereum-stack/) y los [clientes de Ethereum](/developers/docs/nodes-and-clients/).
+Además de entender JavaScript, podría ser útil entender el [stack de Ethereum](/developers/docs/ethereum-stack/) y los [clientes de Ethereum](/developers/docs/nodes-and-clients/).
## ¿Por qué usar una biblioteca? {#why-use-a-library}
-Estas bibliotecas eliminan en gran parte la complejidad de interactuar directamente con un nodo Ethereum. Estas también proporcionan funciones útiles (p. ej., convertir ETH a Gwei) para que así un desarrollador gaste menos tiempo tratando con las complejidades de los clientes de Ethereum y pase más tiempo enfocado en la funcionalidad única de tu aplicación.
+Estas bibliotecas eliminan en gran parte la complejidad de interactuar directamente con un nodo Ethereum. También proporcionan funciones utilitarias (por ejemplo, convertir ETH a Gwei), para que como desarrollador dedique menos tiempo a las complejidades de los clientes de Ethereum y pueda enfocarse más en la funcionalidad única de su aplicación.
## Características de la biblioteca {#library-features}
-### Conectar a nodos Ethereum {#connect-to-ethereum-nodes}
+### Conectarse a los nodos de Ethereum {#connect-to-ethereum-nodes}
Mediante proveedores, estas bibliotecas le permiten conectarse a Ethereum y leer sus datos, ya sea sobre JSON-RPC, INFURA, Etherscan, Alchemy o MetaMask.
+> **Advertencia:** Web3.js se archivó el 4 de marzo de 2025. [Lea el anuncio](https://blog.chainsafe.io/web3-js-sunset/). Considere usar bibliotecas alternativas como [ethers.js](https://ethers.org) o [viem](https://viem.sh) para nuevos proyectos.
+
**Ejemplo de Ethers**
```js
-// Un proveedor de navegador envuelve un proveedor de Web3 estándar, que es
+// Un BrowserProvider envuelve un proveedor estándar de Web3, que es
// lo que MetaMask inyecta como window.ethereum en cada página
const provider = new ethers.BrowserProvider(window.ethereum)
-// El complemento MetaMask también permite firmar transacciones para
-// enviar ether y pagar para cambiar de estado dentro de la cadena de bloques.
-// Para esto, necesitamos al titular de la cuenta...
+// El plugin de MetaMask también permite firmar transacciones para
+// enviar ether y pagar para cambiar el estado dentro de la cadena de bloques.
+// Para esto, necesitamos el firmante de la cuenta...
const signer = provider.getSigner()
```
@@ -69,30 +71,29 @@ Una vez configurado, estará habilitado a consultar en la cadena de bloques:
- id de la red
- y más...
-### Funcionalidad de la cartera {#wallet-functionality}
+### Funcionalidad de la billetera {#wallet-functionality}
Estas bibliotecas le darán la funcionalidad para crear billeteras, administrar claves y firmar transacciones.
A continuación se incluyen algunos ejemplos de Ethers
```js
-// Crear una instancia de la cartera desde un mnemonic...
+// Crear una instancia de billetera desde una frase mnemónica...
mnemonic =
-"announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"
-
+ "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"
walletMnemonic = Wallet.fromPhrase(mnemonic)
-// ... o desde una clave privada
+// ...o desde una clave privada
walletPrivateKey = new Wallet(walletMnemonic.privateKey)
walletMnemonic.address === walletPrivateKey.address
-// verdadero
+// true
-// La dirección como una promesa según la API del firmante
+// La dirección como una Promesa por la API del Firmante
walletMnemonic.getAddress()
// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }
-// Una dirección de billetera también está disponible de forma sincrónica
+// Una dirección de Billetera también está disponible sincrónicamente
walletMnemonic.address
// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'
@@ -102,7 +103,7 @@ walletMnemonic.privateKey
walletMnemonic.publicKey
// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'
-// La billetera mnemónica
+// La frase mnemónica de la billetera
walletMnemonic.mnemonic
// {
// locale: 'en',
@@ -111,11 +112,11 @@ walletMnemonic.mnemonic
// }
// Nota: Una billetera creada con una clave privada no
-// tiene un mnemónico (la derivación lo impide)
+// tiene una frase mnemónica (la derivación lo impide)
walletPrivateKey.mnemonic
-// nulo
+// null
-// Firmando un mensaje
+// Firmar un mensaje
walletMnemonic.signMessage("Hello World")
// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }
@@ -124,21 +125,21 @@ tx = {
value: utils.parseEther("1.0"),
}
-// Firmando una transacción
+// Firmar una transacción
walletMnemonic.signTransaction(tx)
// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }
-// El método de conexión devuelve una nueva instancia de
+// El método de conexión devuelve una nueva instancia de la
// Billetera conectada a un proveedor
wallet = walletMnemonic.connect(provider)
-// Consultando la red
+// Consultar la red
wallet.getBalance()
// { Promise: { BigNumber: "42" } }
wallet.getTransactionCount()
// { Promise: 0 }
-// Envío de Ether
+// Enviar ether
wallet.sendTransaction(tx)
```
@@ -151,7 +152,7 @@ Una vez configurado, podrá:
- firmar transacciones
- y más...
-### Interactuar con las funciones del contrato inteligente {#interact-with-smart-contract-functions}
+### Interactuar con las funciones de los contratos inteligentes {#interact-with-smart-contract-functions}
Las bibliotecas de clientes Javascript permiten que su aplicación invoque funciones de contratos inteligentes mediante la lectura de la Interfaz Binaria de Aplicación (ABI) de un contrato compilado.
@@ -164,7 +165,7 @@ contract Test {
uint a;
address d = 0x12345678901234567890123456789012;
- function Test(uint testInt) { a = testInt;}
+ constructor(uint testInt) { a = testInt;}
event Event(uint indexed b, bytes32 c);
@@ -211,13 +212,13 @@ Esto significa que puede:
- Enviar una transacción al contrato inteligente y ejecutar su método
- Promover la estimación del gas que tomará un método de ejecución cuando se ejecute en la máquina virtual EVM
- Desplegar un contrato
-- Y mucho más...
+- Y más...
### Funciones de utilidad {#utility-functions}
Las funciones de utilidad le dan atajos prácticos que hacen que la construcción o creación sea más fácil con Ethereum.
-Los valores de ETH vienen en Wei por defecto. 1 ETH = 1.000.000.000.000.000.000 WEI (esto significa que está trabajando con muchos números) `web3.utils.toWei` convierte ether a Wei.
+Los valores de ETH vienen en Wei por defecto. 1 ETH = 1.000.000.000.000.000.000 WEI (esto significa que está trabajando con muchos números) `web3.utils.toWei` convierte ether a wei por usted.
Y en ethers esto sería así:
@@ -233,58 +234,55 @@ ethers.utils.formatEther(balance)
```
- [Funciones de utilidad de Web3js](https://docs.web3js.org/api/web3-utils)
-- [Funciones de utilidad de Ethers](https://docs.ethers.io/v5/api/utils/)
+- [Funciones de utilidad de Ethers](https://docs.ethers.org/v6/api/utils/)
## Bibliotecas disponibles {#available-libraries}
-**Web3.js:** **_API de Javascript de Ethereum._**
+**Web3.js -** **_API de JavaScript para Ethereum._**
-- [Documentación](https://docs.web3js.org/)
-- [GitHub](https://github.com/ethereum/web3.js/)
+- [Documentación](https://docs.web3js.org)
+- [GitHub](https://github.com/ethereum/web3.js)
-**Ethers.js:** **_ Implementación completa de billetera de Ethereum y utilidades en JavaScript y TypeScript._**
+**Ethers.js -** **_Implementación completa de la billetera de Ethereum y utilidades en JavaScript y TypeScript._**
-- [Documentación](https://docs.ethers.io/)
-- [GitHub](https://github.com/ethers-io/ethers.js/)
+- [Página de inicio de Ethers.js](https://ethers.org/)
+- [Documentación](https://docs.ethers.io)
+- [GitHub](https://github.com/ethers-io/ethers.js)
-**The Graph:** **_Un protocolo para indexar datos de Ethereum y IPFS, y consultarlos usando GraphQL._**
+**The Graph -** **_Un protocolo para indexar datos de Ethereum e IPFS y consultarlos usando GraphQL._**
-- [The Graph](https://thegraph.com/)
-- [Graph Explorer](https://thegraph.com/explorer/)
-- [Documentación](https://thegraph.com/docs/)
-- [GitHub](https://github.com/graphprotocol/)
+- [The Graph](https://thegraph.com)
+- [Explorador de Graph](https://thegraph.com/explorer)
+- [Documentación](https://thegraph.com/docs)
+- [GitHub](https://github.com/graphprotocol)
- [Discord](https://thegraph.com/discord)
-**light.js:** **_Una biblioteca de JS de alto nivel optimizada para clientes ligeros._**
-
-- [GitHub](https://github.com/openethereum/js-libs/tree/master/packages/light.js)
-
-**Alchemyweb3:** **_Wrapper en torno a Web3.js con reintentos automáticos y API mejoradas._**
+**Alchemy SDK -** **_Envoltorio para Ethers.js con API mejoradas._**
-- [Documentación](https://docs.alchemy.com/reference/api-overview)
-- [GitHub](https://github.com/alchemyplatform/alchemy-web3)
+- [Documentación](https://www.alchemy.com/docs)
+- [GitHub](https://github.com/alchemyplatform/alchemy-sdk-js)
-**Alchemy NFT API:** **_API para obtener datos NFT, incluyendo propiedad, metadatos de atributos y más._**
-
-- [Documentación](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api)
-- [GitHub](https://github.com/alchemyplatform/alchemy-web3)
-
-**viem:** **_Interfaz de TypeScript para Ethereum._**
+**viem -** **_Interfaz de TypeScript para Ethereum._**
- [Documentación](https://viem.sh)
- [GitHub](https://github.com/wagmi-dev/viem)
-## Más información {#further-reading}
+**Drift -** **_Meta-biblioteca de TypeScript con caché, hooks y simulacros de prueba incorporados._**
+
+- [Documentación](https://ryangoree.github.io/drift/)
+- [GitHub](https://github.com/ryangoree/drift/)
+
+## Lecturas adicionales {#further-reading}
-_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._
+_¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!_
## Temas relacionados {#related-topics}
-- [ Nodos y clientes](/developers/docs/nodes-and-clients/)
-- [Entornos de desarrollo](/developers/docs/frameworks/)
+- [Nodos y clientes](/developers/docs/nodes-and-clients/)
+- [Marcos de desarrollo](/developers/docs/frameworks/)
## Tutoriales relacionados {#related-tutorials}
-- [Configurar Web3js para utilizar la cadena de bloques de Ethereum en Javascript:](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _Instrucciones para configurar web3.js en su proyecto._
-- [Invocar un contrato inteligente desde JavaScript:](/developers/tutorials/calling-a-smart-contract-from-javascript/) _ con el token DAI, vea cómo invocar funciones de contratos usando Javascript._
-- [Enviar transacciones usando web 3.0 y Alchemy:](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) _Tutorial de paso a paso para enviar transacciones desde el backend._
+- [Configure Web3js para usar la blockchain de Ethereum en JavaScript](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– Instrucciones para configurar web3.js en su proyecto._
+- [Llamar a un smart contract desde JavaScript](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– Usando el token DAI, vea cómo llamar funciones de contratos utilizando JavaScript._
+- [Enviar transacciones con web3 y Alchemy](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) _– Guía paso a paso para enviar transacciones desde el backend._
From 9b28776261804c7dc63e1c8134553d15a31dd1fe Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:56 -0300
Subject: [PATCH 301/589] update(i18n):
public/content/translations/es/guides/how-to-revoke-token-access/index.md
---
.../es/guides/how-to-revoke-token-access/index.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/public/content/translations/es/guides/how-to-revoke-token-access/index.md b/public/content/translations/es/guides/how-to-revoke-token-access/index.md
index e6a7f88a56b..4bf5be57503 100644
--- a/public/content/translations/es/guides/how-to-revoke-token-access/index.md
+++ b/public/content/translations/es/guides/how-to-revoke-token-access/index.md
@@ -10,7 +10,7 @@ Esta guía le enseñará cómo ver una lista de todos los [contratos inteligente
En ocasiones, desarrolladores malintencionados crean puertas traseras en los contratos inteligentes que permiten acceder a los fondos de usuarios desprevenidos que interactúan con el contrato inteligente. Lo que a menudo sucede es que tales plataformas piden al usuario permiso para gastar un **número ilimitado de tokens** en un intento de ahorrar pequeñas cantidades de [gas](/glossary/#gas) en el futuro, pero esto conlleva un mayor riesgo.
-Una vez que una plataforma tiene derechos de acceso ilimitados a un token en su [billetera](/glossary/#wallet), puede gastar todos esos tokens incluso si ha retirado sus fondos de su plataforma a su billetera. Los atacantes aun pueden seguir accediendo a sus fondos y retirarlos a sus carteras sin que le quede ninguna opción de recuperación.
+Una vez que una plataforma tiene derechos de acceso ilimitados a un token en su [billetera](/glossary/#wallet), puede gastar todos esos tokens aunque haya retirado sus fondos de la plataforma a su billetera. Los atacantes aun pueden seguir accediendo a sus fondos y retirarlos a sus carteras sin que le quede ninguna opción de recuperación.
Las únicas protecciones son abstenerse de utilizar nuevos proyectos no probados, aprobar sólo lo que se necesita o revocar regularmente el acceso. Pero, ¿cómo se logra hacer?
@@ -18,8 +18,8 @@ Las únicas protecciones son abstenerse de utilizar nuevos proyectos no probados
Existen varios sitios web que le permiten ver y revocar contratos inteligentes conectados a su dirección. Visite el sitio web y conecte su cartera:
-- [Ethallowance](https://ethallowance.com/) (Ethereum)
- [Etherscan](https://etherscan.io/tokenapprovalchecker) (Ethereum)
+- [Blockscout](https://eth.blockscout.com/apps/revokescout) (Ethereum)
- [Revoke](https://revoke.cash/) (múltiples redes)
- [Unrekt](https://app.unrekt.net/) (múltiples redes)
- [EverRevoke](https://everrise.com/everrevoke/) (múltiples redes)
@@ -42,9 +42,9 @@ Una vez que haga clic en revocar, debería ver una nueva sugerencia de transacci
Le aconsejamos que actualice la herramienta de revocación transcurridos unos minutos y vuelva a conectar su cartera de nuevo para asegurarse de que el contrato revocado haya desaparecido de la lista.
-Le recomendamos que nunca permita que los proyectos tengan acceso ilimitado a sus tókenes y que revoque regularmente todos los permisos de acceso a tókenes. Revocar el acceso a un token nunca debería provocar una pérdida de fondos, especialmente si utiliza la lista de herramientas mencionadas anteriormente.
+Le recomendamos que nunca permita que los proyectos tengan acceso ilimitado a sus tokens y que revoque regularmente todos los permisos de acceso a tokens. Revocar el acceso a los tokens nunca debería provocar una pérdida de fondos, especialmente si utiliza las herramientas enumeradas anteriormente.
-
+
@@ -60,7 +60,7 @@ Le aconsejamos que actualice la herramienta de revocación transcurridos unos mi
### ¿Revocar el acceso de tókenes también hace que se termine la apuesta, la reserva, el préstamo, etc?
-No, no afectará a ninguna de sus estrategias [DeFi](/glossary/#defi). Permanecerá en sus posiciones y seguirá obteniendo recompensas, etc.
+No, no afectará a ninguna de sus estrategias de [DeFi](/glossary/#defi). Permanecerá en sus posiciones y seguirá obteniendo recompensas, etc.
### ¿Desconectar una cartera de un proyecto es lo mismo que quitar el permiso para usar mis fondos?
From f50a470ae4c612baef801853b04a0b25623df56c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:58 -0300
Subject: [PATCH 302/589] update(i18n):
public/content/translations/es/developers/docs/data-and-analytics/index.md
---
.../docs/data-and-analytics/index.md | 61 ++++++++++++-------
1 file changed, 39 insertions(+), 22 deletions(-)
diff --git a/public/content/translations/es/developers/docs/data-and-analytics/index.md b/public/content/translations/es/developers/docs/data-and-analytics/index.md
index 7e2810fd381..7faee246217 100644
--- a/public/content/translations/es/developers/docs/data-and-analytics/index.md
+++ b/public/content/translations/es/developers/docs/data-and-analytics/index.md
@@ -1,55 +1,72 @@
---
title: Datos y análisis
-description: '¿Cómo obtener datos y análisis en cadena para usarlos en tus dapps?'
+description: Cómo obtener analíticas y datos en cadena para usarlos en sus DApps
lang: es
---
## Introducción {#Introduction}
-A medida que aumente la utilización de la red, habrá una cantidad creciente de información valiosa en los datos en cadena. A medida que el volumen de datos crece rápidamente, calcular y agregar esta información para reportar o impulsar una dApp puede costar tiempo y el proceso puede ser un poco agotador.
+A medida que se difunda más el uso de la red, aumentará la cantidad de información valiosa que existirá en los datos de la cadena. A medida que el volumen de datos crece rápidamente, calcular y agregar esta información para reportar o impulsar una dApp puede costar tiempo y el proceso puede ser un poco agotador.
El aprovechamiento de los proveedores de datos existentes puede agilizar el desarrollo, producir resultados más precisos y reducir los constantes esfuerzos de mantenimiento. Esto permitirá a un equipo concentrarse en la funcionalidad principal que su proyecto pretende ofrecer.
-## Prerrequisitos {#prerequisites}
+## Requisitos previos {#prerequisites}
-Debe comprender el concepto básico de [Exploradores de bloques](/developers/docs/data-and-analytics/block-explorers/) para comprender cómo usarlos mejor en el contexto de análisis de datos. Además, familiarícese con el concepto de un [índice](/glossary/#index) para comprender las ventajas que añaden al diseño de un sistema.
+Debe comprender el concepto básico de los [exploradores de bloques](/developers/docs/data-and-analytics/block-explorers/) para comprender mejor su uso en el contexto del análisis de datos. Además, familiarícese con el concepto de un [índice](/glossary/#index) para comprender los beneficios que aportan al diseño de un sistema.
-En cuanto a los fundamentos de la arquitectura, entender qué es una [API](https://www.wikipedia.org/wiki/API) y [REST](https://www.wikipedia.org/wiki/Representational_state_transfer), incluso en teoría.
+En cuanto a los fundamentos de la arquitectura, es importante comprender qué son una [API](https://www.wikipedia.org/wiki/API) y [REST](https://www.wikipedia.org/wiki/Representational_state_transfer), aunque sea en teoría.
## Exploradores de bloques {#block-explorers}
-Muchos [Exploradores de bloques](/developers/docs/data-and-analytics/block-explorers/) ofrecen puertas de enlace de [API](https://www.wikipedia.org/wiki/API) [RESTful](https://www.wikipedia.org/wiki/Representational_state_transfer) que proporcionarán a los desarrolladores visibilidad de los datos en tiempo real sobre bloques, transacciones, validadores, cuentas y otras actividades en cadena.
+Muchos [exploradores de bloques](/developers/docs/data-and-analytics/block-explorers/) ofrecen puertas de enlace de [API](https://www.wikipedia.org/wiki/API) [RESTful](https://www.wikipedia.org/wiki/Representational_state_transfer) que proporcionarán a los desarrolladores visibilidad de los datos en tiempo real sobre bloques, transacciones, validadores, cuentas y otras actividades en la cadena.
-Los desarrolladores pueden luego procesar y transformar estos datos para dar a sus usuarios una visión e interacciones únicas con la [cadena de bloques](/glossary/#blockchain). Por ejemplo, [Etherscan](https://etherscan.io) provee información de ejecución y consenso por cada ranura 12s.
+Los desarrolladores pueden procesar y transformar estos datos para ofrecer a sus usuarios información e interacciones únicas con la [cadena de bloques](/glossary/#blockchain). Por ejemplo, [Etherscan](https://etherscan.io) y [Blockscout](https://eth.blockscout.com) proporcionan datos de ejecución y consenso para cada ranura de 12 s.
## The Graph {#the-graph}
-El [Graph Network](https://thegraph.com/) es un protocolo de indexación descentralizado para organizar datos de la cadena de bloques. En lugar de crear y gestionar almacenes de datos fuera de la cadena y centralizados para agregar datos en la cadena, con The Graph, los desarrolladores pueden crear aplicaciones sin servidor que se ejecutan completamente en infraestructura pública.
+[The Graph](https://thegraph.com/) es un protocolo de indexación que proporciona una forma sencilla de consultar datos de la cadena de bloques a través de API abiertas conocidas como subgrafos.
-Usando [GraphQL](https://graphql.org/), los desarrolladores pueden consultar cualquiera de las API curadas, conocidas como sub-graphs, para adquirir la información necesaria que necesitan para manejar sus dApps. Consultando estos sub-graphs indexados, los informes y las dApps no solo consiguen ventajas de rendimiento y escalabilidad, sino también la precisión integrada de los consensos de la red. A medida que se añaden nuevas mejoras y/o sub-graphs a la red, sus proyectos pueden iterar rápidamente para aprovechar estas mejoras.
+Con The Graph, los desarrolladores pueden beneficiarse de:
-## Diversidad de clientes
+- Una indexación descentralizada: permite la indexación de datos de la cadena de bloques a través de múltiples indexadores, eliminando así cualquier punto único de fallo
+- Consultas sobre GraphQL: proporciona una potente interfaz GraphQL para consultar datos indexados, lo que hace que la recuperación de datos sea extremadamente sencilla
+- Personalización: defina su propia lógica para transformar y almacenar datos de la cadena de bloques, y reutilice los subgrafos publicados por otros desarrolladores en The Graph Network
-La [diversidad de clientes](/developers/docs/nodes-and-clients/client-diversity/) es importante para la salud general de la red de Ethereum porque esta provee resistencia a errores y exploits. Ahora hay varios paneles de diversidad de clientes, incluidos [clientdiversity.org](https://clientdiversity.org/), [ated.network](https://www.rated.network), [supermajority.info](https://supermajority.info//) y [Ethernodes](https://ethernodes.org/).
+Siga esta guía de [inicio rápido](https://thegraph.com/docs/en/quick-start/) para crear, desplegar y consultar un subgrafo en 5 minutos.
+
+## Diversidad de clientes {#client-diversity}
+
+La [diversidad de clientes](/developers/docs/nodes-and-clients/client-diversity/) es importante para la salud general de la red de Ethereum porque proporciona resiliencia ante errores y exploits. Actualmente existen varios paneles de control sobre la diversidad de clientes, como [clientdiversity.org](https://clientdiversity.org/), [rated.network](https://www.rated.network), [supermajority.info](https://supermajority.info//) y [Ethernodes](https://ethernodes.org/).
## Dune Analytics {#dune-analytics}
-[Dune Analytics](https://dune.com/) preprocesa los datos de la cadena de bloques y los integra en tablas de bases de datos relacionales (DuneSQL), permitiendo a los usuarios consultar los datos de la cadena usando SQL y crear paneles de control con los resultados de dichas consultas. Los datos en cadena son organizados en 4 categorías: `bloques`, `transacciones`, `registros` (de eventos) y `rastreos` (de llamadas). Se decodificaron contratos y protocolos populares, y cada uno de ellos tiene sus propios conjuntos de llamadas y eventos. Estas tablas de eventos y llamadas son procesadas y organizadas en tablas abstractas ordenadas por el tipo de protocolo, por ejemplo: dex, préstamos, monedas estables, etc.
+[Dune Analytics](https://dune.com/) preprocesa los datos de la cadena de bloques en tablas de bases de datos relacionales (DuneSQL), permite a los usuarios consultar datos de la cadena de bloques usando SQL y crear paneles de control basados en los resultados de las consultas. Los datos en la cadena se organizan en 4 tablas sin procesar: `blocks`, `transactions`, `logs` (de eventos) y `traces` (de llamadas). Se decodificaron contratos y protocolos populares, y cada uno de ellos tiene sus propios conjuntos de llamadas y eventos. Estas tablas de eventos y llamadas son procesadas y organizadas en tablas abstractas ordenadas por el tipo de protocolo, por ejemplo: dex, préstamos, monedas estables, etc.
+
+## SQD {#sqd}
+
+[SQD](https://sqd.dev/) es una plataforma de datos hiperescalable y descentralizada, optimizada para proporcionar un acceso eficiente y sin permisos a grandes volúmenes de datos. Actualmente sirve datos históricos en la cadena, incluidos registros de eventos, recibos de transacciones, rastros y diferencias de estado por transacción. SQD ofrece un potente conjunto de herramientas para crear canalizaciones personalizadas de extracción y procesamiento de datos, logrando una velocidad de indexación de hasta 150 k bloques por segundo.
+
+Para empezar, visite la [documentación](https://docs.sqd.dev/) o consulte los [ejemplos de EVM](https://github.com/subsquid-labs/squid-evm-examples) de lo que puede crear con SQD.
## SubQuery Network {#subquery-network}
-[SubQuery](https://subquery.network/) es un indexador de datos líder que ofrece a los desarrolladores API rápidas, confiables, descentralizadas y personalizadas para sus proyectos web3. SubQuery ofrece a los desarrolladores de más de 165 ecosistemas (incluido Ethereum) datos indexados enriquecidos para crear experiencias intuitivas e inmersivas para sus usuarios. SubQuery Network impulsa sus aplicaciones imparables con una red de infraestructura resiliente y descentralizada. Utilice el kit de herramientas de desarrollo de cadena de bloques de SubQuery para construir las aplicaciones web3 del futuro, sin gastar tiempo construyendo un backend personalizado para las actividades de procesamiento de datos.
+[SubQuery](https://subquery.network/) es un indexador de datos líder que ofrece a los desarrolladores API rápidas, fiables, descentralizadas y personalizadas para sus proyectos de la web3. SubQuery ofrece a los desarrolladores de más de 165 ecosistemas (incluido Ethereum) datos indexados enriquecidos para crear experiencias intuitivas e inmersivas para sus usuarios. SubQuery Network impulsa sus aplicaciones imparables con una red de infraestructura resiliente y descentralizada. Utilice el kit de herramientas de desarrollo de cadena de bloques de SubQuery para construir las aplicaciones web3 del futuro, sin gastar tiempo construyendo un backend personalizado para las actividades de procesamiento de datos.
+
+Para empezar, visite la [guía de inicio rápido de Ethereum](https://academy.subquery.network/quickstart/quickstart_chains/ethereum-gravatar.html) para comenzar a indexar los datos de la cadena de bloques de Ethereum en minutos en un entorno local de Docker para realizar pruebas antes de publicarlo en un [servicio administrado de SubQuery](https://managedservice.subquery.network/) o en la [red descentralizada de SubQuery](https://app.subquery.network/dashboard).
-Para comenzar, visite la guía de inicio rápido de [Ethereum](https://academy.subquery.network/quickstart/quickstart_chains/ethereum-gravatar.html) para comenzar a indexar los datos de la cadena de bloques de Ethereum en minutos en un entorno Docker local para pruebas antes del lanzamiento en un [servicio administrado de SubQuery](https://managedservice.subquery.network/) o en la [red descentralizada de SubQuery](https://app.subquery.network/dashboard).
+## Lenguaje de consulta de EVM {#evm-query-language}
-## Ethernow: Mempool Data Program {#ethernow}
-[Blocknative](https://www.blocknative.com/) proporciona acceso abierto a su [archivo de datos de zona de pruebas](https://www.ethernow.xyz/mempool-data-archive) histórico de Ethereum. Esto permite a los investigadores y a los proyectos para el bien de la comunidad explorar la capa previa a la cadena de la Red principal de Ethereum. El conjunto de datos se mantiene activamente y representa el registro histórico más completo de los eventos de transacciones de la zona de pruebas dentro del ecosistema de Ethereum. Obtenga más información en [Ethernow](https://www.ethernow.xyz/).
+El lenguaje de consultas de la EVM (EQL en inglés) es un lenguaje tipo SQL diseñado para consultar cadenas de la EVM (máquina virtual de Ethereum). Su objetivo final es permitir consultas complejas relacionadas con ciudadanos de primera clase de cadenas EVM (bloques, cuentas y transacciones) mientras proporciona a desarrolladores e investigadores una sintaxis ergonómica para el uso del día a día. Con EQL, los desarrolladores pueden obtener datos de la cadena de bloques usando una sintaxis similar a la de SQL y eliminar la necesidad de un conjunto de códigos predefinidos complejos. EQL admite peticiones estándar de datos de la cadena de bloque (p. ej., obtener el nonce y el saldo de la cuenta en Ethereum o el tamaño de bloque actual y su marca de tiempo) y añade continuamente soporte para peticiones y funcionalidades más complejas.
-## Más información {#further-reading}
+## Lecturas recomendadas {#further-reading}
+- [Explorando los datos de criptomonedas I: Arquitecturas de flujo de datos](https://web.archive.org/web/20250125012042/https://research.2077.xyz/exploring-crypto-data-1-data-flow-architectures)
- [Descripción general de Graph Network](https://thegraph.com/docs/en/about/)
-- [Graph Query Playground](https://thegraph.com/explorer/subgraph/graphprotocol/graph-network-mainnet?version=current)
-- [Ejemplos de código API en EtherScan](https://etherscan.io/apis#contracts)
-- [Explorador de la cadena de Baliza Beaconcha.in](https://beaconcha.in)
-- [Aspectos básicos de Dune](https://docs.dune.com/#dune-basics)
-- [Guía de inicio rápido de SubQuery Ethereum](https://academy.subquery.network/indexer/quickstart/quickstart_chains/ethereum-gravatar.html)
+- [Playground de consultas de The Graph](https://thegraph.com/explorer/subgraph/graphprotocol/graph-network-mainnet?version=current)
+- [Ejemplos de código de la API en EtherScan](https://etherscan.io/apis#contracts)
+- [Documentación de la API en Blockscout](https://docs.blockscout.com/devs/apis)
+- [Explorador de la Cadena de baliza Beaconcha.in](https://beaconcha.in)
+- [Conceptos básicos de Dune](https://docs.dune.com/#dune-basics)
+- [Guía de inicio rápido de SubQuery para Ethereum](https://academy.subquery.network/indexer/quickstart/quickstart_chains/ethereum-gravatar.html)
+- [Descripción general de la red SQD](https://docs.sqd.dev/)
+- [Lenguaje de consulta de EVM](https://eql.sh/blog/alpha-release-notes)
From ddcae3e786405f55d6e6a1b41c7277659df5d7d5 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:53:59 -0300
Subject: [PATCH 303/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/naming/index.md
---
.../docs/smart-contracts/naming/index.md | 101 ++++++++++++++++++
1 file changed, 101 insertions(+)
create mode 100644 public/content/translations/es/developers/docs/smart-contracts/naming/index.md
diff --git a/public/content/translations/es/developers/docs/smart-contracts/naming/index.md b/public/content/translations/es/developers/docs/smart-contracts/naming/index.md
new file mode 100644
index 00000000000..9b534e887ea
--- /dev/null
+++ b/public/content/translations/es/developers/docs/smart-contracts/naming/index.md
@@ -0,0 +1,101 @@
+---
+title: Nomenclatura de contratos inteligentes
+description: Mejores prácticas para nombrar contratos inteligentes de Ethereum con ENS
+lang: es
+---
+
+Los contratos inteligentes son una piedra angular de la infraestructura descentralizada de Ethereum, que permite aplicaciones y protocolos autónomos. Pero incluso a medida que las capacidades de los contratos evolucionan, los usuarios y desarrolladores todavía dependen de direcciones hexadecimales sin formato para identificar y hacer referencia a estos contratos.
+
+Nombrar contratos inteligentes con el [Servicio de nombres de Ethereum (ENS)](https://ens.domains/) mejora la experiencia del usuario al eliminar las direcciones hexadecimales de los contratos y reduce el riesgo de ataques como el envenenamiento de direcciones y los ataques de suplantación de identidad. Esta guía explica por qué es importante nombrar los contratos inteligentes, cómo se puede implementar y las herramientas disponibles, como [Enscribe](https://www.enscribe.xyz), para simplificar el proceso y ayudar a los desarrolladores a adoptar esta práctica.
+
+## ¿Por qué nombrar los contratos inteligentes? {#why-name-contracts}
+
+### Identificadores legibles por humanos {#human-readable-identifiers}
+
+En lugar de interactuar con direcciones de contrato opacas como `0x8f8e...f9e3`, los desarrolladores y usuarios pueden usar nombres legibles por humanos como `v2.myapp.eth`. Esto simplifica las interacciones con los contratos inteligentes.
+
+Esto es posible gracias al [Servicio de nombres de Ethereum](https://ens.domains/), que proporciona un servicio de nombres descentralizado para las direcciones de Ethereum. Esto es análogo a cómo el Servicio de nombres de dominio (DNS) permite a los usuarios de internet acceder a las direcciones de red utilizando un nombre como ethereum.org en lugar de una dirección IP como `104.18.176.152`.
+
+### Seguridad y confianza mejoradas {#improved-security-and-trust}
+
+Los contratos con nombre ayudan a reducir las transacciones accidentales a la dirección incorrecta. También ayudan a los usuarios a identificar contratos vinculados a aplicaciones o marcas específicas. Esto añade una capa de confianza reputacional, especialmente cuando los nombres están asociados a dominios principales conocidos como `uniswap.eth`.
+
+Debido a la longitud de 42 caracteres de la dirección de Ethereum, es muy difícil para los usuarios identificar pequeños cambios en las direcciones, donde se han modificado un par de caracteres. Por ejemplo, una dirección como `0x58068646C148E313CB414E85d2Fe89dDc3426870` normalmente sería truncada a `0x580...870` por aplicaciones orientadas al usuario como las billeteras. Es poco probable que un usuario note una dirección maliciosa en la que se han alterado un par de caracteres.
+
+Este tipo de técnica se emplea en ataques de suplantación y envenenamiento de direcciones, en los que se hace creer a los usuarios que están interactuando o enviando fondos a la dirección correcta, cuando en realidad la dirección simplemente se parece a la correcta, pero no es la misma.
+
+Los nombres de ENS para billeteras y contratos protegen contra este tipo de ataques. Al igual que los ataques de suplantación de DNS, los ataques de suplantación de ENS también pueden producirse; sin embargo, es más probable que un usuario note un error ortográfico en un nombre de ENS que una pequeña modificación en una dirección hexadecimal.
+
+### Mejor UX para billeteras y exploradores {#better-ux}
+
+Cuando un contrato inteligente se ha configurado con un nombre de ENS, es posible que las aplicaciones, como las billeteras y los exploradores de la cadena de bloques, muestren los nombres de ENS para los contratos inteligentes, en lugar de las direcciones hexadecimales. Esto proporciona una mejora significativa en la experiencia de usuario (UX) para los usuarios.
+
+Por ejemplo, al interactuar con una aplicación como Uniswap, los usuarios verán normalmente que la aplicación con la que interactúan está alojada en el sitio web `uniswap.org`, pero se les presentará una dirección de contrato hexadecimal si Uniswap no ha nombrado sus contratos inteligentes con ENS. Si el contrato tiene un nombre, podrían ver en su lugar `v4.contracts.uniswap.eth`, que es mucho más útil.
+
+## Nomenclatura en el momento del despliegue frente a la post-despliegue {#when-to-name}
+
+Hay dos momentos en los que se puede nombrar a los contratos inteligentes:
+
+- **En el momento del despliegue**: asignar un nombre de ENS al contrato a medida que se despliega.
+- **Después del despliegue**: asignar una dirección de contrato existente a un nuevo nombre de ENS.
+
+Ambos enfoques se basan en tener acceso como propietario o gestor a un dominio ENS para poder crear y establecer registros ENS.
+
+## Cómo funciona la nomenclatura de ENS para los contratos {#how-ens-naming-works}
+
+Los nombres de ENS se almacenan en la cadena y se resuelven en direcciones de Ethereum a través de resolutores de ENS. Para nombrar un contrato inteligente:
+
+1. Registrar o controlar un dominio ENS principal (p. ej., `myapp.eth`)
+2. Crear un subdominio (p. ej., `v1.myapp.eth`)
+3. Establecer el registro de `dirección` del subdominio en la dirección del contrato
+4. Establecer el registro inverso del contrato en el ENS para permitir que el nombre se encuentre a través de su dirección
+
+Los nombres de ENS son jerárquicos y admiten un número ilimitado de subnombres. Establecer estos registros suele implicar la interacción con el registro de ENS y los contratos de resolución públicos.
+
+## Herramientas para nombrar contratos {#tools}
+
+Hay dos enfoques para nombrar los contratos inteligentes. Ya sea utilizando la [Aplicación ENS](https://app.ens.domains) con algunos pasos manuales, o utilizando [Enscribe](https://www.enscribe.xyz). Estos se describen a continuación.
+
+### Configuración manual de ENS {#manual-ens-setup}
+
+Utilizando la [Aplicación ENS](https://app.ens.domains), los desarrolladores pueden crear manualmente subnombres y establecer registros de dirección de reenvío. Sin embargo, no pueden establecer un nombre primario para un contrato inteligente estableciendo el registro inverso para el nombre a través de la aplicación ENS. Se deben seguir unos pasos manuales que se describen en los [documentos de ENS](https://docs.ens.domains/web/naming-contracts/).
+
+### Enscribe {#enscribe}
+
+[Enscribe](https://www.enscribe.xyz) simplifica la nomenclatura de los contratos inteligentes con ENS y aumenta la confianza del usuario en los contratos inteligentes. Proporciona:
+
+- **Despliegue y nomenclatura atómicos**: Asignar un nombre de ENS al desplegar un nuevo contrato
+- **Nomenclatura post-despliegue**: Adjuntar nombres a contratos ya desplegados
+- **Soporte multicadena**: Funciona en Ethereum y en redes de capa 2 donde se soporta ENS
+- **Datos de verificación de contratos**: Incluye datos de verificación de contratos extraídos de múltiples fuentes para aumentar la confianza de los usuarios
+
+Enscribe admite nombres de ENS proporcionados por los usuarios, o sus propios dominios si el usuario no tiene un nombre de ENS.
+
+Puede acceder a la [Aplicación Enscribe](https://app.enscribe.xyz) para empezar a nombrar y ver contratos inteligentes.
+
+## Buenas prácticas {#best-practices}
+
+- **Utilice nombres claros y versionados** como `v1.myapp.eth` para que las actualizaciones de los contratos sean transparentes
+- **Establezca registros inversos** para vincular los contratos a los nombres de ENS y así darles visibilidad en aplicaciones como billeteras y exploradores de cadenas de bloques.
+- **Supervise de cerca los vencimientos** si quiere evitar cambios accidentales de propiedad
+- **Verifique la fuente del contrato** para que los usuarios puedan confiar en que el contrato nombrado se comporta como se espera
+
+## Riesgos {#risks}
+
+La nomenclatura de los contratos inteligentes ofrece importantes ventajas a los usuarios de Ethereum; sin embargo, los propietarios de los dominios ENS deben estar atentos a su gestión. Entre los riesgos más notables se incluyen:
+
+- **Vencimiento**: Al igual que los nombres DNS, los registros de nombres ENS tienen una duración finita. Por lo tanto, es vital que los propietarios supervisen las fechas de vencimiento de sus dominios y los renueven con suficiente antelación. Tanto la Aplicación ENS como Enscribe proporcionan indicadores visuales para los propietarios de dominios cuando se acerca el vencimiento.
+- **Cambio de propiedad**: Los registros de ENS se representan como NFT en Ethereum, donde el propietario de un dominio `.eth` específico tiene el NFT asociado en su poder. Por lo tanto, si una cuenta diferente toma posesión de este NFT, el nuevo propietario puede modificar cualquier registro ENS como considere oportuno.
+
+Para mitigar dichos riesgos, la cuenta del propietario de los dominios de segundo nivel (2LD) `.eth` debe estar asegurada a través de una billetera multifirma, creándose subdominios para gestionar la nomenclatura de los contratos. De este modo, en caso de que se produzcan cambios accidentales o maliciosos en la propiedad a nivel de subdominio, el propietario del 2LD puede anularlos.
+
+## Futuro de la nomenclatura de contratos {#future}
+
+La nomenclatura de contratos se está convirtiendo en una buena práctica para el desarrollo de dapps, de forma similar a como los nombres de dominio sustituyeron a las direcciones IP en la web. A medida que más infraestructuras, como billeteras, exploradores y paneles de control, integren la resolución de ENS para los contratos, los contratos con nombre mejorarán la seguridad y reducirán los errores en todo el ecosistema.
+
+Al hacer que los contratos inteligentes sean más fáciles de reconocer y razonar, la nomenclatura ayuda a cerrar la brecha entre los usuarios y las aplicaciones en Ethereum, mejorando tanto la seguridad como la UX para los usuarios.
+
+## Lecturas adicionales {#further-reading}
+
+- [Nomenclatura de contratos inteligentes con ENS](https://docs.ens.domains/web/naming-contracts/)
+- [Nomenclatura de contratos inteligentes con Enscribe](https://www.enscribe.xyz/docs).
From 4875f5853e6ad727feaad12531301461d41c6ce3 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:54:01 -0300
Subject: [PATCH 304/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/poa/index.md
---
.../es/developers/docs/consensus-mechanisms/poa/index.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/poa/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/poa/index.md
index 28ceb276524..700969ef563 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/poa/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/poa/index.md
@@ -50,7 +50,7 @@ Si, por ejemplo, hubiera 10 firmantes autorizados y cada firmante puede crear 1
## Ventajas y desventajas {#pros-and-cons}
-| Ventajas | Desventajas |
+| Pros | Contras |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Más escalable que otros mecanismos populares, tales como PoS y PoW, dado que está basado en un cantidad limitada de firmantes de bloque. | Las redes de PoA suelen tener una cantidad relativamente pequeña de nodos validadores. Esto hace que las redes PoA sean más centralizadas. |
| Las cadenas de bloques de PoA son muy baratas de ejecutar y mantener. | Volverse un firmante autorizado suele estár estar fuera del alcance de una persona común y corriente, dado que las cadenas de bloques requieren entidades con reputación establecida. |
@@ -67,7 +67,7 @@ Si, por ejemplo, hubiera 10 firmantes autorizados y cada firmante puede crear 1
- [PoA obsoleta, especificación Aura](https://openethereum.github.io/Chain-specification)
- [IBFT 2.0, otro tipo de implementación de PoA](https://besu.hyperledger.org/private-networks/concepts/poa)
-### ¿Es más bien de los que aprende viendo? {#visual-learner}
+### ¿Retiene usted mejor las cosas cuando las ve? {#visual-learner}
Vea una explicación visual de la prueba de autoridad:
@@ -77,3 +77,4 @@ Vea una explicación visual de la prueba de autoridad:
- [Prueba de trabajo](/developers/docs/consensus-mechanisms/pow/)
- [Prueba de participación](/developers/docs/consensus-mechanisms/pos/)
+
From 2b1ada70437437eb22fa2ca4ab7725cb7ea9d350 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:54:03 -0300
Subject: [PATCH 305/589] update(i18n):
public/content/translations/es/developers/tutorials/secret-state/index.md
---
.../tutorials/secret-state/index.md | 741 ++++++++++++++++++
1 file changed, 741 insertions(+)
create mode 100644 public/content/translations/es/developers/tutorials/secret-state/index.md
diff --git a/public/content/translations/es/developers/tutorials/secret-state/index.md b/public/content/translations/es/developers/tutorials/secret-state/index.md
new file mode 100644
index 00000000000..d3b091c2448
--- /dev/null
+++ b/public/content/translations/es/developers/tutorials/secret-state/index.md
@@ -0,0 +1,741 @@
+---
+title: Uso de conocimiento cero para un estado secreto
+description: Los juegos en cadena son limitados porque no pueden mantener ninguna información oculta. Después de leer este tutorial, el lector podrá combinar pruebas de conocimiento cero y componentes del servidor para crear juegos verificables con un estado secreto, un componente fuera de cadena. La técnica para hacer esto se demostrará creando un juego de buscaminas.
+author: Ori Pomerantz
+tags:
+ [
+ "servidor",
+ "fuera de la cadena",
+ "centralizado",
+ "conocimiento-cero",
+ "zokrates",
+ "mud"
+ ]
+skill: advanced
+lang: es
+published: 15-03-2025
+---
+
+_No hay secretos en la cadena de bloques_. Todo lo que se publica en la cadena de bloques está abierto a la lectura para todo el mundo. Esto es necesario, porque la cadena de bloques se basa en que cualquiera pueda verificarla. Sin embargo, los juegos a menudo dependen de un estado secreto. Por ejemplo, el juego de [buscaminas](https://en.wikipedia.org/wiki/Minesweeper_\(video_game\)) no tiene absolutamente ningún sentido si se puede simplemente ir a un explorador de la cadena de bloques y ver el mapa.
+
+La solución más sencilla es utilizar un [componente de servidor](/developers/tutorials/server-components/) para mantener el estado secreto. Sin embargo, la razón por la que usamos la cadena de bloques es para evitar trampas por parte del desarrollador del juego. Tenemos que garantizar la honestidad del componente del servidor. El servidor puede proporcionar un hash del estado y utilizar [pruebas de conocimiento cero](/zero-knowledge-proofs/#why-zero-knowledge-proofs-are-important) para demostrar que el estado utilizado para calcular el resultado de un movimiento es el correcto.
+
+Después de leer este artículo, usted sabrá cómo crear este tipo de servidor que contiene el estado secreto, un cliente para mostrar el estado y un componente en cadena para la comunicación entre ambos. Las herramientas principales que usaremos serán:
+
+| Herramienta | Propósito | Verificado en la versión |
+| --------------------------------------------- | -------------------------------------------------------------------- | --------------------------------------: |
+| [Zokrates](https://zokrates.github.io/) | Pruebas de conocimiento cero y su verificación | 1.1.9 |
+| [Typescript](https://www.typescriptlang.org/) | Lenguaje de programación tanto para el servidor como para el cliente | 5.4.2 |
+| [Node](https://nodejs.org/en) | Ejecución del servidor | 20.18.2 |
+| [Viem](https://viem.sh/) | Comunicación con la cadena de bloques | 2.9.20 |
+| [MUD](https://mud.dev/) | Gestión de datos en cadena | 2.0.12 |
+| [React](https://react.dev/) | Interfaz de usuario del cliente | 18.2.0 |
+| [Vite](https://vitejs.dev/) | Servir el código del cliente | 4.2.1 |
+
+## Ejemplo de buscaminas {#minesweeper}
+
+[Buscaminas](https://en.wikipedia.org/wiki/Minesweeper_\(video_game\)) es un juego que incluye un mapa secreto con un campo minado. El jugador elige cavar en una ubicación específica. Si esa ubicación tiene una mina, se acaba el juego. De lo contrario, el jugador obtiene el número de minas en las ocho casillas que rodean esa ubicación.
+
+Esta aplicación está escrita usando [MUD](https://mud.dev/), un marco de trabajo que nos permite almacenar datos en cadena usando una [base de datos de clave-valor](https://aws.amazon.com/nosql/key-value/) y sincronizar esos datos automáticamente con componentes fuera de cadena. Además de la sincronización, MUD facilita el control de acceso y que otros usuarios [extiendan](https://mud.dev/guides/extending-a-world) nuestra aplicación sin necesidad de permisos.
+
+### Ejecutar el ejemplo de buscaminas {#running-minesweeper-example}
+
+Para ejecutar el ejemplo de buscaminas:
+
+1. Asegúrese de [tener instalados los requisitos previos](https://mud.dev/quickstart#prerequisites): [Node](https://mud.dev/quickstart#prerequisites), [Foundry](https://book.getfoundry.sh/getting-started/installation), [`git`](https://git-scm.com/downloads), [`pnpm`](https://git-scm.com/downloads) y [`mprocs`](https://github.com/pvolok/mprocs).
+
+2. Clone el repositorio.
+
+ ```sh copy
+ git clone https://github.com/qbzzt/20240901-secret-state.git
+ ```
+
+3. Instale los paquetes.
+
+ ```sh copy
+ cd 20240901-secret-state/
+ pnpm install
+ npm install -g mprocs
+ ```
+
+ Si Foundry se instaló como parte de `pnpm install`, necesita reiniciar el shell de la línea de comandos.
+
+4. Compile los contratos
+
+ ```sh copy
+ cd packages/contracts
+ forge build
+ cd ../..
+ ```
+
+5. Inicie el programa (incluida una cadena de bloques de [anvil](https://book.getfoundry.sh/anvil/)) y espere.
+
+ ```sh copy
+ mprocs
+ ```
+
+ Tenga en cuenta que el inicio tarda mucho tiempo. Para ver el progreso, primero use la flecha hacia abajo para desplazarse a la pestaña _contracts_ para ver los contratos MUD que se están desplegando. Cuando reciba el mensaje _Waiting for file changes…_ (Esperando cambios en el archivo), los contratos se desplegarán y el progreso posterior se producirá en la pestaña _server_. Allí, espere hasta que reciba el mensaje _Verifier address: 0x...._ (Dirección del verificador: 0x...).
+
+ Si este paso se realiza correctamente, verá la pantalla de `mprocs`, con los diferentes procesos a la izquierda y la salida de la consola para el proceso actualmente seleccionado a la derecha.
+
+ 
+
+ Si hay un problema con `mprocs`, puede ejecutar los cuatro procesos manualmente, cada uno en su propia ventana de línea de comandos:
+
+ - **Anvil**
+
+ ```sh
+ cd packages/contracts
+ anvil --base-fee 0 --block-time 2
+ ```
+
+ - **Contratos**
+
+ ```sh
+ cd packages/contracts
+ pnpm mud dev-contracts --rpc http://127.0.0.1:8545
+ ```
+
+ - **Servidor**
+
+ ```sh
+ cd packages/server
+ pnpm start
+ ```
+
+ - **Cliente**
+
+ ```sh
+ cd packages/client
+ pnpm run dev
+ ```
+
+6. Ahora puede navegar al [cliente](http://localhost:3000), hacer clic en **New Game** (Nuevo juego) y comenzar a jugar.
+
+### Tablas {#tables}
+
+Necesitamos [varias tablas](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/mud.config.ts) en cadena.
+
+- `Configuration`: esta tabla es un singleton, no tiene clave y tiene un único registro. Se utiliza para contener información de configuración del juego:
+ - `height`: la altura de un campo de minas
+ - `width`: el ancho de un campo de minas
+ - `numberOfBombs`: el número de bombas en cada campo de minas
+
+- `VerifierAddress`: esta tabla también es un singleton. Se utiliza para contener una parte de la configuración, la dirección del contrato del verificador (`verifier`). Podríamos haber puesto esta información en la tabla `Configuration`, pero es establecida por un componente diferente, el servidor, por lo que es más fácil ponerla en una tabla separada.
+
+- `PlayerGame`: la clave es la dirección del jugador. Los datos son:
+
+ - `gameId`: valor de 32 bytes que es el hash del mapa en el que el jugador está jugando (el identificador del juego).
+ - `win`: un booleano que indica si el jugador ganó el juego.
+ - `lose`: un booleano que indica si el jugador perdió el juego.
+ - `digNumber`: el número de excavaciones exitosas en el juego.
+
+- `GamePlayer`: esta tabla contiene el mapeo inverso, desde `gameId` a la dirección del jugador.
+
+- `Map`: la clave es una tupla de tres valores:
+
+ - `gameId`: valor de 32 bytes que es el hash del mapa en el que el jugador está jugando (el identificador del juego).
+ - coordenada `x`
+ - coordenada `y`
+
+ El valor es un único número. Es 255 si se detectó una bomba. De lo contrario, es el número de bombas alrededor de esa ubicación más uno. No podemos usar solo el número de bombas, porque por defecto todo el almacenamiento en la EVM y todos los valores de las filas en MUD son cero. Necesitamos distinguir entre "el jugador aún no ha cavado aquí" y "el jugador cavó aquí y descubrió que no hay bombas alrededor".
+
+Además, la comunicación entre el cliente y el servidor se produce a través del componente en cadena. Esto también se implementa usando tablas.
+
+- `PendingGame`: solicitudes no atendidas para iniciar un nuevo juego.
+- `PendingDig`: solicitudes no atendidas para cavar en un lugar específico en un juego específico. Esta es una [tabla fuera de cadena](https://mud.dev/store/tables#types-of-tables), lo que significa que no se escribe en el almacenamiento de la EVM, solo se puede leer fuera de la cadena usando eventos.
+
+### Ejecución y flujos de datos {#execution-data-flows}
+
+Estos flujos coordinan la ejecución between el cliente, el componente en cadena y el servidor.
+
+#### Inicialización {#initialization-flow}
+
+Cuando ejecuta `mprocs`, ocurren estos pasos:
+
+1. [`mprocs`](https://github.com/pvolok/mprocs) ejecuta cuatro componentes:
+
+ - [Anvil](https://book.getfoundry.sh/anvil/), que ejecuta una cadena de bloques local
+ - [Contratos](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/contracts), que compila (si es necesario) y despliega los contratos para MUD
+ - [Cliente](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/client), que ejecuta [Vite](https://vitejs.dev/) para servir la interfaz de usuario y el código del cliente a los navegadores web.
+ - [Servidor](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/server), que realiza las acciones del servidor
+
+2. El paquete `contracts` despliega los contratos de MUD y luego ejecuta [el script `PostDeploy.s.sol`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/script/PostDeploy.s.sol). Este script establece la configuración. El código de github especifica [un campo minado de 10x5 con ocho minas en él](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/script/PostDeploy.s.sol#L23).
+
+3. [El servidor](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts) comienza [configurando MUD](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L6). Entre otras cosas, esto activa la sincronización de datos, de modo que exista una copia de las tablas relevantes en la memoria del servidor.
+
+4. El servidor suscribe una función para que se ejecute [cuando cambie la tabla `Configuration`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L23). [Esta función](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L24-L168) se llama después de que `PostDeploy.s.sol` se ejecute y modifique la tabla.
+
+5. Cuando la función de inicialización del servidor tiene la configuración, [llama a `zkFunctions`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L34-L35) para inicializar [la parte de conocimiento cero del servidor](#using-zokrates-from-typescript). Esto no puede suceder hasta que obtengamos la configuración porque las funciones de conocimiento cero deben tener el ancho y el alto del campo minado como constantes.
+
+6. Una vez que se inicializa la parte de conocimiento cero del servidor, el siguiente paso es [desplegar el contrato de verificación de conocimiento cero en la cadena de bloques](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L42-L53) y establecer la dirección del verificador en MUD.
+
+7. Finalmente, nos suscribimos a las actualizaciones para que veamos cuándo un jugador solicita [iniciar un nuevo juego](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L55-L71) o [cavar en un juego existente](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L73-L108).
+
+#### Nuevo juego {#new-game-flow}
+
+Esto es lo que sucede cuando el jugador solicita un nuevo juego.
+
+1. Si no hay ningún juego en curso para este jugador, o hay uno pero con un gameId de cero, el cliente muestra un [botón de nuevo juego](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175). Cuando el usuario presiona este botón, [React ejecuta la función `newGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L96).
+
+2. [`newGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/mud/createSystemCalls.ts#L43-L46) es una llamada de `System`. En MUD, todas las llamadas se enrutan a través del contrato `World` y, en la mayoría de los casos, se llama a `__`. En este caso, la llamada es a `app__newGame`, que MUD luego enruta a [`newGame` en `GameSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L16-L22).
+
+3. La función en cadena comprueba que el jugador no tiene un juego en curso y, si no lo hay, [agrega la solicitud a la tabla `PendingGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L21).
+
+4. El servidor detecta el cambio en `PendingGame` y [ejecuta la función suscrita](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L55-L71). Esta función llama a [`newGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L110-L114), que a su vez llama a [`createGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L116-L144).
+
+5. Lo primero que hace `createGame` es [crear un mapa aleatorio con el número adecuado de minas](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L120-L135). Luego, llama a [`makeMapBorders`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L147-L166) para crear un mapa con bordes en blanco, que es necesario para Zokrates. Finalmente, `createGame` llama a [`calculateMapHash`](#calculateMapHash), para obtener el hash del mapa, que se utiliza como ID del juego.
+
+6. La función `newGame` agrega el nuevo juego a `gamesInProgress`.
+
+7. Lo último que hace el servidor es llamar a [`app__newGameResponse`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L38-L43), que está en cadena. Esta función está en un `System` diferente, [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol), para permitir el control de acceso. El control de acceso se define en el [archivo de configuración de MUD](https://mud.dev/config), [`mud.config.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/mud.config.ts#L67-L72).
+
+ La lista de acceso solo permite que una única dirección llame al `System`. Esto restringe el acceso a las funciones del servidor a una única dirección, por lo que nadie puede suplantar al servidor.
+
+8. El componente en cadena actualiza las tablas pertinentes:
+
+ - Crea el juego en `PlayerGame`.
+ - Establezca el mapeo inverso en `GamePlayer`.
+ - Elimine la solicitud de `PendingGame`.
+
+9. El servidor identifica el cambio en `PendingGame`, pero no hace nada porque [`wantsGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L58-L60) es falso.
+
+10. En el cliente, [`gameRecord`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L143-L148) se establece en la entrada `PlayerGame` para la dirección del jugador. Cuando `PlayerGame` cambia, `gameRecord` también cambia.
+
+11. Si hay un valor en `gameRecord` y el juego no se ha ganado ni perdido, el cliente [muestra el mapa](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175-L190).
+
+#### Cavar {#dig-flow}
+
+1. El jugador [hace clic en el botón de la celda del mapa](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L188), lo que llama a [la función `dig`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/mud/createSystemCalls.ts#L33-L36). Esta función llama a [`dig` en cadena](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L24-L32).
+
+2. El componente en cadena [realiza una serie de comprobaciones de cordura](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L25-L30) y, si tiene éxito, agrega la solicitud de excavación a [`PendingDig`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L31).
+
+3. El servidor [detecta el cambio en `PendingDig`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L73). [Si es válido](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L75-L84), [llama al código de conocimiento cero](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L86-L95) (explicado a continuación) para generar tanto el resultado como una prueba de que es válido.
+
+4. [El servidor](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L97-L107) llama a [`digResponse`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L45-L64) en cadena.
+
+5. `digResponse` hace dos cosas. En primer lugar, comprueba [la prueba de conocimiento cero](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L47-L61). Luego, si la prueba es correcta, llama a [`processDigResult`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L67-L86) para procesar realmente el resultado.
+
+6. `processDigResult` comprueba si el juego se ha [perdido](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L76-L78) o [ganado](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L83-L86), y [actualiza `Map`, el mapa en cadena](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L80).
+
+7. El cliente recoge las actualizaciones automáticamente y [actualiza el mapa que se muestra al jugador](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175-L190), y si procede, le dice al jugador si ha ganado o perdido.
+
+## Uso de Zokrates {#using-zokrates}
+
+En los flujos explicados anteriormente, omitimos las partes de conocimiento cero, tratándolas como una caja negra. Ahora abrámosla y veamos cómo está escrito ese código.
+
+### Aplicar hash al mapa {#hashing-map}
+
+Podemos usar [este código JavaScript](https://github.com/ZK-Plus/ICBC24_Tutorial_Compute-Offchain-Verify-onchain/tree/solutions/exercise) para implementar [Poseidon](https://www.poseidon-hash.info), la función hash de Zokrates que usamos. Sin embargo, si bien esto sería más rápido, también sería más complicado que simplemente usar la función hash de Zokrates para hacerlo. Este es un tutorial, por lo que el código está optimizado para la simplicidad, no para el rendimiento. Por lo tanto, necesitamos dos programas Zokrates diferentes, uno para simplemente calcular el hash de un mapa (`hash`) y otro para crear realmente una prueba de conocimiento cero del resultado de la excavación en una ubicación en el mapa (`dig`).
+
+### La función hash {#hash-function}
+
+Esta es la función que calcula el hash de un mapa. Repasaremos este código línea por línea.
+
+```
+import "hashes/poseidon/poseidon.zok" as poseidon;
+import "utils/pack/bool/pack128.zok" as pack128;
+```
+
+Estas dos líneas importan dos funciones de la [biblioteca estándar de Zokrates](https://zokrates.github.io/toolbox/stdlib.html). [La primera función](https://github.com/Zokrates/ZoKrates/blob/latest/zokrates_stdlib/stdlib/hashes/poseidon/poseidon.zok) es un [hash Poseidon](https://www.poseidon-hash.info/). Toma una matriz de [`elementos de campo`](https://zokrates.github.io/language/types.html#field) y devuelve un `campo`.
+
+El elemento de campo en Zokrates suele tener menos de 256 bits, pero no por mucho. Para simplificar el código, restringimos el mapa a un máximo de 512 bits y aplicamos un hash a una matriz de cuatro campos, y en cada campo usamos solo 128 bits. La [función `pack128`](https://github.com/Zokrates/ZoKrates/blob/latest/zokrates_stdlib/stdlib/utils/pack/bool/pack128.zok) convierte una matriz de 128 bits en un `campo` para este propósito.
+
+```
+ def hashMap(bool[${width+2}][${height+2}] map) -> field {
+```
+
+Esta línea inicia una definición de función. `hashMap` obtiene un único parámetro llamado `map`, una matriz `bool`(eana) bidimensional. El tamaño del mapa es `width+2` por `height+2` por razones que se [explican a continuación](#why-map-border).
+
+Podemos usar `${width+2}` y `${height+2}` porque los programas de Zokrates se almacenan en esta aplicación como [cadenas de plantilla](https://www.w3schools.com/js/js_string_templates.asp). El código entre `${` y `}` es evaluado por JavaScript, y de esta manera el programa puede ser utilizado para diferentes tamaños de mapa. El parámetro del mapa tiene un borde de una ubicación de ancho a su alrededor sin ninguna bomba, que es la razón por la que necesitamos agregar dos al ancho y al alto.
+
+El valor de retorno es un `campo` que contiene el hash.
+
+```
+ bool[512] mut map1d = [false; 512];
+```
+
+El mapa es bidimensional. Sin embargo, la función `pack128` no funciona con matrices bidimensionales. Así que primero aplanamos el mapa en una matriz de 512 bytes, usando `map1d`. Por defecto, las variables de Zokrates son constantes, pero necesitamos asignar valores a esta matriz en un bucle, así que la definimos como [`mut`](https://zokrates.github.io/language/variables.html#mutability).
+
+Necesitamos inicializar la matriz porque Zokrates no tiene `undefined`. La expresión `[false; 512]` significa [una matriz de 512 valores `false`](https://zokrates.github.io/language/types.html#declaration-and-initialization).
+
+```
+ u32 mut counter = 0;
+```
+
+También necesitamos un contador para distinguir entre los bits que ya hemos rellenado en `map1d` y los que no.
+
+```
+ for u32 x in 0..${width+2} {
+```
+
+Así es como se declara un [bucle `for`](https://zokrates.github.io/language/control_flow.html#for-loops) en Zokrates. Un bucle `for` de Zokrates tiene que tener límites fijos, porque aunque parece un bucle, el compilador en realidad lo "desenrolla". La expresión `${width+2}` es una constante de tiempo de compilación porque `width` es establecida por el código TypeScript antes de que llame al compilador.
+
+```
+ for u32 y in 0..${height+2} {
+ map1d[counter] = map[x][y];
+ counter = counter+1;
+ }
+ }
+```
+
+Para cada ubicación en el mapa, ponga ese valor en la matriz `map1d` e incremente el contador.
+
+```
+ field[4] hashMe = [
+ pack128(map1d[0..128]),
+ pack128(map1d[128..256]),
+ pack128(map1d[256..384]),
+ pack128(map1d[384..512])
+ ];
+```
+
+El `pack128` para crear una matriz de cuatro valores de `campo` a partir de `map1d`. En Zokrates, `array[a..b]` significa el segmento de la matriz que comienza en `a` y termina en `b-1`.
+
+```
+ return poseidon(hashMe);
+}
+```
+
+Use `poseidon` para convertir esta matriz en un hash.
+
+### El programa hash {#hash-program}
+
+El servidor necesita llamar a `hashMap` directamente para crear identificadores de juego. Sin embargo, Zokrates solo puede llamar a la función `main` en un programa para iniciar, por lo que creamos un programa con un `main` que llama a la función hash.
+
+```
+${hashFragment}
+
+def main(bool[${width+2}][${height+2}] map) -> field {
+ return hashMap(map);
+}
+```
+
+### El programa de excavación {#dig-program}
+
+Este es el corazón de la parte de conocimiento cero de la aplicación, donde producimos las pruebas que se utilizan para verificar los resultados de la excavación.
+
+```
+${hashFragment}
+
+// El número de minas en la ubicación (x,y)
+def map2mineCount(bool[${width+2}][${height+2}] map, u32 x, u32 y) -> u8 {
+ return if map[x+1][y+1] { 1 } else { 0 };
+}
+```
+
+#### Por qué el borde del mapa {#why-map-border}
+
+Las pruebas de conocimiento cero usan [circuitos aritméticos](https://medium.com/web3studio/simple-explanations-of-arithmetic-circuits-and-zero-knowledge-proofs-806e59a79785), que no tienen un equivalente fácil a una declaración `if`. En su lugar, utilizan el equivalente del [operador condicional](https://en.wikipedia.org/wiki/Ternary_conditional_operator). Si `a` puede ser cero o uno, puede calcular `if a { b } else { c }` como `ab+(1-a)c`.
+
+Debido a esto, una declaración `if` de Zokrates siempre evalúa ambas ramas. Por ejemplo, si tiene este código:
+
+```
+bool[5] arr = [false; 5];
+u32 index=10;
+return if index>4 { 0 } else { arr[index] }
+```
+
+Se producirá un error, porque necesita calcular `arr[10]`, aunque ese valor se multiplicará más tarde por cero.
+
+Esta es la razón por la que necesitamos un borde de una ubicación de ancho alrededor de todo el mapa. Necesitamos calcular el número total de minas alrededor de una ubicación, y eso significa que necesitamos ver la ubicación una fila arriba y abajo, a la izquierda y a la derecha, de la ubicación donde estamos cavando. Lo que significa que esas ubicaciones tienen que existir en la matriz del mapa que se proporciona a Zokrates.
+
+```
+def main(private bool[${width+2}][${height+2}] map, u32 x, u32 y) -> (field, u8) {
+```
+
+Por defecto, las pruebas de Zokrates incluyen sus entradas. No sirve de nada saber que hay cinco minas alrededor de un lugar a menos que realmente sepa de qué lugar se trata (y no puede simplemente hacerlo coincidir con su solicitud, porque entonces el probador podría usar valores diferentes y no decírselo). Sin embargo, necesitamos mantener el mapa en secreto, mientras se lo proporcionamos a Zokrates. La solución es usar un parámetro `private` (privado), uno que _no_ se revela por la prueba.
+
+Esto abre otra vía para el abuso. El probador podría usar las coordenadas correctas, pero crear un mapa con cualquier número de minas alrededor de la ubicación y posiblemente en la ubicación misma. Para evitar este abuso, hacemos que la prueba de conocimiento cero incluya el hash del mapa, que es el identificador del juego.
+
+```
+ return (hashMap(map),
+```
+
+El valor de retorno aquí es una tupla que incluye la matriz de hash del mapa, así como el resultado de la excavación.
+
+```
+ if map2mineCount(map, x, y) > 0 { 0xFF } else {
+```
+
+Usamos 255 como un valor especial en caso de que la ubicación misma tenga una bomba.
+
+```
+ map2mineCount(map, x-1, y-1) + map2mineCount(map, x, y-1) + map2mineCount(map, x+1, y-1) +
+ map2mineCount(map, x-1, y) + map2mineCount(map, x+1, y) +
+ map2mineCount(map, x-1, y+1) + map2mineCount(map, x, y+1) + map2mineCount(map, x+1, y+1)
+ }
+ );
+}
+```
+
+Si el jugador no ha encontrado una mina, sume los recuentos de minas del área alrededor de la ubicación y devuelva eso.
+
+### Uso de Zokrates desde TypeScript {#using-zokrates-from-typescript}
+
+Zokrates tiene una interfaz de línea de comandos, pero en este programa lo usamos en el [código TypeScript](https://zokrates.github.io/toolbox/zokrates_js.html).
+
+La biblioteca que contiene las definiciones de Zokrates se llama [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts).
+
+```typescript
+import { initialize as zokratesInitialize } from "zokrates-js"
+```
+
+Importe los [enlaces JavaScript de Zokrates](https://zokrates.github.io/toolbox/zokrates_js.html). Solo necesitamos la función [`initialize`](https://zokrates.github.io/toolbox/zokrates_js.html#initialize) porque devuelve una promesa que se resuelve con todas las definiciones de Zokrates.
+
+```typescript
+export const zkFunctions = async (width: number, height: number) : Promise => {
+```
+
+Al igual que el propio Zokrates, también exportamos una sola función, que también es [asíncrona](https://www.w3schools.com/js/js_async.asp). Cuando finalmente regresa, proporciona varias funciones como veremos a continuación.
+
+```typescript
+const zokrates = await zokratesInitialize()
+```
+
+Inicialice Zokrates, obtenga todo lo que necesita de la biblioteca.
+
+```typescript
+const hashFragment = `
+ import "utils/pack/bool/pack128.zok" as pack128;
+ import "hashes/poseidon/poseidon.zok" as poseidon;
+ .
+ .
+ .
+ }
+ `
+
+const hashProgram = `
+ ${hashFragment}
+ .
+ .
+ .
+ `
+
+const digProgram = `
+ ${hashFragment}
+ .
+ .
+ .
+ `
+```
+
+A continuación tenemos la función hash y dos programas de Zokrates que vimos anteriormente.
+
+```typescript
+const digCompiled = zokrates.compile(digProgram)
+const hashCompiled = zokrates.compile(hashProgram)
+```
+
+Aquí compilamos esos programas.
+
+```typescript
+// Cree las claves para la verificación de conocimiento cero.
+// En un sistema de producción, querrá utilizar una ceremonia de configuración.
+// (https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony).
+const keySetupResults = zokrates.setup(digCompiled.program, "")
+const verifierKey = keySetupResults.vk
+const proverKey = keySetupResults.pk
+```
+
+En un sistema de producción, podríamos usar una [ceremonia de configuración](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony) más complicada, pero esto es suficiente para una demostración. No es un problema que los usuarios puedan conocer la clave del probador, ya que aun así no pueden usarla para probar cosas a menos que sean ciertas. Como especificamos la entropía (el segundo parámetro, `""`), los resultados siempre serán los mismos.
+
+**Nota:** la compilación de programas de Zokrates y la creación de claves son procesos lentos. No es necesario repetirlos cada vez, solo cuando cambia el tamaño del mapa. En un sistema de producción, los haría una vez y luego almacenaría el resultado. La única razón por la que no lo hago aquí es por simplicidad.
+
+#### `calculateMapHash` {#calculateMapHash}
+
+```typescript
+const calculateMapHash = function (hashMe: boolean[][]): string {
+ return (
+ "0x" +
+ BigInt(zokrates.computeWitness(hashCompiled, [hashMe]).output.slice(1, -1))
+ .toString(16)
+ .padStart(64, "0")
+ )
+}
+```
+
+La función [`computeWitness`](https://zokrates.github.io/toolbox/zokrates_js.html#computewitnessartifacts-args-options) realmente ejecuta el programa de Zokrates. Devuelve una estructura con dos campos: `output`, que es la salida del programa como una cadena JSON, y `witness`, que es la información necesaria para crear la prueba de conocimiento cero del resultado. Aquí solo necesitamos la salida.
+
+La salida es una cadena de la forma `"31337"`, un número decimal entre comillas. Pero la salida que necesitamos para `viem` es un número hexadecimal de la forma `0x60A7`. Así que usamos `.slice(1,-1)` para eliminar las comillas y luego `BigInt` para convertir la cadena restante, que es un número decimal, a un [`BigInt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt). `.toString(16)` convierte este `BigInt` en una cadena hexadecimal, y `"0x"+` agrega el marcador para números hexadecimales.
+
+```typescript
+// Cava y devuelve una prueba de conocimiento cero del resultado
+// (código del lado del servidor)
+```
+
+La prueba de conocimiento cero incluye las entradas públicas (`x` e `y`) y los resultados (hash del mapa y número de bombas).
+
+```typescript
+ const zkDig = function(map: boolean[][], x: number, y: number) : any {
+ if (x<0 || x>=width || y<0 || y>=height)
+ throw new Error("Intentando cavar fuera del mapa")
+```
+
+Es un problema comprobar si un índice está fuera de los límites en Zokrates, así que lo hacemos aquí.
+
+```typescript
+const runResults = zokrates.computeWitness(digCompiled, [map, `${x}`, `${y}`])
+```
+
+Ejecute el programa de excavación.
+
+```typescript
+ const proof = zokrates.generateProof(
+ digCompiled.program,
+ runResults.witness,
+ proverKey)
+
+ return proof
+ }
+```
+
+Use [`generateProof`](https://zokrates.github.io/toolbox/zokrates_js.html#generateproofprogram-witness-provingkey-entropy) y devuelva la prueba.
+
+```typescript
+const solidityVerifier = `
+ // Tamaño del mapa: ${width} x ${height}
+ \n${zokrates.exportSolidityVerifier(verifierKey)}
+ `
+```
+
+Un verificador de Solidity, un contrato inteligente que podemos desplegar en la cadena de bloques y usar para verificar las pruebas generadas por `digCompiled.program`.
+
+```typescript
+ return {
+ zkDig,
+ calculateMapHash,
+ solidityVerifier,
+ }
+}
+```
+
+Finalmente, devuelve todo lo que otro código pueda necesitar.
+
+## Pruebas de seguridad {#security-tests}
+
+Las pruebas de seguridad son importantes porque un error de funcionalidad eventualmente se revelará. Pero si la aplicación es insegura, es probable que eso permanezca oculto durante mucho tiempo antes de que lo revele alguien que haga trampas y se apropie de recursos que pertenecen a otros.
+
+### Permisos {#permissions}
+
+Hay una entidad privilegiada en este juego, el servidor. Es el único usuario autorizado a llamar a las funciones en [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol). Podemos usar [`cast`](https://book.getfoundry.sh/cast/) para verificar que las llamadas a funciones con permisos solo se permiten como la cuenta del servidor.
+
+[La clave privada del servidor está en `setupNetwork.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/mud/setupNetwork.ts#L52).
+
+1. En la computadora que ejecuta `anvil` (la cadena de bloques), establezca estas variables de entorno.
+
+ ```sh copy
+ WORLD_ADDRESS=0x8d8b6b8414e1e3dcfd4168561b9be6bd3bf6ec4b
+ UNAUTHORIZED_KEY=0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a
+ AUTHORIZED_KEY=0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d
+ ```
+
+2. Use `cast` para intentar establecer la dirección del verificador como una dirección no autorizada.
+
+ ```sh copy
+ cast send $WORLD_ADDRESS 'app__setVerifier(address)' `cast address-zero` --private-key $UNAUTHORIZED_KEY
+ ```
+
+ No solo `cast` informa de un fallo, sino que puede abrir **MUD Dev Tools** (Herramientas de desarrollo de MUD) en el juego en el navegador, hacer clic en **Tables** (Tablas) y seleccionar **app\_\_VerifierAddress**. Vea que la dirección no es cero.
+
+3. Establezca la dirección del verificador como la dirección del servidor.
+
+ ```sh copy
+ cast send $WORLD_ADDRESS 'app__setVerifier(address)' `cast address-zero` --private-key $AUTHORIZED_KEY
+ ```
+
+ La dirección en **app\_\_VerifiedAddress** debería ser ahora cero.
+
+Todas las funciones de MUD en el mismo `System` pasan por el mismo control de acceso, por lo que considero que esta prueba es suficiente. Si no lo cree, puede comprobar las otras funciones en [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol).
+
+### Abusos de conocimiento cero {#zero-knowledge-abuses}
+
+Las matemáticas para verificar Zokrates están fuera del alcance de este tutorial (y de mis habilidades). Sin embargo, podemos ejecutar varias comprobaciones en el código de conocimiento cero para verificar que, si no se hace correctamente, falla. Todas estas pruebas requerirán que cambiemos [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts) y reiniciemos toda la aplicación. No es suficiente reiniciar el proceso del servidor, porque pone la aplicación en un estado imposible (el jugador tiene un juego en curso, pero el juego ya no está disponible para el servidor).
+
+#### Respuesta incorrecta {#wrong-answer}
+
+La posibilidad más simple es proporcionar la respuesta incorrecta en la prueba de conocimiento cero. Para ello, entramos en `zkDig` y [modificamos la línea 91](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L91):
+
+```ts
+proof.inputs[3] = "0x" + "1".padStart(64, "0")
+```
+
+Esto significa que siempre afirmaremos que hay una bomba, independientemente de la respuesta correcta. Intente jugar con esta versión y verá en la pestaña **servidor** de la pantalla `pnpm dev` este error:
+
+```
+ cause: {
+ code: 3,
+ message: 'execution reverted: revert: Fallo de la verificación de conocimiento cero',
+ data: '0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000
+000000000000000000000000000000000000000000000000205a65726f206b6e6f776c6564676520766572696669636174696f6
+e206661696c'
+ },
+```
+
+Así que este tipo de trampa falla.
+
+#### Prueba incorrecta {#wrong-proof}
+
+¿Qué sucede si proporcionamos la información correcta, pero simplemente tenemos los datos de prueba incorrectos? Ahora, reemplace la línea 91 por:
+
+```ts
+proof.proof = {
+ a: ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")],
+ b: [
+ ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")],
+ ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")],
+ ],
+ c: ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")],
+}
+```
+
+Todavía falla, pero ahora falla sin razón porque ocurre durante la llamada al verificador.
+
+### ¿Cómo puede un usuario verificar el código de confianza cero? {#user-verify-zero-trust}
+
+Los contratos inteligentes son relativamente fáciles de verificar. Normalmente, el desarrollador publica el código fuente en un explorador de bloques, y el explorador de bloques verifica que el código fuente se compila en el código de la [transacción de despliegue del contrato](/developers/docs/smart-contracts/deploying/). En el caso de los `System` de MUD, esto es [ligeramente más complicado](https://mud.dev/cli/verify), pero no mucho.
+
+Esto es más difícil con el conocimiento cero. El verificador incluye algunas constantes y ejecuta algunos cálculos sobre ellas. Esto no le dice qué se está probando.
+
+```solidity
+ function verifyingKey() pure internal returns (VerifyingKey memory vk) {
+ vk.alpha = Pairing.G1Point(uint256(0x0f43f4fe7b5c2326fed4ac6ed2f4003ab9ab4ea6f667c2bdd77afb068617ee16), uint256(0x25a77832283f9726935219b5f4678842cda465631e72dbb24708a97ba5d0ce6f));
+ vk.beta = Pairing.G2Point([uint256(0x2cebd0fbd21aca01910581537b21ae4fed46bc0e524c055059aa164ba0a6b62b), uint256(0x18fd4a7bc386cf03a95af7163d5359165acc4e7961cb46519e6d9ee4a1e2b7e9)], [uint256(0x11449dee0199ef6d8eebfe43b548e875c69e7ce37705ee9a00c81fe52f11a009), uint256(0x066d0c83b32800d3f335bb9e8ed5e2924cf00e77e6ec28178592eac9898e1a00)]);
+```
+
+La solución, al menos hasta que los exploradores de bloques se animen a añadir la verificación de Zokrates a sus interfaces de usuario, es que los desarrolladores de aplicaciones pongan a disposición los programas de Zokrates y que, al menos, algunos usuarios los compilen ellos mismos con la clave de verificación adecuada.
+
+Para ello:
+
+1. [Instale Zokrates](https://zokrates.github.io/gettingstarted.html).
+
+2. Cree un archivo, `dig.zok`, con el programa Zokrates. El siguiente código asume que ha mantenido el tamaño original del mapa, 10x5.
+
+ ```zokrates
+ import "utils/pack/bool/pack128.zok" as pack128;
+ import "hashes/poseidon/poseidon.zok" as poseidon;
+
+ def hashMap(bool[12][7] map) -> field {
+ bool[512] mut map1d = [false; 512];
+ u32 mut counter = 0;
+
+ for u32 x in 0..12 {
+ for u32 y in 0..7 {
+ map1d[counter] = map[x][y];
+ counter = counter+1;
+ }
+ }
+
+ field[4] hashMe = [
+ pack128(map1d[0..128]),
+ pack128(map1d[128..256]),
+ pack128(map1d[256..384]),
+ pack128(map1d[384..512])
+ ];
+
+ return poseidon(hashMe);
+ }
+
+
+ // El número de minas en la ubicación (x,y)
+ def map2mineCount(bool[12][7] map, u32 x, u32 y) -> u8 {
+ return if map[x+1][y+1] { 1 } else { 0 };
+ }
+
+ def main(private bool[12][7] map, u32 x, u32 y) -> (field, u8) {
+ return (hashMap(map) ,
+ if map2mineCount(map, x, y) > 0 { 0xFF } else {
+ map2mineCount(map, x-1, y-1) + map2mineCount(map, x, y-1) + map2mineCount(map, x+1, y-1) +
+ map2mineCount(map, x-1, y) + map2mineCount(map, x+1, y) +
+ map2mineCount(map, x-1, y+1) + map2mineCount(map, x, y+1) + map2mineCount(map, x+1, y+1)
+ }
+ );
+ }
+ ```
+
+3. Compile el código Zokrates y cree la clave de verificación. La clave de verificación debe crearse con la misma entropía utilizada en el servidor original, [en este caso, una cadena vacía](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L67).
+
+ ```sh copy
+ zokrates compile --input dig.zok
+ zokrates setup -e ""
+ ```
+
+4. Cree el verificador de Solidity por su cuenta y verifique que es funcionalmente idéntico al de la cadena de bloques (el servidor añade un comentario, pero eso no es importante).
+
+ ```sh copy
+ zokrates export-verifier
+ diff verifier.sol ~/20240901-secret-state/packages/contracts/src/verifier.sol
+ ```
+
+## Decisiones de diseño {#design}
+
+En cualquier aplicación suficientemente compleja existen objetivos de diseño contrapuestos que requieren concesiones. Veamos algunas de las compensaciones y por qué la solución actual es preferible a otras opciones.
+
+### Por qué conocimiento cero {#why-zero-knowledge}
+
+Para el buscaminas no se necesita realmente el conocimiento cero. El servidor siempre puede guardar el mapa y revelarlo todo cuando termine el juego. Entonces, al final del juego, el contrato inteligente puede calcular el hash del mapa, verificar que coincide y, si no es así, penalizar al servidor o descartar el juego por completo.
+
+No utilicé esta solución más sencilla porque solo funciona para juegos cortos con un estado final bien definido. Cuando un juego es potencialmente infinito (como en el caso de los [mundos autónomos](https://0xparc.org/blog/autonomous-worlds)), se necesita una solución que demuestre el estado _sin_ revelarlo.
+
+Como tutorial, este artículo necesitaba un juego corto que fuera fácil de entender, pero esta técnica es más útil para juegos más largos.
+
+### ¿Por qué Zokrates? {#why-zokrates}
+
+[Zokrates](https://zokrates.github.io/) no es la única biblioteca de conocimiento cero disponible, pero es similar a un lenguaje de programación normal, [imperativo](https://en.wikipedia.org/wiki/Imperative_programming) y admite variables booleanas.
+
+Para su aplicación, con diferentes requisitos, es posible que prefiera usar [Circum](https://docs.circom.io/getting-started/installation/) o [Cairo](https://www.cairo-lang.org/tutorials/getting-started-with-cairo/).
+
+### Cuándo compilar Zokrates {#when-compile-zokrates}
+
+En este programa compilamos los programas Zokrates [cada vez que se inicia el servidor](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L60-L61). Esto es claramente un desperdicio de recursos, pero este es un tutorial, optimizado para la simplicidad.
+
+Si estuviera escribiendo una aplicación a nivel de producción, comprobaría si tengo un archivo con los programas de Zokrates compilados en este tamaño de campo minado y, en caso afirmativo, lo usaría. Lo mismo ocurre con el despliegue de un contrato de verificador en cadena.
+
+### Creación de las claves del verificador y del probador {#key-creation}
+
+La [creación de claves](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L63-L69) es otro cálculo puro que no es necesario realizar más de una vez para un tamaño de campo minado determinado. Nuevamente, se hace solo una vez por simplicidad.
+
+Además, podríamos usar [una ceremonia de configuración](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). La ventaja de una ceremonia de configuración es que se necesita la entropía o algún resultado intermedio de cada participante para hacer trampas en la prueba de conocimiento cero. Si al menos un participante de la ceremonia es honesto y elimina esa información, las pruebas de conocimiento cero están a salvo de ciertos ataques. Sin embargo, _no hay ningún mecanismo_ para verificar que la información se ha eliminado de todas partes. Si las pruebas de conocimiento cero son de importancia crítica, querrá participar en la ceremonia de configuración.
+
+Aquí nos basamos en [poderes perpetuos de tau](https://github.com/privacy-scaling-explorations/perpetualpowersoftau), que tuvo docenas de participantes. Probablemente sea lo suficientemente seguro y mucho más simple. Tampoco agregamos entropía durante la creación de la clave, lo que facilita a los usuarios [verificar la configuración de conocimiento cero](#user-verify-zero-trust).
+
+### Dónde verificar {#where-verification}
+
+Podemos verificar las pruebas de conocimiento cero ya sea en cadena (lo que cuesta gas) o en el cliente (usando [`verify`](https://zokrates.github.io/toolbox/zokrates_js.html#verifyverificationkey-proof)). Elegí la primera, porque esto le permite [verificar el verificador](#user-verify-zero-trust) una vez y luego confiar en que no cambiará mientras la dirección del contrato para él permanezca igual. Si la verificación se hiciera en el cliente, tendría que verificar el código que recibe cada vez que descarga el cliente.
+
+Además, aunque este juego es para un solo jugador, muchos juegos de cadena de bloques son multijugador. La verificación en cadena significa que solo se verifica la prueba de conocimiento cero una vez. Hacerlo en el cliente requeriría que cada cliente verificara de forma independiente.
+
+### ¿Aplanar el mapa en TypeScript o Zokrates? {#where-flatten}
+
+En general, cuando el procesamiento se puede hacer en TypeScript o Zokrates, es mejor hacerlo en TypeScript, que es mucho más rápido y no requiere pruebas de conocimiento cero. Esta es la razón, por ejemplo, de que no proporcionemos a Zokrates el hash y hagamos que verifique que es correcto. La aplicación de hash debe hacerse dentro de Zokrates, pero la coincidencia entre el hash devuelto y el hash en cadena puede ocurrir fuera de él.
+
+Sin embargo, todavía [aplanamos el mapa en Zokrates](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L15-L20), mientras que podríamos haberlo hecho en TypeScript. La razón es que las otras opciones son, en mi opinión, peores.
+
+- Proporcione una matriz unidimensional de booleanos al código de Zokrates y use una expresión como `x*(height+2)
+ +y` para obtener el mapa bidimensional. Esto haría [el código](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L44-L47) algo más complicado, así que decidí que la ganancia de rendimiento no vale la pena para un tutorial.
+
+- Envíe a Zokrates tanto la matriz unidimensional como la bidimensional. Sin embargo, esta solución no nos aporta nada. El código de Zokrates tendría que verificar que la matriz unidimensional que se le proporciona es realmente la representación correcta de la matriz bidimensional. Así que no habría ninguna ganancia de rendimiento.
+
+- Aplanar la matriz bidimensional en Zokrates. Esta es la opción más sencilla, así que la elegí.
+
+### Dónde almacenar los mapas {#where-store-maps}
+
+En esta aplicación, [`gamesInProgress`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L20) es simplemente una variable en la memoria. Esto significa que si el servidor muere y necesita ser reiniciado, toda la información que almacenó se pierde. No solo los jugadores no pueden continuar su juego, sino que ni siquiera pueden comenzar un nuevo juego porque el componente en cadena cree que todavía tienen un juego en progreso.
+
+Este es claramente un mal diseño para un sistema de producción, en el que almacenaría esta información en una base de datos. La única razón por la que utilicé una variable aquí es because este es un tutorial y la simplicidad es la principal consideración.
+
+## Conclusión: ¿en qué condiciones es esta la técnica adecuada? {#conclusion}
+
+Así que ahora ya sabe cómo escribir un juego con un servidor que almacena un estado secreto que no pertenece a la cadena. Pero, ¿en qué casos debería hacerlo? Hay dos consideraciones principales.
+
+- _Juego de larga duración_: [como se mencionó anteriormente](#why-zero-knowledge), en un juego corto puede publicar el estado una vez que el juego ha terminado y hacer que todo se verifique entonces. Pero esa no es una opción cuando el juego toma un tiempo largo o indefinido y el estado necesita permanecer en secreto.
+
+- _Cierta centralización aceptable_: las pruebas de conocimiento cero pueden verificar la integridad, que una entidad no está falsificando los resultados. Lo que no pueden hacer es garantizar que la entidad seguirá disponible y responderá a los mensajes. En situaciones donde la disponibilidad también necesita ser descentralizada, las pruebas de conocimiento cero no son una solución suficiente y se necesita [computación multipartita](https://en.wikipedia.org/wiki/Secure_multi-party_computation).
+
+[Vea aquí más de mi trabajo](https://cryptodocguy.pro/).
+
+### Reconocimientos {#acknowledgements}
+
+- Alvaro Alonso leyó un borrador de este artículo y aclaró algunos de mis malentendidos sobre Zokrates.
+
+Cualquier error restante es mi responsabilidad.
From aefaaf1c643b2834414818b657eadca92c606e0c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:54:06 -0300
Subject: [PATCH 306/589] update(i18n):
public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md
---
.../index.md | 859 +++++++++---------
1 file changed, 409 insertions(+), 450 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md b/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md
index 986b10456bb..d81b6c12eb5 100644
--- a/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md
+++ b/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md
@@ -1,94 +1,97 @@
---
-title: 'Contrato inteligente de Hello World para principiantes: Fullstack'
-description: Tutorial introductorio para redactar e implementar un contrato inteligente sencillo en Ethereum.
+title: "Contrato inteligente de Hello World para principiantes: Fullstack"
+description: Tutorial introductorio sobre cómo escribir y desplegar un contrato inteligente sencillo en Ethereum.
author: "nstrike2"
tags:
- - "solidity"
- - "hardhat"
- - "alchemy"
- - "contratos inteligentes"
- - "implementación"
- - "blockexplorer"
- - "frontend"
- - "transacciones"
+ [
+ "Solidity",
+ "hardhat",
+ "Alchemy",
+ "contratos Inteligentes",
+ "implementación",
+ "explorador de bloques",
+ "frontend",
+ "transacciones"
+ ]
skill: beginner
lang: es
-published: 2021-10-25
+published: 25-10-2021
---
-Si es nuevo en el desarrollo de la cadena de bloques y no sabe por dónde empezar o cómo implementar e interactuar con contratos inteligentes, esta guía está hecha a su medida. Exploraremos la creación e implementación de un contrato simple e inteligente en la red de prueba de Goerli utilizando [MetaMask](https://metamask.io), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org) y [Alchemy](https://alchemyapi.io/eth).
+Si es nuevo en el desarrollo de la cadena de bloques y no sabe por dónde empezar o cómo desplegar e interactuar con contratos inteligentes, esta guía está hecha a su medida. Repasaremos la creación y el despliegue de un contrato inteligente simple en la red de prueba de Goerli usando [MetaMask](https://metamask.io), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org), y [Alchemy](https://alchemy.com/eth).
Necesitará una cuenta de Alchemy para completar este tutorial. [Regístrese para obtener una cuenta gratuita](https://www.alchemy.com/).
-En cualquier momento que le surjan dudas, ¡no dude en ponerse en contacto con el canal [Discord de Alchemy](https://discord.gg/gWuC7zB).
+¡Si tiene preguntas en cualquier momento, no dude en ponerse en contacto con el [Discord de Alchemy](https://discord.gg/gWuC7zB)!
-## Parte 1: Cree e implemente su contrato inteligente usando Hardhat {#part-1}
+## Parte 1: Cree y despliegue su contrato inteligente usando Hardhat {#part-1}
-### Conéctarse a la red de Ethereum {#connect-to-the-ethereum-network}
+### Conectarse a la red de Ethereum {#connect-to-the-ethereum-network}
-Hay muchas maneras de hacer solicitudes a la cadena Ethereum. Para simplificar, usaremos una cuenta gratuita en Alchemy, una plataforma de desarrollo de cadena de bloques y una API que nos permite comunicarnos con la cadena Ethereum sin ejecutar un nodo nosotros mismos. Alchemy también tiene herramientas de desarrollo para el control y el análisis. Las abordaremos en este tutorial y así entenderemos los entresijos de nuestra implementación de contratos inteligentes.
+Hay muchas formas de hacer solicitudes a la cadena de Ethereum. Para simplificar, usaremos una cuenta gratuita en Alchemy, una plataforma de desarrollo de cadenas de bloques y una API que nos permite comunicarnos con la cadena Ethereum sin tener que ejecutar un nodo nosotros mismos. Alchemy también tiene herramientas de desarrollo para monitorización y análisis; las aprovecharemos en este tutorial para entender lo que ocurre entre bastidores en el despliegue de nuestro contrato inteligente.
-### Cómo crear su aplicación y clave de API {#create-your-app-and-api-key}
+### Crear su aplicación y clave de API {#create-your-app-and-api-key}
-Una vez que haya creado una cuenta de Alchemy, puede generar una clave de API con una aplicación. Esto le permitirá hacer solicitudes a la red de pruebas de Goerli. Si no está familiarizado con las redes de prueba, puede [leer la guía de Alchemy para elegir una red](https://docs.alchemyapi.io/guides/choosing-a-network).
+Una vez que haya creado una cuenta de Alchemy, puede generar una clave de API creando una aplicación. Esto le permitirá hacer solicitudes a la red de prueba de Goerli. Si no está familiarizado con las redes de prueba, puede [leer la guía de Alchemy para elegir una red](https://www.alchemy.com/docs/choosing-a-web3-network).
-En el panel de Alchemy, busque el menú desplegable **Apps** en la barra de navegación y haga clic en **Create App**.
+En el panel de Alchemy, encuentre el menú desplegable **Apps** en la barra de navegación y haga clic en **Create App**.
-
+
-Dele a su aplicación el nombre '_Hello World_' y escriba una breve descripción. Seleccione **Staging** como su entorno y **Goerli** como su red.
+Asigne a su aplicación el nombre «_Hello World_» y escriba una breve descripción. Seleccione **Staging** como su entorno y **Goerli** como su red.
-
+
-_Nota: asegúrate de seleccionar **Goerli**, o este tutorial no funcionará._
+_Nota: asegúrese de seleccionar **Goerli**, o este tutorial no funcionará._
-Haga clic en **Create app**. Su aplicación aparecerá en la siguiente tabla.
+Haga clic en **Create app**. Su aplicación aparecerá en la tabla de abajo.
-### Cómo crear una cuenta en Ethereum {#create-an-ethereum-account}
+### Crear una cuenta de Ethereum {#create-an-ethereum-account}
-Necesita tener una cuenta de Ethereum para enviar y recibir transacciones. Utilizaremos MetaMask, una cartera virtual en el navegador que permite a los usuarios gestionar la dirección de su cuenta de Ethereum.
+Necesita una cuenta de Ethereum para enviar y recibir transacciones. Usaremos MetaMask, una billetera virtual en el navegador que permite a los usuarios administrar la dirección de su cuenta de Ethereum.
-Puede descargar y crear una cuenta Metamask gratis [aquí](https://metamask.io/download). Cuando esté creando una cuenta, o si ya tiene una, asegúrese de cambiar a la “red de prueba Goerli” en la parte superior derecha (para no operar con dinero real).
+Puede descargar y crear una cuenta de MetaMask gratis [aquí](https://metamask.io/download). Al crear una cuenta, o si ya tiene una, asegúrese de cambiar a la «red de prueba de Goerli» en la parte superior derecha (para que no estemos tratando con dinero real).
-### Paso 4: Añadir ether de un faucet {#step-4-add-ether-from-a-faucet}
+### Paso 4: Añadir ether desde un Faucet {#step-4-add-ether-from-a-faucet}
-Para implementar su contrato inteligente en la red de prueba, necesitará algunos ETH falsos. Para obtener ETH en la red Goerli, vaya a un grifo de Goerli e introduzca la dirección de su cuenta de Goerli. Observe que los grifos de Goerli pueden ser poco fiables recientemente. En la [página de prueba de redes](/developers/docs/networks/#goerli) verá un listado de opciones para probar:
+Para desplegar su contrato inteligente en la red de prueba, necesitará algo de ETH falso. Para obtener ETH en la red Goerli, vaya a un grifo de Goerli e ingrese la dirección de su cuenta de Goerli. Tenga en cuenta que los grifos de Goerli pueden ser un poco poco fiables últimamente; consulte la [página de redes de prueba](/developers/docs/networks/#goerli) para obtener una lista de opciones para probar:
-_Nota: debido a la congestión de la red, esto puede llevar un tiempo. _ ``
+_Nota: debido a la congestión de la red, esto podría tardar un rato._
+\`\`
-### Paso 5: Comprobar su balance {#step-5-check-your-balance}
+### Paso 5: Compruebe su saldo {#step-5-check-your-balance}
-Para volver a comprobar que hay ETH en su cartera, hagamos una solicitud [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) usando la herramienta de compositor de [Alchemy](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto devolverá la cantidad de ETH a nuestra cartera. Si desea ampliar esta información, eche un vistazo al breve tutorial de [Alchemy sobre cómo usar la herramienta de compositor](https://youtu.be/r6sjRxBZJuU).
+Para volver a comprobar que el ETH está en su billetera, hagamos una solicitud de [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) utilizando la [herramienta de composición de Alchemy](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto devolverá la cantidad de ETH a nuestra cartera. Para saber más, consulte el [breve tutorial de Alchemy sobre cómo usar la herramienta de composición](https://youtu.be/r6sjRxBZJuU).
-Introduzca la dirección de su cuenta de MetaMask y haga clic en **Send request**. Verás una respuesta que se parece al fragmento de código a continuación.
+Introduzca la dirección de su cuenta de MetaMask y haga clic en **Send Request**. Verá una respuesta parecida al fragmento de código que aparece a continuación.
```json
{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }
```
-> _Nota: este resultado está en wei, no en ETH. Wei se usa como la denominación más pequeña de Ether._
+> _Nota: este resultado está en wei, no en ETH._ El wei se utiliza como la denominación más pequeña de ether._
¡Fiu! Nuestro dinero de prueba está ahí sano y salvo.
-### Paso 6: Iniciar su proyecto {#step-6-initialize-our-project}
+### Paso 6: Inicialice nuestro proyecto {#step-6-initialize-our-project}
-En primer lugar, tendremos que crear una carpeta para nuestro proyecto. Vaya a su línea de comandos e introduzca lo siguiente.
+Primero, tendremos que crear una carpeta para nuestro proyecto. Vaya a su línea de comandos e introduzca lo siguiente.
```
mkdir hello-world
cd hello-world
```
-Ahora que estamos dentro de nuestra carpeta de proyecto, usaremos `npm init` a fin de inicializar el proyecto.
+Ahora que estamos dentro de la carpeta de nuestro proyecto, usaremos `npm init` para inicializar el proyecto.
> Si aún no tiene npm instalado, siga [estas instrucciones para instalar Node.js y npm](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm).
-Para el propósito de este tutorial, no importa cómo responda a las preguntas de inicialización. Así respondimos nosotros, a modo de referencia:
+A efectos de este tutorial, no importa cómo responda a las preguntas de inicialización. A continuación, se muestra cómo lo hicimos como referencia:
```
package name: (hello-world)
version: (1.0.0)
-description: hello world smart contract
+description: contrato inteligente hello world
entry point: (index.js)
test command:
git repository:
@@ -101,7 +104,7 @@ About to write to /Users/.../.../.../hello-world/package.json:
{
"name": "hello-world",
"version": "1.0.0",
- "description": "hello world smart contract",
+ "description": "contrato inteligente hello world",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
@@ -111,9 +114,9 @@ About to write to /Users/.../.../.../hello-world/package.json:
}
```
-Apruebe el package.json y listo.
+Apruebe el package.json y ¡listo!
-### Paso 7: Descargar Hardhat {#step-7-download-hardhat}
+### Paso 7: Descargue Hardhat {#step-7-download-hardhat}
Hardhat es un entorno de desarrollo para compilar, implementar, probar y depurar su software de Ethereum. Ayuda a los desarrolladores cuando crean contratos inteligentes y dApps localmente antes de la implementación en la cadena real.
@@ -123,17 +126,17 @@ Dentro de nuestro proyecto `hello-world`, ejecute:
npm install --save-dev hardhat
```
-Revise esta página para obtener más información acerca de las [intrucciones de instalación](https://hardhat.org/getting-started/#overview).
+Consulte esta página para obtener más detalles sobre las [instrucciones de instalación](https://hardhat.org/getting-started/#overview).
-### Paso 8: Crear proyecto Hardhat {#step-8-create-hardhat-project}
+### Paso 8: Cree el proyecto Hardhat {#step-8-create-hardhat-project}
-Dentro de nuestra carpeta de proyectos `hello-world`, ejecute:
+Dentro de nuestra carpeta de proyecto `hello-world`, ejecute:
```
npx hardhat
```
-Debería aparecer un mensaje de bienvenida y la opción de seleccionar lo que desee hacer. Seleccione «create an empty hardhat.config.js»:
+Entonces debería aparecer un mensaje de bienvenida y la opción de seleccionar lo que desea hacer. Seleccione «create an empty hardhat.config.js» (crear un hardhat.config.js vacío):
```
888 888 888 888 888
@@ -145,65 +148,65 @@ Debería aparecer un mensaje de bienvenida y la opción de seleccionar lo que de
888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
-👷 Welcome to Hardhat v2.0.11 👷
+👷 Bienvenido a Hardhat v2.0.11 👷
-What do you want to do? …
-Create a sample project
-❯ Create an empty hardhat.config.js
-Quit
+¿Qué quiere hacer?…
+Crear un proyecto de ejemplo
+❯ Crear un archivo hardhat.config.js vacío
+Salir
```
Esto generará un archivo `hardhat.config.js` en el proyecto. Lo utilizaremos más adelante en el tutorial para especificar la configuración de nuestro proyecto.
-### Paso 9: Añadir carpetas de proyecto {#step-9-add-project-folders}
+### Paso 9: Añada las carpetas del proyecto {#step-9-add-project-folders}
-Para mantener el proyecto organizado, vamos a crear dos carpetas nuevas. En la línea de comandos, vaya al directorio raíz de su proyecto `hello-world` y escriba:
+Para mantener el proyecto organizado, vamos a crear dos carpetas nuevas. En la línea de comandos, navegue hasta el directorio raíz de su proyecto `hello-world` y escriba:
```
mkdir contracts
mkdir scripts
```
-- `contratos/` es donde mantendremos nuestro archivo de código del contrato inteligente Hola, mundo
-- `scripts/` es donde mantendremos los scripts para implementar e interactuar con nuestro contrato
+- `contracts/` es donde guardaremos nuestro archivo de código del contrato inteligente «Hola, mundo».
+- `scripts/` es donde guardaremos los scripts para desplegar e interactuar con nuestro contrato.
-### Paso 10: Escribir nuestro contrato {#step-10-write-our-contract}
+### Paso 10: Escriba nuestro contrato {#step-10-write-our-contract}
-Puede que se esté preguntando que cuándo vamos a escribir el código. ¡Ahora es el momento!
+Puede que se esté preguntando cuándo vamos a escribir código. ¡Llegó la hora!
-Abra el proyecto hello-world en su editor favorito. Los contratos inteligentes se suelen escribir más comunmente en Solidity, que usaremos para escribir nuestro contrato inteligente
+Abra el proyecto hello-world en su editor favorito. Los contratos inteligentes se escriben normalmente en Solidity, que es el lenguaje que usaremos para escribir nuestro contrato inteligente.
-1. Vaya a la carpeta `contratos` y cree un nuevo archivo llamado `HelloWorld.sol`
-2. A continuación se muestra un ejemplo del contrato inteligente de Hello World que usaremos para este tutorial. Copie el contenido a continuación en el archivo `HelloWorld.sol`.
+1. Vaya a la carpeta `contracts` y cree un nuevo archivo llamado `HelloWorld.sol`
+2. A continuación, se muestra un contrato inteligente de Hello World de ejemplo que utilizaremos para este tutorial. Copie el contenido siguiente en el archivo `HelloWorld.sol`.
-_Nota: asegúrese de leer los comentarios para entender lo que hace este contrato._
+_Nota: Asegúrese de leer los comentarios para entender qué hace este contrato._
```
-// Especifica la versión de Solidity, utilizando la versión semántica.
-// Learn more: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
+// Especifica la versión de Solidity, usando el versionado semántico.
+// Más información: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
pragma solidity >=0.7.3;
-// Defines a contract named `HelloWorld`.
-// Un contrato es una colección de funciones y datos (su estado). Once deployed, a contract resides at a specific address on the Ethereum blockchain. Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+// Define un contrato llamado `HelloWorld`.
+// Un contrato es una colección de funciones y datos (su estado). Una vez desplegado, un contrato reside en una dirección específica en la cadena de bloques de Ethereum. Más información: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
contract HelloWorld {
- //Emitted when update function is called
- //Smart contract events are a way for your contract to communicate that something happened on the blockchain to your app front-end, which can be 'listening' for certain events and take action when they happen.
+ //Se emite cuando se llama a la función de actualización
+ //Los eventos de contratos inteligentes son una forma de que su contrato comunique que algo ha sucedido en la cadena de bloques a la interfaz de su aplicación, la cual puede estar 'escuchando' ciertos eventos y tomar medidas cuando suceden.
event UpdatedMessages(string oldStr, string newStr);
- // Declares a state variable `message` of type `string`.
- // Las variables de estado son variables cuyos valores se almacenan permanentemente en el almacenamiento del contrato. The keyword `public` makes variables accessible from outside a contract and creates a function that other contracts or clients can call to access the value.
+ // Declara una variable de estado `message` de tipo `string`.
+ // Las variables de estado son variables cuyos valores se almacenan permanentemente en el almacenamiento del contrato. La palabra clave `public` hace que las variables sean accesibles desde fuera de un contrato y crea una función a la que otros contratos o clientes pueden llamar para acceder al valor.
string public message;
- // Similar to many class-based object-oriented languages, a constructor is a special function that is only executed upon contract creation.
- // Los constructores se utilizan para inicializar los datos del contrato. Learn more:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ // Similar a muchos lenguajes orientados a objetos basados en clases, un constructor es una función especial que solo se ejecuta en la creación del contrato.
+ // Los constructores se utilizan para inicializar los datos del contrato. Más información:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
constructor(string memory initMessage) {
- // Accepts a string argument `initMessage` and sets the value into the contract's `message` storage variable).
+ // Acepta un argumento de cadena `initMessage` y establece el valor en la variable de almacenamiento `message` del contrato).
message = initMessage;
}
- // A public function that accepts a string argument and updates the `message` storage variable.
+ // Una función pública que acepta un argumento de cadena y actualiza la variable de almacenamiento `message`.
function update(string memory newMessage) public {
string memory oldMsg = message;
message = newMessage;
@@ -212,15 +215,15 @@ contract HelloWorld {
}
```
-Este es un contrato inteligente básico que almacena un mensaje en el momento de la creación. Se puede actualizar activando la función `update`.
+Este es un contrato inteligente básico que almacena un mensaje en el momento de la creación. Se puede actualizar llamando a la función `update`.
-### Paso 11: Conectar MetaMask & Alchemy a su proyecto {#step-11-connect-metamask-alchemy-to-your-project}
+### Paso 11: Conecte MetaMask y Alchemy a su proyecto {#step-11-connect-metamask-alchemy-to-your-project}
-Hemos creado una billetera de Metamask, una cuenta de Alchemy y escrito nuestro contrato inteligente, ahora es momento de conectarlos entre sí.
+Hemos creado una billetera de MetaMask, una cuenta de Alchemy y hemos escrito nuestro contrato inteligente, ahora es el momento de conectar los tres.
-Cada transacción enviada desde su cartera requiere una firma con su clave privada única. Para proporcionar este permiso a nuestro programa, podemos almacenar de forma segura nuestra clave privada en un archivo de entorno. También almacenaremos una clave de API para Alchemy aquí.
+Cada transacción enviada desde su billetera requiere una firma que utilice su clave privada única. Para proporcionar a nuestro programa este permiso, podemos almacenar de forma segura nuestra clave privada en un archivo de entorno. También almacenaremos una clave de API para Alchemy aquí.
-> Si quiere ahondar sobre el envío de transacciones, consulte [este tutorial](https://docs.alchemyapi.io/alchemy/tutorials/sending-transactions-using-web3-and-alchemy) sobre el envío de transacciones usando web3.
+> Para obtener más información sobre el envío de transacciones, consulte [este tutorial](https://www.alchemy.com/docs/hello-world-smart-contract#step-11-connect-metamask--alchemy-to-your-project) sobre el envío de transacciones mediante web3.
Primero, instale el paquete dotenv en su directorio de proyecto:
@@ -228,43 +231,43 @@ Primero, instale el paquete dotenv en su directorio de proyecto:
npm install dotenv --save
```
-A continuación, cree un archivo `.env` en el directorio raíz del proyecto. Añada su clave privada de MetaMask y la URL de la API de HTTP Alchemy.
+Luego, cree un archivo `.env` en el directorio raíz del proyecto. Añada su clave privada de MetaMask y la URL de la API HTTP de Alchemy.
-Su archivo de entorno debe llamarse `.env` o no se reconocerá como un archivo de entorno.
+Su archivo de entorno debe tener el nombre `.env`; de lo contrario, no se reconocerá como un archivo de entorno.
-No lo nombre `process.env` o `.env-custom` ni nada más.
+No lo nombre `process.env` o `.env-custom` ni de ninguna otra manera.
-- Siga [estas instrucciones](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) para exportar su llave privada
-- Abajo se le indica cómo obtener la API URL de HTTP Alchemy
+- Siga [estas instrucciones](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) para exportar su clave privada
+- Vea a continuación cómo obtener la URL de la API de HTTP de Alchemy.

Su `.env` debería verse así:
```
-API_URL = "https://eth-goerli.alchemyapi.io/v2/your-api-key"
-PRIVATE_KEY = "your-metamask-private-key"
+API_URL = "https://eth-goerli.alchemyapi.io/v2/su-clave-de-api"
+PRIVATE_KEY = "su-clave-privada-de-metamask"
```
-Para conectarlos efectivamente a nuestro código, vincularemos estas variables en nuestro `hardhat.config.js` en el paso 13.
+Para conectar esto a nuestro código, haremos referencia a estas variables en nuestro archivo `hardhat.config.js` en el paso 13.
### Paso 12: Instalar Ethers.js {#step-12-install-ethersjs}
-Ethers.js es una biblioteca que facilita la interacción y la realización de solicitudes a Ethereum agrupando [métodos JSON-RPC estándar](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc) con métodos más fáciles para el usuario.
+Ethers.js es una biblioteca que facilita la interacción y la realización de solicitudes a Ethereum al encapsular los [métodos JSON-RPC estándar](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc) con métodos más sencillos para el usuario.
-Hardhat nos permite integrar [plugins](https://hardhat.org/plugins/) para obtener herramientas adicionales y una funcionalidad ampliada. Aprovecharemos el complemento [Ethers plugin](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers) para la implementación por contrato.
+Hardhat nos permite integrar [plugins](https://hardhat.org/plugins/) para herramientas adicionales y funcionalidad extendida. Aprovecharemos el [plugin de Ethers](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers) para el despliegue del contrato.
-En el directorio de su proyecto, teclee:
+En el directorio de su proyecto teclee:
```bash
npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0"
```
-### Paso 13: Actualizar hardhat.config.js {#step-13-update-hardhat-configjs}
+### Paso 13: Actualice hardhat.config.js {#step-13-update-hardhat-configjs}
-Hasta ahora hemos añadido varias dependencias y plugins, por lo que ahora necesitamos actualizar `hardhat.config.js` para que nuestro proyecto sepa de todas ellas.
+Hemos añadido varias dependencias y plugins hasta ahora, ahora necesitamos actualizar `hardhat.config.js` para que nuestro proyecto los conozca todos.
-Actualice su `hardhat.config.js` para que muestre el siguiente texto:
+Actualice su `hardhat.config.js` para que se vea así:
```javascript
/**
@@ -289,31 +292,31 @@ module.exports = {
}
```
-### Paso 14: Compilar nuestro contrato {#step-14-compile-our-contract}
+### Paso 14: Compile nuestro contrato {#step-14-compile-our-contract}
-Para asegurarnos de que todo funciona correctamente hasta ahora, compilemos nuestro contrato. La función `compile` está incluida dentro de las funciones por defecto de hardhat.
+Para asegurarnos de que todo funciona correctamente hasta ahora, compilemos nuestro contrato. La tarea `compile` es una de las tareas incorporadas de Hardhat.
-Desde la linea de comandos, ejecute:
+Desde la línea de comandos ejecute:
```bash
npx hardhat compile
```
-Es posible que reciba una advertencia sobre el `identificador de licencia SPDX no proporcionado en el archivo de origen`, pero no tiene que preocuparse por eso, ¡esperemos que todo lo demás esté bien! Si no es así, siempre puede escribir un mensaje en [Alchemy discord](https://discord.gg/u72VCg3).
+Es posible que reciba una advertencia sobre `SPDX license identifier not provided in source file`, pero no necesita preocuparse por eso. ¡Esperemos que todo lo demás se vea bien! Si no es así, siempre puede enviar un mensaje en el [discord de Alchemy](https://discord.gg/u72VCg3).
-### Paso 15: Escribir nuestro script de despliegue {#step-15-write-our-deploy-script}
+### Paso 15: Escriba nuestro script de despliegue {#step-15-write-our-deploy-script}
Ahora que nuestro contrato está escrito y nuestro archivo de configuración está listo, es momento de escribir nuestro script de implementación del contrato.
-Vaya a la carpeta `scripts/` y cree un nuevo archivo llamado `deploy.js`, agregando los siguientes contenidos:
+Vaya a la carpeta `scripts/` y cree un nuevo archivo llamado `deploy.js`, añadiendo el siguiente contenido:
```javascript
async function main() {
const HelloWorld = await ethers.getContractFactory("HelloWorld")
- // Start deployment, returning a promise that resolves to a contract object
+ // Inicia el despliegue, devolviendo una promesa que se resuelve en un objeto de contrato
const hello_world = await HelloWorld.deploy("Hello World!")
- console.log("Contract deployed to address:", hello_world.address)
+ console.log("Contrato desplegado en la dirección:", hello_world.address)
}
main()
@@ -324,23 +327,23 @@ main()
})
```
-Hardhat hace un trabajo increíble al explicar lo que hace cada una de estas líneas de código en su [tutorial de contratos](https://hardhat.org/tutorial/testing-contracts.html#writing-tests), aquí hemos asumido sus explicaciones.
+Hardhat hace un trabajo increíble explicando lo que hace cada una de estas líneas de código en su [tutorial de Contratos](https://hardhat.org/tutorial/testing-contracts.html#writing-tests), hemos adoptado sus explicaciones aquí.
```javascript
const HelloWorld = await ethers.getContractFactory("HelloWorld")
```
-Una `ContractFactory` en ethers.js es una abstracción utilizada para implementar nuevos contratos inteligentes, por lo que `HelloWorld` aquí es una [factory](https://en.wikipedia.org/wiki/Factory_(object-oriented_programming)) a instancias de nuestro contrato de Hello World. Cuando se utiliza el complemento `hardhat-ethers` `ContractFactory` y `Contract`, las instancias se conectan al primer firmante (propietario) de forma predeterminada.
+Una `ContractFactory` en ethers.js es una abstracción utilizada para desplegar nuevos contratos inteligentes, por lo que `HelloWorld` aquí es una [factoría](https://en.wikipedia.org/wiki/Factory_\(object-oriented_programming\)) para instancias de nuestro contrato hello world. Al usar el plugin `hardhat-ethers` `ContractFactory` y las instancias de `Contract`, estas se conectan al primer firmante (propietario) por defecto.
```javascript
const hello_world = await HelloWorld.deploy()
```
-Llamar a `deploy()` en un `ContractFactory` iniciará el despliegue y devolverá un `Promesa` que se resuelve en un objeto `Contract`. Este es el objeto que tiene un método para cada una de nuestras funciones de contrato inteligente.
+Llamar a `deploy()` en una `ContractFactory` iniciará el despliegue y devolverá una `Promise` que se resuelve en un objeto `Contract`. Este es el elemento que tiene un método para cada una de nuestras funciones de contrato inteligente.
### Paso 16: Desplegar nuestro contrato {#step-16-deploy-our-contract}
-¡Por fin estamos listos para desplegar nuestro contrato inteligente! Desde la linea de comandos, ejecute:
+¡Ahora ya estamos listos para desplegar nuestro contrato inteligente! Vaya a la línea de comandos y ejecute:
```bash
npx hardhat run scripts/deploy.js --network goerli
@@ -349,36 +352,36 @@ npx hardhat run scripts/deploy.js --network goerli
Debería mostrarse algo parecido a esto:
```bash
-Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
+Contrato desplegado en la dirección: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
```
-**Por favor, guarde esta dirección**. Lo usaremos más adelante en el tutorial.
+**Por favor, guarde esta dirección**. La usaremos más adelante en el tutorial.
-Si vamos a la dirección [Goerli etherscan](https://goerli.etherscan.io) y buscamos la dirección de nuestro contrato, podremos comprobar que se ha desplegado correctamente. El objeto de la transacción tendrá un aspecto parecido a esto:
+Si vamos al [explorador de bloques de Goerli](https://goerli.etherscan.io) y buscamos la dirección de nuestro contrato, deberíamos poder ver que se ha desplegado con éxito. La transacción tendrá un aspecto parecido a este:

-La dirección `From` debe coincidir con la dirección de su cuenta de MetaMask y en la dirección `To` figurará**Contract Creation**. Si hacemos clic en la transacción, veremos la dirección de nuestro contrato en el campo `To`.
+La dirección `From` debería coincidir con la dirección de su cuenta de MetaMask y la dirección `To` dirá **Creación de Contrato**. Si hacemos clic en la transacción, veremos la dirección de nuestro contrato en el campo `To`.

-¡Felicidades! Acabas de implementar un contrato inteligente en una red de pruebas de Ethereum.
+¡Enhorabuena! Acaba de desplegar un contrato inteligente en una red de prueba de Ethereum.
-Para entender lo que está pasando internamente, vayamos a la pestaña de Explorer en nuestro [panel Alchemy](https://dashboard.alchemyapi.io/explorer). Si tiene varias aplicaciones de Alchemy, asegúrese de filtrar por aplicación y seleccione **Hello World**.
+Para entender lo que está sucediendo internamente, navegue a la pestaña Explorador en nuestro [panel de Alchemy](https://dashboard.alchemy.com/explorer). Si tiene varias aplicaciones de Alchemy, asegúrese de filtrar por aplicación y seleccionar **Hello World**.

-Aquí verá un puñado de métodos JSON-RPC que Hardhat/Ethers hizo internamente para nosotros cuando llamamos a la función `.deploy()`. Dos métodos importantes aquí son [`eth_sendRawTransaction`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction), que es la solicitud para escribir nuestro contrato en la cadena Goerli, y [`eth_getTransactionByHash`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_gettransactionbyhash), que es una solicitud para leer información sobre nuestra transacción dado el hash. Para obtener más información sobre el envío de transacciones, consulte [nuestro tutorial sobre el envío de transacciones utilizando Web3](/developers/tutorials/sending-transactions-using-web3-and-alchemy/).
+Aquí verá un puñado de métodos JSON-RPC que Hardhat/Ethers crearon internamente para nosotros cuando llamamos a la función `.deploy()`. Dos métodos importantes aquí son [`eth_sendRawTransaction`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction), que es la solicitud para escribir nuestro contrato en la cadena Goerli, y [`eth_getTransactionByHash`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_gettransactionbyhash), que es una solicitud para leer información sobre nuestra transacción dado el hash. Para obtener más información sobre el envío de transacciones, consulte [nuestro tutorial sobre el envío de transacciones con Web3](/developers/tutorials/sending-transactions-using-web3-and-alchemy/).
-## Parte 2: Interactuar con su contrato inteligente {#part-2-interact-with-your-smart-contract}
+## Parte 2: Interactúe con su contrato inteligente {#part-2-interact-with-your-smart-contract}
-Ahora que hemos implementado con éxito un contrato inteligente en la red Goerli, aprendamos a interactuar con él.
+Ahora que hemos desplegado con éxito un contrato inteligente en la red Goerli, aprendamos a interactuar con él.
-### Crear un archivo interact.js {#create-a-interactjs-file}
+### Cree un archivo interact.js {#create-a-interactjs-file}
-Este es el archivo donde escribiremos nuestro script de interacción. Utilizaremos la biblioteca Ethers.js que instaló anteriormente en la Parte 1.
+Este es el archivo en el que escribiremos nuestro script de interacción. Usaremos la biblioteca Ethers.js que instaló previamente en la Parte 1.
-Dentro de la carpeta `scripts/`, cree un nuevo archivo llamado `interact.js` y agregue el siguiente código:
+Dentro de la carpeta `scripts/`, cree un nuevo archivo llamado `interact.js` y añada el siguiente código:
```javascript
// interact.js
@@ -388,33 +391,33 @@ const PRIVATE_KEY = process.env.PRIVATE_KEY
const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS
```
-### Actualizar su archivo .env {#update-your-env-file}
+### Actualice su archivo .env {#update-your-env-file}
-Utilizaremos nuevas variables de entorno, por lo que tenemos que definirlas en el archivo `.env` que [creamos anteriormente](#step-11-connect-metamask-&-alchemy-to-your-project).
+Usaremos nuevas variables de entorno, así que necesitamos definirlas en el archivo `.env` que [creamos anteriormente](#step-11-connect-metamask-&-alchemy-to-your-project).
-Tendremos que añadir una definición para nuestra Alchemy `API_KEY` y la `CONTRACT_ADDRESS` donde se desplegó su contrato inteligente.
+Necesitaremos añadir una definición para nuestra `API_KEY` de Alchemy y el `CONTRACT_ADDRESS` donde se desplegó su contrato inteligente.
-Su archivo `.env` debería tener un aspecto similar a esto:
+Su archivo `.env` debería tener un aspecto similar a este:
```bash
# .env
-API_URL = "https://eth-goerli.alchemyapi.io/v2/"
-API_KEY = ""
-PRIVATE_KEY = ""
-CONTRACT_ADDRESS = "0x"
+API_URL = "https://eth-goerli.alchemyapi.io/v2/"
+API_KEY = ""
+PRIVATE_KEY = ""
+CONTRACT_ADDRESS = "0x"
```
-### Utilizar su contrato ABI {#grab-your-contract-ABI}
+### Obtenga la ABI de su contrato {#grab-your-contract-ABI}
-Nuestro contrato [ABI (interfaz binaria de aplicación)](/glossary/#abi) es la interfaz para interactuar con nuestro contrato inteligente. Hardhat genera automáticamente una ABI y la guarda en `HelloWorld.json`. Para usar la ABI, tendremos que analizar el contenido añadiendo las siguientes líneas de código a nuestro archivo `interact.js`:
+La [ABI (interfaz binaria de aplicación)](/glossary/#abi) de nuestro contrato es la interfaz para interactuar con nuestro contrato inteligente. Hardhat genera automáticamente una ABI y la guarda en `HelloWorld.json`. Para usar la ABI, necesitaremos analizar el contenido añadiendo las siguientes líneas de código a nuestro archivo `interact.js`:
```javascript
// interact.js
const contract = require("../artifacts/contracts/HelloWorld.sol/HelloWorld.json")
```
-Si quiere ver la ABI puede hacerlo en su propia consola:
+Si quiere ver el ABI, puede imprimirlo en su consola:
```javascript
console.log(JSON.stringify(contract.abi))
@@ -430,7 +433,7 @@ npx hardhat run scripts/interact.js
Para interactuar con nuestro contrato, necesitamos crear una instancia de contrato en nuestro código. Para hacerlo con Ethers.js, tendremos que trabajar con tres conceptos:
-1. Proveedor: un proveedor de nodos que le dé acceso de lectura y escritura a la cadena de bloques.
+1. Proveedor: un proveedor de nodos que le dé acceso de lectura y escritura a la cadena de bloques
2. Firmante: representa una cuenta de Ethereum que puede firmar transacciones.
3. Contrato: un objeto Ethers.js que representa un contrato específico desplegado en cadena
@@ -439,16 +442,16 @@ Utilizaremos el contrato ABI del paso anterior para crear nuestra instancia del
```javascript
// interact.js
-// Provider
+// Proveedor
const alchemyProvider = new ethers.providers.AlchemyProvider(
(network = "goerli"),
API_KEY
)
-// Signer
+// Firmante
const signer = new ethers.Wallet(PRIVATE_KEY, alchemyProvider)
-// Contract
+// Contrato
const helloWorldContract = new ethers.Contract(
CONTRACT_ADDRESS,
contract.abi,
@@ -456,15 +459,15 @@ const helloWorldContract = new ethers.Contract(
)
```
-Obtenga más información sobre proveedores, firmantes y contratos en la documentación de [ethers.js](https://docs.ethers.io/v5/).
+Obtenga más información sobre proveedores, firmantes y contratos en la [documentación de ethers.js](https://docs.ethers.io/v5/).
-### Leer el mensaje de inicio {#read-the-init-message}
+### Lea el mensaje de inicio {#read-the-init-message}
-¿Recuerda cuando implementamos nuestro contrato con el `initMessage = "Hello World!" `? Ahora vamos a leer ese mensaje almacenado en nuestro contrato inteligente e imprimirlo en la consola.
+¿Recuerda cuando desplegamos nuestro contrato con `initMessage = "Hello world!"`? Ahora vamos a leer ese mensaje almacenado en nuestro contrato inteligente e imprimirlo en la consola.
-En JavaScript, las funciones asíncronas se utilizan al interactuar con las redes. Para obtener más información sobre las funciones asíncronas, [lea este artículo de medium](https://blog.bitsrc.io/understanding-asynchronous-javascript-the-event-loop-74cd408419ff).
+En JavaScript, las funciones asíncronas se utilizan al interactuar con las redes. Para saber más sobre las funciones asíncronas, [lea este artículo de Medium](https://blog.bitsrc.io/understanding-asynchronous-javascript-the-event-loop-74cd408419ff).
-Utilice el siguiente código para acttivar la función `message` en nuestro contrato inteligente y leer el mensaje de inicio:
+Utilice el siguiente código para llamar a la función `message` en nuestro contrato inteligente y leer el mensaje de inicio:
```javascript
// interact.js
@@ -473,24 +476,24 @@ Utilice el siguiente código para acttivar la función `message` en nuestro cont
async function main() {
const message = await helloWorldContract.message()
- console.log("The message is: " + message)
+ console.log("El mensaje es: " + message)
}
main()
```
-Después de ejecutar el archivo usando `npx hardhat run scripts/interact.js` en la terminal, deberíamos ver esta respuesta:
+Después de ejecutar el archivo usando `npx hardhat run scripts/interact.js` en la terminal, debería ver esta respuesta:
```
-The message is: Hello world!
+El mensaje es: Hello world!
```
-¡Felicidades! Acaba de leer con éxito los datos de los contratos inteligentes de la cadena de bloques de Ethereum, ¡así se hace!
+¡Enhorabuena! Acaba de leer con éxito los datos del contrato inteligente de la cadena de bloques de Ethereum, ¡bien hecho!
-### Actualizar el mensaje {#update-the-message}
+### Actualice el mensaje {#update-the-message}
-En lugar de solo leer el mensaje, ¡también podemos actualizar el mensaje guardado en nuestro contrato inteligente utilizando la función `update`! No está mal, ¿verdad?
+En lugar de solo leer el mensaje, ¡también podemos actualizar el mensaje guardado en nuestro contrato inteligente utilizando la función `update`! Genial, ¿verdad?
-Para actualizar el mensaje, podemos activar directamente la función `update` en nuestro objeto Contract instanciado:
+Para actualizar el mensaje, podemos llamar directamente a la función `update` en nuestro objeto Contract instanciado:
```javascript
// interact.js
@@ -499,22 +502,22 @@ Para actualizar el mensaje, podemos activar directamente la función `update` en
async function main() {
const message = await helloWorldContract.message()
- console.log("The message is: " + message)
+ console.log("El mensaje es: " + message)
- console.log("Updating the message...")
- const tx = await helloWorldContract.update("This is the new message.")
+ console.log("Actualizando el mensaje...")
+ const tx = await helloWorldContract.update("Este es el nuevo mensaje.")
await tx.wait()
}
main()
```
-Tenga en cuenta que en la línea 11, activamos `.wait()` en el objeto de transacción devuelto. Esto garantiza que nuestro script espere a que la transacción se mine en la cadena de bloques antes de salir de la función. Si la activación `.wait()` no está incluida, es posible que el script no vea el valor `message` actualizado en el contrato.
+Tenga en cuenta que en la línea 11, hacemos una llamada a `.wait()` en el objeto de transacción devuelto. Esto garantiza que nuestro script espere a que la transacción se mine en la cadena de bloques antes de salir de la función. Si no se incluye la llamada `.wait()`, es posible que el script no vea el valor `message` actualizado en el contrato.
-### Leer el nuevo mensaje {#read-the-new-message}
+### Lea el nuevo mensaje {#read-the-new-message}
-Debería poder repetir el [paso anterior](#read-the-init-message) para leer el valor actualizado del `message`. ¡Dedique unos instantes y vea si puede hacer los cambios necesarios para imprimir ese nuevo valor!
+Debería poder repetir el [paso anterior](#read-the-init-message) para leer el valor `message` actualizado. ¡Tómese un momento y vea si puede hacer los cambios necesarios para imprimir ese nuevo valor!
-A modo de ayuda visual, así es como debería ser su archivo `interact.js` en este momento:
+Si necesita una pista, así es como debería verse su archivo `interact.js` en este momento:
```javascript
// interact.js
@@ -525,16 +528,16 @@ const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS
const contract = require("../artifacts/contracts/HelloWorld.sol/HelloWorld.json")
-// provider - Alchemy
+// proveedor - Alchemy
const alchemyProvider = new ethers.providers.AlchemyProvider(
(network = "goerli"),
API_KEY
)
-// signer - you
+// firmante - usted
const signer = new ethers.Wallet(PRIVATE_KEY, alchemyProvider)
-// contract instance
+// instancia del contrato
const helloWorldContract = new ethers.Contract(
CONTRACT_ADDRESS,
contract.abi,
@@ -543,46 +546,46 @@ const helloWorldContract = new ethers.Contract(
async function main() {
const message = await helloWorldContract.message()
- console.log("The message is: " + message)
+ console.log("El mensaje es: " + message)
- console.log("Updating the message...")
- const tx = await helloWorldContract.update("this is the new message")
+ console.log("Actualizando el mensaje...")
+ const tx = await helloWorldContract.update("este es el nuevo mensaje")
await tx.wait()
const newMessage = await helloWorldContract.message()
- console.log("The new message is: " + newMessage)
+ console.log("El nuevo mensaje es: " + newMessage)
}
main()
```
-¡Ahora solo ejecuta el script y deberías poder ver el mensaje antiguo, el estado de la actualización y el nuevo mensaje impreso en tu terminal!
+¡Ahora solo ejecute el script y debería poder ver el mensaje antiguo, el estado de la actualización y el nuevo mensaje impreso en su terminal!
`npx hardhat run scripts/interact.js --network goerli`
```
-The message is: Hello World!
-Updating the message...
-The new message is: This is the new message.
+El mensaje es: ¡Hola, mundo!
+Actualizando el mensaje...
+El nuevo mensaje es: Este es el nuevo mensaje.
```
-Mientras ejecuta ese script, puede notar que el paso `Updating the message...` tarda un tiempo en cargarse antes de que se cargue el nuevo mensaje. Eso se debe al proceso de minería; si tiene curiosidad sobre el seguimiento de las transacciones mientras se están minando, visite la [zona de espera de Alchemy](https://dashboard.alchemyapi.io/mempool) para ver el estado de una transacción. Si se elimina la transacción, también es útil comprobar [Goerli Etherscan](https://goerli.etherscan.io) y buscar el hash de su transacción.
+Mientras ejecuta ese script, puede notar que el paso `Updating the message...` tarda un tiempo en cargarse antes de que se cargue el nuevo mensaje. Eso se debe al proceso de minería; si tiene curiosidad sobre el seguimiento de las transacciones mientras se están minando, visite el [mempool de Alchemy](https://dashboard.alchemyapi.io/mempool) para ver el estado de una transacción. Si la transacción es descartada, también es útil comprobar [Goerli Etherscan](https://goerli.etherscan.io) y buscar el hash de su transacción.
-## Parte 3: Publicar su contrato inteligente en Etherscan {#part-3-publish-your-smart-contract-to-etherscan}
+## Parte 3: Publique su contrato inteligente en Etherscan {#part-3-publish-your-smart-contract-to-etherscan}
Ya ha hecho la parte más dura para dar vida a su contrato inteligente; ¡ahora es el momento de compartirlo con el mundo!
Al verificar su contrato inteligente en Etherscan, cualquiera puede ver su código fuente e interactuar con su contrato inteligente. ¡Empecemos!
-### Paso 1: Genera una clave API en tu cuenta de Etherscan {#step-1-generate-an-api-key-on-your-etherscan-account}
+### Paso 1: Genere una clave de API en su cuenta de Etherscan {#step-1-generate-an-api-key-on-your-etherscan-account}
-Se necesita una clave API de Etherscan para verificar que es el propietario del contrato inteligente que está intentando publicar.
+Se necesita una clave de API de Etherscan para verificar que es el propietario del contrato inteligente que está intentando publicar.
-Si aún no tiene una cuenta de Etherscan, [regístrese para obtenela](https://etherscan.io/register).
+Si aún no tiene una cuenta de Etherscan, [regístrese para obtener una cuenta](https://etherscan.io/register).
-Una vez que haya iniciado sesión, busque su nombre de usuario en la barra de navegación, pase el cursor sobre él y seleccione el botón **Mi perfil**.
+Una vez que haya iniciado sesión, busque su nombre de usuario en la barra de navegación, pase el cursor sobre él y seleccione el botón **My profile**.
-En su página de perfil, debería ver una barra de navegación lateral. En la barra de navegación lateral, seleccione **Teclas API**. A continuación, presione el botón «Añadir» para crear una nueva clave de API, nombre su aplicación **hello-world**y presione el botón **Crear nueva clave de API**.
+En su página de perfil, debería ver una barra de navegación lateral. En la barra de navegación lateral, seleccione **API Keys**. A continuación, presione el botón «Add» para crear una nueva clave de API, nombre su aplicación **hello-world** y presione el botón **Create New API Key**.
Su nueva clave de API debería aparecer en la tabla de claves de API. Copie la clave de la API en su portapapeles.
@@ -591,18 +594,18 @@ A continuación, tenemos que añadir la clave de la API de Etherscan a nuestro a
Después de añadirlo, su archivo `.env` debería tener este aspecto:
```javascript
-API_URL = "https://eth-goerli.alchemyapi.io/v2/your-api-key"
-PUBLIC_KEY = "your-public-account-address"
-PRIVATE_KEY = "your-private-account-address"
-CONTRACT_ADDRESS = "your-contract-address"
-ETHERSCAN_API_KEY = "your-etherscan-key"
+API_URL = "https://eth-goerli.alchemyapi.io/v2/su-clave-de-api"
+PUBLIC_KEY = "la-dirección-de-su-cuenta-pública"
+PRIVATE_KEY = "la-dirección-de-su-cuenta-privada"
+CONTRACT_ADDRESS = "la-dirección-de-su-contrato"
+ETHERSCAN_API_KEY = "su-clave-de-etherscan"
```
-### Contratos inteligentes desplegados por Hardhat {#hardhat-deployed-smart-contracts}
+### Contratos inteligentes desplegados con Hardhat {#hardhat-deployed-smart-contracts}
#### Instalar hardhat-etherscan {#install-hardhat-etherscan}
-Publicar su contrato en Etherscan usando Hardhat es sencillo. Primero tendrás que instalar el complemento `hardhat-etherscan` para empezar. `hardhat-etherscan` verificará automáticamente el código fuente del contrato inteligente y el ABI en Etherscan. Para añadirlo, en el directorio `hello-world` se ejecuta:
+Publicar su contrato en Etherscan usando Hardhat es sencillo. Primero tendrá que instalar el plugin `hardhat-etherscan` para empezar. `hardhat-etherscan` verificará automáticamente el código fuente del contrato inteligente y la ABI en Etherscan. Para añadir esto, en el directorio `hello-world` ejecute:
```text
npm install --save-dev @nomiclabs/hardhat-etherscan
@@ -630,24 +633,24 @@ module.exports = {
},
},
etherscan: {
- // Your API key for Etherscan
- // Obtain one at https://etherscan.io/
+ // Su clave API para Etherscan
+ // Obtenga una en https://etherscan.io/
apiKey: ETHERSCAN_API_KEY,
},
}
```
-#### Verificar su contrato inteligente en Etherscan {#verify-your-smart-contract-on-etherscan}
+#### Verifique su contrato inteligente en Etherscan {#verify-your-smart-contract-on-etherscan}
Asegúrese de que todos los archivos estén guardados y de que todas las variables `.env` estén configuradas correctamente.
-Ejecute la tarea `verificar`, pasando la dirección del contrato y la red a donde está desplegada:
+Ejecute la tarea `verify`, pasando la dirección del contrato y la red en la que está desplegado:
```text
npx hardhat verify --network goerli DEPLOYED_CONTRACT_ADDRESS 'Hello World!'
```
-Asegúrese de que `DEPLOYED_CONTRACT_ADDRESS` sea la dirección de su contrato inteligente implementado en la red de pruebas de Goerli. Además, el argumento final (`'Hello World!' `) debe ser el mismo valor de cadena utilizado [durante el paso de despliegue en la parte 1](#write-our-deploy-script).
+Asegúrese de que `DEPLOYED_CONTRACT_ADDRESS` es la dirección de su contrato inteligente desplegado en la red de prueba Goerli. Además, el argumento final (`'Hello World!'`) debe ser el mismo valor de cadena utilizado [durante el paso de despliegue en la parte 1](#write-our-deploy-script).
Si todo va bien, aparecerá el siguiente mensaje en su terminal:
@@ -657,52 +660,52 @@ contracts/HelloWorld.sol:HelloWorld at 0xdeployed-contract-address
for verification on Etherscan. Waiting for verification result...
-Successfully verified contract HelloWorld on Etherscan.
-https://goerli.etherscan.io/address/#contracts
+Contrato HelloWorld verificado correctamente en Etherscan.
+https://goerli.etherscan.io/address/#contracts
```
-¡Felicidades! ¡Su código de contrato inteligente está en Etherscan!
+¡Enhorabuena! ¡El código de su contrato inteligente está en Etherscan!
### ¡Eche un vistazo a su contrato inteligente en Etherscan! {#check-out-your-smart-contract-on-etherscan}
Cuando navegue al enlace proporcionado en su terminal, ¡debería poder ver su código de contrato inteligente y ABI publicado en Etherscan!
-**Yuhuuuu ¡logrado, campeón! ¡Ahora cualquiera puede llamar o escribir a su contrato inteligente! ¡Estamos deseando ver lo que construye a continuación!**
+**¡Yuhuuuu! ¡Lo ha conseguido, campeón!** ¡Ahora cualquiera puede llamar o escribir a su contrato inteligente! **¡Estamos deseando ver lo que construye a continuación!**
-## Parte 4: Integrar su contrato inteligente con el frontend {#part-4-integrating-your-smart-contract-with-the-frontend}
+## Parte 4: Integración de su contrato inteligente con el frontend {#part-4-integrating-your-smart-contract-with-the-frontend}
Al final de este tutorial, sabrá cómo:
-- Conectar una cartera MetaMask a su DApp.
-- Leer los datos de su contrato inteligente utilizando la API [Alchemy Web3](https://docs.alchemy.com/alchemy/documentation/alchemy-web3).
+- Conectar una billetera MetaMask a su dapp
+- Leer datos de su contrato inteligente usando la API de [Alchemy Web3](https://docs.alchemy.com/alchemy/documentation/alchemy-web3)
- Firmar transacciones de Ethereum usando MetaMask.
-Para esta DApp, usaremos [React](https://reactjs.org/) como nuestro marco de frontend; sin embargo, es importante tener en cuenta que no pasaremos demasiado tiempo desglosando sus fundamentos, ya que nos centraremos principalmente en llevar la funcionalidad Web3 a nuestro proyecto.
+Para esta dapp, usaremos [React](https://react.dev/) como nuestro marco de frontend; sin embargo, es importante tener en cuenta que no pasaremos demasiado tiempo desglosando sus fundamentos, ya que nos centraremos principalmente en llevar la funcionalidad Web3 a nuestro proyecto.
-Como requisito previo, debe conocimientos de React a nivel principiante. De lo contrario, le recomendamos completar el tutorial oficial [Introducción a React](https://reactjs.org/tutorial/tutorial.html).
+Como requisito previo, debe conocimientos de React a nivel principiante. De lo contrario, le recomendamos completar el [tutorial oficial de Introducción a React](https://react.dev/learn).
-### Clone los archivos de inicio {#clone-the-starter-files}
+### Clonar los archivos de inicio {#clone-the-starter-files}
-Primero, vaya al [hello-world-part-four repositorio de GitHub](https://github.com/alchemyplatform/hello-world-part-four-tutorial) para obtener los archivos de inicio de este proyecto y clonar este repositorio en su máquina local.
+Primero, ve al [repositorio de GitHub hello-world-part-four](https://github.com/alchemyplatform/hello-world-part-four-tutorial) para obtener los archivos de inicio de este proyecto y clona este repositorio en tu máquina local.
-Abra el repositorio clonado localmente. Tenga en cuenta que contiene dos carpetas: `starter-files` y `completed`.
+Abre el repositorio clonado localmente. Fíjate que contiene dos carpetas: `starter-files` y `completed`.
-- `starter-files`: **estaremos trabajando en este directorio**, conectaremos la interfaz de usuario a su cartera Ethereum y al contrato inteligente que publicamos en Etherscan en la [Parte 3](#part-3).
-- `completed` contiene todo el tutorial completado y solo debe usarse como referencia si se queda atascado.
+- `starter-files`: **trabajaremos en este directorio**, conectaremos la IU a tu billetera de Ethereum y al contrato inteligente que publicamos en Etherscan en la [Parte 3](#part-3).
+- `completed` contiene el tutorial completo y solo debe usarse como referencia si te atascas.
-A continuación, abra su copia de `starter-files` en su editor de código favorito y luego navegue hasta la carpeta `src`.
+A continuación, abre tu copia de `starter-files` en tu editor de código favorito y luego navega a la carpeta `src`.
-Todo el código que escribiremos permanecerá en la carpeta `src`. Editaremos el componente `HelloWorld.js` y los archivos JavaScript `util/interact.js` para dar a nuestro proyecto la funcionalidad Web3.
+Todo el código que escribiremos estará en la carpeta `src`. Editaremos el componente `HelloWorld.js` y los archivos JavaScript `util/interact.js` para dar a nuestro proyecto la funcionalidad de Web3.
-### Echar un vistazo a los archivos iniciales {#check-out-the-starter-files}
+### Echa un vistazo a los archivos de inicio {#check-out-the-starter-files}
-Antes de empezar a codificar, exploremos lo que se nos proporciona en los archivos de inicio.
+Antes de empezar a programar, exploremos lo que se nos proporciona en los archivos de inicio.
-#### Ejecute su proyecto de react {#get-your-react-project-running}
+#### Ponga en marcha su proyecto de React {#get-your-react-project-running}
Comencemos por ejecutar el proyecto React en nuestro navegador. La belleza de React es que, una vez que tenemos nuestro proyecto corriendo en el navegador, cualquier cambio que guardemos será actualizado en vivo en el navegador.
-Para ejecutar el proyecto, navegue hasta el directorio raíz de la carpeta `starter-files`, y ejecute `npm install` en su terminal para instalar las dependencias del proyecto:
+Para que el proyecto se ejecute, navega al directorio raíz de la carpeta `starter-files` y ejecuta `npm install` en tu terminal para instalar las dependencias del proyecto:
```bash
cd starter-files
@@ -715,15 +718,15 @@ Una vez que hayan terminado de instalarse, ejecute `npm start` en su terminal:
npm start
```
-Al hacerlo, debería abrir [http://localhost:3000/](http://localhost:3000/) en su navegador, donde verá la interfaz de nuestro proyecto. Debe consistir en un campo \(un lugar para actualizar el mensaje almacenado en su contrato inteligente\), un botón «Conectar cartera» y un botón «Actualizar».
+Al hacerlo, se debería abrir [http://localhost:3000/](http://localhost:3000/) en tu navegador, donde verás el frontend de nuestro proyecto. Debería constar de un campo (un lugar para actualizar el mensaje almacenado en tu contrato inteligente), un botón «Conectar billetera» y un botón «Actualizar».
-Si intentas hacer clic en cualquiera de los botones, te darás cuenta de que no funcionan, eso es porque todavía tenemos que programar su funcionalidad.
+Si intentas hacer clic en cualquiera de los botones, te darás cuenta de que no funcionan; esto se debe a que todavía tenemos que programar su funcionalidad.
#### El componente `HelloWorld.js` {#the-helloworld-js-component}
-Volvamos a la carpeta `src` de nuestro editor y abramos el archivo `HelloWorld.js`. Es muy importante que entendamos todo en este archivo, ya que es el componente principal en React en el que trabajaremos.
+Volvamos a la carpeta `src` en nuestro editor y abramos el archivo `HelloWorld.js`. Es muy importante que entendamos todo en este archivo, ya que es el componente principal en React en el que trabajaremos.
-En la parte superior de este archivo, notará que tenemos varias declaraciones de importación que son necesarias para que nuestro proyecto se ejecute, incluida la biblioteca React, los ganchos useEffect y useState, algunos elementos del `./util/interact.js` (¡los describiremos con más detalle pronto!), y el logotipo de Alchemy.
+En la parte superior de este archivo, notarás que tenemos varias sentencias de importación que son necesarias para que nuestro proyecto se ejecute, incluyendo la biblioteca React, los hooks useEffect y useState, algunos elementos de `./util/interact.js` (¡los describiremos con más detalle pronto!) y el logotipo de Alchemy.
```javascript
// HelloWorld.js
@@ -746,116 +749,116 @@ A continuación, tenemos nuestras variables de estado que actualizaremos despué
```javascript
// HelloWorld.js
-//State variables
+//Variables de estado
const [walletAddress, setWallet] = useState("")
const [status, setStatus] = useState("")
-const [message, setMessage] = useState("No connection to the network.")
+const [message, setMessage] = useState("No hay conexión a la red.")
const [newMessage, setNewMessage] = useState("")
```
Esto es lo que representa cada una de las variables:
-- `walletAddress`: cadena que almacena la dirección de la billetera del usuario
-- `status`: una cadena que almacena un mensaje útil que guía al usuario sobre cómo interactuar con la DApp.
+- `walletAddress`: una cadena que almacena la dirección del monedero del usuario
+- `status`: una cadena que almacena un mensaje útil que guía al usuario sobre cómo interactuar con la dapp.
- `message`: una cadena que almacena el mensaje actual en el contrato inteligente.
- `newMessage`: una cadena que almacena el nuevo mensaje que se escribirá en el contrato inteligente.
-Después de las variables de estado, verá cinco funciones no implementadas: `useEffect` ,`addSmartContractListener`, `addWalletListener` , `connectWalletPressed` y `onUpdatePressed`. Explicaremos lo que hacen a continuación:
+Después de las variables de estado, verás cinco funciones no implementadas: `useEffect`, `addSmartContractListener`, `addWalletListener`, `connectWalletPressed` y `onUpdatePressed`. A continuación explicaremos lo que hacen:
```javascript
// HelloWorld.js
-//called only once
+//se llama solo una vez
useEffect(async () => {
- //TODO: implement
+ //TODO: implementar
}, [])
function addSmartContractListener() {
- //TODO: implement
+ //TODO: implementar
}
function addWalletListener() {
- //TODO: implement
+ //TODO: implementar
}
const connectWalletPressed = async () => {
- //TODO: implement
+ //TODO: implementar
}
const onUpdatePressed = async () => {
- //TODO: implement
+ //TODO: implementar
}
```
-- [`useEffect`](https://reactjs.org/docs/hooks-effect.html): este es un gancho de React que se activa después de representar su componente. Debido a que tiene una propiedad de de matriz vacía `[]` integrada \(ver línea 4\), solo se activará en la _primera_ representación del componente. Aquí cargaremos el mensaje actual almacenado en nuestro contrato inteligente, activaremos nuestros oyentes de contrato inteligente y cartera, y actualizaremos nuestra interfaz de usuario para reflejar si una cartera ya está conectada.
-- `addSmartContractListener`: esta función configura un oyente que vigilará el evento `UpdatedMessages` de nuestro contrato HelloWorld y actualizará nuestra interfaz de usuario cuando se cambie el mensaje en nuestro contrato inteligente.
-- `addWalletListener`: esta función configura un oyente que detecta cambios en el estado de la cartera MetaMask del usuario, como cuando el usuario desconecta su cartera o cambia de dirección.
-- `connectWalletPressed`: esta función se activará para conectar la cartera MetaMask del usuario a nuestra DApp.
-- `onUpdatePressed` - esta función se llamará cuando el usuario quiera actualizar el mensaje almacenado en el contrato inteligente.
+- [`useEffect`](https://legacy.reactjs.org/docs/hooks-effect.html): este es un hook de React que se llama después de que tu componente se renderiza. Debido a que se le pasa un prop de array vacío `[]` (ver línea 4), solo se llamará en la _primera_ renderización del componente. Aquí cargaremos el mensaje actual almacenado en nuestro contrato inteligente, llamaremos a nuestros oyentes de contrato inteligente y billetera, y actualizaremos nuestra IU para reflejar si ya hay una billetera conectada.
+- `addSmartContractListener`: esta función configura un oyente que estará atento al evento `UpdatedMessages` de nuestro contrato HelloWorld y actualizará nuestra IU cuando el mensaje cambie en nuestro contrato inteligente.
+- `addWalletListener`: esta función configura un oyente que detecta cambios en el estado de la billetera de MetaMask del usuario, como cuando el usuario desconecta su billetera o cambia de dirección.
+- `connectWalletPressed`: esta función se llamará para conectar la billetera de MetaMask del usuario a nuestra dapp.
+- `onUpdatePressed`: esta función se llamará cuando el usuario quiera actualizar el mensaje almacenado en el contrato inteligente.
Cerca del final de este archivo, tenemos la interfaz de usuario de nuestro componente.
```javascript
// HelloWorld.js
-//the UI of our component
+//la IU de nuestro componente
return (
)
```
-Si escanea este código con cuidado, observará dónde usamos nuestras diversas variables de estado en nuestra interfaz de usuario:
+Si examinas este código con atención, verás dónde usamos nuestras diversas variables de estado en nuestra IU:
-- En las líneas 6-12, si la cartera del usuario está conectada \(es decir, `walletAddress.length > 0`\), mostramos una versión truncada del usuario `walletAddress` en el botón con el ID «walletButton»; de lo contrario, simplemente figura «Connect Wallet».
+- En las líneas 6-12, si la billetera del usuario está conectada (es decir, `walletAddress.length > 0`), mostramos una versión truncada de la `walletAddress` del usuario en el botón con el ID «walletButton»; de lo contrario, simplemente dice «Conectar billetera».
- En la línea 17, mostramos el mensaje actual almacenado en el contrato inteligente, que se captura en la cadena `message`.
-- En las líneas 23-26, utilizamos un [componente controlado](https://reactjs.org/docs/forms.html#controlled-components) para actualizar nuestra variable de estado `newMessage` cuando cambia el contenido del campo de texto.
+- En las líneas 23-26, utilizamos un [componente controlado](https://legacy.reactjs.org/docs/forms.html#controlled-components) para actualizar nuestra variable de estado `newMessage` cuando cambia la entrada en el campo de texto.
-Además de nuestras variables de estado, también verá que las funciones `connectWalletPressed` y `onUpdatePressed` se activan cuando se hace clic en los botones con las ID `publishButton` y `walletButton` respectivamente.
+Además de nuestras variables de estado, también verás que las funciones `connectWalletPressed` y `onUpdatePressed` se llaman cuando se hace clic en los botones con los ID `publishButton` y `walletButton` respectivamente.
-Por último, abordemos dónde se ha añadido este componente `HelloWorld.js`.
+Por último, veamos dónde se añade este componente `HelloWorld.js`.
-Si va al archivo `App.js`, que es el componente principal de React que actúa como contenedor para todos los demás componentes, verá que nuestro componente `HelloWorld.js` aparece en la línea 7.
+Si vas al archivo `App.js`, que es el componente principal en React que actúa como contenedor para todos los demás componentes, verás que nuestro componente `HelloWorld.js` se inyecta en la línea 7.
-Por último, pero no por ello menos importante, echemos un vistazo a otro archivo que le proporcionamos, el archivo `interact.js`.
+Por último, pero no por ello menos importante, echemos un vistazo a otro archivo que se te proporciona, el archivo `interact.js`.
#### El archivo `interact.js` {#the-interact-js-file}
-Dado que queremos prescribir el paradigma [M-V-C](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller), deberemos tener un archivo por separado que contenga todas nuestras funciones para administrar la lógica, los datos y las reglas de nuestra DApp, para luego exportar esas funciones a nuestro frontend \(nuestro componente `HelloWorld.js`\).
+Como queremos seguir el paradigma [M-V-C](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller), querremos un archivo separado que contenga todas nuestras funciones para gestionar la lógica, los datos y las reglas de nuestra dapp, y luego poder exportar esas funciones a nuestro frontend (nuestro componente `HelloWorld.js`).
👆🏽¡Este es el propósito exacto de nuestro archivo `interact.js`!
-Vaya a la carpeta `util` en su directorio `src`, y se dará cuenta de que hemos incluido un archivo llamado `interact.js` que contendrá todas nuestras funciones y variables de interacción de contratos inteligentes y cartera.
+Navega a la carpeta `util` en tu directorio `src`, y notarás que hemos incluido un archivo llamado `interact.js` que contendrá todas nuestras funciones y variables de interacción con el contrato inteligente y la billetera.
```javascript
// interact.js
@@ -871,55 +874,55 @@ const getCurrentWalletConnected = async () => {}
export const updateMessage = async (message) => {}
```
-Observará en la parte superior del archivo que hemos comentado el objeto `helloWorldContract`. Más adelante en este tutorial, dejaremos de comentar este objeto e instanciaremos nuestro contrato inteligente en esta variable, que luego exportaremos a nuestro componente `HelloWorld.js`.
+Notarás que en la parte superior del archivo hemos comentado el objeto `helloWorldContract`. Más adelante en este tutorial, descomentaremos este objeto e instanciaremos nuestro contrato inteligente en esta variable, que luego exportaremos a nuestro componente `HelloWorld.js`.
Las cuatro funciones no implementadas después de nuestro objeto `helloWorldContract` hacen lo siguiente:
-- `loadCurrentMessage`: esta función maneja la lógica de cargar el mensaje actual almacenado en el contrato inteligente. Hará leer _read_ el contrato inteligente de Hello World utilizando la [API de Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3).
-- `connectWallet`: esta función conectará el MetaMask del usuario a nuestra DApp.
-- `getCurrentWalletConnected`: esta función comprobará si una cuenta de Ethereum ya está conectada a nuestra DApp al cargar la página y actualizará nuestra interfaz de usuario en consecuencia.
-- `updateMessage`: esta función actualizará el mensaje almacenado en el contrato inteligente. Hará una escritura _write_ al contrato inteligente de Hello World, por lo que la cartera de MetaMask del usuario tendrá que firmar una transacción de Ethereum para actualizar el mensaje.
+- `loadCurrentMessage`: esta función gestiona la lógica de cargar el mensaje actual almacenado en el contrato inteligente. Hará una llamada de _lectura_ al contrato inteligente Hello World utilizando la [API de Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3).
+- `connectWallet`: esta función conectará el MetaMask del usuario a nuestra dapp.
+- `getCurrentWalletConnected`: esta función comprobará si una cuenta de Ethereum ya está conectada a nuestra dapp al cargar la página y actualizará nuestra IU en consecuencia.
+- `updateMessage`: esta función actualizará el mensaje almacenado en el contrato inteligente. Hará una llamada de _escritura_ al contrato inteligente de Hello World, por lo que la billetera MetaMask del usuario tendrá que firmar una transacción de Ethereum para actualizar el mensaje.
-Ahora que entendemos con qué estamos trabajando, ¡vamos a averiguar cómo leer desde nuestro contrato inteligente!
+Ahora que entendemos con qué estamos trabajando, ¡vamos a averiguar cómo leer de nuestro contrato inteligente!
-### Paso 3: Leer desde su contrato inteligente {#step-3-read-from-your-smart-contract}
+### Paso 3: Lee de tu contrato inteligente {#step-3-read-from-your-smart-contract}
-Para leer desde su contrato inteligente, tendrá que configurar con éxito:
+Para leer de tu contrato inteligente, necesitarás configurar con éxito:
-- Una conexión API a la cadena Ethereum
-- Una instancia cargada de su contrato inteligente
-- Una función para activar su función de contrato inteligente
-- Un oyente para estar atento a las actualizaciones cuando cambien los datos que esté leyendo del contrato inteligente
+- Una conexión API a la cadena de Ethereum
+- Una instancia cargada de tu contrato inteligente
+- Una función para llamar a la función de tu contrato inteligente
+- Un oyente para estar atento a las actualizaciones cuando cambien los datos que estás leyendo del contrato inteligente
-Parecen demasiados pasos, ¡pero no se preocupe! ¡Le indicaremos cómo realizar cada uno de ellos paso a paso! :\)
+Puede que parezcan muchos pasos, ¡pero no te preocupes! ¡Te guiaremos paso a paso sobre cómo hacer cada uno de ellos! :\)
-#### Establecer una conexión API con la cadena Ethereum {#establish-an-api-connection-to-the-ethereum-chain}
+#### Establece una conexión API con la cadena de Ethereum {#establish-an-api-connection-to-the-ethereum-chain}
-Si lo recuerda, en el apartado 2 de este tutorial, utilizamos nuestra [llave de Alchemy Web3 para leer desde nuestro contrato inteligente](https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract/interacting-with-a-smart-contract#step-1-install-web3-library). También necesitara una clave de Alchemy Web3 en tu DApp para leer desde la cadena de bloques.
+¿Recuerdas que en la Parte 2 de este tutorial, usamos nuestra [clave de Alchemy Web3 para leer de nuestro contrato inteligente](https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract/interacting-with-a-smart-contract#step-1-install-web3-library)? También necesitarás una clave de Alchemy Web3 en tu dapp para leer de la cadena.
-Si aún no la tienes, instálela primero [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) navegando al directorio raíz de su `starter-files` y ejecutando el siguiente código en su terminal:
+Si aún no lo tienes, primero instala [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) navegando al directorio raíz de tus `starter-files` y ejecutando lo siguiente en tu terminal:
```text
npm install @alch/alchemy-web3
```
-[ Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) está construido sobre [Web3](https://docs.web3js.org/), de esta manera proporciona metodos mejorados de la API y otros beneficios importantes para que tu vida como desarrollador de Web3 sea mucho más fácil. Se diseñó para requerir una configuración mínima, por lo que puede comenzar a usarla en su aplicación de inmediato.
+[Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) es un envoltorio de [Web3.js](https://docs.web3js.org/), que proporciona métodos de API mejorados y otros beneficios cruciales para facilitar su vida como desarrollador de web3. Se diseñó para requerir una configuración mínima, por lo que puede comenzar a usarla en su aplicación de inmediato.
-Seguidamente, instale la biblioteca [dotenv](https://www.npmjs.com/package/dotenv) en su directorio de proyectos, así tendremos un lugar seguro donde almacenar nuestra clave de la API una vez que la obtengamos.
+Luego, instala el paquete [dotenv](https://www.npmjs.com/package/dotenv) en tu directorio de proyecto, para que tengamos un lugar seguro donde almacenar nuestra clave de API después de obtenerla.
```text
npm install dotenv --save
```
-Para nuestra DApp, ** utilizaremos nuestra clave para la API de Websockets ** en lugar de nuestra clave para la API HTTP, ya que nos permitirá configurar un oyente que detectará cuando el mensaje guardado en el contrato inteligente cambie.
+Para nuestra dapp, **usaremos nuestra clave de API de Websockets** en lugar de nuestra clave de API HTTP, ya que nos permitirá configurar un oyente que detecte cuándo cambia el mensaje almacenado en el contrato inteligente.
-Una vez que tenga la clave de la API, cree un archivo `.env` en su directorio de raíz y añadele su URL de Alchemy Websockets. A continuación, su archivo `.env` debería tener este aspecto:
+Una vez que tengas tu clave de API, crea un archivo `.env` en tu directorio raíz y añade tu URL de Alchemy Websockets. Después, tu archivo `.env` debería tener este aspecto:
```javascript
REACT_APP_ALCHEMY_KEY = wss://eth-goerli.ws.alchemyapi.io/v2/
```
-¡Estamos listos para poner en marcha nuestra terminal Alchemy Web3 en nuestra DApp! Volvamos de nuevo a nuestro `interact.js`, que se encuentra anidado dentro de nuestro archivo `util` y añada el siguiente código al comienzo del archivo:
+¡Ahora estamos listos para configurar nuestro punto de conexión de Alchemy Web3 en nuestra dapp! Volvamos a nuestro `interact.js`, que está anidado dentro de nuestra carpeta `util` y añadamos el siguiente código en la parte superior del archivo:
```javascript
// interact.js
@@ -932,23 +935,23 @@ const web3 = createAlchemyWeb3(alchemyKey)
//export const helloWorldContract;
```
-Primero importamos la clave Alchemy de nuestro archivo `.env` y luego pasamos nuestro `alchemyKey` a `createAlchemyWeb3` para establecer nuestra terminal Alchemy Web3.
+Arriba, primero importamos la clave de Alchemy desde nuestro archivo `.env` y luego pasamos nuestra `alchemyKey` a `createAlchemyWeb3` para establecer nuestro punto de conexión de Alchemy Web3.
-Una vez lista la terminal, ¡es momento de cargar nuestro contrato inteligente!
+Con este punto de conexión listo, ¡es hora de cargar nuestro contrato inteligente!
-#### Cargar su contrato inteligente Hello World {#loading-your-hello-world-smart-contract}
+#### Cargando tu contrato inteligente Hello World {#loading-your-hello-world-smart-contract}
-Para cargar su contrato inteligente Hello World, necesitará la dirección del contrato y ABI, puede encontrar ambos en Etherscan si ha completado previamente [ la Parte 3 de este tutorial.](/developers/tutorials/hello-world-smart-contract-fullstack/#part-3-publish-your-smart-contract-to-etherscan-part-3-publish-your-smart-contract-to-etherscan)
+Para cargar tu contrato inteligente Hello World, necesitarás su dirección de contrato y su ABI, los cuales se pueden encontrar en Etherscan si completaste la [Parte 3 de este tutorial.](/developers/tutorials/hello-world-smart-contract-fullstack/#part-3-publish-your-smart-contract-to-etherscan-part-3-publish-your-smart-contract-to-etherscan)
-#### Cómo obtener su contrato ABI de Etherscan {#how-to-get-your-contract-abi-from-etherscan}
+#### Cómo obtener el ABI de tu contrato desde Etherscan {#how-to-get-your-contract-abi-from-etherscan}
-Si omitió la Parte 3 de este tutorial, puede utilizar el contrato Hello World con dirección [0x6f3f635A9762B47954229Ea479b4541eAF402A6A](https://goerli.etherscan.io/address/0x6f3f635a9762b47954229ea479b4541eaf402a6a#code). Puedes encontrar su ABI [aquí](https://goerli.etherscan.io/address/0x6f3f635a9762b47954229ea479b4541eaf402a6a#code).
+Si te saltaste la Parte 3 de este tutorial, puedes usar el contrato HelloWorld con la dirección [0x6f3f635A9762B47954229Ea479b4541eAF402A6A](https://goerli.etherscan.io/address/0x6f3f635a9762b47954229ea479b4541eaf402a6a#code). Su ABI se puede encontrar [aquí](https://goerli.etherscan.io/address/0x6f3f635a9762b47954229ea479b4541eaf402a6a#code).
-Se necesita un contrato ABI para especificar qué función utilizará un contrato y para asegurar que la función devolverá datos en el formato esperado. Una vez que hayamos copiado nuestro contrato ABI, lo guardaremos como un archivo JSON que se llamará `contract-abi.json` en su directorio `src`.
+El ABI de un contrato es necesario para especificar qué función invocará un contrato, así como para garantizar que la función devuelva datos en el formato que esperas. Una vez que hayamos copiado el ABI de nuestro contrato, guardémoslo como un archivo JSON llamado `contract-abi.json` en tu directorio `src`.
-Deberá guardar su contrato -abi.json en su carpeta src.
+Tu archivo contract-abi.json debe estar almacenado en tu carpeta src.
-Con la dirección de nuestro contrato ABI y la terminal AlchemyWeb3, podemos utilizar el [contract method](https://docs.web3js.org/api/web3-eth-contract/class/Contract) para cargar una instancia de nuestro contrato inteligente. Importe su contrato ABI dentro del archivo `interact.js` y añada la direción de su contrato.
+Armados con la dirección de nuestro contrato, el ABI y el punto de conexión de Alchemy Web3, podemos usar el [método de contrato](https://docs.web3js.org/api/web3-eth-contract/class/Contract) para cargar una instancia de nuestro contrato inteligente. Importa el ABI de tu contrato en el archivo `interact.js` y añade la dirección de tu contrato.
```javascript
// interact.js
@@ -957,7 +960,7 @@ const contractABI = require("../contract-abi.json")
const contractAddress = "0x6f3f635A9762B47954229Ea479b4541eAF402A6A"
```
-Ahora podemos suprimir comentarios de nuestra variable `helloWorldContract`, y cargar el contrato inteligente utilizando nuestra terminal AlchemyWeb3:
+Ahora podemos finalmente descomentar nuestra variable `helloWorldContract` y cargar el contrato inteligente usando nuestro punto de conexión de AlchemyWeb3:
```javascript
// interact.js
@@ -967,7 +970,7 @@ export const helloWorldContract = new web3.eth.Contract(
)
```
-A modo de repaso, las primeras 12 lineas de su `interact.js` ahora deberían tener este aspecto:
+Para recapitular, las primeras 12 líneas de tu `interact.js` deberían tener este aspecto:
```javascript
// interact.js
@@ -986,13 +989,13 @@ export const helloWorldContract = new web3.eth.Contract(
)
```
-Ahora que tenemos cargado nuestro contrato, ¡podemos implementar nuestra función `loadCurrentMessage`!
+Ahora que tenemos nuestro contrato cargado, ¡podemos implementar nuestra función `loadCurrentMessage`!
-#### Implementar `loadCurrentMessage` en su archivo `interact.js` {#implementing-loadCurrentMessage-in-your-interact-js-file}
+#### Implementando `loadCurrentMessage` en tu archivo `interact.js` {#implementing-loadCurrentMessage-in-your-interact-js-file}
-Esta función es muy sencilla. Haremos una simple activación asíncrona Web3 para así leer de nuestro contrato. Nuestra función devolverá el mensaje almacenado en el contrato inteligente:
+Esta función es súper simple. Vamos a hacer una llamada asíncrona simple a web3 para leer de nuestro contrato. Nuestra función devolverá el mensaje almacenado en el contrato inteligente:
-Actualice el `loadCurrentMessage` en su archivo `interact.js` de la siguiente manera:
+Actualiza `loadCurrentMessage` en tu archivo `interact.js` a lo siguiente:
```javascript
// interact.js
@@ -1003,60 +1006,60 @@ export const loadCurrentMessage = async () => {
}
```
-Dado que queremos mostrar este contrato inteligente en nuestra UI, actualizemos la función `useEffect` en nuestro componente `HelloWorld.js` de la siguiente manera:
+Como queremos mostrar este contrato inteligente en nuestra IU, actualicemos la función `useEffect` en nuestro componente `HelloWorld.js` a lo siguiente:
```javascript
// HelloWorld.js
-//called only once
+//llamado solo una vez
useEffect(async () => {
const message = await loadCurrentMessage()
setMessage(message)
}, [])
```
-Recuerde, solo queremos que nuestro `loadCurrentMessage` se active una sola vez durante la primera representación del componente. Pronto implementaremos `addSmartContractListener` para que actualice automáticamente la IU cada vez que cambie el mensaje en el contrato inteligente.
+Ten en cuenta que solo queremos que `loadCurrentMessage` se llame una vez durante la primera renderización del componente. Pronto implementaremos `addSmartContractListener` para actualizar automáticamente la IU después de que cambie el mensaje en el contrato inteligente.
-Antes de profundizar sobre nuestro oyente, ¡revisemos lo que tenemos hasta ahora! Guarde sus archivos `HelloWorld.js` y `interact.js` y luego vaya a [http://localhost:3000/](http://localhost:3000/)
+Antes de profundizar en nuestro oyente, ¡veamos qué tenemos hasta ahora! Guarda tus archivos `HelloWorld.js` e `interact.js`, y luego ve a [http://localhost:3000/](http://localhost:3000/)
-Notará que el mensaje actual ya no dice: «Sin conexión a la red». En su lugar reflejará el mensaje almacenado en el contrato inteligente. ¡Fantástico!
+Notarás que el mensaje actual ya no dice "Sin conexión a la red". En su lugar, refleja el mensaje almacenado en el contrato inteligente. ¡Genial!
-#### Ahora, su IU debería reflejar el mensaje almacenado en el contrato inteligente {#your-UI-should-now-reflect-the-message-stored-in-the-smart-contract}
+#### Tu IU ahora debería reflejar el mensaje almacenado en el contrato inteligente {#your-UI-should-now-reflect-the-message-stored-in-the-smart-contract}
-Con respecto al oyente...
+Ahora, hablando de ese oyente...
-#### Implementar `addSmartContractListener` {#implement-addsmartcontractlistener}
+#### Implementa `addSmartContractListener` {#implement-addsmartcontractlistener}
-Si hace memoria, en el archivo `HelloWorld.sol` que escribimos en [ la Parte 1 de esta serie de tutoriales](https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract#step-10-write-our-contract), recordará que existía un evento de contrato inteligente llamado `UpdatedMessages` y que se emite una vez que se utiliza la función `update` \(ver líneas 9 y 27\):
+Si recuerdas el archivo `HelloWorld.sol` que escribimos en la [Parte 1 de esta serie de tutoriales](https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract#step-10-write-our-contract), recordarás que hay un evento de contrato inteligente llamado `UpdatedMessages` que se emite después de que se invoca la función `update` de nuestro contrato inteligente (ver líneas 9 y 27):
```javascript
// HelloWorld.sol
-// Specifies the version of Solidity, using semantic versioning.
-// Learn more: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
+// Especifica la versión de Solidity, usando el control de versiones semántico.
+// Aprende más: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
pragma solidity ^0.7.3;
-// Defines a contract named `HelloWorld`.
-// Un contrato es una colección de funciones y datos (su estado). Once deployed, a contract resides at a specific address on the Ethereum blockchain. Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+// Define un contrato llamado `HelloWorld`.
+// Un contrato es una colección de funciones y datos (su estado). Una vez desplegado, un contrato reside en una dirección específica en la cadena de bloques de Ethereum. Aprende más: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
contract HelloWorld {
- //Emitted when update function is called
- //Smart contract events are a way for your contract to communicate that something happened on the blockchain to your app front-end, which can be 'listening' for certain events and take action when they happen.
+ //Emitido cuando se llama a la función de actualización
+ //Los eventos de contratos inteligentes son una forma para que su contrato comunique que algo sucedió en la cadena de bloques a su interfaz de aplicación, que puede estar 'escuchando' ciertos eventos y tomar medidas cuando suceden.
event UpdatedMessages(string oldStr, string newStr);
- // Declares a state variable `message` of type `string`.
- // Las variables de estado son variables cuyos valores se almacenan permanentemente en el almacenamiento del contrato. The keyword `public` makes variables accessible from outside a contract and creates a function that other contracts or clients can call to access the value.
+ // Declara una variable de estado `message` de tipo `string`.
+ // Las variables de estado son variables cuyos valores se almacenan permanentemente en el almacenamiento del contrato. La palabra clave `public` hace que las variables sean accesibles desde fuera de un contrato y crea una función que otros contratos o clientes pueden llamar para acceder al valor.
string public message;
- // Similar to many class-based object-oriented languages, a constructor is a special function that is only executed upon contract creation.
- // Los constructores se utilizan para inicializar los datos del contrato. Learn more:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ // Al igual que muchos lenguajes orientados a objetos basados en clases, un constructor es una función especial que solo se ejecuta en la creación del contrato.
+ // Los constructores se utilizan para inicializar los datos del contrato. Más información: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
constructor(string memory initMessage) {
- // Accepts a string argument `initMessage` and sets the value into the contract's `message` storage variable).
+ // Acepta un argumento de cadena `initMessage` y establece el valor en la variable de almacenamiento `message` del contrato).
message = initMessage;
}
- // A public function that accepts a string argument and updates the `message` storage variable.
+ // Una función pública que acepta un argumento de cadena y actualiza la variable de almacenamiento `message`.
function update(string memory newMessage) public {
string memory oldMsg = message;
message = newMessage;
@@ -1065,11 +1068,11 @@ contract HelloWorld {
}
```
-Los eventos del contrato inteligente son una forma de comunicar que ha pasado algo \(es decir, que se produjo un _evento_\) en la cadena de bloques que repercutió en su aplicación frontend. Podría tratarse de un «oyente» para eventos específicos y, al mismo tiempo, implementar las medidas de acción oportunas cuando ocurren.
+Los eventos de contrato inteligente son una forma de que tu contrato comunique que algo ha sucedido (es decir, hubo un _evento_) en la cadena de bloques a tu aplicación de frontend, que puede estar 'escuchando' eventos específicos y tomar medidas cuando suceden.
-La función `addSmartContractListener` prestará atención a nuestro evento de contrato inteligente Hello World `UpdatedMessages`, y actualizará nuestra IU para que muestre el nuevo mensaje.
+La función `addSmartContractListener` va a escuchar específicamente el evento `UpdatedMessages` de nuestro contrato inteligente Hello World y actualizará nuestra IU para mostrar el nuevo mensaje.
-Modifique `addSmartContractListener` de la siguiente manera:
+Modifica `addSmartContractListener` a lo siguiente:
```javascript
// HelloWorld.js
@@ -1081,18 +1084,18 @@ function addSmartContractListener() {
} else {
setMessage(data.returnValues[1])
setNewMessage("")
- setStatus("🎉 Your message has been updated!")
+ setStatus("🎉 ¡Tu mensaje ha sido actualizado!")
}
})
}
```
-Desmenucemos lo que pasa cuando el oyente detecta un evento:
+Desglosemos lo que sucede cuando el oyente detecta un evento:
-- Si ocurre un error en el momento de emitir el evento, este se verá reflejado en la IU a través de nuestra variable de estado `status`.
-- En caso contrario, utilizaremos el objeto devuelto `data`. `data.returnValues` es un arreglo indexado a cero, donde el primer elemento almacena el mensaje anterior, mientras que el segundo elemento almacena el mensaje actualizado. En conjunto, en un evento eficaz colocaremos nuestra cadena `message` en el mensaje actualizado, resetearemos la cadena `newMessage`, y actualizaremos nuestra variable de estado `status` para que refleje que se ha publicado un nuevo mensaje en nuestro contrato inteligente.
+- Si se produce un error cuando se emite el evento, se reflejará en la IU a través de nuestra variable de estado `status`.
+- De lo contrario, usaremos el objeto `data` devuelto. `data.returnValues` es un array indexado en cero donde el primer elemento del array almacena el mensaje anterior y el segundo elemento almacena el actualizado. En conjunto, en un evento exitoso estableceremos nuestra cadena `message` con el mensaje actualizado, borraremos la cadena `newMessage` y actualizaremos nuestra variable de estado `status` para reflejar que se ha publicado un nuevo mensaje en nuestro contrato inteligente.
-Por último, ejecutaremos nuestro oyente en nuestra función `useEffect` para que se inicialice en la primera representación del componente `HelloWorld.js`. Entonces, su función `useEffect` debería tener el siguiente aspecto:
+Finalmente, llamemos a nuestro oyente en nuestra función `useEffect` para que se inicialice en la primera renderización del componente `HelloWorld.js`. En total, tu función `useEffect` debería tener este aspecto:
```javascript
// HelloWorld.js
@@ -1104,45 +1107,45 @@ useEffect(async () => {
}, [])
```
-Ahora que podemos leer desde nuestro contrato inteligente, lo siguiente sería descifrar cómo podemos escribirlo. Sin embargo, para escribir en nuestra DApp, primero debemos tener una cartera de Ethereum conectada a la misma.
+Ahora que podemos leer de nuestro contrato inteligente, ¡sería genial descubrir cómo escribir en él también! Sin embargo, para escribir en nuestra dapp, primero debemos tener una billetera de Ethereum conectada a ella.
-Por lo tanto, la próxima cuestión que abordaremos será crear nuestra cartera de Ethereum \(MetaMask\) para luego conectarla con nuestra DApp.
+Entonces, a continuación, ¡abordaremos la configuración de nuestra billetera de Ethereum (MetaMask) y luego la conectaremos a nuestra dapp!
-### Paso 4: Crear su cartera de Ethereum {#step-4-set-up-your-ethereum-wallet}
+### Paso 4: Configura tu billetera de Ethereum {#step-4-set-up-your-ethereum-wallet}
-Antes de escribir nada en la cadena de Ethereum, los usuarios deben firmar las transacciones utilizando la clave privada de su cartera virtual. Para este tutorial, utilizaremos [MetaMask](https://metamask.io/), una cartera virtual en el navegador que se utiliza para administrar la dirección de su cuenta de Ethereum, ya que hace que la firma de esta transacción sea bastante simple para el usuario final.
+Para escribir cualquier cosa en la cadena de Ethereum, los usuarios deben firmar transacciones usando las claves privadas de su billetera virtual. Para este tutorial, usaremos [MetaMask](https://metamask.io/), una billetera virtual en el navegador que se usa para gestionar la dirección de tu cuenta de Ethereum, ya que hace que la firma de esta transacción sea súper fácil para el usuario final.
-Si quiere más información sobre cómo funcionan las transacciones en Ethereum, eche un vistazo a [esta página](/developers/docs/transactions/) de Ethereum Foundation.
+Si quiere entender más sobre cómo funcionan las transacciones en Ethereum, consulte [esta página](/developers/docs/transactions/) de la Fundación Ethereum.
#### Descargar MetaMask {#download-metamask}
-Puede descargar y crear una cuenta Metamask gratis [aquí](https://metamask.io/download). Cuando esté creando una cuenta, o si ya tiene una, asegúrese de cambiar de «Goerli Test Network» en la parte superior \(para que no se trate de dinero real\).
+Puede descargar y crear una cuenta de MetaMask gratis [aquí](https://metamask.io/download). Cuando estés creando una cuenta, o si ya tienes una, asegúrate de cambiar a la «red de prueba de Goerli» en la parte superior derecha (para no estar manejando dinero real).
-#### Añada ether a partir de un grifo {#add-ether-from-a-faucet}
+#### Añade ether desde un Faucet {#add-ether-from-a-faucet}
-Necesitaremos algunos Eth falsos para poder firmar una transacción en la cadena de bloques de Ethereum. Para obtener Eth, puede ir a [FaucETH](https://fauceth.komputing.org) e introducir la dirección de su cuenta Goerli, haga clic en «Request funds», luego seleccionar «Ethereum Testnet Goerli» y, por último, hacer clic en el botón «Request funds» nuevamente. Debería ver el Eth en su cuenta de MetaMask poco después.
+Para firmar una transacción en la cadena de bloques de Ethereum, necesitaremos algo de ETH falso. Para obtener ETH, puedes ir a [FaucETH](https://fauceth.komputing.org) e introducir la dirección de tu cuenta de Goerli, hacer clic en «Request funds», luego seleccionar «Ethereum Testnet Goerli» en el menú desplegable y finalmente hacer clic en el botón «Request funds» de nuevo. Debería ver el Eth en su cuenta de MetaMask poco después.
-#### Revisar su saldo {#check-your-balance}
+#### Comprueba tu saldo {#check-your-balance}
-Para verificar que nuestro saldo esté ahí, realicemos una solicitud [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) usando la [herramienta de compositor de Alchemy](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto devolverá la cantidad de Eth en nuestra billetera. Después de introducir la dirección de su cuenta de Metamask y hacer clic en «Send Request» (Enviar Solicitud), debería ver una respuesta como esta:
+Para comprobar que nuestro saldo está ahí, hagamos una solicitud [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) utilizando la [herramienta de composición de Alchemy](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D). Esto devolverá la cantidad de Eth en nuestra billetera. Después de introducir la dirección de su cuenta de Metamask y hacer clic en «Send Request», debería ver una respuesta como esta:
```text
{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}
```
-**NOTA:** Este resultado esta en wei, no en eth. Wei se usa como la denominación más pequeña de Ether. La conversión de wei a eth es: 1 eth = 10¹⁸ wei. Entonces si convertimos 0xde0b6b3a7640000 a decimal, obtenemos 1\*10¹⁸, que equivale a 1 eth.
+**NOTA:** Este resultado es en wei, no en eth. Wei se usa como la denominación más pequeña de Ether. La conversión de wei a eth es: 1 eth = 10¹⁸ wei. Entonces si convertimos 0xde0b6b3a7640000 a decimal, obtenemos 1\*10¹⁸, que equivale a 1 eth.
¡Fiu! Nuestro dinero de prueba está ahí sin problemas. 🤑
-### Paso 5: Conectate a tu UI en MetaMask {#step-5-connect-metamask-to-your-UI}
+### Paso 5: Conecta MetaMask a tu IU {#step-5-connect-metamask-to-your-UI}
Ahora que nuestra billetera de MetaMask está configurada, vamos a conectar nuestra dapp a ella.
-#### Función `connectWallet` {#the-connectWallet-function}
+#### La función `connectWallet` {#the-connectWallet-function}
-En nuestro archivo `interact.js`, implementaremos la función `connectWallet`, en la cual podremos ejecutar en nuestro componente `HelloWorld.js` posteriormente.
+En nuestro archivo `interact.js`, implementemos la función `connectWallet`, que luego podremos llamar en nuestro componente `HelloWorld.js`.
-Procedamos a modificar `connectWallet` como se muestra a continuación:
+Modifiquemos `connectWallet` a lo siguiente:
```javascript
// interact.js
@@ -1154,7 +1157,7 @@ export const connectWallet = async () => {
method: "eth_requestAccounts",
})
const obj = {
- status: "👆🏽 Write a message in the text-field above.",
+ status: "👆🏽 Escribe un mensaje en el campo de texto de arriba.",
address: addressArray[0],
}
return obj
@@ -1172,8 +1175,8 @@ export const connectWallet = async () => {
@@ -1183,30 +1186,26 @@ export const connectWallet = async () => {
}
```
-Entonces, ¿qué hace exactamente este extenso código?
+Entonces, ¿qué hace exactamente este bloque de código gigante?
-Bueno, en primer lugar, verifica que `window.ethereum` esté habilitado en su navegador.
+Bueno, primero, comprueba si `window.ethereum` está habilitado en tu navegador.
-`window.ethereum` es una API global inyectada por MetaMask y otros proveedores de billeteras que permite a los sitios web solicitar las cuentas de Ethereum de los usuarios. Si se aprueba, puede leer información de la cadena de bloques a la que está conectado el usuario y sugerir que este firme mensajes y transacciones. Revise la [documentación de MetaMask](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) para obtener más información.
+`window.ethereum` es una API global inyectada por MetaMask y otros proveedores de monederos que permite a los sitios web solicitar las cuentas de Ethereum de los usuarios. Si se aprueba, puede leer datos de las cadenas de bloques a las que el usuario está conectado y sugerir que el usuario firme mensajes y transacciones. ¡Consulte los [documentos de MetaMask](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) para obtener más información!
-Si `window.ethereum` _no está_ presente, eso significa que MetaMask no está instalado. Esto resulta en la devolución de un objeto JSON, donde el `address` devuelto es una cadena vacía y el objeto JSX `status` muestra que el usuario debe instalar MetaMask.
+Si `window.ethereum` _no está_ presente, significa que MetaMask no está instalado. Esto da como resultado la devolución de un objeto JSON, donde la `address` devuelta es una cadena vacía, y el objeto JSX `status` transmite que el usuario debe instalar MetaMask.
-Ahora, si `window.ethereum` _está_ presente, las cosas se ponen interesantes.
+Ahora, si `window.ethereum` _está_ presente, es cuando las cosas se ponen interesantes.
-Al utilizar un bucle de intentar/atrapar, intentaremos conectarnos a MetaMask ejecutando [`window.ethereum.request({ method: "eth_requestAccounts" });`](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts). La invocación de esta función abrirá MetaMask en el navegador, donde se le solicitará al usuario conectar su billetera a su dapp.
+Usando un bucle try/catch, intentaremos conectarnos a MetaMask llamando a [`window.ethereum.request({ method: "eth_requestAccounts" });`](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts). La invocación de esta función abrirá MetaMask en el navegador, donde se le solicitará al usuario conectar su billetera a su dapp.
-- Si el usuario decide conectarse, `method: "eth_requestAccounts"` devolverá una matriz que contiene todas las direcciones de cuenta del usuario que se conectaron a la DApp. De igual manera, nuestra función `connectWallet` devolverá un objeto JSON que contine la _primera_ `address` de este arreglo \(ver la línea 9\) y un mensaje de `status` que solicita al usuario escribir un mensaje al contrato inteligente.
-- Si el usuario rechaza la conexión, el objeto JSON tendrá una cadena vacía para la `address` devuelta y un mensaje de `status` donde se refleje que el usuario rechazó la conexión.
+- Si el usuario elige conectarse, `method: "eth_requestAccounts"` devolverá un array que contiene todas las direcciones de cuenta del usuario que se conectaron a la dapp. En conjunto, nuestra función `connectWallet` devolverá un objeto JSON que contiene la _primera_ `address` de esta matriz (consulte la línea 9) y un mensaje de `status` que solicita al usuario que escriba un mensaje en el smart contract.
+- Si el usuario rechaza la conexión, el objeto JSON contendrá una cadena vacía para la `address` devuelta y un mensaje de `status` que reflejará que el usuario ha rechazado la conexión.
-Una vez escrita la función `connectWallet`, el siguiente paso es ejecutarla en nuestro componente `HelloWorld.js`.
-
-
-
-#### Añada la función `connectWallet` a su componente de IU `HelloWorld.js` {#add-the-connectWallet-function-to-your-HelloWorld-js-ui-component}
-
-Navegue hasta la función `onnectWalletPressed` en `HelloWorld.js`, y actualícela de la siguiente manera:
+Ahora que hemos escrito esta función `connectWallet`, el siguiente paso es llamarla en nuestro componente `HelloWorld.js`.
+#### Añade la función `connectWallet` a tu componente de IU `HelloWorld.js` {#add-the-connectWallet-function-to-your-HelloWorld-js-ui-component}
+Navega a la función `connectWalletPressed` en `HelloWorld.js` y actualízala a lo siguiente:
```javascript
// HelloWorld.js
@@ -1218,30 +1217,25 @@ const connectWalletPressed = async () => {
}
```
+¿Te das cuenta de cómo la mayor parte de nuestra funcionalidad se abstrae de nuestro componente `HelloWorld.js` desde el archivo `interact.js`? ¡Esto es así para cumplir con el paradigma M-V-C!
-¿Nota cómo gran parte de nuestra funcionalidad se abstrae de nuestro componente `HelloWorld.js` del archivo `interact.js`? ¡Esto es así para cumplir con el paradigma M-V-C!
-
-En `connectWalletPressed`, simplemente hacemos una llamada en espera a nuestra función `conectWallet` importada y, utilizando su respuesta, actualizamos nuestras variables `status` y `walletAddress` a través de sus hooks de estado.
+En `connectWalletPressed`, simplemente hacemos una llamada await a nuestra función `connectWallet` importada y, usando su respuesta, actualizamos nuestras variables `status` y `walletAddress` a través de sus state hooks.
-Guardemos ambos archivos \(`HelloWorld.js` and `interact.js`\) y probemos nuestra IU.
+Ahora, guardemos ambos archivos (`HelloWorld.js` e `interact.js`) y probemos nuestra IU hasta ahora.
-Abra su navegador con el enlace [http://localhost:3000/](http://localhost:3000/), y pulse el botón «Connect Wallet» en el margen superior derecho de la página.
+Abre tu navegador en la página [http://localhost:3000/](http://localhost:3000/) y presiona el botón «Conectar billetera» en la parte superior derecha de la página.
Si tiene MetaMask instalado, se le debería solicitar conectar su billetera a su dapp. Acepte la invitación para establecer la conexión.
-Debería poder visualizar que, ahora, el botón de la cartera muestra que su dirección está conectada. ¡Fantástico!
-
-A continuación, pruebe actualizar la página... esto es extraño. Nuestro botón de billetera nos está solicitando conectar MetaMask, aunque ya está conectado...
-
-¡No tenga miedo! Podemos solucionarlo fácilmente, implementando `getCurrentWalletConnected` (¿vale?). Esto verificará si ya existe una dirección conectada a nuestra DApp y, en consecuencia, actualizará nuestra IU.
+¡Deberías ver que el botón de la billetera ahora refleja que tu dirección está conectada! ¡Síííí! 🔥
+A continuación, intente refrescar la página... esto es extraño. Nuestro botón de billetera nos está solicitando conectar MetaMask, aunque ya está conectado...
+Sin embargo, ¡no temas! Podemos solucionarlo fácilmente (¿lo pillas?). ¡implementando `getCurrentWalletConnected`, que comprobará si una dirección ya está conectada a nuestra dapp y actualizará nuestra IU en consecuencia!
#### La función `getCurrentWalletConnected` {#the-getcurrentwalletconnected-function}
-Actualice su función `getCurrentWalletConnected` en el archivo `interact.js` como se muestra a continuación:
-
-
+Actualiza tu función `getCurrentWalletConnected` en el archivo `interact.js` a lo siguiente:
```javascript
// interact.js
@@ -1255,12 +1249,12 @@ export const getCurrentWalletConnected = async () => {
if (addressArray.length > 0) {
return {
address: addressArray[0],
- status: "👆🏽 Write a message in the text-field above.",
+ status: "👆🏽 Escribe un mensaje en el campo de texto de arriba.",
}
} else {
return {
address: "",
- status: "🦊 Connect to MetaMask using the top right button.",
+ status: "🦊 Conéctate a MetaMask usando el botón de la esquina superior derecha.",
}
}
} catch (err) {
@@ -1277,8 +1271,8 @@ export const getCurrentWalletConnected = async () => {
@@ -1288,14 +1282,11 @@ export const getCurrentWalletConnected = async () => {
}
```
+Este código es _muy_ similar a la función `connectWallet` que acabamos de escribir en el paso anterior.
-Este código es _bastante_ similar a la función `connectWallet` que escribimos en el paso anterior.
-
-La principal diferencia es que, en vez de llamar al método `eth_requestAccount`, que abre MetaMask para que el usuario conecte su billetera, aquí llamamos al método `eth_accounts`, que simplemente devuelve un arreglo que contiene las direcciones de MetaMask que se encuentran conectadas a nuestra dapp.
-
-Para ver esta función en acción, la podemos ejecutar en el `useEffect` de nuestro componente `HelloWorld.js`:
-
+La principal diferencia es que, en lugar de llamar al método `eth_requestAccounts`, que abre MetaMask para que el usuario conecte su monedero, aquí llamamos al método `eth_accounts`, que simplemente devuelve un array con las direcciones de MetaMask actualmente conectadas a nuestra dapp.
+Para ver esta función en acción, llamémosla en nuestra función `useEffect` de nuestro componente `HelloWorld.js`:
```javascript
// HelloWorld.js
@@ -1311,22 +1302,17 @@ useEffect(async () => {
}, [])
```
+Observe que utilizamos la respuesta de nuestra llamada a `getCurrentWalletConnected` para actualizar nuestras variables de estado `walletAddress` y `status`.
-Note que usamos la respuesta de nuestra llamada a `getCurrentWalletConnected` para actualizar nuestras variables de estado `walletAddress` y `status`.
-
-Una vez que añada este código, refrescaremos la ventana de nuestro navegador.
-
-¡Biennnnnn! El botón debería decir que está conectado y mostrar una vista previa de la dirección de su billetera conectada, incluso después de actualizar la página.
+Ahora que has añadido este código, intentemos refrescar la ventana de nuestro navegador.
+¡Geniaaaal! El botón debería decir que está conectado y mostrar una vista previa de la dirección de su billetera conectada, incluso después de actualizar la página.
-
-#### Implementar `addWalletListener` {#implement-addwalletlistener}
+#### Implementa `addWalletListener` {#implement-addwalletlistener}
El último paso en la configuración de la billetera de dapp es implementar el oyente de billetera para que nuestra interfaz se actualice cuando el estado de la billetera cambie, por ejemplo, cuando el usuario se desconecte o cambie de cuenta.
-En su archivo `HelloWorld.js`, modifique su función `addWalletListener` como se ve a continuación:
-
-
+En tu archivo `HelloWorld.js`, modifica tu función `addWalletListener` de la siguiente manera:
```javascript
// HelloWorld.js
@@ -1336,10 +1322,10 @@ function addWalletListener() {
window.ethereum.on("accountsChanged", (accounts) => {
if (accounts.length > 0) {
setWallet(accounts[0])
- setStatus("👆🏽 Write a message in the text-field above.")
+ setStatus("👆🏽 Escribe un mensaje en el campo de texto de arriba.")
} else {
setWallet("")
- setStatus("🦊 Connect to MetaMask using the top right button.")
+ setStatus("🦊 Conéctate a MetaMask usando el botón de la esquina superior derecha.")
}
})
} else {
@@ -1347,7 +1333,7 @@ function addWalletListener() {
)
@@ -1355,16 +1341,13 @@ function addWalletListener() {
}
```
+Apuesto a que a estas alturas ya no necesitas nuestra ayuda para entender lo que está pasando, pero para ser exhaustivos, vamos a desglosarlo rápidamente:
-Llegados a este punto, apuesto a que ni siquiera necesita de nuestra ayuda para entender lo que ocurre. Pero, para ser más exhaustivos, desglosémoslo rápidamente:
-
-- Primero, nuestra función verifica si `window.ethereum` está habilitado \(esto es si MetaMask está instalado\).
- - Si no lo está, simplemente establecemos nuestra variable de estado `status` a una cadena JSX que solicite al usuario instalar MetaMask.
- - Si está habilitado, configuramos el oyente `window.ethereum.on("accountsChanged")` en la línea 3, que escucha cambios de estado en la billetera de MetaMask, incluyendo cuando el usuario conecte una cuenta adicional a la dapp, cambie de cuenta o desconecte una cuenta. Si hay por lo menos una cuenta conectada, la variable de estado `walletAddress` es actualizada como la primera cuenta en el arreglo `accounts` devuelto por el oyente. De lo contrario, `walletAddress` se establece como cadena vacía.
-
-Por último, debemos ejecutarlo en nuestra función `useEffect`:
-
+- Primero, nuestra función comprueba si `window.ethereum` está habilitado (es decir, si MetaMask está instalado).
+ - Si no lo está, simplemente establecemos nuestra variable de estado `status` en una cadena JSX que pide al usuario que instale MetaMask.
+ - Si está habilitado, configuramos el detector `window.ethereum.on("accountsChanged")` en la línea 3 que escucha los cambios de estado en el monedero de MetaMask, que incluyen cuándo el usuario conecta una cuenta adicional a la dapp, cambia de cuenta o desconecta una cuenta. Si hay al menos una cuenta conectada, la variable de estado `walletAddress` se actualiza como la primera cuenta del array `accounts` devuelto por el detector. De lo contrario, `walletAddress` se establece como una cadena vacía.
+Por último, pero no por ello menos importante, debemos llamarla en nuestra función `useEffect`:
```javascript
// HelloWorld.js
@@ -1382,30 +1365,23 @@ useEffect(async () => {
}, [])
```
+¡Y eso es todo! ¡Hemos completado con éxito la programación de toda la funcionalidad de nuestra billetera! ¡Ahora a nuestra última tarea: actualizar el mensaje almacenado en nuestro contrato inteligente!
-¡Y eso es todo! ¡Hemos terminado de programar toda la funcionalidad de nuestra cartera exitosamente! Nuestra última tarea es actualizar el mensaje almacenado en nuestro contrato inteligente.
-
-
+### Paso 6: Implementa la función `updateMessage` {#step-6-implement-the-updateMessage-function}
-### Paso 6: Implementar la función `updateMessage` {#step-6-implement-the-updateMessage-function}
-
-Vale, y con esto ¡hemos llegado final! En el `updateMessage` de su archivo `interact.js`, haremos lo siguiente:
-
-1. Asegúrese de que el mensaje que desea publicar en nuestro contrato inteligente sea válido.
-2. Firmamos la transacción utilizando MetaMask.
-3. Ejecutamos esta función desde nuestro componente frontend `HelloWorld.js`.
-
-No nos llevará mucho ¡terminemos esta DApp!
+¡Muy bien, amigos, hemos llegado a la recta final! En `updateMessage` de tu archivo `interact.js`, vamos a hacer lo siguiente:
+1. Asegurarnos de que el mensaje que deseamos publicar en nuestro contrato inteligente es válido
+2. Firmar nuestra transacción usando MetaMask
+3. Llamar a esta función desde nuestro componente de frontend `HelloWorld.js`
+Esto no llevará mucho tiempo; ¡terminemos esta dapp!
#### Manejo de errores de entrada {#input-error-handling}
-Obviamente, deberíamos hacer alguna comprobación de errores al principio de la función.
-
-Queremos que nuestra función retorne rápido si, no existe una extensión de MetaMask instalada, no existe una cartera conectada \(p. ej., la `address` es una cadena vacía\), o `message` también es una cadena vacía. Añadamos el siguiente control de errores a `updateMessage`:
-
+Naturalmente, tiene sentido tener algún tipo de manejo de errores de entrada al inicio de la función.
+Querremos que nuestra función devuelva un valor de forma temprana si no hay ninguna extensión de MetaMask instalada, no hay ninguna billetera conectada (es decir, la `address` pasada es una cadena vacía), o el `message` es una cadena vacía. Añadamos el siguiente manejo de errores a `updateMessage`:
```javascript
// interact.js
@@ -1414,40 +1390,35 @@ export const updateMessage = async (address, message) => {
if (!window.ethereum || address === null) {
return {
status:
- "💡 Connect your MetaMask wallet to update the message on the blockchain.",
+ "💡 Conecta tu billetera de MetaMask para actualizar el mensaje en la cadena de bloques.",
}
}
if (message.trim() === "") {
return {
- status: "❌ Your message cannot be an empty string.",
+ status: "❌ Tu mensaje no puede ser una cadena vacía.",
}
}
}
```
+Ahora que tiene un manejo de errores de entrada adecuado, ¡es hora de firmar la transacción a través de MetaMask!
-Ahora que cuenta con un control de errores adecuado ¡ha llegado el momento de firmar la transacción con MetaMask!
-
-
-
-#### Firma de nuestra transacción {#signing-our-transaction}
-
-Si se siente cómodo con las transacciones tradicionales en Web3 de Ethereum, el código que escribiremos a continuación le resultará bastante familiar. Debajo de su código de control de errores, añada lo siguiente a `pdateMessage`:
-
+#### Firmando nuestra transacción {#signing-our-transaction}
+Si ya te sientes cómodo con las transacciones tradicionales de web3 en Ethereum, el código que escribiremos a continuación te resultará muy familiar. Debajo de tu código de manejo de errores de entrada, añade lo siguiente a `updateMessage`:
```javascript
// interact.js
-//set up transaction parameters
+//configurar parámetros de transacción
const transactionParameters = {
- to: contractAddress, // Required except during contract publications.
- from: address, // must match user's active address.
+ to: contractAddress, // Obligatorio excepto durante la publicación de contratos.
+ from: address, // debe coincidir con la dirección activa del usuario.
data: helloWorldContract.methods.update(message).encodeABI(),
}
-//sign the transaction
+//firmar la transacción
try {
const txHash = await window.ethereum.request({
method: "eth_sendTransaction",
@@ -1458,11 +1429,10 @@ try {
✅{" "}
- View the status of your transaction on Etherscan!
+ ¡Consulta el estado de tu transacción en Etherscan!
- ℹ️ Once the transaction is verified by the network, the message will be
- updated automatically.
+ ℹ️ Una vez que la red verifique la transacción, el mensaje se actualizará automáticamente.
),
}
@@ -1473,50 +1443,47 @@ try {
}
```
+Desglosemos lo que está sucediendo. Primero, configuramos nuestros parámetros de transacción, donde:
-Veamos qué es lo que ocurre. Primero, establezcamos los parámetros para nuestra transacción:
-
-- `to` especifica la dirección del receptor \(nuestro contrato inteligente\)
-- `from` muestra quién firma la transacción, la variable `address` muestra lo que pasamos a la función
-- `data` contiene la ejecución del método `update` de nuestro contrato inteligente Hello World, que recibe la variable de tipo cadena `message` como una entrada
+- `to` especifica la dirección del destinatario (nuestro smart contract)
+- `from` especifica el firmante de la transacción, la variable `address` que pasamos a nuestra función
+- `data` contiene la llamada al método `update` de nuestro contrato inteligente Hello World, recibiendo como entrada nuestra variable de cadena `message`
-Luego, realizamos una ejecución en espera, `window.ethereum.request`, donde le pedimos a MetaMask que firme la transacción. Tenga en cuenta que, en las líneas 11 y 12, especificamos nuestro método ETH `eth_sendTransaction` y le pasamos nuestros `transactionParameters`.
+Luego, hacemos una llamada `await`, `window.ethereum.request`, donde le pedimos a MetaMask que firme la transacción. Fíjate, en las líneas 11 y 12, estamos especificando nuestro método eth, `eth_sendTransaction`, y pasando nuestros `transactionParameters`.
En este punto, MetaMask se abrirá en el navegador y solicitará al usuario firmar o rechazar la transacción.
-- Si la transacción tiene éxito, la función devolverá un objeto de JSON donde la cadena JSX `status` le pedirá al usuario que revise Etherscan para obtener más información sobre su transacción.
-- Si la transacción falla, la función devolverá un objeto JSON donde la cadena `status` transmitirá el mensaje de error.
-
-Entonces, nuestra función `updateMessage` debería tener el siguiente aspecto:
-
+- Si la transacción es exitosa, la función devolverá un objeto JSON donde la cadena JSX `status` le indica al usuario que consulte Etherscan para obtener más información sobre su transacción.
+- Si la transacción falla, la función devolverá un objeto JSON donde la cadena `status` transmite el mensaje de error.
+En conjunto, nuestra función `updateMessage` debería tener este aspecto:
```javascript
// interact.js
export const updateMessage = async (address, message) => {
- //input error handling
+ //manejo de errores de entrada
if (!window.ethereum || address === null) {
return {
status:
- "💡 Connect your MetaMask wallet to update the message on the blockchain.",
+ "💡 Conecta tu billetera de MetaMask para actualizar el mensaje en la cadena de bloques.",
}
}
if (message.trim() === "") {
return {
- status: "❌ Your message cannot be an empty string.",
+ status: "❌ Tu mensaje no puede ser una cadena vacía.",
}
}
- //set up transaction parameters
+ //configurar parámetros de transacción
const transactionParameters = {
- to: contractAddress, // Required except during contract publications.
- from: address, // must match user's active address.
+ to: contractAddress, // Obligatorio excepto durante la publicación de contratos.
+ from: address, // debe coincidir con la dirección activa del usuario.
data: helloWorldContract.methods.update(message).encodeABI(),
}
- //sign the transaction
+ //firmar la transacción
try {
const txHash = await window.ethereum.request({
method: "eth_sendTransaction",
@@ -1527,11 +1494,11 @@ export const updateMessage = async (address, message) => {
✅{" "}
- View the status of your transaction on Etherscan!
+ ¡Consulta el estado de tu transacción en Etherscan!
- ℹ️ Once the transaction is verified by the network, the message will
- be updated automatically.
+ ℹ️ Una vez que la red verifique la transacción, el mensaje se
+ actualizará automáticamente.
),
}
@@ -1543,16 +1510,11 @@ export const updateMessage = async (address, message) => {
}
```
+Por último, pero no menos importante, necesitamos conectar nuestra función `updateMessage` a nuestro componente `HelloWorld.js`.
-Por último, necesitamos conectar nuestra función `updateMessage` a nuestro componente `HelloWorld.js`.
-
-
-
-#### Conectar `updateMessage` al frontend `HelloWorld.js` {#connect-updatemessage-to-the-helloworld-js-frontend}
-
-Nuestra función `onUpdatePressed` deberá realizar una ejecución en espera a la función importada `updateMessage` y modificar la variable de estado `status` para que muestre si funcionó o falló nuestra transacción:
-
+#### Conecta `updateMessage` al frontend de `HelloWorld.js` {#connect-updatemessage-to-the-helloworld-js-frontend}
+Nuestra función `onUpdatePressed` debería hacer una llamada `await` a la función importada `updateMessage` y modificar la variable de estado `status` para reflejar si nuestra transacción tuvo éxito o falló:
```javascript
// HelloWorld.js
@@ -1563,21 +1525,18 @@ const onUpdatePressed = async () => {
}
```
+Es súper limpio y simple. Y adivina qué... ¡¡¡TU DAPP ESTÁ COMPLETA!!!
-Es simple y claro. Y adivine qué... ¡SU DAPP ESTÁ TERMINADA!
-
-¡Adelante, vaya a probar el botón **Update**!
-
-
+¡Adelante, prueba el botón **Actualizar**!
-### Crear su propia DApp personalizada {#make-your-own-custom-dapp}
+### Crea tu propia dapp personalizada {#make-your-own-custom-dapp}
-¡Bravo! ¡Ha llegado al final del tutorial! A modo de repaso, esto es lo que hemos aprendido:
+¡Woooo, llegaste al final del tutorial! Para recapitular, aprendiste a:
-- Cómo conectar una cartera de MetaMask a su proyecto de DApp
-- Leer los datos de su contrato inteligente utilizando la API [Alchemy Web3](https://docs.alchemy.com/alchemy/documentation/alchemy-web3).
+- Conectar una billetera MetaMask a tu proyecto de dapp
+- Leer datos de su contrato inteligente usando la API de [Alchemy Web3](https://docs.alchemy.com/alchemy/documentation/alchemy-web3)
- Firmar transacciones de Ethereum usando MetaMask.
-Ya estás preparado para aplicar los conocimientos que ha adquirido en este tutorial, ¡y así, crear su propio proyecto de DApp personalizada! Está de más decir que, ante cualquier duda, siempre puede pedirnos ayuda en el canal [Discord de Alchemy](https://discord.gg/gWuC7zB). 🧙♂️
+¡Ahora estás totalmente equipado para aplicar las habilidades de este tutorial para construir tu propio proyecto de dapp personalizado! Como siempre, si tienes alguna pregunta, no dudes en contactarnos para obtener ayuda en el [Discord de Alchemy](https://discord.gg/gWuC7zB). 🧙♂️
Cuando finalice este tutorial, cuéntenos cómo fue su experiencia o comparta algún comentario etiquetándonos en Twitter [@alchemyplatform](https://twitter.com/AlchemyPlatform).
From 2b8e0dbfd7e971be0bead9a044525e4b7ec4a1ec Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:59:55 -0300
Subject: [PATCH 307/589] update(i18n):
public/content/translations/es/real-world-assets/index.md
---
.../translations/es/real-world-assets/index.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/public/content/translations/es/real-world-assets/index.md b/public/content/translations/es/real-world-assets/index.md
index 28b548b3061..e3d80c1738f 100644
--- a/public/content/translations/es/real-world-assets/index.md
+++ b/public/content/translations/es/real-world-assets/index.md
@@ -28,12 +28,12 @@ Los tókenes RWA no tienen un valor intrínseco. Por el contrario, reflejan el v
## ¿Qué beneficios presentan los RWA? {#rwas-benefits}
-
-
-
-
-
-
+
+
+
+
+
+
## ¿Cómo funcionan los RWAs? {#how-rwas-work}
From fe05d9e81237faee182eecf42806cdee193452e5 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:59:56 -0300
Subject: [PATCH 308/589] update(i18n):
public/content/translations/es/payments/index.md
---
public/content/translations/es/payments/index.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/public/content/translations/es/payments/index.md b/public/content/translations/es/payments/index.md
index ca7b50b8e9b..206c8c29f40 100644
--- a/public/content/translations/es/payments/index.md
+++ b/public/content/translations/es/payments/index.md
@@ -28,9 +28,9 @@ Esto no es un sueño lejano: está sucediendo hoy en Ethereum. Si bien las insti
Para millones de personas que trabajan en el extranjero, enviar dinero a casa es una necesidad habitual. Los servicios tradicionales de envío de remesas suelen cobrar comisiones elevadas y procesar estas transferencias con lentitud. Ethereum ofrece una alternativa atractiva.
-
-
-
+
+
+
## Acceso a monedas globales {#access-to-global-currencies}
From 03214f0408557e6e785b54874b5a0a83681eccc5 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:59:56 -0300
Subject: [PATCH 309/589] update(i18n):
public/content/translations/es/ai-agents/index.md
---
public/content/translations/es/ai-agents/index.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/public/content/translations/es/ai-agents/index.md b/public/content/translations/es/ai-agents/index.md
index 2c2c4b52313..d8b4ea0f202 100644
--- a/public/content/translations/es/ai-agents/index.md
+++ b/public/content/translations/es/ai-agents/index.md
@@ -40,9 +40,9 @@ En cambio, el ecosistema descentralizado de Ethereum ofrece diversas ventajas es
Estos factores transforman a los agentes de IA de meros bots en sistemas dinámicos y autoevolutivos que ofrecen un valor significativo en múltiples sectores:
-
-
-
+
+
+
## Agentes de la IA en Ethereum {#ai-agents-on-ethereum}
From c2c2f0cee9100efdf8d592940de16009fdd0a10b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:59:57 -0300
Subject: [PATCH 310/589] update(i18n):
public/content/translations/es/roadmap/pbs/index.md
---
public/content/translations/es/roadmap/pbs/index.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/content/translations/es/roadmap/pbs/index.md b/public/content/translations/es/roadmap/pbs/index.md
index f6f6351650e..72650d93c8f 100644
--- a/public/content/translations/es/roadmap/pbs/index.md
+++ b/public/content/translations/es/roadmap/pbs/index.md
@@ -18,7 +18,7 @@ Por ejemplo, pueden introducirse unas listas de inclusión para que cuando los v
[Las mempools cifradas](https://www.youtube.com/watch?v=fHDjgFcha0M&list=PLpktWkixc1gUqkyc1-iE6TT0RWQTBJELe&index=3) también podrían hacer imposible que los constructores y proponentes sepan qué transacciones están incluyendo en un bloque hasta después de que el bloque ya haya sido transmitido.
-
+
Las organizaciones poderosas pueden presionar a los validadores para censurar transacciones para o de ciertas direcciones. Los validadores cumplen con esta presión detectando direcciones en la lista negra en su pool de transacciones y omitiéndolas de los bloques que proponen. Después de PBS, esto ya no será posible, porque los proponentes de bloques no sabrán qué transacciones están transmitiendo en sus bloques. Cumplir las reglas de censura ―por ejemplo, con la elaboración de un proyecto de ley en esa región― puede que sea importante para ciertos individuos o aplicaciones. En estos casos, se cumple a nivel de la solicitud, mientras que el protocolo se mantiene sin permisos ni censura.
@@ -30,7 +30,7 @@ Las organizaciones poderosas pueden presionar a los validadores para censurar tr
PBS soluciona este problema, ya que reconfigura la economía de MEV. En lugar de que el proponente de bloques haga su propia búsqueda de MEV, simplemente tomará un bloque de todos los que ofrecen los constructores de bloques. Puede que los constructores de bloques hayan realizado una extracción sofisticada de MEV, pero la recompensa va al proponente del bloque. Esto significa que incluso cuando un grupo pequeño de constructores de bloques especializados domina la extracción de MEV, la recompensa irá a cualquier validador en la red, incluyendo participaciones individuales domésticas.
-
+
Los individuos pueden recibir incentivos a participar en agrupaciones en vez de hacerlo en solitario, debido a las sugerentes recompensas ofrecidas por las estrategias sofisticadas de MEV. Separar la construcción y la propuesta de bloques, significa que los MEV extraídos serán distribuidos a más validadores en lugar de que sean centralizados con los buscadores más efectivos de MEV. Al mismo tiempo, permitir la existencia de constructores de bloques especializados alivia el peso de la construcción de bloques de los individuos y evita que estos roben MEV, al tiempo que maximiza el número de validadores independientes e individuales que pueden verificar la fiabilidad de los bloques. El concepto importante es «asimetría de probador-verificador» que se refiere a la idea de que la producción centralizada de bloques está bien, siempre y cuando haya una red descentralizada, masiva y robusta de validadores que puedan verificar que los bloques son honestos. La descentralización es un medio, no un objetivo final; lo que queremos son bloques honestos.
From 625dbe0c6fa325352f4c7ca48ccb4bf5747a8b3c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:59:58 -0300
Subject: [PATCH 311/589] update(i18n):
public/content/translations/es/wrapped-eth/index.md
---
public/content/translations/es/wrapped-eth/index.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/public/content/translations/es/wrapped-eth/index.md b/public/content/translations/es/wrapped-eth/index.md
index dc0028a8a56..a60921abbdd 100644
--- a/public/content/translations/es/wrapped-eth/index.md
+++ b/public/content/translations/es/wrapped-eth/index.md
@@ -37,25 +37,25 @@ Puede unwrappear (desenvolver) WETH por ETH utilizando el contrato inteligente d
## Preguntas frecuentes {#faq}
-
+
Usted paga tasas de gas para wrappear o unwrappear ETH utilizando el contrato WETH.
-
+
En general, WETH se considera seguro porque se basa en un contrato inteligente sencillo y de eficacia probada. El contrato WETH también ha sido verificado formalmente, lo cual representa el estándar de seguridad más alto para contratos inteligentes en Ethereum.
-
+
Además de la [implementación canónica de WETH](https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2) descrita en esta página, existen otras variantes. Pueden ser tokens personalizados creados por desarrolladores de aplicaciones o versiones emitidas en otras cadenas de bloques, y pueden comportarse de forma diferente o tener propiedades de seguridad distintas. **Compruebe siempre la información del token para saber con qué implementación de WETH está interactuando.**
-
+
- [Red principal de Ethereum](https://etherscan.io/token/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)
- [Arbitrum](https://arbiscan.io/token/0x82af49447d8a07e3bd95bd0d56f35241523fbab1)
From 5cfd878059d7c6ebc40e0dfada23ba69dbb9b4ed Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:59:59 -0300
Subject: [PATCH 312/589] update(i18n):
public/content/translations/es/staking/solo/index.md
---
.../translations/es/staking/solo/index.md | 32 +++++++++----------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/public/content/translations/es/staking/solo/index.md b/public/content/translations/es/staking/solo/index.md
index c1c4ad31df5..a058dd4b784 100644
--- a/public/content/translations/es/staking/solo/index.md
+++ b/public/content/translations/es/staking/solo/index.md
@@ -30,9 +30,9 @@ Un participante desde casa recibe las recompensas directamente desde el protocol
Participar desde casa conlleva más responsabilidad, pero proporciona el máximo control posible sobre los fondos y la configuración de los validadores.
-
-
-
+
+
+
## Consideraciones antes de hacer staking en casa {#considerations-before-staking-solo}
@@ -40,30 +40,30 @@ Participar desde casa conlleva más responsabilidad, pero proporciona el máximo
Por mucho que deseemos que el staking doméstico sea accesible y esté libre de riesgos para todo el mundo, no es la realidad. Hay algunas consideraciones prácticas y serias a tener en cuenta antes de elegir hacer staking doméstico con sus ETH.
-
+
Cuando opere su propio nodo, debe dedicar algo de tiempo a aprender a usar el software que ha elegido. Esto implica leer la documentación pertinente y estar en sintonía con los canales de comunicación de los equipos de desarrollo.
Cuanto más entienda sobre el software que está ejecutando y cómo funciona la prueba de participación, menos arriesgado será como staker, y más fácil será solucionar cualquier problema que pueda surgir en el camino como operador de nodos.
-
+
La configuración de un nodo requiere un nivel de comodidad razonable a la hora de trabajar con ordenadores, aunque las nuevas herramientas facilitan cada vez más esta tarea. Entender la interfaz de línea de comandos es útil, pero ya no es estrictamente necesario.
También requiere una configuración de hardware muy básica y cierta comprensión de las especificaciones mínimas recomendadas.
-
+
Al igual que las claves privadas protegen su dirección de Ethereum, tendrá que generar claves específicas para su validador. Debe entender cómo mantener seguras y a salvo las frases semilla o las claves privadas.{' '}
[Seguridad en Ethereum y prevención de estafas](/security/)
-
+
El hardware falla ocasionalmente, las conexiones de red dan error y el software cliente necesita actualizarse de vez en cuando. El mantenimiento de los nodos es inevitable y requerirá su atención de vez en cuando. Deberá asegurarse de estar al tanto de cualquier actualización prevista de la red o de otras actualizaciones críticas de los clientes.
-
+
Sus recompensas son proporcionales al tiempo que su validador está en línea y atestiguando correctamente. El tiempo de inactividad conlleva penalizaciones proporcionales al número de validadores que estén desconectados al mismo tiempo, pero no da lugar a slashing. El ancho de banda también importa, ya que las recompensas disminuyen por las atestaciones que no se reciben a tiempo. Los requisitos varían, pero se recomienda un mínimo de 10 Mb/s de subida y bajada.
-
+
A diferencia de las penalizaciones por inactividad por estar desconectado, el slashing es una penalización mucho más grave reservada para las infracciones maliciosas. Al ejecutar un cliente minoritario con las claves cargadas en una sola máquina a la vez, se minimiza el riesgo de sufrir slashing. Dicho esto, todos los stakers deben ser conscientes de los riesgos del slashing.
Más información sobre penalizaciones (slashing) y el ciclo de vida de los validadores
@@ -122,13 +122,13 @@ Estas herramientas pueden utilizarse como alternativa al [Staking Deposit CLI](h
Estas son algunas de las preguntas más comunes sobre la participación que vale la pena conocer.
-
+
Un validador es una entidad virtual que vive en Ethereum y participa en el consenso del protocolo de Ethereum. Los validadores están representados por un saldo, una clave pública y otras propiedades. Un cliente validador es el software que actúa en nombre del validador al mantener y utilizar su clave privada. Un único cliente validador puede contener muchos pares de claves, controlando a muchos validadores.
-
+
Sí, las cuentas de validador modernas son capaces de albergar hasta 2048 ETH. El ETH adicional por encima de 32 se compondrá de forma escalonada, aumentando en incrementos de números enteros a medida que aumente su saldo real. Esto se conoce como su saldo efectivo.
Para aumentar el saldo efectivo de una cuenta, y por lo tanto aumentar las recompensas, se debe cruzar un búfer de 0,25 ETH por encima de cualquier umbral de ETH completo. Por ejemplo, una cuenta con un saldo real de 32,9 y un saldo efectivo de 32 necesitaría ganar otros 0,35 ETH para que su saldo real supere los 33,25 antes de provocar un aumento del saldo efectivo.
@@ -139,14 +139,14 @@ Cada par de claves asociado a un validador requiere al menos 32 ETH para ser act
Si el staking doméstico le parece demasiado exigente, considere la posibilidad de utilizar un proveedor de [staking como servicio](/staking/saas/), o si está trabajando con menos de 32 ETH, consulte los [grupos de staking](/staking/pools/).
-
+
Desconectarse cuando la red está finalizando correctamente NO dará lugar a slashing. Se incurre en pequeñas penalizaciones por inactividad si su validador no está disponible para atestiguar durante una época determinada (cada una de 6,4 minutos de duración), pero esto es muy diferente del slashing. Estas penalizaciones son ligeramente inferiores a la recompensa que habría obtenido si el validador hubiera estado disponible para atestiguar, y las pérdidas pueden recuperarse con aproximadamente la misma cantidad de tiempo en línea de nuevo.
Tenga en cuenta que las penalizaciones por inactividad son proporcionales al número de validadores que estén desconectados al mismo tiempo. En los casos en que una gran parte de la red está desconectada a la vez, las penalizaciones para cada uno de estos validadores serán mayores que cuando un solo validador no está disponible.
En casos extremos, si la red deja de finalizar como resultado de que más de un tercio de los validadores están desconectados, estos usuarios sufrirán lo que se conoce como una fuga de inactividad cuadrática, que es un drenaje exponencial de ETH de las cuentas de los validadores desconectados. Esto permite que la red se autocure eventualmente quemando el ETH de los validadores inactivos hasta que su saldo alcance los 16 ETH, momento en el que serán expulsados automáticamente del grupo de validadores. Los validadores restantes en línea acabarán constituyendo de nuevo más de 2/3 de la red, satisfaciendo la supermayoría necesaria para volver a finalizar la cadena.
-
+
En resumen, esto nunca se puede garantizar por completo, pero si actúa de buena fe, ejecuta un cliente minoritario y mantiene sus claves de firma en solo una máquina a la vez, el riesgo de ser penalizado (slashed) es casi nulo.
Solo hay unas pocas formas específicas que pueden hacer que un validador sea objeto de slashing y expulsado de la red. En el momento de redactar este informe, los slashings que se han producido han sido exclusivamente producto de configuraciones de hardware redundantes en las que las claves de firma se almacenan en dos máquinas distintas a la vez. Esto puede dar lugar inadvertidamente a un voto doble de sus claves, lo que es una infracción sancionable con slashing.
@@ -161,21 +161,21 @@ Errores equivalentes en un cliente minoritario nunca finalizarán (bloques)
-
+
Los clientes individuales pueden variar ligeramente en cuanto a rendimiento e interfaz de usuario, ya que cada uno de ellos está desarrollado por equipos diferentes que utilizan una variedad de lenguajes de programación. Dicho esto, ninguno de ellos es "el mejor". Todos los clientes de producción son excelentes piezas de software, que realizan las mismas funciones básicas para sincronizarse e interactuar con la cadena de bloques.
Dado que todos los clientes de producción ofrecen la misma funcionalidad básica, es muy importante que elija un cliente minoritario, es decir, cualquier cliente que NO esté siendo utilizado actualmente por la mayoría de los validadores de la red. Puede que esto suene contraintuitivo, pero ejecutar un cliente mayoritario o de supermayoría le expone a un mayor riesgo de slashing en caso de que se produzca un error en dicho cliente. Ejecutar un cliente minoritario limita drásticamente estos riesgos.
Obtenga más información sobre por qué la diversidad de clientes es fundamental
-
+
Aunque se puede utilizar un servidor privado virtual (VPS) como sustituto del hardware doméstico, el acceso físico y la ubicación de su cliente validador sí importan. Las soluciones centralizadas en la nube, como Amazon Web Services o Digital Ocean, permiten la comodidad de no tener que obtener y operar hardware, a expensas de centralizar la red.
Cuantos más clientes validadores se ejecuten en una única solución de almacenamiento centralizado en la nube, más peligroso se vuelve para estos usuarios. Cualquier evento que desconecte a estos proveedores, ya sea por un ataque, por exigencias normativas o simplemente por cortes de energía o de Internet, hará que todos los clientes validadores que dependen de este servidor se desconecten al mismo tiempo.
Las penalizaciones por estar fuera de línea son proporcionales a cuántos otros están fuera de línea al mismo tiempo. El uso de un VPS aumenta en gran medida el riesgo de que las penalizaciones por desconexión sean más graves, y aumenta el riesgo de fugas cuadráticas o de slashing en caso de que la interrupción sea lo suficientemente grande. Para minimizar su propio riesgo y el de la red, se recomienda encarecidamente a los usuarios que obtengan y operen su propio hardware.
-
+
Las retiradas de cualquier tipo de la cadena de baliza requieren que se establezcan credenciales de retirada.
From 48d53fb41dbd893b6efd23867fb65d9007ada380 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 08:59:59 -0300
Subject: [PATCH 313/589] update(i18n):
public/content/translations/es/staking/saas/index.md
---
.../content/translations/es/staking/saas/index.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/public/content/translations/es/staking/saas/index.md b/public/content/translations/es/staking/saas/index.md
index 2912a710ea3..b903cc8d503 100644
--- a/public/content/translations/es/staking/saas/index.md
+++ b/public/content/translations/es/staking/saas/index.md
@@ -22,9 +22,9 @@ La participación como servicio (SaaS), representa una categoría de servicios d
El protocolo de Ethereum no respalda originariamente la delegación de participaciones y, por tanto, estos servicios se han creado con el fin de cubrir esta demanda. Si tiene 32 ETH para participar, pero no domina con confianza el hardware, los servicios de participación (SaaS) le permiten delegar la parte técnica mientras gana recompensas de bloques nativos.
-
-
-
+
+
+
@@ -57,11 +57,11 @@ Tenga en cuenta la importancia de apoyar la [diversidad de clientes](/developers
## Preguntas frecuentes {#faq}
-
+
Los acuerdos difieren de proveedor a proveedor, pero comúnmente se le guiará a través de la configuración de las claves de firma que necesite (una por 32 ETH), y subirlos a su proveedor para permitirles validar en su nombre. Solo con las claves de firma no se tiene la capacidad de retirar, transferir ni gastar sus fondos. Sin embargo, sí proporcionan la capacidad de emitir votos a favor del consenso. Si no se hace correctamente, puede dar lugar a sanciones fuera de línea o a un recorte.
-
+
Sí. Cada cuenta se compone de ambas claves BLS para firmar y claves BLS para retirar. Para que un validador certifique el estado de la cadena, participe en comités de sincronización y proponga bloques, las claves de firma deben ser fácilmente accesibles por el cliente validador. Estos deben estar conectados a Internet de alguna forma, y por lo tanto se consideran inherentemente como claves «calientes». Este es un requisito para que su validador pueda certificar y, por lo tanto, las claves utilizadas para transferir o retirar fondos están separadas por razones de seguridad.
Las claves BLS de retirada se utilizan para firmar un mensaje de una sola vez que declara a qué cuenta de la capa de ejecución deberían ir las recompensas de participación y los fondos sacados. Una vez que este mensaje se difunda, las claves BLS de retirada ya no son necesarias. En cambio, el control sobre los fondos retirados se delega permanentemente a la dirección que usted proporcionó. Esto le permite establecer una dirección de retiro segura a través de su propio almacenamiento en frío, minimizando el riesgo para sus fondos de validador, incluso si alguien controla las claves de firmado de validador.
@@ -72,14 +72,14 @@ Para habilitar la retirada, es necesario actualizar las credenciales\*. Este pro
\*Los stakers que proporcionaron una dirección de retiro con el depósito inicial no necesitan configurar esto. Consulte con su proveedor de SaaS para obtener ayuda acerca de cómo preparar su validador.
-
+
Los stakers deben proporcionar una dirección de retiro (si no se proporcionó al realizar el depósito inicial), y los pagos de recompensas comenzarán a distribuirse automáticamente de manera periódica cada pocos días.
Los validadores también pueden salir como validadores, lo que desbloqueará su saldo restante en ETH para retirarlo. Las cuentas que hayan proporcionado una dirección de retirada de ejecución y hayan completado el proceso de salida recibirán su saldo completo a la dirección de retirada proporcionada durante el próximo barrido del validador.
Más sobre retiros de staking
-
+
Al usar un proveedor SaaS, está confiando la operación de su nodo a otra persona. Esto conlleva el riesgo de un funcionamiento deficiente del nodo, que no está bajo su control. En el caso de que recorte la actividad de su validador, el saldo de su validador será penalizado y eliminado forzosamente del grupo de validadores.
Al finalizar el proceso de recorte y salida, estos fondos se transferirán a la dirección de retirada asignada al validador. Para habilitar la retirada, es preciso proporcionar una dirección. Puede haberse proporcionado en un depósito inicial. De lo contrario, se tendrán que usar las claves de retirada del validador para firmar un mensaje declarando una dirección de retirada. Si no se ha proporcionado ninguna dirección de retirada, los fondos permanecerán bloqueados hasta que se proporcione.
From bded4127a730a3aaff6844253f31de022301ad6d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:00 -0300
Subject: [PATCH 314/589] update(i18n):
public/content/translations/es/what-are-apps/index.md
---
.../content/translations/es/what-are-apps/index.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/public/content/translations/es/what-are-apps/index.md b/public/content/translations/es/what-are-apps/index.md
index a91586746ab..717101a79de 100644
--- a/public/content/translations/es/what-are-apps/index.md
+++ b/public/content/translations/es/what-are-apps/index.md
@@ -22,9 +22,9 @@ Una vez que una aplicación se publica en la cadena de bloques de Ethereum, se v
Las aplicaciones de Ethereum tienen su lógica de ejecución en la cadena de bloques de Ethereum en vez de servidores centralizados. Por eso a menudo se les llaman aplicaciones descentralizadas, o «DApps» como forma abreviada.
-
-
-
+
+
+
## ¿Por qué es importante? {#why-does-this-matter}
@@ -68,14 +68,14 @@ Cuando todas las aplicaciones se construyen en Ethereum, se vuelven compatibles
## Preguntas frecuentes {#faq}
-
+
A las aplicaciones decentralizadas se las conoce como DApps. Son aplicaciones construidas en redes de cadena de bloque como Ethereum. Se dice que son descentralizadas, porque la red subyacente está descentralizada.
-
+
Algunas aplicaciones le permiten hacer transacciones o comprar tókenes, pero no todas las aplicaciones son para eso. Si está buscando comprar sus primeros tokens, visite [Obtener ETH](/get-eth).
-
+
Las carteras de criptomonedas le permiten mantener sus tókenes, así como administrar sus direcciones en Ethereum. Hay muchas excelentes carteras, cada una con un propósito diferente. Para descubrir qué cartera es la mejor para usted, visite nuestra [lista de billeteras](/wallets/find-wallet).
\ No newline at end of file
From a12d632f1fe25dc830c009c9da012633d0bc1f37 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:01 -0300
Subject: [PATCH 315/589] update(i18n):
public/content/translations/es/roadmap/merge/index.md
---
.../translations/es/roadmap/merge/index.md | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/public/content/translations/es/roadmap/merge/index.md b/public/content/translations/es/roadmap/merge/index.md
index 0c2f08b7daa..9c97b10b066 100644
--- a/public/content/translations/es/roadmap/merge/index.md
+++ b/public/content/translations/es/roadmap/merge/index.md
@@ -58,8 +58,8 @@ A pesar de intercambiar la prueba de trabajo y transicionar a la prueba de parti
### Operadores de nodos y desarrolladores de dapps {#node-operators-dapp-developers}
Las principales medidas son las siguientes:
@@ -73,8 +73,8 @@ Si no se completan los dos puntos anteriores, el nodo se verá como «desconecta
Si no se establece un «receptor de las comisiones», el validador seguirá comportandose como de costumbre, pero se perderán las propinas de las comisiones no consumidas y cualquier MEV que se hubiera ganado en los bloques que propone el validador.
Hasta el momento de La Fusión, un cliente de ejecución (como Geth, Erigon, Besu o Nethermind) era suficiente para recibir, validar y propagar los bloques divulgados por la red principal. _Tras La Fusión_, la validez de las transacciones contenidas en las cargas de ejecución ahora también dependerán de la validación del «bloque de consenso» que estas contienen.
@@ -91,8 +91,8 @@ Si no se completan los pasos anteriores, su nodo aparecerá como «desconectado
La Fusión vino con cambios en el consenso, que también incluye cambios relacionados con:
@@ -159,8 +159,8 @@ La prueba de participación introduce el concepto de finalidad de la transacció
+title="Concepto erróneo: "La Fusión habilitó los retiros de staking.""
+contentPreview="Falso, pero los retiros de staking se habilitaron posteriormente con la actualización Shanghái/Capella.">
Inicialmente, después de La Fusión, los participantes solo podían acceder a las propinas de tarifas y MEV que se ganaban como resultado de las propuestas de bloques. Estas recompensas se acreditan a una cuenta sin participación controlada por el validador (conocida como el destinatario de la tarifa), y están disponibles de inmediato. Estas recompensas están separadas de las recompensas del protocolo para realizar las tareas de validación.
From 1c07db72dfb294ccf1a67fd9f2bb85da46837399 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:02 -0300
Subject: [PATCH 316/589] update(i18n):
public/content/translations/es/staking/pools/index.md
---
.../content/translations/es/staking/pools/index.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/public/content/translations/es/staking/pools/index.md b/public/content/translations/es/staking/pools/index.md
index 044ba869c95..14b10195110 100644
--- a/public/content/translations/es/staking/pools/index.md
+++ b/public/content/translations/es/staking/pools/index.md
@@ -24,9 +24,9 @@ Algunas reservas operan utilizando contratos inteligentes, estos permiten deposi
Además de los beneficios que describimos en nuestra [introducción al staking](/staking/), hacer staking a través de un pool ofrece una serie de ventajas específicas.
-
-
-
+
+
+
@@ -59,18 +59,18 @@ Tenga en cuenta la importancia de elegir un servicio que tome en serio la [diver
## Preguntas frecuentes {#faq}
-
+
Por lo general, los tókenes de participación ERC-20 se emiten a los participantes y representan el valor de sus ETH apostados y las recompensas. Tenga en cuenta que las diferentes reservas repartirán las recompensas de las participaciones entre sus usuarios a través de métodos ligeramente diferentes, pero siempre se reparten.
-
+
¡En cualquier momento! La actualización de red Shanghai/Capella se produjo en abril de 2023 e introdujo las retiradas de participaciones. Después de esta actualización, las cuentas de validador que respaldan las reservas de participación tendrán la posibilidad de salir y retirar ETH a su dirección de retirada designada. Esto permitirá la capacidad de canjear su parte de participación por el ETH subyacente. Compruebe con su proveedor la compatibilidad con esta funcionalidad.
Alternativamente, los grupos que usan tókenes de participación ERC-20, permiten a los usuarios operar dicho token en el libre mercado, pudiendo vender la posición en participación, «retirándola» de forma eficaz sin tener que eliminar ETH del contrato de participación.
Más sobre retiros de staking
-
+
Existen muchas similitudes entre estas opciones de staking en pool y los exchanges centralizados, como la posibilidad de hacer staking con pequeñas cantidades de ETH y agruparlos para activar validadores.
A diferencia de los intercambios centralizados, muchas otras opciones de participación agrupadas utilizan contratos inteligentes y/o tókenes de participación, que son usualmente tókenes ERC-20 que pueden permanecer en la cartera, y comprarse o venderse como cualquier otro token. Esto ofrece una capa de soberanía y seguridad al darle el control sobre sus tókenes, pero no le da el control directo sobre el cliente validador que certifica en su nombre en segundo plano.
From 92a4f6bce377fd4fa21f1547c49f55c21a847f73 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:03 -0300
Subject: [PATCH 317/589] update(i18n):
public/content/translations/es/prediction-markets/index.md
---
public/content/translations/es/prediction-markets/index.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/public/content/translations/es/prediction-markets/index.md b/public/content/translations/es/prediction-markets/index.md
index be34fa2961e..101c1299106 100644
--- a/public/content/translations/es/prediction-markets/index.md
+++ b/public/content/translations/es/prediction-markets/index.md
@@ -30,9 +30,9 @@ En teoría, dado que los apostadores pueden obtener ganancias al acertar, los me
A diferencia de las predicciones tradicionales, los mercados de predicción basados en cadenas de bloques son:
-
-
-
+
+
+
Incluso como observador del mercado, usted puede evaluar datos valiosos que no estarían disponibles de otro modo. Piense en lo siguiente:
From 6462e76f3de10b354755718a2d47e02b3fbff9d7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:03 -0300
Subject: [PATCH 318/589] update(i18n):
public/content/translations/es/staking/withdrawals/index.md
---
public/content/translations/es/staking/withdrawals/index.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/content/translations/es/staking/withdrawals/index.md b/public/content/translations/es/staking/withdrawals/index.md
index 4405c9ca6d3..9c7931e367e 100644
--- a/public/content/translations/es/staking/withdrawals/index.md
+++ b/public/content/translations/es/staking/withdrawals/index.md
@@ -151,7 +151,7 @@ Las direcciones de retirada pueden ser un contrato inteligente (controlado por s
Como alternativa al cambio de la dirección de retirada para un validador en particular, los usuarios pueden optar por establecer un contrato inteligente como su dirección de retirada, la cual podría manejar la rotación clave, como una caja fuerte. Los usuarios que establezcan sus fondos en su propia EOA pueden realizar una salida completa para retirar todos sus fondos apostados, y luego volver a apostarlos usando nuevas credenciales.
@@ -170,7 +170,7 @@ eventName="read more">
Sí, siempre que su validador haya proporcionado una dirección de retiro. Se debe proporcionar una vez para habilitar inicialmente cualquier retirada, luego los pagos de recompensa se activarán automáticamente cada pocos días con cada barrido del validador.
From 1827c9c7c1235b0455e654c0460e7f25173f28f1 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:04 -0300
Subject: [PATCH 319/589] update(i18n):
public/content/translations/es/ethereum-forks/index.md
---
.../translations/es/ethereum-forks/index.md | 36 +++++++++----------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/public/content/translations/es/ethereum-forks/index.md b/public/content/translations/es/ethereum-forks/index.md
index 29c6ea84224..77ecc220c46 100644
--- a/public/content/translations/es/ethereum-forks/index.md
+++ b/public/content/translations/es/ethereum-forks/index.md
@@ -9,7 +9,7 @@ sidebarDepth: 1
Una cronología que incluye todos los principales hitos, bifurcaciones y actualizaciones de la cadena de bloques de Ethereum.
-
+
Las bifurcaciones se producen cuando es necesario realizar actualizaciones o cambios técnicos importantes en la red; suelen provenir de las [propuestas de mejora de Ethereum (EIP)](/eips/) y cambian las «reglas» del protocolo.
@@ -19,7 +19,7 @@ Estos cambios en las reglas pueden crear una división temporal en la red. Los b
-
+
El software que sustenta a Ethereum se compone de dos mitades, conocidas como la [capa de ejecución](/glossary/#execution-layer) y la [capa de consenso](/glossary/#consensus-layer).
@@ -89,7 +89,7 @@ La participación recibió una mejora con cuentas de validadores compuestas y un
Otras partes de la actualización se centraron en mejorar la experiencia para los usuarios comunes. EIP-7702 añadió la capacidad de que una cuenta regular que no es smart contract ([EOA](/glossary/#eoa)) ejecute código similar a un smart contract. Esto desbloqueó una nueva funcionalidad ilimitada para las cuentas tradicionales de Ethereum, como el agrupamiento de transacciones, el patrocinio de gas, la autenticación alternativa, controles programables de gasto y mecanismos de recuperación de cuenta, entre otros.
-
+
Mejor experiencia de usuario:
@@ -138,7 +138,7 @@ La actualización Cancún contiene un conjunto de mejoras en la _ejecución_ de
Esto incluye especialmente EIP-4844, conocido como **Proto-Danksharding**, que reduce significativamente el coste de almacenamiento de datos para los rollups de capa 2. Esto se logra a través de la introducción de "blobs" de datos que permiten que los rollups publiquen datos en la red principal por un corto período de tiempo. Esto da como resultado tarifas de transacción significativamente más bajas para los usuarios de los rollups de la capa 2.
-
+
EIP-1153 - Códigos de operación de almacenamiento transitorio
@@ -164,7 +164,7 @@ Los "mensajes de salida voluntaria" pregenerados y firmados ya no caducan, lo qu
EIP-7514 reduce la emisión de ETH limitando la tasa de "churn" a la que los validadores pueden unirse a la red a ocho (8) por época. Dado que la emisión de ETH es proporcional al total de ETH en staking, limitar el número de validadores que se unen pone un tope al _ritmo de crecimiento_ de ETH emitido, y también reduce los requisitos de hardware para los operadores de nodos, ayudando a la descentralización.
-
+
@@ -191,7 +191,7 @@ EIP-7514 reduce la emisión de ETH limitando la tasa de "churn" a la que los val
La actualizacion de Shangai trae los retiros de staking a la capa de ejecución. Junto con la actualización Capella, habilitó los bloques para aceptar las operaciones de retirada, que permitieran a los interesados retirar sus ETH provenientes de la cadena de baliza para ejecutarlos posteriormente.
-
+
EIP-3651: inicia el calentamiento de dirección de COINBASE
@@ -230,7 +230,7 @@ La actualización París se activó cuando la blockchain proof-of-work superó u
- [Lea la especificación de la actualización París](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md)
-
+
EIP-3675: consenso de actualización a la prueba de participación
@@ -263,7 +263,7 @@ La actualización de red Gray Glacier pospuso la [bomba de dificultad](/glossary
- [EF Blog - Anuncio de actualización Gray Glacier](https://blog.ethereum.org/2022/06/16/gray-glacier-announcement/)
-
+
EIP-5133: retrasa la bomba de dificultad hasta septiembre de 2022
@@ -286,7 +286,7 @@ La actualización de red Arrow Glacier pospuso la [bomba de dificultad](/glossar
- [EF Blog - Anuncio de actualización Arrow Glacier](https://blog.ethereum.org/2021/11/10/arrow-glacier-announcement/)
- [Ethereum Cat Herders - Actualización Arrow Glacier de Ethereum](https://medium.com/ethereum-cat-herders/ethereum-arrow-glacier-upgrade-e8d20fa4c002)
-
+
EIP-4345: retrasa la bomba de dificultad hasta junio de 2022
@@ -340,7 +340,7 @@ Este video explica EIP-1559 y los beneficios que trae: [EIP-1559 Explicado](http
- [Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/)
- [Lea la explicación de Ethereum Cat Herder](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41)
-
+
EIP-1559: mejora el sector de las comisiones de las transacciones
@@ -365,7 +365,7 @@ La actualización Berlin optimizó el coste del gas para ciertas acciones de EVM
- [Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2021/03/08/ethereum-berlin-upgrade-announcement/)
- [Lea la explicación de Ethereum Cat Herder](https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80)
-
+
@@ -423,7 +423,7 @@ El fork Muir Glacier introdujo un retraso en la [bomba de dificultad](/glossary/
- [Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2019/12/23/ethereum-muir-glacier-upgrade-announcement/)
- [Lea la explicación de Ethereum Cat Herder](https://medium.com/ethereum-cat-herders/ethereum-muir-glacier-upgrade-89b8cea5a210)
-
+
EIP-2384: retrasa la bomba de dificultad otros 4.000.000 bloques o ~611 días.
@@ -451,7 +451,7 @@ La bifurcación de Istanbul:
[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/)
-
+
EIP-152: permite a Ethereum funcionar con una moneda que mantiene la privacidad como Zcash.
@@ -481,7 +481,7 @@ La bifurcación Constantinople:
[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/)
-
+
EIP-145: optimiza el coste de ciertas acciones en la cadena.
@@ -511,7 +511,7 @@ La bifurcación de Bizantium:
[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/)
-
+
@@ -545,7 +545,7 @@ La bifurcación Spurious Dragon fue la segunda respuesta a los ataques de denega
[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/)
-
+
EIP-155: evita que las transacciones de una cadena Ethereum se redifundan en una cadena alternativa, por ejemplo, una transacción de red de prueba que se reproduce en la cadena principal de Ethereum.
@@ -570,7 +570,7 @@ La bifurcación Tangerine Whistle fue la primera respuesta a los ataques de dene
[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/)
-
+
EIP-150: aumenta el coste de gas de los códigos operativos que pueden utilizarse en ataques de spam.
@@ -607,7 +607,7 @@ Homestead: la bifurcación con perspectivas de futuro. Incluyó varios cambios d
[Lea el anuncio de la Fundación Ethereum](https://blog.ethereum.org/2016/02/29/homestead-release/)
-
+
From e954b5c13eb2be6885d6382fa0aed775adb0cbc6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:05 -0300
Subject: [PATCH 320/589] update(i18n):
public/content/translations/es/roadmap/single-slot-finality/index.md
---
.../translations/es/roadmap/single-slot-finality/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/content/translations/es/roadmap/single-slot-finality/index.md b/public/content/translations/es/roadmap/single-slot-finality/index.md
index a7bfebc07ad..a847528e726 100644
--- a/public/content/translations/es/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/es/roadmap/single-slot-finality/index.md
@@ -33,7 +33,7 @@ Con el diseño del mecanismo actual, para acortar la finalidad, es necesario que
## Rutas hacia la SSF {#routes-to-ssf}
-
+
El mecanismo de consenso actual combina certificaciones de multiples validadores, conocidos como comités, para reducir el número de mensajes que cada validador tiene que procesar para validar un bloque. Cada validador tiene una oportunidad para certificar en cada época (32 ranuras) pero en cada ranura, solo un subgrupo de validadores, conocido como comité de certificación. Ellos lo hacen al dividirse en subredes en las que se seleccionan a unos cuantos validadores para ser «agregadores». Cada agregador combina todas las firmas de parte de los validadores en su subred en una sola firma. Los agregadores que incluyen los números más grandes de contribuidores individuales pasan su firma combinada al bloque del proponente, quien la incluye en el bloque, junto con la firma combinada de otros comités.
From 5e7d3fd12e77c12f2e698341d0655a73e110d8d6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:06 -0300
Subject: [PATCH 321/589] update(i18n):
public/content/translations/es/roadmap/verkle-trees/index.md
---
public/content/translations/es/roadmap/verkle-trees/index.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/content/translations/es/roadmap/verkle-trees/index.md b/public/content/translations/es/roadmap/verkle-trees/index.md
index af09647fff4..79c73fb4e42 100644
--- a/public/content/translations/es/roadmap/verkle-trees/index.md
+++ b/public/content/translations/es/roadmap/verkle-trees/index.md
@@ -15,7 +15,7 @@ Los árboles de Verkle (una palabra combinada de «Vector commitment» o comprom
Los árboles de Verkle son un paso crítico en el rumbo hacia los clientes de Ethereum sin estado. Los clientes sin estado son aquellos que no tienen que almacenar toda la base de datos estatal para validar los bloques entrantes. En lugar de usar su propia copia local del estado de Ethereum para verificar los bloques, los clientes sin estado usan un «testigo» de los datos del estado que llegan con el bloque. Un testigo es una colección de piezas individuales de los datos de estado que se requieren para ejecutar un conjunto particular de transacciones, y una prueba criptográfica de que el testigo es realmente parte de los datos completos. El testigo se utiliza _en lugar_ de la base de datos de estado. Para que esto funcione, los testigos deben ser muy pequeños, para que puedan transmitirse de forma segura a través de la red a tiempo para que los validadores los procesen en un plazo de 12 segundos. La estructura de datos del estado actual no es adecuada, porque los testigos son demasiado grandes. Los árboles de Verkle resuelven el problema al habilitar pequeños testigos, eliminando una de las principales barreras de clientes sin estado.
-
+
Actualmente, los clientes de Ethereum utilizan una estructura de datos conocida como «Patricia Merkle Trie» para almacenar sus datos de estado. La información sobre las cuentas individuales se almacena como hojas en el trie y los pares de hojas se agrupan repetidamente hasta que solo queda un hash. A este hash final se le conoce como la «raíz». Para verificar los bloques, los clientes de Ethereum ejecutan todas las transacciones en un bloque y actualizan su estado local. El bloque se considera válido si la raíz del árbol local es idéntica a la proporcionada por el proponente del bloque, porque cualquier diferencia en el cálculo realizado por el proponente del bloque y el nodo de validación haría que el hash raíz fuera completamente diferente. El problema con esto es que la verificación de la cadena de bloques requiere que cada cliente almacene todo el estado trie para el bloque de cabeza y varios bloques históricos (el valor predeterminado en Geth es mantener los datos de estado para 128 bloques detrás de la cabeza). Esto requiere que los clientes tengan acceso a una gran cantidad de espacio en disco, lo que es una barrera para ejecutar nodos completos en hardware barato y de bajo consumo. Una solución a esto es actualizar el trie de estado a una estructura más eficiente (árbol de Verkle) que se pueda resumir utilizando un pequeño «testigo» de los datos que se pueden compartir en lugar de los datos de estado completos. El cambio de formato de los datos del estado a un árbol de Verkle es un trampolín para pasar a los clientes sin estado.
@@ -31,7 +31,7 @@ La estructura de un Merkle Trie hace que los tamaños de los testigos sean muy g
Bajo el esquema de compromiso polinómico, los testigos tienen tamaños manejables que se pueden transferir fácilmente en la red entre pares. Esto permite a los clientes verificar los cambios de estado en cada bloque con una cantidad mínima de datos.
-
+
El tamaño del testigo varía dependiendo del número de hojas que incluya. Suponiendo que el testigo cubre 1.000 hojas, un testigo para un trie de Merkle sería de aproximadamente 3,5 Mb (suponiendo 7 niveles para el trie). Un testigo de los mismos datos en un árbol de Verkle (suponiendo 4 niveles para el árbol) sería de unos 150 kB - **aproximadamente 23 veces más pequeño**. Esta reducción en el tamaño de los testigos permitirá que los testigos clientes sin estado sean aceptablemente pequeños. Los testigos polinómicos van de 0,128 a 1 kB dependiendo del compromiso polinómico específico que se utilice.
From 76c46ccc506e9d819734672eb26df07a19798bf2 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:07 -0300
Subject: [PATCH 322/589] update(i18n):
public/content/translations/es/guides/how-to-id-scam-tokens/index.md
---
.../translations/es/guides/how-to-id-scam-tokens/index.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/public/content/translations/es/guides/how-to-id-scam-tokens/index.md b/public/content/translations/es/guides/how-to-id-scam-tokens/index.md
index 279679e8d5a..86e60c391f7 100644
--- a/public/content/translations/es/guides/how-to-id-scam-tokens/index.md
+++ b/public/content/translations/es/guides/how-to-id-scam-tokens/index.md
@@ -16,7 +16,7 @@ Hay dos maneras en las que puede que intenten engañarle:
Para ilustrar qué son los tokens de estafa y cómo identificarlos, vamos a ver un ejemplo de uno: [`wARB`](https://eth.blockscout.com/token/0xB047c8032b99841713b8E3872F06cF32beb27b82). Este token intenta parecerse al token legítimo [`ARB`](https://eth.blockscout.com/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1).
Arbitrum es una organización que desarrolla y gestiona [optimistic rollups] (/developers/docs/scaling/optimistic-rollups/). Inicialmente, Arbitrum se fundó como una empresa con fines lucrativos, pero luego tomó medidas para descentralizarse. Como parte del proceso, han lanzado un [token de gobernanza] que admite transacciones (/dao/#token-based-membership).
@@ -24,7 +24,7 @@ Arbitrum es una organización que desarrolla y gestiona [optimistic rollups] (/d
Hay una convención en Ethereum que dice que cuando un activo no cumple con ERC-20, creamos una versión «encubierta» del mismo cuyo nombre comienza por «w». Así que, por ejemplo, tenemos wBTC para bitcoin y wETH para ether.
@@ -38,7 +38,7 @@ No tiene sentido crear una versión encubierta de un token ERC-20 que ya está e
La finalidad última de Ethereum es la descentralización. Esto significa que no hay una autoridad central que pueda confiscar sus activos ni impedirle implementar un contrato inteligente. Aunque también significa que los estafadores pueden desplegar cualquier contrato inteligente que deseen.
[Los contratos inteligentes](/developers/docs/smart-contracts/) son los programas que se ejecutan sobre la cadena de bloques de Ethereum. Cada token ERC-20, por ejemplo, se implementa como un contrato inteligente.
From a50f7fbe9d9689ef14604201aabc2571e2d9c68f Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:08 -0300
Subject: [PATCH 323/589] update(i18n):
public/content/translations/es/contributing/translation-program/translatathon/index.md
---
.../translation-program/translatathon/index.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/public/content/translations/es/contributing/translation-program/translatathon/index.md b/public/content/translations/es/contributing/translation-program/translatathon/index.md
index c915294f92e..5cdd060cf29 100644
--- a/public/content/translations/es/contributing/translation-program/translatathon/index.md
+++ b/public/content/translations/es/contributing/translation-program/translatathon/index.md
@@ -7,18 +7,18 @@ template: translatatón
From 3d68d11a3ab39b029e6d69bdc5c3379b8abc8b14 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:09 -0300
Subject: [PATCH 324/589] update(i18n):
public/content/translations/es/roadmap/danksharding/index.md
---
.../translations/es/roadmap/danksharding/index.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/public/content/translations/es/roadmap/danksharding/index.md b/public/content/translations/es/roadmap/danksharding/index.md
index d43e879b12a..00a75a51e09 100644
--- a/public/content/translations/es/roadmap/danksharding/index.md
+++ b/public/content/translations/es/roadmap/danksharding/index.md
@@ -19,13 +19,13 @@ Proto-Danksharding, también conocido como [EIP-4844](https://eips.ethereum.org/
Es cara, porque la procesn todos los nodos de Ethereum y reside en la cadena para siempre, aunque los rollups solo necesiten los datos durante un breve periodo de tiempo. ProtoDanksharding introduce los blobs de datos que se pueden enviar y adjuntar a los bloques. Los datos de estos blobs no son accesibles para la EVM y se eliminan automáticamente después un periodo de tiempo fijo (establecido en 4096 épocas en el momento de redactar este documento, es decir, unos 18 días). Esto significa que los rollups pueden enviar datos de forma más barata y trasladar el ahorro a los usuarios finales en la forma de transacciones más baratas.
-
+
Los rollups son una manera de escalar Ethereum agrupando transacciones fuera de cadena y luego publicando los resultados en Ethereum. Una acumulación se compone básicamente de dos partes: de datos y de verificación de la ejecución. Los datos son la secuencia total de transacciones que procesa una acumulación para producir un cambio en el estado publicado por Ethereum. La verificación de ejecución es la reejecución de esas transacciones por algún actor honesto (un «proveedor») para asegurarse de que el cambio del estado propuesto sea correcto. Para realizar la comprobación de ejecución, los datos de la transacción deben estar disponibles durante el tiempo suficiente para que cualquiera puede descargarlos y verificarlos. Esto significa que el proveedor puede identificar y cuestionar cualquier mala conducta del secuenciador de acumulaciones. Sin embargo, no tiene que estar dispobible para siempre.
-
+
Los rollups publican compromisos con sus datos de transacciones en cadena y también hacen que los datos estén disponibles en grandes objetos binarios. Esto significa que los proveedores pueden verificar que los compromisos son válidos y desafiar los datos que ellos creen que sea incorrectos. Dentro del nodo, el cliente de consenso mantiene las masas de datos. Los clientes de consenso certifican que ellos han visto los datos y que se están propagando por la red. Si los datos se mantuvieran para siempre, estos clientes se saturarían y sus requisitos para ejecutar los nodos serían ingentes. Por otro lado, los datos de eliminan de manera automática del nodo cada 18 días. Las certificaciones del cliente de consenso demuestran que los proveedores tenían suficientes oportunidades de comprobar los datos. L operadores de rollups, usuarios u otros actores pueden almacenar datos en sí fuera de cadena.
@@ -45,13 +45,13 @@ La ceremonia KZG fue una forma para que la gente de toda la comunidad de Ethereu
La ceremonia KZG EIP-4844 estuvo abierta al público y decenas de miles de personas participaron para añadir su propia entropía (aleatoriedad). En total, hubo más de 140.000 contribuciones, lo que la convierte en la ceremonia más grande del mundo de su tipo. Para frustrar la ceremonia, el 100 % de los participantes tendría que actuar de mala fe. Desde la perspectiva de los participantes, si saben que se han comportado mal, no necesitan confiar en nadie más, porque saben que aseguraron la ceremonia (cumplieron individualmente con el requisito de 1-de-N participantes honestos).
-
+
Cuando un rollup publica datos en un blob (gran objeto binario), adquiere el «compromiso» de que se publicará en cadena. Este compromiso es el resultado de evaluar un ajuste polinómico a los datos en ciertos puntos. Estos puntos vienen definidos por los números aleatorios generados en la ceremonia KZG. Los demostradores pueden luego evaluar el polinómico en los mismos puntos para comprobar los datos; si llegan a los mismos valores, entonces los datos son correctos.
-
+
Si alguien conoce las ubicaciones aleatorias utilizadas para el compromiso, le resultará fácil generar un nuevo polinomio que se ajuste a esos puntos específicos (es decir, una «colisión»). Esto significa que podrían añadir o eliminar datos de la masa y aún así proporcionar una prueba válida. Para evitarlo, en lugar de proporcionar a los demostradores las ubicaciones secretas reales, en realidad reciben las ubicaciones recogidas en una «caja negra» criptográfica utilizando curvas elípticas. Estas mezclan efectivamente los valores de tal manera que los valores originales no se pueden invertir, pero con un álgebra ingeniosa, los demostradores y verificadores aún pueden evaluar polinómicos en los puntos que representan.
@@ -67,13 +67,13 @@ Danksharding es la máxima expresión de la escalabilidad de las acumulaciones,
La forma en que esto funciona es expandiendo los blobs adjuntos a los bloques de seis (6) en Proto-Danksharding a 64 en Danksharding completo. El resto de los cambios necesarios son todas actualizaciones en la forma en que operan los clientes de consenso para permitirles gestionar las grandes masas. La hoja de ruta ya incluye varias de estas modificaciones con otros objetivos independientes del Danksharding. Por ejemplo, Danksharding requiere que se haya implementado la separación entre el generador de propuestas y el constructor de bloques. Esta es una actualización que separa las tareas de construir bloques y proponer bloques entre diferentes validadores. De manera similar, el Danksharding requiere el muestreo de disponibilidad de datos, aunque también es necesario para el desarrollo de clientes muy ligeros que no almacenen mucha información histórica («clientes sin estado»).
-
+
La separación entre generador de propuestas y constructor de bloques es necesaria para evitar que los validadores individuales tengan que generar compromisos y pruebas costosas para 32 Mb de masas de datos. Esto ejercería demasiada presión sobre los participantes domésticos y les obligaría a invertir en hardware más potente, lo que perjudica la descentralización. En su lugar, los constructores de bloques especializados asumen la responsabilidad de este costoso trabajo computacional. Luego, ponen sus bloques a disposición de los proponentes de bloques para su difusión. El proponente de bloques simplemente elige el bloque que sea más rentable. Cualquiera puede verificar las masas de datos de manera económica y rápida, lo que significa que cualquier validador normal puede comprobar que los constructores de bloques se están comportando de manera honesta. Esto permite procesar grandes masas sin sacrificar la descentralización. Los constructores de bloques que se comporten de manera incorrecta simplemente podrían ser expulsados de la red con un recorte como penalización, y otros ocuparían su lugar debido a que la construcción de bloques es una actividad rentable.
-
+
El muestreo de disponibilidad de datos es necesario para que los validadores verifiquen de manera rápida y eficiente las masas de datos. Mediante el muestreo de disponibilidad de datos, los validadores pueden estar muy seguros de que las masas de datos están disponibles y se ha comprometido correctamente. Cada validador puede muestrear aleatoriamente solo algunos puntos de datos y crear una prueba, lo que significa que ningún validador tiene que verificar la masa entera. Si falta algún dato, se identifica rápidamente y la masa se rechazará.
From 1e16db3155c1fda4d8429c9537e20b346ae691e8 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:10 -0300
Subject: [PATCH 325/589] update(i18n):
public/content/translations/es/roadmap/statelessness/index.md
---
public/content/translations/es/roadmap/statelessness/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/content/translations/es/roadmap/statelessness/index.md b/public/content/translations/es/roadmap/statelessness/index.md
index 63b12f5d4f1..ead372f033e 100644
--- a/public/content/translations/es/roadmap/statelessness/index.md
+++ b/public/content/translations/es/roadmap/statelessness/index.md
@@ -68,7 +68,7 @@ El sin estado débil implica cambios en la forma en que los nodos de Ethereum ve
Para que esto suceda, los [árboles de Verkle](/roadmap/verkle-trees/) ya deben haberse implementado en los clientes de Ethereum. Los árboles de Verkle son una estructura de datos de sustitución para almacenar datos de estado de Ethereum que permiten que los «testigos» pequeños y de tamaño fijo de los datos se pasen entre pares y se utilicen para verificar bloques, en lugar de verificar bloques contra bases de datos locales. La [separación entre proponentes y constructores](/roadmap/pbs/) también es necesaria, porque permite que los constructores de bloques sean nodos especializados con hardware más potente, y esos son los que requieren acceso a los datos de estado completos.
-
+
El sin estado depende de que los constructores de bloques mantengan una copia de los datos del estado completos para que puedan generar testigos y que sirvan para verificar el bloque. Otros nodos no necesitan acceso a los datos del estado, toda la información necesaria para verificar el bloque está disponible en el testigo. Esto crea una situación en la que proponer un bloque es caro, pero verificar el bloque es barato, lo que implica que menos operadores ejecutarán un nodo de propuesta de bloque. Sin embargo, la descentralización de los proponentes de bloques no es crítica, siempre y cuando el mayor número posible de participantes puedan verificar de forma independiente que los bloques que proponen son válidos.
From 6f6346306f403c7d4b919385728d8cdd54d2c45c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:11 -0300
Subject: [PATCH 326/589] update(i18n):
public/content/translations/es/roadmap/merge/issuance/index.md
---
public/content/translations/es/roadmap/merge/issuance/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/content/translations/es/roadmap/merge/issuance/index.md b/public/content/translations/es/roadmap/merge/issuance/index.md
index 91188274a29..5b3957bce63 100644
--- a/public/content/translations/es/roadmap/merge/issuance/index.md
+++ b/public/content/translations/es/roadmap/merge/issuance/index.md
@@ -16,7 +16,7 @@ La **emisión** de ETH es el proceso de crear ETH que no existía previamente. L
+title="Resumen: emisión de ETH">
- Antes de la transición a la prueba de participación, a los mineros se les emitían aproximadamente 13.000 ETH/día
- A los participantes se les emiten aproximadamente 1.700 ETH/día, sobre la base de un total de unos 14 millones de ETH en staking.
From ea2f2a70f3a4ba4f269cd65b7db76983ccd96d1c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:13 -0300
Subject: [PATCH 327/589] update(i18n):
public/content/translations/es/community/events/organizing/index.md
From 7c02036eb9dc38cff90a732056121092d558571b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:14 -0300
Subject: [PATCH 328/589] update(i18n):
public/content/translations/es/developers/docs/oracles/index.md
From 7ea25ea419e6a05e30d64e21e0f3f2b0c1f48703 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:15 -0300
Subject: [PATCH 329/589] update(i18n):
public/content/translations/es/developers/docs/design-and-ux/heuristics-for-web3/index.md
From c8ab38af17b610155bda97e094f55889f3c579e6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:15 -0300
Subject: [PATCH 330/589] update(i18n):
public/content/translations/es/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
From ae8d075e42385786b9f8f01fdf1f1b430f419775 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:16 -0300
Subject: [PATCH 331/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
From 6568c2ed0d473231b73bc4f373d06c263774a587 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:17 -0300
Subject: [PATCH 332/589] update(i18n):
public/content/translations/es/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md
From 7d766ebf4656bddb47cf0f15b5324f0143e3352a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:18 -0300
Subject: [PATCH 333/589] update(i18n):
public/content/translations/es/dao/index.md
---
public/content/translations/es/dao/index.md | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/public/content/translations/es/dao/index.md b/public/content/translations/es/dao/index.md
index 3da8b5c2172..061f6321d72 100644
--- a/public/content/translations/es/dao/index.md
+++ b/public/content/translations/es/dao/index.md
@@ -70,9 +70,7 @@ Muchas consideraciones entran en juego a la hora de gobernar una DAO, como la ma
La delegación es la versión DAO de la democracia representativa. Los poseedores de los tokens delegan votos a los usuarios quienes se nominan a sí mismos y se comprometen a administrar el protocolo y mantenerse informados.
-#### Un ejemplo famoso {#governance-example}
-
-[ENS](https://claim.ens.domains/delegate-ranking) – Los titulares de ENS pueden delegar sus votos a miembros activos de la comunidad para que los representen.
+#### Un ejemplo famoso {#governance-example}[ENS](https://claim.ens.domains/delegate-ranking) – Los titulares de ENS pueden delegar sus votos a miembros activos de la comunidad para que los representen.
### Gobernanza de transacciones automáticas {#governance-example}
From 670366e2c50396ee775d98eb45301f67a357d0f6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:19 -0300
Subject: [PATCH 334/589] update(i18n):
public/content/translations/es/nft/index.md
---
public/content/translations/es/nft/index.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/public/content/translations/es/nft/index.md b/public/content/translations/es/nft/index.md
index deb8a7cccc4..67e802718b2 100644
--- a/public/content/translations/es/nft/index.md
+++ b/public/content/translations/es/nft/index.md
@@ -60,7 +60,8 @@ Tal vez sea usted un artista que quiere compartir su arte a través de los NFT,
-
Explore, compre o cree sus propios NFT de arte/coleccionables...
+
Explore, compre o cree sus propios NFT de arte/coleccionables...
+
Explorar arte NFT
From b938cd73134446c39afa402f7c827b325c5d24f0 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:19 -0300
Subject: [PATCH 335/589] update(i18n):
public/content/translations/es/social-networks/index.md
From afd02b27d7696c87b83bcc1c0d048b10a46ad05d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:20 -0300
Subject: [PATCH 336/589] update(i18n):
public/content/translations/es/refi/index.md
From 7752c78c8dca0355f86a1367702d8855d441f981 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:21 -0300
Subject: [PATCH 337/589] update(i18n):
public/content/translations/es/web3/index.md
---
public/content/translations/es/web3/index.md | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/public/content/translations/es/web3/index.md b/public/content/translations/es/web3/index.md
index 7232905f351..4e5b185f863 100644
--- a/public/content/translations/es/web3/index.md
+++ b/public/content/translations/es/web3/index.md
@@ -69,7 +69,8 @@ Web3 permite la propiedad directa a través de [tokens no fungibles (NFTs)](/glo
-
Saber más sobre NFT
+
Saber más sobre NFT
+
Más sobre los NFTs
@@ -97,7 +98,8 @@ Sin embargo, las personas definen muchas comunidades Web3 como si fueran DAO. To
-
Más información sobre las DAO
+
Más información sobre las DAO
+
Más sobre las DAOs
From da9d750152a8c8b2086943aae6cbb540da5c75bc Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:22 -0300
Subject: [PATCH 338/589] update(i18n):
public/content/translations/es/eips/index.md
From 3e9595cae60f6e3870d55d0661a71551e1f39cdb Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:22 -0300
Subject: [PATCH 339/589] update(i18n):
public/content/translations/es/community/support/index.md
From 47293d86fc7cb0915be863015e03d3e03e5bc54e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:23 -0300
Subject: [PATCH 340/589] update(i18n):
public/content/translations/es/about/index.md
From 6c26e81b4a5d21a9f27e43541b6def62e2133aa1 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:24 -0300
Subject: [PATCH 341/589] update(i18n):
public/content/translations/es/desci/index.md
From a61480ecbfd1a32cf8415acf6a83142f0ace324a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:25 -0300
Subject: [PATCH 342/589] update(i18n):
public/content/translations/es/real-world-assets/index.md
From eef8ea885e945943898a778189438057f035ec40 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:26 -0300
Subject: [PATCH 343/589] update(i18n):
public/content/translations/es/gaming/index.md
From 6913b6da2a338956fd20a7f212878f87877a1b38 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:26 -0300
Subject: [PATCH 344/589] update(i18n):
public/content/translations/es/bridges/index.md
From 849fa8757e76fc6bb5aaff5bc4cdb9363626c564 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:27 -0300
Subject: [PATCH 345/589] update(i18n):
public/content/translations/es/privacy/index.md
From a26089efd04788aedd4e489e06df4d5d032b9a37 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:28 -0300
Subject: [PATCH 346/589] update(i18n):
public/content/translations/es/payments/index.md
---
public/content/translations/es/payments/index.md | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/public/content/translations/es/payments/index.md b/public/content/translations/es/payments/index.md
index 206c8c29f40..6d830736f64 100644
--- a/public/content/translations/es/payments/index.md
+++ b/public/content/translations/es/payments/index.md
@@ -20,7 +20,6 @@ Esto no es un sueño lejano: está sucediendo hoy en Ethereum. Si bien las insti

-
## Remesas: transferencias internacionales más baratas {#remittances}
@@ -60,10 +59,12 @@ En países cuyos medios de pago están desconectados del resto del mundo, las so
-
Cree su cuenta de Ethereum con una aplicación de cartera hoy.
+
Cree su cuenta de Ethereum con una aplicación de cartera hoy.
+
Comenzar
+
## Pague con tarjetas cripto de autocustodia {#pay-with-self-custodial-crypto-cards}
@@ -124,7 +125,6 @@ También se registró una respuesta similar ante las tragedias ocurridas en Indi

-
## Ethereum o fiat {#ethereum-vs-fiat}
@@ -171,7 +171,6 @@ Con Ethereum, cualquier persona puede ver cómo se mueve el dinero y cómo se ap

-
Aunque las monedas fiduciarias tienen la ventaja de su amplia aceptación y estabilidad, Ethereum ofrece ventajas únicas que la convierten en una opción atractiva para determinados tipos de transacciones.
@@ -181,9 +180,11 @@ Desde facilitar la ayuda rápida en desastres hasta empoderar a trabajadores en
-
Es hora de crear su propia cuenta en Ethereum.
+
Es hora de crear su propia cuenta en Ethereum.
+
¡Comience ya!
+
\ No newline at end of file
From 71df2e01e12b8845bf1dcb911a8f1bac380dc88b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:29 -0300
Subject: [PATCH 347/589] update(i18n):
public/content/translations/es/security/index.md
From 23c394e880480e7d2ffeab321f7673898a7cd66b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:30 -0300
Subject: [PATCH 348/589] update(i18n):
public/content/translations/es/restaking/index.md
From 117b6f9a72f2f0d9de0a4e5a019abae0e38b29b3 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:30 -0300
Subject: [PATCH 349/589] update(i18n):
public/content/translations/es/ai-agents/index.md
---
public/content/translations/es/ai-agents/index.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/public/content/translations/es/ai-agents/index.md b/public/content/translations/es/ai-agents/index.md
index d8b4ea0f202..8a4e86c8174 100644
--- a/public/content/translations/es/ai-agents/index.md
+++ b/public/content/translations/es/ai-agents/index.md
@@ -67,6 +67,7 @@ Durante la campaña de Luna #LunaMuralChallenge en la red social X, Luna selecci
Para tener en cuenta
Los agentes de IA y las herramientas relacionadas aún están en fase inicial de desarrollo y son experimentales; deben utilizarse con prudencia.
+
## Controle su cartera usando los comandos de chat {#control-your-wallet-using-chat-commands}
From 1a4f97e9d014b4afd107cd724ded9bc444f4053a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:31 -0300
Subject: [PATCH 350/589] update(i18n):
public/content/translations/es/eth/supply/index.md
From f487500f8b75654a581ea98727ce36a5ae88ad41 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:32 -0300
Subject: [PATCH 351/589] update(i18n):
public/content/translations/es/foundation/index.md
From aceb4a5eae702acb4f7b3929d10c0cafe14dab62 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:33 -0300
Subject: [PATCH 352/589] update(i18n):
public/content/translations/es/governance/index.md
From f351e50eb0840f2a375c6e961f39aba6dc78b3ed Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:33 -0300
Subject: [PATCH 353/589] update(i18n):
public/content/translations/es/developers/docs/storage/index.md
From b2240d38f2da353d3cf3515bb4523417d8441b29 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:34 -0300
Subject: [PATCH 354/589] update(i18n):
public/content/translations/es/roadmap/pbs/index.md
---
public/content/translations/es/roadmap/pbs/index.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/content/translations/es/roadmap/pbs/index.md b/public/content/translations/es/roadmap/pbs/index.md
index 72650d93c8f..e22ec2d92a3 100644
--- a/public/content/translations/es/roadmap/pbs/index.md
+++ b/public/content/translations/es/roadmap/pbs/index.md
@@ -21,7 +21,6 @@ Por ejemplo, pueden introducirse unas listas de inclusión para que cuando los v
Las organizaciones poderosas pueden presionar a los validadores para censurar transacciones para o de ciertas direcciones. Los validadores cumplen con esta presión detectando direcciones en la lista negra en su pool de transacciones y omitiéndolas de los bloques que proponen. Después de PBS, esto ya no será posible, porque los proponentes de bloques no sabrán qué transacciones están transmitiendo en sus bloques. Cumplir las reglas de censura ―por ejemplo, con la elaboración de un proyecto de ley en esa región― puede que sea importante para ciertos individuos o aplicaciones. En estos casos, se cumple a nivel de la solicitud, mientras que el protocolo se mantiene sin permisos ni censura.
-
## PBS y MEV {#pbs-and-mev}
@@ -32,7 +31,8 @@ PBS soluciona este problema, ya que reconfigura la economía de MEV. En lugar de
-Los individuos pueden recibir incentivos a participar en agrupaciones en vez de hacerlo en solitario, debido a las sugerentes recompensas ofrecidas por las estrategias sofisticadas de MEV. Separar la construcción y la propuesta de bloques, significa que los MEV extraídos serán distribuidos a más validadores en lugar de que sean centralizados con los buscadores más efectivos de MEV. Al mismo tiempo, permitir la existencia de constructores de bloques especializados alivia el peso de la construcción de bloques de los individuos y evita que estos roben MEV, al tiempo que maximiza el número de validadores independientes e individuales que pueden verificar la fiabilidad de los bloques. El concepto importante es «asimetría de probador-verificador» que se refiere a la idea de que la producción centralizada de bloques está bien, siempre y cuando haya una red descentralizada, masiva y robusta de validadores que puedan verificar que los bloques son honestos. La descentralización es un medio, no un objetivo final; lo que queremos son bloques honestos.
+Los individuos pueden recibir incentivos a participar en agrupaciones en vez de hacerlo en solitario, debido a las sugerentes recompensas ofrecidas por las estrategias sofisticadas de MEV. Separar la construcción y la propuesta de bloques, significa que los MEV extraídos serán distribuidos a más validadores en lugar de que sean centralizados con los buscadores más efectivos de MEV. Al mismo tiempo, permitir la existencia de constructores de bloques especializados alivia el peso de la construcción de bloques de los individuos y evita que estos roben MEV, al tiempo que maximiza el número de validadores independientes e individuales que pueden verificar la fiabilidad de los bloques. El concepto importante es «asimetría de probador-verificador» que se refiere a la idea de que la producción centralizada de bloques está bien, siempre y cuando haya una red descentralizada, masiva y robusta de validadores que puedan verificar que los bloques son honestos. La descentralización es un medio, no un objetivo final; lo que queremos son bloques honestos.
+
## PBS y Danksharding {#pbs-and-danksharding}
From edd03433bdec2138a110899c6907e47c61eb9f6c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:35 -0300
Subject: [PATCH 355/589] update(i18n):
public/content/translations/es/wrapped-eth/index.md
---
public/content/translations/es/wrapped-eth/index.md | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/public/content/translations/es/wrapped-eth/index.md b/public/content/translations/es/wrapped-eth/index.md
index a60921abbdd..d74e18575bf 100644
--- a/public/content/translations/es/wrapped-eth/index.md
+++ b/public/content/translations/es/wrapped-eth/index.md
@@ -8,7 +8,8 @@ lang: es
-
Conecte su cartera para agrupar o desagrupar ETH en cualquier cadena en [WrapETH.com](https://www.wrapeth.com/)
+
Conecte su cartera para agrupar o desagrupar ETH en cualquier cadena en [WrapETH.com](https://www.wrapeth.com/)
+
Ether (ETH) es la moneda principal de Ethereum. Se utiliza para varios propósitos como staking, como moneda, y pagar comisiones de gas para las transacciones. **WETH es efectivamente una forma actualizada de ETH con alguna funcionalidad adicional requerida por muchas aplicaciones y [tokens ERC-20](/glossary/#erc-20)**, que son otros tipos de activos digitales en Ethereum. Para trabajar con estos tokens, ETH debe seguir las mismas reglas que ellos, conocidas como el estándar ERC-20.
@@ -40,19 +41,16 @@ Puede unwrappear (desenvolver) WETH por ETH utilizando el contrato inteligente d
Usted paga tasas de gas para wrappear o unwrappear ETH utilizando el contrato WETH.
-
En general, WETH se considera seguro porque se basa en un contrato inteligente sencillo y de eficacia probada. El contrato WETH también ha sido verificado formalmente, lo cual representa el estándar de seguridad más alto para contratos inteligentes en Ethereum.
-
Además de la [implementación canónica de WETH](https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2) descrita en esta página, existen otras variantes. Pueden ser tokens personalizados creados por desarrolladores de aplicaciones o versiones emitidas en otras cadenas de bloques, y pueden comportarse de forma diferente o tener propiedades de seguridad distintas. **Compruebe siempre la información del token para saber con qué implementación de WETH está interactuando.**
-
@@ -60,7 +58,6 @@ Además de la [implementación canónica de WETH](https://etherscan.io/token/0xc
- [Red principal de Ethereum](https://etherscan.io/token/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)
- [Arbitrum](https://arbiscan.io/token/0x82af49447d8a07e3bd95bd0d56f35241523fbab1)
- [Optimism](https://optimistic.etherscan.io/token/0x4200000000000000000000000000000000000006)
-
## Lecturas adicionales {#further-reading}
From 3aa3335c03793dcce01405624353ed50c5166753 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:36 -0300
Subject: [PATCH 356/589] update(i18n):
public/content/translations/es/staking/dvt/index.md
From faa8688e1432ff36a6744b070705576f347784cf Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:37 -0300
Subject: [PATCH 357/589] update(i18n):
public/content/translations/es/defi/index.md
---
public/content/translations/es/defi/index.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/public/content/translations/es/defi/index.md b/public/content/translations/es/defi/index.md
index cdd35f61ad7..6c1bb1b1c97 100644
--- a/public/content/translations/es/defi/index.md
+++ b/public/content/translations/es/defi/index.md
@@ -67,7 +67,8 @@ Esto suena extraño... "¿por qué querría programar mi dinero?" Sin embargo, e
-
Si es nuevo en Ethereum, explore y pruebe algunas de nuestras sugerencias de aplicaciones DeFi.
+
Si es nuevo en Ethereum, explore y pruebe algunas de nuestras sugerencias de aplicaciones DeFi.
+
Explorar aplicaciones DeFi
From 2617022bc22852cbab23ef791d7b606827a2cbff Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:37 -0300
Subject: [PATCH 358/589] update(i18n):
public/content/translations/es/developers/docs/networks/index.md
From 4b3bb27ca01cae58b17ba2471de6b36b2da61452 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:38 -0300
Subject: [PATCH 359/589] update(i18n):
public/content/translations/es/staking/solo/index.md
---
.../translations/es/staking/solo/index.md | 30 ++++++++++++-------
1 file changed, 20 insertions(+), 10 deletions(-)
diff --git a/public/content/translations/es/staking/solo/index.md b/public/content/translations/es/staking/solo/index.md
index a058dd4b784..6e5a3cc4906 100644
--- a/public/content/translations/es/staking/solo/index.md
+++ b/public/content/translations/es/staking/solo/index.md
@@ -43,17 +43,20 @@ Por mucho que deseemos que el staking doméstico sea accesible y esté libre de
Cuando opere su propio nodo, debe dedicar algo de tiempo a aprender a usar el software que ha elegido. Esto implica leer la documentación pertinente y estar en sintonía con los canales de comunicación de los equipos de desarrollo.
-Cuanto más entienda sobre el software que está ejecutando y cómo funciona la prueba de participación, menos arriesgado será como staker, y más fácil será solucionar cualquier problema que pueda surgir en el camino como operador de nodos.
+Cuanto más entienda sobre el software que está ejecutando y cómo funciona la prueba de participación, menos arriesgado será como staker, y más fácil será solucionar cualquier problema que pueda surgir en el camino como operador de nodos.
+
La configuración de un nodo requiere un nivel de comodidad razonable a la hora de trabajar con ordenadores, aunque las nuevas herramientas facilitan cada vez más esta tarea. Entender la interfaz de línea de comandos es útil, pero ya no es estrictamente necesario.
-También requiere una configuración de hardware muy básica y cierta comprensión de las especificaciones mínimas recomendadas.
+También requiere una configuración de hardware muy básica y cierta comprensión de las especificaciones mínimas recomendadas.
+
Al igual que las claves privadas protegen su dirección de Ethereum, tendrá que generar claves específicas para su validador. Debe entender cómo mantener seguras y a salvo las frases semilla o las claves privadas.{' '}
-[Seguridad en Ethereum y prevención de estafas](/security/)
+[Seguridad en Ethereum y prevención de estafas](/security/)
+
El hardware falla ocasionalmente, las conexiones de red dan error y el software cliente necesita actualizarse de vez en cuando. El mantenimiento de los nodos es inevitable y requerirá su atención de vez en cuando. Deberá asegurarse de estar al tanto de cualquier actualización prevista de la red o de otras actualizaciones críticas de los clientes.
@@ -66,7 +69,10 @@ Sus recompensas son proporcionales al tiempo que su validador está en línea y
A diferencia de las penalizaciones por inactividad por estar desconectado, el slashing es una penalización mucho más grave reservada para las infracciones maliciosas. Al ejecutar un cliente minoritario con las claves cargadas en una sola máquina a la vez, se minimiza el riesgo de sufrir slashing. Dicho esto, todos los stakers deben ser conscientes de los riesgos del slashing.
- Más información sobre penalizaciones (slashing) y el ciclo de vida de los validadores
+ Más información sobre penalizaciones (slashing) y el ciclo de vida de los validadores
+
+
+
@@ -125,7 +131,6 @@ Estas son algunas de las preguntas más comunes sobre la participación que vale
Un validador es una entidad virtual que vive en Ethereum y participa en el consenso del protocolo de Ethereum. Los validadores están representados por un saldo, una clave pública y otras propiedades. Un cliente validador es el software que actúa en nombre del validador al mantener y utilizar su clave privada. Un único cliente validador puede contener muchos pares de claves, controlando a muchos validadores.
-
@@ -137,14 +142,16 @@ Este búfer también evita que un saldo efectivo caiga hasta que haya bajado 0,2
Cada par de claves asociado a un validador requiere al menos 32 ETH para ser activado. Cualquier saldo por encima de este puede ser retirado a la dirección de retiro asociada en cualquier momento a través de una transacción firmada por esta dirección. Cualquier fondo que supere el saldo efectivo máximo se retirará automáticamente de forma periódica.
-Si el staking doméstico le parece demasiado exigente, considere la posibilidad de utilizar un proveedor de [staking como servicio](/staking/saas/), o si está trabajando con menos de 32 ETH, consulte los [grupos de staking](/staking/pools/).
+Si el staking doméstico le parece demasiado exigente, considere la posibilidad de utilizar un proveedor de [staking como servicio](/staking/saas/), o si está trabajando con menos de 32 ETH, consulte los [grupos de staking](/staking/pools/).
+
Desconectarse cuando la red está finalizando correctamente NO dará lugar a slashing. Se incurre en pequeñas penalizaciones por inactividad si su validador no está disponible para atestiguar durante una época determinada (cada una de 6,4 minutos de duración), pero esto es muy diferente del slashing. Estas penalizaciones son ligeramente inferiores a la recompensa que habría obtenido si el validador hubiera estado disponible para atestiguar, y las pérdidas pueden recuperarse con aproximadamente la misma cantidad de tiempo en línea de nuevo.
Tenga en cuenta que las penalizaciones por inactividad son proporcionales al número de validadores que estén desconectados al mismo tiempo. En los casos en que una gran parte de la red está desconectada a la vez, las penalizaciones para cada uno de estos validadores serán mayores que cuando un solo validador no está disponible.
-En casos extremos, si la red deja de finalizar como resultado de que más de un tercio de los validadores están desconectados, estos usuarios sufrirán lo que se conoce como una fuga de inactividad cuadrática, que es un drenaje exponencial de ETH de las cuentas de los validadores desconectados. Esto permite que la red se autocure eventualmente quemando el ETH de los validadores inactivos hasta que su saldo alcance los 16 ETH, momento en el que serán expulsados automáticamente del grupo de validadores. Los validadores restantes en línea acabarán constituyendo de nuevo más de 2/3 de la red, satisfaciendo la supermayoría necesaria para volver a finalizar la cadena.
+En casos extremos, si la red deja de finalizar como resultado de que más de un tercio de los validadores están desconectados, estos usuarios sufrirán lo que se conoce como una fuga de inactividad cuadrática, que es un drenaje exponencial de ETH de las cuentas de los validadores desconectados. Esto permite que la red se autocure eventualmente quemando el ETH de los validadores inactivos hasta que su saldo alcance los 16 ETH, momento en el que serán expulsados automáticamente del grupo de validadores. Los validadores restantes en línea acabarán constituyendo de nuevo más de 2/3 de la red, satisfaciendo la supermayoría necesaria para volver a finalizar la cadena.
+
En resumen, esto nunca se puede garantizar por completo, pero si actúa de buena fe, ejecuta un cliente minoritario y mantiene sus claves de firma en solo una máquina a la vez, el riesgo de ser penalizado (slashed) es casi nulo.
@@ -166,14 +173,16 @@ Los clientes individuales pueden variar ligeramente en cuanto a rendimiento e in
Dado que todos los clientes de producción ofrecen la misma funcionalidad básica, es muy importante que elija un cliente minoritario, es decir, cualquier cliente que NO esté siendo utilizado actualmente por la mayoría de los validadores de la red. Puede que esto suene contraintuitivo, pero ejecutar un cliente mayoritario o de supermayoría le expone a un mayor riesgo de slashing en caso de que se produzca un error en dicho cliente. Ejecutar un cliente minoritario limita drásticamente estos riesgos.
-Obtenga más información sobre por qué la diversidad de clientes es fundamental
+Obtenga más información sobre por qué la diversidad de clientes es fundamental
+
Aunque se puede utilizar un servidor privado virtual (VPS) como sustituto del hardware doméstico, el acceso físico y la ubicación de su cliente validador sí importan. Las soluciones centralizadas en la nube, como Amazon Web Services o Digital Ocean, permiten la comodidad de no tener que obtener y operar hardware, a expensas de centralizar la red.
Cuantos más clientes validadores se ejecuten en una única solución de almacenamiento centralizado en la nube, más peligroso se vuelve para estos usuarios. Cualquier evento que desconecte a estos proveedores, ya sea por un ataque, por exigencias normativas o simplemente por cortes de energía o de Internet, hará que todos los clientes validadores que dependen de este servidor se desconecten al mismo tiempo.
-Las penalizaciones por estar fuera de línea son proporcionales a cuántos otros están fuera de línea al mismo tiempo. El uso de un VPS aumenta en gran medida el riesgo de que las penalizaciones por desconexión sean más graves, y aumenta el riesgo de fugas cuadráticas o de slashing en caso de que la interrupción sea lo suficientemente grande. Para minimizar su propio riesgo y el de la red, se recomienda encarecidamente a los usuarios que obtengan y operen su propio hardware.
+Las penalizaciones por estar fuera de línea son proporcionales a cuántos otros están fuera de línea al mismo tiempo. El uso de un VPS aumenta en gran medida el riesgo de que las penalizaciones por desconexión sean más graves, y aumenta el riesgo de fugas cuadráticas o de slashing en caso de que la interrupción sea lo suficientemente grande. Para minimizar su propio riesgo y el de la red, se recomienda encarecidamente a los usuarios que obtengan y operen su propio hardware.
+
@@ -185,7 +194,8 @@ Una vez establecidas las credenciales de retirada, los pagos de recompensa (ETH
Para desbloquear y recibir el saldo completo, también debe completar el proceso de salida de su validador.
-Más sobre retiros de staking
+Más sobre retiros de staking
+
## Lecturas adicionales {#further-reading}
From e600bcaa6393c84c660e0d4b67802c1cfead6306 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:39 -0300
Subject: [PATCH 360/589] update(i18n):
public/content/translations/es/contributing/index.md
From bab8cfa934498c70eaf251f79efe7074f3ef107a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:40 -0300
Subject: [PATCH 361/589] update(i18n):
public/content/translations/es/staking/saas/index.md
---
public/content/translations/es/staking/saas/index.md | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/public/content/translations/es/staking/saas/index.md b/public/content/translations/es/staking/saas/index.md
index b903cc8d503..4860a861321 100644
--- a/public/content/translations/es/staking/saas/index.md
+++ b/public/content/translations/es/staking/saas/index.md
@@ -17,7 +17,7 @@ summaryPoints:
La participación como servicio (SaaS), representa una categoría de servicios de participación donde deposita 32 ETH para la validación, pero se delegan las operaciones del nodo a un tercero. A cambio se le suele guiar por la configuración inicial, incluida la generación de claves y el depósito, para luego cargar las claves de firma al operador. Esto permite que el servicio maneje su validador en su nombre, generalmente, a cambio de una cuota mensual.
-## ¿Por qué debería participar con un servicio? {#por-qué-apostar-con-un-servicio}
+## ¿Por qué debería participar con un servicio? {#why-stake-with-a-service}
El protocolo de Ethereum no respalda originariamente la delegación de participaciones y, por tanto, estos servicios se han creado con el fin de cubrir esta demanda. Si tiene 32 ETH para participar, pero no domina con confianza el hardware, los servicios de participación (SaaS) le permiten delegar la parte técnica mientras gana recompensas de bloques nativos.
@@ -70,21 +70,24 @@ Para habilitar la retirada, es necesario actualizar las credenciales\*. Este pro
Asegúrese de respaldar esta frase semilla de manera segura o no podrá generar sus claves de retiro cuando sea necesario.
-\*Los stakers que proporcionaron una dirección de retiro con el depósito inicial no necesitan configurar esto. Consulte con su proveedor de SaaS para obtener ayuda acerca de cómo preparar su validador.
+\*Los stakers que proporcionaron una dirección de retiro con el depósito inicial no necesitan configurar esto. Consulte con su proveedor de SaaS para obtener ayuda acerca de cómo preparar su validador.
+
Los stakers deben proporcionar una dirección de retiro (si no se proporcionó al realizar el depósito inicial), y los pagos de recompensas comenzarán a distribuirse automáticamente de manera periódica cada pocos días.
Los validadores también pueden salir como validadores, lo que desbloqueará su saldo restante en ETH para retirarlo. Las cuentas que hayan proporcionado una dirección de retirada de ejecución y hayan completado el proceso de salida recibirán su saldo completo a la dirección de retirada proporcionada durante el próximo barrido del validador.
-Más sobre retiros de staking
+Más sobre retiros de staking
+
Al usar un proveedor SaaS, está confiando la operación de su nodo a otra persona. Esto conlleva el riesgo de un funcionamiento deficiente del nodo, que no está bajo su control. En el caso de que recorte la actividad de su validador, el saldo de su validador será penalizado y eliminado forzosamente del grupo de validadores.
Al finalizar el proceso de recorte y salida, estos fondos se transferirán a la dirección de retirada asignada al validador. Para habilitar la retirada, es preciso proporcionar una dirección. Puede haberse proporcionado en un depósito inicial. De lo contrario, se tendrán que usar las claves de retirada del validador para firmar un mensaje declarando una dirección de retirada. Si no se ha proporcionado ninguna dirección de retirada, los fondos permanecerán bloqueados hasta que se proporcione.
-Póngase en contacto con un proveedor individual de SaaS para obtener más detalles sobre cualquier garantía u opciones de seguridad, así como para obtener instrucciones de configuración de una dirección de retirada. Si prefiere tener el control total de la configuración de su validador, [entérese de cómo puede participar desde casa con sus ETH](/staking/solo/).
+Póngase en contacto con un proveedor individual de SaaS para obtener más detalles sobre cualquier garantía u opciones de seguridad, así como para obtener instrucciones de configuración de una dirección de retirada. Si prefiere tener el control total de la configuración de su validador, [entérese de cómo puede participar desde casa con sus ETH](/staking/solo/).
+
## Lecturas adicionales {#further-reading}
From 112acedc71fa3cc936f4e000bc1c17d30b7679b6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:40 -0300
Subject: [PATCH 362/589] update(i18n):
public/content/translations/es/what-are-apps/index.md
---
public/content/translations/es/what-are-apps/index.md | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/public/content/translations/es/what-are-apps/index.md b/public/content/translations/es/what-are-apps/index.md
index 717101a79de..5517aa7017c 100644
--- a/public/content/translations/es/what-are-apps/index.md
+++ b/public/content/translations/es/what-are-apps/index.md
@@ -51,22 +51,21 @@ Las aplicaciones funcionan mediante contratos inteligentes - bits de código que

-
-## Las aplicaciones de Ethereum son como piezas de lego {#ethereum-apps-are-like-legos}
+## Las aplicaciones de Ethereum son como piezas de lego {#how-does-it-work}
Cuando todas las aplicaciones se construyen en Ethereum, se vuelven compatibles entre si. Un token de una aplicación, funcionará en otra completamente diferente. Es como si pudieras publicar tweets en tu muro de Facebook. De hecho, puede reutilizar su mismo perfil en muchas aplicaciones de Ethereum sin necesidad de registrarse en cada una de ellas.
-## Lecturas adicionales {#further-reading}
+## Lecturas adicionales {#ethereum-apps-are-like-legos}
- [Ethereum para principiantes](/what-is-ethereum)
- [¿Qué son los contratos inteligentes?](/developers/docs/smart-contracts/)
- [Documentación técnica sobre las DApp](/developers/docs/dapps/)
-## Preguntas frecuentes {#faq}
+## Preguntas frecuentes {#further-reading}
A las aplicaciones decentralizadas se las conoce como DApps. Son aplicaciones construidas en redes de cadena de bloque como Ethereum. Se dice que son descentralizadas, porque la red subyacente está descentralizada.
From ee37915fb9107e33f45cc6cc6895fa8b6bda0090 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:41 -0300
Subject: [PATCH 363/589] update(i18n):
public/content/translations/es/roadmap/merge/index.md
---
.../content/translations/es/roadmap/merge/index.md | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/public/content/translations/es/roadmap/merge/index.md b/public/content/translations/es/roadmap/merge/index.md
index 9c97b10b066..d5e84488d7c 100644
--- a/public/content/translations/es/roadmap/merge/index.md
+++ b/public/content/translations/es/roadmap/merge/index.md
@@ -70,7 +70,8 @@ Las principales medidas son las siguientes:
Si no se completan los dos puntos anteriores, el nodo se verá como «desconectado» hasta que ambas capas estén sincronizadas y autenticadas.
-Si no se establece un «receptor de las comisiones», el validador seguirá comportandose como de costumbre, pero se perderán las propinas de las comisiones no consumidas y cualquier MEV que se hubiera ganado en los bloques que propone el validador.
+Si no se establece un «receptor de las comisiones», el validador seguirá comportandose como de costumbre, pero se perderán las propinas de las comisiones no consumidas y cualquier MEV que se hubiera ganado en los bloques que propone el validador.
+
Para obtener más información, eche un vistazo a esta publicación en el blog de Tim Beiko sobre Cómo afecta La Fusión a la capa de aplicación de Ethereum.
-
## La Fusión y el consumo de energía {#merge-and-energy}
@@ -134,7 +133,6 @@ Cualquier persona bajo cualquier mecanismo de consenso (prueba de trabajo o prue
La capacidad de cualquier persona tiene de ejecutar su propio nodo es absolutamente esencial para mantener la descentralización de la red Ethereum.
[Más sobre la ejecución de su propio nodo](/run-a-node/)
-
hoja de ruta centrada en los rollups, los esfuerzos se enfocan en escalar la actividad de los usuarios en la [capa 2](/layer-2/), mientras que la red principal de capa 1 se habilita como una capa de liquidación descentralizada y segura, optimizada para el almacenamiento de datos de los rollups, lo que ayuda a que las transacciones de rollups sean exponencialmente más baratas. La transición a la prueba de participación es un precursor fundamental para conseguirlo. [Más información sobre el gas y las tasas.](/developers/docs/gas/)
-
dirección de retirada para comenzar a recibir pagos automáticos de cualquier saldo en exceso (más de 32 ETH por recompensas del protocolo). Esta actualización también permitió a los validadores desbloquear y reclamar el total de su saldo al salir de la red.
[Más información sobre las retiradas de participaciones](/staking/withdrawals/)
-
+La APR también es intencionalmente dinámica, lo que permite a un mercado de participantes equilibrar cuánto están dispuestos a que se les pague para ayudar a proteger la red. Si la tasa es muy baja, los validadores se retirarán a un ritmo limitado por el protocolo. Poco a poco, esto aumentará la APR para todos los que se queden, atrayendo a nuevos participantes o a los que regresen.
+
## ¿Qué pasó con «Eth2»? {#eth2}
From 487a407b1b33cbf312bba84ed4c12afb3e88e11a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:43 -0300
Subject: [PATCH 364/589] update(i18n):
public/content/translations/es/staking/pools/index.md
---
public/content/translations/es/staking/pools/index.md | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/public/content/translations/es/staking/pools/index.md b/public/content/translations/es/staking/pools/index.md
index 14b10195110..96b7e275ef2 100644
--- a/public/content/translations/es/staking/pools/index.md
+++ b/public/content/translations/es/staking/pools/index.md
@@ -68,14 +68,16 @@ Por lo general, los tókenes de participación ERC-20 se emiten a los participan
Alternativamente, los grupos que usan tókenes de participación ERC-20, permiten a los usuarios operar dicho token en el libre mercado, pudiendo vender la posición en participación, «retirándola» de forma eficaz sin tener que eliminar ETH del contrato de participación.
-Más sobre retiros de staking
+Más sobre retiros de staking
+
Existen muchas similitudes entre estas opciones de staking en pool y los exchanges centralizados, como la posibilidad de hacer staking con pequeñas cantidades de ETH y agruparlos para activar validadores.
A diferencia de los intercambios centralizados, muchas otras opciones de participación agrupadas utilizan contratos inteligentes y/o tókenes de participación, que son usualmente tókenes ERC-20 que pueden permanecer en la cartera, y comprarse o venderse como cualquier otro token. Esto ofrece una capa de soberanía y seguridad al darle el control sobre sus tókenes, pero no le da el control directo sobre el cliente validador que certifica en su nombre en segundo plano.
-Algunas opciones de agrupamiento están más descentralizadas que otras cuando se trata de los nodos que las respaldan. Para promover la salud y la descentralización de la red, siempre se anima a los participantes a seleccionar un servicio de agrupación que permita un conjunto descentralizado de operadores de nodos sin permisos.
+Algunas opciones de agrupamiento están más descentralizadas que otras cuando se trata de los nodos que las respaldan. Para promover la salud y la descentralización de la red, siempre se anima a los participantes a seleccionar un servicio de agrupación que permita un conjunto descentralizado de operadores de nodos sin permisos.
+
## Lecturas adicionales {#further-reading}
From 4f9678ba92cfae4a3cb10574ac53e87d26d8e386 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:43 -0300
Subject: [PATCH 365/589] update(i18n):
public/content/translations/es/developers/docs/frameworks/index.md
From d373c3461bfc76f83bb3ea1c7101fff5ce1ce155 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:44 -0300
Subject: [PATCH 366/589] update(i18n):
public/content/translations/es/roadmap/pectra/index.md
---
public/content/translations/es/roadmap/pectra/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/content/translations/es/roadmap/pectra/index.md b/public/content/translations/es/roadmap/pectra/index.md
index 49c6c2420da..7c3f088b879 100644
--- a/public/content/translations/es/roadmap/pectra/index.md
+++ b/public/content/translations/es/roadmap/pectra/index.md
@@ -46,7 +46,7 @@ Los blobs proporcionan [disponibilidad de datos](/developers/docs/data-availabil
Actualmente, la red apunta a un promedio de 3 blobs por bloque, con un máximo de 6 blobs. Con [EIP-7691](https://eips.ethereum.org/EIPS/eip-7691), el promedio de blobs aumentará a 6, con un máximo de 9 por bloque, lo que supondrá un aumento de la capacidad de los rollups de Ethereum. Esta EIP salva la brecha hasta que [PeerDAS](https://eips.ethereum.org/EIPS/eip-7594) permita un número aún mayor de blobs.
-### Aumento del coste de datos de llamada{#7623}
+### Aumento del coste de datos de llamada {#7623}
Antes de la introducción de [blobs en la actualización Dencun](/roadmap/danksharding), las capas 2 utilizaban [calldata](/developers/docs/data-availability/blockchain-data-storage-strategies/#calldata) para almacenar sus datos en Ethereum. Ambos, los blobs y los calldata, afectan al uso del ancho de banda de Ethereum. Aunque la mayoría de los bloques solo utilizan una cantidad mínima de calldata, los bloques con gran volumen de datos que también contienen muchos blobs pueden ser perjudiciales para la red p2p de Ethereum.
From 87487649fac3b570bb7d74af195263b36d58984c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:45 -0300
Subject: [PATCH 367/589] update(i18n):
public/content/translations/es/roadmap/dencun/index.md
From f5c546a8229d501e33e8a52bfc8255c0fbaa0c9e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:46 -0300
Subject: [PATCH 368/589] update(i18n):
public/content/translations/es/smart-contracts/index.md
From 8348e816c520d1e49b711ddf06bd359c6d40f730 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:47 -0300
Subject: [PATCH 369/589] update(i18n):
public/content/translations/es/roadmap/scaling/index.md
From da2992f725bb1b4c67f36f1950dc2529a7b4db00 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:47 -0300
Subject: [PATCH 370/589] update(i18n):
public/content/translations/es/community/events/index.md
From b59ffc1deca96385da33fa88eb17135617dc91e3 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:48 -0300
Subject: [PATCH 371/589] update(i18n):
public/content/translations/es/community/online/index.md
---
public/content/translations/es/community/online/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/content/translations/es/community/online/index.md b/public/content/translations/es/community/online/index.md
index 5cd2e5be5cc..eb0e59ecedb 100644
--- a/public/content/translations/es/community/online/index.md
+++ b/public/content/translations/es/community/online/index.md
@@ -51,5 +51,5 @@ Si considera que debería añadirse o eliminarse una comunidad en función de es
Más información sobre DAOs
-
+
From 73d0d46d12d7f32fe9c43f6ce489deb4a621299c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:49 -0300
Subject: [PATCH 372/589] update(i18n):
public/content/translations/es/roadmap/security/index.md
From fec5fa4cbeb976f810df2e39818afaf3cc3a9b22 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:50 -0300
Subject: [PATCH 373/589] update(i18n):
public/content/translations/es/community/grants/index.md
---
public/content/translations/es/community/grants/index.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/public/content/translations/es/community/grants/index.md b/public/content/translations/es/community/grants/index.md
index 56c725ea66e..28aeb089a78 100644
--- a/public/content/translations/es/community/grants/index.md
+++ b/public/content/translations/es/community/grants/index.md
@@ -12,7 +12,8 @@ Esta lista ha sido creada por nuestra comunidad. Si falta algo o encuentra infor
-
¿Eres fundador y necesitas ayuda para acelerar tu negocio? [Dirígete a Founders Support](/founders/)
+
¿Eres fundador y necesitas ayuda para acelerar tu negocio? [Dirígete a Founders Support](/founders/)
+
## Amplio ecosistema Ethereum {#broad-ethereum-ecosystem}
From 8fd44b4c2e70ff27771e9ede2b0bb402c7a5c3aa Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:51 -0300
Subject: [PATCH 374/589] update(i18n):
public/content/translations/es/prediction-markets/index.md
---
public/content/translations/es/prediction-markets/index.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/public/content/translations/es/prediction-markets/index.md b/public/content/translations/es/prediction-markets/index.md
index 101c1299106..565afd322da 100644
--- a/public/content/translations/es/prediction-markets/index.md
+++ b/public/content/translations/es/prediction-markets/index.md
@@ -56,7 +56,9 @@ Existen diversos mercados de predicción basados en Ethereum. Estos son algunos
Considere siempre los riesgos
Apueste solo lo que pueda permitirse perder y tenga presente las posibles conductas adictivas.
+
+
## Desafíos y riesgos {#challenges-and-risks}
From ae891fa2f0185b940b297a418a4fcf32152f916e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:51 -0300
Subject: [PATCH 375/589] update(i18n):
public/content/translations/es/energy-consumption/index.md
From 45fc5d300954c3fe7bcd89c908d83a6244898236 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:52 -0300
Subject: [PATCH 376/589] update(i18n):
public/content/translations/es/staking/withdrawals/index.md
---
.../es/staking/withdrawals/index.md | 21 +++++++++++--------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/public/content/translations/es/staking/withdrawals/index.md b/public/content/translations/es/staking/withdrawals/index.md
index 9c7931e367e..11d52962fd1 100644
--- a/public/content/translations/es/staking/withdrawals/index.md
+++ b/public/content/translations/es/staking/withdrawals/index.md
@@ -42,7 +42,8 @@ Proporcionar una dirección de retirada es un paso obligatorio para cualquier cu
-A cada cuenta de validador solo se le puede asignar una única dirección de retiro, una sola vez. Una vez que se ha elegido y enviado una dirección a la capa de consenso, esta no se puede deshacer ni volver a cambiar. Verifique la titularidad y la exactitud de la dirección proporcionada antes de enviarla.
+
+A cada cuenta de validador solo se le puede asignar una única dirección de retiro, una sola vez. Una vez que se ha elegido y enviado una dirección a la capa de consenso, esta no se puede deshacer ni volver a cambiar. Verifique la titularidad y la exactitud de la dirección proporcionada antes de enviarla.
@@ -137,7 +138,8 @@ title="Una vez que he proporcionado una dirección de retiro, ¿puedo cambiarla
eventCategory="FAQ"
eventAction="Once I have provided a withdrawal address, can I change it to an alternative withdrawal address?"
eventName="read more">
-No, el proceso para proporcionar las credenciales de retiro es un proceso único y no puede cambiarse una vez enviado.
+No, el proceso para proporcionar las credenciales de retiro es un proceso único y no puede cambiarse una vez enviado.
+
+Como alternativa al cambio de la dirección de retirada para un validador en particular, los usuarios pueden optar por establecer un contrato inteligente como su dirección de retirada, la cual podría manejar la rotación clave, como una caja fuerte. Los usuarios que establezcan sus fondos en su propia EOA pueden realizar una salida completa para retirar todos sus fondos apostados, y luego volver a apostarlos usando nuevas credenciales.
+
Si forma parte de algún [grupo de participación](/staking/pools/) o tiene tókenes de participación, debería consultarle a su proveedor los detalles sobre cómo se procesan las retiradas de participaciones, ya que cada servicio funciona de forma distinta.
En general, los usuarios deberían tener la libertad de reclamar sus ETH apostados subyacentes, o cambiar de proveedor de apuestas. Si un grupo en particular se está volviendo demasiado grande, los fondos se pueden cerrar y canjear, y volver a apostarlos con un proveedor más pequeño. O, si ha acumulado suficientes ETH, podría [participar desde casa](/staking/solo/).
-
-Sí, siempre que su validador haya proporcionado una dirección de retiro. Se debe proporcionar una vez para habilitar inicialmente cualquier retirada, luego los pagos de recompensa se activarán automáticamente cada pocos días con cada barrido del validador.
+Sí, siempre que su validador haya proporcionado una dirección de retiro. Se debe proporcionar una vez para habilitar inicialmente cualquier retirada, luego los pagos de recompensa se activarán automáticamente cada pocos días con cada barrido del validador.
+
No, si su validador todavía está activo en la red, una retirada completa no se producirá automáticamente. Esto requiere iniciar manualmente una salida voluntaria.
Una vez que un validador ha completado el proceso de salida ―asumiendo que la cuenta tenga credenciales de retirada― el saldo restante se retirará entonces durante el siguiente barrido del validador.
-
Los retiros están diseñados para ser enviados automáticamente, transfiriendo cualquier ETH que no esté contribuyendo activamente al stake. Esto incluye saldos completos para cuentas que han completado el proceso de salida.
-No es posible solicitar manualmente la retirada de cantidades específicas de ETH.
+No es posible solicitar manualmente la retirada de cantidades específicas de ETH.
+
Se recomienda a los operadores validadores visitar la página Retiradas del lanzador de apuestas donde encontrará más detalles sobre cómo preparar su validador para las retiradas, la sincronización de los eventos y más detalles sobre cómo funcionan las retiradas.
Para probar primero su configuración en una red de prueba, visite la Hoodi Testnet Staking Launchpad para empezar.
-
-No. Una vez que un validador ha salido y su saldo total se ha retirado, cualquier fondo adicional depositado a ese validador se transferirá automáticamente a la dirección de retirada durante el próximo barrido del validador. Para volver a apostar ETH, se debe activar un validador nuevo.
+No. Una vez que un validador ha salido y su saldo total se ha retirado, cualquier fondo adicional depositado a ese validador se transferirá automáticamente a la dirección de retirada durante el próximo barrido del validador. Para volver a apostar ETH, se debe activar un validador nuevo.
+
## Lecturas adicionales {#further-reading}
From 60e6ef590395572d6bbd24022a8ecd240193c366 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:53 -0300
Subject: [PATCH 377/589] update(i18n):
public/content/translations/es/contributing/design/index.md
From e044e552369d758251436559e931d5a9f3c9aad9 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:54 -0300
Subject: [PATCH 378/589] update(i18n):
public/content/translations/es/roadmap/pectra/7702/index.md
From dc1adb57b4b28e6bc0d37d04bb59309335902239 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:55 -0300
Subject: [PATCH 379/589] update(i18n):
public/content/translations/es/developers/docs/evm/index.md
From 93087ec1b6be5a3bffe51003bf55fb1cfcc3cbc0 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:56 -0300
Subject: [PATCH 380/589] update(i18n):
public/content/translations/es/roadmap/pectra/maxeb/index.md
From 5c30d44951e3bd71ad60ac314d0b9ef3db204564 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:57 -0300
Subject: [PATCH 381/589] update(i18n):
public/content/translations/es/roadmap/beacon-chain/index.md
From 284e84b7431e33316546c822b79c2a16c59707d7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:58 -0300
Subject: [PATCH 382/589] update(i18n):
public/content/translations/es/developers/docs/blocks/index.md
From 325a5d2ef5f4209f4327d33789d180dcb9f5a9f6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:58 -0300
Subject: [PATCH 383/589] update(i18n):
public/content/translations/es/developers/docs/bridges/index.md
From a2027b9d0b8f2005428fc5fe449784e7f4516d43 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:00:59 -0300
Subject: [PATCH 384/589] update(i18n):
public/content/translations/es/guides/how-to-swap-tokens/index.md
---
.../content/translations/es/guides/how-to-swap-tokens/index.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/public/content/translations/es/guides/how-to-swap-tokens/index.md b/public/content/translations/es/guides/how-to-swap-tokens/index.md
index ed0c9582b61..11c34aa12e5 100644
--- a/public/content/translations/es/guides/how-to-swap-tokens/index.md
+++ b/public/content/translations/es/guides/how-to-swap-tokens/index.md
@@ -52,7 +52,8 @@ Recibirá automáticamente los tokens intercambiados en su billetera una vez que
-
¿Quiere saber más?
+
¿Quiere saber más?
+
Vea nuestras otras guías
From 6f1af97ff6a9f65b0c070750039306440bb9ba59 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:00 -0300
Subject: [PATCH 385/589] update(i18n):
public/content/translations/es/ethereum-forks/index.md
---
.../translations/es/ethereum-forks/index.md | 18 ------------------
1 file changed, 18 deletions(-)
diff --git a/public/content/translations/es/ethereum-forks/index.md b/public/content/translations/es/ethereum-forks/index.md
index 77ecc220c46..6a0d837ddf8 100644
--- a/public/content/translations/es/ethereum-forks/index.md
+++ b/public/content/translations/es/ethereum-forks/index.md
@@ -16,7 +16,6 @@ Las bifurcaciones se producen cuando es necesario realizar actualizaciones o cam
Cuando se precisan actualizaciones en un software tradicional y controlado centralmente, la empresa publica una nueva versión para el usuario final. Las cadenas de bloque funcionan de manera diferente porque no hay propiedad central. Los [clientes de Ethereum](/developers/docs/nodes-and-clients/) deben actualizar su software para implementar las nuevas reglas de la bifurcación. Además de creadores de bloques (los mineros en el mundo de las pruebas de trabajo y los validadores en el universo de las pruebas de participación) y los nodos, deben crearse bloques y validarlos con respecto a las reglas nuevas. [Más sobre los mecanismos de consenso](/developers/docs/consensus-mechanisms/)
Estos cambios en las reglas pueden crear una división temporal en la red. Los bloques nuevos podrían producirse de acuerdo con las reglas nuevas o con las antiguas. Normalmente las bifurcaciones se acuerdan con antelación para que los clientes adopten los cambios a la vez. Además, de este modo las bifurcaciones actualizadas se convertirán en la cadena principal. Sin embargo, en casos excepcionales, los desacuerdos con respecto a las bifurcaciones pueden provocar que la red permanezca dividida. La más notable es la creación de Ethereum Classic con la [bifurcación DAO] (#dao-fork).
-
@@ -62,7 +61,6 @@ Las actualizaciones de ejecución y consenso se implementaron inicialmente en di
| Cancún | Deneb | "Dencun" |
| Praga | Electra | "Pectra" |
| Osaka | Fulu | "Fusaka" |
-
Vaya directamente a la información sobre algunas de las actualizaciones pasadas especialmente importantes: [La Beacon Chain](/roadmap/beacon-chain/); [La Fusión](/roadmap/merge/); y [EIP-1559](#london)
@@ -116,7 +114,6 @@ Mejoras en la eficiencia y seguridad del protocolo:
EIP-2935: Guardar hashes de bloques históricos en el estado
EIP-7549: Mover el índice del comité fuera de la certificación
-
- [Pectra.wtf](https://pectra.wtf)
@@ -148,7 +145,6 @@ Esto incluye especialmente EIP-4844, conocido como **Proto-Danksharding**, que r
EIP-6780 - AUTODESTRUCTOR solo en la misma transacción
-
- [Lea las especificaciones de la actualización Deneb](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/)
@@ -200,7 +195,6 @@ La actualizacion de Shangai trae los retiros de staking a la capa de ejecución.
EIP-4895: notificación cadena de baliza con retiradas como operaciones
-
- [Lea la especificación de la actualización Shanghái](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md)
@@ -236,7 +230,6 @@ La actualización París se activó cuando la blockchain proof-of-work superó u
EIP-3675: consenso de actualización a la prueba de participación
EIP-4399: suplanta código operativo DIFFICULTY por PREVRANDAO
-
---
@@ -268,7 +261,6 @@ La actualización de red Gray Glacier pospuso la [bomba de dificultad](/glossary
EIP-5133: retrasa la bomba de dificultad hasta septiembre de 2022
-
@@ -291,7 +283,6 @@ La actualización de red Arrow Glacier pospuso la [bomba de dificultad](/glossar
EIP-4345: retrasa la bomba de dificultad hasta junio de 2022
-
---
@@ -349,7 +340,6 @@ Este video explica EIP-1559 y los beneficios que trae: [EIP-1559 Explicado](http
EIP-3541: evita lanzar contratos que empiecen por 0xEF
EIP-3554: retrasa la Era de hielo hasta diciembre de 2021
-
---
@@ -373,7 +363,6 @@ La actualización Berlin optimizó el coste del gas para ciertas acciones de EVM
EIP-2929: incrementos en el coste del gas para códigos operativos de acceso a estados
-
@@ -428,7 +417,6 @@ El fork Muir Glacier introdujo un retraso en la [bomba de dificultad](/glossary/
EIP-2384: retrasa la bomba de dificultad otros 4.000.000 bloques o ~611 días.
-
@@ -461,7 +449,6 @@ La bifurcación de Istanbul:
EIP-2028: reduce el coste de CallData para permitir más datos en los bloques – beneficioso para la [escalabilidad de capa 2](/developers/docs/scaling/#layer-2-scaling).
EIP-2200: otras modificaciones del precio del gas del código de operación
-
---
@@ -489,7 +476,6 @@ La bifurcación Constantinople:
EIP-1052: introduce la instrucción EXTCODEHASH para obtener el hash del código de otro contrato.
EIP-1234: se asegura de que la cadena de bloques no' se congele antes de la prueba de participación y reduce la recompensa del bloque de 3 ETH a 2.
-
@@ -524,7 +510,6 @@ La bifurcación de Bizantium:
EIP-100: cambia la fórmula de ajuste de dificultad.
EIP-649: retrasa la [bomba de dificultad](/glossary/#difficulty-bomb) 1 año y reduce la recompensa por bloque de 5 a 3 ETH.
-
@@ -553,7 +538,6 @@ La bifurcación Spurious Dragon fue la segunda respuesta a los ataques de denega
EIP-161: permite eliminar cuentas vacías añadidas a través de los ataques DOS.
EIP-170: cambia el tamaño máximo del código que un contrato en la cadena de bloques puede tener a 24.576 bytes.
-
---
@@ -576,7 +560,6 @@ La bifurcación Tangerine Whistle fue la primera respuesta a los ataques de dene
EIP-150: aumenta el coste de gas de los códigos operativos que pueden utilizarse en ataques de spam.
EIP-158: reduce el tamaño del estado al eliminar un gran número de cuentas vacías que se pusieron en el estado depreciados debido a fallos en versiones anteriores del protocolo Ethereum.
-
---
@@ -614,7 +597,6 @@ Homestead: la bifurcación con perspectivas de futuro. Incluyó varios cambios d
EIP-7: añade un nuevo código operativo: DELEGATECALL
EIP-8: introduce los requisitos de compatibilidad futura de devp2p
-
From 93a46788caf907577f315d8e2970aea1c8d96724 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:01 -0300
Subject: [PATCH 386/589] update(i18n):
public/content/translations/es/developers/tutorials/using-websockets/index.md
From bdc80ccf79b84da25250512e8bff6f610bf4c138 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:02 -0300
Subject: [PATCH 387/589] update(i18n):
public/content/translations/es/roadmap/fusaka/index.md
From 6b5dca01a889e937291cef242f68b0a74781d7b1 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:02 -0300
Subject: [PATCH 388/589] update(i18n):
public/content/translations/es/developers/docs/apis/backend/index.md
From 62f35d9b4f466b3b9b38124696db69cc63413b73 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:03 -0300
Subject: [PATCH 389/589] update(i18n):
public/content/translations/es/10years/terms-and-conditions/index.md
From c2d2c83090a5b3cf623c31cb21f752fbf1a26ee0 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:04 -0300
Subject: [PATCH 390/589] update(i18n):
public/content/translations/es/roadmap/single-slot-finality/index.md
---
.../translations/es/roadmap/single-slot-finality/index.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/public/content/translations/es/roadmap/single-slot-finality/index.md b/public/content/translations/es/roadmap/single-slot-finality/index.md
index a847528e726..1c0dab1c58e 100644
--- a/public/content/translations/es/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/es/roadmap/single-slot-finality/index.md
@@ -39,7 +39,8 @@ El mecanismo de consenso actual combina certificaciones de multiples validadores
Este proceso proporciona suficiente capacidad para que cada validador vote en cada época, ya que 32 ranuras \* 64 comités \* 256 validadores por comité = 524.288 validadores por época\`. Al cierre de la edición de este documento (febrero de 2023) hay ~513.000 validadores activos.
-En este esquema, cada validador solo puede votar en un bloque para distribuir sus certificaciones a través de la época completa. Sin embargo, hay formas potenciales de mejorar el mecanismo para que _cada validador tenga la oportunidad de certificar en cada ranura_.
+En este esquema, cada validador solo puede votar en un bloque para distribuir sus certificaciones a través de la época completa. Sin embargo, hay formas potenciales de mejorar el mecanismo para que _cada validador tenga la oportunidad de certificar en cada ranura_.
+
Desde que se designó el mecanismo de consenso de Ethereum, el esquema de agregación de firmas (BLS, por sus siglas en inglés) ha resultado ser mucho más escalable de lo que se pensó inicialmente, mientras que también ha mejorado la posibilidad de que los clientes procesen y verifiquen firmas. Resulta que procesar certificaciones de un gran número de validadores puede, de hecho, hacerse en una única ranura. Por ejemplo, con un millón de validadores, votando cada uno dos veces en cada ranura y 16 segundos para cada ranura, se requerirán nodos para verificar firmas a un ritmo mínimo de 125.000 certificaciones por segundo para procesar todo el millón de certificaciones en la ranura. En realidad, a un ordenador normal le lleva cerca de 500 nanosegundos hacer la verificación de una firma, lo que significa que se pueden hacer 125.000 en ~62,5 ms - muy por debajo del umbral de un segundo.
From f725c3a9a4ab4d25ec59b14867e9bb71c86b1612 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:05 -0300
Subject: [PATCH 391/589] update(i18n):
public/content/translations/es/contributing/adding-layer-2s/index.md
From ce6cd46b96662d04802ae9e0ae979904750777c7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:05 -0300
Subject: [PATCH 392/589] update(i18n):
public/content/translations/es/developers/tutorials/ipfs-decentralized-ui/index.md
From fd90e68c05788645185f0def1d87deb667c4d3d9 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:06 -0300
Subject: [PATCH 393/589] update(i18n):
public/content/translations/es/developers/docs/scaling/validium/index.md
From 09584a7861d4c948fb4d2cd31b0778e389b68ea6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:07 -0300
Subject: [PATCH 394/589] update(i18n):
public/content/translations/es/developers/docs/data-availability/index.md
From bb0229ca7b9fc810ec151805ffa3ec65a10b5ff7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:08 -0300
Subject: [PATCH 395/589] update(i18n):
public/content/translations/es/zero-knowledge-proofs/index.md
---
public/content/translations/es/zero-knowledge-proofs/index.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/content/translations/es/zero-knowledge-proofs/index.md b/public/content/translations/es/zero-knowledge-proofs/index.md
index ae30ffd9b99..11d144bc035 100644
--- a/public/content/translations/es/zero-knowledge-proofs/index.md
+++ b/public/content/translations/es/zero-knowledge-proofs/index.md
@@ -59,8 +59,8 @@ Las pruebas de conocimiento cero son particularmente útiles en el contexto de l
-
-
+
+
### Prueba de humanidad {#proof-of-humanity}
From 3f9eaf0d05a1757219bc83efe9a7e3407709a907 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:09 -0300
Subject: [PATCH 396/589] update(i18n):
public/content/translations/es/contributing/adding-glossary-terms/index.md
From 1c18e9609f486f854b2ffb2e7349223ec562335f Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:09 -0300
Subject: [PATCH 397/589] update(i18n):
public/content/translations/es/contributing/adding-developer-tools/index.md
From 9bb11698c6f1d56cece0861ba0247eed5207c01a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:10 -0300
Subject: [PATCH 398/589] update(i18n):
public/content/translations/es/developers/tutorials/secure-development-workflow/index.md
From 951ce49bacd03f2b34ec5ad4478e9d26464b341b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:11 -0300
Subject: [PATCH 399/589] update(i18n):
public/content/translations/es/developers/tutorials/scam-token-tricks/index.md
From 646e3e30a2dd313f5012e54f458ed107e559453f Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:12 -0300
Subject: [PATCH 400/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/index.md
From a9f397eed7e8e5fb7beb2a05de032d260668a3c0 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:13 -0300
Subject: [PATCH 401/589] update(i18n):
public/content/translations/es/developers/docs/standards/tokens/erc-777/index.md
From aa14a71ea2dba9dc98130ed6eb42877fdc422188 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:13 -0300
Subject: [PATCH 402/589] update(i18n):
public/content/translations/es/developers/docs/standards/tokens/erc-1363/index.md
From 2b7ec07ae7167afb11b512a89f6427d36decf870 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:14 -0300
Subject: [PATCH 403/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/verifying/index.md
From aac933168f4171d80c719ca2dbf9c0b91543483a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:15 -0300
Subject: [PATCH 404/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/languages/index.md
---
.../docs/smart-contracts/languages/index.md | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/public/content/translations/es/developers/docs/smart-contracts/languages/index.md b/public/content/translations/es/developers/docs/smart-contracts/languages/index.md
index 4033b02cb32..ce8b3126f52 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/languages/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/languages/index.md
@@ -123,24 +123,32 @@ Para obtener más información, [lee los fundamentos de Vyper](https://vyper.rea
# Subasta abierta
# Parámetros de la subasta
+
# El beneficiario recibe el dinero del mejor postor
+
beneficiary: public(address)
auctionStart: public(uint256)
auctionEnd: public(uint256)
# Estado actual de la subasta
+
highestBidder: public(address)
highestBid: public(uint256)
# Se establece en «true» al final, no permite ningún cambio
+
ended: public(bool)
# Realiza un seguimiento de las pujas reembolsadas para que podamos seguir el patrón de retirada
+
pendingReturns: public(HashMap[address, uint256])
# Crea una subasta simple con un tiempo de puja de `_bidding_time`
+
# segundos en nombre de
+
# la dirección del beneficiario `_beneficiary`.
+
@external
def __init__(_beneficiary: address, _bidding_time: uint256):
self.beneficiary = _beneficiary
@@ -148,9 +156,13 @@ def __init__(_beneficiary: address, _bidding_time: uint256):
self.auctionEnd = self.auctionStart + _bidding_time
# Puja en la subasta con el valor enviado
+
# junto con esta transacción.
+
# El valor solo se reembolsará si
+
# no se gana la subasta.
+
@external
@payable
def bid():
@@ -165,9 +177,13 @@ def bid():
self.highestBid = msg.value
# Retira una puja previamente reembolsada. El patrón de retirada se utiliza
+
# aquí para evitar un problema de seguridad. Si los reembolsos se enviaran
+
# directamente como parte de la puja, un contrato de puja malicioso podría bloquear
+
# esos reembolsos y, por lo tanto, bloquear la entrada de nuevas pujas más altas.
+
@external
def withdraw():
pending_amount: uint256 = self.pendingReturns[msg.sender]
@@ -175,7 +191,9 @@ def withdraw():
send(msg.sender, pending_amount)
# Finaliza la subasta y envía la puja más alta
+
# al beneficiario.
+
@external
def endAuction():
# Es una buena guía para estructurar las funciones que interactúan
From 937fd79b6376930aa3d3e17ec4f99fce07b0914c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:16 -0300
Subject: [PATCH 405/589] update(i18n):
public/content/translations/es/contributing/translation-program/resources/index.md
From 72407e98dea39b6b5d89a7391419cf2d67f8999e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:16 -0300
Subject: [PATCH 406/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/rust/index.md
From 35dc2003d8afb188d8a1289a39866ea13034a364 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:17 -0300
Subject: [PATCH 407/589] update(i18n):
public/content/translations/es/developers/docs/nodes-and-clients/bootnodes/index.md
From 37eff5b12249da5c0b8e6c435402cc8640da543b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:18 -0300
Subject: [PATCH 408/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-implement-an-erc721-market/index.md
From 797e1c5a3d776b1ffa98ccdf58ca07ed32d91bee Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:18 -0300
Subject: [PATCH 409/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/elixir/index.md
From 6ead7dacd0967414dcf8185be1956aff63718cad Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:19 -0300
Subject: [PATCH 410/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/python/index.md
From 26fd5968b6b2c34b68483dff499145bcddfcca4d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:20 -0300
Subject: [PATCH 411/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/keys/index.md
From 80a48aede00b910e9a594b637f51c99508b3b143 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:21 -0300
Subject: [PATCH 412/589] update(i18n):
public/content/translations/es/developers/tutorials/smart-contract-security-guidelines/index.md
From 6aca97aa6b9318da1a21765800ac4fc4e120ed42 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:22 -0300
Subject: [PATCH 413/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/faqs/index.md
From 4ff6cac8cbba63eaf0683742f5414b7984fb29d7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:22 -0300
Subject: [PATCH 414/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/gasper/index.md
From 7a68e97463d7f7c809ff8f2956a8d6562e75cd56 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:23 -0300
Subject: [PATCH 415/589] update(i18n):
public/content/translations/es/developers/tutorials/nft-minter/index.md
---
.../translations/es/developers/tutorials/nft-minter/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/content/translations/es/developers/tutorials/nft-minter/index.md b/public/content/translations/es/developers/tutorials/nft-minter/index.md
index 8fcee0200f1..1fb581d2bb9 100644
--- a/public/content/translations/es/developers/tutorials/nft-minter/index.md
+++ b/public/content/translations/es/developers/tutorials/nft-minter/index.md
@@ -185,7 +185,7 @@ return (
Acuñar NFT
{status}
-
+
)
```
From 9ba0679ef13bdd3b37ebf9126f4e2a563b8e2a74 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:24 -0300
Subject: [PATCH 416/589] update(i18n):
public/content/translations/es/developers/docs/data-structures-and-encoding/rlp/index.md
From a653e8baf005fce9b8954ccd2415fe0d1592ff1b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:25 -0300
Subject: [PATCH 417/589] update(i18n):
public/content/translations/es/developers/tutorials/guide-to-smart-contract-security-tools/index.md
From 37b918e77aa3e0a1fe595ae08c9b5e2c52dde947 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:26 -0300
Subject: [PATCH 418/589] update(i18n):
public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
From 908f63c447d3e9a80d040cbedad373e2ba024d63 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:26 -0300
Subject: [PATCH 419/589] update(i18n):
public/content/translations/es/developers/docs/nodes-and-clients/client-diversity/index.md
From 8ccb7d4fe3d9fcc9a53b0949c7669a118b4beb38 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:27 -0300
Subject: [PATCH 420/589] update(i18n):
public/content/translations/es/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
From 01b5fc95c74dc345794e7e168d370c94c785efeb Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:28 -0300
Subject: [PATCH 421/589] update(i18n):
public/content/translations/es/developers/docs/scaling/zk-rollups/index.md
From 3a641475b95ffb0cd1984f657a8a96bedd9f64ef Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:29 -0300
Subject: [PATCH 422/589] update(i18n):
public/content/translations/es/contributing/translation-program/playbook/index.md
---
.../es/contributing/translation-program/playbook/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/content/translations/es/contributing/translation-program/playbook/index.md b/public/content/translations/es/contributing/translation-program/playbook/index.md
index b46b8bb744d..a38559186bd 100644
--- a/public/content/translations/es/contributing/translation-program/playbook/index.md
+++ b/public/content/translations/es/contributing/translation-program/playbook/index.md
@@ -198,7 +198,7 @@ Conozca mejor los flujos de trabajo de traducción:
[RixTrans sobre el flujo de trabajo de traducción](https://www.rixtrans.com/translation-workflow)
-## Gestión de la terminología{#terminology-management}
+## Gestión de la terminología {#terminology-management}
Establecer un plan claro sobre cómo gestionar la terminología es uno de los pasos más importantes para garantizar la calidad y coherencia de sus traducciones, y así ahorrar tiempo a sus traductores.
From 291f1038e00d7bcc9647029294f0c2759e35ff96 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:30 -0300
Subject: [PATCH 423/589] update(i18n):
public/content/translations/es/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
From 4ac5ffb67c52f3eb7f3a5364cf58253f6a1e75e7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:30 -0300
Subject: [PATCH 424/589] update(i18n):
public/content/translations/es/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
From 9808115d3c41c84e435daa1769df77add968b32c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:31 -0300
Subject: [PATCH 425/589] update(i18n):
public/content/translations/es/developers/docs/data-availability/blockchain-data-storage-strategies/index.md
From ccd644017c0454edf37642230fae2ef04eca52ff Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:32 -0300
Subject: [PATCH 426/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
---
.../how-to-use-manticore-to-find-smart-contract-bugs/index.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md b/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
index 8762d2530b8..8489c50ece1 100644
--- a/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
@@ -400,6 +400,7 @@ symbolic_var = m.make_symbolic_value()
contract_account.f(symbolic_var)
## Comprobar si una ejecución finaliza con REVERT o INVALID
+
for state in m.terminated_states:
last_tx = state.platform.transactions[-1]
if last_tx.result in ['REVERT', 'INVALID']:
@@ -508,6 +509,7 @@ contract_account.f(symbolic_var)
no_bug_found = True
## Comprobar si una ejecución finaliza con REVERT o INVALID
+
for state in m.terminated_states:
last_tx = state.platform.transactions[-1]
if last_tx.result in ['REVERT', 'INVALID']:
From 5f234ea4798b838eb7becf7b28d5fc9641d33f9a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:33 -0300
Subject: [PATCH 427/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/formal-verification/index.md
From 81c746fa39b968f06acc0286ab6236e3bd59144c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:34 -0300
Subject: [PATCH 428/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md
From 9401ffd3f1191e5f75077f1f24788dece6034f6b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:34 -0300
Subject: [PATCH 429/589] update(i18n):
public/content/translations/es/developers/docs/scaling/optimistic-rollups/index.md
From 72347de7c0a9d7a97c6181c41e46b4499e7015bb Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:35 -0300
Subject: [PATCH 430/589] update(i18n):
public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md
From c001e0355542f014aeb3c66748c67fd46d179b0c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:36 -0300
Subject: [PATCH 431/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
From e6d4466980b13459532a399b37bf3df6831f82cb Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:37 -0300
Subject: [PATCH 432/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/security/index.md
From 7dff1d94503e1a0b4d10741382a3ed3ce77f637d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:38 -0300
Subject: [PATCH 433/589] update(i18n):
public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md
---
.../es/developers/tutorials/uniswap-v2-annotated-code/index.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md
index 0539b655b58..4cfdd8495bf 100644
--- a/public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md
+++ b/public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md
@@ -56,9 +56,8 @@ Este es el flujo más común, utilizado por los traders:
4. Iterar sobre la ruta. Por cada intercambio en el camino, envía el token de entrada y luego llama a la función `swap` del intercambio.
En la mayoría de los casos, la dirección de destino de los tókenes es el siguiente intercambio de par en la ruta. En el intercambio final, es la dirección proporcionada por el trader.
-#### En el contrato principal (UniswapV2Pair.sol) {#in-the-core-contract-uniswapv2pairsol-2}
+#### En el contrato principal (UniswapV2Pair.sol) {#in-the-core-contract-uniswapv2pairsol-2}5. Verificar que el contrato principal no está siendo engañado y que puede mantener suficiente liquidez después del intercambio.
-5. Verificar que el contrato principal no está siendo engañado y que puede mantener suficiente liquidez después del intercambio.
6. Ver cuántos tókenes adicionales tenemos además de las reservas conocidas. Esa cantidad es el número de tókenes de entrada que recibimos para intercambiar.
7. Enviar los tókenes de salida al destino.
8. Llamar a `_update` para actualizar las cantidades de la reserva
From 5ee67440b8e85e1840530800f59da5deb2155c42 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:39 -0300
Subject: [PATCH 434/589] update(i18n):
public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
From 2d87e6572b9a9db72cd26565b576788ac72d6363 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:39 -0300
Subject: [PATCH 435/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
From 0f262c349ecbed3bc1209f448c0898c52991759b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:40 -0300
Subject: [PATCH 436/589] update(i18n):
public/content/translations/es/developers/tutorials/send-token-ethersjs/index.md
From 8025d09fa8ad9762c68cbd3916f34074c6f5bd72 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:41 -0300
Subject: [PATCH 437/589] update(i18n):
public/content/translations/es/contributing/translation-program/mission-and-vision/index.md
From 00537c83d4e7889426fa4c28870618b04532c72b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:42 -0300
Subject: [PATCH 438/589] update(i18n):
public/content/translations/es/developers/tutorials/waffle-test-simple-smart-contract/index.md
From 98a22a8b0cb359dedb7794b0bdcf28b63868cfd3 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:42 -0300
Subject: [PATCH 439/589] update(i18n):
public/content/translations/es/developers/docs/ides/index.md
From 89ec2c10e281bfb151719ccd7f8c83599cee440d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:43 -0300
Subject: [PATCH 440/589] update(i18n):
public/content/translations/es/roadmap/verkle-trees/index.md
---
public/content/translations/es/roadmap/verkle-trees/index.md | 2 --
1 file changed, 2 deletions(-)
diff --git a/public/content/translations/es/roadmap/verkle-trees/index.md b/public/content/translations/es/roadmap/verkle-trees/index.md
index 79c73fb4e42..3d4a839e4e8 100644
--- a/public/content/translations/es/roadmap/verkle-trees/index.md
+++ b/public/content/translations/es/roadmap/verkle-trees/index.md
@@ -18,7 +18,6 @@ Los árboles de Verkle son un paso crítico en el rumbo hacia los clientes de Et
Actualmente, los clientes de Ethereum utilizan una estructura de datos conocida como «Patricia Merkle Trie» para almacenar sus datos de estado. La información sobre las cuentas individuales se almacena como hojas en el trie y los pares de hojas se agrupan repetidamente hasta que solo queda un hash. A este hash final se le conoce como la «raíz». Para verificar los bloques, los clientes de Ethereum ejecutan todas las transacciones en un bloque y actualizan su estado local. El bloque se considera válido si la raíz del árbol local es idéntica a la proporcionada por el proponente del bloque, porque cualquier diferencia en el cálculo realizado por el proponente del bloque y el nodo de validación haría que el hash raíz fuera completamente diferente. El problema con esto es que la verificación de la cadena de bloques requiere que cada cliente almacene todo el estado trie para el bloque de cabeza y varios bloques históricos (el valor predeterminado en Geth es mantener los datos de estado para 128 bloques detrás de la cabeza). Esto requiere que los clientes tengan acceso a una gran cantidad de espacio en disco, lo que es una barrera para ejecutar nodos completos en hardware barato y de bajo consumo. Una solución a esto es actualizar el trie de estado a una estructura más eficiente (árbol de Verkle) que se pueda resumir utilizando un pequeño «testigo» de los datos que se pueden compartir en lugar de los datos de estado completos. El cambio de formato de los datos del estado a un árbol de Verkle es un trampolín para pasar a los clientes sin estado.
-
## ¿Qué es un testigo y por qué lo necesitamos? {#what-is-a-witness}
@@ -34,7 +33,6 @@ Bajo el esquema de compromiso polinómico, los testigos tienen tamaños manejabl
El tamaño del testigo varía dependiendo del número de hojas que incluya. Suponiendo que el testigo cubre 1.000 hojas, un testigo para un trie de Merkle sería de aproximadamente 3,5 Mb (suponiendo 7 niveles para el trie). Un testigo de los mismos datos en un árbol de Verkle (suponiendo 4 niveles para el árbol) sería de unos 150 kB - **aproximadamente 23 veces más pequeño**. Esta reducción en el tamaño de los testigos permitirá que los testigos clientes sin estado sean aceptablemente pequeños. Los testigos polinómicos van de 0,128 a 1 kB dependiendo del compromiso polinómico específico que se utilice.
-
## ¿Cuál es la estructura de un árbol de Verkle? {#what-is-the-structure-of-a-verkle-tree}
From c1c2c7ca6226d5e9dfe747127379afee88604366 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:44 -0300
Subject: [PATCH 441/589] update(i18n):
public/content/translations/es/developers/docs/dapps/index.md
From f896d10a837863f8c736dd2ea9b4ede396e814b9 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:45 -0300
Subject: [PATCH 442/589] update(i18n):
public/content/translations/es/developers/tutorials/short-abi/index.md
From 85346914e10085d80d53fa6c0c9a7e33818d1298 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:45 -0300
Subject: [PATCH 443/589] update(i18n):
public/content/translations/es/roadmap/future-proofing/index.md
From 04d5fa59b086e421f4e97cc5c3fdd58ea110d871 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:46 -0300
Subject: [PATCH 444/589] update(i18n):
public/content/translations/es/developers/docs/development-networks/index.md
From 172ec656b381a22990539e54b6d1a21674b469e7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:47 -0300
Subject: [PATCH 445/589] update(i18n):
public/content/translations/es/developers/docs/standards/index.md
From 363678a3e7362525a14bc7477cc27767657cc15d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:48 -0300
Subject: [PATCH 446/589] update(i18n):
public/content/translations/es/community/code-of-conduct/index.md
From af871a0282dda5c7639806ff72c86a28a812cb87 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:48 -0300
Subject: [PATCH 447/589] update(i18n):
public/content/translations/es/guides/how-to-use-a-wallet/index.md
---
.../translations/es/guides/how-to-use-a-wallet/index.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/public/content/translations/es/guides/how-to-use-a-wallet/index.md b/public/content/translations/es/guides/how-to-use-a-wallet/index.md
index 78eee2df023..0cf408921d1 100644
--- a/public/content/translations/es/guides/how-to-use-a-wallet/index.md
+++ b/public/content/translations/es/guides/how-to-use-a-wallet/index.md
@@ -65,7 +65,8 @@ Su dirección será la misma en todos los proyectos de Ethereum. No tiene que re
-
¿Quiere saber más?
+
¿Quiere saber más?
+
Consulte nuestras demás guías
From ff0d9ef8a975f1260998c392e78cff7bedaf3161 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:49 -0300
Subject: [PATCH 448/589] update(i18n):
public/content/translations/es/contributing/adding-wallets/index.md
From 952cee4c31c8e783abcda5a68459e760e5a81f70 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:50 -0300
Subject: [PATCH 449/589] update(i18n):
public/content/translations/es/roadmap/account-abstraction/index.md
From 584a3961454a4612f990e96b6832488620acf0a3 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:51 -0300
Subject: [PATCH 450/589] update(i18n):
public/content/translations/es/developers/tutorials/server-components/index.md
From 160497f68c34c833a1dae3f04b411c042c65d002 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:51 -0300
Subject: [PATCH 451/589] update(i18n):
public/content/translations/es/contributing/adding-products/index.md
From d3649ba294bf39f135cbc1d88bdba55dc96fc0d8 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:52 -0300
Subject: [PATCH 452/589] update(i18n):
public/content/translations/es/guides/how-to-id-scam-tokens/index.md
---
.../translations/es/guides/how-to-id-scam-tokens/index.md | 3 ---
1 file changed, 3 deletions(-)
diff --git a/public/content/translations/es/guides/how-to-id-scam-tokens/index.md b/public/content/translations/es/guides/how-to-id-scam-tokens/index.md
index 86e60c391f7..1fc0aafd504 100644
--- a/public/content/translations/es/guides/how-to-id-scam-tokens/index.md
+++ b/public/content/translations/es/guides/how-to-id-scam-tokens/index.md
@@ -20,7 +20,6 @@ title="¿Qué es ARB?"
contentPreview=''>
Arbitrum es una organización que desarrolla y gestiona [optimistic rollups] (/developers/docs/scaling/optimistic-rollups/). Inicialmente, Arbitrum se fundó como una empresa con fines lucrativos, pero luego tomó medidas para descentralizarse. Como parte del proceso, han lanzado un [token de gobernanza] que admite transacciones (/dao/#token-based-membership).
-
Hay una convención en Ethereum que dice que cuando un activo no cumple con ERC-20, creamos una versión «encubierta» del mismo cuyo nombre comienza por «w». Así que, por ejemplo, tenemos wBTC para bitcoin y wETH para ether.
No tiene sentido crear una versión encubierta de un token ERC-20 que ya está en Ethereum, pero los estafadores confían en la apariencia de legitimidad en lugar de la realidad subyacente.
-
## ¿Cómo funcionan los tókenes estafa? {#how-do-scam-tokens-work}
@@ -42,7 +40,6 @@ title="¿Qué son los contratos inteligentes?"
contentPreview=''>
[Los contratos inteligentes](/developers/docs/smart-contracts/) son los programas que se ejecutan sobre la cadena de bloques de Ethereum. Cada token ERC-20, por ejemplo, se implementa como un contrato inteligente.
-
Específicamente, Arbitrum desplegó un contrato que utiliza el símbolo `ARB`. Pero eso no impide que otras personas también desplieguen un contrato que utiliza exactamente el mismo símbolo, o uno similar. Quienquiera que escriba el contrato puede establecer lo que hará el contrato.
From 4dc1b55690479a05de8db11de1a7179a329f3fc9 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:53 -0300
Subject: [PATCH 453/589] update(i18n):
public/content/translations/es/decentralized-identity/index.md
From ccf248838178db28cc27ef4af5412e6424027fbf Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:54 -0300
Subject: [PATCH 454/589] update(i18n):
public/content/translations/es/contributing/adding-exchanges/index.md
From c4c69955cd5db79ca70a1ce8389425fc530b3cf2 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:54 -0300
Subject: [PATCH 455/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-mint-an-nft/index.md
From 784e8b269ea9c50774d0bc8bdec537a1c2569d75 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:55 -0300
Subject: [PATCH 456/589] update(i18n):
public/content/translations/es/roadmap/secret-leader-election/index.md
From aaa3e7093f81f19a1cac0d0816ea4e6de4f28764 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:56 -0300
Subject: [PATCH 457/589] update(i18n):
public/content/translations/es/contributing/content-resources/index.md
From 638a383b770514bf34251ea87c626bbf10b0b7f1 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:57 -0300
Subject: [PATCH 458/589] update(i18n):
public/content/translations/es/developers/docs/intro-to-ether/index.md
From 11b382c8d19751626290890f382b0d28516583eb Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:58 -0300
Subject: [PATCH 459/589] update(i18n):
public/content/translations/es/developers/tutorials/stealth-addr/index.md
From 52e9c4ded2331d53b2b05a258bf503f0f02eaa90 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:01:59 -0300
Subject: [PATCH 460/589] update(i18n):
public/content/translations/es/developers/docs/intro-to-ethereum/index.md
From edf6db2ef60b002c88ba0590ddcd20fccca18f26 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:00 -0300
Subject: [PATCH 461/589] update(i18n):
public/content/translations/es/developers/docs/mev/index.md
From bdac8d9fac82a15bba54ce1d977bc30d2c786fe5 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:00 -0300
Subject: [PATCH 462/589] update(i18n):
public/content/translations/es/developers/docs/scaling/sidechains/index.md
From 0505bcd71af64b1fbf015ac894df57bba8cc5d06 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:01 -0300
Subject: [PATCH 463/589] update(i18n):
public/content/translations/es/contributing/adding-staking-products/index.md
From 7421735ee8d0ccbe09706516c28d5ef6ef420326 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:02 -0300
Subject: [PATCH 464/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/index.md
From cce075ebd697aaae17e773fad41c566a05a54cb7 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:03 -0300
Subject: [PATCH 465/589] update(i18n):
public/content/translations/es/developers/docs/networking-layer/network-addresses/index.md
From 8e829237467cababfcc1774885c6cdd83071e5de Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:03 -0300
Subject: [PATCH 466/589] update(i18n):
public/content/translations/es/developers/docs/data-and-analytics/block-explorers/index.md
From 166de1225e90dd978540c8555b2a09ba490aef49 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:04 -0300
Subject: [PATCH 467/589] update(i18n):
public/content/translations/es/developers/tutorials/token-integration-checklist/index.md
From 67ae9d566ca0c783b48808c33266ab3b8b0769d0 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:05 -0300
Subject: [PATCH 468/589] update(i18n):
public/content/translations/es/developers/docs/standards/tokens/erc-20/index.md
From 43ebbf8eedb7b3418200351c862bead07c94a5ca Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:06 -0300
Subject: [PATCH 469/589] update(i18n):
public/content/translations/es/developers/docs/standards/tokens/erc-223/index.md
From 80017b50fcffe656464f213155560ea297767221 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:07 -0300
Subject: [PATCH 470/589] update(i18n):
public/content/translations/es/developers/docs/standards/tokens/erc-1155/index.md
From a814eb278780c1a7d3381667ec90f69f6dffc813 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:07 -0300
Subject: [PATCH 471/589] update(i18n):
public/content/translations/es/developers/tutorials/logging-events-smart-contracts/index.md
From 83480fea80361a0a44316a36d44e2c07e2bd8ea3 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:08 -0300
Subject: [PATCH 472/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/upgrading/index.md
From a0cb64245ee73969364800536beb323ef61ac943 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:09 -0300
Subject: [PATCH 473/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/dart/index.md
From 1d731e2fd3d746ece2fb14d23bc7fa9aa67155cf Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:10 -0300
Subject: [PATCH 474/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/ruby/index.md
From c0f483570f2fa8e81df39a527962fe8701fa26a6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:10 -0300
Subject: [PATCH 475/589] update(i18n):
public/content/translations/es/developers/tutorials/yellow-paper-evm/index.md
From d03991f09a182840f4e3c660512854d594c63839 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:11 -0300
Subject: [PATCH 476/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/delphi/index.md
From 4a5aea02dbed2dba47af49adef1eb433e6767ab4 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:12 -0300
Subject: [PATCH 477/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/golang/index.md
From ce5b0350da42f7012d4cd12da5e0096cb836645c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:13 -0300
Subject: [PATCH 478/589] update(i18n):
public/content/translations/es/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
From 1610d5fc70e6d7887d2b0748f96b005dbfabc919 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:13 -0300
Subject: [PATCH 479/589] update(i18n):
public/content/translations/es/developers/docs/nodes-and-clients/archive-nodes/index.md
From bc53176bafaa38cd4e9c240eb6bdedcdb87fcf4a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:14 -0300
Subject: [PATCH 480/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/index.md
From 23df36504061150a928c89e3b4b07e0dfdc61d2a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:15 -0300
Subject: [PATCH 481/589] update(i18n):
public/content/translations/es/developers/docs/nodes-and-clients/light-clients/index.md
From f0582d6dc0c02cab6075fc10358258528d6297e4 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:16 -0300
Subject: [PATCH 482/589] update(i18n):
public/content/translations/es/developers/docs/data-structures-and-encoding/ssz/index.md
From b780032d72dff66f5927c61f08071683eae810e1 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:16 -0300
Subject: [PATCH 483/589] update(i18n):
public/content/translations/es/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md
From 4ab45020bc4ab852a97ed1aab30b4b53b777e14c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:17 -0300
Subject: [PATCH 484/589] update(i18n):
public/content/translations/es/developers/docs/scaling/state-channels/index.md
---
.../es/developers/docs/scaling/state-channels/index.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/content/translations/es/developers/docs/scaling/state-channels/index.md b/public/content/translations/es/developers/docs/scaling/state-channels/index.md
index 2c0165e8d71..e6f392bbefe 100644
--- a/public/content/translations/es/developers/docs/scaling/state-channels/index.md
+++ b/public/content/translations/es/developers/docs/scaling/state-channels/index.md
@@ -119,7 +119,7 @@ Los canales de estado no publican datos de transacciones ni compromisos de estad
Los canales de estado se basan en el protocolo de Ethereum principal para lo siguiente:
-#### 1. Operatividad{#liveness}
+#### 1. Operatividad {#liveness}
El contrato en cadena desplegado al abrir el canal es responsable de la funcionalidad del canal. Si el contrato se ejecuta en Ethereum, el canal siempre está disponible para su uso. Por el contrario, una cadena lateral siempre puede fallar, incluso si la red principal está operativa, lo que pone en riesgo los fondos de los usuarios.
@@ -197,7 +197,7 @@ Comúnmente descritos como «transferencias de salto múltiple», los pagos enru
## Desventajas de usar canales de estado {#drawbacks-of-state-channels}
-### Suposiciones de operatividad{#liveness-assumptions}
+### Suposiciones de operatividad {#liveness-assumptions}
Para garantizar su eficiencia, los canales de estado establecen límites de tiempo en la capacidad de los participantes del canal para responder a las disputas. Esta regla asume que los pares siempre estarán en línea para monitorear la actividad del canal y los desafíos de los concursos cuando sea necesario.
From 6f5fc2b086ab6f6cb40c8404078b07e3a54f490a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:18 -0300
Subject: [PATCH 485/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md
From f3d3c82fa4331db8b4019118c1dbe6ecf96d63f1 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:19 -0300
Subject: [PATCH 486/589] update(i18n):
public/content/translations/es/developers/docs/nodes-and-clients/node-architecture/index.md
From c0065e8ce8a82846e44b557f7f2c4ab4f4efeabb Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:20 -0300
Subject: [PATCH 487/589] update(i18n):
public/content/translations/es/developers/tutorials/app-plasma/index.md
From 590bebf636e657b9389cc9cc80a0469038220e26 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:21 -0300
Subject: [PATCH 488/589] update(i18n):
public/content/translations/es/developers/tutorials/erc-721-vyper-annotated-code/index.md
---
.../developers/tutorials/erc-721-vyper-annotated-code/index.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/public/content/translations/es/developers/tutorials/erc-721-vyper-annotated-code/index.md b/public/content/translations/es/developers/tutorials/erc-721-vyper-annotated-code/index.md
index 2337101b73d..9f9561929bb 100644
--- a/public/content/translations/es/developers/tutorials/erc-721-vyper-annotated-code/index.md
+++ b/public/content/translations/es/developers/tutorials/erc-721-vyper-annotated-code/index.md
@@ -248,6 +248,7 @@ Devuelve el valor del HashMap `self.supportedInterfaces`, que se establece en el
```python
### FUNCIONES DE VISTA ###
+
```
Estas son las funciones de vista que hacen que la información sobre los tokens esté disponible para los usuarios y otros contratos.
From 21910385eba59305342afab2b769e4a7e5ad3150 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:21 -0300
Subject: [PATCH 489/589] update(i18n):
public/content/translations/es/contributing/translation-program/translatathon/details/index.md
From 69a575a926071b977b343be0846fecc1110ae082 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:22 -0300
Subject: [PATCH 490/589] update(i18n):
public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md
---
.../es/developers/tutorials/erc20-annotated-code/index.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md b/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md
index 8ebda8e02ad..39249d80f73 100644
--- a/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md
+++ b/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md
@@ -903,7 +903,7 @@ _approve(_msgSender(), spender, amount);
return true;
} Usamos funciones internas para minimizar el número de lugares donde ocurren cambios de estado.
-### Hooks {#hooks}
+### Hooks {#functions-that-modify-token-information}
```solidity
De esta manera tenemos menos posibilidades de equivocarnos.
@@ -911,7 +911,7 @@ De esta manera tenemos menos posibilidades de equivocarnos.
La función transferFrom {#transferFrom} Esta es la función que un gastador llama para usar una autorización.
-## Conclusión {#conclusion}
+## Conclusión {#_transfer}
```
/**
From 96df0bfc819d9809e6a7bc020fd6deaaa211fa65 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:23 -0300
Subject: [PATCH 491/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/testing/index.md
From 788b3fde0e092a0aac504c10dab6fdfd2dcb916f Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:24 -0300
Subject: [PATCH 492/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
From d738eb6d307d69d654e7df4a4e6406d72dd9fc7a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:24 -0300
Subject: [PATCH 493/589] update(i18n):
public/content/translations/es/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md
From 64173b801dcbf8681e0cc3517c1b6768e9b554fd Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:25 -0300
Subject: [PATCH 494/589] update(i18n):
public/content/translations/es/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
From 9961d6f0b556f3d67ebfd20a595d81415a863bc8 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:26 -0300
Subject: [PATCH 495/589] update(i18n):
public/content/translations/es/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
From c98d279bf2e131a25addbf24911f79c82810a166 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:27 -0300
Subject: [PATCH 496/589] update(i18n):
public/content/translations/es/developers/docs/apis/json-rpc/index.md
From 5fdf192d18c637ddbf980d44776e3e0dcd0b4b7e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:28 -0300
Subject: [PATCH 497/589] update(i18n):
public/content/translations/es/developers/docs/nodes-and-clients/run-a-node/index.md
From 754a37c0b151bf638eef88464c15b56ac7e84a8e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:29 -0300
Subject: [PATCH 498/589] update(i18n):
public/content/translations/es/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md
From 4196c3932f52f4b30f62de6c588397580380d1e3 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:29 -0300
Subject: [PATCH 499/589] update(i18n):
public/content/translations/es/developers/tutorials/optimism-std-bridge-annotated-code/index.md
From edfafe77048607ce408777f1ae3d8d1c3fa6ce86 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:30 -0300
Subject: [PATCH 500/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
---
.../consensus-mechanisms/pos/attack-and-defense/index.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
index 5a6fd105a8d..7817854cb79 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
@@ -54,9 +54,9 @@ Cualquiera puede ejecutar el software cliente de Ethereum. Para añadir un valid
Fundamentalmente, todos los ataques de participación pequeña son variaciones sutiles de dos tipos de mal comportamiento del validador: subactividad (no certificar/proponer o hacerlo tarde) o sobreactividad (proponer/acreditar demasiadas veces en una ranura). En su versión más descafeinada, estas acciones las maneja fácilmente el algoritmo de elección de bifurcación y la capa de incentivos, no obstante hay formas inteligentes de trucar el sistema en beneficio de un atacante.
-### Ataques utilizando pequeñas cantidades de ETH{#attacks-by-small-stakeholders}
+### Ataques utilizando pequeñas cantidades de ETH {#attacks-by-small-stakeholders}
-#### reorganizaciones{#reorgs}
+#### reorganizaciones {#reorgs}
Varios documentos han explicado los ataques a Ethereum que logran reorganizaciones o retrasos en la finalidad con solo una pequeña proporción del total de ether en participación. Estos ataques generalmente se basan en que el atacante retiene cierta información de otros validadores y luego la libera de alguna manera matizada y/o en algún momento oportuno. Su objetivo es desplazar a algún bloque honesto de la cadena predilecta. [Neuder y otros 2020] (https://arxiv.org/pdf/2102.02247.pdf) mostraron cómo un validador atacante puede crear y certificar un bloque (`B`) para una ranura específica `n+1`, pero abstenerse de propagarlo a otros nodos en la red. En su lugar, retienen ese bloque certificado hasta el siguiente slot `n+2`. Un validador honesto propone un bloque ('C') para la ranura 'n+2'. Casi simultáneamente, el atacante puede liberar su bloque retenido (`B`) junto con las certificaciones retenidas para dicho bloque y, además, certificar que `B` es la cabecera de la cadena con sus votos para la ranura `n+2`, negando efectivamente la existencia del bloque honesto `C`. Cuando se libera el bloque honesto `D`, el algoritmo de selección de bifurcación detecta que `D` construido sobre `B` es más pesado que `D` construido sobre `C`. Por lo tanto, el atacante ha logrado eliminar el bloque honesto `C` en la ranura `n+2` de la cadena predilecta utilizando una reorganización 1-block ex. [Un atacante con el 34 %] (https://www.youtube.com/watch?v=6vzXwwk12ZE) de la participación tiene una alta probabilidad de tener éxito en este ataque, como se explica [en esta nota] (https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair). En teoría, sin embargo, este ataque podría intentarse con participaciones más pequeñas. [Neuder y otros 2020] (https://arxiv.org/pdf/2102.02247.pdf) describieron este ataque funcionando con un 30 % de participación, pero más tarde se demostró que era viable con un [2 % del total de la participación](https://arxiv.org/pdf/2009.04987.pdf) y luego nuevamente para un [único validador](https://arxiv.org/abs/2110.10086#) utilizando técnicas de equilibrio que examinaremos en la siguiente sección.
@@ -86,7 +86,7 @@ El ataque de avalancha se ve mitigado por la parte LMD del algoritmo de elecció
Hay distintas actualizaciones posibles futuras de la regla de elección de bifurcación que podrían aumentar la seguridad proporcionada por el impulsor-proponente. Una de ellas es [view-merge](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739), donde los certificadores congelan su vista de la selección de bifurcación `n` segundos antes del comienzo de una ranura, y quien propone luego ayuda a sincronizar la vista de la cadena a través de la red. Otra posible actualización es [finalidad de un solo slot](https://notes.ethereum.org/@vbuterin/single_slot_finality), que protege contra ataques basados en el tiempo de los mensajes al finalizar la cadena después de solo una ranura.
-#### Retraso de finalidad{#finality-delay}
+#### Retraso de finalidad {#finality-delay}
[El mismo documento]
(https://econcs.pku.edu.cn/wine2020/wine2020/Workshop/GTiB20_paper_8.pdf) que primero relató el ataque de reorganización de un solo bloque de bajo coste también describió un ataque de retraso de finalidad (también conocido como «liveness failure» en inglés), el cual depende de que el atacante sea quien propone el bloque para un bloque límite de época. Esto es fundamental porque estos bloques de límites de época se convierten en los puntos de control que Casper FFG utiliza para finalizar partes de la cadena. El atacante simplemente retiene su bloqueo hasta que suficientes validadores honestos utilicen sus votos de FFG a favor del bloqueo límite de la época anterior como el objetivo de finalización actual. Luego liberan su bloqueo retenido. Certifican su bloqueo y los validadores honestos restantes también crean bifurcaciones con diferentes puntos de control de destino. Si lo sincronizan bien, evitarán la finalidad, porque no habrá una supermayoría de 2/3 que certifique ninguna de las dos bifurcaciones. Cuanto menor sea la participación, más precisa debe ser la sincronización, porque el atacante controla menos certificaciones directamente, y menor es la probabilidad de que el atacante controle al validador que propone un determinado bloque de límite de época.
@@ -123,7 +123,7 @@ Con >50 % del total de la participación, el atacante podría controlar el algor
Un atacante con el 66 % o más del total de ether apostado puede finalizar su cadena preferida sin tener que coaccionar a ningún validador honesto. El atacante puede votar por su bifurcación preferida y luego finalizarla, simplemente porque puede votar con una supermayoría deshonesta. Como parte interesada de la supermayoría, el atacante siempre controlaría el contenido de los bloques finalizados, con el poder de gastar, rebobinar y gastar de nuevo, censurar ciertas transacciones y reorganizar la cadena a su antojo. Al comprar ether adicional para controlar el 66 % en lugar del 51 %, el atacante compra en la práctica la capacidad de realizar reorganizaciones ex post y reversiones de finalidad (es decir, cambiar el pasado y controlar el futuro). Las únicas defensas reales existentes son el enorme coste del 66 % del total de ether en participación, y la opción de recurrir a la capa social para coordinar la adopción de una bifurcación alternativa. Ahondemos en ello con más detalle en la siguiente sección.
-## Personas: la última línea de defensa{#people-the-last-line-of-defense}
+## Personas: la última línea de defensa {#people-the-last-line-of-defense}
Si los validadores deshonestos logran finalizar su versión preferida de la cadena, la comunidad de Ethereum se encuentra en una situación difícil. La cadena predilecta incluye una sección deshonesta incorporada en su historia, mientras que los validadores honestos pueden terminar siendo castigados por certificar una cadena alternativa (honesta). Tenga en cuenta que una cadena finalizada pero incorrecta también podría surgir de un error en un cliente mayoritario. Al fin y al cabo, la última alternativa es confiar en la capa social —es decir, la capa 0— para resolver la situación.
From 334ba51bef5b0434218ae95f9bfdea3aa627320c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:31 -0300
Subject: [PATCH 501/589] update(i18n):
public/content/translations/es/glossary/index.md
From c435ad64f2a30e1087e7d140b51cc1c66c446c19 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:32 -0300
Subject: [PATCH 502/589] update(i18n):
public/content/translations/es/contributing/quizzes/index.md
From 2769d09e459a546f368177962d856969d4245ad8 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:32 -0300
Subject: [PATCH 503/589] update(i18n):
public/content/translations/es/contributing/translation-program/translatathon/index.md
From 60f0c4b58f64e9e4b2b539ad7fe6b45c8dfc80d5 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:33 -0300
Subject: [PATCH 504/589] update(i18n):
public/content/translations/es/developers/tutorials/calling-a-smart-contract-from-javascript/index.md
From d44242439b37bfc0773da4672fb27361336443de Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:34 -0300
Subject: [PATCH 505/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md
From 0b0805db5b481b05f8891ac67b4c8050bfb2653a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:34 -0300
Subject: [PATCH 506/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
From 2224d60672bb1016c4cf8f0861e0a93b0e5c2b1c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:35 -0300
Subject: [PATCH 507/589] update(i18n):
public/content/translations/es/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md
From 0b26d51f6074428b72dc36ed07cc0a4582664775 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:36 -0300
Subject: [PATCH 508/589] update(i18n):
public/content/translations/es/developers/docs/gas/index.md
From 637469863a1d522a20d688a369a424c9a56e86e8 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:37 -0300
Subject: [PATCH 509/589] update(i18n):
public/content/translations/es/developers/docs/networking-layer/index.md
From df80bfbfe62973a901e59639c57612ac33d4daec Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:38 -0300
Subject: [PATCH 510/589] update(i18n):
public/content/translations/es/roadmap/danksharding/index.md
---
.../content/translations/es/roadmap/danksharding/index.md | 6 ------
1 file changed, 6 deletions(-)
diff --git a/public/content/translations/es/roadmap/danksharding/index.md b/public/content/translations/es/roadmap/danksharding/index.md
index 00a75a51e09..6d2f7b7b7a4 100644
--- a/public/content/translations/es/roadmap/danksharding/index.md
+++ b/public/content/translations/es/roadmap/danksharding/index.md
@@ -22,13 +22,11 @@ Es cara, porque la procesn todos los nodos de Ethereum y reside en la cadena par
Los rollups son una manera de escalar Ethereum agrupando transacciones fuera de cadena y luego publicando los resultados en Ethereum. Una acumulación se compone básicamente de dos partes: de datos y de verificación de la ejecución. Los datos son la secuencia total de transacciones que procesa una acumulación para producir un cambio en el estado publicado por Ethereum. La verificación de ejecución es la reejecución de esas transacciones por algún actor honesto (un «proveedor») para asegurarse de que el cambio del estado propuesto sea correcto. Para realizar la comprobación de ejecución, los datos de la transacción deben estar disponibles durante el tiempo suficiente para que cualquiera puede descargarlos y verificarlos. Esto significa que el proveedor puede identificar y cuestionar cualquier mala conducta del secuenciador de acumulaciones. Sin embargo, no tiene que estar dispobible para siempre.
-
Los rollups publican compromisos con sus datos de transacciones en cadena y también hacen que los datos estén disponibles en grandes objetos binarios. Esto significa que los proveedores pueden verificar que los compromisos son válidos y desafiar los datos que ellos creen que sea incorrectos. Dentro del nodo, el cliente de consenso mantiene las masas de datos. Los clientes de consenso certifican que ellos han visto los datos y que se están propagando por la red. Si los datos se mantuvieran para siempre, estos clientes se saturarían y sus requisitos para ejecutar los nodos serían ingentes. Por otro lado, los datos de eliminan de manera automática del nodo cada 18 días. Las certificaciones del cliente de consenso demuestran que los proveedores tenían suficientes oportunidades de comprobar los datos. L operadores de rollups, usuarios u otros actores pueden almacenar datos en sí fuera de cadena.
-
### ¿Cómo se verifican los datos de una masa? {#how-are-blobs-verified}
@@ -48,13 +46,11 @@ La ceremonia KZG EIP-4844 estuvo abierta al público y decenas de miles de perso
Cuando un rollup publica datos en un blob (gran objeto binario), adquiere el «compromiso» de que se publicará en cadena. Este compromiso es el resultado de evaluar un ajuste polinómico a los datos en ciertos puntos. Estos puntos vienen definidos por los números aleatorios generados en la ceremonia KZG. Los demostradores pueden luego evaluar el polinómico en los mismos puntos para comprobar los datos; si llegan a los mismos valores, entonces los datos son correctos.
-
Si alguien conoce las ubicaciones aleatorias utilizadas para el compromiso, le resultará fácil generar un nuevo polinomio que se ajuste a esos puntos específicos (es decir, una «colisión»). Esto significa que podrían añadir o eliminar datos de la masa y aún así proporcionar una prueba válida. Para evitarlo, en lugar de proporcionar a los demostradores las ubicaciones secretas reales, en realidad reciben las ubicaciones recogidas en una «caja negra» criptográfica utilizando curvas elípticas. Estas mezclan efectivamente los valores de tal manera que los valores originales no se pueden invertir, pero con un álgebra ingeniosa, los demostradores y verificadores aún pueden evaluar polinómicos en los puntos que representan.
-
@@ -70,13 +66,11 @@ La forma en que esto funciona es expandiendo los blobs adjuntos a los bloques de
La separación entre generador de propuestas y constructor de bloques es necesaria para evitar que los validadores individuales tengan que generar compromisos y pruebas costosas para 32 Mb de masas de datos. Esto ejercería demasiada presión sobre los participantes domésticos y les obligaría a invertir en hardware más potente, lo que perjudica la descentralización. En su lugar, los constructores de bloques especializados asumen la responsabilidad de este costoso trabajo computacional. Luego, ponen sus bloques a disposición de los proponentes de bloques para su difusión. El proponente de bloques simplemente elige el bloque que sea más rentable. Cualquiera puede verificar las masas de datos de manera económica y rápida, lo que significa que cualquier validador normal puede comprobar que los constructores de bloques se están comportando de manera honesta. Esto permite procesar grandes masas sin sacrificar la descentralización. Los constructores de bloques que se comporten de manera incorrecta simplemente podrían ser expulsados de la red con un recorte como penalización, y otros ocuparían su lugar debido a que la construcción de bloques es una actividad rentable.
-
El muestreo de disponibilidad de datos es necesario para que los validadores verifiquen de manera rápida y eficiente las masas de datos. Mediante el muestreo de disponibilidad de datos, los validadores pueden estar muy seguros de que las masas de datos están disponibles y se ha comprometido correctamente. Cada validador puede muestrear aleatoriamente solo algunos puntos de datos y crear una prueba, lo que significa que ningún validador tiene que verificar la masa entera. Si falta algún dato, se identifica rápidamente y la masa se rechazará.
-
### Progreso actual {#current-progress}
From 5e0d8c2cab2f03df27ebb1996fed35cd6af4d984 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:38 -0300
Subject: [PATCH 511/589] update(i18n):
public/content/translations/es/roadmap/statelessness/index.md
---
public/content/translations/es/roadmap/statelessness/index.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/public/content/translations/es/roadmap/statelessness/index.md b/public/content/translations/es/roadmap/statelessness/index.md
index ead372f033e..355933b7811 100644
--- a/public/content/translations/es/roadmap/statelessness/index.md
+++ b/public/content/translations/es/roadmap/statelessness/index.md
@@ -72,7 +72,8 @@ Para que esto suceda, los [árboles de Verkle](/roadmap/verkle-trees/) ya deben
El sin estado depende de que los constructores de bloques mantengan una copia de los datos del estado completos para que puedan generar testigos y que sirvan para verificar el bloque. Otros nodos no necesitan acceso a los datos del estado, toda la información necesaria para verificar el bloque está disponible en el testigo. Esto crea una situación en la que proponer un bloque es caro, pero verificar el bloque es barato, lo que implica que menos operadores ejecutarán un nodo de propuesta de bloque. Sin embargo, la descentralización de los proponentes de bloques no es crítica, siempre y cuando el mayor número posible de participantes puedan verificar de forma independiente que los bloques que proponen son válidos.
-Leer más en las notas de Dankrad
+Leer más en las notas de Dankrad
+
Los proponentes de bloques utilizan los datos del estado para crear «testigos», el conjunto mínimo de datos que prueban los valores del estado que las transacciones están cambiando en un bloque. Otros validadores no mantienen el estado, solo almacenan la raíz del estado (un hash de todo el estado). Reciben un bloqueo y un testigo y los usan para actualizar su raíz de estado. Esto hace que un nodo de validación sea extremadamente ligero.
From df7d48eed7561f839931015cd751f9c8b2418d9c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:39 -0300
Subject: [PATCH 512/589] update(i18n):
public/content/translations/es/community/get-involved/index.md
From ba58678ddaa10dbbb051b45ecaeec061d5bc8400 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:40 -0300
Subject: [PATCH 513/589] update(i18n):
public/content/translations/es/roadmap/merge/issuance/index.md
---
.../es/roadmap/merge/issuance/index.md | 22 +++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/public/content/translations/es/roadmap/merge/issuance/index.md b/public/content/translations/es/roadmap/merge/issuance/index.md
index 5b3957bce63..060b1756ed6 100644
--- a/public/content/translations/es/roadmap/merge/issuance/index.md
+++ b/public/content/translations/es/roadmap/merge/issuance/index.md
@@ -23,7 +23,6 @@ title="Resumen: emisión de ETH">
- La emisión exacta del staking fluctúa en función de la cantidad total de ETH en staking.
- **Desde la Fusión, solo se mantienen los ~1.700 ETH/día, lo que reduce la emisión total de nuevos ETH en un ~88 %**
- La quema: fluctúa según la demanda de la red. _Si_ se observa un precio medio de gas de al menos 16 gwei en un día determinado, esto compensa efectivamente los ~1.700 ETH que emiten los validadores y baja la inflación neta de ETH a cero o menos en ese día.
-
## Antes de la Fusión (histórico) {#pre-merge}
@@ -61,7 +60,12 @@ Suministro total de ETH: **~120.520.000 ETH** (en el momento de la Fusión en se
El **~88,7 %** de la emisión se destinaba a los mineros en la capa de ejecución (4,09 / 4,61 \* 100)
-El **~11,3 %** se emitía a los participantes en la capa de consenso (0,52 / 4,61 \* 100)
+El **~11,3 %** se emitía a los participantes en la capa de consenso (0,52 / 4,61 \* 100)
+
+
+
+
+
## Después de la Fusión (actualidad) {#post-merge}
@@ -92,7 +96,12 @@ A medida que se retiran más validadores, el número máximo de validadores que
Tasa de emisión anualizada total: **~0,52 %**
-Reducción neta de la emisión anual de ETH: **~88,7 %** ((4,61 % - 0,52 %) / 4,61 % \* 100)
+Reducción neta de la emisión anual de ETH: **~88,7 %** ((4,61 % - 0,52 %) / 4,61 % \* 100)
+
+
+
+
+
## La quema {#the-burn}
@@ -102,7 +111,12 @@ La fuerza opuesta a la emisión de ETH es la tasa a la cual se quema ETH. Para q
-La quema de tarifas se implementó con [la actualización London](/ethereum-forks/#london) en agosto de 2021 y se ha mantenido sin cambios desde la Fusión.
+La quema de tarifas se implementó con [la actualización London](/ethereum-forks/#london) en agosto de 2021 y se ha mantenido sin cambios desde la Fusión.
+
+
+
+
+
Además de la tarifa implementada en la actualización London, los validadores también pueden incurrir en penalizaciones por estar fuera de línea, o peor aún, se les puede recortar por romper las reglas específicas que amenazan la seguridad de la red. Estas penalizaciones ocasionan una reducción de ETH del saldo de los validadores, que no recompensa directamente ninguna otra cuenta, quemándolos/eliminándolos efectivamente de circulación.
From a8735bd3a798eca7e412252deacfc20de9b79dcc Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:41 -0300
Subject: [PATCH 514/589] update(i18n):
public/content/translations/es/roadmap/fusaka/peerdas/index.md
From 3115cafe7af5b3bd70f7b9fee04db8572770a2dc Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:42 -0300
Subject: [PATCH 515/589] update(i18n):
public/content/translations/es/roadmap/user-experience/index.md
From 4f996604f16412dfda50f59452757934a6f73475 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:42 -0300
Subject: [PATCH 516/589] update(i18n):
public/content/translations/es/developers/docs/scaling/index.md
From 428335f3c718d034404237cc6c8704111cdbf7e3 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:43 -0300
Subject: [PATCH 517/589] update(i18n):
public/content/translations/es/developers/docs/accounts/index.md
From 86e648414205fbd546c4add9ca91299a608b0f43 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:44 -0300
Subject: [PATCH 518/589] update(i18n):
public/content/translations/es/community/research/index.md
---
.../content/translations/es/community/research/index.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/public/content/translations/es/community/research/index.md b/public/content/translations/es/community/research/index.md
index 46c227dd550..95834c5050b 100644
--- a/public/content/translations/es/community/research/index.md
+++ b/public/content/translations/es/community/research/index.md
@@ -119,7 +119,7 @@ Ahora hay varios protocolos de capa 2 que escalan Ethereum utilizando diferentes
Un área particular de la capa 2 que requiere más investigación y desarrollo son los puentes seguros y de alto rendimiento. Esto incluye puentes entre varias capas 2 y puentes entre la capa 1 y la capa 2. Esta es un área de investigación particularmente importante porque los puentes suelen ser el objetivo de los hackers.
-#### Lectura de fondo{#background-reading-3}
+#### Lectura de fondo {#background-reading-3}
- [Introducción a puentes en cadenas de bloques](/bridges/)
- [Vitalik sobre los puentes](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/)
@@ -345,7 +345,7 @@ Un caso de uso de alto impacto para Ethereum es la capacidad de organizarse de m
Las herramientas para desarrolladores de Ethereum están evolucionando rápidamente. Hay mucha investigación y desarrollo activo por hacer en esta área general.
-#### Lectura de fondo {#lectura de fondo-17}
+#### Lectura de fondo {#background-reading-17}
- [Herramientas por lenguaje de programación](/developers/docs/programming-languages/)
- [Marcos de desarrolladores](/developers/docs/frameworks/)
@@ -374,7 +374,7 @@ Los oráculos importan datos de fuera de la cadena a la cadena de bloques de man
Por lo general, los hackeos en Ethereum se aprovechan de puntos flacos en aplicaciones individuales y no en el propio protocolo. Los hackers y los desarrolladores de aplicaciones están enfrascados en una carrera armamentística para desarrollar nuevos ataques y defensas. Esto significa que siempre es necesario realizar una investigación y un desarrollo importantes para mantener las aplicaciones a salvo de los hackeos.
-#### Lectura de fondo {#lectura de fondo-19}
+#### Lectura de fondo {#background-reading-19}
- [Informe de explotación de agujero de gusano] (https://blog.chainalysis.com/reports/wormhole-hack-february-2022/)
- [Lista de hackeo de contratos de Ethereum post mórtem](https://forum.openzeppelin.com/t/list-of-ethereum-smart-contracts-post-mortems/1191)
@@ -388,7 +388,7 @@ Por lo general, los hackeos en Ethereum se aprovechan de puntos flacos en aplica
La descentralización de toda la pila de tecnología de Ethereum es un área de investigación importante. Actualmente, las dapps en Ethereum suelen tener algunos puntos de centralización, ya que dependen de herramientas o infraestructuras centralizadas.
-#### Lectura de fondo {#lectura de fondo-20}
+#### Lectura de fondo {#background-reading-20}
- [Pila de Ethereum](/developers/docs/ethereum-stack/)
- [Coinbase: Introducción al Stack Web3](https://blog.coinbase.com/a-simple-guide-to-the-web3-stack-785240e557f0)
From c6f27de7f8079d7040cf1c7e137e12441c666ea8 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:45 -0300
Subject: [PATCH 519/589] update(i18n):
public/content/translations/es/developers/docs/web2-vs-web3/index.md
From 2a24a1ac1472997614000cf47eaebeb948150491 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:46 -0300
Subject: [PATCH 520/589] update(i18n):
public/content/translations/es/developers/docs/transactions/index.md
From 2ae50caf04d3d6b80ae7dd6e3096603e0b517dd3 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:46 -0300
Subject: [PATCH 521/589] update(i18n):
public/content/translations/es/contributing/adding-resources/index.md
From 587574f84378dea7cd74fab8b278762f02c06c3d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:47 -0300
Subject: [PATCH 522/589] update(i18n):
public/content/translations/es/developers/docs/design-and-ux/index.md
From 8955f5b2ecdf9b02567e6529f1575432736ed3fc Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:48 -0300
Subject: [PATCH 523/589] update(i18n):
public/content/translations/es/developers/docs/ethereum-stack/index.md
From 552462d09a58526c0f10653349fae21d7b88a2ba Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:49 -0300
Subject: [PATCH 524/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/index.md
From 853a8319f5fdf810d9bab1c34393dbd5529c4bea Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:49 -0300
Subject: [PATCH 525/589] update(i18n):
public/content/translations/es/developers/docs/standards/tokens/index.md
From 40fcc75fdc129c37eb9d9c2178c067ba364befb9 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:50 -0300
Subject: [PATCH 526/589] update(i18n):
public/content/translations/es/contributing/translation-program/index.md
From f51ce6678c6a944ec08209af08804862da16fc09 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:51 -0300
Subject: [PATCH 527/589] update(i18n):
public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md
From e2e9c80437a74c070723b79663c751ae3794113b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:52 -0300
Subject: [PATCH 528/589] update(i18n):
public/content/translations/es/developers/docs/scaling/plasma/index.md
From 03e2779b8a9dc87f6ff2c70df852a313e765b754 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:52 -0300
Subject: [PATCH 529/589] update(i18n):
public/content/translations/es/contributing/adding-desci-projects/index.md
From 4441f3edb9d61a492e4699c339896786284d3f1d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:53 -0300
Subject: [PATCH 530/589] update(i18n):
public/content/translations/es/developers/tutorials/erc20-with-safety-rails/index.md
From a1717b9bf46c467bb40ac9e11aa5917fa6c2e6f4 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:54 -0300
Subject: [PATCH 531/589] update(i18n):
public/content/translations/es/developers/docs/networking-layer/portal-network/index.md
From d2c44dab0334e67dc443420476f83813758667b9 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:55 -0300
Subject: [PATCH 532/589] update(i18n):
public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md
From 9e4f1453121655d7a5367cb831faf4cef2d89f8c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:56 -0300
Subject: [PATCH 533/589] update(i18n):
public/content/translations/es/contributing/translation-program/faq/index.md
From 744a187da39a66bb33baa536d383e9152a0a4619 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:56 -0300
Subject: [PATCH 534/589] update(i18n):
public/content/translations/es/contributing/translation-program/translators-guide/index.md
From 8f44629d766370897634b21422f72b17af7afc7e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:57 -0300
Subject: [PATCH 535/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md
From 9de2fdf503e643714e0a1bf52e87f3ad07046d9d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:58 -0300
Subject: [PATCH 536/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/index.md
From c63e8363a48173c251ee6d6db19c89b3478cd439 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:59 -0300
Subject: [PATCH 537/589] update(i18n):
public/content/translations/es/developers/docs/standards/tokens/erc-721/index.md
From f113b5f8dd83f31d9ebe9151d340108ee835691d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:02:59 -0300
Subject: [PATCH 538/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pow/index.md
From 58c0214b11103d087a12313ff61d8822e9b0afe5 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:00 -0300
Subject: [PATCH 539/589] update(i18n):
public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md
---
.../es/guides/how-to-create-an-ethereum-account/index.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md b/public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md
index 7e46bafa927..7ceae2160ce 100644
--- a/public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md
+++ b/public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md
@@ -42,7 +42,8 @@ Algunas aplicaciones le pedirán que guarde una "frase de recuperación" secreta
-
¿Billetera instalada? Aprenda a usarla.
+
¿Billetera instalada? Aprenda a usarla.
+
Cómo usar una billetera
From 553f0de1f3a3e25a071da7cbc3c609bf66523e87 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:01 -0300
Subject: [PATCH 540/589] update(i18n):
public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md
From a745107ca54af265817a5a6351ae707533b44e26 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:02 -0300
Subject: [PATCH 541/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/libraries/index.md
From 8cc95e74aaa687de28d6eef3e172930428743dd2 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:02 -0300
Subject: [PATCH 542/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/deploying/index.md
From 371af3b9403d2da0db4a6dfc6efe13847143ca36 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:03 -0300
Subject: [PATCH 543/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
From 200e73e3ce9680154bf91f115c5e475ffb87851e Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:04 -0300
Subject: [PATCH 544/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/java/index.md
From 751a53f0d254758a509fbceac6a8bb673ad9024b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:05 -0300
Subject: [PATCH 545/589] update(i18n):
public/content/translations/es/contributing/design/adding-design-resources/index.md
From 883d40fad7f3c2669830188d10e74f5bcc2d9b17 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:06 -0300
Subject: [PATCH 546/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/dot-net/index.md
From 655d3c36f72818eef66cbf253db8217cfade6284 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:07 -0300
Subject: [PATCH 547/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/composability/index.md
From 0390a632ccd677b54d7d3bd681449c98195d8352 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:07 -0300
Subject: [PATCH 548/589] update(i18n):
public/content/translations/es/developers/tutorials/deploying-your-first-smart-contract/index.md
From dbcc75a0215a7132d63b9ceffc7a9ff76d61f7ba Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:08 -0300
Subject: [PATCH 549/589] update(i18n):
public/content/translations/es/developers/docs/programming-languages/javascript/index.md
From beef1c4964870eb2b09fd3469068eb6401d684d5 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:10 -0300
Subject: [PATCH 550/589] update(i18n):
public/content/translations/es/developers/docs/nodes-and-clients/index.md
From 8b0b49228c71ad312d02accce351a4cf38613ea4 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:11 -0300
Subject: [PATCH 551/589] update(i18n):
public/content/translations/es/developers/tutorials/all-you-can-cache/index.md
From 63f69d3a76a0e14ceb9d39088a334804258c371c Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:11 -0300
Subject: [PATCH 552/589] update(i18n):
public/content/translations/es/contributing/translation-program/how-to-translate/index.md
From 5f80f235d198bcd293cbc0c5448106ce29491359 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:12 -0300
Subject: [PATCH 553/589] update(i18n):
public/content/translations/es/whitepaper/index.md
From d3bb2477c2c8a68b47df09e7db3b266105f07f3b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:13 -0300
Subject: [PATCH 554/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/anatomy/index.md
From 0c517d7ef5cecbae67a271e587b009581e1b49a6 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:14 -0300
Subject: [PATCH 555/589] update(i18n):
public/content/translations/es/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
From 9234d5f9f0b1b44c60c38519c8ac9f640e99765a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:15 -0300
Subject: [PATCH 556/589] update(i18n):
public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md
From 7283b53abfdf231ef6421fe98d6fcb1022b6d39f Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:15 -0300
Subject: [PATCH 557/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/attestations/index.md
From 4e2f424f7b535e886b6b014d916365280f55122a Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:16 -0300
Subject: [PATCH 558/589] update(i18n):
public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md
---
.../docs/design-and-ux/dex-design-best-practice/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md b/public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md
index 9933c73da74..cfe54515397 100644
--- a/public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md
+++ b/public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md
@@ -129,7 +129,7 @@ Incluso si está apuntando a usuarios profesionales que quieran toda la informac
> No importa lo atractiva que sea, no importa lo genial que se vea su interfaz, lo mejor al fin y al cabo es ver lo menos posible.
-### Estructura {#estructura}
+### Estructura {#structure}
- Tokens a la izquierda o tokens a la derecha
- 2 filas o 3
From bc71a18651e1831b62b2771f36aa21f8d5dc80cc Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:17 -0300
Subject: [PATCH 559/589] update(i18n):
public/content/translations/es/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
From 84b8d41fc301fc6de241a4c6917f7ee6bfbbfc6d Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:18 -0300
Subject: [PATCH 560/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
From 0d3f44741477f154537a5d201149095a96873544 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:19 -0300
Subject: [PATCH 561/589] update(i18n):
public/content/translations/es/developers/docs/evm/opcodes/index.md
From 30879399cf2032c4326e87ee6b723502bc357d13 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:19 -0300
Subject: [PATCH 562/589] update(i18n):
public/content/translations/es/developers/tutorials/reverse-engineering-a-contract/index.md
From e2e022a1d2beed4db9a6af0c6e5489396bf38dca Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:20 -0300
Subject: [PATCH 563/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
---
.../pow/mining/mining-algorithms/ethash/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
index e8e6d1b6dae..397063c1cdf 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
@@ -8,7 +8,7 @@ lang: es
- Ethash era el algoritmo de minería de prueba de trabajo de Ethereum. La prueba de trabajo ahora se ha **desactivado por completo** y Ethereum ya está protegido utilizando la [prueba de participación](/developers/docs/consensus-mechanisms/pos/) en su lugar. Profundice sobre [la Fusión](/roadmap/merge/), [prueba de participación](/developers/docs/consensus-mechanisms/pos/) y la [participación](/staking/). ¡Esta página es de interés histórico!
+ Ethash era el algoritmo de minería de prueba de trabajo de Ethereum. La prueba de trabajo ahora se ha **desactivado por completo** y Ethereum ya está protegido utilizando la [prueba de participación](/developers/docs/consensus-mechanisms/pos/) en su lugar. Profundice sobre [la Fusión](/roadmap/merge/), [prueba de participación](/developers/docs/consensus-mechanisms/pos/) y la [participación](/staking/). ¡Esta página es de interés histórico!
From 530df44aba0e2e99ccaac29a61af02a2903cae70 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:21 -0300
Subject: [PATCH 564/589] update(i18n):
public/content/translations/es/developers/docs/index.md
From 7d51d38be09152e165e183cfd7899f3da3a00dc2 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:22 -0300
Subject: [PATCH 565/589] update(i18n):
public/content/translations/es/guides/how-to-use-a-bridge/index.md
---
.../translations/es/guides/how-to-use-a-bridge/index.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/public/content/translations/es/guides/how-to-use-a-bridge/index.md b/public/content/translations/es/guides/how-to-use-a-bridge/index.md
index 847ff924603..324b39552aa 100644
--- a/public/content/translations/es/guides/how-to-use-a-bridge/index.md
+++ b/public/content/translations/es/guides/how-to-use-a-bridge/index.md
@@ -54,7 +54,8 @@ Puede utilizar [chainlist.org](http://chainlist.org) para encontrar los detalles
-
¿Quiere saber más?
+
¿Quiere saber más?
+
Consulte nuestras demás guías
From 9d36ce0c7eedc5a9fbdd9feb559a9903878f1569 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:22 -0300
Subject: [PATCH 566/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/compiling/index.md
From 413e61247caa0aae14012e86fbb8acd5cc8a7a30 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:23 -0300
Subject: [PATCH 567/589] update(i18n):
public/content/translations/es/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
From 08e1a2780a58cdd47e26c679615be8792a6a0488 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:24 -0300
Subject: [PATCH 568/589] update(i18n):
public/content/translations/es/developers/docs/data-structures-and-encoding/index.md
From 407c43c85933f90e52e7935b9c1cf6f9a08e038b Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:25 -0300
Subject: [PATCH 569/589] update(i18n):
public/content/translations/es/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
From a69829bd42cf16ed12bc8ffc9df13b092f228c59 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:26 -0300
Subject: [PATCH 570/589] update(i18n):
public/content/translations/es/community/language-resources/index.md
From 306bd04243e6047c7fc1de49381c315c58ec1c39 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:26 -0300
Subject: [PATCH 571/589] update(i18n):
public/content/translations/es/contributing/design-principles/index.md
From 4b95d8e7610e069abec2d161e29d553af6d3f3fb Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:27 -0300
Subject: [PATCH 572/589] update(i18n):
public/content/translations/es/developers/docs/apis/javascript/index.md
From 8a08b3477157d45f23f06797a9cc7498160b3d28 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:28 -0300
Subject: [PATCH 573/589] update(i18n):
public/content/translations/es/guides/how-to-revoke-token-access/index.md
---
.../translations/es/guides/how-to-revoke-token-access/index.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/public/content/translations/es/guides/how-to-revoke-token-access/index.md b/public/content/translations/es/guides/how-to-revoke-token-access/index.md
index 4bf5be57503..b0fb90fb855 100644
--- a/public/content/translations/es/guides/how-to-revoke-token-access/index.md
+++ b/public/content/translations/es/guides/how-to-revoke-token-access/index.md
@@ -49,7 +49,8 @@ Le aconsejamos que actualice la herramienta de revocación transcurridos unos mi
-
¿Quiere saber más?
+
¿Quiere saber más?
+
Consulte nuestras demás guías
From 4d9f789c9045704f0f64c0ae228e49bb82150d26 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:29 -0300
Subject: [PATCH 574/589] update(i18n):
public/content/translations/es/developers/docs/data-and-analytics/index.md
From 0792503e6ed5a80213cca1a6dab41ac94c3c7d31 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:29 -0300
Subject: [PATCH 575/589] update(i18n):
public/content/translations/es/developers/docs/smart-contracts/naming/index.md
From a6499f41db7f5cc01bd576bcd807b8bc4b23c401 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:30 -0300
Subject: [PATCH 576/589] update(i18n):
public/content/translations/es/developers/docs/consensus-mechanisms/poa/index.md
From 9c4d0d03e93d87122aa10f1280f9b94ad61086c1 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:31 -0300
Subject: [PATCH 577/589] update(i18n):
public/content/translations/es/developers/tutorials/secret-state/index.md
From 262d2b2e5f6a80aa0c9a4193c9366a996bce8a07 Mon Sep 17 00:00:00 2001
From: wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 09:03:32 -0300
Subject: [PATCH 578/589] update(i18n):
public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md
---
.../tutorials/hello-world-smart-contract-fullstack/index.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md b/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md
index d81b6c12eb5..f83079a7034 100644
--- a/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md
+++ b/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md
@@ -833,8 +833,9 @@ return (
-
-
+
+
+
)
```
From 41282b4c8556b956836ae9a94b29724b193e68da Mon Sep 17 00:00:00 2001
From: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 11:20:01 -0300
Subject: [PATCH 579/589] fix(i18n): markdown build errors using updated
sanitizer
---
.../es/10years/terms-and-conditions/index.md | 2 +-
public/content/translations/es/about/index.md | 2 +-
.../translations/es/ai-agents/index.md | 6 +-
.../content/translations/es/bridges/index.md | 4 +-
.../es/community/code-of-conduct/index.md | 4 +-
.../translations/es/community/events/index.md | 2 +-
.../es/community/events/organizing/index.md | 2 +-
.../es/community/get-involved/index.md | 4 +-
.../translations/es/community/grants/index.md | 7 +-
.../es/community/language-resources/index.md | 4 +-
.../translations/es/community/online/index.md | 4 +-
.../es/community/research/index.md | 4 +-
.../es/community/support/index.md | 4 +-
.../adding-desci-projects/index.md | 2 +-
.../es/contributing/adding-exchanges/index.md | 4 +-
.../adding-glossary-terms/index.md | 4 +-
.../es/contributing/adding-layer-2s/index.md | 4 +-
.../es/contributing/adding-products/index.md | 4 +-
.../es/contributing/adding-resources/index.md | 4 +-
.../adding-staking-products/index.md | 4 +-
.../es/contributing/adding-wallets/index.md | 4 +-
.../contributing/design-principles/index.md | 4 +-
.../design/adding-design-resources/index.md | 4 +-
.../es/contributing/design/index.md | 4 +-
.../translations/es/contributing/index.md | 4 +-
.../es/contributing/quizzes/index.md | 4 +-
.../translation-program/faq/index.md | 4 +-
.../how-to-translate/index.md | 4 +-
.../contributing/translation-program/index.md | 4 +-
.../mission-and-vision/index.md | 4 +-
.../translation-program/playbook/index.md | 4 +-
.../translation-program/resources/index.md | 2 +-
.../translatathon/details/index.md | 2 +-
.../translatathon/index.md | 2 +-
.../terms-and-conditions/index.md | 4 +-
.../translators-guide/index.md | 2 +-
public/content/translations/es/dao/index.md | 38 +++++------
.../es/decentralized-identity/index.md | 6 +-
public/content/translations/es/defi/index.md | 14 ++--
public/content/translations/es/desci/index.md | 6 +-
.../es/developers/docs/accounts/index.md | 2 +-
.../es/developers/docs/apis/backend/index.md | 2 +-
.../developers/docs/apis/javascript/index.md | 2 +-
.../es/developers/docs/bridges/index.md | 2 +-
.../docs/consensus-mechanisms/index.md | 2 +-
.../docs/consensus-mechanisms/poa/index.md | 2 +-
.../pos/attack-and-defense/index.md | 4 +-
.../pos/attestations/index.md | 2 +-
.../pos/block-proposal/index.md | 2 +-
.../consensus-mechanisms/pos/faqs/index.md | 2 +-
.../consensus-mechanisms/pos/gasper/index.md | 2 +-
.../docs/consensus-mechanisms/pos/index.md | 4 +-
.../consensus-mechanisms/pos/keys/index.md | 4 +-
.../pos/pos-vs-pow/index.md | 4 +-
.../pos/rewards-and-penalties/index.md | 4 +-
.../pos/weak-subjectivity/index.md | 4 +-
.../docs/consensus-mechanisms/pow/index.md | 4 +-
.../consensus-mechanisms/pow/mining/index.md | 2 +-
.../pow/mining/mining-algorithms/index.md | 4 +-
.../es/developers/docs/dapps/index.md | 2 +-
.../block-explorers/index.md | 2 +-
.../docs/data-and-analytics/index.md | 4 +-
.../index.md | 2 +-
.../docs/data-availability/index.md | 2 +-
.../data-structures-and-encoding/index.md | 4 +-
.../patricia-merkle-trie/index.md | 2 +-
.../data-structures-and-encoding/rlp/index.md | 4 +-
.../data-structures-and-encoding/ssz/index.md | 2 +-
.../web3-secret-storage-definition/index.md | 2 +-
.../web3-secret-storage/index.md | 2 +-
.../dex-design-best-practice/index.md | 4 +-
.../heuristics-for-web3/index.md | 2 +-
.../es/developers/docs/design-and-ux/index.md | 4 +-
.../docs/development-networks/index.md | 2 +-
.../developers/docs/ethereum-stack/index.md | 4 +-
.../es/developers/docs/evm/index.md | 4 +-
.../es/developers/docs/evm/opcodes/index.md | 4 +-
.../es/developers/docs/gas/index.md | 2 +-
.../es/developers/docs/ides/index.md | 2 +-
.../translations/es/developers/docs/index.md | 4 +-
.../developers/docs/intro-to-ether/index.md | 4 +-
.../docs/intro-to-ethereum/index.md | 4 +-
.../developers/docs/layer-2-scaling/index.md | 2 +-
.../es/developers/docs/mev/index.md | 4 +-
.../developers/docs/networking-layer/index.md | 2 +-
.../network-addresses/index.md | 4 +-
.../networking-layer/portal-network/index.md | 2 +-
.../es/developers/docs/networks/index.md | 2 +-
.../nodes-and-clients/archive-nodes/index.md | 2 +-
.../docs/nodes-and-clients/bootnodes/index.md | 4 +-
.../client-diversity/index.md | 2 +-
.../docs/nodes-and-clients/index.md | 2 +-
.../nodes-and-clients/light-clients/index.md | 2 +-
.../node-architecture/index.md | 2 +-
.../nodes-as-a-service/index.md | 2 +-
.../nodes-and-clients/run-a-node/index.md | 4 +-
.../es/developers/docs/oracles/index.md | 2 +-
.../programming-languages/delphi/index.md | 2 +-
.../programming-languages/dot-net/index.md | 2 +-
.../docs/programming-languages/index.md | 4 +-
.../docs/programming-languages/java/index.md | 2 +-
.../programming-languages/javascript/index.md | 2 +-
.../programming-languages/python/index.md | 2 +-
.../docs/programming-languages/ruby/index.md | 2 +-
.../docs/programming-languages/rust/index.md | 2 +-
.../es/developers/docs/scaling/index.md | 2 +-
.../developers/docs/scaling/plasma/index.md | 2 +-
.../docs/scaling/sidechains/index.md | 2 +-
.../docs/scaling/state-channels/index.md | 2 +-
.../developers/docs/scaling/validium/index.md | 2 +-
.../docs/smart-contracts/anatomy/index.md | 2 +-
.../docs/smart-contracts/compiling/index.md | 4 +-
.../smart-contracts/composability/index.md | 2 +-
.../docs/smart-contracts/deploying/index.md | 4 +-
.../formal-verification/index.md | 4 +-
.../developers/docs/smart-contracts/index.md | 4 +-
.../docs/smart-contracts/libraries/index.md | 4 +-
.../docs/smart-contracts/naming/index.md | 2 +-
.../docs/smart-contracts/testing/index.md | 2 +-
.../docs/smart-contracts/upgrading/index.md | 2 +-
.../docs/smart-contracts/verifying/index.md | 4 +-
.../es/developers/docs/standards/index.md | 4 +-
.../docs/standards/tokens/erc-1155/index.md | 4 +-
.../docs/standards/tokens/erc-1363/index.md | 4 +-
.../docs/standards/tokens/erc-20/index.md | 6 +-
.../docs/standards/tokens/erc-223/index.md | 4 +-
.../docs/standards/tokens/erc-4626/index.md | 4 +-
.../docs/standards/tokens/erc-721/index.md | 4 +-
.../docs/standards/tokens/erc-777/index.md | 4 +-
.../developers/docs/standards/tokens/index.md | 4 +-
.../es/developers/docs/storage/index.md | 2 +-
.../es/developers/docs/web2-vs-web3/index.md | 2 +-
.../es/developers/docs/wrapped-eth/index.md | 8 +--
.../index.md | 6 +-
.../tutorials/all-you-can-cache/index.md | 4 +-
.../developers/tutorials/app-plasma/index.md | 6 +-
.../index.md | 2 +-
.../index.md | 4 +-
.../index.md | 4 +-
.../index.md | 4 +-
.../index.md | 2 +-
.../index.md | 4 +-
.../erc-721-vyper-annotated-code/index.md | 2 +-
.../tutorials/erc20-annotated-code/index.md | 2 +-
.../erc20-with-safety-rails/index.md | 2 +-
.../tutorials/ethereum-for-web2-auth/index.md | 6 +-
.../index.md | 2 +-
.../index.md | 8 +--
.../index.md | 6 +-
.../hello-world-smart-contract/index.md | 4 +-
.../index.md | 6 +-
.../tutorials/how-to-mint-an-nft/index.md | 4 +-
.../index.md | 6 +-
.../index.md | 6 +-
.../index.md | 6 +-
.../index.md | 6 +-
.../how-to-use-tellor-as-your-oracle/index.md | 8 +--
.../how-to-view-nft-in-metamask/index.md | 4 +-
.../how-to-write-and-deploy-an-nft/index.md | 4 +-
.../index.md | 2 +-
.../tutorials/ipfs-decentralized-ui/index.md | 4 +-
.../index.md | 2 +-
.../index.md | 2 +-
.../logging-events-smart-contracts/index.md | 2 +-
.../index.md | 6 +-
.../index.md | 4 +-
.../developers/tutorials/nft-minter/index.md | 2 +-
.../index.md | 2 +-
.../reverse-engineering-a-contract/index.md | 4 +-
.../tutorials/run-node-raspberry-pi/index.md | 2 +-
.../tutorials/scam-token-tricks/index.md | 4 +-
.../tutorials/secret-state/index.md | 4 +-
.../secure-development-workflow/index.md | 6 +-
.../tutorials/send-token-etherjs/index.md | 2 +-
.../tutorials/send-token-ethersjs/index.md | 4 +-
.../index.md | 4 +-
.../tutorials/server-components/index.md | 4 +-
.../index.md | 2 +-
.../developers/tutorials/short-abi/index.md | 4 +-
.../index.md | 2 +-
.../index.md | 2 +-
.../index.md | 2 +-
.../token-integration-checklist/index.md | 6 +-
.../index.md | 2 +-
.../index.md | 2 +-
.../uniswap-v2-annotated-code/index.md | 68 +++++++++----------
.../tutorials/using-websockets/index.md | 6 +-
.../index.md | 4 +-
.../tutorials/yellow-paper-evm/index.md | 4 +-
public/content/translations/es/eips/index.md | 2 +-
.../es/energy-consumption/index.md | 4 +-
.../translations/es/eth/supply/index.md | 2 +-
.../translations/es/ethereum-forks/index.md | 2 +-
.../content/translations/es/events/index.md | 2 +-
.../translations/es/foundation/index.md | 2 +-
.../content/translations/es/gaming/index.md | 2 +-
.../content/translations/es/glossary/index.md | 2 +-
.../translations/es/governance/index.md | 2 +-
.../index.md | 7 +-
.../es/guides/how-to-id-scam-tokens/index.md | 4 +-
.../how-to-revoke-token-access/index.md | 7 +-
.../es/guides/how-to-swap-tokens/index.md | 7 +-
.../es/guides/how-to-use-a-bridge/index.md | 7 +-
.../es/guides/how-to-use-a-wallet/index.md | 9 ++-
.../content/translations/es/guides/index.md | 4 +-
.../index.md | 7 +-
public/content/translations/es/nft/index.md | 17 +++--
.../content/translations/es/payments/index.md | 14 ++--
.../es/prediction-markets/index.md | 8 +--
.../content/translations/es/privacy/index.md | 2 +-
.../es/real-world-assets/index.md | 6 +-
public/content/translations/es/refi/index.md | 6 +-
.../translations/es/restaking/index.md | 4 +-
.../es/roadmap/account-abstraction/index.md | 4 +-
.../es/roadmap/beacon-chain/index.md | 6 +-
.../translations/es/roadmap/dencun/index.md | 2 +-
.../translations/es/roadmap/fusaka/index.md | 2 +-
.../es/roadmap/fusaka/peerdas/index.md | 2 +-
.../translations/es/roadmap/merge/index.md | 12 ++--
.../es/roadmap/merge/issuance/index.md | 4 +-
.../translations/es/roadmap/pbs/index.md | 4 +-
.../es/roadmap/pectra/7702/index.md | 2 +-
.../translations/es/roadmap/pectra/index.md | 2 +-
.../es/roadmap/pectra/maxeb/index.md | 2 +-
.../translations/es/roadmap/scaling/index.md | 2 +-
.../roadmap/secret-leader-election/index.md | 4 +-
.../translations/es/roadmap/security/index.md | 4 +-
.../es/roadmap/single-slot-finality/index.md | 6 +-
.../es/roadmap/statelessness/index.md | 2 +-
.../es/roadmap/verkle-trees/index.md | 4 +-
.../content/translations/es/security/index.md | 2 +-
.../translations/es/smart-contracts/index.md | 2 +-
.../translations/es/social-networks/index.md | 4 +-
.../translations/es/staking/dvt/index.md | 4 +-
.../translations/es/staking/pools/index.md | 2 +-
.../translations/es/staking/saas/index.md | 4 +-
.../translations/es/staking/solo/index.md | 2 +-
.../es/staking/withdrawals/index.md | 2 +-
public/content/translations/es/web3/index.md | 10 ++-
.../translations/es/what-are-apps/index.md | 4 +-
.../translations/es/whitepaper/index.md | 2 +-
.../translations/es/wrapped-eth/index.md | 7 +-
.../es/zero-knowledge-proofs/index.md | 2 +-
243 files changed, 488 insertions(+), 501 deletions(-)
diff --git a/public/content/translations/es/10years/terms-and-conditions/index.md b/public/content/translations/es/10years/terms-and-conditions/index.md
index c74051bf040..febb21a1139 100644
--- a/public/content/translations/es/10years/terms-and-conditions/index.md
+++ b/public/content/translations/es/10years/terms-and-conditions/index.md
@@ -1,5 +1,5 @@
---
-title: Términos y condiciones de acuñación del NFT del 10.º aniversario de Ethereum
+title: "Términos y condiciones de acuñación del NFT del 10.º aniversario de Ethereum"
lang: es
hideEditButton: true
---
diff --git a/public/content/translations/es/about/index.md b/public/content/translations/es/about/index.md
index 8615b204831..105ced0fb65 100644
--- a/public/content/translations/es/about/index.md
+++ b/public/content/translations/es/about/index.md
@@ -1,6 +1,6 @@
---
title: Acerca de nosotros
-description: Acerca del equipo, la comunidad y la misión de ethereum.org
+description: "Acerca del equipo, la comunidad y la misión de ethereum.org"
lang: es
---
diff --git a/public/content/translations/es/ai-agents/index.md b/public/content/translations/es/ai-agents/index.md
index 8a4e86c8174..95462af9f00 100644
--- a/public/content/translations/es/ai-agents/index.md
+++ b/public/content/translations/es/ai-agents/index.md
@@ -1,14 +1,14 @@
---
title: Agentes de IA
metaTitle: Agentes de IA | Agentes de IA en Ethereum
-description: Una visión general de los agentes de IA en Ethereum
+description: "Una visión general de los agentes de IA en Ethereum"
lang: es
template: use-cases
emoji: ":robot:"
sidebarDepth: 2
image: /images/ai-agents/hero-image.png
-alt: Personas reunidas alrededor de una mesa con gráficos virtuales.
-summaryPoint1: IA que interactúa con la cadena de bloques y realiza operaciones de forma independiente
+alt: "Personas reunidas alrededor de una mesa con gráficos virtuales."
+summaryPoint1: "IA que interactúa con la cadena de bloques y realiza operaciones de forma independiente"
summaryPoint2: Controla carteras y fondos en la cadena de bloques
summaryPoint3: Selecciona a personas u otros agentes para realizar tareas
buttons:
diff --git a/public/content/translations/es/bridges/index.md b/public/content/translations/es/bridges/index.md
index 7e51e975284..11939f8c5e5 100644
--- a/public/content/translations/es/bridges/index.md
+++ b/public/content/translations/es/bridges/index.md
@@ -1,6 +1,6 @@
---
-title: Introducción sobre los puentes en la cadena de bloques
-description: Los puentes permiten a los usuarios, mover sus fondos a través de diferentes cadenas de bloques
+title: "Introducción sobre los puentes en la cadena de bloques"
+description: "Los puentes permiten a los usuarios, mover sus fondos a través de diferentes cadenas de bloques"
lang: es
---
diff --git a/public/content/translations/es/community/code-of-conduct/index.md b/public/content/translations/es/community/code-of-conduct/index.md
index f768bd578a6..ad8287c1898 100644
--- a/public/content/translations/es/community/code-of-conduct/index.md
+++ b/public/content/translations/es/community/code-of-conduct/index.md
@@ -1,6 +1,6 @@
---
-title: Código de conducta
-description: Los estándares básicos por los que nos esforzamos en todos los espacios de ethereum.org.
+title: "Código de conducta"
+description: "Los estándares básicos por los que nos esforzamos en todos los espacios de ethereum.org."
lang: es
---
diff --git a/public/content/translations/es/community/events/index.md b/public/content/translations/es/community/events/index.md
index dfcecda88bd..200fc7bb77d 100644
--- a/public/content/translations/es/community/events/index.md
+++ b/public/content/translations/es/community/events/index.md
@@ -1,6 +1,6 @@
---
title: Descubra eventos y centros comunitarios
-description: Cómo participar en la comunidad Ethereum.
+description: "Cómo participar en la comunidad Ethereum."
lang: es
hideEditButton: true
---
diff --git a/public/content/translations/es/community/events/organizing/index.md b/public/content/translations/es/community/events/organizing/index.md
index 44cade9436a..972cdcd9588 100644
--- a/public/content/translations/es/community/events/organizing/index.md
+++ b/public/content/translations/es/community/events/organizing/index.md
@@ -1,6 +1,6 @@
---
title: Organizar un evento sobre Ethereum
-description: Cómo organizar un evento sobre Ethereum
+description: "Cómo organizar un evento sobre Ethereum"
lang: es
hideEditButton: true
---
diff --git a/public/content/translations/es/community/get-involved/index.md b/public/content/translations/es/community/get-involved/index.md
index ac72ef6b827..ecad6f0e6c4 100644
--- a/public/content/translations/es/community/get-involved/index.md
+++ b/public/content/translations/es/community/get-involved/index.md
@@ -1,6 +1,6 @@
---
-title: ¿Cómo puedo involucrarme?
-description: Cómo participar en la comunidad Ethereum.
+title: "¿Cómo puedo involucrarme?"
+description: "Cómo participar en la comunidad Ethereum."
lang: es
---
diff --git a/public/content/translations/es/community/grants/index.md b/public/content/translations/es/community/grants/index.md
index 28aeb089a78..b71f90e1220 100644
--- a/public/content/translations/es/community/grants/index.md
+++ b/public/content/translations/es/community/grants/index.md
@@ -1,6 +1,6 @@
---
-title: Programas de subvenciones de la Fundación Ethereum y de la comunidad.
-description: Un listado de los programas de subvención entregados a través del ecosistema de Ethereum.
+title: "Programas de subvenciones de la Fundación Ethereum y de la comunidad."
+description: "Un listado de los programas de subvención entregados a través del ecosistema de Ethereum."
lang: es
---
@@ -12,8 +12,7 @@ Esta lista ha sido creada por nuestra comunidad. Si falta algo o encuentra infor
-
¿Eres fundador y necesitas ayuda para acelerar tu negocio? [Dirígete a Founders Support](/founders/)
-
+
¿Eres fundador y necesitas ayuda para acelerar tu negocio? [Dirígete a Founders Support](/founders/)
## Amplio ecosistema Ethereum {#broad-ethereum-ecosystem}
diff --git a/public/content/translations/es/community/language-resources/index.md b/public/content/translations/es/community/language-resources/index.md
index dab1cb611ce..e61ca1595ef 100644
--- a/public/content/translations/es/community/language-resources/index.md
+++ b/public/content/translations/es/community/language-resources/index.md
@@ -1,6 +1,6 @@
---
-title: Recursos lingüísticos
-description: Recursos en idiomas distintos al inglés para aprender sobre Ethereum
+title: "Recursos lingüísticos"
+description: "Recursos en idiomas distintos al inglés para aprender sobre Ethereum"
lang: es
---
diff --git a/public/content/translations/es/community/online/index.md b/public/content/translations/es/community/online/index.md
index eb0e59ecedb..6597fe06b01 100644
--- a/public/content/translations/es/community/online/index.md
+++ b/public/content/translations/es/community/online/index.md
@@ -1,6 +1,6 @@
---
-title: Comunidades en línea
-description: Descubra foros de internet, salas de chat y comunidades de redes sociales donde se reúnen los amantes de Ethereum para comentar y colaborar.
+title: "Comunidades en línea"
+description: "Descubra foros de internet, salas de chat y comunidades de redes sociales donde se reúnen los amantes de Ethereum para comentar y colaborar."
lang: es
---
diff --git a/public/content/translations/es/community/research/index.md b/public/content/translations/es/community/research/index.md
index 95834c5050b..608471ea753 100644
--- a/public/content/translations/es/community/research/index.md
+++ b/public/content/translations/es/community/research/index.md
@@ -1,6 +1,6 @@
---
-title: Áreas activas de investigación en Ethereum
-description: Explore las diferentes áreas de investigación abierta y aprenda a involucrarse.
+title: "Áreas activas de investigación en Ethereum"
+description: "Explore las diferentes áreas de investigación abierta y aprenda a involucrarse."
lang: es
---
diff --git a/public/content/translations/es/community/support/index.md b/public/content/translations/es/community/support/index.md
index 5d875ea916b..f3d767d0639 100644
--- a/public/content/translations/es/community/support/index.md
+++ b/public/content/translations/es/community/support/index.md
@@ -1,6 +1,6 @@
---
-title: Soporte técnico de Ethereum
-description: Explicación de cómo obtener soporte técnico en el ecosistema Ethereum.
+title: "Soporte técnico de Ethereum"
+description: "Explicación de cómo obtener soporte técnico en el ecosistema Ethereum."
lang: es
---
diff --git a/public/content/translations/es/contributing/adding-desci-projects/index.md b/public/content/translations/es/contributing/adding-desci-projects/index.md
index d527b2ebe97..41bf819df60 100644
--- a/public/content/translations/es/contributing/adding-desci-projects/index.md
+++ b/public/content/translations/es/contributing/adding-desci-projects/index.md
@@ -1,6 +1,6 @@
---
title: Agregando proyectos DeSci
-description: Las políticas que seguimos cuando añadimos un enlace a proyectos en la página DeSci de ethereum.org
+description: "Las políticas que seguimos cuando añadimos un enlace a proyectos en la página DeSci de ethereum.org"
lang: es
---
diff --git a/public/content/translations/es/contributing/adding-exchanges/index.md b/public/content/translations/es/contributing/adding-exchanges/index.md
index 9b9303bb974..cca8bb3c036 100644
--- a/public/content/translations/es/contributing/adding-exchanges/index.md
+++ b/public/content/translations/es/contributing/adding-exchanges/index.md
@@ -1,6 +1,6 @@
---
-title: Añadir intercambios
-description: Política aplicable para añadir tipos de interés a Ethereum.org
+title: "Añadir intercambios"
+description: "Política aplicable para añadir tipos de interés a Ethereum.org"
lang: es
---
diff --git a/public/content/translations/es/contributing/adding-glossary-terms/index.md b/public/content/translations/es/contributing/adding-glossary-terms/index.md
index 7f3db091ad9..4372689f6b2 100644
--- a/public/content/translations/es/contributing/adding-glossary-terms/index.md
+++ b/public/content/translations/es/contributing/adding-glossary-terms/index.md
@@ -1,7 +1,7 @@
---
-title: Añadir términos al glosario
+title: "Añadir términos al glosario"
lang: es
-description: Nuestros criterios para añadir nuevos términos al glosario ethereum.org
+description: "Nuestros criterios para añadir nuevos términos al glosario ethereum.org"
---
# Añadir términos al glosario {#contributing-to-ethereumorg-}
diff --git a/public/content/translations/es/contributing/adding-layer-2s/index.md b/public/content/translations/es/contributing/adding-layer-2s/index.md
index 6c4b83f3ed4..0c9efa65e11 100644
--- a/public/content/translations/es/contributing/adding-layer-2s/index.md
+++ b/public/content/translations/es/contributing/adding-layer-2s/index.md
@@ -1,6 +1,6 @@
---
-title: Añadir capas 2
-description: La política que usamos cuando añadimos una capa 2 a ethereum.org
+title: "Añadir capas 2"
+description: "La política que usamos cuando añadimos una capa 2 a ethereum.org"
lang: es
---
diff --git a/public/content/translations/es/contributing/adding-products/index.md b/public/content/translations/es/contributing/adding-products/index.md
index 0889f9c05ae..7af4c256b6e 100644
--- a/public/content/translations/es/contributing/adding-products/index.md
+++ b/public/content/translations/es/contributing/adding-products/index.md
@@ -1,6 +1,6 @@
---
-title: Añadir productos
-description: La política que utilizamos al añadir DApps a ethereum.org.
+title: "Añadir productos"
+description: "La política que utilizamos al añadir DApps a ethereum.org."
lang: es
---
diff --git a/public/content/translations/es/contributing/adding-resources/index.md b/public/content/translations/es/contributing/adding-resources/index.md
index 90ae08c408c..c68795fb6b4 100644
--- a/public/content/translations/es/contributing/adding-resources/index.md
+++ b/public/content/translations/es/contributing/adding-resources/index.md
@@ -1,6 +1,6 @@
---
-title: Añadir recursos
-description: Las políticas que seguimos al añadir recursos a ethereum.org
+title: "Añadir recursos"
+description: "Las políticas que seguimos al añadir recursos a ethereum.org"
lang: es
---
diff --git a/public/content/translations/es/contributing/adding-staking-products/index.md b/public/content/translations/es/contributing/adding-staking-products/index.md
index 6d66690b3b8..8b17d47169e 100644
--- a/public/content/translations/es/contributing/adding-staking-products/index.md
+++ b/public/content/translations/es/contributing/adding-staking-products/index.md
@@ -1,6 +1,6 @@
---
-title: Añadir productos o servicios de participación
-description: La política que utilizamos al añadir productos o servicios de participación a ethereum.org
+title: "Añadir productos o servicios de participación"
+description: "La política que utilizamos al añadir productos o servicios de participación a ethereum.org"
lang: es
---
diff --git a/public/content/translations/es/contributing/adding-wallets/index.md b/public/content/translations/es/contributing/adding-wallets/index.md
index 268f58a18c0..903df030bf7 100644
--- a/public/content/translations/es/contributing/adding-wallets/index.md
+++ b/public/content/translations/es/contributing/adding-wallets/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo añadir carteras
-description: La política que utilizamos al agregar billeteras a ethereum.org
+title: "Cómo añadir carteras"
+description: "La política que utilizamos al agregar billeteras a ethereum.org"
lang: es
---
diff --git a/public/content/translations/es/contributing/design-principles/index.md b/public/content/translations/es/contributing/design-principles/index.md
index 1d4a1c77246..8ed41539b59 100644
--- a/public/content/translations/es/contributing/design-principles/index.md
+++ b/public/content/translations/es/contributing/design-principles/index.md
@@ -1,7 +1,7 @@
---
-title: Principios de diseño
+title: "Principios de diseño"
lang: es
-description: Principios que sustentan las decisiones de diseño y contenido de ethereum.org
+description: "Principios que sustentan las decisiones de diseño y contenido de ethereum.org"
---
# Nuestros principios de diseño {#contributing-to-ethereumorg-}
diff --git a/public/content/translations/es/contributing/design/adding-design-resources/index.md b/public/content/translations/es/contributing/design/adding-design-resources/index.md
index 19fc2407b43..0d3a59bbc05 100644
--- a/public/content/translations/es/contributing/design/adding-design-resources/index.md
+++ b/public/content/translations/es/contributing/design/adding-design-resources/index.md
@@ -1,6 +1,6 @@
---
-title: Añadiendo recursos de diseño
-description: Pautas y requerimientos para asegurar la calidad de los materiales de diseño en ethereum.org
+title: "Añadiendo recursos de diseño"
+description: "Pautas y requerimientos para asegurar la calidad de los materiales de diseño en ethereum.org"
lang: es
---
diff --git a/public/content/translations/es/contributing/design/index.md b/public/content/translations/es/contributing/design/index.md
index 4abc833e735..87d86529189 100644
--- a/public/content/translations/es/contributing/design/index.md
+++ b/public/content/translations/es/contributing/design/index.md
@@ -1,6 +1,6 @@
---
-title: Contribución de diseño
-description: Contribución de diseño a ethereum.org
+title: "Contribución de diseño"
+description: "Contribución de diseño a ethereum.org"
lang: es
---
diff --git a/public/content/translations/es/contributing/index.md b/public/content/translations/es/contributing/index.md
index 5de50915530..9f205f48446 100644
--- a/public/content/translations/es/contributing/index.md
+++ b/public/content/translations/es/contributing/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo colaborar
-description: Entérese de diferentes maneras en las que puede colaborar con ethereum.org.
+title: "Cómo colaborar"
+description: "Entérese de diferentes maneras en las que puede colaborar con ethereum.org."
lang: es
---
diff --git a/public/content/translations/es/contributing/quizzes/index.md b/public/content/translations/es/contributing/quizzes/index.md
index 0fddc5f57f9..3e14e097c73 100644
--- a/public/content/translations/es/contributing/quizzes/index.md
+++ b/public/content/translations/es/contributing/quizzes/index.md
@@ -1,6 +1,6 @@
---
-title: Añadir un test
-description: Las políticas que nosotros usamos cuando agregamos quizzes en ethereum.org
+title: "Añadir un test"
+description: "Las políticas que nosotros usamos cuando agregamos quizzes en ethereum.org"
lang: es
---
diff --git a/public/content/translations/es/contributing/translation-program/faq/index.md b/public/content/translations/es/contributing/translation-program/faq/index.md
index 21b3d2b45bd..9fa0093aeca 100644
--- a/public/content/translations/es/contributing/translation-program/faq/index.md
+++ b/public/content/translations/es/contributing/translation-program/faq/index.md
@@ -1,7 +1,7 @@
---
-title: Preguntas frecuentes acerca del Programa de traducción
+title: "Preguntas frecuentes acerca del Programa de traducción"
lang: es
-description: Preguntas frecuentes acerca del Programa de traducción de ethereum.org
+description: "Preguntas frecuentes acerca del Programa de traducción de ethereum.org"
---
# Guía para traducir ethereum.org {#translating-ethereum-guide}
diff --git a/public/content/translations/es/contributing/translation-program/how-to-translate/index.md b/public/content/translations/es/contributing/translation-program/how-to-translate/index.md
index fcec90f9bfe..06bce11cf74 100644
--- a/public/content/translations/es/contributing/translation-program/how-to-translate/index.md
+++ b/public/content/translations/es/contributing/translation-program/how-to-translate/index.md
@@ -1,7 +1,7 @@
---
-title: Cómo traducir
+title: "Cómo traducir"
lang: es
-description: Instrucciones sobre cómo usar Crowdin para traducir ethereum.org
+description: "Instrucciones sobre cómo usar Crowdin para traducir ethereum.org"
---
# Cómo traducir {#how-to-translate}
diff --git a/public/content/translations/es/contributing/translation-program/index.md b/public/content/translations/es/contributing/translation-program/index.md
index 4b0cb88038e..bfd37fce8df 100644
--- a/public/content/translations/es/contributing/translation-program/index.md
+++ b/public/content/translations/es/contributing/translation-program/index.md
@@ -1,7 +1,7 @@
---
-title: Programa de traducción
+title: "Programa de traducción"
lang: es
-description: Información sobre el Programa de traducción de ethereum.org
+description: "Información sobre el Programa de traducción de ethereum.org"
---
# Programa de traducción {#translation-program}
diff --git a/public/content/translations/es/contributing/translation-program/mission-and-vision/index.md b/public/content/translations/es/contributing/translation-program/mission-and-vision/index.md
index 9bebd7ca9db..5f74fc92259 100644
--- a/public/content/translations/es/contributing/translation-program/mission-and-vision/index.md
+++ b/public/content/translations/es/contributing/translation-program/mission-and-vision/index.md
@@ -1,7 +1,7 @@
---
-title: Misión y visión
+title: "Misión y visión"
lang: es
-description: La misión y visión del Programa de Traducción de ethereum.org.
+description: "La misión y visión del Programa de Traducción de ethereum.org."
---
# Misión y visión {#mission-and-vision}
diff --git a/public/content/translations/es/contributing/translation-program/playbook/index.md b/public/content/translations/es/contributing/translation-program/playbook/index.md
index a38559186bd..f95b798e074 100644
--- a/public/content/translations/es/contributing/translation-program/playbook/index.md
+++ b/public/content/translations/es/contributing/translation-program/playbook/index.md
@@ -1,7 +1,7 @@
---
-title: Manual de estrategias para programas de traducción
+title: "Manual de estrategias para programas de traducción"
lang: es
-description: Una recopilación de consejos y consideraciones importantes para implantar un programa de traducción
+description: "Una recopilación de consejos y consideraciones importantes para implantar un programa de traducción"
---
# Manual de estrategias para programas de traducción {#translation-program-playbook}
diff --git a/public/content/translations/es/contributing/translation-program/resources/index.md b/public/content/translations/es/contributing/translation-program/resources/index.md
index e5143c4d4f8..4f6d3cff78d 100644
--- a/public/content/translations/es/contributing/translation-program/resources/index.md
+++ b/public/content/translations/es/contributing/translation-program/resources/index.md
@@ -1,7 +1,7 @@
---
title: Recursos para traductores
lang: es
-description: Recursos útiles para los traductores de ethereum.org.
+description: "Recursos útiles para los traductores de ethereum.org."
---
# Recursos {#resources}
diff --git a/public/content/translations/es/contributing/translation-program/translatathon/details/index.md b/public/content/translations/es/contributing/translation-program/translatathon/details/index.md
index 7274e2ffc13..ce1bb2120c5 100644
--- a/public/content/translations/es/contributing/translation-program/translatathon/details/index.md
+++ b/public/content/translations/es/contributing/translation-program/translatathon/details/index.md
@@ -1,7 +1,7 @@
---
title: Detalles y reglas
lang: es
-template: translatatón
+template: translatathon
---

diff --git a/public/content/translations/es/contributing/translation-program/translatathon/index.md b/public/content/translations/es/contributing/translation-program/translatathon/index.md
index 5cdd060cf29..6a476b66546 100644
--- a/public/content/translations/es/contributing/translation-program/translatathon/index.md
+++ b/public/content/translations/es/contributing/translation-program/translatathon/index.md
@@ -1,7 +1,7 @@
---
title: Translatathon de ethereum.org 2025
lang: es
-template: translatatón
+template: translatathon
---
diff --git a/public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md b/public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md
index 44a9a22e230..ce6061c473c 100644
--- a/public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md
+++ b/public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md
@@ -1,7 +1,7 @@
---
-title: Términos y condiciones
+title: "Términos y condiciones"
lang: es
-template: translatatón
+template: translatathon
---
El Concurso de Traducción de Ethereum.org, también conocido como el «Translatatón», es una iniciativa experimental del equipo de ethereum.org para incentivar y recompensar las contribuciones al programa de traducción de ethereum.org.
diff --git a/public/content/translations/es/contributing/translation-program/translators-guide/index.md b/public/content/translations/es/contributing/translation-program/translators-guide/index.md
index aa908947b6c..1983f4a7474 100644
--- a/public/content/translations/es/contributing/translation-program/translators-guide/index.md
+++ b/public/content/translations/es/contributing/translation-program/translators-guide/index.md
@@ -1,5 +1,5 @@
---
-title: Guía para traductores
+title: "Guía para traductores"
lang: es
description: Instrucciones y consejos para traductores de ethereum.org
---
diff --git a/public/content/translations/es/dao/index.md b/public/content/translations/es/dao/index.md
index 061f6321d72..04fe39d7e43 100644
--- a/public/content/translations/es/dao/index.md
+++ b/public/content/translations/es/dao/index.md
@@ -1,7 +1,7 @@
---
-title: ¿Qué es una DAO?
-metaTitle: ¿Qué es una DAO? | Organizaciones Autónomas Descentralizadas
-description: Una visión general de las DAO en Ethereum
+title: "¿Qué es una DAO?"
+metaTitle: "¿Qué es una DAO? | Organizaciones Autónomas Descentralizadas"
+description: "Una visión general de las DAO en Ethereum"
lang: es
template: use-cases
emoji: ":handshake:"
@@ -10,7 +10,7 @@ image: /images/use-cases/dao-2.png
alt: Imagen de una DAO votando una propuesta.
summaryPoint1: Comunidades con propiedad compartida por los miembros sin liderazgo centralizado.
summaryPoint2: Una forma segura de colaborar con desconocidos en Internet.
-summaryPoint3: Un lugar seguro para dar fondos a una causa específica.
+summaryPoint3: "Un lugar seguro para dar fondos a una causa específica."
---
## ¿Qué son las DAO? {#what-are-daos}
@@ -84,58 +84,58 @@ En muchas DAO, las transacciones se ejecutarán automáticamente si el quórum d
Aunque las DAO pueden tener miles de miembros votantes, los fondos pueden residir en una [wallet](/glossary/#wallet) compartida por 5-20 miembros activos de la comunidad que son de confianza y, por lo general, tienen identidad pública (doxxeados ante la comunidad). Después de una votación, los firmantes del [multisig](/glossary/#multisig) ejecutan la voluntad de la comunidad.
-## Leyes de las DAO {#dao-laws}
+## Leyes de las DAO {#governance-example}
En 1977, Wyoming inventó la LLC, la cual protege a los empresarios y limita su responsabilidad. Más recientemente, fueron pioneros en la ley DAO que establece el estatus legal de las DAO. Actualmente Wyoming, Vermont y las Islas Vírgenes tienen alguna legislación que regula las DAO.
-### Un ejemplo famoso {#law-example}
+### Un ejemplo famoso {#dao-laws}
[CityDAO](https://citizen.citydao.io/) – CityDAO utilizó la ley de DAO de Wyoming para comprar 40 acres de terreno cerca del Parque Nacional Yellowstone.
-## Membresía en DAO {#dao-membership}
+## Membresía en DAO {#law-example}
Existen diferentes modelos de afiliación a una DAO. La membresía puede determinar cómo funciona la votación y otras partes clave de la DAO.
-### Membresía basada en tokens {#token-based-membership}
+### Membresía basada en tokens {#dao-membership}
Por lo general, completamente [permissionless](/glossary/#permissionless), dependiendo del token utilizado. En su mayoría, estos tokens de gobernanza pueden intercambiarse sin permiso en un [exchange descentralizado](/glossary/#dex). Otros deben ganarse proporcionando liquidez o alguna otra "prueba de trabajo". En cualquier caso, simplemente poseer el token otorga acceso a las votaciones.
_Típicamente se usa para gobernar protocolos descentralizados amplios o tokens en sí mismos._
-#### Un ejemplo famoso {#token-example}
+#### Un ejemplo famoso {#token-based-membership}
[MakerDAO](https://makerdao.com) – El token MKR de MakerDAO está ampliamente disponible en exchanges descentralizados y cualquier persona puede adquirir poder de voto sobre el futuro del protocolo Maker.
-### Membresía basada en participaciones {#share-based-membership}
+### Membresía basada en participaciones {#token-example}
Las DAO basadas en participación dependen más de los permisos, pero siguen siendo bastante abiertas. Cualquier miembro potencial puede presentar una propuesta para unirse a la DAO, generalmente ofreciendo un tributo de algún valor en forma de tokens o trabajo. La participación representa poder de voto y propiedad directos. Los miembros pueden salir en cualquier momento con su parte proporcional del tesoro.
_Normalmente se utiliza para organizaciones más unidas, centradas en el ser humano, como organizaciones benéficas, sindicatos y clubes de inversión. También se pueden gobernar protocolos y tokens._
-#### Un ejemplo famoso {#share-example}
+#### Un ejemplo famoso {#share-based-membership}
[MolochDAO](http://molochdao.com/) – MolochDAO se enfoca en financiar proyectos de Ethereum. Requieren una propuesta para la membresía, de modo que el grupo pueda evaluar si tiene la experiencia y el capital necesarios para emitir juicios informados sobre los potenciales beneficiarios. No se puede simplemente comprar acceso a la DAO en el mercado abierto.
-### Membresía basada en reputación {#reputation-based-membership}
+### Membresía basada en reputación {#share-example}
La reputación representa una prueba de participación y otorga poder de voto en la DAO. A diferencia de la adhesión de miembros basada en tokens o en la participación, las DAO basadas en la reputación no transfieren la propiedad a los colaboradores. La reputación no puede comprarse, transferirse ni delegarse; los miembros de la DAO deben ganarse la reputación mediante la participación. La votación en cadena se realiza sin permiso, y los potenciales miembros pueden presentar propuestas libremente para unirse a la DAO y solicitar reputación y tókenes como recompensa a cambio de su contribución.
_Normalmente utilizada para el desarrollo descentralizado y la gobernanza de protocolos y [dapps](/glossary/#dapp), pero también adecuada para una amplia variedad de organizaciones como organizaciones benéficas, colectivos de trabajadores, clubes de inversión, etc._
-#### Un ejemplo famoso {#reputation-example}
+#### Un ejemplo famoso {#reputation-based-membership}
[DXdao](https://DXdao.eth.limo) – DXdao fue un colectivo soberano global que construía y gobernaba protocolos y aplicaciones descentralizados desde 2019. Aprovechó la gobernanza basada en reputación y el [consenso holográfico](/glossary/#holographic-consensus) para coordinar y gestionar fondos, lo que significa que nadie podía comprar participación para influir en su futuro o en su gobernanza.
-## Unirse o crear una DAO {#join-start-a-dao}
+## Unirse o crear una DAO {#reputation-example}
-### Unirse a una DAO {#join-a-dao}
+### Unirse a una DAO {#join-start-a-dao}
- [DAOs de la comunidad Ethereum](/community/get-involved/#decentralized-autonomous-organizations-daos)
- [Lista de DAOs en DAOHaus](https://app.daohaus.club/explore)
- [Lista de DAO de Tally.xyz](https://www.tally.xyz/explore)
- [Lista de DAOs en DeGov.AI](https://apps.degov.ai/)
-### Crear una DAO {#start-a-dao}
+### Crear una DAO {#join-a-dao}
- [Invoca una DAO con DAOhaus](https://app.daohaus.club/summon)
- [Inicie una DAO de gobernador con Tally](https://www.tally.xyz/get-started)
@@ -144,9 +144,9 @@ _Normalmente utilizada para el desarrollo descentralizado y la gobernanza de pro
- [Crea una DAO con el consenso holográfico de DAOstack](https://alchemy.daostack.io/daos/create)
- [Lanza una DAO con DeGov Launcher](https://docs.degov.ai/integration/deploy)
-## Lecturas adicionales {#further-reading}
+## Lecturas adicionales {#start-a-dao}
-### Artículos sobre DAO {#dao-articles}
+### Artículos sobre DAO {#further-reading}
- [¿Qué es una DAO?](https://aragon.org/dao) – [Aragon](https://aragon.org/)
- [House of DAOs](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/)
@@ -157,7 +157,7 @@ _Normalmente utilizada para el desarrollo descentralizado y la gobernanza de pro
- [Las DAO no son corporaciones: dónde importa la descentralización en las organizaciones autónomas, por Vitalik](https://vitalik.eth.limo/general/2022/09/20/daos.html)
- [DAOs, DACs, DAs y más: Una guía incompleta de terminología](https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide) - [Ethereum Blog](https://blog.ethereum.org)
-### Videos {#videos}
+### Videos {#dao-articles}
- [¿Qué es una DAO en cripto?](https://youtu.be/KHm0uUPqmVE)
- [¿Puede una DAO construir una ciudad?](https://www.ted.com/talks/scott_fitsimones_could_a_dao_build_the_next_great_city) – [TED](https://www.ted.com/)
diff --git a/public/content/translations/es/decentralized-identity/index.md b/public/content/translations/es/decentralized-identity/index.md
index f500b4893c1..adf531b76a6 100644
--- a/public/content/translations/es/decentralized-identity/index.md
+++ b/public/content/translations/es/decentralized-identity/index.md
@@ -1,14 +1,14 @@
---
title: Identidad descentralizada
-description: ¿Qué es la identidad descentralizada y por qué es importante?
+description: "¿Qué es la identidad descentralizada y por qué es importante?"
lang: es
template: use-cases
emoji: ":id:"
sidebarDepth: 2
image: /images/eth-gif-cat.png
-summaryPoint1: Los sistemas tradicionales de identidad han centralizado la emisión, mantenimiento y control de sus identificadores.
+summaryPoint1: "Los sistemas tradicionales de identidad han centralizado la emisión, mantenimiento y control de sus identificadores."
summaryPoint2: La identidad descentralizada elimina la dependencia de terceras partes centralizadas.
-summaryPoint3: Gracias a la criptografía, los usuarios tienen ahora las herramientas para emitir, retener y controlar sus propios identificadores y certificaciones.
+summaryPoint3: "Gracias a la criptografía, los usuarios tienen ahora las herramientas para emitir, retener y controlar sus propios identificadores y certificaciones."
---
La identidad está detrás de prácticamente todos los aspectos de su vida. El uso de servicios en línea, la apertura de una cuenta bancaria, la votación en elecciones, la compra de propiedades, los contratos de empleo... Todo esto requiere demostrar su identidad.
diff --git a/public/content/translations/es/defi/index.md b/public/content/translations/es/defi/index.md
index 6c1bb1b1c97..4e3a5689fe9 100644
--- a/public/content/translations/es/defi/index.md
+++ b/public/content/translations/es/defi/index.md
@@ -1,7 +1,7 @@
---
title: Finanzas descentralizadas (DeFi)
-metaTitle: ¿Qué son las DeFi? | Beneficios y usos de las Finanzas Descentralizadas
-description: Una visión de las finanzas descentralizadas en Ethereum
+metaTitle: "¿Qué son las DeFi? | Beneficios y usos de las Finanzas Descentralizadas"
+description: "Una visión de las finanzas descentralizadas en Ethereum"
lang: es
template: use-cases
emoji: ":money_with_wings:"
@@ -9,8 +9,8 @@ image: /images/use-cases/defi.png
alt: Un logotipo de Ethereum hecho de bloques de Lego.
sidebarDepth: 2
summaryPoint1: Una alternativa global y abierta al sistema financiero actual.
-summaryPoint2: Productos que le permiten tomar prestado, ahorrar, invertir, comerciar y más.
-summaryPoint3: Basado en tecnología de código abierto con la que cualquiera puede programar.
+summaryPoint2: "Productos que le permiten tomar prestado, ahorrar, invertir, comerciar y más."
+summaryPoint3: "Basado en tecnología de código abierto con la que cualquiera puede programar."
---
DeFi o Finanzas Descentralizadas es un sistema financiero global y abierto para la era de Internet, una alternativa al sistema anticuado, fuertemente controlado y mantenido por procesos e infraestructuras del siglo pasado. En DeFi, usted tiene el control y la total visibilidad sobre su dinero. Puede interactuar con mercados mundiales y alternativos a la moneda local o entidades bancarias de su país. Los productos en DeFi permiten el uso de servicios financieros a cualquier persona que tenga una conexión a Internet y además, dichos servicios son manejados y mantenidos por sus propios usuarios. Hasta el momento, miles de millones de dólares en criptomonedas han circulado a través de las aplicaciones DeFi y siguen aumentando cada día.
@@ -67,8 +67,7 @@ Esto suena extraño... "¿por qué querría programar mi dinero?" Sin embargo, e
-
Si es nuevo en Ethereum, explore y pruebe algunas de nuestras sugerencias de aplicaciones DeFi.
-
+
Si es nuevo en Ethereum, explore y pruebe algunas de nuestras sugerencias de aplicaciones DeFi.
Explorar aplicaciones DeFi
@@ -116,7 +115,8 @@ La volatilidad de las criptomonedas es un problema para muchos productos financi
Las monedas como Dai o USDC tienen un valor que varía en pocos céntimos del dólar. Esto las hace perfectas para acumular ganancias o comerciar. Muchas personas en Latinoamérica han utilizado las monedas estables como una forma de proteger sus ahorros frente a momentos de gran incertidumbre que involucran a las monedas emitidas por su gobierno.
- Para conocer más a fondo las monedas estables
+ Para conocer más a fondo las monedas estables
+
diff --git a/public/content/translations/es/desci/index.md b/public/content/translations/es/desci/index.md
index 5e67dd39306..3b99c8fab74 100644
--- a/public/content/translations/es/desci/index.md
+++ b/public/content/translations/es/desci/index.md
@@ -3,12 +3,12 @@ title: Ciencia descentralizada (DeSci)
description: Un vistazo a la ciencia descentralizada en Ethereum
lang: es
template: use-cases
-emoji: ":microscopio:"
+emoji: ":microscope:"
sidebarDepth: 2
image: /images/future_transparent.png
alt: ""
-summaryPoint1: Una alternativa global y abierta al sistema científico actual.
-summaryPoint2: Tecnología que permite a científicos recaudar fondos, realizar experimentos, compartir información y distribuir ideas, entre otras cosas.
+summaryPoint1: "Una alternativa global y abierta al sistema científico actual."
+summaryPoint2: "Tecnología que permite a científicos recaudar fondos, realizar experimentos, compartir información y distribuir ideas, entre otras cosas."
summaryPoint3: Se basa en el movimiento de la ciencia abierta.
---
diff --git a/public/content/translations/es/developers/docs/accounts/index.md b/public/content/translations/es/developers/docs/accounts/index.md
index a85f15a0138..35fb60ffaf9 100644
--- a/public/content/translations/es/developers/docs/accounts/index.md
+++ b/public/content/translations/es/developers/docs/accounts/index.md
@@ -1,6 +1,6 @@
---
title: Cuentas de Ethereum
-description: Una explicación sobre las cuentas Ethereum, su estructura de datos y su relación con el par de claves criptográficas.
+description: "Una explicación sobre las cuentas Ethereum, su estructura de datos y su relación con el par de claves criptográficas."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/apis/backend/index.md b/public/content/translations/es/developers/docs/apis/backend/index.md
index 972653c92d0..628f97ea374 100644
--- a/public/content/translations/es/developers/docs/apis/backend/index.md
+++ b/public/content/translations/es/developers/docs/apis/backend/index.md
@@ -1,6 +1,6 @@
---
title: Bibliotecas de API de backend
-description: Una introducción a las API del cliente de Ethereum, que permiten interactuar con la blockchain desde tu aplicación.
+description: "Una introducción a las API del cliente de Ethereum, que permiten interactuar con la blockchain desde tu aplicación."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/apis/javascript/index.md b/public/content/translations/es/developers/docs/apis/javascript/index.md
index 50161f2ea70..22c6c636927 100644
--- a/public/content/translations/es/developers/docs/apis/javascript/index.md
+++ b/public/content/translations/es/developers/docs/apis/javascript/index.md
@@ -1,6 +1,6 @@
---
title: Bibliotecas de API de JavaScript
-description: Una introducción a las bibliotecas de cliente de JavaScript, que te permiten interactuar con la blockchain desde tu aplicación.
+description: "Una introducción a las bibliotecas de cliente de JavaScript, que te permiten interactuar con la blockchain desde tu aplicación."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/bridges/index.md b/public/content/translations/es/developers/docs/bridges/index.md
index 96d39616db7..2843fc7285c 100644
--- a/public/content/translations/es/developers/docs/bridges/index.md
+++ b/public/content/translations/es/developers/docs/bridges/index.md
@@ -1,6 +1,6 @@
---
title: Puentes
-description: Una visión general del puenteo para los desarrolladores
+description: "Una visión general del puenteo para los desarrolladores"
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/index.md
index ec7b67133f6..325a331c2a2 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/index.md
@@ -1,6 +1,6 @@
---
title: Mecanismos de consenso
-description: Una explicación de los protocolos de consenso en los sistemas distribuidos y de su función en Ethereum.
+description: "Una explicación de los protocolos de consenso en los sistemas distribuidos y de su función en Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/poa/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/poa/index.md
index 700969ef563..14f8fb60e6e 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/poa/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/poa/index.md
@@ -1,6 +1,6 @@
---
title: Prueba de autoridad (PoA)
-description: Explicación del protocolo de consenso "Prueba de autoridad" y su papel en el ecosistema de cadenas de bloques.
+description: "Explicación del protocolo de consenso \"Prueba de autoridad\" y su papel en el ecosistema de cadenas de bloques."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
index 7817854cb79..ed8e6ff82ae 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
@@ -1,6 +1,6 @@
---
-title: Ataque y defensa de la prueba de participación de Ethereum
-description: Conozca mejor los vectores de ataque conocidos en la prueba de participación de Ethereum y cómo se defienden.
+title: "Ataque y defensa de la prueba de participación de Ethereum"
+description: "Conozca mejor los vectores de ataque conocidos en la prueba de participación de Ethereum y cómo se defienden."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attestations/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attestations/index.md
index b078b0e4fef..f6853228b64 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attestations/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attestations/index.md
@@ -1,6 +1,6 @@
---
title: Atestaciones
-description: Una descripción de las certificaciones sobre la prueba de participación de Ethereum.
+description: "Una descripción de las certificaciones sobre la prueba de participación de Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/block-proposal/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
index b923aad0034..b0aac3c92a9 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
@@ -1,6 +1,6 @@
---
title: Propuesta de bloque
-description: Explicación de cómo se proponen los bloques en la prueba de participación de Ethereum.
+description: "Explicación de cómo se proponen los bloques en la prueba de participación de Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/faqs/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/faqs/index.md
index 2990c0398ac..1d631f7b1f6 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/faqs/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/faqs/index.md
@@ -1,6 +1,6 @@
---
title: Preguntas frecuentes
-description: Preguntas más frecuentes sobre la prueba de participación (PoS).
+description: "Preguntas más frecuentes sobre la prueba de participación (PoS)."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/gasper/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/gasper/index.md
index ac4044870b5..f377c5e49c7 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/gasper/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/gasper/index.md
@@ -1,6 +1,6 @@
---
title: Gasper
-description: Una explicación del mecanismo de prueba de participación Gasper.
+description: "Una explicación del mecanismo de prueba de participación Gasper."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/index.md
index c89b69b450d..cf403ee7a5e 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/index.md
@@ -1,6 +1,6 @@
---
-title: Prueba de participación (PoS)
-description: Una explicación del protocolo de consenso de la prueba de participación y su papel en Ethereum.
+title: "Prueba de participación (PoS)"
+description: "Una explicación del protocolo de consenso de la prueba de participación y su papel en Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/keys/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/keys/index.md
index c6ab2560b00..b581a31c1d7 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/keys/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/keys/index.md
@@ -1,6 +1,6 @@
---
-title: Claves en la prueba de participación de Ethereum
-description: Una explicación de las claves utilizadas en el mecanismo de consenso de prueba de participación de Ethereum
+title: "Claves en la prueba de participación de Ethereum"
+description: "Una explicación de las claves utilizadas en el mecanismo de consenso de prueba de participación de Ethereum"
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md
index 3c297d120ed..ce2192246ee 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md
@@ -1,6 +1,6 @@
---
-title: Prueba de participación frente a prueba de trabajo
-description: Una comparación entre la prueba de participación de Ethereum y el mecanismo de consenso basado en la prueba de trabajo.
+title: "Prueba de participación frente a prueba de trabajo"
+description: "Una comparación entre la prueba de participación de Ethereum y el mecanismo de consenso basado en la prueba de trabajo."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
index 45396f93b6a..cb5f525ecb0 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
@@ -1,6 +1,6 @@
---
-title: Recompensas y penalizaciones de la prueba de participación
-description: Descubra más detalles sobre los incentivos en el protocolo en la prueba de participación de Ethereum.
+title: "Recompensas y penalizaciones de la prueba de participación"
+description: "Descubra más detalles sobre los incentivos en el protocolo en la prueba de participación de Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md
index 02abcfe385d..f96bc4225db 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md
@@ -1,6 +1,6 @@
---
-title: Subjetividad débil
-description: Una explicacion de la subjetividad debil y su función en PoS Ethereum.
+title: "Subjetividad débil"
+description: "Una explicacion de la subjetividad debil y su función en PoS Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/index.md
index 979cbeb1047..0b5b3f79c92 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/index.md
@@ -1,6 +1,6 @@
---
-title: Prueba de trabajo (PoW, por sus siglas en inglés)
-description: Una explicación del protocolo de consenso de la prueba de trabajo y su función en Ethereum.
+title: "Prueba de trabajo (PoW, por sus siglas en inglés)"
+description: "Una explicación del protocolo de consenso de la prueba de trabajo y su función en Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/index.md
index 91499d91ad5..fc2fa848366 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/index.md
@@ -1,6 +1,6 @@
---
title: Minado
-description: Una explicación de cómo funcionaba la minería en Ethereum.
+description: "Una explicación de cómo funcionaba la minería en Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md
index 3e7bb7e439a..62eba3863bc 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md
@@ -1,6 +1,6 @@
---
-title: Algoritmos de minería
-description: Un examen detallado de los algoritmos utilizados para la minería de Ethereum.
+title: "Algoritmos de minería"
+description: "Un examen detallado de los algoritmos utilizados para la minería de Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/dapps/index.md b/public/content/translations/es/developers/docs/dapps/index.md
index 1fd6667be87..b0610704850 100644
--- a/public/content/translations/es/developers/docs/dapps/index.md
+++ b/public/content/translations/es/developers/docs/dapps/index.md
@@ -1,5 +1,5 @@
---
-title: Introducción técnica a las DApps
+title: "Introducción técnica a las DApps"
description:
lang: es
---
diff --git a/public/content/translations/es/developers/docs/data-and-analytics/block-explorers/index.md b/public/content/translations/es/developers/docs/data-and-analytics/block-explorers/index.md
index 9b7c99d3ddf..09dfa106d93 100644
--- a/public/content/translations/es/developers/docs/data-and-analytics/block-explorers/index.md
+++ b/public/content/translations/es/developers/docs/data-and-analytics/block-explorers/index.md
@@ -1,6 +1,6 @@
---
title: Exploradores de bloques
-description: Una introducción sobre los exploradores de bloques, tu portal en el mundo de los datos de la blockchain, en el que puedes consultar información sobre las transacciones, las cuentas, los contratos, etc.
+description: "Una introducción sobre los exploradores de bloques, tu portal en el mundo de los datos de la blockchain, en el que puedes consultar información sobre las transacciones, las cuentas, los contratos, etc."
lang: es
sidebarDepth: 3
---
diff --git a/public/content/translations/es/developers/docs/data-and-analytics/index.md b/public/content/translations/es/developers/docs/data-and-analytics/index.md
index 7faee246217..5589bac99da 100644
--- a/public/content/translations/es/developers/docs/data-and-analytics/index.md
+++ b/public/content/translations/es/developers/docs/data-and-analytics/index.md
@@ -1,6 +1,6 @@
---
-title: Datos y análisis
-description: Cómo obtener analíticas y datos en cadena para usarlos en sus DApps
+title: "Datos y análisis"
+description: "Cómo obtener analíticas y datos en cadena para usarlos en sus DApps"
lang: es
---
diff --git a/public/content/translations/es/developers/docs/data-availability/blockchain-data-storage-strategies/index.md b/public/content/translations/es/developers/docs/data-availability/blockchain-data-storage-strategies/index.md
index ac10c6e21bd..f5e9e090a3c 100644
--- a/public/content/translations/es/developers/docs/data-availability/blockchain-data-storage-strategies/index.md
+++ b/public/content/translations/es/developers/docs/data-availability/blockchain-data-storage-strategies/index.md
@@ -1,6 +1,6 @@
---
title: Estrategias para el almacenamiento de datos en la cadena de bloques
-description: Existen varias formas de guardar datos utilizando la cadena de bloques. En este artículo compararemos las distintas estrategias, sus costos y desventajas, como también los requerimientos para el uso de forma segura.
+description: "Existen varias formas de guardar datos utilizando la cadena de bloques. En este artículo compararemos las distintas estrategias, sus costos y desventajas, como también los requerimientos para el uso de forma segura."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/data-availability/index.md b/public/content/translations/es/developers/docs/data-availability/index.md
index 67d862e55e1..e23eda96206 100644
--- a/public/content/translations/es/developers/docs/data-availability/index.md
+++ b/public/content/translations/es/developers/docs/data-availability/index.md
@@ -1,6 +1,6 @@
---
title: Disponibilidad de datos
-description: Descripción general de los problemas y soluciones relacionados con la disponibilidad de datos en Ethereum
+description: "Descripción general de los problemas y soluciones relacionados con la disponibilidad de datos en Ethereum"
lang: es
---
diff --git a/public/content/translations/es/developers/docs/data-structures-and-encoding/index.md b/public/content/translations/es/developers/docs/data-structures-and-encoding/index.md
index f801d70c9b3..88ae98f7290 100644
--- a/public/content/translations/es/developers/docs/data-structures-and-encoding/index.md
+++ b/public/content/translations/es/developers/docs/data-structures-and-encoding/index.md
@@ -1,6 +1,6 @@
---
-title: Estructuras de datos y codificación
-description: Visión general de las estructuras de datos fundamentales de Ethereum.
+title: "Estructuras de datos y codificación"
+description: "Visión general de las estructuras de datos fundamentales de Ethereum."
lang: es
sidebarDepth: 2
---
diff --git a/public/content/translations/es/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md b/public/content/translations/es/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
index e253f7fde58..d903b4c1f93 100644
--- a/public/content/translations/es/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
+++ b/public/content/translations/es/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
@@ -1,6 +1,6 @@
---
title: Merkle Patricia Trie
-description: Introducción a Merkle Patricia Trie.
+description: "Introducción a Merkle Patricia Trie."
lang: es
sidebarDepth: 2
---
diff --git a/public/content/translations/es/developers/docs/data-structures-and-encoding/rlp/index.md b/public/content/translations/es/developers/docs/data-structures-and-encoding/rlp/index.md
index fcd9cdd048a..b3601fcdbbd 100644
--- a/public/content/translations/es/developers/docs/data-structures-and-encoding/rlp/index.md
+++ b/public/content/translations/es/developers/docs/data-structures-and-encoding/rlp/index.md
@@ -1,6 +1,6 @@
---
-title: Serialización de prefijo de longitud recursiva (RLP)
-description: Definición de la codificación RLP en la capa de ejecución de Ethereum.
+title: "Serialización de prefijo de longitud recursiva (RLP)"
+description: "Definición de la codificación RLP en la capa de ejecución de Ethereum."
lang: es
sidebarDepth: 2
---
diff --git a/public/content/translations/es/developers/docs/data-structures-and-encoding/ssz/index.md b/public/content/translations/es/developers/docs/data-structures-and-encoding/ssz/index.md
index e9c12c38617..007b2b83ce3 100644
--- a/public/content/translations/es/developers/docs/data-structures-and-encoding/ssz/index.md
+++ b/public/content/translations/es/developers/docs/data-structures-and-encoding/ssz/index.md
@@ -1,6 +1,6 @@
---
title: Simple serialize
-description: Explicación del formato SSZ de Ethereum.
+description: "Explicación del formato SSZ de Ethereum."
lang: es
sidebarDepth: 2
---
diff --git a/public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md b/public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md
index 1a9853d0cca..d79161d402b 100644
--- a/public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md
+++ b/public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md
@@ -1,5 +1,5 @@
---
-title: Definición de almacenamiento secreto Web3
+title: "Definición de almacenamiento secreto Web3"
description: Definicion formal para el almacenamiento secreto web3
lang: es
sidebarDepth: 2
diff --git a/public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md b/public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md
index 8cb7ea7456f..c11360acf87 100644
--- a/public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md
+++ b/public/content/translations/es/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md
@@ -1,5 +1,5 @@
---
-title: Definición de almacenamiento secreto Web3
+title: "Definición de almacenamiento secreto Web3"
description: Definicion formal para el almacenamiento secreto web3
lang: es
sidebarDepth: 2
diff --git a/public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md b/public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md
index cfe54515397..bf8fe5c66f9 100644
--- a/public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md
+++ b/public/content/translations/es/developers/docs/design-and-ux/dex-design-best-practice/index.md
@@ -1,6 +1,6 @@
---
-title: Mejores prácticas de diseño para exchanges descentralizados (DEX)
-description: Guía que explica las decisiones de UX/UI para el intercambio de tokens.
+title: "Mejores prácticas de diseño para exchanges descentralizados (DEX)"
+description: "Guía que explica las decisiones de UX/UI para el intercambio de tokens."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/design-and-ux/heuristics-for-web3/index.md b/public/content/translations/es/developers/docs/design-and-ux/heuristics-for-web3/index.md
index 81ecd415fa3..e0dcce474bf 100644
--- a/public/content/translations/es/developers/docs/design-and-ux/heuristics-for-web3/index.md
+++ b/public/content/translations/es/developers/docs/design-and-ux/heuristics-for-web3/index.md
@@ -1,5 +1,5 @@
---
-title: 7 principios heurísticos para el diseño de interfaces web3
+title: "7 principios heurísticos para el diseño de interfaces web3"
description: Principios para mejorar la usabilidad en Web3
lang: es
---
diff --git a/public/content/translations/es/developers/docs/design-and-ux/index.md b/public/content/translations/es/developers/docs/design-and-ux/index.md
index 2ed493c8f16..42b721509a6 100644
--- a/public/content/translations/es/developers/docs/design-and-ux/index.md
+++ b/public/content/translations/es/developers/docs/design-and-ux/index.md
@@ -1,6 +1,6 @@
---
-title: Diseño y experiencia de usuario (UX) en web3
-description: Introducción al diseño de la experiencia del usuario e investigación en el espacio Web3 y Ethereum.
+title: "Diseño y experiencia de usuario (UX) en web3"
+description: "Introducción al diseño de la experiencia del usuario e investigación en el espacio Web3 y Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/development-networks/index.md b/public/content/translations/es/developers/docs/development-networks/index.md
index 7b618f2d37b..1c28fd3a210 100644
--- a/public/content/translations/es/developers/docs/development-networks/index.md
+++ b/public/content/translations/es/developers/docs/development-networks/index.md
@@ -1,6 +1,6 @@
---
title: Redes de desarrollo
-description: Una descripción general de las redes de desarrollo y las herramientas disponibles para ayudar a construir aplicaciones de Ethereum.
+description: "Una descripción general de las redes de desarrollo y las herramientas disponibles para ayudar a construir aplicaciones de Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/ethereum-stack/index.md b/public/content/translations/es/developers/docs/ethereum-stack/index.md
index fd6f318fc9d..b81b049d75f 100644
--- a/public/content/translations/es/developers/docs/ethereum-stack/index.md
+++ b/public/content/translations/es/developers/docs/ethereum-stack/index.md
@@ -1,6 +1,6 @@
---
-title: Introducción a la pila de Ethereum
-description: Un tutorial de las diferentes capas de la pila de Ethereum y acerca de cómo encajan.
+title: "Introducción a la pila de Ethereum"
+description: "Un tutorial de las diferentes capas de la pila de Ethereum y acerca de cómo encajan."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/evm/index.md b/public/content/translations/es/developers/docs/evm/index.md
index 61606902546..174470d0d71 100644
--- a/public/content/translations/es/developers/docs/evm/index.md
+++ b/public/content/translations/es/developers/docs/evm/index.md
@@ -1,6 +1,6 @@
---
-title: Máquina virtual de Ethereum (EVM)
-description: Una introducción a la máquina virtual de Ethereum y su relación con el estado, las transacciones y los contratos inteligentes.
+title: "Máquina virtual de Ethereum (EVM)"
+description: "Una introducción a la máquina virtual de Ethereum y su relación con el estado, las transacciones y los contratos inteligentes."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/evm/opcodes/index.md b/public/content/translations/es/developers/docs/evm/opcodes/index.md
index 3fd0d18d578..928fb0da98e 100644
--- a/public/content/translations/es/developers/docs/evm/opcodes/index.md
+++ b/public/content/translations/es/developers/docs/evm/opcodes/index.md
@@ -1,6 +1,6 @@
---
title: Opcodes para la EVM
-description: Una lista de todos los opcodes disponibles para la máquina virtual Ethereum.
+description: "Una lista de todos los opcodes disponibles para la máquina virtual Ethereum."
lang: es
---
@@ -84,7 +84,7 @@ Para las operaciones con costes de gas dinámicos, consulte [gas.md](https://git
| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | leer palabra del almacenamiento | |
| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | escribir palabra en el almacenamiento | |
| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` indica que a `pc` solo se le asigna un valor si `dst` es un destino de salto válido | |
-| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ?` dst : $pc + 1\` | |
+| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ?` dst : $pc + 1` | |
| 58 | PC | 2 | `.` | `$pc` | | contador de programa | |
| 59 | MSIZE | 2 | `.` | `len(mem)` | | tamaño de la memoria en el contexto de ejecución actual, en bytes | |
| 5A | GAS | 2 | `.` | `gasRemaining` | | | |
diff --git a/public/content/translations/es/developers/docs/gas/index.md b/public/content/translations/es/developers/docs/gas/index.md
index 96de4501583..886084f0008 100644
--- a/public/content/translations/es/developers/docs/gas/index.md
+++ b/public/content/translations/es/developers/docs/gas/index.md
@@ -1,7 +1,7 @@
---
title: Gas y tarifas
metaTitle: "Gas y tarifas de Ethereum: visión técnica"
-description: Conozca las comisiones de gas en Ethereum, cómo se calculan y su papel en la seguridad de la red y el procesamiento de transacciones.
+description: "Conozca las comisiones de gas en Ethereum, cómo se calculan y su papel en la seguridad de la red y el procesamiento de transacciones."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/ides/index.md b/public/content/translations/es/developers/docs/ides/index.md
index 4b8d5b3d8f0..9f50812a4a3 100644
--- a/public/content/translations/es/developers/docs/ides/index.md
+++ b/public/content/translations/es/developers/docs/ides/index.md
@@ -1,6 +1,6 @@
---
title: Entornos de desarrollo integrados (IDE)
-description: Conozca más a fondo los IDE basados en la web y de escritorio para el desarrollo en Ethereum, incluidos Remix, VS Code y plugins populares.
+description: "Conozca más a fondo los IDE basados en la web y de escritorio para el desarrollo en Ethereum, incluidos Remix, VS Code y plugins populares."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/index.md b/public/content/translations/es/developers/docs/index.md
index 6ded456e182..70bfcd10743 100644
--- a/public/content/translations/es/developers/docs/index.md
+++ b/public/content/translations/es/developers/docs/index.md
@@ -1,6 +1,6 @@
---
-title: Documentación de desarrollo de Ethereum
-description: Introducción a la documentación para desarrolladores de ethereum.org.
+title: "Documentación de desarrollo de Ethereum"
+description: "Introducción a la documentación para desarrolladores de ethereum.org."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/intro-to-ether/index.md b/public/content/translations/es/developers/docs/intro-to-ether/index.md
index d1642128da6..a9b6e5e3145 100644
--- a/public/content/translations/es/developers/docs/intro-to-ether/index.md
+++ b/public/content/translations/es/developers/docs/intro-to-ether/index.md
@@ -1,6 +1,6 @@
---
-title: Introducción técnica al ether
-description: Una introducción para desarrolladores a la criptomoneda ethereum
+title: "Introducción técnica al ether"
+description: "Una introducción para desarrolladores a la criptomoneda ethereum"
lang: es
---
diff --git a/public/content/translations/es/developers/docs/intro-to-ethereum/index.md b/public/content/translations/es/developers/docs/intro-to-ethereum/index.md
index 53887353519..2b0e1f70bde 100644
--- a/public/content/translations/es/developers/docs/intro-to-ethereum/index.md
+++ b/public/content/translations/es/developers/docs/intro-to-ethereum/index.md
@@ -1,6 +1,6 @@
---
-title: Introducción técnica a Ethereum
-description: Una introducción a los conceptos principales de Ethereum para los desarrolladores de DApps.
+title: "Introducción técnica a Ethereum"
+description: "Una introducción a los conceptos principales de Ethereum para los desarrolladores de DApps."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/layer-2-scaling/index.md b/public/content/translations/es/developers/docs/layer-2-scaling/index.md
index b93031cfffe..3682ecda5f7 100644
--- a/public/content/translations/es/developers/docs/layer-2-scaling/index.md
+++ b/public/content/translations/es/developers/docs/layer-2-scaling/index.md
@@ -1,6 +1,6 @@
---
title: Escalado de capa 2
-description: Una introducción a las diferentes opciones de escalado, que desarrolla actualmente la comunidad de Ethereum.
+description: "Una introducción a las diferentes opciones de escalado, que desarrolla actualmente la comunidad de Ethereum."
lang: es
incomplete: true
sidebarDepth: 3
diff --git a/public/content/translations/es/developers/docs/mev/index.md b/public/content/translations/es/developers/docs/mev/index.md
index 276544d7286..f56a0fd96d5 100644
--- a/public/content/translations/es/developers/docs/mev/index.md
+++ b/public/content/translations/es/developers/docs/mev/index.md
@@ -1,6 +1,6 @@
---
-title: Valor máximo extraíble (MEV)
-description: Introducción al valor máximo extraíble (MEV)
+title: "Valor máximo extraíble (MEV)"
+description: "Introducción al valor máximo extraíble (MEV)"
lang: es
---
diff --git a/public/content/translations/es/developers/docs/networking-layer/index.md b/public/content/translations/es/developers/docs/networking-layer/index.md
index e45c894a1fb..4cdb390c500 100644
--- a/public/content/translations/es/developers/docs/networking-layer/index.md
+++ b/public/content/translations/es/developers/docs/networking-layer/index.md
@@ -1,6 +1,6 @@
---
title: Capa de red
-description: Introducción a la capa de red de Ethereum.
+description: "Introducción a la capa de red de Ethereum."
lang: es
sidebarDepth: 2
---
diff --git a/public/content/translations/es/developers/docs/networking-layer/network-addresses/index.md b/public/content/translations/es/developers/docs/networking-layer/network-addresses/index.md
index e567cfe10b0..8e7ee779655 100644
--- a/public/content/translations/es/developers/docs/networking-layer/network-addresses/index.md
+++ b/public/content/translations/es/developers/docs/networking-layer/network-addresses/index.md
@@ -1,6 +1,6 @@
---
-title: Dirección de la red
-description: Introducción a las direcciones de red.
+title: "Dirección de la red"
+description: "Introducción a las direcciones de red."
lang: es
sidebarDepth: 2
---
diff --git a/public/content/translations/es/developers/docs/networking-layer/portal-network/index.md b/public/content/translations/es/developers/docs/networking-layer/portal-network/index.md
index a70b81e9e2b..7150a277737 100644
--- a/public/content/translations/es/developers/docs/networking-layer/portal-network/index.md
+++ b/public/content/translations/es/developers/docs/networking-layer/portal-network/index.md
@@ -1,6 +1,6 @@
---
title: Portal Network
-description: Una visión general de Portal Network, una red en desarrollo diseñada para apoyar a clientes de bajos recursos.
+description: "Una visión general de Portal Network, una red en desarrollo diseñada para apoyar a clientes de bajos recursos."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/networks/index.md b/public/content/translations/es/developers/docs/networks/index.md
index d60e6d42212..e0eb58475de 100644
--- a/public/content/translations/es/developers/docs/networks/index.md
+++ b/public/content/translations/es/developers/docs/networks/index.md
@@ -1,6 +1,6 @@
---
title: Redes
-description: Una descripción general de las redes de Ethereum, así como de dónde obtener ether (ETH) en la red de prueba y cómo probar tu aplicación.
+description: "Una descripción general de las redes de Ethereum, así como de dónde obtener ether (ETH) en la red de prueba y cómo probar tu aplicación."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/nodes-and-clients/archive-nodes/index.md b/public/content/translations/es/developers/docs/nodes-and-clients/archive-nodes/index.md
index 99f6a12701a..03bbd546278 100644
--- a/public/content/translations/es/developers/docs/nodes-and-clients/archive-nodes/index.md
+++ b/public/content/translations/es/developers/docs/nodes-and-clients/archive-nodes/index.md
@@ -1,6 +1,6 @@
---
title: Nodo de archivo Ethereum
-description: Una visión general de los nodos de archivo
+description: "Una visión general de los nodos de archivo"
lang: es
sidebarDepth: 2
---
diff --git a/public/content/translations/es/developers/docs/nodes-and-clients/bootnodes/index.md b/public/content/translations/es/developers/docs/nodes-and-clients/bootnodes/index.md
index de56807c8b5..a999c9e14f5 100644
--- a/public/content/translations/es/developers/docs/nodes-and-clients/bootnodes/index.md
+++ b/public/content/translations/es/developers/docs/nodes-and-clients/bootnodes/index.md
@@ -1,6 +1,6 @@
---
-title: Introducción a los nodos de arranque de Ethereum
-description: La información básica que necesita para entender los nodos de arranque
+title: "Introducción a los nodos de arranque de Ethereum"
+description: "La información básica que necesita para entender los nodos de arranque"
lang: es
---
diff --git a/public/content/translations/es/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/translations/es/developers/docs/nodes-and-clients/client-diversity/index.md
index 2b61ff26d2f..403faf5f073 100644
--- a/public/content/translations/es/developers/docs/nodes-and-clients/client-diversity/index.md
+++ b/public/content/translations/es/developers/docs/nodes-and-clients/client-diversity/index.md
@@ -1,6 +1,6 @@
---
title: Diversidad de clientes
-description: Explicación detallada sobre la importancia de la diversidad de clientes en Ethereum.
+description: "Explicación detallada sobre la importancia de la diversidad de clientes en Ethereum."
lang: es
sidebarDepth: 2
---
diff --git a/public/content/translations/es/developers/docs/nodes-and-clients/index.md b/public/content/translations/es/developers/docs/nodes-and-clients/index.md
index 318709b1991..cb9ebf8fe27 100644
--- a/public/content/translations/es/developers/docs/nodes-and-clients/index.md
+++ b/public/content/translations/es/developers/docs/nodes-and-clients/index.md
@@ -1,6 +1,6 @@
---
title: Nodos y clientes
-description: Una visión general de los nodos de Ethereum y del software del cliente, además de cómo configurar un nodo y por qué deberías hacerlo.
+description: "Una visión general de los nodos de Ethereum y del software del cliente, además de cómo configurar un nodo y por qué deberías hacerlo."
lang: es
sidebarDepth: 2
---
diff --git a/public/content/translations/es/developers/docs/nodes-and-clients/light-clients/index.md b/public/content/translations/es/developers/docs/nodes-and-clients/light-clients/index.md
index 6d1f3f42627..983799cca2f 100644
--- a/public/content/translations/es/developers/docs/nodes-and-clients/light-clients/index.md
+++ b/public/content/translations/es/developers/docs/nodes-and-clients/light-clients/index.md
@@ -1,6 +1,6 @@
---
title: Clientes ligeros
-description: Introducción a los clientes ligeros de Ethereum.
+description: "Introducción a los clientes ligeros de Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/nodes-and-clients/node-architecture/index.md b/public/content/translations/es/developers/docs/nodes-and-clients/node-architecture/index.md
index 5605b2276eb..ca271a10e30 100644
--- a/public/content/translations/es/developers/docs/nodes-and-clients/node-architecture/index.md
+++ b/public/content/translations/es/developers/docs/nodes-and-clients/node-architecture/index.md
@@ -1,6 +1,6 @@
---
title: Arquitectura del nodo
-description: Introducción al proceso de organización de los nodos de Ethereum.
+description: "Introducción al proceso de organización de los nodos de Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/public/content/translations/es/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
index f433b7df88f..93ff5cf7cc6 100644
--- a/public/content/translations/es/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
+++ b/public/content/translations/es/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
@@ -1,6 +1,6 @@
---
title: Nodos como servicio
-description: Una visión general para principiantes de los servicios de nodos, los pros y los contras, y los proveedores populares.
+description: "Una visión general para principiantes de los servicios de nodos, los pros y los contras, y los proveedores populares."
lang: es
sidebarDepth: 2
---
diff --git a/public/content/translations/es/developers/docs/nodes-and-clients/run-a-node/index.md b/public/content/translations/es/developers/docs/nodes-and-clients/run-a-node/index.md
index bd118475a62..29a761529e1 100644
--- a/public/content/translations/es/developers/docs/nodes-and-clients/run-a-node/index.md
+++ b/public/content/translations/es/developers/docs/nodes-and-clients/run-a-node/index.md
@@ -1,6 +1,6 @@
---
title: Ejecute su propio nodo de Ethereum
-description: Introducción general para ejecutar su propia instancia de un cliente de Ethereum.
+description: "Introducción general para ejecutar su propia instancia de un cliente de Ethereum."
lang: es
sidebarDepth: 2
---
@@ -236,7 +236,7 @@ Esta sección le guiará y ayudará en sus comienzos con los clientes de ejecuci
Tenga en cuenta que este es sólo un ejemplo básico, todas las demás configuraciones se establecerán por defecto. Preste atención a la documentación de cada cliente para conocer los valores por defecto, ajustes y características. En la documentación del cliente específico, podrá consultar más características, como por ejemplo para validadores de ejecución, supervisión, etc.
-> Tenga en cuenta que las barras invertidas `\` en los ejemplos son solo para fines de formato; las banderas de configuración se pueden definir en una sola línea.
+> Tenga en cuenta que las barras invertidas `` en los ejemplos son solo para fines de formato; las banderas de configuración se pueden definir en una sola línea.
##### Cómo ejecutar Besu
diff --git a/public/content/translations/es/developers/docs/oracles/index.md b/public/content/translations/es/developers/docs/oracles/index.md
index ca45cae1cd3..db32244ef00 100644
--- a/public/content/translations/es/developers/docs/oracles/index.md
+++ b/public/content/translations/es/developers/docs/oracles/index.md
@@ -1,6 +1,6 @@
---
title: Oracles
-description: Los oráculos proporcionan a los contratos inteligentes de Ethereum acceso a los datos del mundo real para aprovechar más casos de uso y otorgar mayor valor a los usuarios.
+description: "Los oráculos proporcionan a los contratos inteligentes de Ethereum acceso a los datos del mundo real para aprovechar más casos de uso y otorgar mayor valor a los usuarios."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/programming-languages/delphi/index.md b/public/content/translations/es/developers/docs/programming-languages/delphi/index.md
index 4d208d071a4..4671fb0eec9 100644
--- a/public/content/translations/es/developers/docs/programming-languages/delphi/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/delphi/index.md
@@ -1,6 +1,6 @@
---
title: Ethereum para desarrolladores de Delphi
-description: Aprende cómo desarrollar para Ethereum usando el lenguaje de programación Delphi
+description: "Aprende cómo desarrollar para Ethereum usando el lenguaje de programación Delphi"
lang: es
incomplete: true
---
diff --git a/public/content/translations/es/developers/docs/programming-languages/dot-net/index.md b/public/content/translations/es/developers/docs/programming-languages/dot-net/index.md
index 07185198cfb..c65aac7aa4d 100644
--- a/public/content/translations/es/developers/docs/programming-languages/dot-net/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/dot-net/index.md
@@ -1,6 +1,6 @@
---
title: Ethereum para desarrolladores de .NET
-description: Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en .NET
+description: "Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en .NET"
lang: es
incomplete: true
---
diff --git a/public/content/translations/es/developers/docs/programming-languages/index.md b/public/content/translations/es/developers/docs/programming-languages/index.md
index 1247edd343a..0a8cdf9f134 100644
--- a/public/content/translations/es/developers/docs/programming-languages/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/index.md
@@ -1,6 +1,6 @@
---
-title: Lenguajes de programación
-description: Descubre recursos de desarrollo en Ethereum para varios lenguajes de programación, incluidos JavaScript, Python, Go, Rust y más.
+title: "Lenguajes de programación"
+description: "Descubre recursos de desarrollo en Ethereum para varios lenguajes de programación, incluidos JavaScript, Python, Go, Rust y más."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/programming-languages/java/index.md b/public/content/translations/es/developers/docs/programming-languages/java/index.md
index 06b77139d14..493408f621b 100644
--- a/public/content/translations/es/developers/docs/programming-languages/java/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/java/index.md
@@ -1,6 +1,6 @@
---
title: Ethereum para desarrolladores de Java
-description: Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Java
+description: "Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Java"
lang: es
incomplete: true
---
diff --git a/public/content/translations/es/developers/docs/programming-languages/javascript/index.md b/public/content/translations/es/developers/docs/programming-languages/javascript/index.md
index 422ebaad1e8..822523f4064 100644
--- a/public/content/translations/es/developers/docs/programming-languages/javascript/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/javascript/index.md
@@ -1,6 +1,6 @@
---
title: Ethereum para desarrolladores de JavaScript
-description: Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en JavaScript.
+description: "Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en JavaScript."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/programming-languages/python/index.md b/public/content/translations/es/developers/docs/programming-languages/python/index.md
index ce3083f7a54..b7946856c3a 100644
--- a/public/content/translations/es/developers/docs/programming-languages/python/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/python/index.md
@@ -1,6 +1,6 @@
---
title: Ethereum para desarrolladores de Python
-description: Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Python
+description: "Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Python"
lang: es
incomplete: true
---
diff --git a/public/content/translations/es/developers/docs/programming-languages/ruby/index.md b/public/content/translations/es/developers/docs/programming-languages/ruby/index.md
index 0afb2e9f53e..1e3bcdea664 100644
--- a/public/content/translations/es/developers/docs/programming-languages/ruby/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/ruby/index.md
@@ -1,6 +1,6 @@
---
title: Ethereum para desarrolladores de Ruby
-description: Aprenda cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Rust.
+description: "Aprenda cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Rust."
lang: es
incomplete: false
---
diff --git a/public/content/translations/es/developers/docs/programming-languages/rust/index.md b/public/content/translations/es/developers/docs/programming-languages/rust/index.md
index 706c475fecf..5df3ffa2d1e 100644
--- a/public/content/translations/es/developers/docs/programming-languages/rust/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/rust/index.md
@@ -1,6 +1,6 @@
---
title: Ethereum para desarrolladores de Rust
-description: Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Rust
+description: "Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Rust"
lang: es
incomplete: true
---
diff --git a/public/content/translations/es/developers/docs/scaling/index.md b/public/content/translations/es/developers/docs/scaling/index.md
index 3287980f966..ef64951ae22 100644
--- a/public/content/translations/es/developers/docs/scaling/index.md
+++ b/public/content/translations/es/developers/docs/scaling/index.md
@@ -1,6 +1,6 @@
---
title: Escalabilidad
-description: Una introducción a las diferentes opciones de escalabilidad que actualmente está desarrollando la comunidad de Ethereum.
+description: "Una introducción a las diferentes opciones de escalabilidad que actualmente está desarrollando la comunidad de Ethereum."
lang: es
sidebarDepth: 3
---
diff --git a/public/content/translations/es/developers/docs/scaling/plasma/index.md b/public/content/translations/es/developers/docs/scaling/plasma/index.md
index 320ccc717c1..70aa0a44e5a 100644
--- a/public/content/translations/es/developers/docs/scaling/plasma/index.md
+++ b/public/content/translations/es/developers/docs/scaling/plasma/index.md
@@ -1,6 +1,6 @@
---
title: Cadenas de Plasma
-description: Introducción a las cadenas de Plasma como solución de escalado actualmente utilizada por la comnunidad de Ethereum.
+description: "Introducción a las cadenas de Plasma como solución de escalado actualmente utilizada por la comnunidad de Ethereum."
lang: es
incomplete: true
sidebarDepth: 3
diff --git a/public/content/translations/es/developers/docs/scaling/sidechains/index.md b/public/content/translations/es/developers/docs/scaling/sidechains/index.md
index 57cb46ed60a..bda54053327 100644
--- a/public/content/translations/es/developers/docs/scaling/sidechains/index.md
+++ b/public/content/translations/es/developers/docs/scaling/sidechains/index.md
@@ -1,6 +1,6 @@
---
title: Sidechains
-description: Introducción a las cadenas laterales como solución de escalado actualmente utilizada por la comunidad de Ethereum.
+description: "Introducción a las cadenas laterales como solución de escalado actualmente utilizada por la comunidad de Ethereum."
lang: es
sidebarDepth: 3
---
diff --git a/public/content/translations/es/developers/docs/scaling/state-channels/index.md b/public/content/translations/es/developers/docs/scaling/state-channels/index.md
index e6f392bbefe..bbd4c4cf0be 100644
--- a/public/content/translations/es/developers/docs/scaling/state-channels/index.md
+++ b/public/content/translations/es/developers/docs/scaling/state-channels/index.md
@@ -1,6 +1,6 @@
---
title: Canales de estado
-description: Introducción a los canales de estado y a los canales de pago como solución de escalabilidad actualmente utilizada por la comunidad de Ethereum.
+description: "Introducción a los canales de estado y a los canales de pago como solución de escalabilidad actualmente utilizada por la comunidad de Ethereum."
lang: es
sidebarDepth: 3
---
diff --git a/public/content/translations/es/developers/docs/scaling/validium/index.md b/public/content/translations/es/developers/docs/scaling/validium/index.md
index cbedf7b5ea8..308b35da1ff 100644
--- a/public/content/translations/es/developers/docs/scaling/validium/index.md
+++ b/public/content/translations/es/developers/docs/scaling/validium/index.md
@@ -1,6 +1,6 @@
---
title: Validium
-description: Introducción a Validium como solución de escalado utilizada actualmente por la comnunidad de Ethereum.
+description: "Introducción a Validium como solución de escalado utilizada actualmente por la comnunidad de Ethereum."
lang: es
sidebarDepth: 3
---
diff --git a/public/content/translations/es/developers/docs/smart-contracts/anatomy/index.md b/public/content/translations/es/developers/docs/smart-contracts/anatomy/index.md
index 018042025e0..467292e10bc 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/anatomy/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/anatomy/index.md
@@ -1,5 +1,5 @@
---
-title: Anatomía de los contratos inteligentes
+title: "Anatomía de los contratos inteligentes"
description: "Una mirada en profundidad a la anatomía de un contacto inteligente: Sus funciones, datos y variables."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/smart-contracts/compiling/index.md b/public/content/translations/es/developers/docs/smart-contracts/compiling/index.md
index 6c5bea25152..789432dca57 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/compiling/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/compiling/index.md
@@ -1,6 +1,6 @@
---
-title: Compilación de contratos inteligentes
-description: Explicación de por qué necesita compilar contratos inteligentes y qué es lo que realmente hace la compilación.
+title: "Compilación de contratos inteligentes"
+description: "Explicación de por qué necesita compilar contratos inteligentes y qué es lo que realmente hace la compilación."
lang: es
incomplete: true
---
diff --git a/public/content/translations/es/developers/docs/smart-contracts/composability/index.md b/public/content/translations/es/developers/docs/smart-contracts/composability/index.md
index 5713cab34e8..b35fbc562b9 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/composability/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/composability/index.md
@@ -1,6 +1,6 @@
---
title: Componibilidad de los contratos inteligentes
-description: Descubra cómo los contratos inteligentes pueden combinarse al igual que los bloques de Lego para construir DApps complejas reutilizando componentes existentes.
+description: "Descubra cómo los contratos inteligentes pueden combinarse al igual que los bloques de Lego para construir DApps complejas reutilizando componentes existentes."
lang: es
incomplete: true
---
diff --git a/public/content/translations/es/developers/docs/smart-contracts/deploying/index.md b/public/content/translations/es/developers/docs/smart-contracts/deploying/index.md
index da44d533bce..687f2ebbfd2 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/deploying/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/deploying/index.md
@@ -1,6 +1,6 @@
---
-title: Implementación de contratos inteligentes
-description: Aprenda a desplegar contratos inteligentes en redes de Ethereum, incluidos los requisitos previos, las herramientas y los pasos de implementación.
+title: "Implementación de contratos inteligentes"
+description: "Aprenda a desplegar contratos inteligentes en redes de Ethereum, incluidos los requisitos previos, las herramientas y los pasos de implementación."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/smart-contracts/formal-verification/index.md b/public/content/translations/es/developers/docs/smart-contracts/formal-verification/index.md
index ed4256733e0..6acd8b78849 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/formal-verification/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/formal-verification/index.md
@@ -1,6 +1,6 @@
---
-title: Verificación formal de contratos inteligentes
-description: Visión general de la verificación formal de los contratos inteligentes de Ethereum
+title: "Verificación formal de contratos inteligentes"
+description: "Visión general de la verificación formal de los contratos inteligentes de Ethereum"
lang: es
---
diff --git a/public/content/translations/es/developers/docs/smart-contracts/index.md b/public/content/translations/es/developers/docs/smart-contracts/index.md
index 83ae19da9a1..08d28d67ea9 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/index.md
@@ -1,6 +1,6 @@
---
-title: Introducción a los contratos inteligentes
-description: Una descripción de contratos inteligentes, que se centra en sus características y limitaciones únicas.
+title: "Introducción a los contratos inteligentes"
+description: "Una descripción de contratos inteligentes, que se centra en sus características y limitaciones únicas."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/smart-contracts/libraries/index.md b/public/content/translations/es/developers/docs/smart-contracts/libraries/index.md
index f026ef41151..41251503bbd 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/libraries/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/libraries/index.md
@@ -1,6 +1,6 @@
---
-title: Librerías de contratos inteligentes
-description: Descubra bibliotecas reutilizables de contratos inteligentes y bloques de construcción para acelerar sus proyectos de desarrollo en Ethereum.
+title: "Librerías de contratos inteligentes"
+description: "Descubra bibliotecas reutilizables de contratos inteligentes y bloques de construcción para acelerar sus proyectos de desarrollo en Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/smart-contracts/naming/index.md b/public/content/translations/es/developers/docs/smart-contracts/naming/index.md
index 9b534e887ea..785b553bf57 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/naming/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/naming/index.md
@@ -1,6 +1,6 @@
---
title: Nomenclatura de contratos inteligentes
-description: Mejores prácticas para nombrar contratos inteligentes de Ethereum con ENS
+description: "Mejores prácticas para nombrar contratos inteligentes de Ethereum con ENS"
lang: es
---
diff --git a/public/content/translations/es/developers/docs/smart-contracts/testing/index.md b/public/content/translations/es/developers/docs/smart-contracts/testing/index.md
index fd39b5bfb95..01a6643af77 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/testing/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/testing/index.md
@@ -1,6 +1,6 @@
---
title: Prueba de contratos inteligentes
-description: Descripción general de las técnicas y consideraciones para probar contratos inteligentes de Ethereum.
+description: "Descripción general de las técnicas y consideraciones para probar contratos inteligentes de Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/smart-contracts/upgrading/index.md b/public/content/translations/es/developers/docs/smart-contracts/upgrading/index.md
index 7dc95876b0b..4f11f6e1d30 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/upgrading/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/upgrading/index.md
@@ -1,6 +1,6 @@
---
title: Mejora de los contratos inteligentes
-description: Descripción general de patrones de actualización para los contratos inteligentes en Ethereum
+description: "Descripción general de patrones de actualización para los contratos inteligentes en Ethereum"
lang: es
---
diff --git a/public/content/translations/es/developers/docs/smart-contracts/verifying/index.md b/public/content/translations/es/developers/docs/smart-contracts/verifying/index.md
index 53f290a590c..4b5a00e6525 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/verifying/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/verifying/index.md
@@ -1,6 +1,6 @@
---
-title: Verificación de contratos inteligentes
-description: Descripción general de la verificación del código fuente de contratos inteligentes en Ethereum
+title: "Verificación de contratos inteligentes"
+description: "Descripción general de la verificación del código fuente de contratos inteligentes en Ethereum"
lang: es
---
diff --git a/public/content/translations/es/developers/docs/standards/index.md b/public/content/translations/es/developers/docs/standards/index.md
index 88ebd6e43f7..6391f7e3119 100644
--- a/public/content/translations/es/developers/docs/standards/index.md
+++ b/public/content/translations/es/developers/docs/standards/index.md
@@ -1,6 +1,6 @@
---
-title: Estándares de desarrollo de Ethereum
-description: Conzca los estándares de Ethereum, incluidos los EIP, los estándares de tókenes como ERC-20 y ERC-721, y las convenciones de desarrollo.
+title: "Estándares de desarrollo de Ethereum"
+description: "Conzca los estándares de Ethereum, incluidos los EIP, los estándares de tókenes como ERC-20 y ERC-721, y las convenciones de desarrollo."
lang: es
incomplete: true
---
diff --git a/public/content/translations/es/developers/docs/standards/tokens/erc-1155/index.md b/public/content/translations/es/developers/docs/standards/tokens/erc-1155/index.md
index 4eb6cd2738e..b364663a5ad 100644
--- a/public/content/translations/es/developers/docs/standards/tokens/erc-1155/index.md
+++ b/public/content/translations/es/developers/docs/standards/tokens/erc-1155/index.md
@@ -1,6 +1,6 @@
---
-title: Estándar multitoken ERC-1155
-description: Obtenga más información sobre el ERC-1155, un estándar de múltiples tokens que combina tokens fungibles y no fungibles en un único contrato.
+title: "Estándar multitoken ERC-1155"
+description: "Obtenga más información sobre el ERC-1155, un estándar de múltiples tokens que combina tokens fungibles y no fungibles en un único contrato."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/standards/tokens/erc-1363/index.md b/public/content/translations/es/developers/docs/standards/tokens/erc-1363/index.md
index bbc0ed4d774..7b732177970 100644
--- a/public/content/translations/es/developers/docs/standards/tokens/erc-1363/index.md
+++ b/public/content/translations/es/developers/docs/standards/tokens/erc-1363/index.md
@@ -1,6 +1,6 @@
---
-title: Estándar de token de pago ERC-1363
-description: ERC-1363 es una interfaz de extensión para tokens ERC-20 que permite ejecutar una lógica personalizada en un contrato receptor después de las transferencias, o en un contrato gastador después de las aprobaciones, todo dentro de una única transacción.
+title: "Estándar de token de pago ERC-1363"
+description: "ERC-1363 es una interfaz de extensión para tokens ERC-20 que permite ejecutar una lógica personalizada en un contrato receptor después de las transferencias, o en un contrato gastador después de las aprobaciones, todo dentro de una única transacción."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/standards/tokens/erc-20/index.md b/public/content/translations/es/developers/docs/standards/tokens/erc-20/index.md
index e7f8617d262..266e9af53c6 100644
--- a/public/content/translations/es/developers/docs/standards/tokens/erc-20/index.md
+++ b/public/content/translations/es/developers/docs/standards/tokens/erc-20/index.md
@@ -1,6 +1,6 @@
---
-title: Estándar de token ERC-20
-description: Familiarícese con ERC-20, el estándar para tókenes fungibles en Ethereum que permite aplicaciones de tókenes interoperables.
+title: "Estándar de token ERC-20"
+description: "Familiarícese con ERC-20, el estándar para tókenes fungibles en Ethereum que permite aplicaciones de tókenes interoperables."
lang: es
---
@@ -169,7 +169,7 @@ Cuando se envían tokens ERC-20 a un contrato inteligente que no está diseñado
Aunque este problema no se puede evitar por completo con ERC-20, hay métodos que permitirían reducir considerablemente la posibilidad de una pérdida de tókenes para el usuario final:
- El problema más común es cuando un usuario envía tokens a la propia dirección del contrato del token (p. ej., USDT depositados en la dirección del contrato del token USDT). Se recomienda restringir la función `transfer(..)` para revertir dichos intentos de transferencia. Considere agregar la comprobación `require(_to != address(this));` dentro de la implementación de la función `transfer(..)`.
-- La función `transfer(..)` por lo general no está diseñada para depositar tokens en contratos. `approve(..) y el patrón `transferFrom(..)`se utiliza para depositar tokens ERC-20 en contratos. Es posible restringir la función de transferencia para no permitir el depósito de tokens en ningún contrato con ella; sin embargo, puede romper la compatibilidad con los contratos que asumen que los tokens pueden depositarse en contratos con la función`trasnfer(..)\` (p. ej., los pools de liquidez de Uniswap).
+- La función `transfer(..)` por lo general no está diseñada para depositar tokens en contratos. `approve(..) y el patrón `transferFrom(..)`se utiliza para depositar tokens ERC-20 en contratos. Es posible restringir la función de transferencia para no permitir el depósito de tokens en ningún contrato con ella; sin embargo, puede romper la compatibilidad con los contratos que asumen que los tokens pueden depositarse en contratos con la función`trasnfer(..)` (p. ej., los pools de liquidez de Uniswap).
- Asuma siempre que los tókenes ERC-20 pueden terminar en su contrato, incluso si se supone que su contrato nunca recibirá ninguno. El destinatario no tiene manera de prevenir ni rechazar los depósitos accidentales. Se recomienda implementar una función que permita extraer tókenes ERC-20 depositados accidentalmente.
- Plantéese el uso de estándares de tokens alternativos.
diff --git a/public/content/translations/es/developers/docs/standards/tokens/erc-223/index.md b/public/content/translations/es/developers/docs/standards/tokens/erc-223/index.md
index 1e2c07dde4d..648866b1370 100644
--- a/public/content/translations/es/developers/docs/standards/tokens/erc-223/index.md
+++ b/public/content/translations/es/developers/docs/standards/tokens/erc-223/index.md
@@ -1,6 +1,6 @@
---
-title: Estándar de tokens ERC-223
-description: Descripción general del estándar de tokens fungibles ERC-223, cómo funciona y una comparación con ERC-20.
+title: "Estándar de tokens ERC-223"
+description: "Descripción general del estándar de tokens fungibles ERC-223, cómo funciona y una comparación con ERC-20."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md b/public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md
index e298d8c1ddb..823a61e1e3f 100644
--- a/public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md
+++ b/public/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md
@@ -1,6 +1,6 @@
---
-title: Estándar de bóveda tokenizada ERC-4626
-description: Un estándar para las bóvedas de rendimiento.
+title: "Estándar de bóveda tokenizada ERC-4626"
+description: "Un estándar para las bóvedas de rendimiento."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/standards/tokens/erc-721/index.md b/public/content/translations/es/developers/docs/standards/tokens/erc-721/index.md
index bbbc84e0e9c..370f3eaeaef 100644
--- a/public/content/translations/es/developers/docs/standards/tokens/erc-721/index.md
+++ b/public/content/translations/es/developers/docs/standards/tokens/erc-721/index.md
@@ -1,6 +1,6 @@
---
-title: Estándar de token no fungible ERC-721
-description: Familiarícese con ERC-721, el estándar para tókenes no fungibles (NFT) que representan activos digitales únicos en Ethereum.
+title: "Estándar de token no fungible ERC-721"
+description: "Familiarícese con ERC-721, el estándar para tókenes no fungibles (NFT) que representan activos digitales únicos en Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/standards/tokens/erc-777/index.md b/public/content/translations/es/developers/docs/standards/tokens/erc-777/index.md
index e93d3963f16..895047f6912 100644
--- a/public/content/translations/es/developers/docs/standards/tokens/erc-777/index.md
+++ b/public/content/translations/es/developers/docs/standards/tokens/erc-777/index.md
@@ -1,6 +1,6 @@
---
-title: Estándar de token ERC-777
-description: Familiarícese con ERC-777, un estándar mejorado de tókenes fungibles con hooks, aunque por seguridad se recomienda ERC-20.
+title: "Estándar de token ERC-777"
+description: "Familiarícese con ERC-777, un estándar mejorado de tókenes fungibles con hooks, aunque por seguridad se recomienda ERC-20."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/standards/tokens/index.md b/public/content/translations/es/developers/docs/standards/tokens/index.md
index e1e70b54ac7..990ab896308 100644
--- a/public/content/translations/es/developers/docs/standards/tokens/index.md
+++ b/public/content/translations/es/developers/docs/standards/tokens/index.md
@@ -1,6 +1,6 @@
---
-title: Estándares de tokens
-description: Explore los estándares de tókenes de Ethereum, incluidos ERC-20, ERC-721 y ERC-1155, para tókenes fungibles y no fungibles.
+title: "Estándares de tokens"
+description: "Explore los estándares de tókenes de Ethereum, incluidos ERC-20, ERC-721 y ERC-1155, para tókenes fungibles y no fungibles."
lang: es
incomplete: true
---
diff --git a/public/content/translations/es/developers/docs/storage/index.md b/public/content/translations/es/developers/docs/storage/index.md
index ec6f424cfaa..41cc0249c20 100644
--- a/public/content/translations/es/developers/docs/storage/index.md
+++ b/public/content/translations/es/developers/docs/storage/index.md
@@ -1,6 +1,6 @@
---
title: Almacenamiento descentralizado
-description: Resumen de qué es el almacenamiento descentralizado y las herramientas disponibles para integrarlo en una dapp.
+description: "Resumen de qué es el almacenamiento descentralizado y las herramientas disponibles para integrarlo en una dapp."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/web2-vs-web3/index.md b/public/content/translations/es/developers/docs/web2-vs-web3/index.md
index 237a82640aa..bcdf3c12ccf 100644
--- a/public/content/translations/es/developers/docs/web2-vs-web3/index.md
+++ b/public/content/translations/es/developers/docs/web2-vs-web3/index.md
@@ -1,6 +1,6 @@
---
title: Web2 versus Web3
-description: Compare servicios centralizados de Web2 con aplicaciones Web3 descentralizadas construidas sobre la tecnología de cadena de bloques de Ethereum.
+description: "Compare servicios centralizados de Web2 con aplicaciones Web3 descentralizadas construidas sobre la tecnología de cadena de bloques de Ethereum."
lang: es
---
diff --git a/public/content/translations/es/developers/docs/wrapped-eth/index.md b/public/content/translations/es/developers/docs/wrapped-eth/index.md
index d1c49ab46c0..ac24748281a 100644
--- a/public/content/translations/es/developers/docs/wrapped-eth/index.md
+++ b/public/content/translations/es/developers/docs/wrapped-eth/index.md
@@ -1,6 +1,6 @@
---
-title: ¿Qué es Wrapped Ether (WETH)?
-description: Introducción a Wrapped Ether (WETH), un wrapper compatible con ERC20 para Ether (ETH)
+title: "¿Qué es Wrapped Ether (WETH)?"
+description: "Introducción a Wrapped Ether (WETH), un wrapper compatible con ERC20 para Ether (ETH)"
lang: es
---
@@ -35,19 +35,16 @@ Puede unwrappear (desenvolver) WETH por ETH utilizando el contrato inteligente d
Usted paga tasas de gas para wrappear o unwrappear ETH utilizando el contrato WETH.
-
En general, WETH se considera seguro porque se basa en un contrato inteligente sencillo y de eficacia probada. El contrato WETH también ha sido verificado formalmente, lo cual representa el estándar de seguridad más alto para contratos inteligentes en Ethereum.
-
Además de la [implementación canónica de WETH](https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2) descrita en esta página, existen otras variantes. Pueden ser tokens personalizados creados por desarrolladores de aplicaciones o versiones emitidas en otras cadenas de bloques, y pueden comportarse de forma diferente o tener propiedades de seguridad distintas. **Compruebe siempre la información del token para saber con qué implementación de WETH está interactuando.**
-
@@ -55,7 +52,6 @@ Además de la [implementación canónica de WETH](https://etherscan.io/token/0xc
- [Red principal de Ethereum](https://etherscan.io/token/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)
- [Arbitrum](https://arbiscan.io/token/0x82af49447d8a07e3bd95bd0d56f35241523fbab1)
- [Optimism](https://optimistic.etherscan.io/token/0x4200000000000000000000000000000000000006)
-
## Lecturas adicionales {#further-reading}
diff --git a/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
index 8d49e1afc7b..b8c0be6ea30 100644
--- a/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
+++ b/public/content/translations/es/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
@@ -1,12 +1,12 @@
---
-title: Introducción a Ethereum para desarrolladores de Python, parte 1
-description: Una introducción al desarrollo de Ethereum, especialmente útil para quienes tienen conocimientos del lenguaje de programación Python
+title: "Introducción a Ethereum para desarrolladores de Python, parte 1"
+description: "Una introducción al desarrollo de Ethereum, especialmente útil para quienes tienen conocimientos del lenguaje de programación Python"
author: Marc Garreau
lang: es
tags: [ "python", "web3.py" ]
skill: beginner
published: 2020-09-08
-source: Encantadores de serpientes
+source: Snake charmers
sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/
---
diff --git a/public/content/translations/es/developers/tutorials/all-you-can-cache/index.md b/public/content/translations/es/developers/tutorials/all-you-can-cache/index.md
index 443374b99e7..4807d00b9ad 100644
--- a/public/content/translations/es/developers/tutorials/all-you-can-cache/index.md
+++ b/public/content/translations/es/developers/tutorials/all-you-can-cache/index.md
@@ -1,6 +1,6 @@
---
title: "Todo lo que puede almacenar en caché"
-description: Aprenda a crear y usar un contrato de almacenamiento en caché para transacciones de rollup más baratas.
+description: "Aprenda a crear y usar un contrato de almacenamiento en caché para transacciones de rollup más baratas."
author: Ori Pomerantz
tags: [ "capa 2", "almacenamiento en caché", "almacenamiento" ]
skill: intermediate
@@ -717,7 +717,7 @@ La función de lectura es una `view`, por lo que no requiere una transacción y
worm.writeEntry(0xDEAD, 0xBEEF);
```
-[Esto (`vm.expectRevert`)](https://book.getfoundry.sh/cheatcodes/expect-revert#expectrevert) es cómo especificamos en una prueba de Foundry que la siguiente llamada debe fallar, y la razón informada del fallo. Esto se aplica cuando usamos la sintaxis `.() en lugar de construir los calldata y llamar al contrato usando la interfaz de bajo nivel (`.call()\`, etc.).
+[Esto (`vm.expectRevert`)](https://book.getfoundry.sh/cheatcodes/expect-revert#expectrevert) es cómo especificamos en una prueba de Foundry que la siguiente llamada debe fallar, y la razón informada del fallo. Esto se aplica cuando usamos la sintaxis `.()` en lugar de construir los calldata y llamar al contrato usando la interfaz de bajo nivel (`.call()`, etc.).
```solidity
function testReadWriteCached() public {
diff --git a/public/content/translations/es/developers/tutorials/app-plasma/index.md b/public/content/translations/es/developers/tutorials/app-plasma/index.md
index 104a9e43c47..c81a76d876a 100644
--- a/public/content/translations/es/developers/tutorials/app-plasma/index.md
+++ b/public/content/translations/es/developers/tutorials/app-plasma/index.md
@@ -1,6 +1,6 @@
---
-title: Escribir un plasma específico para una aplicación que preserve la privacidad
-description: En este tutorial, construimos un banco semisecreto para depósitos. El banco es un componente centralizado; conoce el saldo de cada usuario. Sin embargo, esta información no se almacena en la cadena. En su lugar, el banco publica un hash del estado. Cada vez que ocurre una transacción, el banco publica el nuevo hash, junto con una prueba de conocimiento cero de que tiene una transacción firmada que cambia el estado del hash por el nuevo. Después de leer este tutorial, entenderá no solo cómo utilizar las pruebas de conocimiento cero, sino también por qué se utilizan y cómo hacerlo de forma segura.
+title: "Escribir un plasma específico para una aplicación que preserve la privacidad"
+description: "En este tutorial, construimos un banco semisecreto para depósitos. El banco es un componente centralizado; conoce el saldo de cada usuario. Sin embargo, esta información no se almacena en la cadena. En su lugar, el banco publica un hash del estado. Cada vez que ocurre una transacción, el banco publica el nuevo hash, junto con una prueba de conocimiento cero de que tiene una transacción firmada que cambia el estado del hash por el nuevo. Después de leer este tutorial, entenderá no solo cómo utilizar las pruebas de conocimiento cero, sino también por qué se utilizan y cómo hacerlo de forma segura."
author: Ori Pomerantz
tags:
[
@@ -11,7 +11,7 @@ tags:
]
skill: advanced
lang: es
-published: 15-10-2025
+published: 2025-10-15
---
## Introducción {#introduction}
diff --git a/public/content/translations/es/developers/tutorials/calling-a-smart-contract-from-javascript/index.md b/public/content/translations/es/developers/tutorials/calling-a-smart-contract-from-javascript/index.md
index 0574d281848..b782f9644da 100644
--- a/public/content/translations/es/developers/tutorials/calling-a-smart-contract-from-javascript/index.md
+++ b/public/content/translations/es/developers/tutorials/calling-a-smart-contract-from-javascript/index.md
@@ -1,6 +1,6 @@
---
title: Llamar a un contrato inteligente desde JavaScript
-description: Cómo llamar a una función de un contrato inteligente desde JavaScript usando un ejemplo del token Dai
+description: "Cómo llamar a una función de un contrato inteligente desde JavaScript usando un ejemplo del token Dai"
author: jdourlens
tags: [ "transacciones", "frontend", "JavaScript", "web3.js" ]
skill: beginner
diff --git a/public/content/translations/es/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md b/public/content/translations/es/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md
index 852af8d25ce..dcf32f263c1 100644
--- a/public/content/translations/es/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md
@@ -1,6 +1,6 @@
---
title: "Crear una interfaz de usuario para su contrato inteligente."
-description: Utilizando componentes modernos como TypeScript, React, Vite y Wagmi, revisaremos una interfaz de usuario moderna pero minimalista y aprenderemos cómo conectar una wallet a la interfaz de usuario, llamar a un smart contract para leer información, enviar una transacción a un smart contract y monitorear eventos de un smart contract para identificar cambios.
+description: "Utilizando componentes modernos como TypeScript, React, Vite y Wagmi, revisaremos una interfaz de usuario moderna pero minimalista y aprenderemos cómo conectar una wallet a la interfaz de usuario, llamar a un smart contract para leer información, enviar una transacción a un smart contract y monitorear eventos de un smart contract para identificar cambios."
author: Ori Pomerantz
tags:
[
@@ -11,7 +11,7 @@ tags:
"frontend"
]
skill: beginner
-published: 01-11-2023
+published: 2023-11-01
lang: es
sidebarDepth: 3
---
diff --git a/public/content/translations/es/developers/tutorials/deploying-your-first-smart-contract/index.md b/public/content/translations/es/developers/tutorials/deploying-your-first-smart-contract/index.md
index 23e54cb50e8..f7a105eff2d 100644
--- a/public/content/translations/es/developers/tutorials/deploying-your-first-smart-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/deploying-your-first-smart-contract/index.md
@@ -1,6 +1,6 @@
---
-title: Implementación de su primer contrato inteligente
-description: Una introducción a la implementación de su primer contrato inteligente en una red de prueba de Ethereum
+title: "Implementación de su primer contrato inteligente"
+description: "Una introducción a la implementación de su primer contrato inteligente en una red de prueba de Ethereum"
author: "jdourlens"
tags:
[
diff --git a/public/content/translations/es/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md b/public/content/translations/es/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md
index da90cf3f76d..f22f9b77116 100644
--- a/public/content/translations/es/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md
+++ b/public/content/translations/es/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo desarrollar y probar una dApp en una red de prueba local multicliente
-description: Esta guía primero le guiará a través de cómo instanciar y configurar una red de prueba local multicliente de Ethereum antes de usar la red de prueba para desplegar y probar una dApp.
+title: "Cómo desarrollar y probar una dApp en una red de prueba local multicliente"
+description: "Esta guía primero le guiará a través de cómo instanciar y configurar una red de prueba local multicliente de Ethereum antes de usar la red de prueba para desplegar y probar una dApp."
author: "Tedi Mitiku"
tags:
[
diff --git a/public/content/translations/es/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md b/public/content/translations/es/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md
index 7568d55a4f7..5e6f0b1565b 100644
--- a/public/content/translations/es/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md
+++ b/public/content/translations/es/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md
@@ -1,6 +1,6 @@
---
title: "Reducir el tamaño de los contratos para combatir el límite de tamaño del contrato"
-description: ¿Qué puedes hacer para evitar que tus contratos inteligentes se hagan demasiado grandes?
+description: "¿Qué puedes hacer para evitar que tus contratos inteligentes se hagan demasiado grandes?"
author: Markus Waas
lang: es
tags: [ "Solidity", "contratos Inteligentes", "almacenamiento" ]
diff --git a/public/content/translations/es/developers/tutorials/eip-1271-smart-contract-signatures/index.md b/public/content/translations/es/developers/tutorials/eip-1271-smart-contract-signatures/index.md
index 8e7b5387f31..1c8cc866068 100644
--- a/public/content/translations/es/developers/tutorials/eip-1271-smart-contract-signatures/index.md
+++ b/public/content/translations/es/developers/tutorials/eip-1271-smart-contract-signatures/index.md
@@ -1,6 +1,6 @@
---
title: "EIP-1271: Firma y verificación de firmas de contratos inteligentes"
-description: Una visión general de la generación y verificación de la firma de contrato inteligente con EIP-1271. También recorremos la implementación de EIP-1271 utilizada en Safe (anteriormente Gnosis Safe) para proporcionar un ejemplo concreto para que los desarrolladores de contratos inteligentes puedan construir.
+description: "Una visión general de la generación y verificación de la firma de contrato inteligente con EIP-1271. También recorremos la implementación de EIP-1271 utilizada en Safe (anteriormente Gnosis Safe) para proporcionar un ejemplo concreto para que los desarrolladores de contratos inteligentes puedan construir."
author: Nathan H. Leung
lang: es
tags:
@@ -11,7 +11,7 @@ tags:
"firma"
]
skill: intermediate
-published: 12-1-2023
+published: 2023-01-12
---
El estándar [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) permite a los contratos inteligentes verificar firmas.
diff --git a/public/content/translations/es/developers/tutorials/erc-721-vyper-annotated-code/index.md b/public/content/translations/es/developers/tutorials/erc-721-vyper-annotated-code/index.md
index 9f9561929bb..bd3d31e295a 100644
--- a/public/content/translations/es/developers/tutorials/erc-721-vyper-annotated-code/index.md
+++ b/public/content/translations/es/developers/tutorials/erc-721-vyper-annotated-code/index.md
@@ -1,6 +1,6 @@
---
title: "Recorrido por un contrato ERC-721 de Vyper"
-description: El contrato ERC-721 de Ryuya Nakamura y cómo funciona
+description: "El contrato ERC-721 de Ryuya Nakamura y cómo funciona"
author: Ori Pomerantz
lang: es
tags: [ "vyper", "erc-721", "python" ]
diff --git a/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md b/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md
index 39249d80f73..af3e07c1ac9 100644
--- a/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md
+++ b/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md
@@ -1,6 +1,6 @@
---
title: "Explicación del contrato ERC-20"
-description: ¿Qué contiene el contrato ERC-20 de OpenZeppelin y por qué está ahí?
+description: "¿Qué contiene el contrato ERC-20 de OpenZeppelin y por qué está ahí?"
author: Ori Pomerantz
lang: es
tags: [ "Solidity", "erc-20" ]
diff --git a/public/content/translations/es/developers/tutorials/erc20-with-safety-rails/index.md b/public/content/translations/es/developers/tutorials/erc20-with-safety-rails/index.md
index edd5a1ca6d8..2cfc720b926 100644
--- a/public/content/translations/es/developers/tutorials/erc20-with-safety-rails/index.md
+++ b/public/content/translations/es/developers/tutorials/erc20-with-safety-rails/index.md
@@ -1,6 +1,6 @@
---
title: ERC-20 con mecanismos de seguridad
-description: Cómo ayudar a la gente a evitar errores tontos
+description: "Cómo ayudar a la gente a evitar errores tontos"
author: Ori Pomerantz
lang: es
tags: [ "erc-20" ]
diff --git a/public/content/translations/es/developers/tutorials/ethereum-for-web2-auth/index.md b/public/content/translations/es/developers/tutorials/ethereum-for-web2-auth/index.md
index 106fe82d2c8..a2c0025d365 100644
--- a/public/content/translations/es/developers/tutorials/ethereum-for-web2-auth/index.md
+++ b/public/content/translations/es/developers/tutorials/ethereum-for-web2-auth/index.md
@@ -1,11 +1,11 @@
---
-title: Uso de Ethereum para autenticación web2
-description: Después de leer este tutorial, un desarrollador será capaz de integrar el inicio de sesión con Ethereum (web3) con el inicio de sesión SAML, un estándar utilizado en web2 para proporcionar inicio de sesión único (SSO) y otros servicios relacionados. Esto permite que el acceso a los recursos de web2 sea autenticado mediante firmas de Ethereum, con los atributos del usuario procedentes de atestaciones.
+title: "Uso de Ethereum para autenticación web2"
+description: "Después de leer este tutorial, un desarrollador será capaz de integrar el inicio de sesión con Ethereum (web3) con el inicio de sesión SAML, un estándar utilizado en web2 para proporcionar inicio de sesión único (SSO) y otros servicios relacionados. Esto permite que el acceso a los recursos de web2 sea autenticado mediante firmas de Ethereum, con los atributos del usuario procedentes de atestaciones."
author: Ori Pomerantz
tags: [ "web 2.0", "autenticación", "eas" ]
skill: beginner
lang: es
-published: 30-04-2025
+published: 2025-04-30
---
## Introducción
diff --git a/public/content/translations/es/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md b/public/content/translations/es/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
index 9da4f243a7c..038ff5d8151 100644
--- a/public/content/translations/es/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
+++ b/public/content/translations/es/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
@@ -13,7 +13,7 @@ tags:
skill: beginner
lang: es
published: 2020-10-30
-source: Medio
+source: Medium
sourceUrl: https://medium.com/alchemy-api/getting-started-with-ethereum-development-using-alchemy-c3d6a45c567f
---
diff --git a/public/content/translations/es/developers/tutorials/guide-to-smart-contract-security-tools/index.md b/public/content/translations/es/developers/tutorials/guide-to-smart-contract-security-tools/index.md
index 14e5ec93d99..37a6092840a 100644
--- a/public/content/translations/es/developers/tutorials/guide-to-smart-contract-security-tools/index.md
+++ b/public/content/translations/es/developers/tutorials/guide-to-smart-contract-security-tools/index.md
@@ -1,12 +1,12 @@
---
-title: Una guía de herramientas de seguridad para contratos inteligentes
-description: Una descripción general de tres técnicas diferentes de prueba y análisis de programas
+title: "Una guía de herramientas de seguridad para contratos inteligentes"
+description: "Una descripción general de tres técnicas diferentes de prueba y análisis de programas"
author: "Trailofbits"
lang: es
tags: [ "Solidity", "contratos Inteligentes", "seguridades" ]
skill: intermediate
-published: 07-09-2020
-source: Desarrollar contratos seguros
+published: 2020-09-07
+source: Building secure contracts
sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis
---
diff --git a/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md b/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md
index f83079a7034..72615e45bb9 100644
--- a/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md
+++ b/public/content/translations/es/developers/tutorials/hello-world-smart-contract-fullstack/index.md
@@ -1,6 +1,6 @@
---
title: "Contrato inteligente de Hello World para principiantes: Fullstack"
-description: Tutorial introductorio sobre cómo escribir y desplegar un contrato inteligente sencillo en Ethereum.
+description: "Tutorial introductorio sobre cómo escribir y desplegar un contrato inteligente sencillo en Ethereum."
author: "nstrike2"
tags:
[
@@ -15,7 +15,7 @@ tags:
]
skill: beginner
lang: es
-published: 25-10-2021
+published: 2021-10-25
---
Si es nuevo en el desarrollo de la cadena de bloques y no sabe por dónde empezar o cómo desplegar e interactuar con contratos inteligentes, esta guía está hecha a su medida. Repasaremos la creación y el despliegue de un contrato inteligente simple en la red de prueba de Goerli usando [MetaMask](https://metamask.io), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org), y [Alchemy](https://alchemy.com/eth).
@@ -57,7 +57,7 @@ Puede descargar y crear una cuenta de MetaMask gratis [aquí](https://metamask.i
Para desplegar su contrato inteligente en la red de prueba, necesitará algo de ETH falso. Para obtener ETH en la red Goerli, vaya a un grifo de Goerli e ingrese la dirección de su cuenta de Goerli. Tenga en cuenta que los grifos de Goerli pueden ser un poco poco fiables últimamente; consulte la [página de redes de prueba](/developers/docs/networks/#goerli) para obtener una lista de opciones para probar:
_Nota: debido a la congestión de la red, esto podría tardar un rato._
-\`\`
+``
### Paso 5: Compruebe su saldo {#step-5-check-your-balance}
diff --git a/public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md b/public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md
index 3cc69de4655..7c2e73ff55c 100644
--- a/public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/hello-world-smart-contract/index.md
@@ -1,6 +1,6 @@
---
-title: Contrato inteligente «Hola, mundo» para principiantes
-description: Tutorial introductorio sobre cómo escribir y desplegar un contrato inteligente sencillo en Ethereum.
+title: "Contrato inteligente «Hola, mundo» para principiantes"
+description: "Tutorial introductorio sobre cómo escribir y desplegar un contrato inteligente sencillo en Ethereum."
author: "elanh"
tags:
[
diff --git a/public/content/translations/es/developers/tutorials/how-to-implement-an-erc721-market/index.md b/public/content/translations/es/developers/tutorials/how-to-implement-an-erc721-market/index.md
index 53e7d80b5be..551dc1d8617 100644
--- a/public/content/translations/es/developers/tutorials/how-to-implement-an-erc721-market/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-implement-an-erc721-market/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo implementar un mercado ERC-721
-description: Cómo poner elementos tokenizados a la venta en un tablero descentralizado de avisos clasificados
+title: "Cómo implementar un mercado ERC-721"
+description: "Cómo poner elementos tokenizados a la venta en un tablero descentralizado de avisos clasificados"
author: "Alberto Cuesta Cañada"
tags:
[
@@ -11,7 +11,7 @@ tags:
]
skill: intermediate
lang: es
-published: 19/03/2020
+published: 2020-03-19
source: Hackernoon
sourceUrl: https://hackernoon.com/how-to-implement-an-erc721-market-1e1a32j9
---
diff --git a/public/content/translations/es/developers/tutorials/how-to-mint-an-nft/index.md b/public/content/translations/es/developers/tutorials/how-to-mint-an-nft/index.md
index 418b7b84d09..09d8f5cfb6c 100644
--- a/public/content/translations/es/developers/tutorials/how-to-mint-an-nft/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-mint-an-nft/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo acuñar un NFT (Parte 2/3 de la serie de tutoriales de NFT)
-description: Este tutorial describe cómo acuñar un NFT en la blockchain de Ethereum usando nuestro contrato inteligente y Web3.
+title: "Cómo acuñar un NFT (Parte 2/3 de la serie de tutoriales de NFT)"
+description: "Este tutorial describe cómo acuñar un NFT en la blockchain de Ethereum usando nuestro contrato inteligente y Web3."
author: "Sumi Mudgil"
tags:
[
diff --git a/public/content/translations/es/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md b/public/content/translations/es/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
index 2e5c8f9cb58..0ba1a2e3b9c 100644
--- a/public/content/translations/es/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo simular contratos inteligentes de Solidity para probarlos
-description: ¿Por qué debería burlarse de sus contratos al probarlos?
+title: "Cómo simular contratos inteligentes de Solidity para probarlos"
+description: "¿Por qué debería burlarse de sus contratos al probarlos?"
author: Markus Waas
lang: es
tags:
@@ -11,7 +11,7 @@ tags:
"simular"
]
skill: intermediate
-published: 02-05-2020
+published: 2020-05-02
source: soliditydeveloper.com
sourceUrl: https://soliditydeveloper.com/mocking-contracts
---
diff --git a/public/content/translations/es/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md b/public/content/translations/es/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
index 7989661cff1..547039b7902 100644
--- a/public/content/translations/es/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo utilizar Echidna para probar contratos inteligentes
-description: Cómo utilizar Echidna para probar contratos inteligentes automáticamente
+title: "Cómo utilizar Echidna para probar contratos inteligentes"
+description: "Cómo utilizar Echidna para probar contratos inteligentes automáticamente"
author: "Trailofbits"
lang: es
tags:
@@ -13,7 +13,7 @@ tags:
]
skill: advanced
published: 2020-04-10
-source: Desarrollar contratos seguros
+source: Building secure contracts
sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna
---
diff --git a/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md b/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
index 8489c50ece1..af3eae13dd7 100644
--- a/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo usar Manticore para encontrar errores en contratos inteligentes
-description: Cómo usar Manticore para encontrar automáticamente errores en contratos inteligentes
+title: "Cómo usar Manticore para encontrar errores en contratos inteligentes"
+description: "Cómo usar Manticore para encontrar automáticamente errores en contratos inteligentes"
author: Trailofbits
lang: es
tags:
@@ -13,7 +13,7 @@ tags:
]
skill: advanced
published: 2020-01-13
-source: Desarrollar contratos seguros
+source: Building secure contracts
sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore
---
diff --git a/public/content/translations/es/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md b/public/content/translations/es/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
index 47188f22d01..c0f8de1e3ab 100644
--- a/public/content/translations/es/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo usar Slither para encontrar errores en contratos inteligentes
-description: Cómo usar Slither para encontrar errores automáticamente en los contratos inteligentes
+title: "Cómo usar Slither para encontrar errores en contratos inteligentes"
+description: "Cómo usar Slither para encontrar errores automáticamente en los contratos inteligentes"
author: Trailofbits
lang: es
tags:
@@ -12,7 +12,7 @@ tags:
]
skill: advanced
published: 2020-06-09
-source: Desarrollar contratos seguros
+source: Building secure contracts
sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/slither
---
diff --git a/public/content/translations/es/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md b/public/content/translations/es/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
index 9364d2425ef..5ab67a7540d 100644
--- a/public/content/translations/es/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
@@ -1,12 +1,12 @@
---
-title: Cómo configurar Tellor como su oráculo
-description: Una guía para empezar a integrar el oráculo Tellor en su protocolo
+title: "Cómo configurar Tellor como su oráculo"
+description: "Una guía para empezar a integrar el oráculo Tellor en su protocolo"
author: "Tellor"
lang: es
tags: [ "Solidity", "contratos Inteligentes", "oráculos" ]
skill: beginner
-published: 29/06/2021
-source: Documentación de Tellor
+published: 2021-06-29
+source: Tellor Docs
sourceUrl: https://docs.tellor.io/tellor/
---
diff --git a/public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md b/public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md
index 5752ea4a487..d2152cf2d65 100644
--- a/public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo ver su NFT en su billetera (Parte 3/3 de la serie de tutoriales de NFT)
-description: ¡Este tutorial describe cómo ver un NFT existente en MetaMask!
+title: "Cómo ver su NFT en su billetera (Parte 3/3 de la serie de tutoriales de NFT)"
+description: "¡Este tutorial describe cómo ver un NFT existente en MetaMask!"
author: "Sumi Mudgil"
tags: [ "ERC-721", "Alquimia", "Solidez" ]
skill: beginner
diff --git a/public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md b/public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
index cd8a00d02fc..7a225c5c815 100644
--- a/public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo escribir e implementar un NFT (Parte 1/3 de la serie de tutoriales sobre NFT)
-description: Este tutorial es la parte 1 de una serie sobre NFT que le indicará cómo escribir y desplegar un contrato inteligente de un token no fungible o NFT (ERC-721 token) paso a paso usando Ethereum y el sistema de archivos interplanetario (IPFS).
+title: "Cómo escribir e implementar un NFT (Parte 1/3 de la serie de tutoriales sobre NFT)"
+description: "Este tutorial es la parte 1 de una serie sobre NFT que le indicará cómo escribir y desplegar un contrato inteligente de un token no fungible o NFT (ERC-721 token) paso a paso usando Ethereum y el sistema de archivos interplanetario (IPFS)."
author: "Sumi Mudgil"
tags:
[
diff --git a/public/content/translations/es/developers/tutorials/interact-with-other-contracts-from-solidity/index.md b/public/content/translations/es/developers/tutorials/interact-with-other-contracts-from-solidity/index.md
index 1fcd5b93e9d..25b5c0eb776 100644
--- a/public/content/translations/es/developers/tutorials/interact-with-other-contracts-from-solidity/index.md
+++ b/public/content/translations/es/developers/tutorials/interact-with-other-contracts-from-solidity/index.md
@@ -1,6 +1,6 @@
---
title: Interactuar con otros contratos desde Solidity
-description: Cómo implementar un contrato inteligente desde un contrato existente e interactuar con él.
+description: "Cómo implementar un contrato inteligente desde un contrato existente e interactuar con él."
author: "jdourlens"
tags:
[
diff --git a/public/content/translations/es/developers/tutorials/ipfs-decentralized-ui/index.md b/public/content/translations/es/developers/tutorials/ipfs-decentralized-ui/index.md
index 6a591409ba5..5dbd1047f2e 100644
--- a/public/content/translations/es/developers/tutorials/ipfs-decentralized-ui/index.md
+++ b/public/content/translations/es/developers/tutorials/ipfs-decentralized-ui/index.md
@@ -1,11 +1,11 @@
---
title: IPFS para interfaces de usuario descentralizadas
-description: Este tutorial enseña al lector cómo usar IPFS para almacenar la interfaz de usuario de una dapp. Aunque los datos y la lógica de negocio de la aplicación estén descentralizados, sin una interfaz de usuario resistente a la censura, los usuarios podrían perder el acceso a ella de todos modos.
+description: "Este tutorial enseña al lector cómo usar IPFS para almacenar la interfaz de usuario de una dapp. Aunque los datos y la lógica de negocio de la aplicación estén descentralizados, sin una interfaz de usuario resistente a la censura, los usuarios podrían perder el acceso a ella de todos modos."
author: Ori Pomerantz
tags: [ "ipfs" ]
skill: beginner
lang: es
-published: 29/06/2024
+published: 2024-06-29
---
Ha escrito una nueva e increíble dapp. Incluso ha escrito una [interfaz de usuario](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/) para ella. Pero ahora teme que alguien intente censurarla tumbando su interfaz de usuario, que no es más que un servidor en la nube. En este tutorial aprenderá cómo evitar la censura poniendo su interfaz de usuario en el **[sistema de archivos interplanetario (IPFS)](https://ipfs.tech/developers/)** para que cualquiera que esté interesado pueda fijarla en un servidor para su futuro acceso.
diff --git a/public/content/translations/es/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md b/public/content/translations/es/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md
index c57b2d5bc5a..eeaf590302e 100644
--- a/public/content/translations/es/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md
+++ b/public/content/translations/es/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md
@@ -1,6 +1,6 @@
---
title: Ponga en marcha el desarrollo frontend de su dapp con create-eth-app
-description: Un resumen de cómo usar create-eth-app y sus características
+description: "Un resumen de cómo usar create-eth-app y sus características"
author: "Markus Waas"
tags:
[
diff --git a/public/content/translations/es/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md b/public/content/translations/es/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
index fe6b1ca9a8e..43db1dbcfa3 100644
--- a/public/content/translations/es/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
+++ b/public/content/translations/es/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
@@ -1,6 +1,6 @@
---
title: Comience a desarrollar DApp frontend con create-eth-app
-description: Un resumen de cómo usar create-eth-app y sus aplicaciones
+description: "Un resumen de cómo usar create-eth-app y sus aplicaciones"
author: "Markus Waas"
tags:
- "crear-eth-app"
diff --git a/public/content/translations/es/developers/tutorials/logging-events-smart-contracts/index.md b/public/content/translations/es/developers/tutorials/logging-events-smart-contracts/index.md
index a98d1c4f4b6..78fa377fd79 100644
--- a/public/content/translations/es/developers/tutorials/logging-events-smart-contracts/index.md
+++ b/public/content/translations/es/developers/tutorials/logging-events-smart-contracts/index.md
@@ -1,6 +1,6 @@
---
title: Registrar datos de contratos inteligentes con eventos
-description: Una introducción a los eventos de contratos inteligentes y cómo puede usarlos para registrar datos
+description: "Una introducción a los eventos de contratos inteligentes y cómo puede usarlos para registrar datos"
author: "jdourlens"
tags:
[
diff --git a/public/content/translations/es/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md b/public/content/translations/es/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
index 33d001da2a2..c772ee131fa 100644
--- a/public/content/translations/es/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
+++ b/public/content/translations/es/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
@@ -1,11 +1,11 @@
---
-title: Pruebas de Merkle para la integridad de los datos fuera de línea
-description: Garantizando la integridad de los datos on-chain para información que se almacena, principalmente, off-chain.
+title: "Pruebas de Merkle para la integridad de los datos fuera de línea"
+description: "Garantizando la integridad de los datos on-chain para información que se almacena, principalmente, off-chain."
author: Ori Pomerantz
tags: [ "almacenamiento" ]
skill: advanced
lang: es
-published: 30-12-2021
+published: 2021-12-30
---
## Introducción {#introduction}
diff --git a/public/content/translations/es/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md b/public/content/translations/es/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md
index 07b5b139f9f..d2b1fc7c7b6 100644
--- a/public/content/translations/es/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md
+++ b/public/content/translations/es/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md
@@ -1,6 +1,6 @@
---
-title: Monitorización de Geth con InfluxDB y Grafana
-description: Configure la monitorización de su nodo de Geth con InfluxDB y Grafana para hacer un seguimiento del rendimiento e identificar problemas.
+title: "Monitorización de Geth con InfluxDB y Grafana"
+description: "Configure la monitorización de su nodo de Geth con InfluxDB y Grafana para hacer un seguimiento del rendimiento e identificar problemas."
author: "Mario Havel"
tags: [ "clientes", "nodos" ]
skill: intermediate
diff --git a/public/content/translations/es/developers/tutorials/nft-minter/index.md b/public/content/translations/es/developers/tutorials/nft-minter/index.md
index 1fb581d2bb9..61cc3a367b5 100644
--- a/public/content/translations/es/developers/tutorials/nft-minter/index.md
+++ b/public/content/translations/es/developers/tutorials/nft-minter/index.md
@@ -1,6 +1,6 @@
---
title: Tutorial de minteador de NFT
-description: En este tutorial, creará un minteador de NFT y aprenderá cómo crear una dapp de pila completa conectando su contrato inteligente a un frontend de React por medio de Metamask y herramientas web3.
+description: "En este tutorial, creará un minteador de NFT y aprenderá cómo crear una dapp de pila completa conectando su contrato inteligente a un frontend de React por medio de Metamask y herramientas web3."
author: "smudgil"
tags:
[
diff --git a/public/content/translations/es/developers/tutorials/optimism-std-bridge-annotated-code/index.md b/public/content/translations/es/developers/tutorials/optimism-std-bridge-annotated-code/index.md
index abd37fd8623..61a751e8edd 100644
--- a/public/content/translations/es/developers/tutorials/optimism-std-bridge-annotated-code/index.md
+++ b/public/content/translations/es/developers/tutorials/optimism-std-bridge-annotated-code/index.md
@@ -1,6 +1,6 @@
---
title: "Recorrido por el contrato del puente estándar de Optimism"
-description: ¿Cómo funciona el puente estándar para Optimism? ¿Por qué funciona de esta manera?
+description: "¿Cómo funciona el puente estándar para Optimism? ¿Por qué funciona de esta manera?"
author: Ori Pomerantz
tags: [ "Solidity", "puente", "capa 2" ]
skill: intermediate
diff --git a/public/content/translations/es/developers/tutorials/reverse-engineering-a-contract/index.md b/public/content/translations/es/developers/tutorials/reverse-engineering-a-contract/index.md
index 00950b0e1f5..6388421166a 100644
--- a/public/content/translations/es/developers/tutorials/reverse-engineering-a-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/reverse-engineering-a-contract/index.md
@@ -1,11 +1,11 @@
---
title: "Ingeniería inversa de un contrato"
-description: Cómo entender un contrato cuando no se tiene el código fuente
+description: "Cómo entender un contrato cuando no se tiene el código fuente"
author: Ori Pomerantz
lang: es
tags: [ "evm", "códigos de operación" ]
skill: advanced
-published: 30-12-2021
+published: 2021-12-30
---
## Introducción {#introduction}
diff --git a/public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md b/public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md
index 7b58f633cab..48cc711766e 100644
--- a/public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md
+++ b/public/content/translations/es/developers/tutorials/run-node-raspberry-pi/index.md
@@ -12,7 +12,7 @@ tags:
lang: es
skill: intermediate
published: 2022-06-10
-source: Ethereum en ARM
+source: Ethereum on ARM
sourceUrl: https://ethereum-on-arm-documentation.readthedocs.io/en/latest/
---
diff --git a/public/content/translations/es/developers/tutorials/scam-token-tricks/index.md b/public/content/translations/es/developers/tutorials/scam-token-tricks/index.md
index 52d439c3da1..32d81b9f72b 100644
--- a/public/content/translations/es/developers/tutorials/scam-token-tricks/index.md
+++ b/public/content/translations/es/developers/tutorials/scam-token-tricks/index.md
@@ -1,6 +1,6 @@
---
title: "Algunos trucos utilizados por los tokens fraudulentos y cómo detectarlos"
-description: En este tutorial, diseccionamos un token fraudulento para ver algunos de los trucos que utilizan los estafadores, cómo los implementan y cómo podemos detectarlos.
+description: "En este tutorial, diseccionamos un token fraudulento para ver algunos de los trucos que utilizan los estafadores, cómo los implementan y cómo podemos detectarlos."
author: Ori Pomerantz
tags:
[
@@ -11,7 +11,7 @@ tags:
"typescript"
]
skill: intermediate
-published: 15-9-2023
+published: 2023-09-15
lang: es
---
diff --git a/public/content/translations/es/developers/tutorials/secret-state/index.md b/public/content/translations/es/developers/tutorials/secret-state/index.md
index d3b091c2448..38f76bac4c1 100644
--- a/public/content/translations/es/developers/tutorials/secret-state/index.md
+++ b/public/content/translations/es/developers/tutorials/secret-state/index.md
@@ -1,6 +1,6 @@
---
title: Uso de conocimiento cero para un estado secreto
-description: Los juegos en cadena son limitados porque no pueden mantener ninguna información oculta. Después de leer este tutorial, el lector podrá combinar pruebas de conocimiento cero y componentes del servidor para crear juegos verificables con un estado secreto, un componente fuera de cadena. La técnica para hacer esto se demostrará creando un juego de buscaminas.
+description: "Los juegos en cadena son limitados porque no pueden mantener ninguna información oculta. Después de leer este tutorial, el lector podrá combinar pruebas de conocimiento cero y componentes del servidor para crear juegos verificables con un estado secreto, un componente fuera de cadena. La técnica para hacer esto se demostrará creando un juego de buscaminas."
author: Ori Pomerantz
tags:
[
@@ -13,7 +13,7 @@ tags:
]
skill: advanced
lang: es
-published: 15-03-2025
+published: 2025-03-15
---
_No hay secretos en la cadena de bloques_. Todo lo que se publica en la cadena de bloques está abierto a la lectura para todo el mundo. Esto es necesario, porque la cadena de bloques se basa en que cualquiera pueda verificarla. Sin embargo, los juegos a menudo dependen de un estado secreto. Por ejemplo, el juego de [buscaminas](https://en.wikipedia.org/wiki/Minesweeper_\(video_game\)) no tiene absolutamente ningún sentido si se puede simplemente ir a un explorador de la cadena de bloques y ver el mapa.
diff --git a/public/content/translations/es/developers/tutorials/secure-development-workflow/index.md b/public/content/translations/es/developers/tutorials/secure-development-workflow/index.md
index b586756f372..35bdf70043e 100644
--- a/public/content/translations/es/developers/tutorials/secure-development-workflow/index.md
+++ b/public/content/translations/es/developers/tutorials/secure-development-workflow/index.md
@@ -1,12 +1,12 @@
---
-title: Lista de verificación de seguridad de los contratos inteligentes
+title: "Lista de verificación de seguridad de los contratos inteligentes"
description: Un flujo de trabajo recomendado para escribir contratos inteligentes seguros
author: "Trailofbits"
tags: [ "contratos Inteligentes", "seguridades", "Solidity" ]
skill: intermediate
lang: es
-published: 07-09-2020
-source: Desarrollar contratos seguros
+published: 2020-09-07
+source: Building secure contracts
sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/workflow.md
---
diff --git a/public/content/translations/es/developers/tutorials/send-token-etherjs/index.md b/public/content/translations/es/developers/tutorials/send-token-etherjs/index.md
index cd4dd34a040..94685fe9125 100644
--- a/public/content/translations/es/developers/tutorials/send-token-etherjs/index.md
+++ b/public/content/translations/es/developers/tutorials/send-token-etherjs/index.md
@@ -1,6 +1,6 @@
---
title: Enviar tokens usando ethers.js
-description: Guía para principiantes sobre el envío de tokens usando ethers.js.
+description: "Guía para principiantes sobre el envío de tokens usando ethers.js."
author: Kim YongJun
tags:
- "ETHERS.JS"
diff --git a/public/content/translations/es/developers/tutorials/send-token-ethersjs/index.md b/public/content/translations/es/developers/tutorials/send-token-ethersjs/index.md
index 39be251a1f7..b14ee7d3520 100644
--- a/public/content/translations/es/developers/tutorials/send-token-ethersjs/index.md
+++ b/public/content/translations/es/developers/tutorials/send-token-ethersjs/index.md
@@ -1,6 +1,6 @@
---
-title: Envío de tokens usando ethers.js
-description: Guía para principiantes sobre el envío de tokens usando ethers.js.
+title: "Envío de tokens usando ethers.js"
+description: "Guía para principiantes sobre el envío de tokens usando ethers.js."
author: Kim YongJun
tags: [ "ETHERS.JS", "ERC-20", "TOKENS" ]
skill: beginner
diff --git a/public/content/translations/es/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md b/public/content/translations/es/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
index a7af4d6277e..9d04fc6f97a 100644
--- a/public/content/translations/es/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
+++ b/public/content/translations/es/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
@@ -1,12 +1,12 @@
---
-title: Envío de transacciones con Web3
+title: "Envío de transacciones con Web3"
description: "Esta es una guía para principiantes sobre cómo enviar transacciones de Ethereum con Web3. Hay tres pasos principales para enviar una transacción a la blockchain de Ethereum: crear, firmar y transmitir. Repasaremos los tres."
author: "Elan Halpern"
tags: [ "transacciones", "web3.js", "Alchemy" ]
skill: beginner
lang: es
published: 2020-11-04
-source: Documentos de Alchemy
+source: Alchemy docs
sourceUrl: https://docs.alchemy.com/alchemy/tutorials/sending-txs
---
diff --git a/public/content/translations/es/developers/tutorials/server-components/index.md b/public/content/translations/es/developers/tutorials/server-components/index.md
index 72825ae57d1..372fc082f97 100644
--- a/public/content/translations/es/developers/tutorials/server-components/index.md
+++ b/public/content/translations/es/developers/tutorials/server-components/index.md
@@ -1,12 +1,12 @@
---
title: "Componentes de servidor y agentes para aplicaciones web3"
-description: Después de leer este tutorial, podrá escribir servidores TypeScript que escuchen eventos en una cadena de bloques y respondan en consecuencia con sus propias transacciones. Esto le permitirá escribir aplicaciones centralizadas (porque el servidor es un punto de fallo), pero que pueden interactuar con entidades web3. Las mismas técnicas también se pueden utilizar para escribir un agente que responda a eventos en cadena sin la intervención de un ser humano.
+description: "Después de leer este tutorial, podrá escribir servidores TypeScript que escuchen eventos en una cadena de bloques y respondan en consecuencia con sus propias transacciones. Esto le permitirá escribir aplicaciones centralizadas (porque el servidor es un punto de fallo), pero que pueden interactuar con entidades web3. Las mismas técnicas también se pueden utilizar para escribir un agente que responda a eventos en cadena sin la intervención de un ser humano."
author: Ori Pomerantz
lang: es
tags: [ "agente", "servidor", "fuera de la cadena" ]
skill: beginner
-published: 15-07-2024
+published: 2024-07-15
---
## Introducción {#introduction}
diff --git a/public/content/translations/es/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md b/public/content/translations/es/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
index 5f7de9a92b7..11aae896499 100644
--- a/public/content/translations/es/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
+++ b/public/content/translations/es/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
@@ -1,6 +1,6 @@
---
title: Configurar web3.js para usar la cadena de bloques de Ethereum en JavaScript
-description: Aprenda cómo configurar la librería web3.js para interactuar con la cadena de bloques de Ethereum desde aplicaciones de JavaScript.
+description: "Aprenda cómo configurar la librería web3.js para interactuar con la cadena de bloques de Ethereum desde aplicaciones de JavaScript."
author: "jdourlens"
tags: [ "web3.js", "JavaScript" ]
skill: beginner
diff --git a/public/content/translations/es/developers/tutorials/short-abi/index.md b/public/content/translations/es/developers/tutorials/short-abi/index.md
index 0d8b1f2b34a..805c95324a0 100644
--- a/public/content/translations/es/developers/tutorials/short-abi/index.md
+++ b/public/content/translations/es/developers/tutorials/short-abi/index.md
@@ -1,6 +1,6 @@
---
title: "ABI cortas para la optimización de calldata"
-description: Optimización de contratos inteligentes para rollups optimistas
+description: "Optimización de contratos inteligentes para rollups optimistas"
author: Ori Pomerantz
lang: es
tags: [ "capa 2" ]
@@ -164,7 +164,7 @@ En L1 podría ser necesario omitir estas pruebas para ahorrar gas, pero en L2 el
Podríamos haber copiado los datos de la llamada a `fallback()` (véase más abajo), pero es más fácil usar [Yul](https://docs.soliditylang.org/en/v0.8.12/yul.html), el lenguaje de ensamblado de la EVM.
Aquí usamos [el código de operación CALLDATALOAD](https://www.evm.codes/#35) para leer los bytes desde `startByte` hasta `startByte+31` en la pila.
-En general, la sintaxis de un código de operación en Yul es \`(, ...).
+En general, la sintaxis de un código de operación en Yul es `(, ...).
```solidity
diff --git a/public/content/translations/es/developers/tutorials/smart-contract-security-guidelines/index.md b/public/content/translations/es/developers/tutorials/smart-contract-security-guidelines/index.md
index 897fc2ba8c7..2e02b151329 100644
--- a/public/content/translations/es/developers/tutorials/smart-contract-security-guidelines/index.md
+++ b/public/content/translations/es/developers/tutorials/smart-contract-security-guidelines/index.md
@@ -6,7 +6,7 @@ tags: [ "Solidity", "contratos Inteligentes", "seguridades" ]
skill: intermediate
lang: es
published: 2020-09-06
-source: Desarrollar contratos seguros
+source: Building secure contracts
sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/guidelines.md
---
diff --git a/public/content/translations/es/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md b/public/content/translations/es/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md
index e40f277bd99..2ef6b047122 100644
--- a/public/content/translations/es/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md
+++ b/public/content/translations/es/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md
@@ -1,6 +1,6 @@
---
title: Probar tokens ERC-20 con Waffle
-description: Aprende cómo probar smart contracts en Solidity y utiliza comparadores de smart contracts con Waffle.
+description: "Aprende cómo probar smart contracts en Solidity y utiliza comparadores de smart contracts con Waffle."
author: Vladislav Starostenko
tags:
- "waffle"
diff --git a/public/content/translations/es/developers/tutorials/the-graph-fixing-web3-data-querying/index.md b/public/content/translations/es/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
index 0562c75766a..3a7ecf65fbb 100644
--- a/public/content/translations/es/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
+++ b/public/content/translations/es/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
@@ -1,6 +1,6 @@
---
title: "The Graph: corrección de las consultas de datos de Web3"
-description: La cadena de bloques es como una base de datos pero sin SQL. Todos los datos están ahí, pero no hay forma de acceder a ellos. Déjeme mostrarle cómo solucionar este problema con The Graph y GraphQL.
+description: "La cadena de bloques es como una base de datos pero sin SQL. Todos los datos están ahí, pero no hay forma de acceder a ellos. Déjeme mostrarle cómo solucionar este problema con The Graph y GraphQL."
author: Markus Waas
lang: es
tags:
diff --git a/public/content/translations/es/developers/tutorials/token-integration-checklist/index.md b/public/content/translations/es/developers/tutorials/token-integration-checklist/index.md
index e73e4c3d11f..0be919c3db6 100644
--- a/public/content/translations/es/developers/tutorials/token-integration-checklist/index.md
+++ b/public/content/translations/es/developers/tutorials/token-integration-checklist/index.md
@@ -1,6 +1,6 @@
---
-title: Lista de verificación de integración de tokens
-description: Una lista de verificación de cosas a considerar al interactuar con tokens
+title: "Lista de verificación de integración de tokens"
+description: "Una lista de verificación de cosas a considerar al interactuar con tokens"
author: "Trailofbits"
lang: es
tags:
@@ -12,7 +12,7 @@ tags:
]
skill: intermediate
published: 2020-08-13
-source: Desarrollar contratos seguros
+source: Building secure contracts
sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/token_integration.md
---
diff --git a/public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md b/public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
index 49bd79ff63d..c014113bf7a 100644
--- a/public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
@@ -1,5 +1,5 @@
---
-title: Transferencias y aprobación de tokens ERC-20 desde un contrato inteligente de Solidity
+title: "Transferencias y aprobación de tokens ERC-20 desde un contrato inteligente de Solidity"
description: Cree un contrato inteligente DEX que gestione las transferencias y aprobaciones de tokens ERC-20 utilizando Solidity.
author: "jdourlens"
tags:
diff --git a/public/content/translations/es/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md b/public/content/translations/es/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
index 640c3ad60f7..4bf938e5750 100644
--- a/public/content/translations/es/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
+++ b/public/content/translations/es/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
@@ -1,6 +1,6 @@
---
title: Comprender el contrato inteligente del token ERC-20
-description: Aprenda a implementar el estándar de token ERC-20 con un ejemplo y una explicación completos del contrato inteligente de Solidity.
+description: "Aprenda a implementar el estándar de token ERC-20 con un ejemplo y una explicación completos del contrato inteligente de Solidity."
author: "jdourlens"
tags:
[
diff --git a/public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md
index 4cfdd8495bf..49fdd72f529 100644
--- a/public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md
+++ b/public/content/translations/es/developers/tutorials/uniswap-v2-annotated-code/index.md
@@ -1,6 +1,6 @@
---
title: "Un recorrido por el contrato Uniswap-v2"
-description: ¿Cómo funciona el contrato Uniswap-v2? ¿Por qué está escrito de esa manera?
+description: "¿Cómo funciona el contrato Uniswap-v2? ¿Por qué está escrito de esa manera?"
author: Ori Pomerantz
tags: [ "Solidity" ]
skill: intermediate
@@ -62,51 +62,51 @@ Este es el flujo más común, utilizado por los traders:
7. Enviar los tókenes de salida al destino.
8. Llamar a `_update` para actualizar las cantidades de la reserva
-#### De vuelta en el contrato periférico (UniswapV2Router02.sol) {#back-in-the-periphery-contract-uniswapv2router02-sol}
+#### De vuelta en el contrato periférico (UniswapV2Router02.sol) {#in-the-core-contract-uniswapv2pairsol-2}
9. Realizar cualquier limpieza necesaria (por ejemplo, quemar tókenes WETH para recuperar ETH y enviarlos al trader).
-### Añadir liquidez {#add-liquidity-flow}
+### Añadir liquidez {#back-in-the-periphery-contract-uniswapv2router02-sol}
-#### Emisor {#caller-2}
+#### Emisor {#add-liquidity-flow}
1. Proporcionar a la cuenta periférica una asignación en las cantidades que se añadirán al fondo de liquidez.
2. Llamar a una de las funciones `addLiquidity` del contrato periférico.
-#### En el contrato periférico (UniswapV2Router02.sol) {#in-the-periphery-contract-uniswapv2router02sol-2}
+#### En el contrato periférico (UniswapV2Router02.sol) {#caller-2}
3. Crear un nuevo intercambio de pares si es necesario.
4. Si existe un intercambio de pares, calcular la cantidad de tókenes a añadir. Se supone que este es un valor idéntico para ambos tókenes, por lo que se mantiene la misma proporción de tókenes nuevos con respecto a los existentes.
5. Comprobar si las cantidades son aceptables (los emisores pueden especificar una cantidad mínima por debajo de la cual prefieren no añadir liquidez).
6. Llamar al contrato principal.
-#### En el contrato principal (UniswapV2Pair.sol) {#in-the-core-contract-uniswapv2pairsol-2}
+#### En el contrato principal (UniswapV2Pair.sol) {#in-the-periphery-contract-uniswapv2router02sol-2}
7. Acuñar tókenes de liquidez y enviarlos al emisor
8. Llamar a `_update` para actualizar las cantidades de la reserva
-### Retirar liquidez {#remove-liquidity-flow}
+### Retirar liquidez {#in-the-core-contract-uniswapv2pairsol-2}
-#### Emisor {#caller-3}
+#### Emisor {#remove-liquidity-flow}
1. Proporcionar a la cuenta periférica una asignación de tókenes de liquidez para ser quemados a cambio de los tókenes subyacentes.
2. Llamar a una de las funciones `removeLiquidity` del contrato periférico.
-#### En el contrato periférico (UniswapV2Router02.sol) {#in-the-periphery-contract-uniswapv2router02sol-3}
+#### En el contrato periférico (UniswapV2Router02.sol) {#caller-3}
3. Enviar los tókenes de liquidez al intercambio de pares.
-#### En el contrato principal (UniswapV2Pair.sol) {#in-the-core-contract-uniswapv2pairsol-3}
+#### En el contrato principal (UniswapV2Pair.sol) {#in-the-periphery-contract-uniswapv2router02sol-3}
4. Enviar a la dirección de destino los tókenes subyacentes en proporción a los tókenes quemados. Por ejemplo, si hay 1000 tókenes A en la reserva, 500 tókenes B y 90 tókenes de liquidez, y recibimos 9 tókenes para quemar, estamos quemando el 10 % de los tókenes de liquidez, por lo que devolvemos al usuario 100 tókenes A y 50 tókenes B.
5. Quemar los tókenes de liquidez.
6. Llamar a `_update` para actualizar las cantidades de la reserva
-## Los contratos principales {#core-contracts}
+## Los contratos principales {#in-the-core-contract-uniswapv2pairsol-3}
Estos son los contratos seguros que contienen la liquidez.
-### UniswapV2Pair.sol {#UniswapV2Pair}
+### UniswapV2Pair.sol {#core-contracts}
[Este contrato](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Pair.sol) implementa la reserva real que intercambia tókenes. Es la funcionalidad principal de Uniswap.
@@ -145,7 +145,7 @@ La solución que encontró Uniswap es usar valores de 224 bits, con 112 bits par
Hay más detalles sobre esta librería [más adelante en el documento](#FixedPoint).
-#### Variables {#pair-vars}
+#### Variables {#UniswapV2Pair}
```solidity
uint public constant MINIMUM_LIQUIDITY = 10**3;
@@ -213,7 +213,7 @@ Aquí tiene un ejemplo sencillo. Tenga en cuenta que, para simplificar, la tabla
A medida que los traders proporcionan más token0, el valor relativo del token1 aumenta, y viceversa, en función de la oferta y la demanda.
-#### Bloqueo {#pair-lock}
+#### Bloqueo {#pair-vars}
```solidity
uint private unlocked = 1;
@@ -248,7 +248,7 @@ En un modificador, `_;` es la llamada a la función original (con todos los par
Después de que la función principal devuelva un valor, se libera el bloqueo.
-#### Miscelánea funciones {#pair-misc}
+#### Miscelánea funciones {#pair-lock}
```solidity
function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {
@@ -281,7 +281,7 @@ Hay dos formas en que una llamada de transferencia de ERC-20 puede informar de u
Si se da alguna de estas condiciones, revertir.
-#### Eventos {#pair-events}
+#### Eventos {#pair-misc}
```solidity
event Mint(address indexed sender, uint amount0, uint amount1);
@@ -310,7 +310,7 @@ Cada token puede enviarse al intercambio o recibirse de él.
Finalmente, `Sync` se emite cada vez que se agregan o retiran tókenes, independientemente del motivo, para proporcionar la información de reserva más reciente (y, por lo tanto, el tipo de cambio).
-#### Funciones de configuración {#pair-setup}
+#### Funciones de configuración {#pair-events}
Se supone que estas funciones se deben llamar una vez cuando se configura el nuevo intercambio de pares.
@@ -333,7 +333,7 @@ El constructor se asegura de que hagamos un seguimiento de la dirección de la f
Esta función permite a la fábrica (y solo a la fábrica) especificar los dos tókenes ERC-20 que este par intercambiará.
-#### Funciones de actualización internas {#pair-update-internal}
+#### Funciones de actualización internas {#pair-setup}
##### \_update
@@ -456,7 +456,7 @@ Utilice la función `UniswapV2ERC20._mint` para crear los tókenes de liquidez a
Si no hay ninguna comisión, establezca `kLast` en cero (si no lo está ya). Cuando se escribió este contrato, había una [función de reembolso de gas](https://eips.ethereum.org/EIPS/eip-3298) que animaba a los contratos a reducir el tamaño total del estado de Ethereum poniendo a cero el almacenamiento que no necesitaban.
Este código obtiene ese reembolso cuando es posible.
-#### Funciones accesibles externamente {#pair-external}
+#### Funciones accesibles externamente {#pair-update-internal}
Tenga en cuenta que, si bien cualquier transacción o contrato _puede_ llamar a estas funciones, están diseñadas para ser llamadas desde el contrato periférico. Si las llama directamente, no podrá engañar al intercambio de pares, pero podría perder valor por un error.
@@ -689,7 +689,7 @@ En ese caso hay dos soluciones:
}
```
-### UniswapV2Factory.sol {#UniswapV2Factory}
+### UniswapV2Factory.sol {#pair-external}
[Este contrato](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Factory.sol) crea los intercambios de pares.
@@ -810,7 +810,7 @@ Guarde la información del nuevo par en las variables de estado y emita un event
Estas dos funciones permiten a `feeSetter` controlar el destinatario de la comisión (si lo hay) y cambiar `feeSetter` a una nueva dirección.
-### UniswapV2ERC20.sol {#UniswapV2ERC20}
+### UniswapV2ERC20.sol {#UniswapV2Factory}
[Este contrato](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol) implementa el token de liquidez ERC-20. Es similar al [contrato ERC-20 de OpenZeppelin](/developers/tutorials/erc20-annotated-code), por lo que solo explicaré la parte que es diferente, la funcionalidad de `permit`.
@@ -897,15 +897,15 @@ A partir del resumen y la firma podemos obtener la dirección que lo firmó usan
Si todo está bien, trátelo como [una aprobación de ERC-20](https://eips.ethereum.org/EIPS/eip-20#approve).
-## Los contratos periféricos {#periphery-contracts}
+## Los contratos periféricos {#UniswapV2ERC20}
Los contratos periféricos son la API (interfaz de programación de aplicaciones) de Uniswap. Están disponibles para llamadas externas, ya sea desde otros contratos o aplicaciones descentralizadas. Podría llamar a los contratos principales directamente, pero es más complicado y podría perder valor si comete un error. Los contratos principales solo contienen pruebas para asegurarse de que no están siendo engañados, no comprobaciones de seguridad para nadie más. Estos están en la periferia para que puedan actualizarse según sea necesario.
-### UniswapV2Router01.sol {#UniswapV2Router01}
+### UniswapV2Router01.sol {#periphery-contracts}
[Este contrato](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router01.sol) tiene problemas y [ya no debería usarse](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/router-01). Por suerte, los contratos periféricos no tienen estado y no contienen ningún activo, por lo que es fácil dejarlo obsoleto y sugerir que se use el reemplazo, `UniswapV2Router02`, en su lugar.
-### UniswapV2Router02.sol {#UniswapV2Router02}
+### UniswapV2Router02.sol {#UniswapV2Router01}
En la mayoría de los casos, usaría Uniswap a través de [este contrato](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router02.sol).
Puede ver cómo usarlo [aquí](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/router-02).
@@ -961,7 +961,7 @@ El constructor solo establece las variables de estado inmutables.
Esta función se llama cuando canjeamos tókenes del contrato WETH de nuevo en ETH. Solo el contrato WETH que usamos está autorizado a hacerlo.
-#### Añadir liquidez {#add-liquidity}
+#### Añadir liquidez {#UniswapV2Router02}
Estas funciones agregan tókenes al intercambio de pares, lo que aumenta el fondo de liquidez.
@@ -1145,7 +1145,7 @@ Para depositar el ETH, el contrato primero lo envuelve en WETH y luego transfier
El usuario ya nos ha enviado el ETH, por lo que si queda algo extra (porque el otro token es menos valioso de lo que el usuario pensaba), tenemos que emitir un reembolso.
-#### Retirar liquidez {#remove-liquidity}
+#### Retirar liquidez {#add-liquidity}
Estas funciones eliminarán la liquidez y la devolverán al proveedor de liquidez.
@@ -1306,7 +1306,7 @@ Esta función se puede utilizar para tókenes que tienen comisiones de transfere
La función final combina las tarifas de almacenamiento con las metatransacciones.
-#### Operar {#trade}
+#### Operar {#remove-liquidity}
```solidity
// **** INTERCAMBIO ****
@@ -1664,15 +1664,15 @@ Estas son las mismas variantes que se utilizan para los tokens normales, pero en
Estas funciones son solo proxies que llaman a las [funciones de UniswapV2Library](#uniswapV2library).
-### UniswapV2Migrator.sol {#UniswapV2Migrator}
+### UniswapV2Migrator.sol {#trade}
Este contrato se utilizó para migrar los intercambios de la antigua v1 a la v2. Ahora que han sido migrados, ya no es relevante.
-## Las bibliotecas {#libraries}
+## Las bibliotecas {#UniswapV2Migrator}
La [biblioteca SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math) está bien documentada, así que no hay necesidad de documentarla aquí.
-### Math {#Math}
+### Math {#libraries}
Esta biblioteca contiene algunas funciones matemáticas que normalmente no se necesitan en el código de Solidity, por lo que no forman parte del lenguaje.
@@ -1717,7 +1717,7 @@ Nunca deberíamos necesitar la raíz cuadrada de cero. Las raíces cuadradas de
}
```
-### Fracciones de punto fijo (UQ112x112) {#FixedPoint}
+### Fracciones de punto fijo (UQ112x112) {#Math}
Esta biblioteca maneja fracciones, que normalmente no forman parte de la aritmética de Ethereum. Lo hace codificando el número _x_ como _x\*2^112_. Esto nos permite usar los códigos de operación de suma y resta originales sin ningún cambio.
@@ -1754,7 +1754,7 @@ Como y es `uint112`, lo máximo que puede ser es 2^112-1. Ese número todavía s
Si dividimos dos valores `UQ112x112`, el resultado ya no se multiplica por 2^112. Así que, en su lugar, tomamos un número entero para el denominador. Habríamos tenido que usar un truco similar para hacer la multiplicación, pero no necesitamos multiplicar los valores de `UQ112x112`.
-### UniswapV2Library {#uniswapV2library}
+### UniswapV2Library {#FixedPoint}
Esta biblioteca solo la utilizan los contratos de la periferia
@@ -1876,7 +1876,7 @@ Esta función hace más o menos lo mismo, pero obtiene la cantidad de salida y p
Estas dos funciones manejan la identificación de los valores cuando es necesario pasar por varios intercambios de pares.
-### TransferHelper {#transfer-helper}
+### TransferHelper {#uniswapV2library}
[Esta biblioteca](https://github.com/Uniswap/uniswap-lib/blob/master/contracts/libraries/TransferHelper.sol) agrega comprobaciones de éxito en torno a las transferencias de ERC-20 y Ethereum para tratar una reversión y la devolución de un valor `false` de la misma manera.
@@ -1961,7 +1961,7 @@ Esta función implementa la [funcionalidad transferFrom de ERC-20](https://eips.
Esta función transfiere ether a una cuenta. Cualquier llamada a un contrato diferente puede intentar enviar ether. Como no necesitamos llamar a ninguna función, no enviamos ningún dato con la llamada.
-## Conclusión {#conclusion}
+## Conclusión {#transfer-helper}
Este es un artículo largo de unas 50 páginas. Si ha llegado hasta aquí, ¡enhorabuena! Esperamos que a estas alturas haya entendido las consideraciones a la hora de escribir una aplicación real (a diferencia de los programas de ejemplo cortos) y esté mejor preparado para escribir contratos para sus propios casos de uso.
diff --git a/public/content/translations/es/developers/tutorials/using-websockets/index.md b/public/content/translations/es/developers/tutorials/using-websockets/index.md
index 5e7639bfb99..0e10bfe47dc 100644
--- a/public/content/translations/es/developers/tutorials/using-websockets/index.md
+++ b/public/content/translations/es/developers/tutorials/using-websockets/index.md
@@ -1,13 +1,13 @@
---
title: Uso de WebSockets
-description: Guía de uso de WebSocets y Alchemy para hacer solicitudes JSON-RPC y suscribirse a eventos.
+description: "Guía de uso de WebSocets y Alchemy para hacer solicitudes JSON-RPC y suscribirse a eventos."
author: "Elan Halpern"
lang: es
tags: [ "Alchemy", "websockets", "consultar", "JavaScript" ]
skill: beginner
-source: Documentos de Alchemy
+source: Alchemy docs
sourceUrl: https://www.alchemy.com/docs/reference/best-practices-for-using-websockets-in-web3
-published: 01-12-2020
+published: 2020-12-01
---
Esta es una guía de nivel básico sobre el uso de WebSockets y Alchemy para hacer solicitudes a la cadena de bloques de Ethereum.
diff --git a/public/content/translations/es/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/translations/es/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
index 80b2a6844ab..7e04e787825 100644
--- a/public/content/translations/es/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
+++ b/public/content/translations/es/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
@@ -1,6 +1,6 @@
---
title: "Waffle: simulación dinámica y pruebas de llamadas a contratos"
-description: Tutorial avanzado de Waffle para el uso de simulaciones dinámicas y pruebas de llamadas a contratos
+description: "Tutorial avanzado de Waffle para el uso de simulaciones dinámicas y pruebas de llamadas a contratos"
author: "Daniel Izdebski"
tags:
[
@@ -12,7 +12,7 @@ tags:
]
skill: intermediate
lang: es
-published: 14-11-2020
+published: 2020-11-14
---
## ¿De qué trata este tutorial? {#what-is-this-tutorial-about}
diff --git a/public/content/translations/es/developers/tutorials/yellow-paper-evm/index.md b/public/content/translations/es/developers/tutorials/yellow-paper-evm/index.md
index a4e3db5ac98..d4633548eac 100644
--- a/public/content/translations/es/developers/tutorials/yellow-paper-evm/index.md
+++ b/public/content/translations/es/developers/tutorials/yellow-paper-evm/index.md
@@ -1,6 +1,6 @@
---
-title: Explicación de las especificaciones de la EVM del Yellow Paper
-description: Explicación de la parte del Yellow Paper, las especificaciones formales de Ethereum, que explica la máquina virtual de Ethereum (EVM).
+title: "Explicación de las especificaciones de la EVM del Yellow Paper"
+description: "Explicación de la parte del Yellow Paper, las especificaciones formales de Ethereum, que explica la máquina virtual de Ethereum (EVM)."
author: "qbzzt"
tags: [ "evm" ]
skill: intermediate
diff --git a/public/content/translations/es/eips/index.md b/public/content/translations/es/eips/index.md
index beac5951457..9b25aa4dd67 100644
--- a/public/content/translations/es/eips/index.md
+++ b/public/content/translations/es/eips/index.md
@@ -1,6 +1,6 @@
---
title: Propuestas de mejora de Ethereum (EIP)
-description: La información básica que necesita para entender las EIP
+description: "La información básica que necesita para entender las EIP"
lang: es
---
diff --git a/public/content/translations/es/energy-consumption/index.md b/public/content/translations/es/energy-consumption/index.md
index 2736b3bf646..b61893622b2 100644
--- a/public/content/translations/es/energy-consumption/index.md
+++ b/public/content/translations/es/energy-consumption/index.md
@@ -1,6 +1,6 @@
---
-title: Consumo energético de Ethereum
-description: Información básica que necesita para entender el consumo energético de Ethereum
+title: "Consumo energético de Ethereum"
+description: "Información básica que necesita para entender el consumo energético de Ethereum"
lang: es
---
diff --git a/public/content/translations/es/eth/supply/index.md b/public/content/translations/es/eth/supply/index.md
index 7a2dc94ab01..1a35f9c9f36 100644
--- a/public/content/translations/es/eth/supply/index.md
+++ b/public/content/translations/es/eth/supply/index.md
@@ -1,5 +1,5 @@
---
-title: Comprender el suministro y la emisión de ETH
+title: "Comprender el suministro y la emisión de ETH"
description: "Una guía para principiantes sobre el suministro y emisión de ETH, que cubre conceptos clave como: EIP, PoS y EIP-1559."
lang: es
---
diff --git a/public/content/translations/es/ethereum-forks/index.md b/public/content/translations/es/ethereum-forks/index.md
index 6a0d837ddf8..d3adba37d87 100644
--- a/public/content/translations/es/ethereum-forks/index.md
+++ b/public/content/translations/es/ethereum-forks/index.md
@@ -1,5 +1,5 @@
---
-title: Cronología de todos los forks de Ethereum (2014 hasta la actualidad)
+title: "Cronología de todos los forks de Ethereum (2014 hasta la actualidad)"
description: Una historia de la cadena de bloques de Ethereum, que incluye los principales hitos, lanzamientos y bifurcaciones.
lang: es
sidebarDepth: 1
diff --git a/public/content/translations/es/events/index.md b/public/content/translations/es/events/index.md
index a2079753e73..894d24386bb 100644
--- a/public/content/translations/es/events/index.md
+++ b/public/content/translations/es/events/index.md
@@ -1,6 +1,6 @@
---
title: Eventos de Ethereum
-description: Cómo involucrarse en la comunidad Ethereum.
+description: "Cómo involucrarse en la comunidad Ethereum."
lang: es
hideEditButton: true
---
diff --git a/public/content/translations/es/foundation/index.md b/public/content/translations/es/foundation/index.md
index 7d615b1a371..d61541d4100 100644
--- a/public/content/translations/es/foundation/index.md
+++ b/public/content/translations/es/foundation/index.md
@@ -1,6 +1,6 @@
---
title: Ethereum Foundation
-description: Obtén más información acerca de la Fundación Ethereum (EF), una organización sin ánimo de lucro dedicada a dar soporte a Ethereum y a otras tecnologías similares.
+description: "Obtén más información acerca de la Fundación Ethereum (EF), una organización sin ánimo de lucro dedicada a dar soporte a Ethereum y a otras tecnologías similares."
hideEditButton: true
lang: es
---
diff --git a/public/content/translations/es/gaming/index.md b/public/content/translations/es/gaming/index.md
index 220835a601d..5ddaf06ed0b 100644
--- a/public/content/translations/es/gaming/index.md
+++ b/public/content/translations/es/gaming/index.md
@@ -6,7 +6,7 @@ image: /images/robot-help-bar.png
sidebarDepth: 2
summaryPoint1: Las reglas y el estado del juego pueden ser aplicados por la blockchain, no por los servidores de un estudio.
summaryPoint2: Cualquiera puede crear modificaciones, bots o juegos completamente nuevos que se integren en los mismos datos en cadena.
-summaryPoint3: Las L2 diseñadas específicamente, como Redstone, y frameworks como MUD, reducen los costos lo suficiente como para permitir la jugabilidad en tiempo real.
+summaryPoint3: "Las L2 diseñadas específicamente, como Redstone, y frameworks como MUD, reducen los costos lo suficiente como para permitir la jugabilidad en tiempo real."
buttons:
- content: Más información
toId: como-funciona-el-juego-en-ethereum
diff --git a/public/content/translations/es/glossary/index.md b/public/content/translations/es/glossary/index.md
index 12a1f85246b..4214e6d8fa6 100644
--- a/public/content/translations/es/glossary/index.md
+++ b/public/content/translations/es/glossary/index.md
@@ -1,6 +1,6 @@
---
title: Glosario de Ethereum
-description: Un glosario incompleto de términos técnicos y no técnicos relacionados con Ethereum
+description: "Un glosario incompleto de términos técnicos y no técnicos relacionados con Ethereum"
lang: es
---
diff --git a/public/content/translations/es/governance/index.md b/public/content/translations/es/governance/index.md
index fb9a362581d..cae34ac2720 100644
--- a/public/content/translations/es/governance/index.md
+++ b/public/content/translations/es/governance/index.md
@@ -1,6 +1,6 @@
---
title: Gobernanza de Ethereum
-description: Introducción sobre cómo se toman las decisiones relativas a Ethereum
+description: "Introducción sobre cómo se toman las decisiones relativas a Ethereum"
lang: es
---
diff --git a/public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md b/public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md
index 7ceae2160ce..f6ce9c7a762 100644
--- a/public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md
+++ b/public/content/translations/es/guides/how-to-create-an-ethereum-account/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo «crear» una cuenta de Ethereum
-description: Guía paso a paso sobre la creación de una cuenta de Ethereum utilizando una billetera.
+title: "Cómo «crear» una cuenta de Ethereum"
+description: "Guía paso a paso sobre la creación de una cuenta de Ethereum utilizando una billetera."
lang: es
---
@@ -42,8 +42,7 @@ Algunas aplicaciones le pedirán que guarde una "frase de recuperación" secreta
-
¿Billetera instalada? Aprenda a usarla.
-
+
¿Billetera instalada? Aprenda a usarla.
Cómo usar una billetera
diff --git a/public/content/translations/es/guides/how-to-id-scam-tokens/index.md b/public/content/translations/es/guides/how-to-id-scam-tokens/index.md
index 1fc0aafd504..6ffca34f717 100644
--- a/public/content/translations/es/guides/how-to-id-scam-tokens/index.md
+++ b/public/content/translations/es/guides/how-to-id-scam-tokens/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo detectar los tókenes de estafa
-description: Detectar los tókenes de estafa, cómo hacen para parecer legítimos y cómo evitarlos.
+title: "Cómo detectar los tókenes de estafa"
+description: "Detectar los tókenes de estafa, cómo hacen para parecer legítimos y cómo evitarlos."
lang: es
---
diff --git a/public/content/translations/es/guides/how-to-revoke-token-access/index.md b/public/content/translations/es/guides/how-to-revoke-token-access/index.md
index b0fb90fb855..b7aa3e0333f 100644
--- a/public/content/translations/es/guides/how-to-revoke-token-access/index.md
+++ b/public/content/translations/es/guides/how-to-revoke-token-access/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo revocar el acceso al contrato inteligente a sus fondos en criptomonedas
-description: Guía para revocar el acceso a tókenes de contratos inteligentes engañosos
+title: "Cómo revocar el acceso al contrato inteligente a sus fondos en criptomonedas"
+description: "Guía para revocar el acceso a tókenes de contratos inteligentes engañosos"
lang: es
---
@@ -49,8 +49,7 @@ Le aconsejamos que actualice la herramienta de revocación transcurridos unos mi
-
¿Quiere saber más?
-
+
¿Quiere saber más?
Consulte nuestras demás guías
diff --git a/public/content/translations/es/guides/how-to-swap-tokens/index.md b/public/content/translations/es/guides/how-to-swap-tokens/index.md
index 11c34aa12e5..65775fbbc54 100644
--- a/public/content/translations/es/guides/how-to-swap-tokens/index.md
+++ b/public/content/translations/es/guides/how-to-swap-tokens/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo intercambiar tókenes
-description: Guía sobre cómo intercambiar tokens en Ethereum
+title: "Cómo intercambiar tókenes"
+description: "Guía sobre cómo intercambiar tokens en Ethereum"
lang: es
---
@@ -52,8 +52,7 @@ Recibirá automáticamente los tokens intercambiados en su billetera una vez que
-
¿Quiere saber más?
-
+
¿Quiere saber más?
Vea nuestras otras guías
diff --git a/public/content/translations/es/guides/how-to-use-a-bridge/index.md b/public/content/translations/es/guides/how-to-use-a-bridge/index.md
index 324b39552aa..01fcc1868cc 100644
--- a/public/content/translations/es/guides/how-to-use-a-bridge/index.md
+++ b/public/content/translations/es/guides/how-to-use-a-bridge/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo pasar los tókenes a la capa 2
-description: Una guía que explica cómo pasar tókenes de Ethereum a la capa 2 usando un puente.
+title: "Cómo pasar los tókenes a la capa 2"
+description: "Una guía que explica cómo pasar tókenes de Ethereum a la capa 2 usando un puente."
lang: es
---
@@ -54,8 +54,7 @@ Puede utilizar [chainlist.org](http://chainlist.org) para encontrar los detalles
-
¿Quiere saber más?
-
+
¿Quiere saber más?
Consulte nuestras demás guías
diff --git a/public/content/translations/es/guides/how-to-use-a-wallet/index.md b/public/content/translations/es/guides/how-to-use-a-wallet/index.md
index 0cf408921d1..9186e95b321 100644
--- a/public/content/translations/es/guides/how-to-use-a-wallet/index.md
+++ b/public/content/translations/es/guides/how-to-use-a-wallet/index.md
@@ -1,7 +1,7 @@
---
-title: Cómo utilizar una cartera
-metaTitle: Cómo usar carteras de Ethereum | Guía detallada
-description: Una guía para explicar cómo enviar, recivir tókenes y conectarse con proyectos de web3.
+title: "Cómo utilizar una cartera"
+metaTitle: "Cómo usar carteras de Ethereum | Guía detallada"
+description: "Una guía para explicar cómo enviar, recivir tókenes y conectarse con proyectos de web3."
lang: es
---
@@ -65,8 +65,7 @@ Su dirección será la misma en todos los proyectos de Ethereum. No tiene que re
-
¿Quiere saber más?
-
+
¿Quiere saber más?
Consulte nuestras demás guías
diff --git a/public/content/translations/es/guides/index.md b/public/content/translations/es/guides/index.md
index cdd7db4e961..23810efea52 100644
--- a/public/content/translations/es/guides/index.md
+++ b/public/content/translations/es/guides/index.md
@@ -1,6 +1,6 @@
---
-title: Guías de Ethereum
-description: Una colección de guías prácticas que explican los conceptos básicos del uso de Ethereum para principiantes.
+title: "Guías de Ethereum"
+description: "Una colección de guías prácticas que explican los conceptos básicos del uso de Ethereum para principiantes."
lang: es
---
diff --git a/public/content/translations/es/how-to-create-an-ethereum-account/index.md b/public/content/translations/es/how-to-create-an-ethereum-account/index.md
index 0ef4de89baf..d969b46689b 100644
--- a/public/content/translations/es/how-to-create-an-ethereum-account/index.md
+++ b/public/content/translations/es/how-to-create-an-ethereum-account/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo "crear" una cuenta de Ethereum
-description: Guía paso a paso sobre la creación de una cuenta de Ethereum utilizando una billetera.
+title: "Cómo \"crear\" una cuenta de Ethereum"
+description: "Guía paso a paso sobre la creación de una cuenta de Ethereum utilizando una billetera."
lang: es
---
@@ -43,7 +43,8 @@ Algunas aplicaciones le pedirán que guarde una "frase de recuperación" secreta
-
¿Billetera instalada? Aprenda a usarla.
+
¿Billetera instalada? Aprenda a usarla.
+
Cómo utilizar una cartera
diff --git a/public/content/translations/es/nft/index.md b/public/content/translations/es/nft/index.md
index 67e802718b2..ec598e146f3 100644
--- a/public/content/translations/es/nft/index.md
+++ b/public/content/translations/es/nft/index.md
@@ -1,15 +1,15 @@
---
-title: Tókenes no fungibles (NFT)
-metaTitle: ¿Qué son los NFT? | Beneficios y uso
-description: Una visión general de los NFT en Ethereum
+title: "Tókenes no fungibles (NFT)"
+metaTitle: "¿Qué son los NFT? | Beneficios y uso"
+description: "Una visión general de los NFT en Ethereum"
lang: es
template: use-cases
emoji: ":frame_with_picture:"
sidebarDepth: 2
image: /images/infrastructure_transparent.png
-alt: Un logotipo Eth mostrado a través de un holograma.
-summaryPoint1: Una forma de representar cualquier cosa única como un activo basado en Ethereum.
-summaryPoint2: Los NFT están otorgando más poder a los creadores de contenido que nunca.
+alt: "Un logotipo Eth mostrado a través de un holograma."
+summaryPoint1: "Una forma de representar cualquier cosa única como un activo basado en Ethereum."
+summaryPoint2: "Los NFT están otorgando más poder a los creadores de contenido que nunca."
summaryPoint3: Impulsados por contratos inteligentes en la cadena de bloques de Ethereum.
---
@@ -60,8 +60,7 @@ Tal vez sea usted un artista que quiere compartir su arte a través de los NFT,
-
Explore, compre o cree sus propios NFT de arte/coleccionables...
-
+
Explore, compre o cree sus propios NFT de arte/coleccionables...
Explorar arte NFT
@@ -82,7 +81,7 @@ Este sitio web también tiene un dominio alternativo impulsado por NFTs, **ether
## ¿Cómo funcionan los NFT? {#how-nfts-work}
-Los NFT, como cualquier objeto digital en la cadena de bloques de Ethereum, se crean a través de un programa especial de computación llamado <>. Estos contratos siguen ciertas reglas, como los estándares [ERC-721](/glossary/#erc-721) o [ERC-1155](/glossary/#erc-1155), que determinan lo que el contrato puede hacer.
+Los NFT, como cualquier objeto digital en la cadena de bloques de Ethereum, se crean a través de un programa especial de computación llamado «contrato inteligente». Estos contratos siguen ciertas reglas, como los estándares [ERC-721](/glossary/#erc-721) o [ERC-1155](/glossary/#erc-1155), que determinan lo que el contrato puede hacer.
Los contratos inteligentes de NFT pueden hacer algunas cosas importantes:
diff --git a/public/content/translations/es/payments/index.md b/public/content/translations/es/payments/index.md
index 6d830736f64..0ed8db97865 100644
--- a/public/content/translations/es/payments/index.md
+++ b/public/content/translations/es/payments/index.md
@@ -8,7 +8,7 @@ emoji: ":frame_with_picture:"
sidebarDepth: 2
image: /images/impact_transparent.png
alt: Un logo de Ethereum aparece junto a manos extendidas.
-summaryPoint1: Un mundo en que el dinero se mueve tan libremente como la información
+summaryPoint1: "Un mundo en que el dinero se mueve tan libremente como la información"
summaryPoint2: Abierto y global, permite a cualquier persona realizar transacciones sin fronteras
summaryPoint3: Pagos recibidos en un minuto
---
@@ -41,7 +41,8 @@ La comunidad de Ethereum ha creado **un sistema financiero alternativo sólido**
Los usuarios de Ethereum pueden utilizar **monedas estables, es decir, tókenes vinculados a monedas fuertes como el dólar estadounidense**. Al ganar y ahorrar en criptomonedas, las personas pueden protegerse de la alta inflación en su país, lo que contribuye a preservar o incluso aumentar su poder adquisitivo. Esto también facilita los pagos de bienes y servicios, tanto a escala local como global.
- Para conocer más a fondo las monedas estables
+ Para conocer más a fondo las monedas estables
+
## Compra de bienes y pago de servicios {#buying-goods-and-payment-for-services}
@@ -59,10 +60,10 @@ En países cuyos medios de pago están desconectados del resto del mundo, las so
-
Cree su cuenta de Ethereum con una aplicación de cartera hoy.
-
+
Cree su cuenta de Ethereum con una aplicación de cartera hoy.
-Comenzar
+Comenzar
+
@@ -180,8 +181,7 @@ Desde facilitar la ayuda rápida en desastres hasta empoderar a trabajadores en
-
Es hora de crear su propia cuenta en Ethereum.
-
+
Es hora de crear su propia cuenta en Ethereum.
¡Comience ya!
diff --git a/public/content/translations/es/prediction-markets/index.md b/public/content/translations/es/prediction-markets/index.md
index 565afd322da..dac132d71e0 100644
--- a/public/content/translations/es/prediction-markets/index.md
+++ b/public/content/translations/es/prediction-markets/index.md
@@ -1,16 +1,16 @@
---
-title: Predicción de mercados
+title: "Predicción de mercados"
lang: es
template: use-cases
image: /images/use-cases/prediction-markets.png
sidebarDepth: 2
-summaryPoint1: Reciba incentivos económicos por generar pronósticos precisos
+summaryPoint1: "Reciba incentivos económicos por generar pronósticos precisos"
summaryPoint2: Predicciones de alta calidad sobre eventos futuros
buttons:
- content: Más información
- toId: cómo-funcionan-los-mercados-de-predicción
+ toId: "cómo-funcionan-los-mercados-de-predicción"
- content: Explorar las aplicaciones
- toId: encontrar-un-mercado-de-predicción
+ toId: "encontrar-un-mercado-de-predicción"
isSecondary: false
---
diff --git a/public/content/translations/es/privacy/index.md b/public/content/translations/es/privacy/index.md
index 4c393cdf454..1243557431b 100644
--- a/public/content/translations/es/privacy/index.md
+++ b/public/content/translations/es/privacy/index.md
@@ -1,6 +1,6 @@
---
title: Privacidad en Ethereum
-description: Herramientas y técnicas para proteger su privacidad en Ethereum
+description: "Herramientas y técnicas para proteger su privacidad en Ethereum"
lang: es
---
diff --git a/public/content/translations/es/real-world-assets/index.md b/public/content/translations/es/real-world-assets/index.md
index e3d80c1738f..1a2a2696355 100644
--- a/public/content/translations/es/real-world-assets/index.md
+++ b/public/content/translations/es/real-world-assets/index.md
@@ -1,14 +1,14 @@
---
title: Activos del mundo real (RWA)
-metaTitle: ¿Qué son los activos del mundo real (RWA)? | Beneficios y uso de activos del mundo real
-description: Visión general de los activos del mundo real en Ethereum
+metaTitle: "¿Qué son los activos del mundo real (RWA)? | Beneficios y uso de activos del mundo real"
+description: "Visión general de los activos del mundo real en Ethereum"
lang: es
template: use-cases
emoji: ":house_buildings:"
image: /images/man-and-dog-playing.png
alt: Hombre y perro jugando.
sidebarDepth: 2
-summaryPoint1: Un método para convertir valiosos productos básicos en tókenes digitales.
+summaryPoint1: "Un método para convertir valiosos productos básicos en tókenes digitales."
summaryPoint2: Ahora puede poseer partes de activos u objetos de la vida real, en vez de tener que comprar una propiedad o un objeto en su totalidad.
summaryPoint3: Conecta las finanzas tradicionales con el ecosistema de la cadena de bloques.
---
diff --git a/public/content/translations/es/refi/index.md b/public/content/translations/es/refi/index.md
index a44310bc966..68f1b84f362 100644
--- a/public/content/translations/es/refi/index.md
+++ b/public/content/translations/es/refi/index.md
@@ -7,9 +7,9 @@ emoji: ":recycle:"
sidebarDepth: 2
image: /images/future_transparent.png
alt: ""
-summaryPoint1: Un sistema económico alternativo construido con principios regenerativos
-summaryPoint2: Un intento de utilizar Ethereum para solucionar crisis de coordinación a escala global, como el cambio climático.
-summaryPoint3: Una herramienta para escalar drásticamente activos de beneficio ecológico como los créditos de carbono verificados.
+summaryPoint1: "Un sistema económico alternativo construido con principios regenerativos"
+summaryPoint2: "Un intento de utilizar Ethereum para solucionar crisis de coordinación a escala global, como el cambio climático."
+summaryPoint3: "Una herramienta para escalar drásticamente activos de beneficio ecológico como los créditos de carbono verificados."
---
## ¿Qué son las ReFi? {#what-is-refi}
diff --git a/public/content/translations/es/restaking/index.md b/public/content/translations/es/restaking/index.md
index 2c7468e8e6d..af0df62750b 100644
--- a/public/content/translations/es/restaking/index.md
+++ b/public/content/translations/es/restaking/index.md
@@ -1,12 +1,12 @@
---
title: Restaking
-metaTitle: ¿Qué es el restaking? | Beneficios y uso del restaking
+metaTitle: "¿Qué es el restaking? | Beneficios y uso del restaking"
description: Utilice ETH en staking para asegurar otros servicios descentralizados y obtenga recompensas adicionales.
lang: es
template: use-cases
emoji: ":recycle:"
image: /images/use-cases/restaking.png
-alt: Una representación visual del restaking en Ethereum.
+alt: "Una representación visual del restaking en Ethereum."
sidebarDepth: 2
summaryPoint1: Utilice ETH en staking para asegurar otros servicios descentralizados y obtenga recompensas adicionales.
buttons:
diff --git a/public/content/translations/es/roadmap/account-abstraction/index.md b/public/content/translations/es/roadmap/account-abstraction/index.md
index fd85aa26868..01a741a4702 100644
--- a/public/content/translations/es/roadmap/account-abstraction/index.md
+++ b/public/content/translations/es/roadmap/account-abstraction/index.md
@@ -1,6 +1,6 @@
---
-title: Abstracción de cuenta
-description: Una visión general de los planes de Ethereum para hacer que las cuentas de usuario sean más sencillas y seguras.
+title: "Abstracción de cuenta"
+description: "Una visión general de los planes de Ethereum para hacer que las cuentas de usuario sean más sencillas y seguras."
lang: es
summaryPoints:
- La abstracción de cuenta facilita la construcción de carteras con contrato inteligente.
diff --git a/public/content/translations/es/roadmap/beacon-chain/index.md b/public/content/translations/es/roadmap/beacon-chain/index.md
index 2de7a9518c3..6ade2ffd4de 100644
--- a/public/content/translations/es/roadmap/beacon-chain/index.md
+++ b/public/content/translations/es/roadmap/beacon-chain/index.md
@@ -5,9 +5,9 @@ lang: es
template: upgrade
image: /images/upgrades/core.png
alt:
-summaryPoint1: La Cadena de Baliza introdujo la prueba de participación en el ecosistema de Ethereum.
-summaryPoint2: Se fusionó con la cadena de prueba de trabajo original de Ethereum en septiembre de 2022.
-summaryPoint3: La Cadena de Baliza introdujo la lógica de consenso y el protocolo de gossiping de bloques que ahora asegura Ethereum.
+summaryPoint1: "La Cadena de Baliza introdujo la prueba de participación en el ecosistema de Ethereum."
+summaryPoint2: "Se fusionó con la cadena de prueba de trabajo original de Ethereum en septiembre de 2022."
+summaryPoint3: "La Cadena de Baliza introdujo la lógica de consenso y el protocolo de gossiping de bloques que ahora asegura Ethereum."
---
diff --git a/public/content/translations/es/roadmap/dencun/index.md b/public/content/translations/es/roadmap/dencun/index.md
index 467e9f3e4ab..94365a48ffa 100644
--- a/public/content/translations/es/roadmap/dencun/index.md
+++ b/public/content/translations/es/roadmap/dencun/index.md
@@ -1,6 +1,6 @@
---
title: Preguntas frecuentes sobre Cancun-Deneb (Dencun)
-description: Preguntas frecuentes relacionadas con la actualización de red Cancun-Deneb (Dencun)
+description: "Preguntas frecuentes relacionadas con la actualización de red Cancun-Deneb (Dencun)"
lang: es
---
diff --git a/public/content/translations/es/roadmap/fusaka/index.md b/public/content/translations/es/roadmap/fusaka/index.md
index cbf45cf2c3d..819d20aaea3 100644
--- a/public/content/translations/es/roadmap/fusaka/index.md
+++ b/public/content/translations/es/roadmap/fusaka/index.md
@@ -1,6 +1,6 @@
---
title: Fulu-Osaka (Fusaka)
-description: Conozca mejor la actualización del protocolo Fusaka
+description: "Conozca mejor la actualización del protocolo Fusaka"
lang: es
---
diff --git a/public/content/translations/es/roadmap/fusaka/peerdas/index.md b/public/content/translations/es/roadmap/fusaka/peerdas/index.md
index 1db9b83739c..3a7db3ed9e5 100644
--- a/public/content/translations/es/roadmap/fusaka/peerdas/index.md
+++ b/public/content/translations/es/roadmap/fusaka/peerdas/index.md
@@ -1,6 +1,6 @@
---
title: PeerDAS
-description: Aprenda sobre PeerDAS como parte de la actualización del protocolo de Ethereum Fusaka
+description: "Aprenda sobre PeerDAS como parte de la actualización del protocolo de Ethereum Fusaka"
lang: es
---
diff --git a/public/content/translations/es/roadmap/merge/index.md b/public/content/translations/es/roadmap/merge/index.md
index d5e84488d7c..97c65708087 100644
--- a/public/content/translations/es/roadmap/merge/index.md
+++ b/public/content/translations/es/roadmap/merge/index.md
@@ -1,14 +1,14 @@
---
-title: La Fusión
-description: Conozca más sobre La Fusión y sobre cuándo la red principal de Ethereum implementará la prueba de participación.
+title: "La Fusión"
+description: "Conozca más sobre La Fusión y sobre cuándo la red principal de Ethereum implementará la prueba de participación."
lang: es
template: upgrade
image: /images/upgrades/merge.png
alt:
-summaryPoint1: La Red Principal de Ethereum usa prueba de participación, pero este no fue siempre el caso.
-summaryPoint2: La actualización del mecanismo original de prueba de trabajo a prueba de participación se denominó "La Fusión".
-summaryPoint3: La Fusión se refiere a la fusión de la red principal original de Ethereum con una cadena de bloques de prueba de participación independiente llamada Cadena de Baliza, que ahora existe como una sola cadena.
-summaryPoint4: La Fusión redujo el consumo de energía de Ethereum en un ~99,95%.
+summaryPoint1: "La Red Principal de Ethereum usa prueba de participación, pero este no fue siempre el caso."
+summaryPoint2: "La actualización del mecanismo original de prueba de trabajo a prueba de participación se denominó \"La Fusión\"."
+summaryPoint3: "La Fusión se refiere a la fusión de la red principal original de Ethereum con una cadena de bloques de prueba de participación independiente llamada Cadena de Baliza, que ahora existe como una sola cadena."
+summaryPoint4: "La Fusión redujo el consumo de energía de Ethereum en un ~99,95%."
---
diff --git a/public/content/translations/es/roadmap/merge/issuance/index.md b/public/content/translations/es/roadmap/merge/issuance/index.md
index 060b1756ed6..552127d6c76 100644
--- a/public/content/translations/es/roadmap/merge/issuance/index.md
+++ b/public/content/translations/es/roadmap/merge/issuance/index.md
@@ -1,6 +1,6 @@
---
-title: Cómo La Fusión impactó en el suministro de ETH
-description: Explicación de cómo La Fusión impactó en el suministro de ETH
+title: "Cómo La Fusión impactó en el suministro de ETH"
+description: "Explicación de cómo La Fusión impactó en el suministro de ETH"
lang: es
---
diff --git a/public/content/translations/es/roadmap/pbs/index.md b/public/content/translations/es/roadmap/pbs/index.md
index e22ec2d92a3..95d21444098 100644
--- a/public/content/translations/es/roadmap/pbs/index.md
+++ b/public/content/translations/es/roadmap/pbs/index.md
@@ -1,6 +1,6 @@
---
-title: Separación del creador de propuestas
-description: Aprenda cómo y por qué los validadores de Ethereum separarán sus responsabilidades de construcción y transmisión de bloques.
+title: "Separación del creador de propuestas"
+description: "Aprenda cómo y por qué los validadores de Ethereum separarán sus responsabilidades de construcción y transmisión de bloques."
lang: es
---
diff --git a/public/content/translations/es/roadmap/pectra/7702/index.md b/public/content/translations/es/roadmap/pectra/7702/index.md
index fa74497748f..bf611c1603d 100644
--- a/public/content/translations/es/roadmap/pectra/7702/index.md
+++ b/public/content/translations/es/roadmap/pectra/7702/index.md
@@ -1,6 +1,6 @@
---
title: Directrices de Pectra 7702
-description: Consulte más información sobre 7702 en la publicación de Pectra
+description: "Consulte más información sobre 7702 en la publicación de Pectra"
lang: es
---
diff --git a/public/content/translations/es/roadmap/pectra/index.md b/public/content/translations/es/roadmap/pectra/index.md
index 7c3f088b879..69fcf338caf 100644
--- a/public/content/translations/es/roadmap/pectra/index.md
+++ b/public/content/translations/es/roadmap/pectra/index.md
@@ -1,6 +1,6 @@
---
title: Prague-Electra (Pectra)
-description: Conozca la actualización del protocolo Pectra
+description: "Conozca la actualización del protocolo Pectra"
lang: es
---
diff --git a/public/content/translations/es/roadmap/pectra/maxeb/index.md b/public/content/translations/es/roadmap/pectra/maxeb/index.md
index 719a1bbd4f2..2dc69e6b0a8 100644
--- a/public/content/translations/es/roadmap/pectra/maxeb/index.md
+++ b/public/content/translations/es/roadmap/pectra/maxeb/index.md
@@ -1,6 +1,6 @@
---
title: MaxEB de Pectra
-description: Más información sobre MaxEB en la publicación de Pectra
+description: "Más información sobre MaxEB en la publicación de Pectra"
lang: es
---
diff --git a/public/content/translations/es/roadmap/scaling/index.md b/public/content/translations/es/roadmap/scaling/index.md
index e217f6c7266..2efa1807594 100644
--- a/public/content/translations/es/roadmap/scaling/index.md
+++ b/public/content/translations/es/roadmap/scaling/index.md
@@ -1,6 +1,6 @@
---
title: Escalar en Ethereum
-description: Los rollups agrupan transacciones fuera de cadena, reduciendo los costes para el usuario. Sin embargo, la forma en que los rollups usan datos actualmente es muy costosa, limitando cuán baratas pueden ser las transacciones. Proto-anksharing se encarga de solucionarlo.
+description: "Los rollups agrupan transacciones fuera de cadena, reduciendo los costes para el usuario. Sin embargo, la forma en que los rollups usan datos actualmente es muy costosa, limitando cuán baratas pueden ser las transacciones. Proto-anksharing se encarga de solucionarlo."
lang: es
image: /images/roadmap/roadmap-transactions.png
alt: "Hoja de ruta de Ethereum"
diff --git a/public/content/translations/es/roadmap/secret-leader-election/index.md b/public/content/translations/es/roadmap/secret-leader-election/index.md
index 4f90024aedc..bc42a528aca 100644
--- a/public/content/translations/es/roadmap/secret-leader-election/index.md
+++ b/public/content/translations/es/roadmap/secret-leader-election/index.md
@@ -1,6 +1,6 @@
---
-title: Elección secreta del líder
-description: Explicación de cómo la elección secreta de líder puede ayudar a proteger a los validadores contra ataques.
+title: "Elección secreta del líder"
+description: "Explicación de cómo la elección secreta de líder puede ayudar a proteger a los validadores contra ataques."
lang: es
summaryPoints:
- La dirección IP de los proponentes del bloque se puede conocer de antemano, lo que los hace vulnerables a ataques.
diff --git a/public/content/translations/es/roadmap/security/index.md b/public/content/translations/es/roadmap/security/index.md
index 7566e6ff56e..487b35d72b7 100644
--- a/public/content/translations/es/roadmap/security/index.md
+++ b/public/content/translations/es/roadmap/security/index.md
@@ -1,6 +1,6 @@
---
-title: Un Ethereum más seguro
-description: Ethereum es la plataforma de contratos inteligentes más segura y descentralizada que existe. Sin embargo, todavía se pueden hacer mejoras para que Ethereum siga resistiendo a cualquier tipo de ataque en el futuro.
+title: "Un Ethereum más seguro"
+description: "Ethereum es la plataforma de contratos inteligentes más segura y descentralizada que existe. Sin embargo, todavía se pueden hacer mejoras para que Ethereum siga resistiendo a cualquier tipo de ataque en el futuro."
lang: es
image: /images/roadmap/roadmap-security.png
alt: "Hoja de ruta de Ethereum"
diff --git a/public/content/translations/es/roadmap/single-slot-finality/index.md b/public/content/translations/es/roadmap/single-slot-finality/index.md
index 1c0dab1c58e..0178dd6dd7f 100644
--- a/public/content/translations/es/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/es/roadmap/single-slot-finality/index.md
@@ -1,6 +1,6 @@
---
-title: Finalidad de la ranura única
-description: Explicación de la finalidad de la ranura única
+title: "Finalidad de la ranura única"
+description: "Explicación de la finalidad de la ranura única"
lang: es
---
@@ -37,7 +37,7 @@ Con el diseño del mecanismo actual, para acortar la finalidad, es necesario que
El mecanismo de consenso actual combina certificaciones de multiples validadores, conocidos como comités, para reducir el número de mensajes que cada validador tiene que procesar para validar un bloque. Cada validador tiene una oportunidad para certificar en cada época (32 ranuras) pero en cada ranura, solo un subgrupo de validadores, conocido como comité de certificación. Ellos lo hacen al dividirse en subredes en las que se seleccionan a unos cuantos validadores para ser «agregadores». Cada agregador combina todas las firmas de parte de los validadores en su subred en una sola firma. Los agregadores que incluyen los números más grandes de contribuidores individuales pasan su firma combinada al bloque del proponente, quien la incluye en el bloque, junto con la firma combinada de otros comités.
-Este proceso proporciona suficiente capacidad para que cada validador vote en cada época, ya que 32 ranuras \* 64 comités \* 256 validadores por comité = 524.288 validadores por época\`. Al cierre de la edición de este documento (febrero de 2023) hay ~513.000 validadores activos.
+Este proceso proporciona suficiente capacidad para que cada validador vote en cada época, ya que 32 ranuras \* 64 comités \* 256 validadores por comité = 524.288 validadores por época`. Al cierre de la edición de este documento (febrero de 2023) hay ~513.000 validadores activos.
En este esquema, cada validador solo puede votar en un bloque para distribuir sus certificaciones a través de la época completa. Sin embargo, hay formas potenciales de mejorar el mecanismo para que _cada validador tenga la oportunidad de certificar en cada ranura_.
diff --git a/public/content/translations/es/roadmap/statelessness/index.md b/public/content/translations/es/roadmap/statelessness/index.md
index 355933b7811..b586128a989 100644
--- a/public/content/translations/es/roadmap/statelessness/index.md
+++ b/public/content/translations/es/roadmap/statelessness/index.md
@@ -1,6 +1,6 @@
---
title: Vencimiento del estado, sin estado e historial
-description: Explicación del historial de vencimiento y sin estado de Ethereum
+description: "Explicación del historial de vencimiento y sin estado de Ethereum"
lang: es
---
diff --git a/public/content/translations/es/roadmap/verkle-trees/index.md b/public/content/translations/es/roadmap/verkle-trees/index.md
index 3d4a839e4e8..c9728a88109 100644
--- a/public/content/translations/es/roadmap/verkle-trees/index.md
+++ b/public/content/translations/es/roadmap/verkle-trees/index.md
@@ -1,6 +1,6 @@
---
-title: Árboles Verkle
-description: Una descripción de alto nivel de los árboles Verkle y cómo se utilizarán para actualizar Ethereum
+title: "Árboles Verkle"
+description: "Una descripción de alto nivel de los árboles Verkle y cómo se utilizarán para actualizar Ethereum"
lang: es
summaryPoints:
- Descubra qué son los árboles de Verkle
diff --git a/public/content/translations/es/security/index.md b/public/content/translations/es/security/index.md
index ead7f6172ef..81c26ba4359 100644
--- a/public/content/translations/es/security/index.md
+++ b/public/content/translations/es/security/index.md
@@ -1,5 +1,5 @@
---
-title: Seguridad y prevención de fraudes en Ethereum
+title: "Seguridad y prevención de fraudes en Ethereum"
description: Actuar con seguridad en Ethereum
lang: es
---
diff --git a/public/content/translations/es/smart-contracts/index.md b/public/content/translations/es/smart-contracts/index.md
index 64ff6f9f8f2..bada1db6302 100644
--- a/public/content/translations/es/smart-contracts/index.md
+++ b/public/content/translations/es/smart-contracts/index.md
@@ -1,7 +1,7 @@
---
title: Contratos inteligentes
metaTitle: "Contratos inteligentes: Qué son y cuáles son sus beneficios."
-description: Una introducción sin tecnicismos a los contratos inteligentes
+description: "Una introducción sin tecnicismos a los contratos inteligentes"
lang: es
---
diff --git a/public/content/translations/es/social-networks/index.md b/public/content/translations/es/social-networks/index.md
index fb8ea9ef5f3..c3428fb5eee 100644
--- a/public/content/translations/es/social-networks/index.md
+++ b/public/content/translations/es/social-networks/index.md
@@ -1,12 +1,12 @@
---
title: Redes sociales descentralizadas
-description: Una visión general de las redes sociales descentralizadas en Ethereum
+description: "Una visión general de las redes sociales descentralizadas en Ethereum"
lang: es
template: use-cases
emoji: ":mega:"
sidebarDepth: 2
image: /images/ethereum-learn.png
-summaryPoint1: Plataformas basadas en la cadena de bloques para interacción social, creación y distribución de contenidos.
+summaryPoint1: "Plataformas basadas en la cadena de bloques para interacción social, creación y distribución de contenidos."
summaryPoint2: Las redes sociales descentralizadas protegen la privacidad del usuario y mejoran la seguridad de los datos.
summaryPoint3: Tokens y NFT crean nuevas formas de monetizar contenido.
---
diff --git a/public/content/translations/es/staking/dvt/index.md b/public/content/translations/es/staking/dvt/index.md
index 8d88237adcf..3a8b90027b4 100644
--- a/public/content/translations/es/staking/dvt/index.md
+++ b/public/content/translations/es/staking/dvt/index.md
@@ -1,6 +1,6 @@
---
-title: Tecnología de validador distribuido
-description: La tecnología de valor distribuido (o DVT) permite la operación de un validador de Ethereum distribuida por varias partes.
+title: "Tecnología de validador distribuido"
+description: "La tecnología de valor distribuido (o DVT) permite la operación de un validador de Ethereum distribuida por varias partes."
lang: es
---
diff --git a/public/content/translations/es/staking/pools/index.md b/public/content/translations/es/staking/pools/index.md
index 96b7e275ef2..3af50786166 100644
--- a/public/content/translations/es/staking/pools/index.md
+++ b/public/content/translations/es/staking/pools/index.md
@@ -1,6 +1,6 @@
---
title: Staking en conjunto
-description: Conozca más a fondo las reservas de participación
+description: "Conozca más a fondo las reservas de participación"
lang: es
template: staking
emoji: ":money_with_wings:"
diff --git a/public/content/translations/es/staking/saas/index.md b/public/content/translations/es/staking/saas/index.md
index 4860a861321..ebe9c2bef8f 100644
--- a/public/content/translations/es/staking/saas/index.md
+++ b/public/content/translations/es/staking/saas/index.md
@@ -1,6 +1,6 @@
---
-title: Participación como servicio
-description: Conozca más a fondo la participación como servicio
+title: "Participación como servicio"
+description: "Conozca más a fondo la participación como servicio"
lang: es
template: staking
emoji: ":money_with_wings:"
diff --git a/public/content/translations/es/staking/solo/index.md b/public/content/translations/es/staking/solo/index.md
index 6e5a3cc4906..aa124fd2b68 100644
--- a/public/content/translations/es/staking/solo/index.md
+++ b/public/content/translations/es/staking/solo/index.md
@@ -1,6 +1,6 @@
---
title: Participe desde casa con sus ETH
-description: Un resumen de cómo empezar con la partición desde casa de sus ETH
+description: "Un resumen de cómo empezar con la partición desde casa de sus ETH"
lang: es
template: staking
emoji: ":money_with_wings:"
diff --git a/public/content/translations/es/staking/withdrawals/index.md b/public/content/translations/es/staking/withdrawals/index.md
index 11d52962fd1..15c584cb520 100644
--- a/public/content/translations/es/staking/withdrawals/index.md
+++ b/public/content/translations/es/staking/withdrawals/index.md
@@ -1,6 +1,6 @@
---
title: Retiradas de participaciones
-description: La página resume lo que son los «empujones de retirada», cómo funcionan y lo que los participantes deben hacer para obtener sus recompensas
+description: "La página resume lo que son los «empujones de retirada», cómo funcionan y lo que los participantes deben hacer para obtener sus recompensas"
lang: es
template: staking
image: /images/staking/leslie-withdrawal.png
diff --git a/public/content/translations/es/web3/index.md b/public/content/translations/es/web3/index.md
index 4e5b185f863..9b8bc17bf21 100644
--- a/public/content/translations/es/web3/index.md
+++ b/public/content/translations/es/web3/index.md
@@ -1,6 +1,6 @@
---
-title: ¿Qué es Web3 y por qué es importante?
-description: Una introducción a la Web3 —la próxima evolución de Internet— y por qué importa.
+title: "¿Qué es Web3 y por qué es importante?"
+description: "Una introducción a la Web3 —la próxima evolución de Internet— y por qué importa."
lang: es
---
@@ -69,8 +69,7 @@ Web3 permite la propiedad directa a través de [tokens no fungibles (NFTs)](/glo
-
Saber más sobre NFT
-
+
Saber más sobre NFT
Más sobre los NFTs
@@ -98,8 +97,7 @@ Sin embargo, las personas definen muchas comunidades Web3 como si fueran DAO. To
-
Más información sobre las DAO
-
+
Más información sobre las DAO
Más sobre las DAOs
diff --git a/public/content/translations/es/what-are-apps/index.md b/public/content/translations/es/what-are-apps/index.md
index 5517aa7017c..fe0b479e976 100644
--- a/public/content/translations/es/what-are-apps/index.md
+++ b/public/content/translations/es/what-are-apps/index.md
@@ -1,14 +1,14 @@
---
title: Aplicaciones de Ethereum
metaTitle: Aplicaciones de Ethereum | Aplicaciones descentralizadas en Ethereum
-description: Las aplicaciones en Ethereum son gratis, globales y usan cadenas de bloques públicas en vez de servidores de compañías privadas. Esto significa que puede usar la misma cuenta en cada proyecto y mantener su privacidad.
+description: "Las aplicaciones en Ethereum son gratis, globales y usan cadenas de bloques públicas en vez de servidores de compañías privadas. Esto significa que puede usar la misma cuenta en cada proyecto y mantener su privacidad."
lang: es
template: use-cases
emoji: ":handshake:"
sidebarDepth: 2
showDropdown: false
image: /images/doge-computer.png
-summary: Las aplicaciones en Ethereum son gratis, globales y usan cadenas de bloques públicas en vez de servidores de compañías privadas. Esto significa que puede usar la misma cuenta en cada proyecto y mantener su privacidad.
+summary: "Las aplicaciones en Ethereum son gratis, globales y usan cadenas de bloques públicas en vez de servidores de compañías privadas. Esto significa que puede usar la misma cuenta en cada proyecto y mantener su privacidad."
---
## Aplicaciones con superpoderes {#apps-with-superpowers}
diff --git a/public/content/translations/es/whitepaper/index.md b/public/content/translations/es/whitepaper/index.md
index ee37a0898f7..a35c7ef7096 100644
--- a/public/content/translations/es/whitepaper/index.md
+++ b/public/content/translations/es/whitepaper/index.md
@@ -1,6 +1,6 @@
---
title: Informe oficial de Ethereum
-description: Una guía introductoria a Ethereum publicada en 2013 antes de su lanzamiento.
+description: "Una guía introductoria a Ethereum publicada en 2013 antes de su lanzamiento."
lang: es
sidebarDepth: 2
hideEditButton: true
diff --git a/public/content/translations/es/wrapped-eth/index.md b/public/content/translations/es/wrapped-eth/index.md
index d74e18575bf..effb220dda0 100644
--- a/public/content/translations/es/wrapped-eth/index.md
+++ b/public/content/translations/es/wrapped-eth/index.md
@@ -1,6 +1,6 @@
---
-title: ¿Qué es Wrapped Ether (WETH)?
-description: Introducción a Wrapped Ether (WETH), un wrapper compatible con ERC20 para Ether (ETH)
+title: "¿Qué es Wrapped Ether (WETH)?"
+description: "Introducción a Wrapped Ether (WETH), un wrapper compatible con ERC20 para Ether (ETH)"
lang: es
---
@@ -8,8 +8,7 @@ lang: es
-
Conecte su cartera para agrupar o desagrupar ETH en cualquier cadena en [WrapETH.com](https://www.wrapeth.com/)
-
+
Conecte su cartera para agrupar o desagrupar ETH en cualquier cadena en [WrapETH.com](https://www.wrapeth.com/)
Ether (ETH) es la moneda principal de Ethereum. Se utiliza para varios propósitos como staking, como moneda, y pagar comisiones de gas para las transacciones. **WETH es efectivamente una forma actualizada de ETH con alguna funcionalidad adicional requerida por muchas aplicaciones y [tokens ERC-20](/glossary/#erc-20)**, que son otros tipos de activos digitales en Ethereum. Para trabajar con estos tokens, ETH debe seguir las mismas reglas que ellos, conocidas como el estándar ERC-20.
diff --git a/public/content/translations/es/zero-knowledge-proofs/index.md b/public/content/translations/es/zero-knowledge-proofs/index.md
index 11d144bc035..b76c13cb9f5 100644
--- a/public/content/translations/es/zero-knowledge-proofs/index.md
+++ b/public/content/translations/es/zero-knowledge-proofs/index.md
@@ -1,6 +1,6 @@
---
title: Pruebas de conocimiento cero
-description: Una introducción no técnica a las pruebas de conocimiento cero para principiantes.
+description: "Una introducción no técnica a las pruebas de conocimiento cero para principiantes."
lang: es
---
From 7c6c75a324ff6d012090b7673643759a37891c1d Mon Sep 17 00:00:00 2001
From: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 11:24:56 -0300
Subject: [PATCH 580/589] patch(i18n): missing closing backtick
---
.../translations/es/developers/tutorials/short-abi/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/content/translations/es/developers/tutorials/short-abi/index.md b/public/content/translations/es/developers/tutorials/short-abi/index.md
index 805c95324a0..d37bb204b9c 100644
--- a/public/content/translations/es/developers/tutorials/short-abi/index.md
+++ b/public/content/translations/es/developers/tutorials/short-abi/index.md
@@ -164,7 +164,7 @@ En L1 podría ser necesario omitir estas pruebas para ahorrar gas, pero en L2 el
Podríamos haber copiado los datos de la llamada a `fallback()` (véase más abajo), pero es más fácil usar [Yul](https://docs.soliditylang.org/en/v0.8.12/yul.html), el lenguaje de ensamblado de la EVM.
Aquí usamos [el código de operación CALLDATALOAD](https://www.evm.codes/#35) para leer los bytes desde `startByte` hasta `startByte+31` en la pila.
-En general, la sintaxis de un código de operación en Yul es `(, ...).
+En general, la sintaxis de un código de operación en Yul es `(, ...)`.
```solidity
From 5d6707db4673d741f673949ade7de0ba219aa53f Mon Sep 17 00:00:00 2001
From: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 11:28:06 -0300
Subject: [PATCH 581/589] revert(i18n):
es/developers/tutorials/erc20-annotated-code
Significant breaking syntax during LLM translation attempt. Reverting to existing functional version
---
.../tutorials/erc20-annotated-code/index.md | 867 +++++++-----------
1 file changed, 354 insertions(+), 513 deletions(-)
diff --git a/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md b/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md
index af3e07c1ac9..a31a3bf0a6c 100644
--- a/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md
+++ b/public/content/translations/es/developers/tutorials/erc20-annotated-code/index.md
@@ -1,39 +1,30 @@
---
-title: "Explicación del contrato ERC-20"
-description: "¿Qué contiene el contrato ERC-20 de OpenZeppelin y por qué está ahí?"
+title: "Una explicación del contrato ERC-20"
+description: '¿Qué tiene el contrato OpenZeppelin ERC® y por qué está ahí?'
author: Ori Pomerantz
lang: es
-tags: [ "Solidity", "erc-20" ]
+tags:
+ - "solidity"
+ - "erc-20"
skill: beginner
published: 2021-03-09
---
## Introducción {#introduction}
-Uno de los usos más comunes para Ethereum es que un grupo cree un token intercambiable, en cierto sentido su propia moneda. Estos tokens suelen seguir un estándar,
-[ERC-20](/developers/docs/standards/tokens/erc-20/). Este estándar hace posible escribir herramientas, como pools de liquidez y billeteras, que funcionen con todos los tokens
-ERC-20. En este artículo analizaremos la
-implementación de [Solidity ERC20 de OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol), así como la
-[definición de la interfaz](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol).
+Uno de los usos más comunes para Ethereum es que un grupo cree un token intercambiable, en cierto sentido su propia moneda. Estos tókenes normalmente siguen un estándar, el [ERC-20](/developers/docs/standards/tokens/erc-20/). Este estándar permite escribir herramientas, como reservas de liquidez y carteras, que funcionan con todos los tókenes ERC-20. En este artículo analizaremos la implementación de [OpenZeppelin Solidity ERC20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol), así como la [ definición de interfaz](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol).
-Este es un código fuente comentado. Si desea implementar un ERC-20,
-[lea este tutorial](https://docs.openzeppelin.com/contracts/2.x/erc20-supply).
+Este es un código fuente anotado. Si quiere implementar ERC-20, [lea este tutorial](https://docs.openzeppelin.com/contracts/2.x/erc20-supply).
-## La interfaz {#the-interface}
+## La Interfaz {#the-interface}
-El propósito de un estándar como ERC-20 es permitir implementaciones de muchos tokens que sean interoperables en todas las aplicaciones, como billeteras e intercambios descentralizados. Para lograrlo, creamos una
-[interfaz](https://www.geeksforgeeks.org/solidity/solidity-basics-of-interface/). Cualquier código que necesite usar el contrato del token
-puede usar las mismas definiciones en la interfaz y ser compatible con todos los contratos de token que lo usan, ya sea una billetera como
-MetaMask, una dapp como etherscan.io, o un contrato diferente como un pool de liquidez.
+El propósito de un estándar como ERC-20 es permitir la implementación de muchos tókenes y que sean interoperables a través de aplicaciones, como carteras e intercambios descentralizados. Para lograr esto, creamos una [interfaz](https://www.geeksforgeeks.org/solidity-basics-of-interface/). Cualquier código que necesite usar el contrato de tókenes puede usar las mismas definiciones en la interfaz y ser compatible con todos los contratos de token que lo usan, ya sea una cartera como MetaMask, una DApp como etherscan.io, o un contrato diferente como la reserva de liquidez.
-
+
-Si es un programador experimentado, probablemente recuerde haber visto construcciones similares en [Java](https://www.w3schools.com/java/java_interface.asp)
-o incluso en [archivos de cabecera de C](https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html).
+Si usted es un programador experto, problablemente recuerde haber visto estructuras similares en [Java](https://www.w3schools.com/java/java_interface.asp) o incluso en [archivos en encabezado C](https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html).
-Esta es una definición de la [interfaz ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol)
-de OpenZeppelin. Es una traducción del [estándar legible por humanos](https://eips.ethereum.org/EIPS/eip-20) a código de Solidity. Por supuesto, la
-interfaz en sí no define _cómo_ hacer nada. Eso se explica en el código fuente del contrato a continuación.
+Esta es la deinición de la [Interfaz ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) de OpenZeppelin. Es una derivación del [estándar legible por humanos](https://eips.ethereum.org/EIPS/eip-20) al código de Solidity. Por supuesto, esta interfaz por si sóla no define _como _ hacer nada. Esto se explica en el código fuente del contrato a continuación.
@@ -41,8 +32,7 @@ interfaz en sí no define _cómo_ hacer nada. Eso se explica en el código fuent
// SPDX-License-Identifier: MIT
```
-Se supone que los archivos de Solidity incluyen un identificador de licencia. [Puede ver la lista de licencias aquí](https://spdx.org/licenses/). Si necesita una licencia
-diferente, solo explíquelo en los comentarios.
+Se supone que los archivos de Solidity incluyen un identificador de licencia. [Puede ver la lista de licencias aquí](https://spdx.org/licenses/). Si necesita una licencia diferente, indíquelo en los comentarios.
@@ -50,20 +40,17 @@ diferente, solo explíquelo en los comentarios.
pragma solidity >=0.6.0 <0.8.0;
```
-El lenguaje de Solidity todavía evoluciona rápidamente y las nuevas versiones pueden no ser compatibles con el código antiguo
-([ver aquí](https://docs.soliditylang.org/en/v0.7.0/070-breaking-changes.html)). Por lo tanto, es una buena idea especificar no solo una versión mínima
-del lenguaje, sino también una versión máxima, la última con la que probó el código.
+El lenguaje de Solidity sigue evolucionando rápidamente, y las nuevas versiones pueden que no sean compatibles con el antiguo código ([ver aquí](https://docs.soliditylang.org/en/v0.7.0/070-breaking-changes.html)). Por lo tanto, es una buena idea especificar no solo una versión mínima del lenguaje, sino también una versión máxima: la última con la que probara el código.
```solidity
/**
- * @dev Interfaz del estándar ERC20 tal como se define en el EIP.
+ * @dev Interface of the ERC20 standard as defined in the EIP.
*/
```
-El `@dev` en el comentario forma parte del [formato NatSpec](https://docs.soliditylang.org/en/develop/natspec-format.html), que se utiliza para generar
-documentación a partir del código fuente.
+El `@dev` en el comentario es parte del [formato NatSpec](https://docs.soliditylang.org/en/develop/natspec-format.html), utilizado para producir documentación desde el código fuente.
@@ -71,151 +58,125 @@ documentación a partir del código fuente.
interface IERC20 {
```
-Por convención, los nombres de las interfaces empiezan por `I`.
+Por convención, los nombres de interfaz comienzan por `I`.
```solidity
/**
- * @dev Devuelve la cantidad de tokens existentes.
+ * @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
```
-Esta función es `external`, lo que significa que [solo se puede llamar desde fuera del contrato](https://docs.soliditylang.org/en/v0.7.0/cheatsheet.html#index-2).
-Devuelve el suministro total de tokens en el contrato. Este valor se devuelve utilizando el tipo más común en Ethereum, entero sin signo de 256 bits (256 bits es el
-tamaño de palabra nativo de la EVM). Esta función es también una `view`, lo que significa que no cambia el estado, por lo que se puede ejecutar en un solo nodo en lugar de que
-la ejecute cada nodo de la blockchain. Este tipo de función no genera una transacción y no cuesta [gas](/developers/docs/gas/).
+Esta función es `external`, lo que significa [que sólo puede ser activada desde fuera del contrato](https://docs.soliditylang.org/en/v0.7.0/cheatsheet.html#index-2). Devuelve el suministro total de tókenes en el contrato. Este valor se devuelve utilizando el tipo más común en Ethereum, 256 bits sin firma (256 bits es el tamaño nativo de la palabra de la EVM). Esta función también es una `view`, lo que significa que no cambia el estado, así que se puede ejecutar en un solo nodo en lugar de tener cada nodo en la cadena de bloques ejecutándolo. Este tipo de función no genera una transacción y no cuesta [gas](/developers/docs/gas/).
-**Nota:** En teoría, podría parecer que el creador de un contrato puede hacer trampa devolviendo un suministro total más pequeño que el valor real, haciendo que cada token parezca
-más valioso de lo que realmente es. Sin embargo, ese temor ignora la verdadera naturaleza de la blockchain. Todo lo que sucede en la blockchain puede ser verificado por
-cada nodo. Para lograrlo, el código de lenguaje de máquina y el almacenamiento de cada contrato están disponibles en cada nodo. Aunque no es obligatorio que publique el código de
-Solidity de su contrato, nadie lo tomaría en serio a menos que publique el código fuente y la versión de Solidity con la que fue compilado, para que pueda
-ser verificado con el código de lenguaje de máquina que proporcionó.
-Por ejemplo, vea [este contrato](https://eth.blockscout.com/address/0xa530F85085C6FE2f866E7FdB716849714a89f4CD?tab=contract).
+**Nota:** En teoría puede parecer que el creador de un contrato puede hacer trampas al devolver una oferta total menor que el valor real, haciendo que cada token parezca más valioso de lo que realmente es. Sin embargo, ese temor ignora la verdadera naturaleza de la cadena de bloques. Todo lo que pasa en la cadena de bloques puede verificarse en cada nodo. Para lograrlo, cada maquína de contrato, código de lenguaje y almacenamiento está disponible en cada nodo. Aunque no está obligado a publicar el código de Solidity para su contrato, nadie le tomaría en serio, a menos que publicase el código fuente y la versión de Solidity con la que se compiló, para que pueda verificarlo con respecto al código de lenguaje de la máquina que proporcionó. Por ejemplo, vea [este contrato](https://etherscan.io/address/0xa530F85085C6FE2f866E7FdB716849714a89f4CD#code).
```solidity
/**
- * @dev Devuelve la cantidad de tokens que posee la `cuenta`.
+ * @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
```
-Como su nombre indica, `balanceOf` devuelve el saldo de una cuenta. Las cuentas de Ethereum se identifican en Solidity utilizando el tipo `address`, que contiene 160 bits.
-También es `external` y `view`.
+Como indica su nombre, `saldoDe` devuelve el saldo de una cuenta. Las cuentas de Ethereum son identificadas en Solidity usando el tipo de `dirección `, el cual contiene 160 bits. También es `externo` y `vista`.
```solidity
/**
- * @dev Mueve la `cantidad` de tokens de la cuenta del llamante al `destinatario`.
+ * @dev Moves `amount` tokens from the caller's account to `recipient`.
*
- * Devuelve un valor booleano que indica si la operación tuvo éxito.
+ * Returns a boolean value indicating whether the operation succeeded.
*
- * Emite un evento {Transfer}.
+ * Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
```
-La función `transfer` transfiere tokens del llamante a una dirección diferente. Esto implica un cambio de estado, por lo que no es una `view`.
-Cuando un usuario llama a esta función, crea una transacción y consume gas. También emite un evento, `Transfer`, para informar a todo el mundo en
-la blockchain del evento.
+La función `transfer` transfiere tókenes de la persona que lo invoca a una dirección diferente. Esto incluye un cambio de estado, así que no es una `vista`. Cuando un usuario llama está función genera una transacción y cuesta gas. También emite un evento, `Transferir`, para informar a todos en la cadena de bloques del evento.
-La función tiene dos tipos de salida para dos tipos diferentes de llamantes:
+La función tiene dos resultados distintos, una para cada tipo de activación:
-- Usuarios que llaman a la función directamente desde una interfaz de usuario. Normalmente, el usuario envía una transacción
- y no espera una respuesta, lo que podría llevar una cantidad de tiempo indefinida. El usuario puede ver lo que ha ocurrido
- buscando el recibo de la transacción (que se identifica por el hash de la transacción) o buscando el evento
- `Transfer`.
-- Otros contratos, que llaman a la función como parte de una transacción global. Esos contratos obtienen el resultado inmediatamente
- porque se ejecutan en la misma transacción, por lo que pueden usar el valor de retorno de la función.
+- Usuarios que invocan la función directamente desde una interfaz de usuario. Normalmente, el usuario envía una transacción y no espera una respuesta, lo que podría tomar una cantidad indefinida de tiempo. El usuario puede ver lo que ocurrió buscando el recibo de la transacción (que se identifica por el hash de la transacción) o buscando el evento `Transferir`.
+- Otros contratos, que invocan la función como parte de una transacción general. Esos contratos obtienen resultados inmediatos, porque se ejecutan en la misma transacción, así que pueden usar el valor de retorno de la función.
-El mismo tipo de salida es creado por las otras funciones que cambian el estado del contrato.
+El mismo tipo de resultados lo obtienen las otras funciones que cambian el estado del contrato.
-Las autorizaciones (allowances) permiten que una cuenta gaste algunos tokens que pertenecen a un propietario diferente.
-Esto es útil, por ejemplo, para los contratos que actúan como vendedores. Los contratos no pueden
-monitorizar eventos, por lo que si un comprador transfiriera tokens al contrato del vendedor
-directamente, ese contrato no sabría que se le ha pagado. En su lugar, el comprador permite que el
-contrato del vendedor gaste una cierta cantidad, y el vendedor transfiere esa cantidad.
-Esto se hace a través de una función que el contrato del vendedor llama, por lo que el contrato del vendedor
-puede saber si tuvo éxito.
+Las licencias permiten que una cuenta utilice algunos tókenes que pertenecen a un propietario diferente. Esto es útil, por ejemplo, para los contratos que actúan como vendedores. Los contratos no pueden controlar eventos, así que si un comprador transfiriera tókenes al contrato del vendedor directamente ese contrato no sabría si se ha pagado. En cambio, el comprador permite al contrato de vendedor utilizar una cierta cantidad, y el vendedor transfiere esa cantidad. Esto se hace a través de una función que invoca el contrato de vendedor, por lo que el contrato de vendedor puede saber si ha salido bien.
```solidity
/**
- * @dev Devuelve el número restante de tokens que el `gastador` podrá
- * gastar en nombre del `propietario` a través de {transferFrom}. Es
- * cero por defecto.
+ * @dev Returns the remaining number of tokens that `spender` will be
+ * allowed to spend on behalf of `owner` through {transferFrom}. This is
+ * zero by default.
*
- * Este valor cambia cuando se llama a {approve} o {transferFrom}.
+ * This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
```
-La función `allowance` permite a cualquiera consultar cuál es la autorización que una
-dirección (`owner`) permite gastar a otra dirección (`spender`).
+La función `allowance` permite a cualquiera consultar cuál es la asignación que una dirección (`owner`) permite que otra dirección (`spender`) se utilice.
```solidity
/**
- * @dev Establece `amount` como la autorización del `spender` sobre los tokens del llamante.
+ * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
- * Devuelve un valor booleano que indica si la operación tuvo éxito.
+ * Returns a boolean value indicating whether the operation succeeded.
*
- * IMPORTANTE: Tenga en cuenta que cambiar una autorización con este método conlleva el riesgo
- * de que alguien pueda utilizar tanto la autorización antigua como la nueva mediante una desafortunada
- * ordenación de las transacciones. Una posible solución para mitigar esta condición de
- * carrera es reducir primero la autorización del gastador a 0 y establecer el
- * valor deseado después:
+ * IMPORTANT: Beware that changing an allowance with this method brings the risk
+ * that someone may use both the old and the new allowance by unfortunate
+ * transaction ordering. One possible solution to mitigate this race
+ * condition is to first reduce the spender's allowance to 0 and set the
+ * desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
- * Emite un evento {Approval}.
+ * Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
```
-La función `approve` crea una autorización. Asegúrese de leer el mensaje sobre
-cómo se puede abusar de ella. En Ethereum, usted controla el orden de sus propias transacciones,
-pero no puede controlar el orden en que se ejecutarán las transacciones de otras personas,
-a menos que no envíe su propia transacción hasta que vea que la
-transacción de la otra parte ha ocurrido.
+La función `approve` crea una asignación. Asegúrate de leer el mensaje sobre cómo se puede abusar de él. En Ethereum usted controla el orden de sus propias transacciones, pero no puede controlar el orden en el que se ejecutarán las transacciones de otras personas, a menos que no envíe su propia transacción hasta que vea que se ha producido la transacción del otro lado.
```solidity
/**
- * @dev Mueve tokens de `amount` de `sender` a `recipient` usando el
- * mecanismo de asignación. `amount` se deduce entonces de la
- * asignación de quien realiza la llamada.
+ * @dev Moves `amount` tokens from `sender` to `recipient` using the
+ * allowance mechanism. `amount` is then deducted from the caller's
+ * allowance.
*
- * Devuelve un valor booleano que indica si la operación tuvo éxito.
+ * Returns a boolean value indicating whether the operation succeeded.
*
- * Emite un evento {Transfer}.
+ * Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
```
-Finalmente, el gastador utiliza `transferFrom` para gastar realmente la asignación.
+Por último, `transferirDesde` lo utiliza el gastador para utilizar realmente la asignación.
```solidity
/**
- * @dev Se emite cuando se mueven tokens de `value` de una cuenta (`from`)
- * a otra (`to`).
+ * @dev Emitted when `value` tokens are moved from one account (`from`) to
+ * another (`to`).
*
- * Tenga en cuenta que `value` puede ser cero.
+ * Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
- * @dev Se emite cuando la asignación de un `spender` para un `owner` se establece mediante
- * una llamada a {approve}. `value` es la nueva asignación.
+ * @dev Emitted when the allowance of a `spender` for an `owner` is set by
+ * a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
@@ -225,10 +186,7 @@ Estos eventos se emiten cuando cambia el estado del contrato ERC-20.
## El contrato real {#the-actual-contract}
-Este es el contrato real que implementa el estándar ERC-20,
-[tomado de aquí](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol).
-No está pensado para ser usado tal cual, pero puede
-[heredar](https://www.tutorialspoint.com/solidity/solidity_inheritance.htm) de él para extenderlo a algo utilizable.
+Este es el contrato real que implementa el estándar ERC-20, [tomado desde aquí](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol). No está pensado para ser usado tal cual, pero puede [heredarlo](https://www.tutorialspoint.com/solidity/solidity_inheritance.htm) para pasarlo a algo utilizable.
```solidity
// SPDX-License-Identifier: MIT
@@ -237,9 +195,9 @@ pragma solidity >=0.6.0 <0.8.0;
-### Declaraciones de importación {#import-statements}
+### Importar declaraciones {#import-statements}
-Además de las definiciones de la interfaz anteriores, la definición del contrato importa otros dos archivos:
+Además de las definiciones de interfaz de arriba, la definición del contrato importa otros dos archivos:
```solidity
@@ -248,53 +206,48 @@ import "./IERC20.sol";
import "../../math/SafeMath.sol";
```
-- `GSN/Context.sol` son las definiciones necesarias para usar [OpenGSN](https://www.opengsn.org/), un sistema que permite a los usuarios sin ether
- usar la cadena de bloques. Tenga en cuenta que esta es una versión antigua; si desea integrar con OpenGSN,
- [use este tutorial](https://docs.opengsn.org/javascript-client/tutorial.html).
-- [La biblioteca SafeMath](https://ethereumdev.io/using-safe-math-library-to-prevent-from-overflows/), que previene
- desbordamientos/subdesbordamientos aritméticos para versiones de Solidity **<0.8.0**. En Solidity ≥0.8.0, las operaciones aritméticas se revierten
- automáticamente en caso de desbordamiento/subdesbordamiento, lo que hace que SafeMath sea innecesario. Este contrato usa SafeMath para mantener la retrocompatibilidad con
- versiones más antiguas del compilador.
+- `GSN/Context.sol` reúne las definiciones que se necesita utilizar [OpenGSN](https://www.opengsn.org/): un sistema que permite a los usuarios sin ether usar la cadena de bloques. Tenga en cuenta que esta es una versión antigua, si desea integrar con OpenGSN [utilice este tutorial](https://docs.opengsn.org/javascript-client/tutorial.html).
+- [La biblioteca SafeMath](https://ethereumdev.io/using-safe-math-library-to-prevent-from-overflows/)que se utiliza para añadir y restar sin excesos. Esto es necesario, porque de lo contrario una persona podría tener un token, gastar dos tókenes y luego tener 2^256-1 tókenes.
-Este comentario explica el propósito del contrato.
+Este comentario explica la finalidad del contrato.
```solidity
/**
- * @dev Implementación de la interfaz {IERC20}.
+ * @dev Implementation of the {IERC20} interface.
*
- * Esta implementación es agnóstica a la forma en que se crean los tokens. Esto significa
- * que se debe agregar un mecanismo de suministro en un contrato derivado usando {_mint}.
- * Para un mecanismo genérico, consulte {ERC20PresetMinterPauser}.
+ * This implementation is agnostic to the way tokens are created. This means
+ * that a supply mechanism has to be added in a derived contract using {_mint}.
+ * For a generic mechanism see {ERC20PresetMinterPauser}.
*
- * CONSEJO: Para una redacción detallada, consulte nuestra guía
- * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[Cómo
- * implementar mecanismos de suministro].
+ * TIP: For a detailed writeup see our guide
+ * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
+ * to implement supply mechanisms].
*
- * Hemos seguido las directrices generales de OpenZeppelin: las funciones se revierten en lugar
- * de devolver `false` en caso de fallo. No obstante, este comportamiento es convencional
- * y no entra en conflicto con las expectativas de las aplicaciones ERC20.
+ * We have followed general OpenZeppelin guidelines: functions revert instead
+ * of returning `false` on failure. This behavior is nonetheless conventional
+ * and does not conflict with the expectations of ERC20 applications.
*
- * Además, se emite un evento {Approval} en las llamadas a {transferFrom}.
- * Esto permite a las aplicaciones reconstruir la asignación para todas las cuentas simplemente
- * escuchando dichos eventos. Es posible que otras implementaciones de la EIP no emitan
- * estos eventos, ya que no es un requisito de la especificación.
+ * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
+ * This allows applications to reconstruct the allowance for all accounts just
+ * by listening to said events. Other implementations of the EIP may not emit
+ * these events, as it isn't required by the specification.
*
- * Finalmente, se han agregado las funciones no estándar {decreaseAllowance} e {increaseAllowance}
- * para mitigar los problemas conocidos relacionados con el establecimiento de
- * asignaciones. Consulte {IERC20-approve}.
+ * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
+ * functions have been added to mitigate the well-known issues around setting
+ * allowances. See {IERC20-approve}.
*/
```
-### Definición del contrato {#contract-definition}
+### Composición del contrato {#contract-definition}
```solidity
contract ERC20 is Context, IERC20 {
```
-Esta línea especifica la herencia, en este caso desde `IERC20` (definido arriba) y `Context`, para OpenGSN.
+Esta línea especifica la herencia, en este caso de `IERC20` desde arriba y `Context` para OpenGSN.
@@ -304,27 +257,19 @@ Esta línea especifica la herencia, en este caso desde `IERC20` (definido arriba
```
-Esta línea adjunta la biblioteca `SafeMath` al tipo `uint256`. Puede encontrar esta biblioteca
-[aquí](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol).
+Esta línea une la biblioteca `SafeMath` al tipo `uint256`. Puede encontrar esta biblioteca [aquí](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol).
### Definiciones de variables {#variable-definitions}
-Estas definiciones especifican las variables de estado del contrato. Estas variables se declaran como `private`, pero
-eso solo significa que otros contratos en la cadena de bloques no pueden leerlas. _No hay
-secretos en la cadena de bloques_; el software en cada nodo tiene el estado de cada contrato
-en cada bloque. Por convención, las variables de estado se nombran `_`.
+Estas definiciones especifican las variables de estado del contrato. Hay variables declaradas commo `privadas`, pero eso solo significa que otros contratos en la cadena de bloques no pueden leerlas. _No hay secretos en la cadena de bloques_, el software en cada nodo tiene el estado de cada contrato en cada bloque. Convencionalmente, a las variables de estado se les llama `_`.
-Las dos primeras variables son [asignaciones (mappings)](https://www.tutorialspoint.com/solidity/solidity_mappings.htm),
-lo que significa que se comportan de forma similar a las [matrices asociativas](https://wikipedia.org/wiki/Associative_array),
-excepto que las claves son valores numéricos. El almacenamiento solo se asigna a las entradas que tienen valores diferentes
-del predeterminado (cero).
+Las primeras dos variables son [mapeos](https://www.tutorialspoint.com/solidity/solidity_mappings.htm), es decir, que se comportan aproximadamente igual que [matrices asociativas](https://wikipedia.org/wiki/Associative_array), con la salvedad de que las claves son valores numéricos. El almacenamiento solo se asigna para entradas que tienen valores diferentes del predeterminado (cero).
```solidity
mapping (address => uint256) private _balances;
```
-La primera asignación (mapping), `_balances`, contiene las direcciones y sus respectivos saldos de este token. Para acceder
-al saldo, use esta sintaxis: `_balances[]`.
+El primer mapeo, `_balances`, son direcciones y sus respectivos balances de este token. Para acceder al saldo, utilice esta frase: `_balances[]`.
@@ -332,9 +277,7 @@ al saldo, use esta sintaxis: `_balances[]`.
mapping (address => mapping (address => uint256)) private _allowances;
```
-Esta variable, `_allowances`, almacena las asignaciones explicadas anteriormente. El primer índice es el propietario
-de los tokens, y el segundo es el contrato con la asignación. Para acceder a la cantidad que la dirección A puede
-gastar de la cuenta de la dirección B, use `_allowances[B][A]`.
+Esta variable, `_allowances`, almacena las asignaciones explicadas anteriormente. El primer índice es el propietario de los tókenes, y el segundo es el contrato con la asignación. Para acceder a la dirección A puede gastar desde la dirección B de la cuenta, utilice `_allowances[B][A]`.
@@ -342,7 +285,7 @@ gastar de la cuenta de la dirección B, use `_allowances[B][A]`.
uint256 private _totalSupply;
```
-Como su nombre indica, esta variable realiza un seguimiento del suministro total de tokens.
+Como el nombre sugiere, esta variable mantiene un seguimiento del suministro total de tókenes.
@@ -352,142 +295,126 @@ Como su nombre indica, esta variable realiza un seguimiento del suministro total
uint8 private _decimals;
```
-Estas tres variables se utilizan para mejorar la legibilidad. Las dos primeras se explican por sí mismas, pero `_decimals`
-no.
+Estas tres variables se utilizan para mejorar la legibilidad. Las dos primeras son autoexplicativas, pero `_decimals` no lo es.
-Por un lado, Ethereum no tiene variables de punto flotante o fraccionarias. Por otro lado,
-a los humanos les gusta poder dividir los tokens. Una de las razones por las que la gente se decidió por el oro como moneda fue que
-resultaba difícil devolver el cambio cuando alguien quería comprar el equivalente a un pato con una vaca.
+Por un lado, ethereum no tiene variables de punto flotante o fraccionales. Por otro lado, a los humanos les gusta poder dividir tókenes. Una de las razones por las que la gente se decantó por el oro como moneda fue que era difícil hacer intercambios cuando alguien quería comprar «gato por liebre».
-La solución es hacer un seguimiento de los números enteros, pero en lugar del token real, contar un token fraccionario que es
-casi insignificante. En el caso del ether, el token fraccionario se llama wei, y 10^18 wei equivalen a un
-ETH. En el momento de redactar este documento, 10 000 000 000 000 wei equivalen aproximadamente a un céntimo de dólar estadounidense o de euro.
+La solución es llevar un registro de enteros, pero cuenta en lugar del token real un token fraccional que es cercano a no valer nada. En el caso del ether, el token fraccional se llama wei, y 10^18 wei es igual a un ETH. Al cierre de este artículo, 10.000.000.000.000 wei es aproximadamente un centavo de dólar estadounidense o euro.
-Las aplicaciones necesitan saber cómo mostrar el saldo de tokens. Si un usuario tiene 3 141 000 000 000 000 000 wei, ¿son
-3,14 ETH? ¿31,41 ETH? ¿3141 ETH? En el caso del ether, se define que 10^18 wei equivalen a un ETH, pero para su
-token puede seleccionar un valor diferente. Si no tiene sentido dividir el token, puede usar un
-valor de `_decimals` de cero. Si quiere usar el mismo estándar que ETH, use el valor **18**.
+Las aplicaciones necesitan saber cómo mostrar el saldo de tókenes. Si un usuario tiene 3.141.000.000.000.000.000 wei, ¿es eso 3,14 ETH? 31.41 ETH? ¿3,141 ETH? En el caso del ether se define 10^18 wei para el ETH, pero para su token puede seleccionar un valor diferente. Si dividir el token no tiene sentido, puede usar un valor de `_decimals` de cero. Si desea utilizar el mismo estándar que ETH, utilice el valor **18**.
### El constructor {#the-constructor}
```solidity
/**
- * @dev Establece los valores para {name} y {symbol}, inicializa {decimals} con
- * un valor predeterminado de 18.
+ * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
+ * a default value of 18.
*
- * Para seleccionar un valor diferente para {decimals}, use {_setupDecimals}.
+ * To select a different value for {decimals}, use {_setupDecimals}.
*
- * Estos tres valores son inmutables: solo se pueden establecer una vez durante
- * la construcción.
+ * All three of these values are immutable: they can only be set once during
+ * construction.
*/
constructor (string memory name_, string memory symbol_) public {
- // En Solidity ≥0.7.0, 'public' es implícito y puede omitirse.
-
_name = name_;
_symbol = symbol_;
_decimals = 18;
}
```
-El constructor se llama cuando el contrato se crea por primera vez. Por convención, los parámetros de función se nombran `_`.
+Se le llama constructor cuando se crea el contrato por primera vez. Convencionalmente, los parámetros de la función se llaman `_`.
### Funciones de la interfaz de usuario {#user-interface-functions}
```solidity
/**
- * @dev Devuelve el nombre del token.
+ * @dev Returns the name of the token.
*/
function name() public view returns (string memory) {
return _name;
}
/**
- * @dev Devuelve el símbolo del token, generalmente una versión más corta del
- * nombre.
+ * @dev Returns the symbol of the token, usually a shorter version of the
+ * name.
*/
function symbol() public view returns (string memory) {
return _symbol;
}
/**
- * @dev Devuelve el número de decimales que se usa para obtener su representación de usuario.
- * Por ejemplo, si `decimals` es igual a `2`, un saldo de `505` tokens debería
- * mostrarse a un usuario como `5,05` (`505 / 10 ** 2`).
+ * @dev Returns the number of decimals used to get its user representation.
+ * For example, if `decimals` equals `2`, a balance of `505` tokens should
+ * be displayed to a user as `5,05` (`505 / 10 ** 2`).
*
- * Los tokens suelen optar por un valor de 18, imitando la relación entre
- * ether y wei. Este es el valor que usa {ERC20}, a menos que se
- * llame a {_setupDecimals}.
+ * Tokens usually opt for a value of 18, imitating the relationship between
+ * ether and wei. This is the value {ERC20} uses, unless {_setupDecimals} is
+ * called.
*
- * NOTA: Esta información solo se usa para fines de _visualización_: de ninguna
- * manera afecta a la aritmética del contrato, incluidos
- * {IERC20-balanceOf} y {IERC20-transfer}.
+ * NOTE: This information is only used for _display_ purposes: it in
+ * no way affects any of the arithmetic of the contract, including
+ * {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view returns (uint8) {
return _decimals;
}
```
-Estas funciones, `name`, `symbol` y `decimals` ayudan a las interfaces de usuario a obtener información sobre su contrato para que puedan mostrarlo correctamente.
+Estas funciones, `name`, `symbol` y `decimals` ayudan a las interfaces de usuario a conocer su contrato, para que puedan mostrarlo correctamente.
-El tipo de retorno es `string memory`, lo que significa que devuelve una cadena que se almacena en la memoria. Las variables, como las
-cadenas, se pueden almacenar en tres ubicaciones:
+El tipo de retorno es `memoria de cadena`, lo que significa que devuelve una cadena que se almacena en la memoria. Las variables, como cadenas, pueden almacenarse en tres ubicaciones:
-| | Vida útil | Acceso al contrato | Costo de gas |
-| -------------- | ------------------- | ------------------ | ------------------------------------------------------------------------------- |
-| Memoria | Llamada de función | Lectura/escritura | Decenas o cientos (más alto para ubicaciones de mayor nivel) |
-| Calldata | Llamada de función | Solo lectura | No se puede usar como tipo de retorno, solo como tipo de parámetro de función |
-| Almacenamiento | Hasta que se cambie | Lectura/escritura | Alto (800 para lectura, 20 000 para escritura) |
+| | Tiempo de vida | Acceso al contrato | Coste del gas |
+| -------------- | ------------------------- | ------------------ | ------------------------------------------------------------------------------- |
+| Memoria | Activación de una función | Leer/Escribir | Decenas o centenas (más altas para ubicaciones más altas) |
+| Calldata | Activación de una función | Sólo lectura | No se puede utilizar como tipo de retorno, solo un tipo de parámetro de función |
+| Almacenamiento | Hasta que cambie | Leer/Escribir | Alta (800 para leer, 20.000 para escribir) |
En este caso, `memory` es la mejor opción.
### Leer información del token {#read-token-information}
-Estas son funciones que proporcionan información sobre el token, ya sea el suministro total o el
-saldo de una cuenta.
+Estas son funciones que proporcionan información sobre el token, ya sea el suministro total o el saldo de una cuenta.
```solidity
/**
- * @dev Consulte {IERC20-totalSupply}.
+ * @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view override returns (uint256) {
return _totalSupply;
}
```
-La función `totalSupply` devuelve el suministro total de tokens.
+La función `totalSupply` devuelve el suministro total de tókenes.
```solidity
/**
- * @dev Consulte {IERC20-balanceOf}.
+ * @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
```
-Leer el saldo de una cuenta. Tenga en cuenta que cualquiera puede obtener el saldo de la cuenta
-de otra persona. No tiene sentido intentar ocultar esta información, porque de todos modos está disponible en todos
-los nodos. _No hay secretos en la cadena de bloques._
+Leer el saldo de una cuenta. Ten en cuenta que cualquiera puede obtener el saldo de otra persona. No tiene sentido intentar ocultar esta información, porque está disponible en cada nodo de todos modos. _No hay secretos en la cadena de bloques._
-### Transferir tokens {#transfer-tokens}
+### Transferir tókenes {#transfer-tokens}
```solidity
/**
- * @dev Consulte {IERC20-transfer}.
+ * @dev See {IERC20-transfer}.
*
- * Requisitos:
+ * Requirements:
*
- * - `recipient` no puede ser la dirección cero.
- * - quien llama debe tener un saldo de al menos `amount`.
+ * - `recipient` cannot be the zero address.
+ * - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
```
-La función `transfer` se invoca para transferir tokens de la cuenta del remitente a otra diferente. Tenga en cuenta
-que aunque devuelve un valor booleano, ese valor es siempre **true**. Si la transferencia
-falla, el contrato revierte la llamada.
+La función `transfer` se invoca para transferir tókenes desde la cuenta del remitente a otra diferente. Nótese que aunque devuelve un valor booleano, ese valor es siempre **verdadero o true**. Si la transferencia falla el contrato revierte la activación.
@@ -497,51 +424,44 @@ falla, el contrato revierte la llamada.
}
```
-La función `_transfer` hace el trabajo real. Es una función privada que solo puede ser llamada por
-otras funciones del contrato. Por convención, las funciones privadas se nombran `_`, igual que las variables
-de estado.
+La función `_transfer` hace el trabajo actual. Es una función privada que solo pueden activar otras funciones del contrato. Convencionalmente, a las funciones privadas se les llama `_`, al igual que las variables de estado.
-Normalmente en Solidity usamos `msg.sender` para el remitente del mensaje. Sin embargo, eso rompe
-[OpenGSN](http://opengsn.org/). Si queremos permitir transacciones sin ether con nuestro token,
-necesitamos usar `_msgSender()`. Devuelve `msg.sender` para transacciones normales, pero para las que no tienen ether,
-devuelve el firmante original y no el contrato que transmitió el mensaje.
+Normalmente, en Sodity usamos `msg.sender` para el remitente del mensaje. Sin embargo, eso rompe [OpenGSN](http://opengsn.org/). Si queremos permitir transacciones sin etherless con nuestro token, necesitamos usar `_msgSender()`. Devuelve `msg.sender` para transacciones normales, pero para las transacciones si ether devuelve el firmante original y no el contrato que reenvió el mensaje.
### Funciones de asignación {#allowance-functions}
-Estas son las funciones que implementan la funcionalidad de asignación: `allowance`, `approve`, `transferFrom`
-y `_approve`. Además, la implementación de OpenZeppelin va más allá del estándar básico para incluir algunas características que mejoran la
-seguridad: `increaseAllowance` y `decreaseAllowance`.
+Estas son las funciones que implementan la funcionalidad de asignación: `allowance`, `approve`, `transferFrom` y `_approve`. Adicionalmente, la implementación de OpenZeppelin va más allá de los estándares básicos para incluir algo de funcionalidad que mejora la seguridad: `increaseAllwance` y `decreaseAllowance`.
-#### La función de asignación {#allowance}
+#### La función de «allowance» {#allowance}
```solidity
/**
- * @dev Consulte {IERC20-allowance}.
+ * @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
```
-La función `allowance` permite que cualquiera verifique cualquier asignación.
+La función `allowance` permite a todos revisar cualquier asignación.
-#### La función de aprobación {#approve}
+#### La función de «approve» {#approve}
```solidity
/**
- * @dev Consulte {IERC20-approve}.
+ * @dev See {IERC20-approve}.
*
- * Requisitos:
+ * Requirements:
*
- * - `spender` no puede ser la dirección cero.
+ * - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
```
-Esta función se llama para crear una asignación. Es similar a la función `transfer` anterior:
+Esta función se invoca para crear una asignación. Es similar a la función `transfer` que se encuentra más arriba:
-- La función simplemente llama a una función interna (en este caso, `_approve`) que hace el trabajo real.
-- La función devuelve `true` (si tiene éxito) o revierte la llamada (si no).
+- Esta función solo invoca una función interna (en este caso, `_approve`) que hace el verdadero trabajo.
+- La función devuelve `true` (si tiene éxito) o revierte (si no lo tiene).
@@ -551,26 +471,24 @@ Esta función se llama para crear una asignación. Es similar a la función `tra
}
```
-Usamos funciones internas para minimizar el número de lugares donde ocurren cambios de estado. _Cualquier_ función que cambie el
-estado es un riesgo de seguridad potencial que necesita ser auditado por seguridad. De esta manera tenemos menos posibilidades de equivocarnos.
+Usamos funciones internas para minimizar la cantidad de lugares donde suceden los cambios de estado. _Cualquier_ función que cambia el estado es un potencial riesgo de seguridad que necesita ser auditado por cuestiones de seguridad. De esta manera tenemos una menor probabilidad de hacerlo mal.
#### La función transferFrom {#transferFrom}
-Esta es la función que un gastador llama para gastar una asignación. Esto requiere dos operaciones: transferir la cantidad
-que se está gastando y reducir la asignación por esa cantidad.
+Esta es la función que un gastador llama para gastar en asignación. Esto requiere dos operaciones: transferir la cantidad gastada y reducir la asignación por esa cantidad.
```solidity
/**
- * @dev Consulte {IERC20-transferFrom}.
+ * @dev See {IERC20-transferFrom}.
*
- * Emite un evento {Approval} que indica la asignación actualizada. Esto no
- * es requerido por la EIP. Consulte la nota al principio de {ERC20}.
+ * Emits an {Approval} event indicating the updated allowance. This is not
+ * required by the EIP. See the note at the beginning of {ERC20}.
*
- * Requisitos:
+ * Requirements:
*
- * - `sender` y `recipient` no pueden ser la dirección cero.
- * - `sender` debe tener un saldo de al menos `amount`.
- * - quien llama debe tener una asignación para los tokens de ``sender`` de al menos
+ * - `sender` and `recipient` cannot be the zero address.
+ * - `sender` must have a balance of at least `amount`.
+ * - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(address sender, address recipient, uint256 amount) public virtual
@@ -580,377 +498,300 @@ que se está gastando y reducir la asignación por esa cantidad.
-La llamada a la función `a.sub(b, "mensaje")` hace dos cosas. Primero, calcula `a-b`, que es la nueva asignación.
-Segundo, comprueba que este resultado no sea negativo. Si es negativo, la llamada se revierte con el mensaje proporcionado. Tenga en cuenta que cuando se revierte una llamada, se ignora cualquier procesamiento realizado previamente durante esa llamada, por lo que no necesitamos
-deshacer el `_transfer`.
+La activación de la función `a.sub(b, "message")` hace dos cosas. Primero, calcula `a-b`, que es la nueva asignación. En segundo lugar, comprueba que este resultado no es negativo. Si es negativo la llamada se revierte con el mensaje proporcionado. Tenga en cuenta que cuando una activación revierte cualquier procesamiento realizado previamente durante esa activación se ignora, por lo tanto, no necesitamos deshacer la `_transfer`.
```solidity
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount,
- "ERC20: la cantidad de la transferencia excede la asignación"));
+ "ERC20: transfer amount exceeds allowance"));
return true;
}
```
-#### Adiciones de seguridad de OpenZeppelin {#openzeppelin-safety-additions}
+#### Adiciones de seguridad a OpenZeppelin {#openzeppelin-safety-additions}
-Es peligroso establecer una asignación distinta de cero a otro valor distinto de cero,
-porque solo usted controla el orden de sus propias transacciones, no el de los demás. Imagine que
-tiene dos usuarios, Alice, que es ingenua, y Bill, que es deshonesto. Alice quiere un servicio de
-Bill que cree que cuesta cinco tokens, por lo que le da a Bill una asignación de cinco tokens.
+Es peligroso establecer una asignación diferente de cero a otro valor distinto de cero, porque solo controla el orden de sus propias transacciones y no las de nadie más. Imagine que tiene dos usuarios: Alice que es ingenua y Bill que es un tramposo. Alice quiere algún servicio de Bill, que piensa que cuesta cinco tókenes, por lo que le da a Bill una asignación de cinco tókenes.
-Luego algo cambia y el precio de Bill sube a diez tokens. Alice, que todavía quiere el servicio,
-envía una transacción que establece la asignación de Bill en diez. En el momento en que Bill ve esta nueva transacción
-en el pool de transacciones, envía una transacción que gasta los cinco tokens de Alice y tiene un precio de gas mucho
-más alto para que se mine más rápido. De esa manera, Bill puede gastar primero cinco tokens y luego,
-una vez que se mina la nueva asignación de Alice, gastar diez más por un precio total de quince tokens, más de lo que
-Alice pretendía autorizar. Esta técnica se llama
-[front-running](https://consensysdiligence.github.io/smart-contract-best-practices/attacks/#front-running)
+Entonces algo cambia y el precio de Bill sube a diez tókenes. Alice, quien todavía quiere el servicio, envía una transacción que establece la asignación de Bill a diez. En el momento en que Bill ve esta nueva transacción en el fondo de transacciones envía una transacción que gasta los cinco tókenes de Alice y tiene un mayor precio de gas por lo que se minará más rápido. De esa manera Bill puede gastar los primeros cinco tókenes y luego, una vez que se extraiga la nueva asignación de Alice gastará diez más por un precio total de quince tókenes. Más de lo que Alicia quería autorizar. A esta técnica se le llama [anticiparse](https://consensysdiligence.github.io/smart-contract-best-practices/attacks/#front-running).
-| Transacción de Alice | ```
-/**
- * @dev Mueve la `cantidad` de tokens del `remitente` al `destinatario` utilizando el
- * mecanismo de autorización. `amount` se deduce entonces de la autorización del
- * llamante.
- *
- * Devuelve un valor booleano que indica si la operación tuvo éxito.
- *
- * Emite un evento {Transfer}.
- */
-function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
-``` | Finalmente, `transferFrom` es utilizado por el gastador para gastar realmente la autorización. | Nonce de Bill | ```
-/**
- * @dev Se emite cuando se mueven `value` tokens de una cuenta (`from`) a
- * otra (`to`).
- *
- * Tenga en cuenta que `value` puede ser cero.
- */
-event Transfer(address indexed from, address indexed to, uint256 value);
+| Transacción de Alice | Nonce de Alice | Transacción de Bill | Nonce de Bill | Asignación de Bill | Ingresos totales de Bill procedentes de Alice |
+| -------------------- | -------------- | ----------------------------- | ------------- | ------------------ | --------------------------------------------- |
+| approve(Bill, 5) | 10 | | | 5 | 0 |
+| | | transferFrom(Alice, Bill, 5) | 10,123 | 0 | 5 |
+| approve(Bill, 10) | 11 | | | 10 | 5 |
+| | | transferFrom(Alice, Bill, 10) | 10,124 | 0 | 15 |
-/**
- * @dev Se emite cuando la autorización de un `spender` para un `owner` es establecida por
- * una llamada a {approve}. `value` es la nueva autorización.
- */
-event Approval(address indexed owner, address indexed spender, uint256 value);
-```} | Estos eventos se emiten cuando cambia el estado del contrato ERC-20. |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
-| El contrato real {#the-actual-contract} | 10 | | | 5 | 0 |
-| | | transferFrom(Alice, Bill, 5) | Declaraciones de importación {#import-statements} | 0 | 5 |
-| `GSN/Context.sol` contiene las definiciones necesarias para usar [OpenGSN](https://www.opengsn.org/), un sistema que permite a los usuarios sin ether
usar la blockchain. | 11 | | | 10 | 5 |
-| | | Este contrato usa SafeMath por retrocompatibilidad con
versiones antiguas del compilador. | 10 124 | 0 | 15 |
+Para evitar este problema. estas dos funciones (`increaseAllowance` y `decreaseAllowance`) le permiten modificar la autorización en una cantidad específica. Así que si Bill ya había gastado cinco tókenes, solo podrá gastar cinco más. Dependiendo del momento, hay dos maneras en las que esto puede funcionar y en ambas Bill acaba recibiendo solo diez tókenes:
-Definición del contrato {#contract-definition} contract ERC20 is Context, IERC20 { Esta línea especifica la herencia, en este caso de `IERC20` de arriba y `Context`, para OpenGSN.
+A:
-R:
+| Transacción de Alice | Nonce de Alice | Transacción de Bill | Nonce de Bill | Asignación de Bill | Ingresos totales de Bill procedentes de Alice |
+| -------------------------- | --------------:| ---------------------------- | -------------:| ------------------:| --------------------------------------------- |
+| approve(Bill, 5) | 10 | | | 5 | 0 |
+| | | transferFrom(Alice, Bill, 5) | 10,123 | 0 | 5 |
+| increaseAllowance(Bill, 5) | 11 | | | 0+5 = 5 | 5 |
+| | | transferFrom(Alice, Bill, 5) | 10,124 | 0 | 10 |
-| Transacción de Alice | ```
-/**
- * @dev Mueve la `cantidad` de tokens del `remitente` al `destinatario` utilizando el
- * mecanismo de autorización. `amount` se deduce entonces de la autorización del
- * llamante.
- *
- * Devuelve un valor booleano que indica si la operación tuvo éxito.
- *
- * Emite un evento {Transfer}.
- */
-function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
-``` | Finalmente, `transferFrom` es utilizado por el gastador para gastar realmente la autorización. | Nonce de Bill | ```
-/**
- * @dev Se emite cuando se mueven `value` tokens de una cuenta (`from`) a
- * otra (`to`).
- *
- * Tenga en cuenta que `value` puede ser cero.
- */
-event Transfer(address indexed from, address indexed to, uint256 value);
+B:
-/**
- * @dev Se emite cuando la autorización de un `spender` para un `owner` es establecida por
- * una llamada a {approve}. `value` es la nueva autorización.
- */
-event Approval(address indexed owner, address indexed spender, uint256 value);
-```} | Estos eventos se emiten cuando cambia el estado del contrato ERC-20. |
-| ------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------------ |
-| El contrato real {#the-actual-contract} | 10 | | | 5 | 0 |
-| | | transferFrom(Alice, Bill, 5) | Declaraciones de importación {#import-statements} | 0 | 5 |
-| ```
-mapping (address => mapping (address => uint256)) private _allowances;
-``` | 11 | | | El primer índice es el propietario
de los tokens y el segundo es el contrato con la autorización. | 5 |
-| | | transferFrom(Alice, Bill, 5) | 10 124 | 0 | 10 |
-
-```
-string private _name;
-string private _symbol;
-uint8 private _decimals;
-```
-
-| Transacción de Alice | ```
-/**
- * @dev Mueve la `cantidad` de tokens del `remitente` al `destinatario` utilizando el
- * mecanismo de autorización. `amount` se deduce entonces de la autorización del
- * llamante.
- *
- * Devuelve un valor booleano que indica si la operación tuvo éxito.
- *
- * Emite un evento {Transfer}.
- */
-function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
-``` | Finalmente, `transferFrom` es utilizado por el gastador para gastar realmente la autorización. | Nonce de Bill | ```
-/**
- * @dev Se emite cuando se mueven `value` tokens de una cuenta (`from`) a
- * otra (`to`).
- *
- * Tenga en cuenta que `value` puede ser cero.
- */
-event Transfer(address indexed from, address indexed to, uint256 value);
-
-/**
- * @dev Se emite cuando la autorización de un `spender` para un `owner` es establecida por
- * una llamada a {approve}. `value` es la nueva autorización.
- */
-event Approval(address indexed owner, address indexed spender, uint256 value);
-```} | Estos eventos se emiten cuando cambia el estado del contrato ERC-20. |
-| ------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -------------------------------------------------------------------------------------------------------------- | ------------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -----------------------------------------------------------------------------------: |
-| El contrato real {#the-actual-contract} | 10 | | | 5 | 0 |
-| ```
-mapping (address => mapping (address => uint256)) private _allowances;
-``` | 11 | | | En el caso del ether se define 10^18 wei por cada ETH, pero para su
token puede seleccionar un valor diferente. | 0 |
-| | | Este contrato usa SafeMath por retrocompatibilidad con
versiones antiguas del compilador. | 10 124 | 0 | 10 |
+| Transacción de Alice | Nonce de Alice | Transacción de Bill | Nonce de Bill | Asignación de Bill | Ingresos totales de Bill procedentes de Alice |
+| -------------------------- | --------------:| ----------------------------- | -------------:| ------------------:| ---------------------------------------------:|
+| approve(Bill, 5) | 10 | | | 5 | 0 |
+| increaseAllowance(Bill, 5) | 11 | | | 5+5 = 10 | 0 |
+| | | transferFrom(Alice, Bill, 10) | 10,124 | 0 | 10 |
```solidity
-Por convención, los parámetros de las funciones se nombran `_`.
+ /**
+ * @dev Atomically increases the allowance granted to `spender` by the caller.
+ *
+ * This is an alternative to {approve} that can be used as a mitigation for
+ * problems described in {IERC20-approve}.
+ *
+ * Emits an {Approval} event indicating the updated allowance.
+ *
+ * Requirements:
+ *
+ * - `spender` cannot be the zero address.
+ */
+ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
+ _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
+ return true;
+ }
```
-Funciones de la interfaz de usuario {#user-interface-functions} /\*\*
-\* @dev Devuelve el nombre del token.
-\*/
-function name() public view returns (string memory) {
-return _name;
-}```
-/**
- * @dev Devuelve el símbolo del token, normalmente una versión más corta del
- * nombre.
- */
-function symbol() public view returns (string memory) {
- return _symbol;
-}
-
-/**
- * @dev Devuelve el número de decimales utilizado para obtener su representación de usuario.
- * Por ejemplo, si `decimals` es igual a `2`, un saldo de `505` tokens debería
- * mostrarse a un usuario como `5,05` (`505 / 10 ** 2`).
- *
- * Los tokens suelen optar por un valor de 18, imitando la relación entre
- * ether y wei. Este es el valor que utiliza {ERC20}, a menos que se llame a
- * {_setupDecimals}.
- *
- * NOTA: Esta información solo se utiliza con fines de _visualización_: de ninguna
- * manera afecta a la aritmética del contrato, incluyendo
- * {IERC20-balanceOf} y {IERC20-transfer}.
- */
-function decimals() public view returns (uint8) {
- return _decimals;
-}
-```
+La función `a.add(n)` es una adición segura. En el caso poco probable de que `a`+`b`>=`2^256` no se sume de la manera normal en que la adición lo hace.
```solidity
-Estas funciones, `name`, `symbol` y `decimals` ayudan a las interfaces de usuario a conocer su contrato para que puedan mostrarlo correctamente.
+
+ /**
+ * @dev Atomically decreases the allowance granted to `spender` by the caller.
+ *
+ * This is an alternative to {approve} that can be used as a mitigation for
+ * problems described in {IERC20-approve}.
+ *
+ * Emits an {Approval} event indicating the updated allowance.
+ *
+ * Requirements:
+ *
+ * - `spender` cannot be the zero address.
+ * - `spender` must have allowance for the caller of at least
+ * `subtractedValue`.
+ */
+ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
+ _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue,
+ "ERC20: decreased allowance below zero"));
+ return true;
+ }
```
-### El tipo de retorno es `string memory`, lo que significa que devuelve una cadena que se almacena en la memoria.
+### Funciones que modifican la información del token {#functions-that-modify-token-information}
-Las variables, como las
-cadenas, pueden almacenarse en tres ubicaciones:
+Estas son las cuatro funciones que hacen el verdadero trabajo: `_transfer`, `_mint`, `_burn` y `_approve`.
-#### Tiempo de vida
+#### La función \_transfer {#_transfer}
```solidity
-Acceso al contrato
+ /**
+ * @dev Moves tokens `amount` from `sender` to `recipient`.
+ *
+ * This is internal function is equivalent to {transfer}, and can be used to
+ * e.g., implement automatic token fees, slashing mechanisms, etc.
+ *
+ * Emits a {Transfer} event.
+ *
+ * Requirements:
+ *
+ * - `sender` cannot be the zero address.
+ * - `recipient` cannot be the zero address.
+ * - `sender` must have a balance of at least `amount`.
+ */
+ function _transfer(address sender, address recipient, uint256 amount) internal virtual {
```
-Coste del gas Memoria
+Esta función, `_transfer`, transfiere tókenes de una cuenta a otra. La invocan ambas funciones `transfer` (para transferencias desde la cuenta propia del emisor) y `transferFrom` (para usar asignaciones que transfieran desde la cuenta de alguien más).
```solidity
-Lectura/escritura
+ require(sender != address(0), "ERC20: transfer from the zero address");
+ require(recipient != address(0), "ERC20: transfer to the zero address");
```
-Decenas o centenas (más para ubicaciones más altas) Cuando la gente usa esa dirección, suele ser un error de software, por lo que
-fallamos si la dirección cero se usa como remitente o destinatario.
+Actualmente, nadie poseé la dirección cero en Ethereum (es decir, nadie conoce una clave privada cuya clave pública conocida se transforma en la dirección cero). Cuando las personas usan esa dirección, usualmente es un error del programa, por lo que fallamos si la dirección cero es usada como el emisor o receptor.
```solidity
-Solo lectura
+ _beforeTokenTransfer(sender, recipient, amount);
+
```
-No se puede usar como tipo de retorno, solo como tipo de parámetro de función
+Hay dos maneras de usar este contrato:
-1. Úselo como plantilla para su propio código
-2. Hasta que se cambie
+1. Usarlo como plantilla para su propio código.
+1. [Herédalo](https://www.bitdegree.org/learn/solidity-inheritance) y sobrescribir sólo aquellas funciones que necesite modificar.
-El segundo método es mucho mejor porque el código ERC-20 de OpenZeppelin ya ha sido auditado y se ha demostrado que es seguro. Alto (800 para lectura, 20k para escritura)
+El segundo método es mucho mejor pues el código ERC de OpenZeppelin ya ha sido auditado y demostrado ser seguro. Cuando utiliza la herencia queda claro cuáles son las funciones que modifica, y para confiar en su contrato, la gente sólo necesita auditar esas funciones específicas.
-En este caso, `memory` es la mejor opción. Leer información del token {#read-token-information} Estas son funciones que proporcionan información sobre el token, ya sea el suministro total o el
-saldo de una cuenta. /\*\*
-\* @dev Véase {IERC20-totalSupply}.
-\*/
-function totalSupply() public view override returns (uint256) {
-return _totalSupply;
-}
+A menudo es útil realizar una función cada vez que los tókenes cambian de mano. Sin embargo,`_transfer` es una función muy importante y es posible escribirla de forma insegura (ver abajo), así que lo mejor no anularlo. La solución es `_beforeTokenTransfer`, una función de [gancho](https://wikipedia.org/wiki/Hooking). Puede anular esta función y se activará en cada transferencia.
```solidity
- _balances[sender] = _balances[sender].sub(amount, "ERC20: la cantidad de la transferencia excede el saldo");
+ _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
```
-```
-/**
- * @dev Véase {IERC20-balanceOf}.
- */
-function balanceOf(address account) public view override returns (uint256) {
- return _balances[account];
-} Leer el saldo de una cuenta. Tenga en cuenta que cualquiera puede obtener el saldo de la cuenta
-```de cualquier otra persona. No tiene sentido intentar ocultar esta información, porque de todos modos está disponible en cada
-nodo.
+Estas son las líneas que en realidad hacen la transferencia. Note que no hay **nada** entre ellas y que restamos la cantidad transferida desde el emisor antes de agregarla al receptor. Esto es importante, porque si se invocó un contrato diferente de por medio, este se pudo usar para engañar a este contrato. De esta manera la transferencia es atómica, nada puede suceder en medio.
```solidity
-Transferir tokens {#transfer-tokens}
+ emit Transfer(sender, recipient, amount);
+ }
```
-```
-/**
- * @dev Véase {IERC20-transfer}.
- *
- * Requisitos:
- *
- * - `recipient` no puede ser la dirección cero.
- * - el llamante debe tener un saldo de al menos `amount`.
- */
-function transfer(address recipient, uint256 amount) public virtual override returns (bool) { La función `transfer` se llama para transferir tokens de la cuenta del remitente a una diferente. Tenga en cuenta
-```que, aunque devuelve un valor booleano, ese valor es siempre **true**.
+Finalmente, emite un evento `Transfer`. Los eventos no son accesibles por los contratos inteligentes, pero el código en ejecución fuera de la cadena de bloques puede escuchar eventos y reaccionar a ellos. Por ejemplo, una billetera puede mantener un registro de cuando el propietario obtiene más tokens.
-#### Si la transferencia
falla, el contrato revierte la llamada.
+#### Las funciones \_mint y \_burn {#_mint-y-_burn}
-Estas dos funciones (`_mint` y `_burn`) modifican el suministro total de tokens.
-_transfer(_msgSender(), recipient, amount);
-return true;
-}
+Estas dos funciones (`_mint` y `_burn`) modifican el suministro total de tókenes. Son internas y no hay ninguna función que las invoque en este contrato, entonces sólo son útiles si las hereda desde un contrato y añade su propia lógica para decidir en qué condiciones quiere acuñar nuevos tóekens o quemar los existentes.
-La función `_transfer` hace el trabajo real.
-Es una función privada a la que solo pueden llamar
-otras funciones del contrato. Por convención, las funciones privadas se nombran `_`, igual que las variables
-de estado.
+**NOTA:** cada token ERC-20 tiene su propia lógica de negocio que dicta la administración del token. Por ejemplo, un contrato de suministro fijo solo podría activar `_mint` en el constructor y nunca activar `_burn`. Un contrato que vende tókenes activará `_mint` cuando se pague y, presumiblemente, active `_burn` en cierto punto para evitar una inflación galopante.
```solidity
-Normalmente, en Solidity usamos `msg.sender` para el remitente del mensaje.
+ /** @dev Creates `amount` tokens and assigns them to `account`, increasing
+ * the total supply.
+ *
+ * Emits a {Transfer} event with `from` set to the zero address.
+ *
+ * Requirements:
+ *
+ * - `to` cannot be the zero address.
+ */
+ function _mint(address account, uint256 amount) internal virtual {
+ require(account != address(0), "ERC20: mint to the zero address");
+ _beforeTokenTransfer(address(0), account, amount);
+ _totalSupply = _totalSupply.add(amount);
+ _balances[account] = _balances[account].add(amount);
+ emit Transfer(address(0), account, amount);
+ }
```
-Sin embargo, eso rompe
-[OpenGSN](http://opengsn.org/).
+Asegúrese de actualizar `_totalSupply` cuando la cantidad total de tókenes cambie.
-```solidity
-Devuelve `msg.sender` para transacciones normales, pero para las que no tienen ether
-devuelve el firmante original y no el contrato que retransmitió el mensaje.
+```
+ /**
+ * @dev Destroys `amount` tokens from `account`, reducing the
+ * total supply.
+ *
+ * Emits a {Transfer} event with `to` set to the zero address.
+ *
+ * Requirements:
+ *
+ * - `account` cannot be the zero address.
+ * - `account` must have at least `amount` tokens.
+ */
+ function _burn(address account, uint256 amount) internal virtual {
+ require(account != address(0), "ERC20: burn from the zero address");
+
+ _beforeTokenTransfer(account, address(0), amount);
+
+ _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
+ _totalSupply = _totalSupply.sub(amount);
+ emit Transfer(account, address(0), amount);
+ }
```
-Funciones de autorización {#allowance-functions}
+La función `_burn` es casi idéntica a `_mint`, excepto que esta va en otra dirección.
-#### Estas son las funciones que implementan la funcionalidad de autorización: `allowance`, `approve`, `transferFrom`,
y `_approve`.
+#### La función \_approve {#_approve}
-Además, la implementación de OpenZeppelin va más allá del estándar básico para incluir algunas características que mejoran
-la seguridad: `increaseAllowance` y `decreaseAllowance`. La función de autorización {#allowance} /\*\*
-\* @dev Véase {IERC20-allowance}.
-\*/
-function allowance(address owner, address spender) public view virtual override returns (uint256) {
-return _allowances[owner][spender];
-}
+Esta es la función que actualmente especifica asignaciones. Observe que esta permite especificar una asignación que es mayor al balance actual de la cuenta del propietario. Esto es correcto, porque el saldo se revisa en el momento de la transferencia y puede ser diferente del saldo cuando se creó la asignación.
```solidity
-La función `allowance` permite a todo el mundo comprobar cualquier autorización.
+ /**
+ * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
+ *
+ * This internal function is equivalent to `approve`, and can be used to
+ * e.g., set automatic allowances for certain subsystems, etc.
+ *
+ * Emits an {Approval} event.
+ *
+ * Requirements:
+ *
+ * - `owner` cannot be the zero address.
+ * - `spender` cannot be the zero address.
+ */
+ function _approve(address owner, address spender, uint256 amount) internal virtual {
+ require(owner != address(0), "ERC20: approve from the zero address");
+ require(spender != address(0), "ERC20: approve to the zero address");
+
+ _allowances[owner][spender] = amount;
```
-```
-/**
- * @dev Véase {IERC20-approve}.
- *
- * Requisitos:
- *
- * - `spender` no puede ser la dirección cero.
- */
-function approve(address spender, uint256 amount) public virtual override returns (bool) { Esta función se llama para crear una autorización.
-```
+Emite un evento `Approval`. Dependiendo de cómo se escriba la aplicación, se le puede informar al contrato gastador sobre la aprobación, ya sea por el propietario o por un servidor que escucha a estos eventos.
```solidity
-Es similar a la función `transfer` anterior:
+ emit Approval(owner, spender, amount);
+ }
+
```
-### La función simplemente llama a una función interna (en este caso, `_approve`) que hace el trabajo real.
+### Modificar la variable Decimals {#modify-the-decimals-variable}
```solidity
-La función devuelve `true` (si tiene éxito) o se revierte (si no).
+
+
+ /**
+ * @dev Sets {decimals} to a value other than the default one of 18.
+ *
+ * WARNING: This function should only be called from the constructor. Most
+ * applications that interact with token contracts will not expect
+ * {decimals} to ever change, and may work incorrectly if it does.
+ */
+ function _setupDecimals(uint8 decimals_) internal {
+ _decimals = decimals_;
+ }
```
-Esta función modifica la variable `_decimals` que se utiliza para indicar a las interfaces de usuario cómo interpretar la cantidad.
-_approve(_msgSender(), spender, amount);
-return true;
-} Usamos funciones internas para minimizar el número de lugares donde ocurren cambios de estado.
+Esta función modifica la variable `_decimals` que sirve para decirle a las interfaces de usuario cómo deben interpretar la cantidad. Debería activarla desde el constructor. Sería desleal activarla desde cualquier punto subsecuente y las aplicaciones no están diseñadas para manejarla.
-### Hooks {#functions-that-modify-token-information}
+### Hooks {#hooks}
```solidity
-De esta manera tenemos menos posibilidades de equivocarnos.
+
+ /**
+ * @dev Hook that is called before any transfer of tokens. This includes
+ * minting and burning.
+ *
+ * Calling conditions:
+ *
+ * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
+ * will be to transferred to `to`.
+ * - when `from` is zero, `amount` tokens will be minted for `to`.
+ * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
+ * - `from` and `to` are never both zero.
+ *
+ * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
+ */
+ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
+}
```
-La función transferFrom {#transferFrom} Esta es la función que un gastador llama para usar una autorización.
+Esta es la función gancho a ser llamada durante las transferencias. Aquí está vacía, pero si necesita hacer algo puede sobrescribirla.
-## Conclusión {#_transfer}
+## Conclusión {#conclusion}
-```
-/**
- * @dev Véase {IERC20-transferFrom}.
- *
- * Emite un evento {Approval} que indica la autorización actualizada. Esto no
- * es requerido por el EIP. Véase la nota al principio de {ERC20}.
- *
- * Requisitos:
- *
- * - `sender` y `recipient` no pueden ser la dirección cero.
- * - `sender` debe tener un saldo de al menos `amount`.
- * - el llamante debe tener autorización para los tokens de ``sender`` de al menos
- * `amount`.
- */
-function transferFrom(address sender, address recipient, uint256 amount) public virtual
- override returns (bool) {
- _transfer(sender, recipient, amount);
-```
-
-- _No hay secretos en la cadena de bloques_. La llamada a la función `a.sub(b, "message")` hace dos cosas.
-- Primero, calcula `a-b`, que es la nueva autorización. Segundo, comprueba que este resultado no sea negativo.
-- Si es negativo, la llamada se revierte con el mensaje proporcionado. Tenga en cuenta que cuando una llamada se revierte, cualquier procesamiento realizado anteriormente durante esa llamada se ignora, por lo que no es necesario
- deshacer la `_transfer`. _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount,
- "ERC20: la cantidad transferida excede la autorización"));
- return true;
- } Adiciones de seguridad de OpenZeppelin {#openzeppelin-safety-additions}
-- Es peligroso establecer una autorización no nula a otro valor no nulo,
- porque solo controla el orden de sus propias transacciones, no el de nadie más.
- Imagine que
- tiene dos usuarios, Alicia, que es ingenua, y Bill, que es deshonesto.
-- Alicia quiere un servicio de
- Bill que cree que cuesta cinco tokens, así que le da a Bill una autorización de cinco tokens. Entonces algo cambia y el precio de Bill sube a diez tokens. Alicia, que todavía quiere el servicio,
- envía una transacción que establece la autorización de Bill en diez. En el momento en que Bill ve esta nueva transacción
- en el pool de transacciones, envía una transacción que gasta los cinco tokens de Alicia y tiene un precio
- de gas mucho más alto para que se mine más rápido.
-
-De esa manera, Bill puede gastar primero cinco tokens y luego,
-una vez que se mine la nueva autorización de Alicia, gastar diez más por un precio total de quince tokens, más de lo que
-Alicia pretendía autorizar.
-
-[Vea aquí más de mi trabajo](https://cryptodocguy.pro/).
+Para revisión, he aquí hay algunas de las ideas importantes en este contrato (en mi opinión, porque usted puede pensar de otra manera):
+
+- _No hay secretos en la cadena de bloques._. Cualquier información a la que un contrato inteligente pueda acceder está disponible para todo el mundo.
+- Puedes controlar el orden de tus propias transacciones, pero no cuando ocurren las transacciones de otras personas. Esta es la razón por la que cambiar una asignación puede ser peligroso, por que permite que el gastador gaste la suma de ambos permisos.
+- Valores del tipo `uint256` se envuelven alrededor. En otras palabras_ 0-1=2^256-1_. Si no se desea ese comportamiento, tiene que comprobarlo (o use la biblioteca SafeMath, que lo hace en su nombre). Tome en cuenta que esto cambió en [ Solidity 0.8.0](https://docs.soliditylang.org/en/breaking/080-breaking-changes.html).
+- Haz todos los cambios de estado de un tipo específico en un lugar en específico, porque esto facilita la auditoría. Esta es la función que tenemos, por ejemplo, `_approve`, la cual se invoca mediante `approve`, `transferFrom`, `increaseAllowance` y `decreaseAllowance`
+- Los cambios de estado deben ser atómicos, sin otra acción de por medio (como puedes ver en `_transfer`). Esto se debe a que durante el cambio de estado tiene un estado inconsistente. Por ejemplo, entre el momento en que deduce desde el saldo del emisor y el momento en que añade al saldo del receptor, hay menos tókenes en existencia de los que debería. Se podría abusar de esto potencialmente, si hay operaciones entre ellos, especialmente inivocadas a un contrato diferente.
+
+Ahora que ha visto cómo se escribe un contrato ERC-20 de OpenZeppelin y especialmente cómo se hace más seguro, escriba sus propias aplicaciones y contratos seguros.
From 76dafa303b694a08e73fc7486bf115845c3a450e Mon Sep 17 00:00:00 2001
From: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date: Sun, 21 Dec 2025 12:10:49 -0300
Subject: [PATCH 582/589] patch(i18n): missing whitespace
---
src/intl/es/common.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/intl/es/common.json b/src/intl/es/common.json
index ff5204284bb..5370c3a7a9a 100644
--- a/src/intl/es/common.json
+++ b/src/intl/es/common.json
@@ -408,7 +408,7 @@
"prediction-markets": "Predicción de mercados",
"privacy-policy": "Política de privacidad",
"private-ethereum": "Red privada de Ethereum",
- "product-disclaimer": "Los productos y servicios se indican para comodidad de la comunidad Ethereum. La inclusión de un producto o serviciono implica su recomendaciónpor parte del equipo del sitio web ethereum.org ni de Ethereum Foundation.",
+ "product-disclaimer": "Los productos y servicios se indican para comodidad de la comunidad Ethereum. La inclusión de un producto o servicio no implica su recomendación por parte del equipo del sitio web ethereum.org ni de Ethereum Foundation.",
"quizzes": "Cuestionarios",
"quizzes-title": "Centro de preguntas",
"refresh": "Actualizar página",
From 4cc7f577aa19927ebfe8215820e3d00ed26ba220 Mon Sep 17 00:00:00 2001
From: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date: Wed, 7 Jan 2026 13:20:37 -0800
Subject: [PATCH 583/589] fix: suggestions from code review
- markdown link syntax patches
- de-dup header labels
- revert brand name changes
- fix rollups translation
---
.../es/community/get-involved/index.md | 2 +-
.../translations/es/community/research/index.md | 8 ++++----
.../es/decentralized-identity/index.md | 4 ++--
.../pos/attack-and-defense/index.md | 16 ++++++++--------
.../es/developers/docs/ethereum-stack/index.md | 2 +-
.../developers/docs/intro-to-ethereum/index.md | 2 +-
.../docs/programming-languages/elixir/index.md | 8 ++++----
.../docs/programming-languages/ruby/index.md | 2 +-
.../es/developers/docs/smart-contracts/index.md | 4 ++--
.../docs/smart-contracts/testing/index.md | 4 ++--
.../docs/smart-contracts/upgrading/index.md | 2 +-
.../how-to-view-nft-in-metamask/index.md | 2 +-
.../how-to-write-and-deploy-an-nft/index.md | 2 +-
.../translations/es/roadmap/dencun/index.md | 4 ++--
.../es/roadmap/pectra/maxeb/index.md | 10 +++++-----
src/intl/es/glossary-tooltip.json | 2 +-
src/intl/es/glossary.json | 4 ++--
src/intl/es/page-layer-2-learn.json | 2 +-
src/intl/es/page-upgrades-index.json | 2 +-
19 files changed, 41 insertions(+), 41 deletions(-)
diff --git a/public/content/translations/es/community/get-involved/index.md b/public/content/translations/es/community/get-involved/index.md
index ecad6f0e6c4..48a80528eec 100644
--- a/public/content/translations/es/community/get-involved/index.md
+++ b/public/content/translations/es/community/get-involved/index.md
@@ -4,7 +4,7 @@ description: "Cómo participar en la comunidad Ethereum."
lang: es
---
-# ¿Cómo puedo involucrarme? Involúcrese {#get-involved}
+# ¿Cómo puedo involucrarme? {#get-involved}
La comunidad Ethereum incluye a personas de diferentes orígenes y habilidades. Desarrolladores, artistas, contables... hay muchas formas de involucrarse. He aquí una lista de sugerencias para ayudarle a empezar.
diff --git a/public/content/translations/es/community/research/index.md b/public/content/translations/es/community/research/index.md
index 608471ea753..1a16cc2032f 100644
--- a/public/content/translations/es/community/research/index.md
+++ b/public/content/translations/es/community/research/index.md
@@ -279,7 +279,7 @@ El staking líquido permite a los usuarios con menos de 32 ETH recibir rendimien
- [Gestión de retirada de fondos de Lido](https://ethresear.ch/t/handling-withdrawals-in-lidos-eth-liquid-staking-protocol/8873)
- [Credenciales de retirada](https://ethresear.ch/t/withdrawal-credential-rotation-from-bls-to-eth1/8722)
-- [Los riesgos de los derivados del staking líquido] (https://notes.ethereum.org/@djrtwo/risks-of-lsd)
+- [Los riesgos de los derivados del staking líquido](https://notes.ethereum.org/@djrtwo/risks-of-lsd)
## Pruebas {#testing}
@@ -308,7 +308,7 @@ Se necesitan más herramientas de análisis de datos y paneles que proporcionen
#### Investigación reciente {#recent-research-14}
-- [Análisis de datos del Robust Incentives Group] (https://rig.ethereum.org/)
+- [Análisis de datos del Robust Incentives Group](https://rig.ethereum.org/)
## Aplicaciones y herramientas {#apps-and-tooling}
@@ -349,7 +349,7 @@ Las herramientas para desarrolladores de Ethereum están evolucionando rápidame
- [Herramientas por lenguaje de programación](/developers/docs/programming-languages/)
- [Marcos de desarrolladores](/developers/docs/frameworks/)
-- [Lista de herramientas de desarrollo de consenso] (https://github.com/ConsenSys/ethereum-developer-tools-list)
+- [Lista de herramientas de desarrollo de consenso](https://github.com/ConsenSys/ethereum-developer-tools-list)
- [Estándares de tokens](/desarrolladores/documentos/estándares/tokens/)
- [CryptoDevHub: herramientas de EVM](https://cryptodevhub.io/wiki/ethereum-virtual-machine-tools)
@@ -376,7 +376,7 @@ Por lo general, los hackeos en Ethereum se aprovechan de puntos flacos en aplica
#### Lectura de fondo {#background-reading-19}
-- [Informe de explotación de agujero de gusano] (https://blog.chainalysis.com/reports/wormhole-hack-february-2022/)
+- [Informe de explotación de agujero de gusano](https://blog.chainalysis.com/reports/wormhole-hack-february-2022/)
- [Lista de hackeo de contratos de Ethereum post mórtem](https://forum.openzeppelin.com/t/list-of-ethereum-smart-contracts-post-mortems/1191)
- [Rekt News](https://x.com/RektHQ?s=20&t=3otjYQdM9Bqk8k3n1a1Adg)
diff --git a/public/content/translations/es/decentralized-identity/index.md b/public/content/translations/es/decentralized-identity/index.md
index adf531b76a6..53fb1797ea1 100644
--- a/public/content/translations/es/decentralized-identity/index.md
+++ b/public/content/translations/es/decentralized-identity/index.md
@@ -115,7 +115,7 @@ Los identificadores descentralizados son emitidos, mantenidos y controlados por
Los identificadores descentralizados se almacenan en libros de contabilidad distribuidos ([cadenas de bloques](/glossary/#blockchain)) o en [redes de pares](/glossary/#peer-to-peer-network). Esto hace que los DID sean [globalmente únicos, resolubles con alta disponibilidad y criptográficamente verificables](https://w3c-ccg.github.io/did-primer/). Un identificador descentralizado puede ser asociado con diferentes entidades, incluyendo personas, organizaciones o instituciones gubernamentales.
-## ¿Qué hace que los identificadores descentralizados sean posibles? ¿Qué hace posibles los identificadores descentralizados? {#what-makes-decentralized-identifiers-possible}
+## ¿Qué hace posibles los identificadores descentralizados? {#what-makes-decentralized-identifiers-possible}
### 1. Criptografía de clave pública {#public-key-cryptography}
@@ -129,7 +129,7 @@ Una cadena de bloques sirve como un registro de datos verificables: un repositor
Si alguien necesita confirmar la validez de un identificador descentralizado, puede buscar la clave pública asociada en la cadena de bloques. Esto es diferente de los identificadores tradicionales que requieren de terceros para autenticarse.
-## ¿Cómo hacen los identificadores descentralizados para generar certificaciones descentralizadas? ¿Cómo los identificadores y las atestaciones descentralizadas hacen posible la identidad descentralizada? {#how-decentralized-identifiers-and-attestations-enable-decentralized-identity}
+## ¿Cómo los identificadores y las atestaciones descentralizadas hacen posible la identidad descentralizada? {#how-decentralized-identifiers-and-attestations-enable-decentralized-identity}
La identidad descentralizada es la idea de que la información relacionada con la identidad debe ser autocontrolada, privada y portátil, siendo sus cimientos los identificadores descentralizados y los certificados.
diff --git a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
index ed8e6ff82ae..9c07be052a8 100644
--- a/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
+++ b/public/content/translations/es/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
@@ -4,11 +4,11 @@ description: "Conozca mejor los vectores de ataque conocidos en la prueba de par
lang: es
---
-Los ladrones y saboteadores buscan constantemente oportunidades para atacar el software de cliente de Ethereum. Esta página describe los vectores de ataque conocidos en la capa de consenso de Ethereum y describe cómo se pueden defender esos ataques. La información en esta página está adaptada de una [versión más larga] (https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs).
+Los ladrones y saboteadores buscan constantemente oportunidades para atacar el software de cliente de Ethereum. Esta página describe los vectores de ataque conocidos en la capa de consenso de Ethereum y describe cómo se pueden defender esos ataques. La información en esta página está adaptada de una [versión más larga](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs).
## Requisitos previos {#prerequisites}
-Se necesita algo de conocimiento básico sobre la [prueba de participación] (/developers/docs/consensus-mechanisms/pos/). Además, también es de utilidad tener una comprensión básica de la [capa de incentivos] de Ethereum (/developers/docs/consensus-mechanisms/pos/rewards-and-penalties) y del algoritmo de selección de bifurcación (/developers/docs/consensus-mechanisms/pos/gasper).
+Se necesita algo de conocimiento básico sobre la [prueba de participación](/developers/docs/consensus-mechanisms/pos/). Además, también es de utilidad tener una comprensión básica de la [capa de incentivos de Ethereum](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties) y del [algoritmo de selección de bifurcación](/developers/docs/consensus-mechanisms/pos/gasper).
## ¿Qué quieren los atacantes? {#what-do-attackers-want}
@@ -58,7 +58,7 @@ Fundamentalmente, todos los ataques de participación pequeña son variaciones s
#### reorganizaciones {#reorgs}
-Varios documentos han explicado los ataques a Ethereum que logran reorganizaciones o retrasos en la finalidad con solo una pequeña proporción del total de ether en participación. Estos ataques generalmente se basan en que el atacante retiene cierta información de otros validadores y luego la libera de alguna manera matizada y/o en algún momento oportuno. Su objetivo es desplazar a algún bloque honesto de la cadena predilecta. [Neuder y otros 2020] (https://arxiv.org/pdf/2102.02247.pdf) mostraron cómo un validador atacante puede crear y certificar un bloque (`B`) para una ranura específica `n+1`, pero abstenerse de propagarlo a otros nodos en la red. En su lugar, retienen ese bloque certificado hasta el siguiente slot `n+2`. Un validador honesto propone un bloque ('C') para la ranura 'n+2'. Casi simultáneamente, el atacante puede liberar su bloque retenido (`B`) junto con las certificaciones retenidas para dicho bloque y, además, certificar que `B` es la cabecera de la cadena con sus votos para la ranura `n+2`, negando efectivamente la existencia del bloque honesto `C`. Cuando se libera el bloque honesto `D`, el algoritmo de selección de bifurcación detecta que `D` construido sobre `B` es más pesado que `D` construido sobre `C`. Por lo tanto, el atacante ha logrado eliminar el bloque honesto `C` en la ranura `n+2` de la cadena predilecta utilizando una reorganización 1-block ex. [Un atacante con el 34 %] (https://www.youtube.com/watch?v=6vzXwwk12ZE) de la participación tiene una alta probabilidad de tener éxito en este ataque, como se explica [en esta nota] (https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair). En teoría, sin embargo, este ataque podría intentarse con participaciones más pequeñas. [Neuder y otros 2020] (https://arxiv.org/pdf/2102.02247.pdf) describieron este ataque funcionando con un 30 % de participación, pero más tarde se demostró que era viable con un [2 % del total de la participación](https://arxiv.org/pdf/2009.04987.pdf) y luego nuevamente para un [único validador](https://arxiv.org/abs/2110.10086#) utilizando técnicas de equilibrio que examinaremos en la siguiente sección.
+Varios documentos han explicado los ataques a Ethereum que logran reorganizaciones o retrasos en la finalidad con solo una pequeña proporción del total de ether en participación. Estos ataques generalmente se basan en que el atacante retiene cierta información de otros validadores y luego la libera de alguna manera matizada y/o en algún momento oportuno. Su objetivo es desplazar a algún bloque honesto de la cadena predilecta. [Neuder y otros 2020](https://arxiv.org/pdf/2102.02247.pdf) mostraron cómo un validador atacante puede crear y certificar un bloque (`B`) para una ranura específica `n+1`, pero abstenerse de propagarlo a otros nodos en la red. En su lugar, retienen ese bloque certificado hasta el siguiente slot `n+2`. Un validador honesto propone un bloque ('C') para la ranura 'n+2'. Casi simultáneamente, el atacante puede liberar su bloque retenido (`B`) junto con las certificaciones retenidas para dicho bloque y, además, certificar que `B` es la cabecera de la cadena con sus votos para la ranura `n+2`, negando efectivamente la existencia del bloque honesto `C`. Cuando se libera el bloque honesto `D`, el algoritmo de selección de bifurcación detecta que `D` construido sobre `B` es más pesado que `D` construido sobre `C`. Por lo tanto, el atacante ha logrado eliminar el bloque honesto `C` en la ranura `n+2` de la cadena predilecta utilizando una reorganización 1-block ex. [Un atacante con el 34 %](https://www.youtube.com/watch?v=6vzXwwk12ZE) de la participación tiene una alta probabilidad de tener éxito en este ataque, como se explica [en esta nota](https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair). En teoría, sin embargo, este ataque podría intentarse con participaciones más pequeñas. [Neuder y otros 2020](https://arxiv.org/pdf/2102.02247.pdf) describieron este ataque funcionando con un 30 % de participación, pero más tarde se demostró que era viable con un [2 % del total de la participación](https://arxiv.org/pdf/2009.04987.pdf) y luego nuevamente para un [único validador](https://arxiv.org/abs/2110.10086#) utilizando técnicas de equilibrio que examinaremos en la siguiente sección.

@@ -74,13 +74,13 @@ Tanto los ataques de rebote como los de equilibrio dependen de que el atacante t
Combinadas, estas medidas crean un escenario en el que un proponente de bloques honesto emite su bloque muy rápidamente después del inicio de la ranura, luego hay un período de ~1/3 de una ranura (4 segundos) en el que ese nuevo bloque podría hacer que el algoritmo de elección de bifurcación cambie a otra cadena. Después de esa misma fecha límite, las certificaciones que lleguen de validadores lentos se ponderan en comparación con aquellas que llegaron antes. Esto favorece poderosamente a los proponentes de avisos y validadores a la hora de determinar la cabeza de la cadena y reduce sustancialmente la probabilidad de un ataque de equilibrio o rebote exitoso.
-Cabe señalar que el proposer boosting por sí solo únicamente defiende contra las “reorganizaciones baratas”, es decir, las que intenta un atacante con una participación pequeña. De hecho, el impulso de la propuesta en sí mismo pueden lanzarlo partes interesadas más grandes. Los autores de [esta publicación] (https://ethresear.ch/t/change-fork-choice-rule-to-mitigate-balancing-and-reorging-attacks/11127) describren como un atacante con el 7 % de la participación puede implementar sus votos estrategicamente para engañar a los validadores honestos, reorganizando bloques confiables, para construir sus bifurcaciones. Este ataque se ideó asumiendo condiciones de latencia ideales que son muy poco probables. Las probabilidades siguen siendo muy altas para el atacante, y la mayor participación también significa más capital en riesgo y un desincentivo económico más fuerte.
+Cabe señalar que el proposer boosting por sí solo únicamente defiende contra las “reorganizaciones baratas”, es decir, las que intenta un atacante con una participación pequeña. De hecho, el impulso de la propuesta en sí mismo pueden lanzarlo partes interesadas más grandes. Los autores de [esta publicación](https://ethresear.ch/t/change-fork-choice-rule-to-mitigate-balancing-and-reorging-attacks/11127) describren como un atacante con el 7 % de la participación puede implementar sus votos estrategicamente para engañar a los validadores honestos, reorganizando bloques confiables, para construir sus bifurcaciones. Este ataque se ideó asumiendo condiciones de latencia ideales que son muy poco probables. Las probabilidades siguen siendo muy altas para el atacante, y la mayor participación también significa más capital en riesgo y un desincentivo económico más fuerte.
-También se propuso [un ataque de equilibrio específicamente dirigido a la regla LMD] (https://ethresear.ch/t/balancing-attack-lmd-edition/11853), el cual sugirió que sería variable a pesar de la intención de quienes proponen. Un atacante establece dos cadenas competidoras equivocando su propuesta de bloque y propagando cada bloque a aproximadamente la mitad de la red cada uno, lo que establece un equilibrio aproximado entre las bifurcaciones. Seguidamente, los validadores que están en colusión confunden sus votos, sincronizándolos de manera que la mitad de la red reciba sus votos para la primera bifurcación `A` y la otra mitad reciba sus votos para la primera bifurcación `B`. Dado que la regla LMD descarta la segunda certificación y conserva solo la primera para cada validador, la mitad de la red observa votos para `A` y ninguno para `B`, mientras que la otra mitad ve votos para `B` y ninguno para `A`. Los autores describen la regla LMD que le da al adversario un «poder notable» para montar un ataque de equilibrio.
+También se propuso [un ataque de equilibrio específicamente dirigido a la regla LMD](https://ethresear.ch/t/balancing-attack-lmd-edition/11853), el cual sugirió que sería variable a pesar de la intención de quienes proponen. Un atacante establece dos cadenas competidoras equivocando su propuesta de bloque y propagando cada bloque a aproximadamente la mitad de la red cada uno, lo que establece un equilibrio aproximado entre las bifurcaciones. Seguidamente, los validadores que están en colusión confunden sus votos, sincronizándolos de manera que la mitad de la red reciba sus votos para la primera bifurcación `A` y la otra mitad reciba sus votos para la primera bifurcación `B`. Dado que la regla LMD descarta la segunda certificación y conserva solo la primera para cada validador, la mitad de la red observa votos para `A` y ninguno para `B`, mientras que la otra mitad ve votos para `B` y ninguno para `A`. Los autores describen la regla LMD que le da al adversario un «poder notable» para montar un ataque de equilibrio.
Este vector de ataque LMD se cerró mediante [la actualización del algoritmo de selección de bifurcación](https://github.com/ethereum/consensus-specs/pull/2845) para que descarte por completo a los validadores que confunden sus votos de la consideración en la selección de bifurcación. Los validadores equívocos también tienen su influencia futura descontada por el algoritmo de elección de bifurcación. Esto evita el ataque de equilibrio descrito anteriormente, al tiempo que mantiene la resiliencia contra los ataques avalanchas.
-Otra clase de ataque conocido como [**ataques de avalancha**] (https://ethresear.ch/t/avalanche-attack-on-proof-of-stake-ghost/11854/3) se describió en un [documento de marzo de 2022] (https://arxiv.org/pdf/2203.01315.pdf). Para montar un ataque avalancha, el atacante necesita controlar a varios proponentes de bloques consecutivos. En cada una de las ranuras de los proponentes de bloque, el atacante retiene su bloque, recogiéndolo hasta que la cadena honesta alcanza un peso de subárbol igual con los bloques retenidos. Seguidamente, los bloques retenidos se liberan para que sean equívocos al máximo. Los autores sugieren que el impulso del proponente, la defensa principal contra los ataques de equilibrio y de rebote no protegen contra algunas variantes de ataques avalancha. Sin embargo, los autores solo demostraron asímismo el ataque a una versión altamente idealizada del algoritmo de selección de bifurcación de Ethereum (usaron GHOST sin LMD).
+Otra clase de ataque conocido como [**ataques de avalancha**](https://ethresear.ch/t/avalanche-attack-on-proof-of-stake-ghost/11854/3) se describió en un [documento de marzo de 2022](https://arxiv.org/pdf/2203.01315.pdf). Para montar un ataque avalancha, el atacante necesita controlar a varios proponentes de bloques consecutivos. En cada una de las ranuras de los proponentes de bloque, el atacante retiene su bloque, recogiéndolo hasta que la cadena honesta alcanza un peso de subárbol igual con los bloques retenidos. Seguidamente, los bloques retenidos se liberan para que sean equívocos al máximo. Los autores sugieren que el impulso del proponente, la defensa principal contra los ataques de equilibrio y de rebote no protegen contra algunas variantes de ataques avalancha. Sin embargo, los autores solo demostraron asímismo el ataque a una versión altamente idealizada del algoritmo de selección de bifurcación de Ethereum (usaron GHOST sin LMD).
El ataque de avalancha se ve mitigado por la parte LMD del algoritmo de elección de bifurcación LMD-GHOST. LMD significa «last message driven» (último mensaje dirigido) y se refiere a una tabla mantenida por cada validador que contiene el último mensaje recibido de otros validadores. Ese campo solo se actualiza si el nuevo mensaje es de una ranura posterior a la que ya está en la tabla para un validador en particular. En la práctica, esto significa que en cada ranura, el primer mensaje recibido es el que se ha aceptado y cualquier mensaje adicional es una equivocación que se debe ignorar. Dicho de otra manera, los clientes de consenso no cuentan las equivocaciones: utilizan el primer mensaje que llega de cada validador y las equivocaciones simplemente se descartan, evitando los ataques avalancha.
@@ -127,11 +127,11 @@ Un atacante con el 66 % o más del total de ether apostado puede finalizar su ca
Si los validadores deshonestos logran finalizar su versión preferida de la cadena, la comunidad de Ethereum se encuentra en una situación difícil. La cadena predilecta incluye una sección deshonesta incorporada en su historia, mientras que los validadores honestos pueden terminar siendo castigados por certificar una cadena alternativa (honesta). Tenga en cuenta que una cadena finalizada pero incorrecta también podría surgir de un error en un cliente mayoritario. Al fin y al cabo, la última alternativa es confiar en la capa social —es decir, la capa 0— para resolver la situación.
-Una de las fortalezas del consenso PoS de Ethereum es que existen [variedad de estrategias defensivas] (https://youtu.be/1m12zgJ42dI?t=1712) que la comunidad puede implementar frente a un ataque. Una respuesta mínima podría ser el obligar a salir por la fuerza a los validadores de los atacantes de la red sin ninguna penalización adicional. Para volver a entrar en la red, el atacante tendría que unirse a una cola de activación que garantiza que el conjunto de validadores crezca gradualmente. Por ejemplo, añadir la cantidad de validadores suficientes para duplicar la cantidad de ether apostado tarda unos 200 días, lo que compra efectivamente los validadores honestos 200 días antes de que el atacante pueda intentar otro ataque del 51 %. No obstante, la comunidad también podría optar por penalizar más duramente al atacante, revocando las recompensas pasadas o quemando alguna parte (hasta el 100 %) de su capital en participación.
+Una de las fortalezas del consenso PoS de Ethereum es que existen [variedad de estrategias defensivas](https://youtu.be/1m12zgJ42dI?t=1712) que la comunidad puede implementar frente a un ataque. Una respuesta mínima podría ser el obligar a salir por la fuerza a los validadores de los atacantes de la red sin ninguna penalización adicional. Para volver a entrar en la red, el atacante tendría que unirse a una cola de activación que garantiza que el conjunto de validadores crezca gradualmente. Por ejemplo, añadir la cantidad de validadores suficientes para duplicar la cantidad de ether apostado tarda unos 200 días, lo que compra efectivamente los validadores honestos 200 días antes de que el atacante pueda intentar otro ataque del 51 %. No obstante, la comunidad también podría optar por penalizar más duramente al atacante, revocando las recompensas pasadas o quemando alguna parte (hasta el 100 %) de su capital en participación.
Sea cual sea la penalización impuesta al atacante, la comunidad también tiene que decidir juntos si la cadena deshonesta —a pesar de ser la favorecida por el algoritmo de elección de bifurcación codificado en los clientes de Ethereum— es, de hecho, inválida y si la comunidad debería construir encima de la cadena honesta en su lugar. Los validadores honestos podrían acordar colectivamente construir sobre una bifurcación de la cadena de bloques Ethereum aceptada por la comunidad que podría, por ejemplo, haberse bifurcado de la cadena predilecta antes de que comenzara el ataque o eliminar por la fuerza los validadores de los atacantes. Se incentivaría a los validadores honestos a construir sobre esta cadena, porque evitarían las penalizaciones que se les aplican por no certificar ―y con razón― la cadena del atacante. Los intercambios, los atajos y las aplicaciones construidas en Ethereum presumiblemente preferirían estar en la cadena honesta y seguirían a los validadores honestos a la cadena de bloques honesta.
-Sin embargo, este sería un desafío sustancial para la gobernanza. Algunos usuarios y validadores sin duda perderían como resultado del cambio de regreso a la cadena honesta, las transacciones en bloques validadas después del ataque podrían potencialmente revertirse, interrumpiendo la capa de la aplicación, y esto simplemente socava la ética de algunos usuarios que tienden a creer que «el código es normativo». Lo más probable es que los intercambios y las aplicaciones hayan vinculado las acciones fuera de la cadena a las transacciones en cadena que ahora se pueden revertir, iniciando una cascada de retractaciones y revisiones que serían difíciles de deshacer de manera justa, especialmente si las ganancias mal obtenidas se han mezclado, se han depositado en DeFi u otros derivados con efectos secundarios para los usuarios honestos. Sin duda, algunos usuarios, tal vez incluso institucionales, ya se habrían beneficiado de la cadena deshonesta, ya sea por ser astutos o por pura casualidad, y podrían oponerse a una bifurcación para proteger sus ganancias. Ha habido solicitudes para ensayar la respuesta de la comunidad a los ataques de más del 51 % para que se pueda ejecutar rápidamente una mitigación coordinada y sensata. Existe una discusión convincente por parte de Vitalik en ethresear.ch [aquí](https://ethresear.ch/t/timeliness-detectors-and-51-attack-recovery-in-blockchains/6925) y [aquí] (https://ethresear.ch/t/responding-to-51-attacks-in-casper-ffg/6363) y en Twitter [aquí] (https://twitter.com/skylar_eth/status/1551798684727508992?s=20&t=oHZ1xv8QZdOgAXhxZKtHEw). El objetivo de dar una respuesta social coordinada debe ser muy específico y centrarse en el castigo del atacante y la minimización de los efectos para otros usuarios.
+Sin embargo, este sería un desafío sustancial para la gobernanza. Algunos usuarios y validadores sin duda perderían como resultado del cambio de regreso a la cadena honesta, las transacciones en bloques validadas después del ataque podrían potencialmente revertirse, interrumpiendo la capa de la aplicación, y esto simplemente socava la ética de algunos usuarios que tienden a creer que «el código es normativo». Lo más probable es que los intercambios y las aplicaciones hayan vinculado las acciones fuera de la cadena a las transacciones en cadena que ahora se pueden revertir, iniciando una cascada de retractaciones y revisiones que serían difíciles de deshacer de manera justa, especialmente si las ganancias mal obtenidas se han mezclado, se han depositado en DeFi u otros derivados con efectos secundarios para los usuarios honestos. Sin duda, algunos usuarios, tal vez incluso institucionales, ya se habrían beneficiado de la cadena deshonesta, ya sea por ser astutos o por pura casualidad, y podrían oponerse a una bifurcación para proteger sus ganancias. Ha habido solicitudes para ensayar la respuesta de la comunidad a los ataques de más del 51 % para que se pueda ejecutar rápidamente una mitigación coordinada y sensata. Existe una discusión convincente por parte de Vitalik en ethresear.ch [aquí](https://ethresear.ch/t/timeliness-detectors-and-51-attack-recovery-in-blockchains/6925) y [aquí](https://ethresear.ch/t/responding-to-51-attacks-in-casper-ffg/6363) y en Twitter [aquí](https://twitter.com/skylar_eth/status/1551798684727508992?s=20&t=oHZ1xv8QZdOgAXhxZKtHEw). El objetivo de dar una respuesta social coordinada debe ser muy específico y centrarse en el castigo del atacante y la minimización de los efectos para otros usuarios.
La gobernanza es un tema de por sí complicado. Gestionar una respuesta de emergencia de capa 0 a una cadena de finalización deshonesta sin duda sería un desafío para la comunidad de Ethereum, pero [ha sucedido](/ethereum-forks/#dao-fork-summary) —[dos veces](/ethereum-forks/#tangerine-whistle)— en la historia de Ethereum).
diff --git a/public/content/translations/es/developers/docs/ethereum-stack/index.md b/public/content/translations/es/developers/docs/ethereum-stack/index.md
index b81b049d75f..84899bf815e 100644
--- a/public/content/translations/es/developers/docs/ethereum-stack/index.md
+++ b/public/content/translations/es/developers/docs/ethereum-stack/index.md
@@ -50,7 +50,7 @@ En el nivel superior de la pila están las aplicaciones orientadas al usuario. S
La forma en la que desarrollas estas interfaces de usuario permanece esencialmente sin cambios. Los usuarios no suelen necesitar saber si la aplicación que están utilizando se ha diseñado mediante una blockchain.
-## ¿Estás preparado para elegir tu pila? ¿Listo para elegir tu stack? {#ready-to-choose-your-stack}
+## ¿Listo para elegir tu stack? {#ready-to-choose-your-stack}
Consulta nuestra guía para [configurar un entorno de desarrollo local](/developers/local-environment/) para tu aplicación de Ethereum.
diff --git a/public/content/translations/es/developers/docs/intro-to-ethereum/index.md b/public/content/translations/es/developers/docs/intro-to-ethereum/index.md
index 2b0e1f70bde..48c30fe3211 100644
--- a/public/content/translations/es/developers/docs/intro-to-ethereum/index.md
+++ b/public/content/translations/es/developers/docs/intro-to-ethereum/index.md
@@ -42,7 +42,7 @@ La cantidad de ETH que se paga corresponde al tiempo necesario para completar el
ETH también se utiliza para proporcionar seguridad criptoeconómica a la red de tres maneras principales: 1) se utiliza como un medio para recompensar a los validadores que proponen bloques, o que denuncian un comportamiento deshonesto de otros validadores; 2) los validadores lo apuestan, actuando como garantía contra el comportamiento deshonesto; si los validadores intentan comportarse mal, se puede destruir sus ETH; 3) se utiliza para ponderar «votos» para los nuevos bloques propuestos, alimentándose de la parte de la bifurcación del mecanismo de consenso.
-## ¿Qué son los contratos inteligentes? ¿Qué son los contratos inteligentes? {#what-are-smart-contracts}
+## ¿Qué son los contratos inteligentes? {#what-are-smart-contracts}
En la práctica, los participantes no escriben un código nuevo cada vez que desean solicitar un cálculo en la EVM. Más bien, los desarrolladores de aplicaciones suben programas (fragmentos de código reutilizables) en el entorno EVM, y los usuarios solicitan la ejecución de estos fragmentos de código con parámetros variables. Llamamos "contratos inteligentes" a los programas subidos y ejecutados por la red.
diff --git a/public/content/translations/es/developers/docs/programming-languages/elixir/index.md b/public/content/translations/es/developers/docs/programming-languages/elixir/index.md
index 3bb91fbe4d0..d91a183a32f 100644
--- a/public/content/translations/es/developers/docs/programming-languages/elixir/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/elixir/index.md
@@ -23,13 +23,13 @@ Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprov
## Artículos para principiantes {#beginner-articles}
-- [Comprender finalmente las cuentas de Ethereum] (https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
-- [Ethers — Una biblioteca Web3 de Ethereum de primera clase para Elixir] (https://medium.com/@alisinabh/announcing-ethers-a-first-class-ethereum-web3-library-for-elixir-1d64e9409122)
+- [Comprender finalmente las cuentas de Ethereum](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
+- [Ethers — Una biblioteca Web3 de Ethereum de primera clase para Elixir](https://medium.com/@alisinabh/announcing-ethers-a-first-class-ethereum-web3-library-for-elixir-1d64e9409122)
## Articulos para usuarios familiarizados {#intermediate-articles}
-- [Cómo firmar transacciones de contratos de Ethereum sin procesar con Elixir] (https://kohlerjp.medium.com/how-to-sign-raw-ethereum-contract-transactions-with-elixir-f8822bcc813b)
-- [Contratos inteligentes de Ethereum y Elixir] (https://medium.com/agile-alpha/ethereum-smart-contracts-and-elixir-c7c4b239ddb4)
+- [Cómo firmar transacciones de contratos de Ethereum sin procesar con Elixir](https://kohlerjp.medium.com/how-to-sign-raw-ethereum-contract-transactions-with-elixir-f8822bcc813b)
+- [Contratos inteligentes de Ethereum y Elixir](https://medium.com/agile-alpha/ethereum-smart-contracts-and-elixir-c7c4b239ddb4)
## Proyectos y herramientas de Elixir {#elixir-projects-and-tools}
diff --git a/public/content/translations/es/developers/docs/programming-languages/ruby/index.md b/public/content/translations/es/developers/docs/programming-languages/ruby/index.md
index 1e3bcdea664..b146fd762ba 100644
--- a/public/content/translations/es/developers/docs/programming-languages/ruby/index.md
+++ b/public/content/translations/es/developers/docs/programming-languages/ruby/index.md
@@ -23,7 +23,7 @@ Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprov
## Artículos para principiantes {#beginner-articles}
-- [Comprender finalmente las cuentas de Ethereum] (https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
+- [Comprender finalmente las cuentas de Ethereum](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
- [Autenticando por fin a usuarios de Rails con MetaMask](https://dev.to/q9/finally-authenticating-rails-users-with-metamask-3fj)
- [Cómo conectarse a la red Ethereum utilizando Ruby](https://www.quicknode.com/guides/web3-sdks/how-to-connect-to-the-ethereum-network-using-ruby)
- [Cómo generar una nueva dirección de Ethereum en Ruby](https://www.quicknode.com/guides/web3-sdks/how-to-generate-a-new-ethereum-address-in-ruby)
diff --git a/public/content/translations/es/developers/docs/smart-contracts/index.md b/public/content/translations/es/developers/docs/smart-contracts/index.md
index 08d28d67ea9..0f238f80658 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/index.md
@@ -4,7 +4,7 @@ description: "Una descripción de contratos inteligentes, que se centra en sus c
lang: es
---
-## ¿Qué es un contrato inteligente? ¿Qué es un contrato inteligente? {#what-is-a-smart-contract}
+## ¿Qué es un contrato inteligente? {#what-is-a-smart-contract}
Un "contrato inteligente" es básicamente un programa que se ejecuta en la blockchain de Ethereum. Se trata de un grupo de código (sus funciones) y datos (su estado) que existe en una dirección específica en la blockchain de Ethereum.
@@ -71,7 +71,7 @@ Cualquiera puede escribir un contrato inteligente e implementarlo en la red. Sol
Ethereum dispone de lenguajes amigables para programadores para que redacten contratos inteligentes:
-- Solidez
+- Solidity
- Vyper
[Más información sobre lenguajes](/developers/docs/smart-contracts/languages/)
diff --git a/public/content/translations/es/developers/docs/smart-contracts/testing/index.md b/public/content/translations/es/developers/docs/smart-contracts/testing/index.md
index 01a6643af77..bf78be4538b 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/testing/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/testing/index.md
@@ -12,13 +12,13 @@ Por estas razones, probar los contratos inteligentes antes de [desplegarlos](/de
Esta página explica cómo probar contratos inteligentes antes de implementarlos en la red Ethereum. Se asume que está familiarizado con los [contratos inteligentes](/developers/docs/smart-contracts/).
-## ¿Qué son las pruebas de contratos inteligentes? ¿Qué son las pruebas de contratos inteligentes? {#what-is-smart-contract-testing}
+## ¿Qué son las pruebas de contratos inteligentes? {#what-is-smart-contract-testing}
La prueba o evaluación de contratos inteligentes es el proceso de verificar que el código de un contrato inteligente funcione como se espera. Las pruebas son útiles para comprobar si un contrato inteligente en particular cumple con los requisitos de confiabilidad, usabilidad y seguridad.
Aunque los enfoques varían, la mayoría de los métodos de prueba requieren la ejecución de un contrato inteligente con una pequeña muestra de los datos que se espera que maneje. Si el contrato produce resultados correctos para los datos de muestra, se supone que funciona correctamente. La mayoría de las herramientas de prueba proporcionan recursos para escribir y ejecutar [casos de prueba](https://en.m.wikipedia.org/wiki/Test_case) para comprobar si la ejecución de un contrato coincide con los resultados esperados.
-### ¿Por qué es importante probar contratos inteligentes? Importancia de las pruebas de contratos inteligentes {#importance-of-testing-smart-contracts}
+### ¿Por qué es importante probar contratos inteligentes? {#importance-of-testing-smart-contracts}
Como los contratos inteligentes a menudo gestionan activos financieros de alto valor, los errores de programación menores pueden ocasionar, y a menudo lo hacen, [pérdidas masivas para los usuarios](https://rekt.news/leaderboard/). No obstante, las pruebas rigurosas pueden ayudarle a descubrir defectos y problemas en el código de un contrato inteligente de forma temprana y solucionarlos antes de lanzarlos en la red principal.
diff --git a/public/content/translations/es/developers/docs/smart-contracts/upgrading/index.md b/public/content/translations/es/developers/docs/smart-contracts/upgrading/index.md
index 4f11f6e1d30..60fb2e5f909 100644
--- a/public/content/translations/es/developers/docs/smart-contracts/upgrading/index.md
+++ b/public/content/translations/es/developers/docs/smart-contracts/upgrading/index.md
@@ -14,7 +14,7 @@ Sin embargo, investigación más profunda en la mejora de los contratos intelige
Debe tener un buen conocimiento de los [contratos inteligentes](/developers/docs/smart-contracts/), la [anatomía de los contratos inteligentes](/developers/docs/smart-contracts/anatomy/) y la [Máquina Virtual de Ethereum (EVM)](/developers/docs/evm/). Esta guía también asume que los lectores tengan conocimiento sobre programación de contratos inteligentes.
-## ¿Qué es la actualización de un contrato inteligente? ¿Qué es la actualización de un contrato inteligente? {#what-is-a-smart-contract-upgrade}
+## ¿Qué es la actualización de un contrato inteligente? {#what-is-a-smart-contract-upgrade}
La actualización de un contrato inteligente implica cambiar la lógica empresarial de un contrato inteligente a la vez que se preserva el estado del contrato. Es importante aclarar que la capacidad de actualización y la mutabilidad no son lo mismo, especialmente en el contexto de contratos inteligentes.
diff --git a/public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md b/public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md
index d2152cf2d65..e2ba7199ed3 100644
--- a/public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-view-nft-in-metamask/index.md
@@ -2,7 +2,7 @@
title: "Cómo ver su NFT en su billetera (Parte 3/3 de la serie de tutoriales de NFT)"
description: "¡Este tutorial describe cómo ver un NFT existente en MetaMask!"
author: "Sumi Mudgil"
-tags: [ "ERC-721", "Alquimia", "Solidez" ]
+tags: [ "ERC-721", "Alchemy", "Solidity" ]
skill: beginner
lang: es
published: 2021-04-22
diff --git a/public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md b/public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
index 7a225c5c815..fd093368ecf 100644
--- a/public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
+++ b/public/content/translations/es/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
@@ -5,7 +5,7 @@ author: "Sumi Mudgil"
tags:
[
"ERC-721",
- "Alquimia",
+ "Alchemy",
"Solidity",
"contratos Inteligentes"
]
diff --git a/public/content/translations/es/roadmap/dencun/index.md b/public/content/translations/es/roadmap/dencun/index.md
index 94365a48ffa..a70c36ee0ac 100644
--- a/public/content/translations/es/roadmap/dencun/index.md
+++ b/public/content/translations/es/roadmap/dencun/index.md
@@ -64,7 +64,7 @@ Esta escalabilidad es crucial para [apoyar a miles de millones de usuarios en Et
## ¿Afecta esta actualización a todos los clientes de consenso y clientes validadores de Ethereum? {#client-impact}
-Sí, Proto-Danksharding (EIP-4844) requiere actualizaciones tanto para los clientes de ejecución como para los clientes de consenso. Todos los principales clientes de Ethereum han lanzado versiones que admiten la actualización. Para mantener la sincronización con la red de Ethereum posactualización, los operadores de nodos deben asegurarse de que están ejecutando una versión de cliente compatible. Tenga en cuenta que la información sobre las versiones de los clientes es sensible al tiempo, y los usuarios deben consultar las últimas actualizaciones para obtener los últimos detalles. [Ver detalles sobre las versiones de clientes compatibles] (https://blog.ethereum.org/2024/02/27/dencun-mainnet-announcement#client-releases).
+Sí, Proto-Danksharding (EIP-4844) requiere actualizaciones tanto para los clientes de ejecución como para los clientes de consenso. Todos los principales clientes de Ethereum han lanzado versiones que admiten la actualización. Para mantener la sincronización con la red de Ethereum posactualización, los operadores de nodos deben asegurarse de que están ejecutando una versión de cliente compatible. Tenga en cuenta que la información sobre las versiones de los clientes es sensible al tiempo, y los usuarios deben consultar las últimas actualizaciones para obtener los últimos detalles. [Ver detalles sobre las versiones de clientes compatibles](https://blog.ethereum.org/2024/02/27/dencun-mainnet-announcement#client-releases).
Los clientes de consenso manejan el software _Validador_, que se ha actualizado para dar lugar a la actualización.
@@ -116,5 +116,5 @@ _Aspectos básicos del espacio de blob con Domothy — Bankless_
- [Anuncio de la red principal de Dencun](https://blog.ethereum.org/2024/02/27/dencun-mainnet-announcement) - _Blog de la Ethereum Foundation_
- [La guía de Hitchhiker de Ethereum: Proto-Danksharding](https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum/#proto-danksharding-eip-4844) - _Jon Charbonneau_
- [Preguntas frecuentes sobre Proto-Danksharding](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq) - _Vitalik Buterin_
-- [Explicación en profundidad de EIP-4844: el núcleo de la actualización Cancun] (https://medium.com/@ebunker.io/an-in-depth-explanation-of-eip-4844-the-core-of-the-cancun-upgrade-de7b13761d2c) - _Ebunker_
+- [Explicación en profundidad de EIP-4844: el núcleo de la actualización Cancun](https://medium.com/@ebunker.io/an-in-depth-explanation-of-eip-4844-the-core-of-the-cancun-upgrade-de7b13761d2c) - _Ebunker_
- [Actualización AllCoreDevs 016](https://tim.mirror.xyz/HzH5MpK1dnw7qhBSmzCfdCIxpwpD6DpwlfxtaAwEFro) - _Tim Beiko_
diff --git a/public/content/translations/es/roadmap/pectra/maxeb/index.md b/public/content/translations/es/roadmap/pectra/maxeb/index.md
index 2dc69e6b0a8..b68788c8243 100644
--- a/public/content/translations/es/roadmap/pectra/maxeb/index.md
+++ b/public/content/translations/es/roadmap/pectra/maxeb/index.md
@@ -178,7 +178,7 @@ No. Aunque la _fuente_ debe autorizar la solicitud desde su propia dirección.
### ¿Mis recompensas se agravarán después de convertir? {#rewards-compound}
-Sí. Con credenciales de \*\* Tipo 2 \*\*, las recompensas superiores a 32 ETH se reenvían automáticamente para participación, pero no al instante. Debido a un pequeño búfer (llamado [_histéresis_] (https://eth2book.info/capella/part2/incentives/balances/#hysteresis)), su saldo debe alcanzar \*\* alrededor de 1,25 eth más \*\* antes de volver a enviar para participación la cantidad adicional. Entonces, en lugar de capitalizarse a 33,0 ETH, ocurre en 33,25 (saldo efectivo = 33 ETH), luego 34,25 (saldo efectivo = 34 ETH), etc.
+Sí. Con credenciales de \*\* Tipo 2 \*\*, las recompensas superiores a 32 ETH se reenvían automáticamente para participación, pero no al instante. Debido a un pequeño búfer (llamado [_histéresis_](https://eth2book.info/capella/part2/incentives/balances/#hysteresis)), su saldo debe alcanzar \*\* alrededor de 1,25 eth más \*\* antes de volver a enviar para participación la cantidad adicional. Entonces, en lugar de capitalizarse a 33,0 ETH, ocurre en 33,25 (saldo efectivo = 33 ETH), luego 34,25 (saldo efectivo = 34 ETH), etc.
### ¿Aún puedo obtener barridos automáticos después de convertir? {#automatic-sweep}
@@ -198,8 +198,8 @@ Sí. Mientras esté activo (no salga) y pueda firmar con su dirección de retira
## Recursos {#resources}
-- [Especificaciones de consenso de Electra] (https://github.com/ethereum/consensus-specs/blob/dev/specs/electra/beacon-hain.md): esta es la versión más real en la que debe confiar. En caso de duda, lea las especificaciones
-- No todo el mundo se sienten cómodo operando con un código, por eso [este maxeb-gpt] (https://chatgpt.com/g/g-67f1650fb48081918f555e0c8d1c2ae9-maxeb-gpt) interpretar las especificaciones puede servirle de ayuda. _Descargo de responsabilidad: las especificaciones, no la IA, deben confiar en la verdad, ya que la IA puede malinterpretar la información o dar respuestas descabelladas_
-- [pectrified.com] (https://pectrifice.com/): ver el estado de consolidaciones, depósitos y tiempos de listas de espera
-- [Ethereal] (https://github.com/wealdtech/ethereal): herramienta CLI creada por la comunidad para administrar tareas de validador comunes
+- [Especificaciones de consenso de Electra](https://github.com/ethereum/consensus-specs/blob/dev/specs/electra/beacon-hain.md): esta es la versión más real en la que debe confiar. En caso de duda, lea las especificaciones
+- No todo el mundo se sienten cómodo operando con un código, por eso [este maxeb-gpt](https://chatgpt.com/g/g-67f1650fb48081918f555e0c8d1c2ae9-maxeb-gpt) interpretar las especificaciones puede servirle de ayuda. _Descargo de responsabilidad: las especificaciones, no la IA, deben confiar en la verdad, ya que la IA puede malinterpretar la información o dar respuestas descabelladas_
+- [pectrified.com](https://pectrifice.com/): ver el estado de consolidaciones, depósitos y tiempos de listas de espera
+- [Ethereal](https://github.com/wealdtech/ethereal): herramienta CLI creada por la comunidad para administrar tareas de validador comunes
- [Batch-validator-depositor](https://github.com/attestantio/batch-validator-depositor): contrato creado por la comunidad que permite depositar múltiples validadores de Ethereum en una sola transacción
diff --git a/src/intl/es/glossary-tooltip.json b/src/intl/es/glossary-tooltip.json
index b83b50e8155..785f1862f47 100644
--- a/src/intl/es/glossary-tooltip.json
+++ b/src/intl/es/glossary-tooltip.json
@@ -125,7 +125,7 @@
"quadratic-voting-definition": "Es un método de votación en el que los votantes expresan qué intensidad sienten respecto a determinados temas. Permite a los votantes mostrar no solo sus preferencias, sino también la intensidad de las mismas.",
"recovery-phrase-term": "Frase semilla/frase de recuperación",
"recovery-phrase-definition": "Una lista de palabras que recibe cuando crea una billetera digital. Actúa como una contraseña que puede ayudarle a recuperar su billetera en caso de perder el acceso a ella, asegurándose de que no pierda su dinero digital o sus tokens.",
- "rollups-term": "Agrupaciones",
+ "rollups-term": "Rollups",
"rollups-definition": "Un tipo de solución de escalabilidad de capa 2 que agrupa múltiples transacciones y las envía a la cadena principal de Ethereum en una única transacción. Esto permite reducir los costos de gas y aumentar los rendimientos de transacción. Existen rollups Optimistas y de Zero-knowledge (Conocimiento cero), los cuales utilizan diferentes métodos de seguridad para ofrecer estas ganancias de escalabilidad. Más información sobre los rollups.",
"rpc-term": "Llamada de procedimiento remoto (RPC)",
"rpc-definition": "Las RPC permiten a una computadora solicitar datos o acciones a otra a través de una red, es como pedir información con un control remoto.",
diff --git a/src/intl/es/glossary.json b/src/intl/es/glossary.json
index dd069ed626b..baddf7458b6 100644
--- a/src/intl/es/glossary.json
+++ b/src/intl/es/glossary.json
@@ -307,7 +307,7 @@
"reward-definition": "Una cantidad de ether otorgada a los validadores que realizan determinadas funciones, incluyendo proponer un bloque o participar en un comité de sincronización, en cada ranura.",
"rlp-term": "Prefijo de longitud recursiva (o PRL)",
"rlp-definition": "Un estándar de codificación diseñado por los desarrolladores de Ethereum para codificar y serializar objetos (estructura de datos) de complejidad y longitud arbitrarias.",
- "rollups-term": "Agrupaciones",
+ "rollups-term": "Rollups",
"rollups-definition": "Un tipo de solución de escalabilidad de capa 2 que agrupa múltiples transacciones y las envía a la cadena principal de Ethereum en una única transacción. Esto permite reducir los costos de gas y aumentar los rendimientos de transacción. Existen rollups Optimistas y de Zero-knowledge (Conocimiento cero), los cuales utilizan diferentes métodos de seguridad para ofrecer estas ganancias de escalabilidad. Más información sobre los rollups.",
"rpc-term": "Llamada de procedimiento remoto (RPC)",
"rpc-definition": "Las RPC permiten a una computadora solicitar datos o acciones a otra a través de una red, es como pedir información con un control remoto.",
@@ -335,7 +335,7 @@
"snark-definition": "Abreviatua de \"argumento sucinto no interactivo del conocimiento\", un SNARK es un tipo de prueba de conocimiento cero. Más sobre los rollups de conocimiento cero.",
"soft-fork-term": "Bifurcación suave",
"soft-fork-definition": "Una divergencia en una cadena de bloques que se produce cuando cambian las reglas de consenso. A diferencia de una bifurcación dura (o hard fork), una soft fork es compatible con versiones anteriores; los nodos actualizados pueden validar los bloques creados por nodos no actualizados, siempre y cuando sigan las nuevas reglas de consenso.",
- "solidity-term": "Solidez",
+ "solidity-term": "Solidity",
"solidity-definition": "Un lenguaje de programación procedimental (imperativo) con una sintaxis similar a JavaScript, C++ o Java. El lenguaje más popular y utilizado para contratos inteligentes de Ethereum. Creado por Gavin Wood. Más sobre Solidity.",
"solidity-inline-assembly-term": "Ensamblador en línea Solidity",
"solidity-inline-assembly-definition": "Lenguaje de ensamblado de la EVM en un programa de Solidity. El soporte de Solidity para el ensamblado en línea hace que sea más fácil escribir ciertas operaciones.",
diff --git a/src/intl/es/page-layer-2-learn.json b/src/intl/es/page-layer-2-learn.json
index 64ed19301f1..6dafd524602 100644
--- a/src/intl/es/page-layer-2-learn.json
+++ b/src/intl/es/page-layer-2-learn.json
@@ -30,7 +30,7 @@
"page-layer-2-learn-how-does-layer-2-work-title": "¿Cómo funciona la capa 2?",
"page-layer-2-learn-how-does-layer-2-work-1": "Como mencionamos antes, capa 2 es un término colectivo para las soluciones de escalabilidad de Ethereum que manejan transacciones fuera de la capa 1 de Ethereum, mientras que aprovechan la robusta seguridad descentralizada de la capa 1 de Ethereum. Una capa 2 es una cadena de bloques separada que extiende el rendimiento de Ethereum. Entonces, ¿cómo funciona?",
"page-layer-2-learn-how-does-layer-2-work-2": "Hay muchos tipos diferentes de capa 2, cada uno tiene sus propias ventajas y desventajas, así como sus propios modelos de seguridad. Los proyectos de capa 2 liberan de carga transaccional a la capa 1, reduciendo su congestión y haciéndola más escalable.",
- "page-layer-2-learn-how-does-layer-2-work-rollups-title": "Agrupaciones",
+ "page-layer-2-learn-how-does-layer-2-work-rollups-title": "Rollups",
"page-layer-2-learn-how-does-layer-2-work-rollups-1": "Los «rollups» agrupan (o acumulan) cientos de transacciones en una sola transacción en la capa 1. Esto distribuye las comisiones de transacción en la red principal (L1) entre todos los participantes en el «rollup» y, por ende, reduce el coste de la transacción para cada usuario.",
"page-layer-2-learn-how-does-layer-2-work-rollups-2": "Los datos de la transacción en el rollup se envían a la capa 1, pero su ejecución se realiza por separado. Al enviar los datos de la transacción a la capa 1, los rollups heredan la seguridad de Ethereum. Esto se debe a que una vez que los datos se cargan en la capa 1, revertir una transacción de rollup requiere revertir Ethereum. Hay dos enfoques diferentes para los rollups: optimista y de conocimiento cero. Difieren principalmente en la forma en que se envían estos datos de transacción a la L1.",
"page-layer-2-learn-rollupCards-optimistic-title": "Acumulaciones optimistas (Optimistic rollups)",
diff --git a/src/intl/es/page-upgrades-index.json b/src/intl/es/page-upgrades-index.json
index 77d9f6c5c3c..03bee4fc9b0 100644
--- a/src/intl/es/page-upgrades-index.json
+++ b/src/intl/es/page-upgrades-index.json
@@ -13,7 +13,7 @@
"page-upgrades-answer-4": "La cadena de baliza se utilizó para desarrollar el consenso basado en una prueba de participación que Ethereum utiliza hoy en día. Se ejecutó por separado a la red principal de Ethereum, para que los desarrolladores pudieran observar el mecanismo de consenso de forma aislada antes de utilizarlo para coordinar la actividad real.",
"page-upgrade-article-author-status": "Estado",
"page-upgrade-article-author-ethmerge": "La Fusión de Ethereum",
- "page-upgrade-article-author-alchemy": "Alquimia",
+ "page-upgrade-article-author-alchemy": "Alchemy",
"page-upgrade-article-author-consensys": "Consensys",
"page-upgrade-article-author-delphi-digital": "Delphi Digital",
"page-upgrade-article-author-eip-4844": "Vitalik Buterin, Dankrad Feist, Diederik Loerakker, George Kadianakis, Matt Garnett, Mofi Taiwo",
From c5edefb815cbed3566da5fd04e5687a7f6024b15 Mon Sep 17 00:00:00 2001
From: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date: Thu, 8 Jan 2026 14:23:59 -0800
Subject: [PATCH 584/589] revert: terms-and-conditions translations
---
.../10years/terms-and-conditions/index.md | 65 -------------------
.../terms-and-conditions/index.md | 43 ------------
2 files changed, 108 deletions(-)
delete mode 100644 public/content/10years/terms-and-conditions/index.md
delete mode 100644 public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md
diff --git a/public/content/10years/terms-and-conditions/index.md b/public/content/10years/terms-and-conditions/index.md
deleted file mode 100644
index 13d2d214c78..00000000000
--- a/public/content/10years/terms-and-conditions/index.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-title: Ethereum 10-Year Anniversary NFT Mint Terms & Conditions
-lang: en
-hideEditButton: true
----
-
-# Commemorative NFT minting terms {#commemorative-nft-minting-terms}
-
-20 June 2025
-
-**10 YEARS OF ETHEREUM TORCH MINTING TERMS & CONDITIONS**
-
-**PLEASE READ THESE TERMS & CONDITIONS BEFORE MINTING THE 10 YEARS OF ETHEREUM TORCH**
-
-These terms and conditions constitute a binding agreement (the “**Agreement**”) between you (“**You**”) and the Ethereum Foundation, a Swiss foundation registered in Zug, Switzerland (the “**EF**”), governing Your minting and use of the non-fungible token known as the **10 Years of Ethereum Torch** (the “**NFT**”). By initiating the minting transaction, You acknowledge that You have read, understood, and agree to be bound by this Agreement. If You do not agree, do not proceed with minting.
-
-## 1. Nature of the NFT {#nature-of-the-nft}
-
-1. **Commemorative Purpose**. The NFT is issued solely to commemorate the ten-year anniversary of the Ethereum Genesis Block. It confers no ownership interest, financial right, expectation of profit, reward, dividend, governance right, utility, or any other right of any kind.
-
-2. **No Consideration**. The NFT is minted without charge; You are responsible only for the network transaction gas fees required to execute the minting transaction. EF receives no payment, royalty, or other consideration from Your mint.
-
-## 2. Intellectual property {#intellectual-property}
-
-1. **CC BY 4.0 Licence**. The artwork embodied in or associated with the NFT is licensed to the public under the [Creative Commons CC BY 4.0 International Licence](https://creativecommons.org/licenses/by/4.0/).
-
-2. **No Ownership Rights Conferred**. Minting, holding, or transferring the NFT does not transfer or confer any ownership right, title, or interest in or to the artwork or any other intellectual property of EF.
-
-## 3. Representations and warranties {#representations-and-warranties}
-
-You represent, warrant, and covenant that:
-
-1) You are at least eighteen (18) years old and have legal capacity to enter into this Agreement;
-
-2) You are not: (i) the subject of any economic or trade sanctions imposed or administered by Switzerland, the United States (including the OFAC SDN List), the European Union, the United Kingdom, the United Nations, or any other similar regime; and/or (ii) located, organised, or resident in a comprehensively sanctioned jurisdiction (currently North Korea Crimea, Iran, Syria, Cuba, Donetsk, or Luhansk);
-
-3) You are minting the NFT solely for commemorative and personal purposes and not as an investment or with an expectation of profit; and
-
-4) You are not acting on behalf of, or for the benefit of, any person or entity that fails to satisfy the foregoing.
-
-## 4. Disclaimers {#disclaimers}
-
-THE NFT AND ANY RELATED MATERIALS ARE PROVIDED “AS IS” AND “AS AVAILABLE”, WITHOUT WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR QUIET ENJOYMENT. EF DOES NOT WARRANT THAT THE NFT OR THE MINTING PROCESS WILL BE ERROR-FREE OR UNINTERRUPTED.
-
-## 5. Limitation of liability {#limitation-of-liability}
-
-To the maximum extent permitted by applicable law, EF, its directors, officers, employees, contractors, and agents shall not be liable to You for any indirect, incidental, consequential, special, exemplary, or punitive damages, or for any loss of profits, data, or goodwill, arising out of or related to the NFT or this Agreement, whether based in contract, tort, strict liability, or otherwise. EF’s aggregate liability to You for any direct damages shall not exceed one USD.
-
-## 6. Termination {#termination}
-
-EF may terminate this Agreement at any time. EF reserves the right to suspend or terminate minting, or to take reasonable remedial action (including nullification of the NFT) where required by law or regulation.
-
-## 7. Governing law and jurisdiction {#governing-law-and-jurisdiction}
-
-Any dispute, controversy, or claim arising out of or relating to this Agreement, including the validity, invalidity, breach, or termination thereof, shall be resolved by arbitration in accordance with the Swiss Rules of International Arbitration of the Swiss Chambers’ Arbitration Institution in force on the date on which the Notice of Arbitration is submitted in accordance with these Rules. The number of arbitrators shall be one. The seat of the arbitration shall be Zurich unless the parties agree on a different seat. The arbitral proceedings shall be conducted in English.
-
-## 8. Miscellaneous {#miscellaneous}
-
-1. **Entire Agreement**. This Agreement constitutes the entire agreement between You and EF with respect to the NFT and supersede all prior understandings.
-
-2. **Severability**. If any provision is held invalid or unenforceable, the remaining provisions shall remain in full force and effect.
-
-3. **No Waiver**. Failure or delay by EF to exercise any right shall not operate as a waiver thereof.
-
-4. **Assignment**. You may not assign or transfer Your rights or obligations under this Agreement without EF’s prior written consent.
\ No newline at end of file
diff --git a/public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md b/public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md
deleted file mode 100644
index ce6061c473c..00000000000
--- a/public/content/translations/es/contributing/translation-program/translatathon/terms-and-conditions/index.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: "Términos y condiciones"
-lang: es
-template: translatathon
----
-
-El Concurso de Traducción de Ethereum.org, también conocido como el «Translatatón», es una iniciativa experimental del equipo de ethereum.org para incentivar y recompensar las contribuciones al programa de traducción de ethereum.org.
-
-## Modificación y terminación {#modification-and-termination}
-
-Nos reservamos el derecho de modificar las reglas o de dar por terminado el Translatatón en cualquier momento y sin previo aviso. Todos los cambios entrarán en vigor inmediatamente después de su anuncio.
-
-## Elegibilidad, evaluación y premios {#eligibility-judging-and-prizes}
-
-La determinación de la elegibilidad, la metodología de puntuación y evaluación y la distribución de premios son de nuestra única e irrevocable discreción.
-
-## Privacidad de los datos {#data-privacy}
-
-Al enviar el formulario de solicitud, los solicitantes y participantes confirman que han leído y aceptan nuestra Política de Privacidad y consienten en compartir con nosotros la información solicitada, que puede incluir información que constituya datos personales. Mantendremos la confidencialidad de toda la información proporcionada, a excepción de los nombres de usuario de Crowdin y las imágenes de perfil proporcionados por los participantes, que podrán utilizarse en anuncios públicos relacionados con los resultados del concurso y los ganadores.
-
-## Estándares de traducción {#translation-standards}
-
-El uso de herramientas de traducción automática, según lo determinemos a nuestra entera discreción, podrá dar lugar a la descalificación del concurso. Además, la presentación de traducciones incorrectas o imprecisas, según lo determinemos a nuestra entera discreción, puede dar lugar a la inelegibilidad para la consideración de los premios. Asimismo, cualquier contribución a cadenas que ya hayan sido traducidas o revisadas, según lo determinemos a nuestra entera discreción, no se incluirá en la puntuación final de los participantes. Nos reservamos el derecho de tomar tales determinaciones, las cuales serán definitivas y vinculantes.
-
-## Propiedad intelectual {#intellectual-property}
-
-Los participantes aceptan que, al presentar un trabajo de traducción durante el Translatatón, conceden a la Ethereum Foundation una licencia irrevocable, no exclusiva y libre de regalías para usar, reproducir, distribuir, exhibir, modificar, adaptar, crear obras derivadas y alterar de cualquier otro modo su trabajo de traducción. Asimismo, los participantes aceptan que sus trabajos de traducción podrán ponerse a disposición del público en el sitio web ethereum.org bajo una licencia de código abierto, incluida una licencia Creative Commons, que permite a otros usar, compartir y desarrollar el trabajo.
-
-## Impuestos {#taxes}
-
-Cualquier implicación fiscal derivada de la recepción de los premios es responsabilidad exclusiva del receptor del premio.
-
-## Países bajo sanciones integrales {#comprehensively-sanctioned-countries}
-
-Los participantes de regiones o países que estén sujetos a sanciones internacionales integrales (incluidos, entre otros, Irán, Cuba, Siria, Corea del Norte y las regiones de Crimea, la República Popular de Donetsk y la República Popular de Lugansk de Ucrania) no serán elegibles para participar.
-
-## Exención de responsabilidad {#waiter-of-liability}
-
-Los participantes aceptan que la Ethereum Foundation, sus filiales y todos sus respectivos funcionarios, directores, empleados y agentes no tendrán responsabilidad alguna por lesiones, pérdidas o daños de cualquier tipo que surjan de su participación en el Translatatón o en relación con ella.
-
-## Ley aplicable {#governing-law}
-
-Cualquier disputa o reclamación que surja del Translatatón o se relacione con este (en cada caso, incluidas las disputas o reclamaciones no contractuales), se regirá e interpretará de conformidad con las leyes de Suiza, sin dar efecto a ninguna disposición o norma de elección o conflicto de leyes (ya sea de Suiza o de cualquier otra jurisdicción).
From bff97b7490a29099408b587ed68e81d65eeac09f Mon Sep 17 00:00:00 2001
From: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date: Thu, 8 Jan 2026 14:25:22 -0800
Subject: [PATCH 585/589] revert: link href translation
---
public/content/translations/es/about/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/content/translations/es/about/index.md b/public/content/translations/es/about/index.md
index 105ced0fb65..800120209a8 100644
--- a/public/content/translations/es/about/index.md
+++ b/public/content/translations/es/about/index.md
@@ -20,7 +20,7 @@ Ethereum es una red pública, una cadena de bloques y un protocolo de código ab
[Más sobre Ethereum](/what-is-ethereum/)
-[Más información sobre la gobernanza de Ethereum](/gobernanza/)
+[Más información sobre la gobernanza de Ethereum](/governance/)
### Ether (ETH) {#ether-or-eth}
From 8fae227c83fcb1398bc46f965cd2630324fec293 Mon Sep 17 00:00:00 2001
From: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date: Thu, 8 Jan 2026 14:41:34 -0800
Subject: [PATCH 586/589] patch: mdx component line returns
---
.../translations/es/community/online/index.md | 25 ++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/public/content/translations/es/community/online/index.md b/public/content/translations/es/community/online/index.md
index 6597fe06b01..1155b890fd0 100644
--- a/public/content/translations/es/community/online/index.md
+++ b/public/content/translations/es/community/online/index.md
@@ -34,15 +34,34 @@ Si considera que debería añadirse o eliminarse una comunidad en función de es
## Foros {#forums}
-r/ethereum - todo sobre Ethereumr/ethfinance - el lado financiero de Ethereum, incluyendo DeFir/ethdev - enfocado en el desarrollo de Ethereumr/ethtrader - tendencias y análisis de mercador/ethstaker - bienvenidos todos los interesados en hacer staking en EthereumFellowship of Ethereum Magicians - comunidad orientada a los estándares técnicos en EthereumEthereum Stackexchange - discusiones y ayuda para desarrolladores de EthereumEthereum Research - el foro más influyente para la investigación criptoeconómica
+r/ethereum - todo sobre Ethereum
+r/ethfinance - el lado financiero de Ethereum, incluyendo DeFi
+r/ethdev - enfocado en el desarrollo de Ethereum
+r/ethtrader - tendencias y análisis de mercado
+r/ethstaker - bienvenidos todos los interesados en hacer staking en Ethereum
+Fellowship of Ethereum Magicians - comunidad orientada a los estándares técnicos en Ethereum
+Ethereum Stackexchange - discusiones y ayuda para desarrolladores de Ethereum
+Ethereum Research - el foro más influyente para la investigación criptoeconómica
## Salas de chat {#chat-rooms}
-Ethereum Cat Herders - comunidad orientada al soporte de gestión de proyectos para el desarrollo en EthereumEthereum Hackers - Chat de Discord administrado por ETHGlobal: una comunidad en línea para hackers de Ethereum de todo el mundoCryptoDevs - comunidad enfocada en el desarrollo de Ethereum en DiscordEthStaker Discord - orientación, educación, soporte y recursos gestionados por la comunidad para quienes hacen o desean hacer stakingEquipo de ethereum.org - únete y charla sobre desarrollo web y diseño de ethereum.org con el equipo y miembros de la comunidadMatos Discord - comunidad de creadores web3 donde constructores, líderes de la industria y entusiastas de Ethereum interactúan. Nos apasiona la cultura, el diseño y el desarrollo de la Web 3.0. Ven a construir con nosotros.Solidity Gitter - chat para el desarrollo en Solidity (Gitter)Solidity Matrix - chat para desarrollo en Solidity (Matrix)Ethereum Stack Exchange - foro de preguntas y respuestasPeera Community Forum - foro descentralizado de preguntas y respuestas
+Ethereum Cat Herders - comunidad orientada al soporte de gestión de proyectos para el desarrollo en Ethereum
+Ethereum Hackers - Chat de Discord administrado por ETHGlobal: una comunidad en línea para hackers de Ethereum de todo el mundo
+CryptoDevs - comunidad enfocada en el desarrollo de Ethereum en Discord
+EthStaker Discord - orientación, educación, soporte y recursos gestionados por la comunidad para quienes hacen o desean hacer staking
+Equipo de ethereum.org - únete y charla sobre desarrollo web y diseño de ethereum.org con el equipo y miembros de la comunidad
+Matos Discord - comunidad de creadores web3 donde constructores, líderes de la industria y entusiastas de Ethereum interactúan. Nos apasiona la cultura, el diseño y el desarrollo de la Web 3.0. Ven a construir con nosotros.
+Solidity Gitter - chat para el desarrollo en Solidity (Gitter)
+Solidity Matrix - chat para desarrollo en Solidity (Matrix)
+Ethereum Stack Exchange - foro de preguntas y respuestas
+Peera Community Forum - foro descentralizado de preguntas y respuestas
## YouTube y X (antes Twitter) {#youtube-and-twitter}
-Fundación Ethereum - Manténgase al día con las últimas novedades de la Fundación Ethereum@ethereum - Cuenta principal de la comunidad de Ethereum@ethereumfndn - Cuenta oficial de la Fundación Ethereum@ethdotorg - El portal a Ethereum, construido para nuestra creciente comunidad global
+Fundación Ethereum - Manténgase al día con las últimas novedades de la Fundación Ethereum
+@ethereum - Cuenta principal de la comunidad de Ethereum
+@ethereumfndn - Cuenta oficial de la Fundación Ethereum
+@ethdotorg - El portal a Ethereum, construido para nuestra creciente comunidad global
From 21ff0bcd6abac86e18bbbfa37e139ad0dd8d4efc Mon Sep 17 00:00:00 2001
From: Pablo Pettinari
Date: Fri, 16 Jan 2026 15:52:01 +0100
Subject: [PATCH 587/589] fix(i18n): correct Spanish translation typos
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- ET → ETH in page-stablecoins.json
- utilizabaantes → utilizaba antes in learn-quizzes.json (2 occurrences)
- tralsado → trasladó in learn-quizzes.json
---
src/intl/es/learn-quizzes.json | 6 +++---
src/intl/es/page-stablecoins.json | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/intl/es/learn-quizzes.json b/src/intl/es/learn-quizzes.json
index d85ba4338a4..9bdc01d7660 100644
--- a/src/intl/es/learn-quizzes.json
+++ b/src/intl/es/learn-quizzes.json
@@ -287,9 +287,9 @@
"rollups-4-d-explanation": "No hay planes para una capa 2 «oficial» en Ethereum, ya que nos beneficiaremos de una amplia variedad de enfoques para diseñar soluciones de capa 2.",
"merge-1-prompt": "La Fusión trasladó a Ethereum ¿a qué mecanismo de consenso?",
"merge-1-a-label": "Prueba de trabajo",
- "merge-1-a-explanation": "La prueba de trabajo era el mecanismo de consenso que se utilizabaantes de la Fusión.",
+ "merge-1-a-explanation": "La prueba de trabajo era el mecanismo de consenso que se utilizaba antes de la Fusión.",
"merge-1-b-label": "Prueba de participación",
- "merge-1-b-explanation": "¡Correcto! La Fusión tralsado a Ethereum a la prueba de participación.",
+ "merge-1-b-explanation": "¡Correcto! La Fusión trasladó a Ethereum a la prueba de participación.",
"merge-1-c-label": "Prueba de autoridad",
"merge-1-c-explanation": "Ethereum no lo hace y nunca ha utilizado la prueba de autoridad en la red principal de Ethereum.",
"merge-1-d-label": "Todo lo anterior",
@@ -319,7 +319,7 @@
"merge-4-b-explanation": "ETH no cambió en ningún momento antes, durante o después de la Fusión. La idea de «mejorar» a ETH a ETH2 era una táctica común de actores maliciosos para estafar a los usuarios.",
"merge-5-prompt": "La capa de consenso de Ethereum era antes conocida como:",
"merge-5-a-label": "Prueba de trabajo",
- "merge-5-a-explanation": "La prueba de trabajo era el mecanismo de consenso que se utilizabaantes de la Fusión.",
+ "merge-5-a-explanation": "La prueba de trabajo era el mecanismo de consenso que se utilizaba antes de la Fusión.",
"merge-5-b-label": "Eth2",
"merge-5-b-explanation": "Antes de recibir otro nombre, la capa de consenso originariamente se llamaba «Eth2».",
"merge-5-c-label": "Eth1",
diff --git a/src/intl/es/page-stablecoins.json b/src/intl/es/page-stablecoins.json
index 21f675c5742..d152af0875d 100644
--- a/src/intl/es/page-stablecoins.json
+++ b/src/intl/es/page-stablecoins.json
@@ -3,7 +3,7 @@
"page-stablecoins-usdc-banner-body": "USDC es la mayor moneda estable regulada por Estados Unidos, respaldada por dinero fiduciario. Su valor está ligado al dólar estadounidense, la emite Circle y su uso está muy extendido.",
"page-stablecoins-usdc-banner-learn-button": "Más información sobre USD Coin",
"page-stablecoins-usdc-banner-swap-button": "Consiga USDC",
- "page-stablecoins-accordion-borrow-crypto-collateral-copy": "Con Ethereum puede pedir prestado directamente a otros usuarios sin necesidad de realizar operaciones con sus ETH. Esto le puede dar fuerza: algunos lo hacen para intentar acumular más ET.",
+ "page-stablecoins-accordion-borrow-crypto-collateral-copy": "Con Ethereum puede pedir prestado directamente a otros usuarios sin necesidad de realizar operaciones con sus ETH. Esto le puede dar fuerza: algunos lo hacen para intentar acumular más ETH.",
"page-stablecoins-accordion-borrow-crypto-collateral-copy-p2": "Pero, como el precio de los ETH es volátil, tendrá que aportar una sobregarantía. Esto significa que, si quiere pedir prestadas 100 monedas estables, probablemente necesitará al menos 150 $ en ETH. Esto protege el sistema y a los prestamistas.",
"page-stablecoins-accordion-borrow-crypto-collateral-link": "Más sobre las monedas estables respaldadas por criptomonedas",
"page-stablecoins-accordion-borrow-pill": "Avanzado",
From 1ac956e6370d67a4bf39d59b90effa73588f837d Mon Sep 17 00:00:00 2001
From: Pablo Pettinari
Date: Fri, 16 Jan 2026 15:53:56 +0100
Subject: [PATCH 588/589] fix(i18n): standardize Spanish register to formal
(usted)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
page-gas.json:
- Piensa → Piense
- Puedes → Puede
page-wallets.json:
- tu → su (frase de recuperación)
- tus → sus (claves)
---
src/intl/es/page-gas.json | 4 ++--
src/intl/es/page-wallets.json | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/intl/es/page-gas.json b/src/intl/es/page-gas.json
index 48871496886..3a7cc456805 100644
--- a/src/intl/es/page-gas.json
+++ b/src/intl/es/page-gas.json
@@ -11,7 +11,7 @@
"page-gas-summary-item-2": "A estas tarifas se les denomina tarifa de gas",
"page-gas-summary-item-3": "Las tarifas de gas no están fijadas, cambian en función de la congestión de la red",
"page-gas-what-are-gas-fees-header": "¿Qué son las tarifas de gas?",
- "page-gas-what-are-gas-fees-text-1": "Piensa en Ethereum como una larga red de computadoras donde las personas pueden hacer tareas como enviar mensajes o correr programas. Al igual que en la vida real, estas tareas requieren energías para ser realizadas.",
+ "page-gas-what-are-gas-fees-text-1": "Piense en Ethereum como una larga red de computadoras donde las personas pueden hacer tareas como enviar mensajes o correr programas. Al igual que en la vida real, estas tareas requieren energías para ser realizadas.",
"page-gas-what-are-gas-fees-text-2": "En Ethereum, cada acción computacional tiene un precio de «gas» establecido.Sus tarifas de gas son el coste total de las acciones en su transacción. Cuando envía una transacción o ejecuta un contrato inteligente, paga tarifas de gas para procesarlo.",
"page-gas-how-do-i-pay-less-gas-header": "¿Cómo puedo pagar menos gas?",
"page-gas-how-do-i-pay-less-gas-text": "Mientras que en ocasiones pagar una tarifa alta de gas en Ethereum es inevitable, hay estrategias que puede usar para reducir el coste:",
@@ -53,7 +53,7 @@
"page-gas-faq-header": "Preguntas más frecuentes",
"page-gas-faq-question-1-q": "¿Quién recibe el pago por la tarifa de gas en mi transacción?",
"page-gas-faq-question-1-a-1": "El protocolo destruye (quema) la mayoría de la tarifa de gas —la tarifa base—. La tarifa de prioridad, si viene incluida en su transacción, se proporcionará al validador que propuso su transacción.",
- "page-gas-faq-question-1-a-2": "Puedes leer una descripción detallada del proceso en la documentación del desarrollador de gas.",
+ "page-gas-faq-question-1-a-2": "Puede leer una descripción detallada del proceso en la documentación del desarrollador de gas.",
"page-gas-faq-question-2-q": "¿Necesito pagar el gas en ETH?",
"page-gas-faq-question-2-a-1": "Sí, todas las tarifas de gas en Ethereum deben pagarse en la moneda nativa ETH.",
"page-gas-faq-question-2-a-2": "Más información sobre ETH",
diff --git a/src/intl/es/page-wallets.json b/src/intl/es/page-wallets.json
index bb26bd56acf..ad25e18ad6d 100644
--- a/src/intl/es/page-wallets.json
+++ b/src/intl/es/page-wallets.json
@@ -33,14 +33,14 @@
"page-wallets-more-on-dapps-btn": "Más sobre DApps",
"page-wallets-most-wallets": "La mayoría de los productos de cartera le permitirán generar una cuenta de Ethereum. Así que no necesita una antes de descargar una cartera.",
"page-wallets-protecting-yourself": "Protéjase a usted y a sus fondos",
- "page-wallets-seed-phrase": "Escriba tu frase de recuperación",
+ "page-wallets-seed-phrase": "Escriba su frase de recuperación",
"page-wallets-seed-phrase-desc": "Las carteras a menudo le proporcionarán una frase de recuperación que deberá escribir en algún lugar seguro. Esta es la única manera de poder recuperar su cartera.",
"page-wallets-seed-phrase-example": "Aquí hay un ejemplo:",
"page-wallets-seed-phrase-snippet": "there aeroplane curve vent formation doge possible product distinct under spirit lamp",
"page-wallets-seed-phrase-write-down": "No la guarde en un ordenador. Escríbala y manténgala a salvo.",
"page-wallets-slogan": "Mantenga sus claves bien protegidas para garantizar su futuro digital",
"page-wallets-stay-safe": "Cómo mantenerse seguro",
- "page-wallets-stay-safe-desc": "La libertad financiera y la capacidad de acceder y utilizar fondos en cualquier lugar conlleva responsabilidad: no hay soporte al cliente en criptomonedas. Usted es responsable de mantener tus claves seguras y protegidas.",
+ "page-wallets-stay-safe-desc": "La libertad financiera y la capacidad de acceder y utilizar fondos en cualquier lugar conlleva responsabilidad: no hay soporte al cliente en criptomonedas. Usted es responsable de mantener sus claves seguras y protegidas.",
"page-wallets-subtitle": "Las carteras le ayudan a acceder a sus activos digitales y a sus aplicaciones.",
"page-wallets-take-responsibility": "Asuma la responsabilidad de sus propios fondos",
"page-wallets-take-responsibility-desc": "Los exchanges centralizados vincularán su cartera a un nombre de usuario y una contraseña que usted puede recuperar de la manera tradicional. Solo recuerde que está confiando la custodia de sus fondos a ese exchange. Si el exchange tiene problemas financieros, sus fondos estarían en riesgo.",
From e78c9b37e05369a8fcbd196fcbdbe74138b46335 Mon Sep 17 00:00:00 2001
From: Pablo Pettinari
Date: Fri, 16 Jan 2026 17:13:46 +0100
Subject: [PATCH 589/589] fix(i18n): correct Spanish translation typos and
register consistency
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Fix typo "recivir" → "recibir" in wallet guide
- Fix typo "procesn" → "procesan" in danksharding page
- Fix typo "dispobible" → "disponible" in danksharding page
- Fix semantic error "partición" → "participación" in solo staking
- Standardize register to formal (usted) in merge page
---
.../translations/es/guides/how-to-use-a-wallet/index.md | 2 +-
public/content/translations/es/roadmap/danksharding/index.md | 4 ++--
public/content/translations/es/roadmap/merge/index.md | 2 +-
public/content/translations/es/staking/solo/index.md | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/public/content/translations/es/guides/how-to-use-a-wallet/index.md b/public/content/translations/es/guides/how-to-use-a-wallet/index.md
index 9186e95b321..329f10d6c28 100644
--- a/public/content/translations/es/guides/how-to-use-a-wallet/index.md
+++ b/public/content/translations/es/guides/how-to-use-a-wallet/index.md
@@ -1,7 +1,7 @@
---
title: "Cómo utilizar una cartera"
metaTitle: "Cómo usar carteras de Ethereum | Guía detallada"
-description: "Una guía para explicar cómo enviar, recivir tókenes y conectarse con proyectos de web3."
+description: "Una guía para explicar cómo enviar, recibir tókenes y conectarse con proyectos de web3."
lang: es
---
diff --git a/public/content/translations/es/roadmap/danksharding/index.md b/public/content/translations/es/roadmap/danksharding/index.md
index 6d2f7b7b7a4..b44f86e4268 100644
--- a/public/content/translations/es/roadmap/danksharding/index.md
+++ b/public/content/translations/es/roadmap/danksharding/index.md
@@ -17,11 +17,11 @@ summaryPoints:
Proto-Danksharding, también conocido como [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), es una forma de que los [rollups](/layer-2/#rollups) añadan datos más baratos a los bloques. El nombre proviene de los investigadores que propusieron la idea: Protolambda y Dankrad Feist. Históricamente, los rollups han tenido una capacidad limitada para abaratar las transacciones de los usuarios debido a que publican sus transacciones en `CALLDATA`.
-Es cara, porque la procesn todos los nodos de Ethereum y reside en la cadena para siempre, aunque los rollups solo necesiten los datos durante un breve periodo de tiempo. ProtoDanksharding introduce los blobs de datos que se pueden enviar y adjuntar a los bloques. Los datos de estos blobs no son accesibles para la EVM y se eliminan automáticamente después un periodo de tiempo fijo (establecido en 4096 épocas en el momento de redactar este documento, es decir, unos 18 días). Esto significa que los rollups pueden enviar datos de forma más barata y trasladar el ahorro a los usuarios finales en la forma de transacciones más baratas.
+Es cara, porque la procesan todos los nodos de Ethereum y reside en la cadena para siempre, aunque los rollups solo necesiten los datos durante un breve periodo de tiempo. ProtoDanksharding introduce los blobs de datos que se pueden enviar y adjuntar a los bloques. Los datos de estos blobs no son accesibles para la EVM y se eliminan automáticamente después un periodo de tiempo fijo (establecido en 4096 épocas en el momento de redactar este documento, es decir, unos 18 días). Esto significa que los rollups pueden enviar datos de forma más barata y trasladar el ahorro a los usuarios finales en la forma de transacciones más baratas.
-Los rollups son una manera de escalar Ethereum agrupando transacciones fuera de cadena y luego publicando los resultados en Ethereum. Una acumulación se compone básicamente de dos partes: de datos y de verificación de la ejecución. Los datos son la secuencia total de transacciones que procesa una acumulación para producir un cambio en el estado publicado por Ethereum. La verificación de ejecución es la reejecución de esas transacciones por algún actor honesto (un «proveedor») para asegurarse de que el cambio del estado propuesto sea correcto. Para realizar la comprobación de ejecución, los datos de la transacción deben estar disponibles durante el tiempo suficiente para que cualquiera puede descargarlos y verificarlos. Esto significa que el proveedor puede identificar y cuestionar cualquier mala conducta del secuenciador de acumulaciones. Sin embargo, no tiene que estar dispobible para siempre.
+Los rollups son una manera de escalar Ethereum agrupando transacciones fuera de cadena y luego publicando los resultados en Ethereum. Una acumulación se compone básicamente de dos partes: de datos y de verificación de la ejecución. Los datos son la secuencia total de transacciones que procesa una acumulación para producir un cambio en el estado publicado por Ethereum. La verificación de ejecución es la reejecución de esas transacciones por algún actor honesto (un «proveedor») para asegurarse de que el cambio del estado propuesto sea correcto. Para realizar la comprobación de ejecución, los datos de la transacción deben estar disponibles durante el tiempo suficiente para que cualquiera puede descargarlos y verificarlos. Esto significa que el proveedor puede identificar y cuestionar cualquier mala conducta del secuenciador de acumulaciones. Sin embargo, no tiene que estar disponible para siempre.
diff --git a/public/content/translations/es/roadmap/merge/index.md b/public/content/translations/es/roadmap/merge/index.md
index 97c65708087..eef37d2db18 100644
--- a/public/content/translations/es/roadmap/merge/index.md
+++ b/public/content/translations/es/roadmap/merge/index.md
@@ -51,7 +51,7 @@ Esta transición a la prueba de participación cambió la forma en que se emite
_Esto merece repetirse_: Como usuario o poseedor de ETH o cualquier otro activo digital en Ethereum, así como stakeadores que no operan nodos, **no necesita hacer nada con sus fondos o billetera para tener en cuenta la Fusión.** ETH sigue siendo solo ETH. No existirán tales cosas como «old ETH»/«new ETH» ni «ETH1»/«ETH2». Las carteras seguirán funcionando exactamente igual que como lo hacían antes de La Fusión. Las personas que sugieran lo contrario, probablemente sean estafadores.
-A pesar de intercambiar la prueba de trabajo y transicionar a la prueba de participación, el historial completo de Ethereum se mantiene intacto y sin alteraciones desde su creación. Todos los fondos que tengas en tu cartera antes de La Fusión siguen siendo accesibles después de la misma. **No se requiere ninguna actualización por su parte.**
+A pesar de intercambiar la prueba de trabajo y transicionar a la prueba de participación, el historial completo de Ethereum se mantiene intacto y sin alteraciones desde su creación. Todos los fondos que tenga en su cartera antes de La Fusión siguen siendo accesibles después de la misma. **No se requiere ninguna actualización por su parte.**
[Más sobre seguridad en Ethereum](/security/#eth2-token-scam)
diff --git a/public/content/translations/es/staking/solo/index.md b/public/content/translations/es/staking/solo/index.md
index aa124fd2b68..9dc1b811bf3 100644
--- a/public/content/translations/es/staking/solo/index.md
+++ b/public/content/translations/es/staking/solo/index.md
@@ -1,6 +1,6 @@
---
title: Participe desde casa con sus ETH
-description: "Un resumen de cómo empezar con la partición desde casa de sus ETH"
+description: "Un resumen de cómo empezar con la participación desde casa de sus ETH"
lang: es
template: staking
emoji: ":money_with_wings:"