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: + +- ![Sesión de preguntas y respuestas de la comunidad de ETH](https://x.com/NapulETH/status/1905732699094151623) + +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. -![Referencia a las auditorías en el pie de página del sitio](./Image2.png) +![Auditorías referenciadas en el pie de página del sitio web](./Image2.png) ### 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ón que 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. + +![Proceso SAML paso a paso](./fig-01-saml.png) + +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. + +![Inicio de sesión con Ethereum](./fig-02-eth-logon.png) + +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. + +![Obteniendo datos extra de atestaciones](./fig-03-eas-data.png) + +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: + +![Inicio de sesión SAML normal sin Ethereum](./fig-04-saml-no-eth.png) + +#### 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 +
+``` + +Realiza un POST a `loginRequest.entityEndpoint` (la URL del endpoint del proveedor de identidad). + +```typescript + +``` + +El nombre del input es `loginRequest.type` (`SAMLRequest`). El contenido de ese campo es `loginRequest.context`, que es nuevamente XML codificado en base64. + +```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

+
+ + Dirección de correo electrónico: +
+ +``` + +Hay dos campos que enviamos al proveedor de servicios: + +1. El `requestId` al que respondemos. +2. El identificador del usuario (por ahora, la dirección de correo electrónico que indica el usuario). + +```typescript +
+ + + +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. + +![SAML con una firma de Ethereum](./fig-05-saml-w-signature.png) + +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 + +![Obteniendo de la dirección de Ethereum al correo electrónico](./fig-06-saml-sig-n-email.png) + +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: ![Árbol de Merkle](tree.png) -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)`. ![Prueba del valor de C](proof-c.png) ## 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. -![Árbol Merkle con ramas faltantes](merkle-empty-hash.png) +![Árbol de Merkle con ramas faltantes](merkle-empty-hash.png) ```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). -![POAP de ethereum.org](./poap.png) +![ethereum.org POAP](./poap.png) -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: ![Ocho principios interconectados](refi-regenerative-economy-diagram.png) -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. -![Arquitectura cliente-servidor, que representa la Web 1.0](./web1.png) +![Arquitectura cliente-servidor, representando Web 1.0](./web1.png) -### 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. -![Arquitectura cliente-servidor, que representa la Web 2.0](./web2.png) +![Arquitectura cliente-servidor, representando Web 2.0](./web2.png) -## 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. -![Arquitectura de nodo descentralizada, que representa Web3](./web3.png) +![Arquitectura de nodos descentralizados, representando Web3](./web3.png) ### ¿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. + +
+ +![Logotipo de Ethereum en la pantalla del ordenador](./computer.png) + +
+ +## 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. + +
+ +![Imagen de Robot Ethereum](./eth_robot.png) + +
+ +## 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. + +
+ +![walking image](./walking.png) + +
+ +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} -![Phishing mediante enlace de Twitter](./twitterPhishingScam.png) +![Phishing de enlaces en Twitter](./twitterPhishingScam.png) -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). -![Estafa en Twitter](./appleTwitterScam.png) +![Una estafa en Twitter](./appleTwitterScam.png) -### 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.** -![Estafa en YouTube](./youtubeScam.png) +![Una estafa en YouTube](./youtubeScam.png) ### 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. -![Estafa de soporte en Discord](./discordScam.png) +![Una estafa de soporte en Discord](./discordScam.png) 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.** -![Estafa de broker de trading en YouTube](./brokerScam.png) +![Una estafa de broker de trading en YouTube](./brokerScam.png) -### 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 ![Ejemplo de uso de un gestor de contraseñas](./passwordManager.png) -#### 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. -![Un diagrama que muestra cómo una sola clave de validador se está distribyendo en nodos múltiples con componentes variados.](./dvt-cluster.png) +![Un diagrama que muestra cómo una única clave de validador se divide en partes y se distribuye a varios nodos con diferentes componentes.](./dvt-cluster.png) ## ¿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 | + + + +
+ +![](./developers-eth-blocks.png) + +
+ +## 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 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: 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 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 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. -![Comparación del consumo de energía de Ethereum antes y después de La Fusión, utilizando la torre Eiffel (330 metros de altura) a la izquierda, para simbolizar el alto consumo de energía antes de esta; y un pequeño muñeco Lego de 4 cm de altura a la derecha, para representar la drástica reducción en el consumo después de La Fusión.](energy_consumption_pre_post_merge.png) +![Comparación del consumo energético de Ethereum antes y después de The Merge, utilizando la Torre Eiffel (330 metros de altura) a la izquierda para simbolizar el alto consumo energético antes de The Merge, y una pequeña figura de Lego de 4 cm de alto a la derecha para representar la drástica reducción en el uso de energía tras The Merge](energy_consumption_pre_post_merge.png) -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. -![Un diagrama que muestra la composición de la EVM.](./evm.png) _Diagrama adaptado de [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ +![Un diagrama que muestra la composición de la EVM](./evm.png) +_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. -![Un diagrama en el que se muestra dónde se necesita gas para las operaciones de la EVM](../gas/gas.png) _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. + +![Un diagrama que muestra dónde se necesita gas para las operaciones de la EVM](../gas/gas.png) +_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. + +![Credencial de retirada de tipo 0](./0x00-wd.png) + +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**. + +![Credencial de retirada de tipo 1](./0x01-wd.png) + +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) + +![Ilustración de conversión](./conversion.png) + +### 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. + +![Ilustración de consolidación](./consolidation.png) + +### 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. -![Un diagrama que muestra una transacción en un bloque, lo que provoca cambios de estado](./tx-block.png) _Diagrama adaptado de [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ +![Un diagrama que muestra una transacción en un bloque que provoca cambios de estado](./tx-block.png) +_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. ![Interfaz común para el intercambio](./swap1.png) +Por ejemplo, Eth y DAI. Asegúrese de tener fondos en cualquiera de los dos tokens. +![Interfaz común para intercambiar](./swap1.png) ## 3. Ingrese la cantidad de tokens que desee intercambiar y haga clic en intercambiar El intercambio calculará automaticamente cuántos tokens obtendrá. -![Interfaz común para el intercambio](./swap2.png) +![Interfaz común para intercambiar](./swap2.png) ## 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-7702: Establecer código de cuenta EOA
  • +
  • EIP-7691: Aumento del rendimiento de blobs
  • +
  • EIP-7623 - Aumento del coste de calldata
  • +
  • EIP-7840: Agregar programación de blobs a los archivos de configuración EL
  • +
+ +Mejor experiencia de participación: + +
    +
  • EIP-7251: Aumentar el MAX\_EFFECTIVE\_BALANCE
  • +
  • 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
  • +
  • EIP-4788 - Raíz de bloque de Baliza en la EVM
  • +
  • EIP-4844 - Transacciones de blob fragmentado (Proto-Danksharding)
  • +
  • EIP-5656 - MCOPY - Instrucción de copia de memoria
  • +
  • EIP-6780 - AUTODESTRUCTOR solo en la misma transacción
  • +
  • EIP-7516 - BLOBBASEFEE código de operación
  • +
+ +
+ +- [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. + + + +
    +
  • EIP-4788 - Raíz de bloque de Baliza en la EVM
  • +
  • EIP-4844 - Transacciones de blobs de shard
  • +
  • EIP-7044 - Salidas voluntarias firmadas válidas perpetuamente
  • +
  • EIP-7045 - Aumentar la ranura de inclusión de atestación máxima
  • +
  • EIP-7514 - Añadir límite máximo de churn de época
  • +
+ +
+ +- [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-3651: inicia la direcciónCOINBASE
  • +
  • EIP-3651: inicia el calentamiento de dirección de COINBASE
  • EIP-3855: nueva instrucciónPUSH0
  • EIP-3860: código iniciación límite y contador
  • 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) - +
            • EIP-2565: reduce el gasto moderado ModExp de gas
            • @@ -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-140: añade el código de operaciónREVERT.
                • EIP-658: campo de estado añadido a los recibos de la transacción para indicar el éxito o el fracaso.
                • -
                • EIP-196: añade curva elíptica y multiplicación escalar para permitir [ZK-Snarks](/developers/docs/scaling/zk-rollups/).
                • -
                • EIP-197: añade curva elíptica y multiplicación escalar para permitir [ZK-Snarks](/developers/docs/scaling/zk-rollups/).
                • +
                • EIP-196agrega curva elíptica y multiplicación escalar para habilitar el uso de [ZK-Snarks](/developers/docs/scaling/zk-rollups/).
                • +
                • EIP-197: agrega curva elíptica y multiplicación escalar para habilitar el uso de [ZK-Snarks](/developers/docs/scaling/zk-rollups/).
                • EIP-198: permite la verificación de firmas RSA.
                • EIP-211: añade soporte para valores de retorno de longitud variable.
                • EIP-214agrega 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/) - +
                    • EIP-2: edita el proceso de creación del contrato.
                    • @@ -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". -![Dónde puede encontrar la URL de WebSocket en su panel de control de Alchemy](./use-websockets.gif) +![Dónde encontrar la URL de su WebSocket en el panel de Alchemy](./use-websockets.gif) -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. + +![Gráfico que muestra el recuento promedio de blobs por bloque y los objetivos crecientes con las actualizaciones](./average-blob-count-per-block.webp) + +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. +

                      +

                      + Obtenga más información sobre el NDI de Bután en el caso de estudio sobre identidad descentralizada. +

                      +
                      +
                      +
                      + +### 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). -![Diagrama que muestra la verificación del código fuente de un contrato inteligente](./source-code-verification.png) +![Un diagrama que muestra la verificación del código fuente de un contrato inteligente](./source-code-verification.png) 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. -![esquema de la clave del validador](validator-key-schematic.png) +![esquema de clave de validador](validator-key-schematic.png) -**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. -![lógica de la clave del validador](multiple-keys.png) +![lógica de la clave de validador](multiple-keys.png) -## 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".

                      -

                      🖼 Link to asset:

                      +

                      🖼 Enlace al activo:

                      setURL(event.target.value)} /> -

                      🤔 Name:

                      +

                      🤔 Nombre:

                      setName(event.target.value)} /> -

                      ✍️ Description:

                      +

                      ✍️ Descripción:

                      setDescription(event.target.value)} />

                      {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 () => {

                      {" "} 🦊 - You must install MetaMask, a virtual Ethereum wallet, in your - browser. + Debe instalar MetaMask, un monedero virtual de Ethereum, en su + navegador.

                      @@ -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 () => {

                      {" "} 🦊 - You must install MetaMask, a virtual Ethereum wallet, in your - browser. + Debe instalar MetaMask, un monedero virtual de Ethereum, en su + navegador.

                      @@ -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() {

                      {" "} 🦊 - You must install MetaMask, a virtual Ethereum wallet, in your browser. + Debe instalar MetaMask, un monedero virtual de Ethereum, en su navegador.

                      ) @@ -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. -![Un diagrama que representa a la cadena de bloques incluyendo datos dentro de cada bloque](./blockchain-diagram.png) +![Un diagrama que representa una cadena de bloques, incluidos los datos dentro de cada bloque](./blockchain-diagram.png) -_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. -![Diagrama que muestra cómo web3.py usa IPC para conectar su aplicación a un nodo de Ethereum](./web3py-and-nodes.png) +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)._ +![Un diagrama que muestra cómo web3.py utiliza IPC para conectar su aplicación a un nodo de Ethereum](./web3py-and-nodes.png) -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. -![Un diagrama que muestra el EthereumTesterProvider vinculando su aplicación web3.py a un nodo simulado de Ethereum](./ethereumtesterprovider.png) +![Un diagrama que muestra el EthereumTesterProvider enlazando su aplicación de web3.py a un nodo de Ethereum simulado](./ethereumtesterprovider.png) -_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} -![Gráfico que muestra la diversidad de clientes](./client-diversity.png) _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: -![Captura de pantalla de la Zona de espera](./mempool.png) +![Captura de pantalla del visor de Mempool](./mempool.png) -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. -![Graph](liquidityProviderDeposit.png) +![Gráfico](liquidityProviderDeposit.png) -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`. -![Dos eventos en la transacción: transferencia y comprado](./transfer-and-bought-events.png) +![Dos eventos en la transacción: Transfer y Bought](./transfer-and-bought-events.png) -## 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. -![Dos eventos en la transacción: transferencia y vender](./transfer-and-sold-events.png) +![Dos eventos en la transacción: Transfer y Sold](./transfer-and-sold-events.png) -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} -![imagen de transacción realizada con éxito](./successful-transaction.png) +![imagen de la transacción realizada con éxito](./successful-transaction.png) ## 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. ![](./verkle.png) -[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). -![Campo de envío para las direcciones de criptomonedas](./send.png) -
                      +![Campo de envío para direcciones de criptomonedas](./send.png)
                      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». -![Botón que permite al usuario conectar la web con una cartera](./connect1.png) +![Botón que permite al usuario conectarse al sitio web con una billetera](./connect1.png) 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». -![Seleccione de una lista de carteras entre las que conectarse](./connect2.png) +![Selección de una lista de billeteras con las que conectarse](./connect2.png) -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. + +![Interacción normal entre el servidor web, el cliente y la cadena de bloques](./fig-1.svg) + +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. + +![La interacción con la adición de un servidor](./fig-2.svg) + +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: -![Comprar un token legítimo](./uniswap-real.png) +![Comprando un token legítimo](./uniswap-real.png) -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 %: -![Comprar un token estafa](./uniswap-scam.png) +![Comprando un token de estafa](./uniswap-scam.png) 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. - ![Token estafa en Etherscan](./etherscan-scam.png) + ![Token de estafa en Etherscan](./etherscan-scam.png) ## 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: -![Como subir su imagen a Pinata](./instructionsPinata.gif) +![Cómo subir su imagen a Pinata](./instructionsPinata.gif) -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. -![Como subir su nft-metadata.json a Pinata](./uploadPinata.gif) +![Cómo subir su nft-metadata.json a Pinata](./uploadPinata.gif) ## 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. ![Ver la dirección de su contrato en Etherscan](./view-contract-etherscan.png) -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 los metadatos en Pinata](./metadataPinata.gif)_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](./metadataPinata.gif)_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 de json](./metadataJSON.png)_Su página debería mostrar los metadatos json_ +![Su página debería mostrar los metadatos JSON](./metadataJSON.png)_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](./view-nft-etherscan.png)_Ver el hash de transacción de su NFT en Etherscan_ +![Ver el hash de la transacción de su NFT en Etherscan](./view-nft-etherscan.png)_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 + -

                      Current Message:

                      +

                      Mensaje actual:

                      {message}

                      -

                      New Message:

                      +

                      Nuevo mensaje:

                      setNewMessage(e.target.value)} value={newMessage} />

                      {status}

                      ) ``` -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 () => {

                      {" "} 🦊 - You must install MetaMask, a virtual Ethereum wallet, in your - browser. + Debes instalar MetaMask, una billetera virtual de Ethereum, en tu + navegador.

                      @@ -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 () => {

                      {" "} 🦊 - You must install MetaMask, a virtual Ethereum wallet, in your - browser. + Debes instalar MetaMask, una billetera virtual de Ethereum, en tu + navegador.

                      @@ -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() {

                      {" "} 🦊 - You must install MetaMask, a virtual Ethereum wallet, in your browser. + Debes instalar MetaMask, una billetera virtual de Ethereum, en tu navegador.

                      ) @@ -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. - +
                      • EIP-4788 - Raíz de bloque de Baliza en la EVM
                      • @@ -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) - +
                                  • EIP-2565: reduce el gasto moderado ModExp de gas
                                  • @@ -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/) - +
                                          • EIP-140: añade el código de operaciónREVERT.
                                          • @@ -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/) - +
                                                • EIP-2: edita el proceso de creación del contrato.
                                                • 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
                                                  ![Logotipo de Ethereum en la pantalla del ordenador](./computer.png) -
                                                  ## 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
                                                  ![Imagen de Robot Ethereum](./eth_robot.png) -
                                                  ## 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
                                                  ![walking image](./walking.png) -
                                                  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
                                                  ![](./developers-eth-blocks.png) -
                                                  -## 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
                                              • EIP-7516 - BLOBBASEFEE código de operación
                                              -
                                              - [Rollups de capa 2](/layer-2/) @@ -173,7 +169,6 @@ EIP-7514 reduce la emisión de ETH limitando la tasa de "churn" a la que los val
                                            • EIP-7045 - Aumentar la ranura de inclusión de atestación máxima
                                            • EIP-7514 - Añadir límite máximo de churn de época
                                            -
                                            - [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
                                          • EIP-6049 - Deprecate SELFDESTRUCT
                                          -
                                          - [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
                                    • EIP-2930: añade listas de acceso opcionales
                                    -
                                    @@ -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

                        Obtenga más información sobre el NDI de Bután en el caso de estudio sobre identidad descentralizada.

                        - - + + ### 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 --- ![](./participate.png) 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. -![Ilustración de la interfaz ERC-20](erc20_interface.png) +![Illustración de la interfaz ERC-20](erc20_interface.png) -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. ![ex-ante re-org](reorg-schematic.png) @@ -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 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 +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 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 +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:"