diff --git a/es/docs/CoreIgnition/FAQs.md b/es/docs/CoreIgnition/FAQs.md new file mode 100644 index 0000000000..50cb29b069 --- /dev/null +++ b/es/docs/CoreIgnition/FAQs.md @@ -0,0 +1,47 @@ +--- +sidebar_label: Preguntas Frecuentes sobre Core Ignition +hide_table_of_contents: false +sidebar_position: 2 +--- + +# Preguntas Frecuentes sobre Core Ignition + +--- + +### 1. ¿Qué es Core Ignition? + +Core Ignition es un programa de incentivos de seis meses desarrollado por la Fundación Core para impulsar el crecimiento del ecosistema Core. La Temporada 1 concluyó el 11 de septiembre de 2024, y la Temporada 2 está actualmente en curso. Por favor, visita [Core Ignition](https://ignition.coredao.org) para más detalles. + +### 2. ¿Qué es la blockchain Core? + +Core funciona como la capa de Prueba de Participación (Proof of Stake) para Bitcoin, pionera en el Staking No Custodial de Bitcoin y asegurando un ecosistema BTCfi totalmente compatible con EVM. Desde abril de 2024, se han apostado más de 5,500 BTC en Core, aumentando la utilidad y seguridad de Bitcoin. Core es la blockchain EVM más alineada con Bitcoin, con aproximadamente el 55% del poder de hash de minería de Bitcoin contribuyendo a la seguridad de la red. + +### 3. Soy nuevo en el ecosistema Core. ¿Cómo empiezo? + +Para los nuevos usuarios de la blockchain Core, aquí hay información esencial: + +1. Para interactuar con Core, los usuarios necesitan su token nativo, CORE, en su billetera. +2. Para los usuarios que acceden por primera vez, Core ofrece un beneficio único para ayudarlos a comenzar: + - Si los usuarios transfieren al menos 10 USDT a Core, califican para el Core Faucet. + - Este Faucet deposita automáticamente algunos CORE en la billetera del usuario. +3. El proceso funciona de la siguiente manera: + - Primero, los fondos se transfieren (mínimo 10 USDT) a la blockchain Core. + - Tras una transferencia exitosa, Core depositará automáticamente CORE en la billetera del usuario. + - Con CORE ahora en la billetera, los usuarios pueden comenzar a transaccionar en la blockchain Core de inmediato. + +Recuerda, este depósito automático de CORE es un beneficio único diseñado para ayudar a los nuevos usuarios a empezar fácilmente con la blockchain Core. + +### 4. ¿Cuál es la diferencia entre el programa de incentivos Core Ignition y el programa de incentivos Core Ignition Builder? + +El programa de incentivos Core Ignition recompensa a los usuarios leales para fomentar el crecimiento en el ecosistema BTCfi de Core. Por el contrario, el programa de incentivos de Core Ignition Builder recompensa a los desarrolladores por crear dApps/proyectos en Core blockchain. + +### 5. No tengo ningún token Bitcoin (BTC). ¿Puedo participar igualmente en el ecosistema BTCfi de Core? + +¡Por supuesto! Los usuarios pueden participar en el ecosistema BTCfi de Core incluso sin poseer Bitcoin. Como una cadena compatible con EVM, Core ofrece una variedad de oportunidades DeFi similares a otras cadenas EVM, incluyendo DEXes, protocolos de préstamos, futuros perpetuos, re-staking y plataformas NFT. La misión de Core es desbloquear $1.25T de liquidez atrapada de Bitcoin, creando oportunidades para todos los usuarios de web3. + +### 6. ¿Dónde puedo encontrar más actualizaciones sobre Core Ignition? + +- Visita el [sitio web oficial de Core Ignition.](https://ignition.coredao.org/) +- Sigue la [cuenta oficial de X (Twitter) de Core DAO](https://x.com/Coredao_Org) +- Lee [nuevas publicaciones en el blog](https://coredao.org/explore/blog) +- Únete a los canales de la comunidad Core - [Discord](https://discord.com/invite/coredaoofficial) y [Telegram](https://t.me/CoreDAOTelegram) para discusiones y actualizaciones regulares. diff --git a/es/docs/CoreIgnition/Mechanics.md b/es/docs/CoreIgnition/Mechanics.md new file mode 100644 index 0000000000..955319fa1b --- /dev/null +++ b/es/docs/CoreIgnition/Mechanics.md @@ -0,0 +1,88 @@ +--- +sidebar_label: Mecánicas +hide_table_of_contents: false +sidebar_position: 2 +--- + +# Mecánicas de Core + +--- + +## Panel de Control de Core Ignition + +

+ Ignition_dashboard +

+ +### Perfil de Core Ignition + +El Perfil de Core Ignition es un panel personalizado conectado a la cuenta del usuario, que permite mostrar sus logros y participación. Permite a los usuarios: + +1. Mostrar un nombre de usuario y avatar personalizados. +2. Conectar X (Twitter) y mostrar su foto de perfil. +3. Seguimiento del estado de participación de alto nivel +4. Mostrar las insignias obtenidas. + +Para actualizar el perfil del usuario, haga clic en el menú de puntos suspensivos del perfil. + +

+ Ignition Profile meatballs menu +

+ +### Balance de la Billetera Ignition + +El balance de la billetera Ignition muestra un subconjunto de activos permitidos que posee la cuenta en Core. Los usuarios pueden ganar Sparks (puntos) al transferir/mantener activos, con un aumento adicional de Sparks en Core. + +### Balance de dApp Ignition + +El balance de dApp Ignition refleja los activos que el usuario ha depositado dentro de las dApps permitidas en Core. Los usuarios también pueden aumentar Sparks interactuando con estas dApps en Core. + +### Cómo Aumentar Sparks + +Los Sparks son puntos acumulativos que reflejan cuán activos son los usuarios en el ecosistema de Core. Se actualizan diariamente a las 00:00 UTC y aparecen en el tablero de clasificación. Los usuarios ganan Sparks diariamente mediante: + +**1. Activos en el Balance de la Billetera Ignition:**\ +La cantidad y tipo de activos permitidos que los usuarios transfieren a Core se reflejarán en su balance de billetera Ignition. Al mantener estos activos en Core, los usuarios ganarán Sparks. Los Sparks se calculan diariamente con base en el balance de la billetera del usuario. + +**2. Actividades con dApps del Ecosistema de Core:**\ +Los usuarios también pueden ganar Sparks interactuando con las dApps permitidas en Core Ignition. Cada actividad en la cadena con estas dApps contribuirá con puntos Spark a la cuenta del usuario. Más detalles se actualizarán pronto. + +**3. Campañas Participadas:**\ +Core Ignition contará con campañas flash o de tiempo limitado, ofreciendo a los usuarios oportunidades especiales para potenciar Sparks. Manténgase conectado revisando las secciones de campaña dentro de la aplicación y siguiendo los anuncios oficiales de Core en [X (Twitter)](https://x.com/Coredao_Org) para las últimas actualizaciones. + +**4. Invitar a Nuevos Usuarios a unirse a Ignition:**\ +Para quienes son nuevos en Core Ignition, transfiera $100 USDT en activos permitidos a Core para desbloquear un enlace de invitación permanente. Para usuarios registrados en la Temporada 1, el código de invitación se desbloquea automáticamente. Al invitar nuevos usuarios a Core Ignition, los usuarios recibirán el 10% de los Sparks diarios obtenidos por los invitados de primer grado y el 2% de los invitados de segundo grado. Tenga en cuenta que puede aplicarse un límite a los Sparks máximos que cada usuario puede ganar mediante referidos. + +### Cómo Aumentar Multiplicadores + +Los multiplicadores son variables dinámicas que multiplican los puntos Spark. El multiplicador mostrado en el panel del usuario refleja el que actualmente aplica a todos los activos del usuario. Este multiplicador se calcula promediando los multiplicadores distribuidos entre los activos. + +

+ image +

+ +A continuación, se presentan los multiplicadores base para los activos permitidos dentro de la billetera del usuario o depositados en varias dApps. + +| Activos incluidos en la lista blanca | Activos en Billetera | Préstamo | Préstamo | Provisión de Liquidez | +| ------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | -------------------- | -------------------- | --------------------- | +| stCORE, CLND | 1.3x | 2.5x | 3x | 3.5x | +| USDT,USDC | 1.2x | 2x | 2.5x | 3x | +| CORE,WCORE,wETH | 1x | 1.5x | 2x | 2.5x | +| solvBTC.CORE | 1x | 1.4x | 1.6x | 1.8x | +| aBTC, BTCB, BTC.B, nBTC, oBTC, pumpBTC, rBTC, suBTC, SolvBTC.b, SolvBTC.m, uBTC, wBTC | 1x | 1.2x | 1.4x | 1.6x | + +> _**Ejemplo 1:**_\ +> Si el usuario tiene 10 stCORE en el balance de la billetera Ignition, obtiene:\ +> Sparks diarios = cantidad de stCORE \* precio de stCORE \* multiplicador = 10 stCORE \* $1.5 (supuesto) \* 1.3 = 19.5 + +> _**Ejemplo 2:**_\ +> Si el usuario presta 20 stCORE en un protocolo de préstamos, obtiene:\ +> Sparks diarios = cantidad de stCORE \* precio de stCORE \* multiplicador = 20 stCORE \* $1.5 (supuesto) \* 2.5 = 75 + +Descubra oportunidades específicas de multiplicadores en la sección Explorar dApps: + +

+ dApp tab +

+ +Además de mantener tokens estratégicos y desplegar activos en varias dApps, los usuarios también pueden ganar multiplicadores adicionales participando en campañas especiales. Los multiplicadores de las campañas pueden acumularse sobre los multiplicadores base destacados anteriormente para potenciar aún más Sparks. Los multiplicadores base están sujetos a cambios sin previo aviso. diff --git a/es/docs/CoreIgnition/Overview.md b/es/docs/CoreIgnition/Overview.md new file mode 100644 index 0000000000..a446c29161 --- /dev/null +++ b/es/docs/CoreIgnition/Overview.md @@ -0,0 +1,65 @@ +--- +sidebar_label: Resumen +hide_table_of_contents: false +sidebar_position: 2 +--- + +# Resumen + +--- + +La Temporada 2 de Core Ignition es un programa de incentivos para usuarios de seis meses, diseñado para reconocer a la comunidad de Core por sus valiosas contribuciones a la red. A través de Core Ignition, los usuarios tienen la oportunidad de contribuir significativamente al panorama en evolución de BTCfi, mientras son recompensados por diversas interacciones y actividades, que pueden visualizarse en el panel de Ignition después de conectarse y transferir activos exitosamente a Core Ignition. + +## Período del Programa + +La duración del programa de incentivos para usuarios de Core Ignition es de **seis** meses, desde el 12 de septiembre de 2024, 00:00 UTC hasta el 11 de marzo de 2025, 23:59 UTC. + +## Elegibilidad + +Todos los participantes son elegibles, excepto aquellos en jurisdicciones prohibidas o según lo especificado en los Términos y Condiciones del Programa. + +## Beneficios de Participar + +Al participar en el programa de incentivos para usuarios de Core Ignition, los usuarios obtienen acceso al floreciente ecosistema de Core y tienen la oportunidad de explorar aplicaciones innovadoras. Core Ignition está diseñado para otorgar recompensas y beneficios potenciales a los participantes de la red según su contribución general a las iniciativas de Core Ignition. Las contribuciones pueden incluir: + +1. Invitar a otros a participar en Core Ignition. +2. Transferir activos específicos a Core. +3. Mantener activos específicos en Core. +4. Ejecutar transacciones interactuando con contratos inteligentes. +5. Participar en dApps dentro del ecosistema de Core, incluyendo, pero no limitado a, DEXs, protocolos de préstamos, futuros perpetuos, etc. + +## Cómo Empezar + +1. Visite el [sitio web de Core Ignition](https://ignition.coredao.org). + +

+ image +

+ +2. Haga clic en "Agregar red central" para agregar Core Blockchain a la red de billetera. +3. Haga clic en "Earn Sparks" o "Join Now" para iniciar la creación de una cuenta. +4. Seleccione el país correspondiente. + +

+ image +

+ +5. Elija un nombre de usuario para el panel de Ignition. Conecte su cuenta de X (Twitter) (opcional). + +

+ image +

+ +6. Revise y acepte los Términos y Condiciones y la Política de Privacidad. + +

+ image +

+ +7. Haga clic en "Connect Wallet" para conectar una billetera Web3 Core compatible. + +

+ image +

+ +8. Interactúe con el ecosistema de Core para aumentar los balances de Core Ignition y ganar puntos Sparks diarios. diff --git a/es/docs/Dev-Guide/bridge-with-layerzero.md b/es/docs/Dev-Guide/bridge-with-layerzero.md new file mode 100644 index 0000000000..2dae60188d --- /dev/null +++ b/es/docs/Dev-Guide/bridge-with-layerzero.md @@ -0,0 +1,44 @@ +--- +sidebar_label: Puentear Tokens a Core con una Layer zero +hide_table_of_contents: false +sidebar_position: 2 +--- + +# Puente entre tokens y núcleo con LayerZero (OFT V2) + +![Core LayerZero OFT](https://github.com/user-attachments/assets/ac7382c0-6825-4fb8-91c2-5e022a2eca66) + +--- + +En esta [guía](https://github.com/coredao-org/LZ-OFT-V2-Core-Guide), lo guiamos a través del proceso de configuración de transferencias de tokens entre cadenas utilizando el token fungible Omnichain (OFT) de LayerZero.) Protocolo V2. Específicamente, esta guía se centra en habilitar las transferencias de tokens ERC-20 entre Core Testnet y Base Sepolia Testnet, equipando a los desarrolladores con las herramientas y el conocimiento necesarios para manejar las interacciones de tokens entre cadenas. + +Ya seas un principiante o un desarrollador experimentado, [esta guía](https://github.com/coredao-org/LZ-OFT-V2-Core-Guide) te ayudará a: + +Instale y configure Hardhat para implementaciones entre cadenas. +Implementar contratos OFT en Core Testnet y Base Sepolia Testnet. +Configure puntos finales LayerZero y establezca controles remotos confiables para una comunicación segura entre cadenas de bloques. +Ejecute transferencias de tokens entre cadenas, lo que permitirá un movimiento eficiente de activos a través de diferentes redes blockchain. + +Si está listo para sumergirse, acceda a la guía completa [aquí](https://github.com/coredao-org/LZ-OFT-V2-Core-Guide). + +## Puntos principales cubiertos en la guía: + +- **Configuración del entorno de desarrollo**: instale Node.js, pnpm y Hardhat, luego inicialice su proyecto para comenzar a trabajar con el protocolo OFT V2 de LayerZero. + +- **Implementación de contratos OFT**: siga las instrucciones paso a paso para implementar contratos que permitan transferencias de tokens entre cadenas entre Core Testnet y Base Sepolia. + +- **Configuración de pares entre cadenas**: aprenda cómo configurar controles remotos confiables y configurar rutas LayerZero para garantizar transferencias de tokens confiables y seguras. + +- **Ejecución de transferencias de tokens**: utilice tareas de Hardhat para realizar transferencias de tokens entre cadenas, verificando las transacciones en los exploradores de blockchain. + +- **Personalizar la configuración del token**: si bien esta guía se centra en unir los tokens ERC-20, los contratos OFT se pueden adaptar para cumplir con diferentes requisitos de tokens, ya sean fungibles o no fungibles. Puede modificar la configuración para sus necesidades de token únicas. + +- Para una mayor personalización y detalles de configuración más detallados, puede consultar la [documentación de LayerZero sobre configuración OFT y EVM] (https://docs.layerzero.network/v2/developers/evm/oft/quickstart). + +Este recurso lo guiará a través de cualquier configuración avanzada que no se cubra en esta guía, lo que garantizará que pueda adaptar el proceso a los requisitos específicos de su proyecto. + +## Por qué esta guía es importante: + +Al implementar OFT V2 de LayerZero, desbloquea la capacidad de crear ecosistemas de tokens omnichain donde los tokens se pueden transferir de manera eficiente a través de múltiples blockchains. Los tokens puente entre Core Testnet y Base Sepolia se utilizan como ejemplo debido a su velocidad y bajas tarifas. A través de los puntos finales proporcionados por LayerZero, puede transferir tokens entre Core y muchas redes EVM diferentes. — esta guía muestra lo fácil que es ampliar el alcance de su proyecto al permitir la interoperabilidad entre redes. Esto abre nuevas posibilidades para aplicaciones descentralizadas (dApps) que requieren interacciones de tokens en varias cadenas de bloques, mejorando la liquidez, la escalabilidad y la funcionalidad. + +Comience su viaje con la guía completa [aquí](https://github.com/coredao-org/LZ-OFT-V2-Core-Guide) y explore el potencial de las soluciones omnichain de LayerZero. Para configuraciones más detalladas, asegúrese de visitar [los recursos oficiales de LayerZero] (https://docs.layerzero.network/v2/developers/evm/oft/quickstart). diff --git a/es/docs/Dev-Guide/contract-verify.md b/es/docs/Dev-Guide/contract-verify.md new file mode 100644 index 0000000000..ada96ee660 --- /dev/null +++ b/es/docs/Dev-Guide/contract-verify.md @@ -0,0 +1,150 @@ +--- +sidebar_label: Verificación de Contrato +hide_table_of_contents: false +sidebar_position: 2 +--- + +# Verificación de Contrato + +--- + +En el interés de la transparencia, nosotros recomendamos verificar todos los contratos en [Core Scan](https://scan.coredao.org/). Si bien existen varias formas de lograr la verificación del contrato, recomendamos utilizar la herramienta de verificación oficial de Core, [Core Scan](https://scan.coredao.org/), para una confiabilidad óptima. Este documento lo guía a través de los métodos más utilizados para la verificación de contratos: la herramienta web Core Scan, la API REST de Core y el complemento Hardhat Verification. + +:::note +Asegúrese de que su contrato inteligente siga las [Pautas de soporte de solidez de Core Chain] (./smart-contract-guidelines.md). Para ello, asegúrese de que el parámetro `evmVersion` esté establecido en `paris` en la configuración del compilador de solidity. +::: + +## Verificación web mediante Core Scan + +La verificación web es la estrategia de verificación de contratos inteligentes más utilizada. Después de implementar su contrato inteligente en Core, puede usar su código fuente para verificarlo en Core Scan. + +1. Vaya al sitio web de Core Scan. + +- [Para la red principal](https://scan.coredao.org/) +- Busque el contrato por dirección en [Core Scan](https://scan.test.btcs.network). + +2. Busque el contrato por dirección en Core Scan. Simplemente pegue la dirección del contrato en la barra de búsqueda del sitio web. +3. Después de ubicar el contrato, seleccione la pestaña **Contrato** y haga clic en **Verificar y publicar**_._ + +![verify-core-scan](../../static/img/contract-verification/contract-verify-1.avif) + +4\. Complete la información de verificación requerida en la página, específicamente: + +- Dirección del contrato; +- Tipo de compilador: para contratos simples, seleccione el tipo de compilador "Archivo único". Para contratos más complejos, como contratos con importaciones externas, seleccione el tipo de compilador "Standard Json"; +- Versión del compilador; +- Tipo de licencia de código abierto; + +![verify-core-scan](../../static/img/contract-verification/contract-verify-2.avif) + +5\. En la página siguiente, complete el código fuente de Solidity del contrato. + +Los parámetros del constructor deben tener el formato de bytes codificados en ABI. Si su contrato tiene parámetros de constructor, le recomendamos agregarlos en el campo "Argumentos del constructor", aunque no es obligatorio. Remix y otras herramientas pueden generarlos por usted. + +Si habilitó la optimización durante la compilación del contrato, seleccione "Sí" para el campo "Optimización". + +![verify-contract](../../static/img/contract-verification/contract-verify-3.avif) + +5\. Haga clic en **Verificar y publicar** para finalizar el proceso. + +![verify-contract](../../static/img/contract-verification/contract-verify-4.avif) + +Ahora su contrato verificado en Core Scan debería verse así: + +![verify-contract](../../static/img/contract-verification/contract-verify-5.avif) + +## Verificación API + +Puede encontrar la guía sobre el uso de Core API para verificar contratos [aquí](https://docs.coredao.org/docs/api/api-documents/contracts). Tenga en cuenta que para realizar llamadas API debe registrarse en Core Scan y generar una clave API. + +Si estás familiarizado con la API de Etherscan, ¡estás de suerte! Las llamadas API en Core son 100% compatibles con la API de Etherscan. Solo necesita reemplazar la clave API y la URL del punto final y todo debería funcionar correctamente. + +## Verificación de HardHat + +La verificación HardHat es la forma más conveniente para que los desarrolladores verifiquen contratos inteligentes. Para obtener más información sobre la verificación de Hardhat, consulte la guía oficial de verificación de Hardhat que se encuentra [aquí](https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify). + +Tenga en cuenta que deberá agregar redes Core como cadenas personalizadas, como se ve a continuación en una configuración de ejemplo de HardHat: + +```javascript +/** +* @type import('hardhat/config').HardhatUserConfig +*/ + + +const { PrivateKey } = require('./secret.json'); +require('@nomiclabs/hardhat-ethers'); +require("@nomiclabs/hardhat-waffle"); +require("@nomicfoundation/hardhat-verify"); + +module.exports = { + defaultNetwork: 'testnet', + + networks: { + hardhat: { + }, + testnet: { + url: 'https://rpc.test.btcs.network', + accounts: [PrivateKey], + chainId: 1115, + }, + mainnet: { + url: 'https://rpc.coredao.org', + accounts: [PrivateKey], + chainId: 1116, + }, + }, + etherscan: { + apiKey: { + testnet: "api key", + mainnet: "api key" + }, + customChains: [ + { + network: "testnet", + chainId: 1115, + urls: { + apiURL: "https://api.test.btcs.network/api", + browserURL: "https://scan.test.btcs.network/" + } + }, + { + network: "mainnet", + chainId: 1116, + urls: { + apiURL: "https://openapi.coredao.org/api", + browserURL: "https://scan.coredao.org/" + } + } + ] + }, + + solidity: { + compilers: [ + { + version: '0.8.9', + settings: { + optimizer: { + enabled: false, + runs: 200, + }, + }, + } + ], + }, + paths: { + sources: './contracts', + cache: './cache', + artifacts: './artifacts', + }, + mocha: { + timeout: 20000, + }, +}; + +``` + +## Limitaciones conocidas + +- Actualmente, Core solo admite versiones del compilador solc hasta 0.8.19. +- Las bibliotecas no son compatibles con las verificaciones API. +- Si tiene problemas al verificar contratos de un solo archivo muy grandes (más de 1000 líneas), le recomendamos cambiar al formato "JSON estándar" para la verificación. diff --git a/es/docs/Dev-Guide/core-bridge-resources.md b/es/docs/Dev-Guide/core-bridge-resources.md new file mode 100644 index 0000000000..aeec9831ae --- /dev/null +++ b/es/docs/Dev-Guide/core-bridge-resources.md @@ -0,0 +1,86 @@ +--- +sidebar_label: Recursos del puente Core +hide_table_of_contents: false +sidebar_position: 2 +--- + +# Recursos del puente Core + +--- + +El [Core Bridge](https://bridge.coredao.org/) funciona con LayerZero y permite transferencias de activos fluidas entre Core y el mundo blockchain en general. Core Bridge consta de dos partes: contratos LayerZero en Core que facilitan las transferencias entre cadenas y un conjunto de contratos puente o token implementados tanto en Core como en cada blockchain a la que está conectado. El código base del puente auditado se puede encontrar [aquí](https://github.com/LayerZero-Labs/wrapped-asset-bridge), y la lista completa de direcciones de contrato de tokens de puente se puede encontrar [aquí](./core- bridge-resources.md). + +### LayerZero + +| Contratos LayerZero en Core | +| ------------------------------------------------------------------------------------------------- | +| [LayerZero Endpoint](https://scan.coredao.org/address/0x9740ff91f1985d8d2b71494ae1a2f723bb3ed9e4) | +| [UltraLightNodeV2](https://scan.coredao.org/address/0x66a71dcef29a0ffbdbe3c6a460a3b5bc225cd675) | +| [NonceContract](https://scan.coredao.org/address/0x2d61dcdd36f10b22176e0433b86f74567d529aaa) | +| [FPValidator](https://scan.coredao.org/address/0x3c2269811836af69497e5f486a85d7316753cf62) | +| [MPTValidatorV1](https://scan.coredao.org/address/0xb6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7) | +| [TreasuryV2](https://scan.coredao.org/address/0x5b19bd330a84c049b62d5b0fc2ba120217a18c1c) | + +### Bridges y Tokens + +| CORE | Direcciones | +| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| WrappedTokenBridge | https://scan.coredao.org/address/0xa4218e1f39da4aadac971066458db56e901bcbde | +| WETH | https://scan.coredao.org/address/0xeab3ac417c4d6df6b143346a46fee1b847b50296 | +| USDC | https://scan.coredao.org/address/0xa4151b2b3e269645181dccf2d426ce75fcbdeca9 | +| USDT | https://scan.coredao.org/address/0x900101d06a7426441ae63e9ab3b9b0f63be145f1 | +| WBTC | https://scan.coredao.org/address/0x5832f53d147b3d6Cd4578B9CBD62425C7ea9d0Bd | +| Bitcoin BEP2 (BTCB) | https://scan.coredao.org/address/0x7A6888c85eDBA8E38F6C7E0485212da602761C08 | +| WBNB | https://scan.coredao.org/address/0xdFBc618d3c48e553Cb197F42482A0795bef7fe28 | +| stCORE | https://scan.coredao.org/token/0xb3a8f0f0da9ffc65318aa39e55079796093029ad | + +| ETHEREUM | Direcciones | +| ------------------- | ------------------------------------------------------------------------------------------------------- | +| OriginalTokenBridge | https://etherscan.io/address/0x52e75d318cfb31f9a2edfa2dfee26b161255b233 | +| WETH | https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 | +| USDC | https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 | +| USDT | https://etherscan.io/address/0xdac17f958d2ee523a2206206994597c13d831ec7 | +| WBTC | https://etherscan.io/address/0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599 | + +| BNB Smart Chain (BSC) | Direcciones | +| ---------------------------------------- | ------------------------------------------------------------------------------------------------------ | +| OriginalTokenBridge | https://bscscan.com/address/0x52e75d318cfb31f9a2edfa2dfee26b161255b233 | +| USDC | https://bscscan.com/address/0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d | +| USDT | https://bscscan.com/address/0x55d398326f99059ff775485246999027b3197955 | +| BTCB | 0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c | +| WBNB | 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c | + +| Polygon | Direcciones | +| ------------------- | ---------------------------------------------------------------------------------------------------------- | +| OriginalTokenBridge | https://polygonscan.com/address/0x52e75d318cfb31f9a2edfa2dfee26b161255b233 | +| USDC | https://polygonscan.com/address/0x2791bca1f2de4661ed88a30c99a7a9449aa84174 | +| USDT | https://polygonscan.com/address/0xc2132d05d31c914a87c6611c10748aeb04b58e8f | +| WBTC | https://polygonscan.com/address/0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6 | + +| OPTIMISM | Direcciones | +| -------- | ------------------------------------------ | +| Puente | 0x29d096cD18C0dA7500295f082da73316d704031A | +| USDC | 0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85 | +| USDT | 0x94b008aA00579c1307B0EF2c499aD98a8ce58e58 | +| WBTC | 0x68f180fcCe6836688e9084f035309E29Bf0A2095 | + +| AVALANCHE | Direcciones | +| -------------------------------------------------------------------- | ------------------------------------------ | +| Puente | 0x29d096cD18C0dA7500295f082da73316d704031A | +| Bitcoin Avalanche Bridged (BTC.b) | 0x2297aEbD383787A160DD0d9F71508148769342E3 | +| USDC | 0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E | +| USDT | 0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7 | +| WBTC | 0x50b7545627a5162F82A992c33b87aDc75187B218 | + +| ARBITRUM | Direcciones | +| -------- | ------------------------------------------ | +| Puente | 0x29d096cD18C0dA7500295f082da73316d704031A | +| USDC | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 | +| USDT | 0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9 | +| WBTC | 0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f | + +| BASE | Addresses | +| ------ | ------------------------------------------ | +| Bridge | 0x84FB2086Fed7b3c9b3a4Bc559f60fFaA91507879 | +| USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | +| WETH | 0x4200000000000000000000000000000000000006 | diff --git a/es/docs/Dev-Guide/core-explorer.md b/es/docs/Dev-Guide/core-explorer.md new file mode 100644 index 0000000000..f42996d7d8 --- /dev/null +++ b/es/docs/Dev-Guide/core-explorer.md @@ -0,0 +1,28 @@ +--- +sidebar_label: Explorador Core +hide_table_of_contents: false +sidebar_position: 2 +--- + +# Explorador de cadena de bloques de Core Scan + +--- + +Core Explorer es una interfaz gráfica de usuario diseñada para permitir a los usuarios interactuar con la cadena de bloques CORE. A través de esta interfaz, un usuario puede buscar información sobre los bloques que se han agregado a la cadena de bloques, las transacciones que se han producido en la cadena de bloques, los saldos de la billetera y la información sobre tCORE y los tokens CORE. Core Network proporciona exploradores tanto para su red principal como para su red de prueba. + +### Exploradores para Red de Prueba + +- https://scan.test.btcs.network + +### Exploradores para Red Principal + +- https://scan.coredao.org/ + +### Usando el Explorador + +Puede utilizar el explorador de cadena de bloques Testnet Core Scan para buscar y revisar transacciones. Copie la dirección de su cuenta de MetaMask y búsquela en el explorador. En la siguiente imagen podemos ver dos transacciones relacionadas con nuestra cuenta: + +- Aquel en el que obtuvimos tCORE de Faucet; +- Aquel en el que enviamos tCORE a otra dirección; + +![núcleo-explorador](../../static/img/core-explorer.png) diff --git a/es/docs/Dev-Guide/core-faucet.md b/es/docs/Dev-Guide/core-faucet.md new file mode 100644 index 0000000000..92fcfded7f --- /dev/null +++ b/es/docs/Dev-Guide/core-faucet.md @@ -0,0 +1,37 @@ +--- +sidebar_label: Grifo de Core Testnet +hide_table_of_contents: false +sidebar_position: 2 +--- + +# Grifo de Core Testnet + +--- + +Para ayudar a los usuarios a comenzar y permitir a los desarrolladores crear rápidamente prototipos de sus dApps, Core ha lanzado el Core Testnet Faucet público para distribuir tokens de Core testnet, **tCORE** o **tCORE2**. + +## Pasos para Obtener tCORE del Grifo de Core Testnet + +1. Navegue al sitio web de faucet. + - **Para Core Blockchain Testnet (1114) Faucet:** https://scan.test2.btcs.network/faucet + - **For Core Blockchain Testnet (1115) Faucet:** https://scan.test.btcs.network/faucet + +2. Pegue su dirección en el cuadro de texto proporcionado. Asegúrese de proporcionar la dirección Core Testnet de su billetera que desea recibir fondos con tCORE o tCORE2. + +3. Complete el CAPTCHA. + +4. Si usa faucet para Core Blockchain Testnet (1114), haga clic en el botón "Obtener tCORE2". Después de solicitar tCORE del grifo, verá que el balance de su MetaMask aumenta. + +![usando-grifo-test2](../../static/img/faucet/faucet-test2.png) + +5. Si usa faucet para Core Blockchain Testnet (1115), haga clic en el botón "Obtener tCORE". Después de solicitar con éxito tCORE2 desde el faucet, verá aumentar el saldo de su billetera. + +![usando-grifo](../../static/img/faucet/faucet.png) + +:::caution +Cada dirección puede solicitar **solo un tCORE o tCORE2 por día** del faucet en 24 horas. Si se quedó sin tCORE o tCORE2 y el faucet no le envía más debido al límite diario de un tCORE o tCORE2, regrese después de 24 horas e inténtelo nuevamente. O bien, puede solicitarlo en el servidor Discord de Core. +::: + +:::note +tCORE y tCORE2 solo se usan para pruebas y no tienen ningún valor. No lo use para transacciones financieras reales. +::: diff --git a/es/docs/Dev-Guide/core-mainnet-wallet-config.md b/es/docs/Dev-Guide/core-mainnet-wallet-config.md new file mode 100644 index 0000000000..e37f43992c --- /dev/null +++ b/es/docs/Dev-Guide/core-mainnet-wallet-config.md @@ -0,0 +1,117 @@ +--- +sidebar_label: Core Mainnet +hide_table_of_contents: false +sidebar_position: 2 +--- + +# Connect to Core Mainnet + +--- + +:::note +Esta es una guía detallada para conectarse a Core Mainnet utilizando la billetera MetaMask. +::: + +## Requisitos previos del software + +1. [Extensión del navegador MetaMask Wallet](https://metamask.io/) + +## Configuración de la billetera MetaMask + +Recomendamos utilizar la [billetera web MetaMask](https://metamask.io/) para conectarse a Core Mainnet. Deberá instalar MetaMask y configurar su cuenta antes de poder usarla para conectarse a Core Mainnet. Puede encontrar las instrucciones de configuración de MetaMask aquí. + +## Agregar Core Mainnet a MetaMask + +Hay varias formas de agregar configuraciones de Core Mainnet a su MetaMask Wallet; a continuación, enumeramos las formas más confiables y probadas. + +### Agregar red manualmente + +1. Haga clic en el botón selector de red (la flecha hacia abajo al lado de la red actual). Esto mostrará una lista de redes a las que ya estás conectado. + +mainnet-wallet-config-1 + +2. Haga clic en "Agregar red" en la parte inferior de la lista de redes + +![metmask-mainnet](../../static/img/miannet-wallet-config/mainnet-wallet-config-2.webp) + +3. Luego se abrirá una nueva pestaña del navegador, mostrando varios campos para completar: + +![metmask-mainnet](../../static/img/miannet-wallet-config/mainnet-wallet-config-2.webp) + +Complete la siguiente información de la red y haga clic en "guardar" para agregar la red. + +- **Nombre de la red:** Core Blockchain +- **Nueva URL de RPC:** https://rpc.ankr.com/core +- **ID de cadena:** 1116 (**Nota**: 0x45c es lo mismo que 1116. La nueva versión de MetaMask convierte el ID de cadena al formato hexadecimal). +- **Símbolo de moneda:** CORE +- **URL del Explorador de bloques:** https://scan.coredao.org + +4. Después de realizar los pasos anteriores, podrás ver la red principal la próxima vez que accedas al selector de red. + +### Agregar la red central a través de Chainlist.org + +1. Vaya a chainlist.org y busque '_Core_' + +![metmask-mainnet](../../static/img/miannet-wallet-config/mainnet-wallet-config-4.webp) + +2. Verifique dos veces para asegurarse de elegir la red correcta. Verifique los detalles en las siguientes instantáneas: ID de cadena, moneda, etc. para asegurarse de agregar la correcta. + +![metmask-mainnet](../../static/img/miannet-wallet-config/mainnet-wallet-config-6.webp) + +3. Apruebe la acción en su MetaMask haciendo clic en el botón _'Aprobar'_. + +![metmask-mainnet](../../static/img/miannet-wallet-config/mainnet-wallet-config-6.webp) + +4. Haga clic en el botón '_Agregar a MetaMask_'. + +![metmask-mainnet](../../static/img/miannet-wallet-config/mainnet-wallet-config-8.webp) + +La red Core ahora está agregada a su MetaMask. + +### Agregar la red Core a través de Core Explorer + +1. Vaya a https://scan.coredao.org/ y desplácese hacia abajo en la página + +![metmask-mainnet](../../static/img/miannet-wallet-config/mainnet-wallet-config-9.webp) + +2. Haga clic en el botón '_Agregar red principal_' + +![metmask-mainnet](../../static/img/miannet-wallet-config/mainnet-wallet-config-10.webp) + +3. Aprobar en tu MetaMask + +![metmask-mainnet](../../static/img/miannet-wallet-config/mainnet-wallet-config-11.webp) + +4. Después de realizar los pasos anteriores, podrás ver la red Core la próxima vez que accedas al selector de redes. + +### Agregar la red Core a la billetera móvil MetaMask: + +1. Toca las tres líneas en la esquina superior izquierda: + +![metmask-mainnet](../../static/img/miannet-wallet-config/mainnet-wallet-config-12.webp) + +2. Seleccione _'Configuración'_: + +![metmask-mainnet](../../static/img/miannet-wallet-config/mainnet-wallet-config-13.webp) + +3. Seleccionar redes: + +![metmask-mainnet](../../static/img/miannet-wallet-config/mainnet-wallet-config-14.webp) + +4. Toque '_Agregar red_': + +![metmask-mainnet](../../static/img/miannet-wallet-config/mainnet-wallet-config-14.webp) + +5. Complete los detalles de la red RPC personalizada y haga clic en _guardar_ para agregar la red. + +- **Nombre de la red:** Core Blockchain +- **Nueva URL de RPC:** https://rpc.ankr.com/core +- **ID de cadena:** 1116 (**Nota**: 0x45c es lo mismo que 1116. La nueva versión de MetaMask convierte el ID de cadena al formato hexadecimal). +- **Símbolo de moneda:** CORE +- **URL del Explorador de bloques:** https://scan.coredao.org + +4. Después de realizar los pasos anteriores, podrás ver la red Core la próxima vez que accedas al selector de redes. + +:::info +Si tiene un error o tiene dificultades para agregar la red, solicite ayuda en el canal de "soporte" en [Core Discord] (https://discord.gg/coredao), siempre estamos disponibles para ayudarlo. +::: diff --git a/es/docs/Dev-Guide/core-subgraph.md b/es/docs/Dev-Guide/core-subgraph.md new file mode 100644 index 0000000000..0cd714fe95 --- /dev/null +++ b/es/docs/Dev-Guide/core-subgraph.md @@ -0,0 +1,88 @@ +--- +sidebar_label: Subgrafo Core +hide_table_of_contents: false +sidebar_position: 2 +--- + +# Subgrafo Core usando GraphQL + +--- + +Los desarrolladores pueden utilizar un subgrafo autohospedado para extraer datos de la cadena de bloques Core, procesarlos y almacenarlos para su consumo a través de GraphQL. Echemos un vistazo a cómo podemos crear e implementar esta poderosa herramienta. + +### URL importantes + +Usaremos algunas URL estándar a lo largo de esta guía, que será útil revisar antes de comenzar. + +#### Red principal + +
URLUso
URL de administración: https://thegraph.coredao.org/deploy/Se utiliza para crear/implementar subgrafos.
IPFS URL: https://thegraph.coredao.org/ipfs/Se utiliza para implementar subgrafos.
HTTP query URL: https://thegraph.coredao.orgSe utiliza para consultar datos de subgrafos.
URL de control de estado
>https://thegraph-is.coredao.org
Se utiliza para comprobar el estado del subgrafo.
+ +#### Red de prueba + +
URLUso
URL de administración:
https://thegraph-node.test.btcs.network
Se utiliza para crear/implementar subgrafos (--node o -g).
URL de IPFS:
https://thegraph-ipfs.test.btcs.network
Se utiliza para implementar subgrafos.
URL de consulta HTTP:
https://thegraph.test.btcs.network
Se utiliza para consultar datos de subgrafos.
URL de control de estado
>https://thegraph-sub.test.btcs.network
Se utiliza para comprobar el estado del subgrafo.
+ +### Pasos generales de configuración del subgrafo + +#### Crear repositorio + +Para crear su repositorio de subgrafos, siga la [guía oficial de The Graph](https://thegraph.com/docs/en/developing/creating-a-subgraph/). Para implementar en la red Core Graph, asegúrese de configurar el nombre de su red en `subgraph.yaml` como núcleo. Dependiendo de su subgrafo, es posible que haya algunos cambios más que realizar Encontrará detalles adicionales en la sección de ejemplos completa a continuación. Encontrará detalles adicionales en la sección de ejemplo completo a continuación. + +#### Crear e implementar + +Para crear e implementar su subgrafo, ejecute los siguientes comandos en el repositorio de su proyecto de subgrafo. + +```bash +# Crear subgraph +graph create your-subgraph-name --node https://thegraph.coredao.org/deploy/ + +# Deployar subgraph +graph deploy your-subgraph-name --node https://thegraph.coredao.org/deploy/ --ipfs https://thegraph.coredao.org/ipfs/ +``` + +El comando `graph depoy` debería devolver la URL de consulta HTTP para su subgrafo, que puede integrar en su aplicación según corresponda. + +### Ejemplo: implementación de un subgrafo Uniswap V2 + +Ahora que entendemos el proceso, veamos un ejemplo completo configurando un subgrafo Uniswap V2 en Core. + +Primero, clone el [repositorio de subgrafos] de Uniswap V2 (https://github.com/Uniswap/v2-subgraph), navegue hasta la carpeta del proyecto y luego ejecute los siguientes comandos desde ese directorio: + +``` +# Instalar dependencias con npm (o hilo) +npm install + +# Generar código de subgrafo +npm run codegen +``` + +Ahora haremos algunos cambios necesarios en el +_subgraph.yaml_ and _helpers.ts_ files: + +- _subgraph.yaml_: + - Cambie el nombre de la red a "core" en las líneas 9 y 37. + - Actualice la dirección de fábrica en la línea 11. + - Actualice `startBlock` en la línea 13 a una altura de bloque razonable (la altura del bloque actual está disponible [aquí](https://scan.coredao.org/)). +- _src/mappings/helpers.ts_: + - Actualice la dirección de fábrica en la línea 11. + +Finalmente, ejecutaremos los comandos de creación e implementación. Para evitar problemas de compatibilidad, usemos el graph-cli instalado en el proyecto (en lugar de la versión global) anteponiendo el comando `graph` con `./node_modules/.bin/`. + +```bash +# Crea un nuevo subgrafo llamado uniswap-4-test +./node_modules/.bin/graph create uniswap-4-test --node https://thegraph.coredao.org/deploy/ + +# Implementar el subgrafo uniswap-4-test +./node_modules/.bin/graph deploy uniswap-4-test --node https://thegraph.coredao.org/deploy/ --ipfs https://thegraph.coredao.org/ipfs/ + +# El comando de implementación debería imprimir una URL de consulta HTTP similar a: +# https://thegraph.coredao.org/subgraphs/name/uniswap-4-test +``` + +¡Bien hecho, tu subgrafo está implementado! Ahora puede integrar la URL de consulta HTTP impresa por el comando de implementación en su sitio web y utilizarla para consultar datos. + +### Autorización + +Para evitar que otros sobrescriban su subgrafo, contáctenos en [discord](https://discord.com/invite/coredaoofficial) para obtener una clave de autorización.\ +\ +Si está realizando pruebas con TestNet Graph, aquí hay un token de acceso para fines de prueba generales: **a9a79c2aea604bfaa861ff93d46d0d11**. diff --git a/es/docs/Dev-Guide/core-testnet-wallet-config.md b/es/docs/Dev-Guide/core-testnet-wallet-config.md new file mode 100644 index 0000000000..641b222ede --- /dev/null +++ b/es/docs/Dev-Guide/core-testnet-wallet-config.md @@ -0,0 +1,93 @@ +--- +sidebar_label: Red de prueba Core +hide_table_of_contents: false +sidebar_position: 2 +--- + +# Conéctese a la red de prueba Core + +--- + +:::note +Esta es una guía detallada para conectarse a Core Testnet utilizando la billetera MetaMask. +::: + +### Requisitos previos del software + +1. [Extensión del navegador MetaMask Wallet](https://metamask.io/) + +### Configuración de la billetera MetaMask + +Recomendamos utilizar la [billetera web MetaMask](https://metamask.io/) para conectarse a Core Testnet. Deberá instalar MetaMask y configurar su cuenta antes de poder usarla para conectarse a Core Testnet. Puede encontrar las instrucciones de configuración de MetaMask aquí. + +### Agregar Core Testnet a MetaMask + +Hay varias formas de agregar configuraciones de Core Testnet a su MetaMask Wallet; a continuación, enumeramos las formas más confiables y de prueba. + +#### Agregar red manualmente + +Una vez que haya configurado su billetera MetaMask, puede usarla para conectarse a Core Testnet agregando los detalles de la cadena de Core Testnet en la configuración de red de MetaMask. Navegue hasta `Configuración->Redes` en MetaMask y haga clic en el botón `Agregar red`. Introduzca la siguiente información: + +- **Nombre de la red:** Core Blockchain TestNet +- **Nueva URL de RPC:** https://rpc.test2.btcs.network +- **ID de cadena:** 1114 +- **Símbolo de moneda:** tCORE2 +- **URL del Explorador de bloques:** https://scan.test2.btcs.network +- **Grifo:** https://scan.test2.btcs.network/faucet +- **Sitio web de apuestas:** https://stake.test2.btcs.network/ + +![add-network-metamask](../../static/img/testnet-wallet-config/testnet-config-wallet-1.png) + +#### Agregar la red Core a través de Chainlist.org + +1. Vaya a chainlist.org y busque '_core blockchain_', asegúrese de marcar la opción _Incluir Testnets_. + +![chainlist-testnet-connect-metmask](../../static/img/testnet-wallet-config/chainlist-testnet-connect-1.png) + +2. Verifique dos veces para asegurarse de elegir la red correcta. Verifique los detalles en las siguientes instantáneas: ID de cadena, moneda, etc. para asegurarse de agregar la correcta. + +![chainlist-testnet-connect-metmask](../../static/img/testnet-wallet-config/chainlist-testnet-connect-2.png) + +3. Haga clic en _Connect Wallet_ y luego elija MetaMask. Permita conectarse a la billetera MetaMask confirmando las notificaciones de MetaMask. + +![chainlist-testnet-connect-metmask](../../static/img/testnet-wallet-config/chainlist-testnet-connect-3.png) + +4. Cambie a Core testnet haciendo clic en el botón _'Cambiar red'_. + +![chainlist-testnet-connect-metmask](../../static/img/testnet-wallet-config/chainlist-testnet-connect-4.png) + +El Core Testnet ahora está agregado a su MetaMask. + +#### Agregar red a través de Core Testnet Explorer + +Si usa la extensión Chrome MetaMask, puede usar un atajo rápido para agregar Core Testnet a MetaMask. Visite [Core Testnet Explorer] (https://scan.test.btcs.network/), desplácese hacia abajo y seleccione el botón "Agregar red central". Esto abrirá una ventana emergente con toda la información de red necesaria cargada; solo necesita confirmar y aprobar. + +![agregar-metamask-de-red](../../static/img/testnet-wallet-config/testnet-wallet-config-2.png) + +:::info + +#### Nueva red de prueba + +La nueva red de prueba de Core con `chainID 1114` ya está disponible y se recomienda su uso. Es compatible con BTC Testnet para apostar, a diferencia de la versión anterior (`chainID 1115`). La antigua testnet pronto quedará obsoleta y eventualmente se retirará, así que cambie a la nueva testnet para acceder a las funciones más recientes. + +#### Actualizaciones de cambio de marca + +"Satoshi Chain/BTC" han sido rebautizados como "Core/CORE", respectivamente. Si agregó Testnet antes del cambio de marca, deberá actualizar manualmente el nombre de la red y el símbolo de moneda en la configuración de MetaMask; de lo contrario, no podrá utilizar la versión actual de Core Testnet. Vaya a `Configuración->Red` y seleccione `Core Testnet` para abrir la configuración de red. Actualice el nombre de la red y el símbolo de moneda a los valores indicados en la [sección anterior] (#adding-network-manualmente) y haga clic en el botón Guardar. Listo! +::: + +### Monedero de financiación con tokens tCORE + +Para ayudar a los usuarios a comenzar y permitir a los desarrolladores crear rápidamente prototipos de sus dApps, Core ha lanzado el [Core Testnet Faucet] público (https://scan.test.btcs.network/faucet) para distribuir tokens de Core testnet, **tCORE** . Siga la [guía] detallada (./core-faucet.md) para financiar su cuenta de metamask con tokens tCORE. + +### Envío de tokens tCORE + +Puede utilizar MetaMask para enviar tCORE a otras direcciones. + +1. Navegue a la billetera metamask, asegúrese de estar conectado a Core Testnet +2. Haga clic en el botón `Enviar` + +![send-metmask](../../static/img/testnet-wallet-config/send-tcore-1.png) + +3. Ingrese la cantidad de tokens tCORE que desea enviar y la dirección a la que desea enviar los tokens tCORE; asegúrese de que sea una dirección Core Testnet. Luego haga clic en siguiente y confirme la transacción. + +![send-metmask](../../static/img/testnet-wallet-config/send-tcore-2.png) diff --git a/es/docs/Dev-Guide/dapp-on-core.md b/es/docs/Dev-Guide/dapp-on-core.md new file mode 100644 index 0000000000..183206bdec --- /dev/null +++ b/es/docs/Dev-Guide/dapp-on-core.md @@ -0,0 +1,349 @@ +--- +sidebar_label: Construya dApp en Core +hide_table_of_contents: false +sidebar_position: 2 +description: Cree una dApp de pila completa en Core +--- + +# Construyendo dApp en Core + +--- + +Las aplicaciones descentralizadas (dApps) utilizan una cadena de bloques o contratos inteligentes en cadena para almacenar y hacer referencia a datos, en lugar de depender de bases de datos centralizadas tradicionales. Una estructura de dApp simple y común generalmente consiste en una interfaz de usuario de React.js o Vue.js que utiliza Web3.js o Ethers.js para interactuar con contratos inteligentes implementados en una cadena de bloques compatible con EVM. + +## ¿Qué estamos construyendo? + +En este tutorial, desarrollaremos una dApp simple usando React.js y Ethers.js que almacena datos en un contrato inteligente en Core blockchain y los muestra a los usuarios. El código completo de la dApp está disponible en GitHub en el [dApp-tutorial](https://github.com/coredao-org/dapp-tutorial/tree/master/01-Basic%20Full%20Stack%20Dapp%20on%20Core# building-a-dapp-on-core) repositorio. + +## Conclusiones del aprendizaje + +Este tutorial le ayudará a adquirir conocimientos sobre los siguientes puntos de aprendizaje: + +- Conectividad de MetaMask Wallet a Core Testnet; +- Desarrollo e implementación de contratos inteligentes en Core Testnet; +- Integración front-end con el contrato inteligente utilizando la biblioteca Ethers.js; +- Leer datos de un contrato inteligente; +- Escribir datos en un contrato inteligente; + +## Requisitos previos del software + +- [Git](https://git-scm.com/) v2.44.0 +- [Node.js](https://nodejs.org/en) v20.11.1 +- [Node.js](https://nodejs.org/en) v20.11.1 +- [Hardhat](https://hardhat.org/hardhat-runner/docs/getting-started#installation) v10.2.4 +- [MetaMask Web Wallet Extension](https://metamask.io/download/) + +## Configurar el entorno de desarrollo + +1. Cree un nuevo directorio para el proyecto y navegue hasta él. + +```bash +mkdir dapp-tutorial +cd dapp-tutorial +``` + +2. Install [Hardhat](https://hardhat.org/) and [Waffle](https://getwaffle.io/) + +```bash +npm init --yes +npm install --save-dev hardhat +npm install --save-dev chai @nomiclabs/hardhat-waffle +``` + +3. Inicialice el proyecto Hardhat ejecutando el siguiente comando + +```bash +npx hardhat +``` + +![harhat-project-initialize](../../static/img/hardhat/dapp-tutorial-1.png) + +:::note +Como usaremos Waffle para este proyecto y nos aseguraremos de seleccionar **No** para la opción "_¿Desea instalar las dependencias de este proyecto de muestra con npm (@nomicfoundation/hardhat-toolbox)? (Y/n)_" +::: + +4. Una vez que se inicializa este proyecto, encontrará la siguiente estructura de proyecto: + +```bash +dapp-tutorial. +| .gitignore +| hardhat-config.js (HardHat configuration file.) +| package-lock.json +| package.json +| README.md +| ++---contracts (Para Solidity Smart Contracts) +| Lock.sol +| ++---ignition (Scripts en versiones anteriores, esta carpeta contiene archivos de configuración que especifican cómo se deben implementar los contratos inteligentes.) +| \---modules +| Lock.js +| ++---node_modules +| ++---test (Para escribir y ejecutar pruebas) +| Lock.js +| +``` + +5. Instale y configure MetaMask Chrome Extension para usar con Core Testnet. Consulte [aquí](./core-testnet-wallet-config.md) para obtener una guía detallada. + +6. Cree un archivo secret.json en la carpeta raíz y almacene en él la clave privada de su billetera MetaMask. Consulte [aquí](https://metamask.zendesk.com/hc/en-us/articles/360015290032-How-to-reveal-your-Secret-Recovery-Phrase) para obtener detalles sobre cómo obtener la clave privada de la cuenta MetaMask. + +```json +{"PrivateKey":"you private key, do not leak this file, do keep it absolutely safe"} +``` + +:::caution +No olvide agregar este archivo al archivo `.gitignore` en la carpeta raíz de su proyecto para no verificar accidentalmente sus claves privadas/frases secretas en un repositorio público. ¡Asegúrese de guardar este archivo en un lugar absolutamente seguro! +::: + +7. Copie lo siguiente en su archivo `hardhat.config.js` + +```js +/** + * @type import('hardhat/config').HardhatUserConfig + */ + + +require('@nomiclabs/hardhat-ethers'); +require("@nomiclabs/hardhat-waffle"); + + +const { PrivateKey } = require('./secret.json'); + + +module.exports = { + defaultNetwork: 'testnet', + + + networks: { + hardhat: { + }, + testnet: { + url: 'https://rpc.test.btcs.network', + accounts: [PrivateKey], + chainId: 1115, + } + }, + solidity: { + compilers: [ + { + version: '0.8.19', + settings: { + evmVersion: 'paris', + optimizer: { + enabled: true, + runs: 200, + }, + }, + }, + ], + }, + paths: { + sources: './contracts', + cache: './cache', + artifacts: './artifacts', + }, + mocha: { + timeout: 20000, + }, +}; + +``` + +## Redacción de contratos inteligentes + +1. Navegue a la carpeta `contratos` en el directorio raíz de su proyecto. +2. Elimine el archivo `Lock.sol`; cree un nuevo archivo `Storage.sol` y pegue el siguiente contenido en él. + +```javascript +// SPDX-License-Identifier: GPL-3.0 + + +pragma solidity >=0.7.0 <0.9.0; + + +/** + * @title Storage + * @dev Store & retrieve value in a variable + */ +contract Storage { + + + uint256 number; + + + /** + * @dev Store value in variable + * @param num value to store + */ + function store(uint256 num) public { + number = num; + } + + + /** + * @dev Return value + * @return value of 'number' + */ + function retrieve() public view returns (uint256){ + return number; + } +} +``` + +### Explicación + +El contrato de "Almacenamiento" es un ejemplo simple que demuestra cómo almacenar y recuperar un valor usando un contrato inteligente de Solidity. Consiste en una variable de estado para contener el valor y dos funciones para actualizar y leer este valor. La función "almacenar" permite a cualquier usuario establecer el valor, mientras que la función "recuperar" permite a cualquier usuario leer el valor actual. Este contrato puede resultar útil para comprender los conceptos básicos de las variables de estado y la visibilidad de funciones en Solidity. Este contrato inteligente de Solidity, denominado "Almacenamiento", es un contrato simple que permite almacenar y recuperar un único valor "uint256". Aquí hay un desglose detallado de sus componentes y funcionalidad: + +#### Componentes del contrato + +1. **Variable de estado**: + - `number`: una variable `uint256` que se utiliza para almacenar el valor. + +#### Funciones del contrato + +1. **Función de tienda**: + - `store(uint256 num) public`: una función que permite a los usuarios almacenar un nuevo valor en la variable `number`. Esta función toma un solo parámetro, "num", que es el valor que se almacenará. La función actualiza la variable `número` con el valor proporcionado. + - **Visibilidad**: la función está marcada como "pública", lo que significa que cualquier usuario o contrato puede llamarla. + - **Cambio de estado**: Esta función modifica el estado del contrato actualizando la variable `número`. + +2. **Función de recuperación**: + - `retrieve() public view return (uint256)`: una función que devuelve el valor actual almacenado en la variable `number`. Esta función no toma ningún parámetro y devuelve un valor `uint256`. + - **Visibilidad**: la función está marcada como "pública", lo que significa que cualquier usuario o contrato puede llamarla. + - **Ver**: La función está marcada como `ver`, lo que indica que no modifica el estado del contrato. Sólo lee el estado. + - **Valor de retorno**: La función devuelve el valor de la variable "número". + +## Compilación de contrato inteligente + +1. Para compilar el contrato inteligente `Storage` definido en `Storage.sol`, desde el directorio raíz ejecute el siguiente comando + +```bash +npx hardhat compile +``` + +## Implementar e interactuar con contratos inteligentes + +1. Antes de implementar su contrato inteligente en Core, es mejor ejecutar primero una serie de pruebas para asegurarse de que el contrato inteligente esté funcionando como se desea. Consulte la guía detallada [aquí](https://docs.coredao.org/docs/Dev-Guide/hardhat#contract-testing) para obtener más detalles. + +2. Cree una carpeta `scripts` en el directorio raíz de su proyecto. Dentro de esta carpeta, cree un archivo `deploy-and-call.js`; pegue el siguiente script en él. + +```javascript +const hre = require("hardhat"); + + +async function main() { + const Storage = await hre.ethers.getContractFactory("Storage"); + const storage = await Storage.deploy(); + + + await storage.deployed(); + console.log("Storage contract deployed to:", storage.address); + + + console.log("call retrieve():", await storage.retrieve()) + + + console.log("call store(), set value to 100") + const tx = await storage.store(100) + await tx.wait() + + console.log("call retrieve() again:", await storage.retrieve()) +} + + +// We recommend this pattern to be able to use async/await everywhere +// and properly handle errors. +main().catch((error) => { + console.error(error); + process.exitCode = 1; +}); +``` + +3. Asegúrese de que su billetera MetaMask tenga tokens de prueba tCORE o tCORE2 para Core Testnet. Consulte [aquí](https://docs.coredao.org/docs/Dev-Guide/core-testnet-wallet-config) para obtener detalles sobre cómo obtener tokens tCORE o tCORE2 de Core Faucet. + +4. Ejecute el siguiente comando desde el directorio raíz de su proyecto para implementar su contrato inteligente en la cadena de bloques Core. + +```bash +npx hardhat run scripts/deploy-and-call.js +``` + +Si se implementa correctamente, obtendrá el siguiente resultado + +```bash +npx hardhat run scripts/deploy-and-call.js +``` + +5. Asegúrese de guardar la dirección del contrato de almacenamiento en el que se implementa, como se obtuvo anteriormente, esto se usará para interactuar con el contrato inteligente desde la interfaz de la dApp. + +🎉¡Felicitaciones! Ha aprendido con éxito cómo crear, compilar e implementar un contrato inteligente en Core Testnet utilizando Hardhat. + +## Interactuar con Smart Contract a través del Frontend + +Creemos una interfaz frontal para interactuar con el contrato inteligente. + +### Configurando la interfaz + +1. Clona el repositorio `dApp-tutorial` de GitHub usando el siguiente comando. + +```bash +git clone https://github.com/coredao-org/dapp-tutorial.git +``` + +2. Navegue a la carpeta `01-Basic Full Stack Dapp on Core` en el repositorio clonado `dapp-tutorial`. + +```bash +cd dapp-tutorial +cd "01-Basic Full Stack Dapp on Core" +``` + +3. Instale todas las dependencias, es decir, módulos de nodo. + +```bash +npm install +``` + +4. Para probar si todo funciona bien, ejecute la aplicación usando el siguiente comando. Esto servirá a la aplicación con función de recarga en caliente en [http://localhost:5173](http://localhost:5173/) + +```bash +npm run dev +``` + +### Implementaciones clave + +La lógica clave de blockchain de la aplicación se implementa en [App.tsx](https://github.com/coredao-org/dapp-tutorial/blob/master/01-Simple%20Storage%20Full%20Stack%20Dapp/src/components/ aplicación.tsx) + +1. [App.tsx (Cartera)](https://github.com/coredao-org/dapp-tutorial/blob/master/01-Simple%20Storage%20Full%20Stack%20Dapp/src/components/App.tsx#L20): lógica para conectar la aplicación a la billetera MetaMask. +2. [App.tsx (Tienda)](https://github.com/coredao-org/dapp-tutorial/blob/master/01-Simple%20Storage%20Full%20Stack%20Dapp/src/components/App.tsx#L58): lógica para escribir datos en el contrato inteligente de almacenamiento. +3. [App.tsx (Recuperar)](https://github.com/coredao-org/dapp-tutorial/blob/master/01-Simple%20Storage%20Full%20Stack%20Dapp/src/components/App.tsx#L87): lógica para leer datos del contrato inteligente de almacenamiento. + +### Agregar detalles de contrato inteligente + +1. Copie el archivo `Storage.sol` de la carpeta `contracts` en la raíz de su proyecto y péguelo en la carpeta `frontend/src/contracts`. +2. Copie la dirección del contrato inteligente de almacenamiento obtenida en la sección [arriba](#deploy-and-interact-with-smart-contract). +3. Pegue esto en la [Línea 10 de App.tsx](https://github.com/coredao-org/dapp-tutorial/blob/master/01-Simple%20Storage%20Full%20Stack%20Dapp/src/components/App. tsx#L10). + +```javascript +const contractAddress = '0x48F68BF4A1b1fE6589B9D0a5ad0dF0520582edA2' +``` + +4. Además, necesitaremos los metadatos de ABI para interactuar con el contrato desde nuestra dApp. Desde la carpeta `artifacts/contracts` en la raíz de su proyecto. Copie el archivo `Storage.json` y guárdelo en la carpeta `/src/contracts`. + +## Pruebe localmente usando MetaMask + +1. Ejecute el comando `npm run dev` desde la raíz del proyecto para iniciar la aplicación. Esto servirá para la aplicación en [http://localhost:5173](http://localhost:5173/) + +2. Asegúrese de que su billetera MetaMask esté correctamente instalada y cambiada a Core Testnet como se describe en nuestra [guía del usuario de Core Testnet] (./core-testnet-wallet-config.md). También deberá conectar su billetera MetaMask al sitio local. + +![dapp-on-core](../../static/img/dapp/dapp-1.png) + +3. Ingrese un número en el campo de entrada y haga clic en el botón **almacenar** para guardarlo en el contrato. Una acción de escritura en el contrato inteligente invoca la billetera MetaMask. Haga clic en el botón **Confirmar** para firmar la transacción y espere la confirmación en la cadena de bloques. + +![dapp-on-core](../../static/img/dapp/dapp-2.avif) + +4. Una vez confirmada la transacción en la cadena de bloques, haga clic en el botón **recuperar** para leer el valor del contrato inteligente. Notarás que el valor se ha actualizado. + +![dapp-on-core](../../static/img/dapp/dapp-3.avif) + +🎉 ¡Felicidades! ¡Acaba de interactuar con su contrato recién implementado utilizando la interfaz de su dApp! Puede aprovechar el código base implementando e interactuando con diferentes contratos y agregando nuevos componentes de interfaz de usuario al sitio web para sus usuarios. diff --git a/es/docs/Dev-Guide/dev-tools.md b/es/docs/Dev-Guide/dev-tools.md new file mode 100644 index 0000000000..87ecd3f8ec --- /dev/null +++ b/es/docs/Dev-Guide/dev-tools.md @@ -0,0 +1,45 @@ +--- +sidebar_label: Herramientas para desarrolladores +hide_table_of_contents: false +sidebar_position: 2 +--- + +# Panorama de herramientas para desarrolladores + +--- + +#### _Acceda a las herramientas y recursos de Core_ + +### Recursos principales de Testnet de Blockchain + +- **[Block Explorer](https://scan.test.btcs.network/):** busque y revise transacciones, cuentas, bloques y más. + +- **[Puntos finales RPC](https://chainlist.org/chain/1115):** Puntos finales RPC para el servicio RPC de Core Testnet. + +- **[Core Faucet](https://scan.test.btcs.network/faucet):** financie su dirección de testnet con tCORE o tCORE2. + +- **[Core Stake](https://stake.test.btcs.network/):** sitio web de tCORE stake. + +- **[Gnosis Safe](https://safe.test.btcs.network/welcome):** gestión segura multifirma de activos digitales. + +### Recursos generales + +- **[Core DAO GitHub](https://github.com/coredao-org):** la página oficial de GitHub, que incluye el código base de Core blockchain y más. + +### Recursos de la red principal de Core Blockchain + +- **[Block Explorer](https://scan.coredao.org/):** busque y revise transacciones, cuentas, bloques y más. + +- **[Puntos finales RPC](https://chainlist.org/chain/1116):** Puntos finales RPC para el servicio RPC de Core Mainnet. + +- **[Core Bridge](https://bridge.coredao.org/):** puente oficial para el ecosistema Core (más detalles en Core Bridge Resources) + +- **[Core Stake](https://stake.coredao.org/):** sitio web oficial de CORE Stake. + +- **[Proveedor Web3](https://cloud.infstones.com/login):** infraestructura API escalable proporcionada por InfStones. + +- **[Core Scan Contract Verifier](https://scan.coredao.org/verifyContract):** herramienta web para verificación de contratos (guía aquí). + +- **[Gnosis Safe](https://safe.coredao.org/welcome):** gestión segura multifirma de activos digitales. + +- **[wCORE](https://scan.coredao.org/address/0x191e94fa59739e188dce837f7f6978d84727ad01):** contrato inteligente de token CORE envuelto oficial. diff --git a/es/docs/Dev-Guide/erc20-tokens.md b/es/docs/Dev-Guide/erc20-tokens.md new file mode 100644 index 0000000000..a1d6285a18 --- /dev/null +++ b/es/docs/Dev-Guide/erc20-tokens.md @@ -0,0 +1,69 @@ +--- +sidebar_label: ERC-20 Tokens +hide_table_of_contents: false +sidebar_position: 2 +description: ERC-20 on Core +--- + +# ERC20 Tokens + +--- + +ERC20 es actualmente el enfoque dominante para implementar tokens fungibles basados ​​en blockchain. Cada token ERC20 se basa en la interfaz del token ERC20 original, lo que significa que todos comparten un conjunto común de funciones, que incluyen (entre otras): + +- Transferir tokens de una cuenta a otra; +- Obtener el saldo actual de tokens de una cuenta; +- Obtener el suministro total del token disponible en la red; +- Aprobar una cantidad de tokens para ser gastados por una cuenta de terceros; + +Para ser compatible con ERC-20, un token debe implementar todas las funciones y eventos siguientes: + +```javascript +function name() public view returns (string) +function symbol() public view returns (string) +function decimals() public view returns (uint8) +function totalSupply() public view returns (uint256) +function balanceOf(address _owner) public view returns (uint256 balance) +function transfer(address _to, uint256 _value) public returns (bool success) +function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) +function approve(address _spender, uint256 _value) public returns (bool success) +function allowance(address _owner, address _spender) public view returns (uint256 remaining) +``` + +```javascript +event Transfer(address indexed _from, address indexed _to, uint256 _value) +event Approval(address indexed _owner, address indexed _spender, uint256 _value) +``` + +## Mejores prácticas + +ERC20 es un estándar simple y seguro. Pero debemos tener cuidado en nuestra implementación; Muchos tokens ERC20 han sido explotados a lo largo de los años debido a la inclusión de código adicional con errores. + +Por motivos de seguridad, recomendamos utilizar la implementación OpenZeppelin ERC20 para su proyecto, cuyo código fuente se puede encontrar en[ERC20.sol](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts /token/ERC20/ERC20.sol). Puedes hacer esto con los siguientes pasos: + +1\. Instale los contratos inteligentes de OpenZeppelin en su proyecto ejecutando el siguiente comando: + +`npm install @openzeppelin/contracts` + +`npm install @openzeppelin/contracts`. Luego, puedes importar los contratos en la biblioteca con esto: + +```javascript +// contracts/GLDToken.sol +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +contract GLDToken is ERC20 { + constructor(uint256 initialSupply) ERC20("Gold", "GLD") { + _mint(msg.sender, initialSupply); + } +} +``` + +Puede encontrar más información sobre la implementación de OpenZeppelin ERC-20 [aquí](https://docs.openzeppelin.com/contracts/4.x/erc20). + +#### Referencias + +- [https://ethereum.org/en/developers/docs/standards/tokens/erc-20/](https://ethereum.org/en/developers/docs/standards/tokens/erc-20/) +- [https://docs.openzeppelin.com/contracts/4.x/erc20](https://docs.openzeppelin.com/contracts/4.x/erc20) diff --git a/es/docs/Dev-Guide/erc721-tokens.md b/es/docs/Dev-Guide/erc721-tokens.md new file mode 100644 index 0000000000..494d0dc35b --- /dev/null +++ b/es/docs/Dev-Guide/erc721-tokens.md @@ -0,0 +1,77 @@ +--- +sidebar_label: ERC-721 Tokens +hide_table_of_contents: false +sidebar_position: 2 +description: ERC-721 on Core +--- + +# ERC721 Tokens + +--- + +ERC721 es un estándar para tokens no fungibles, lo que significa que cada token es verificablemente único de todos los demás tokens y se ha convertido en el estándar dominante para las NFT en cadena. Todos los ERC721 tienen un "tokenId" único que los diferencia de todos los demás tokens del conjunto. + +Un token compatible con ERC721 debe implementar todas las funciones y eventos siguientes: + +```javascript + function balanceOf(address _owner) external view returns (uint256); + function ownerOf(uint256 _tokenId) external view returns (address); + function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable; + function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; + function transferFrom(address _from, address _to, uint256 _tokenId) external payable; + function approve(address _approved, uint256 _tokenId) external payable; + function setApprovalForAll(address _operator, bool _approved) external; + function getApproved(uint256 _tokenId) external view returns (address); + function isApprovedForAll(address _owner, address _operator) external view returns (bool); +``` + +```javascript + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); +``` + +## Mejores prácticas + +Recomendamos utilizar la popular y confiable implementación ERC721 de OpenZeppelin en su proyecto. El código fuente se puede encontrar en[ERC721.sol](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol). Puede utilizar la implementación ERC721 de OpenZeppelin en su proyecto mediante los siguientes pasos: + +1\. Instale la biblioteca OpenZeppelin en su proyecto ejecutando el comando: + +`npm install @openzeppelin/contracts` + +2\. Una vez instalada, puede usar la implementación ERC721 en la biblioteca importándola así: + +```javascript +// contracts/GameItem.sol +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; +import "@openzeppelin/contracts/utils/Counters.sol"; + +contract GameItem is ERC721URIStorage { + using Counters for Counters.Counter; + Counters.Counter private _tokenIds; + + constructor() ERC721("GameItem", "ITM") {} + + function awardItem(address player, string memory tokenURI) + public + returns (uint256) + { + uint256 newItemId = _tokenIds.current(); + _mint(player, newItemId); + _setTokenURI(newItemId, tokenURI); + + _tokenIds.increment(); + return newItemId; + } +} +``` + +Para obtener más información sobre la implementación de OpenZeppelin ERC-20, lea [ERC721](https://docs.openzeppelin.com/contracts/4.x/erc721). + +#### Referencias + +- [https://ethereum.org/en/developers/docs/standards/tokens/erc-721/](https://ethereum.org/en/developers/docs/standards/tokens/erc-721/) +- [https://docs.openzeppelin.com/contracts/4.x/erc721](https://docs.openzeppelin.com/contracts/4.x/erc721) diff --git a/es/docs/Dev-Guide/hardhat.md b/es/docs/Dev-Guide/hardhat.md new file mode 100644 index 0000000000..73461de04f --- /dev/null +++ b/es/docs/Dev-Guide/hardhat.md @@ -0,0 +1,268 @@ +--- +sidebar_label: Uso de Hardhat +hide_table_of_contents: false +sidebar_position: 2 +description: Implementar contratos en Core usando Hardhat +--- + +# Uso de Hardhat + +--- + +Hardhat es un entorno de desarrollo popular para blockchains compatibles con EVM, compuesto por varios componentes para escribir, compilar, depurar y desplegar contratos inteligentes. + +En este tutorial, aprenderás cómo compilar, desplegar y llamar a contratos inteligentes en Core Testnet usando Hardhat. Obtén el código base para este tutorial desde [aquí](https://github.com/coredao-org/hardhat-tutorial). + +## Instalación + +Dirígete a la carpeta de tu perfil y sigue los pasos a continuación para instalar Hardhat (se requiere npm/node [v8.9.4 LTS o posterior](https://nodejs.org/en/)): + +1. `npm init --yes` +2. `npm install --save-dev hardhat` +3. `npm install --save-dev chai @nomiclabs/hardhat-waffle` + +## Inicialización del Proyecto + +Después de la instalación, inicializa Hardhat ejecutando el comando `npx hardhat`: + +```javascript +$ npx hardhat +888 888 888 888 888 +888 888 888 888 888 +888 888 888 888 888 +8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888 +888 888 "88b 888P" d88" 888 888 "88b "88b 888 +888 888 .d888888 888 888 888 888 888 .d888888 888 +888 888 888 888 888 Y88b 888 888 888 888 888 Y88b. +888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888 + +👷 Bienvenido a Hardhat v2.10.1 👷‍ + +? ¿Qué quieres hacer? … +❯ Crear un proyecto en JavaScript + Crear un proyecto en TypeScript + Crear un hardhat.config.js vacío + Salir + +``` + +Una vez inicializado, la estructura del proyecto será la siguiente: + +- `contracts`: para los contratos inteligentes en Solidity. +- `scripts`:para scripts en JavaScript/TypeScript para interactuar con los contratos. +- `test`: para escribir y ejecutar pruebas. +- `hardhat.config.js`: archivo de configuración de Hardhat. + +## Configurar Hardhat para Core Testnet + +Copia lo siguiente en tu archivo hardhat.config.js: + +```javascript +/** + * @type import('hardhat/config').HardhatUserConfig + */ + + require('@nomiclabs/hardhat-ethers'); + require("@nomiclabs/hardhat-waffle"); + + const { PrivateKey } = require('./secret.json'); + + module.exports = { + defaultNetwork: 'testnet', + + networks: { + hardhat: { + }, + testnet: { + url: 'https://rpc.test.btcs.network', + accounts: [PrivateKey], + chainId: 1115, + } + }, + solidity: { + compilers: [ + { + version: '0.8.9', + settings: { + evmVersion: 'paris', + optimizer: { + enabled: true, + runs: 200, + }, + }, + }, + ], + }, + paths: { + sources: './contracts', + cache: './cache', + artifacts: './artifacts', + }, + mocha: { + timeout: 20000, + }, + }; + +``` + +**Asegúrese de que su contrato inteligente siga las [Pautas de soporte de solidez para Core Blockchain](./smart-contract-guidelines.md)**; para ello, asegúrese de que el parámetro `evmVersion` esté establecido en `paris` bajo el configuración del compilador de solidez en el archivo `hardhat.config.js`. + +> Nota: Necesitamos pasar claves privadas/mnemónicos al proveedor. Puedes crear un archivo `secret.json` para almacenarlos. No olvides agregar este archivo a `.gitignore` para no subir accidentalmente tus claves privadas a un repositorio público. ¡Asegúrate de mantener este archivo en un lugar absolutamente seguro! + +## Escribir Contratos Inteligentes + +Usaremos el contrato `1_Storage.sol` para este ejemplo. Crea un archivo llamado `Storage.sol` y guárdalo en la carpeta `contracts` con el siguiente código: + +```solidity +// SPDX-License-Identifier: GPL-3.0 + +pragma solidity >=0.7.0 <0.9.0; + +/** + * @title Storage + * @dev Store & retrieve value in a variable + */ +contract Storage { + + uint256 number; + + /** + * @dev Store value in variable + * @param num value to store + */ + function store(uint256 num) public { + number = num; + } + + /** + * @dev Return value + * @return value of 'number' + */ + function retrieve() public view returns (uint256){ + return number; + } +} +``` + +## Compilación de Contratos + +Ejecuta el siguiente comando para compilar el contrato: + +`npx hardhat compile` + +## Pruebas de Contratos + +Crea un nuevo archivo llamado `storage-test.js` con el siguiente código y guárdalo en la carpeta `test`: + +```javascript +const { expect } = require("chai") +const { ethers } = require("hardhat") + +describe("Storage", function () { + let storage; + + beforeEach(async function(){ + Storage = await ethers.getContractFactory("Storage"); + [operator] = await ethers.getSigners(); + storage = await Storage.connect(operator).deploy(); + await storage.deployed() + expect(await storage.retrieve()).to.equal(0n); + }) + describe("Test store function", function(){ + it("should work properly", async function(){ + let tx = await storage.store(100); + await tx.wait(); + expect(await storage.retrieve()).to.equal(100n); + }) + it("should throw", async function(){ + await expect( + storage.store(-1) + ).to.be.throws + }) + }) +}) +``` + +Para probar nuestro contrato `Storage.sol` en la red HardHat incorporada, ejecute el siguiente comando: + +`npx hardhat test --network hardhat` + +```javascript +$ npx hardhat test --network hardhat + + + Storage + Test store function + ✔ should work properly + ✔ should throw + + + 2 passing (1s) +``` + +## Implementación y interacción del contrato + +HardHat facilita el uso de la biblioteca `ethers.js` para implementar e interactuar con nuestros contratos inteligentes. Cree un nuevo archivo llamado `deploy-and-call.js` en la carpeta `scripts` que contenga el siguiente código: + +```javascript +// Requerimos el entorno de ejecución de Hardhat explícitamente aquí. Esto es opcional +// pero útil para ejecutar el script de manera independiente a través de `node