From 79bd1b3c68274e26ed28597a5df3d06339e8b714 Mon Sep 17 00:00:00 2001 From: Nadai <112663528+Nadai2010@users.noreply.github.com> Date: Fri, 26 Jan 2024 20:10:17 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20[i18n]=20Update=20Spanish=20(#31?= =?UTF-8?q?3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GianMarco --- po/es.po | 28621 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 18600 insertions(+), 10021 deletions(-) diff --git a/po/es.po b/po/es.po index 9631f5927..9c1d6bb3e 100644 --- a/po/es.po +++ b/po/es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: The Starknet Book\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2023-10-26 09:12+0100\n" +"PO-Revision-Date: 2024-01-25 20:49+0000\n" "Last-Translator: dami \n" "Language-Team: Spanish \n" "Language: es\n" @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.4.2\n" #: src/SUMMARY.md:1 msgid "The Starknet Book" @@ -33,198 +33,262 @@ msgid "Basic Installation" msgstr "Instalación básica" #: src/SUMMARY.md:14 -msgid "Compile, Deploy, Interact" -msgstr "Compilar, Desplegar, Interactuar" +msgid "Introduction: Starkli, Scarb and Katana" +msgstr "Introducción: Starkli, Scarb and Katana" #: src/SUMMARY.md:15 msgid "Scarb: The Package Manager" msgstr "Scarb: El Gestor de Paquetes" #: src/SUMMARY.md:16 -msgid "Starkli: A CLI interface 🚧" -msgstr "Starkli: Una interfaz CLI 🚧" - -#: src/SUMMARY.md:17 msgid "Katana: A Local Node" msgstr "Katana: Un Nodo Local" +#: src/SUMMARY.md:17 +msgid "Testnet Deployment" +msgstr "Despliegue de Testnet" + #: src/SUMMARY.md:18 -msgid "Starknet Devnet 🚧" -msgstr "Starknet Devnet 🚧" +msgid "Get started with Sepolia" +msgstr "Comience con Sepolia" #: src/SUMMARY.md:19 -msgid "Starknet-js: Javascript SDK" -msgstr "Starknet-js: Javascript SDK" +msgid "Starkli: Querying Starknet" +msgstr "Starkli: Consultando Starknet" -#: src/SUMMARY.md:20 src/SUMMARY.md:24 src/SUMMARY.md:51 -msgid "Examples" -msgstr "Ejemplos" +#: src/SUMMARY.md:20 +msgid "Example - Beginner: Connection Script" +msgstr "Ejemplo - Principiante: Sript de Conexión" #: src/SUMMARY.md:21 -msgid "Beginner - Counter UI" -msgstr "Principiante - Counter UI" +msgid "Starknet Devnet" +msgstr "Starknet Devnet" -#: src/SUMMARY.md:22 src/SUMMARY.md:25 -msgid "Beginner - ERC-20 UI" -msgstr "Principiante - ERC-20 UI" +#: src/SUMMARY.md:22 +msgid "Foundry Cast: Interacting with Starknet" +msgstr "Foundry Cast: Interactuando con Starknet" #: src/SUMMARY.md:23 +msgid "Example - Intermediate: Deployment Script" +msgstr "Ejemplo - Intermedio: Script de Implementación" + +#: src/SUMMARY.md:24 +msgid "Starknet-js: Javascript SDK" +msgstr "Starknet-js: Javascript SDK" + +#: src/SUMMARY.md:25 +msgid "Example - Beginner: Counter UI" +msgstr "Ejemplo - Principiante: Contador UI" + +#: src/SUMMARY.md:26 src/SUMMARY.md:28 +msgid "Example - Beginner: ERC-20 UI" +msgstr "Ejemplo - Principiante: ERC-20 UI" + +#: src/SUMMARY.md:27 msgid "Starknet-React: React Integration" msgstr "Starknet-React: Integración de React" -#: src/SUMMARY.md:26 -msgid "Intermediate - Million Dollar Homepage" -msgstr "Intermedio - Página de inicio de Million Dollar" +#: src/SUMMARY.md:29 +msgid "Example - Intermediate: Million Dollar Homepage" +msgstr "Ejemplo - Intermedio - Página de inicio de Million Dollar" -#: src/SUMMARY.md:27 +#: src/SUMMARY.md:30 msgid "Starknet-py: Python SDK 🚧" msgstr "Starknet-py: Python SDK 🚧" -#: src/SUMMARY.md:28 +#: src/SUMMARY.md:31 msgid "Starknet-rs: Rust SDK 🚧" msgstr "Starknet-py: Python SDK 🚧" -#: src/SUMMARY.md:29 -msgid "Foundry Cast: Interacting with Starknet" -msgstr "Foundry Cast: Interactuando con Starknet" - -#: src/SUMMARY.md:30 -msgid "Example - Deployment Script" -msgstr "Ejemplo - Script de Implantación" - -#: src/SUMMARY.md:31 +#: src/SUMMARY.md:32 msgid "Foundry Forge: Testing" msgstr "Foundry Forge: Testing" #: src/SUMMARY.md:33 +msgid "Security Considerations" +msgstr "Consideraciones de Seguridad" + +#: src/SUMMARY.md:34 +msgid "Security Tools" +msgstr "Herramientas de seguridad" + +#: src/SUMMARY.md:35 +msgid "Cairo-fuzzer" +msgstr "Cairo-fuzzer" + +#: src/SUMMARY.md:36 +msgid "Caracal" +msgstr "Caracal" + +#: src/SUMMARY.md:37 +msgid "Thoth" +msgstr "Thoth" + +#: src/SUMMARY.md:39 msgid "Architecture" msgstr "Arquitectura" -#: src/SUMMARY.md:36 +#: src/SUMMARY.md:42 msgid "Transactions" msgstr "Transacciones" -#: src/SUMMARY.md:37 +#: src/SUMMARY.md:43 +msgid "Transactions Lifecycle" +msgstr "Ciclo de vida de las transacciones" + +#: src/SUMMARY.md:44 msgid "Fee Mechanism" msgstr "Mecanismo de Fee" -#: src/SUMMARY.md:38 +#: src/SUMMARY.md:45 msgid "Sequencers" msgstr "Secuenciadores" -#: src/SUMMARY.md:39 +#: src/SUMMARY.md:46 +msgid "Madara 🚧" +msgstr "Madara 🚧" + +#: src/SUMMARY.md:47 msgid "Provers 🚧" -msgstr "Provers🚧" +msgstr "Provers 🚧" + +#: src/SUMMARY.md:48 +msgid "Nodes" +msgstr "Nodos" -#: src/SUMMARY.md:40 -msgid "Nodes 🚧" -msgstr "Nodos 🚧" +#: src/SUMMARY.md:49 +msgid "Example: Pathfinder Node" +msgstr "Ejemplo: Nodo Pathfinder" -#: src/SUMMARY.md:41 +#: src/SUMMARY.md:50 msgid "Layer 3 and App Chains 🚧 " msgstr "Layer 3 y App Chains 🚧 " -#: src/SUMMARY.md:42 -msgid "Solidity Verifier 🚧" -msgstr "Solidity Verifier 🚧" +#: src/SUMMARY.md:51 +msgid "Solidity Verifier" +msgstr "Verificador de Solidity" -#: src/SUMMARY.md:43 +#: src/SUMMARY.md:52 msgid "Decentralization 🚧" msgstr "Descentralización 🚧" -#: src/SUMMARY.md:45 +#: src/SUMMARY.md:53 +msgid "Smart Contracts 🚧" +msgstr "Smart Contracts 🚧" + +#: src/SUMMARY.md:54 +msgid "Deployment and Interaction" +msgstr "Implementación e Interacción" + +#: src/SUMMARY.md:55 +msgid "Important Methods" +msgstr "Métodos Importantes" + +#: src/SUMMARY.md:57 msgid "Account Abstraction" msgstr "Abstracción de Cuenta" -#: src/SUMMARY.md:48 +#: src/SUMMARY.md:60 msgid "Accounts" msgstr "Cuentas" -#: src/SUMMARY.md:49 -msgid "Hello, Account! 🚧" -msgstr "¡Hola Cuenta! 🚧" +#: src/SUMMARY.md:61 +msgid "Hello, Account Contract!" +msgstr "¡Hola, Contrato de Cuenta!" -#: src/SUMMARY.md:50 -msgid "Standard AccounT 🚧" -msgstr "Cuenta Estándar 🚧" +#: src/SUMMARY.md:62 +msgid "Standard Account Contract" +msgstr "Contrato de Cuenta Estándar" -#: src/SUMMARY.md:52 -msgid "Multicaller 🚧" -msgstr "Multicaller 🚧" +#: src/SUMMARY.md:63 +msgid "Deploy Standard Account" +msgstr "Implementar Cuenta Estándar" -#: src/SUMMARY.md:53 +#: src/SUMMARY.md:64 +msgid "Examples" +msgstr "Ejemplos" + +#: src/SUMMARY.md:65 +msgid "Multicaller" +msgstr "Multicaller" + +#: src/SUMMARY.md:66 msgid "Multisig 🚧" msgstr "Multisig 🚧" -#: src/SUMMARY.md:54 +#: src/SUMMARY.md:67 msgid "Auto-Payments 🚧" msgstr "Auto-Payments 🚧" -#: src/SUMMARY.md:55 +#: src/SUMMARY.md:68 msgid "Alternative Signature Schemes 🚧" msgstr "Esquemas de Firma Alternativos 🚧" -#: src/SUMMARY.md:59 +#: src/SUMMARY.md:69 +msgid "Web Wallet: seedless, multi-device wallet" +msgstr "Web Wallet: wallet multidispositivo sin semillas" + +#: src/SUMMARY.md:73 msgid "STARKs 🚧" msgstr "STARKs 🚧" -#: src/SUMMARY.md:60 +#: src/SUMMARY.md:74 msgid "Basics 🚧" msgstr "Básicos 🚧" -#: src/SUMMARY.md:61 +#: src/SUMMARY.md:75 msgid "Math Primer 🚧" msgstr "Manual de Matemáticas 🚧" -#: src/SUMMARY.md:62 +#: src/SUMMARY.md:76 msgid "Number Theory 🚧" msgstr "Teoría de Números 🚧" -#: src/SUMMARY.md:63 +#: src/SUMMARY.md:77 msgid "Geometry 🚧" msgstr "Geometría 🚧" -#: src/SUMMARY.md:64 +#: src/SUMMARY.md:78 msgid "Cryptographic Primitives 🚧" msgstr "Primitivas Criptográficas 🚧" -#: src/SUMMARY.md:65 +#: src/SUMMARY.md:79 msgid "Arithimization 🚧" msgstr "Aritimización 🚧" -#: src/SUMMARY.md:66 +#: src/SUMMARY.md:80 msgid "Low Degree Testing 🚧" msgstr "Pruebas de Bajo Grado 🚧" -#: src/SUMMARY.md:67 +#: src/SUMMARY.md:81 msgid "FRI Protocol 🚧" msgstr "FRI 🚧" -#: src/SUMMARY.md:68 +#: src/SUMMARY.md:82 msgid "Efficient STARKs" msgstr "STARK Eficientes" -#: src/SUMMARY.md:69 +#: src/SUMMARY.md:83 msgid "STARKs Protocol (Python) 🚧" msgstr "Protocolo STARK (Python) 🚧" -#: src/SUMMARY.md:70 src/SUMMARY.md:75 +#: src/SUMMARY.md:84 src/SUMMARY.md:89 msgid "Trace/Low Degree Extension 🚧" msgstr "Traza/Extensión de Bajo Grado 🚧" -#: src/SUMMARY.md:71 src/SUMMARY.md:76 +#: src/SUMMARY.md:85 src/SUMMARY.md:90 msgid "Constraints 🚧" msgstr "Restricciones 🚧" -#: src/SUMMARY.md:72 src/SUMMARY.md:77 +#: src/SUMMARY.md:86 src/SUMMARY.md:91 msgid "FRI Commitments 🚧" msgstr "Compromisos de FRI 🚧" -#: src/SUMMARY.md:73 src/SUMMARY.md:78 +#: src/SUMMARY.md:87 src/SUMMARY.md:92 msgid "Query Phase 🚧" msgstr "Fase de Consulta 🚧" -#: src/SUMMARY.md:74 +#: src/SUMMARY.md:88 msgid "STARKs Protocol (Rust) 🚧" msgstr "Protocolo STARK (Rust) 🚧" @@ -291,32 +355,32 @@ msgstr "**Títulos de los Capítulos**" #: src/title-page.md:27 msgid "" "| Chapter | " -"Description " +"Description " "|\n" "| ------------------------ | " -"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- " +"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- " "|\n" "| 1: Starknet Introduction | Delve into the fundamental concepts of Starknet and acquaint yourself with the deployment of smart " -"contracts. |\n" -"| 2: Starknet Tooling | Familiarize yourself with vital tools, such as Starknet-Foundry and Hardhat, and explore how languages like Javascript, Python, and Rust can be " +"contracts. |\n" +"| 2: Starknet Tooling | Familiarize yourself with vital tools, such as Starkli, Katana, Scarb, Starknet-Foundry and more. Explore how languages like Javascript, Python, and Rust can be " "leveraged for Starknet interactions. |\n" "| 3: Starknet Architecture | Uncover Starknet’s core structure, gaining insights into the transaction lifecycle and the interplay between the Sequencer, Prover, and " -"Nodes. |\n" +"Nodes. |\n" "| 4: Account Abstraction | Delve deep into Starknet’s unique approach to user accounts, and master the art of crafting custom " -"accounts. |\n" +"accounts. |\n" "| 5: STARKs | Dive into the intricacies of STARKs and their pivotal role in shaping Starknet’s " -"landscape. |" +"landscape. |" msgstr "" "| Capítulo | Descripción |\n" -"| ------------------------ | -------------------------------------------------- -------------------------------------------------- " -"-------------------------------------------------- ----------------------- |\n" -"| 1: Introducción a Starknet | Profundice en los conceptos fundamentales de Starknet y familiarícese con el despliegue de contratos inteligentes. |\n" -"| 2: Herramientas Starknet | Familiarícese con herramientas vitales, como Starknet-Foundry y Hardhat, y explore cómo se pueden aprovechar lenguajes como Javascript, Python y Rust " +"| ------------------------ | -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- " +"----------------------------------------- |\n" +"| 1: Introducción a Starknet | Profundice en los conceptos fundamentales de Starknet y familiarícese con el despliegue de smart contracts.|\n" +"| 2: Herramientas Starknet | Familiarícese con herramientas vitales, como Starkli, Katana, Scarb, Starknet-Foundry y más. Explore cómo se pueden aprovechar lenguajes como Javascript, Python y Rust " "para las interacciones con Starknet. |\n" -"| 3: Arquitectura Starknet | Descubra la estructura central de Starknet y obtenga información sobre el ciclo de vida de las transacciones y la interacción entre el " -"Secuenciador, el Prover y los nodos. |\n" -"| 4: Abstracción de cuenta | Profundice en el enfoque único de Starknet para las cuentas de usuario y domine el arte de crear cuentas personalizadas. |\n" -"| 5: STARK | Sumérgete en las complejidades de los STARK y su papel fundamental en la configuración del panorama de Starknet. |" +"| 3: Arquitectura Starknet | Descubra la estructura central de Starknet y obtenga información sobre el ciclo de vida de las transacciones y la interacción entre el secuenciador, el prover y los " +"nodos. |\n" +"| 4: Abstracción de Cuenta | Profundice en el enfoque único de Starknet para las cuentas de usuario y domine el arte de crear cuentas personalizadas. |\n" +"| 5: STARK | Sumérgete en las complejidades de los STARK y su papel fundamental en la configuración del paisaje de Starknet. |" #: src/title-page.md:35 msgid "# Where to Start?" @@ -419,12 +483,12 @@ msgstr "" #: src/title-page.md:80 msgid "" "For detailed contribution guidelines, visit the [Contributors\n" -"Guide](https://github.com/starknet-edu/starknetbook/blob/main/CONTRIBUTING.adoc).\n" +"Guide](https://github.com/starknet-edu/starknetbook/blob/main/README.md#contribution).\n" "Every contribution counts. Your skills and passion will help make this\n" "book an invaluable tool." msgstr "" "Para obtener pautas de contribución detalladas, visite [Contributors\n" -"Guía](https://github.com/starknet-edu/starknetbook/blob/main/CONTRIBUTING.adoc).\n" +"Guía](https://github.com/starknet-edu/starknetbook/blob/main/README.md#contribution).\n" "Cada contribución cuenta. Tus habilidades y pasión te ayudarán a lograrlo.\n" "Reserve una herramienta invaluable." @@ -478,53 +542,45 @@ msgstr "" #: src/title-page.md:107 msgid "" -"1. **Cairo Book**: A comprehensive guide to Cairo, the programming\n" -" language for Starknet smart contracts. You can access it\n" -" [here](https://book.cairo-lang.org/).\n" -"\n" -"2. **Starklings**: A resource specifically designed to guide you\n" +"1. **Starklings**: A resource specifically designed to guide you\n" " through learning Cairo programming, ensuring that you reach a\n" " proficient level. You can access it\n" " [here](https://github.com/shramee/starklings-cairo1).\n" "\n" -"3. **Starknet Community Forum**: An online platform where you can\n" +"2. **Starknet Community Forum**: An online platform where you can\n" " engage in discussions about the latest developments in Starknet.\n" " Join the conversation [here](https://community.starknet.io/).\n" "\n" -"4. **Starknet Documentation**: You can browse through the documentation\n" +"3. **Starknet Documentation**: You can browse through the documentation\n" " [here](https://docs.starknet.io/).\n" "\n" -"5. **Cairo Documentation**: Explore it\n" +"4. **Cairo Documentation**: Explore it\n" " [here](https://www.cairo-lang.org/docs).\n" "\n" -"6. **Starknet Developer Telegram (English)**: A community for\n" +"5. **Starknet Developer Telegram (English)**: A community for\n" " English-speaking Starknet developers. This is a great platform for\n" " networking, sharing ideas, and troubleshooting together. Join us on\n" " Telegram [here](https://t.me/starknetna)." msgstr "" -"1. **Libro de El Cairo**: Una guía completa de Cairo, la programación\n" -" lenguaje para contratos inteligentes de Starknet. Puedes acceder a él\n" -" [aquí](https://book.cairo-lang.org/).\n" -"\n" -"2. **Starklings**: un recurso diseñado específicamente para guiarte\n" +"1. **Starklings**: Un recurso diseñado específicamente para guiarte\n" " a través del aprendizaje de la programación de Cairo, asegurándose de que alcance un\n" " nivel competente. Puedes acceder a él\n" " [aquí](https://github.com/shramee/starklings-cairo1).\n" "\n" -"3. **Foro de la comunidad Starknet**: una plataforma en línea donde puedes\n" +"2. **Foro de la comunidad Starknet**: Una plataforma en línea donde puedes\n" " participar en debates sobre los últimos desarrollos en Starknet.\n" " Únase a la conversación [aquí](https://community.starknet.io/).\n" "\n" -"4. **Documentación de Starknet**: Puedes navegar a través de la documentación\n" +"3. **Documentación de Starknet**: Puedes navegar a través de la documentación\n" " [aquí](https://docs.starknet.io/).\n" "\n" -"5. **Documentación de Cairo**: explórela\n" +"4. **Documentación de Cairo**: Explórela\n" " [aquí](https://www.cairo-lang.org/docs).\n" "\n" -"6. **Starknet Developer Telegram (inglés)**: Una comunidad para\n" +"5. **Starknet Developer Telegram (inglés)**: una comunidad para\n" " Desarrolladores Starknet de habla inglesa. Esta es una gran plataforma para\n" " establecer contactos, compartir ideas y solucionar problemas juntos. Únete a nosotros\n" -" Telegram [aquí](https://t.me/starknetna)." +" Telegrama [aquí](https://t.me/starknetna)." #: src/ch00-00-introduction.md:1 msgid "# The Starknet Network" @@ -536,18 +592,17 @@ msgstr "## Preámbulo" #: src/ch00-00-introduction.md:5 msgid "" -"Historically, societal roles like currency, property rights, and social status titles have been governed by _protocols_ and _registries_. Their value stems from a widely " -"accepted understanding of their integrity. These functions have predominantly been overseen by centralized entities prone to challenges such as corruption, agency conflicts, " -"and exclusion ([Eli Ben-Sasson, Bareli, Brandt, Volokh, 2023](https://hackmd.io/@Elibensasson/ryMelVulp))." +"Historically, societal roles like currency, property rights, and social status titles have been governed by _protocols_ and _registries_. Their value stems from a widely accepted understanding of " +"their integrity. These functions have predominantly been overseen by centralized entities prone to challenges such as corruption, agency conflicts, and exclusion ([Eli Ben-Sasson, Bareli, Brandt, " +"Volokh, 2023](https://hackmd.io/@Elibensasson/ryMelVulp))." msgstr "" -"Históricamente, los roles sociales como la moneda, los derechos de propiedad y los títulos de estatus social han estado gobernados por protocolos y registros. Su valor surge " -"de una comprensión ampliamente aceptada de su integridad. Estas funciones han sido supervisadas predominantemente por entidades centralizadas propensas a desafíos como la " -"corrupción, los conflictos de agencia y la exclusión ([Eli Ben-Sasson, Bareli, Brandt, Volokh, 2023](https://hackmd.io/@Elibensasson/ryMelVulp) )." +"Históricamente, los roles sociales como la moneda, los derechos de propiedad y los títulos de estatus social han estado gobernados por protocolos y registros. Su valor surge de una comprensión " +"ampliamente aceptada de su integridad. Estas funciones han sido supervisadas predominantemente por entidades centralizadas propensas a desafíos como la corrupción, los conflictos de agencia y la " +"exclusión ([Eli Ben-Sasson, Bareli, Brandt, Volokh, 2023](https://hackmd.io/@Elibensasson/ryMelVulp) )." #: src/ch00-00-introduction.md:7 msgid "Satoshi's creation, Bitcoin, introduced a novel approach for these functions, termed an _integrity web_. This is an infrastructure for societal roles that:" -msgstr "" -"La creación de Satoshi, Bitcoin, introdujo un enfoque novedoso para estas funciones, denominado _red de integridad_. Se trata de una infraestructura para roles sociales que:" +msgstr "La creación de Satoshi, Bitcoin, introdujo un enfoque novedoso para estas funciones, denominado _red de integridad_. Se trata de una infraestructura para roles sociales que:" #: src/ch00-00-introduction.md:9 msgid "" @@ -561,14 +616,13 @@ msgstr "" #: src/ch00-00-introduction.md:13 msgid "" -"While Bitcoin addressed monetary functions, Ethereum expanded this to include any function that can be defined by computer programming. Both faced the challenge of balancing " -"scalability with decentralization. These integrity webs have often favored inclusivity over capacity, ensuring even those with limited resources can authenticate the " -"system's integrity. Yet, this means they struggle to meet global demand." +"While Bitcoin addressed monetary functions, Ethereum expanded this to include any function that can be defined by computer programming. Both faced the challenge of balancing scalability with " +"decentralization. These integrity webs have often favored inclusivity over capacity, ensuring even those with limited resources can authenticate the system's integrity. Yet, this means they " +"struggle to meet global demand." msgstr "" -"Mientras que Bitcoin abordó las funciones monetarias, Ethereum amplió esto para incluir cualquier función que pueda definirse mediante programación informática. Ambos " -"enfrentaron el desafío de equilibrar la escalabilidad con la descentralización. Estas redes de integridad a menudo han favorecido la inclusión sobre la capacidad, asegurando " -"que incluso aquellos con recursos limitados puedan autenticar la integridad del sistema. Sin embargo, esto significa que tienen dificultades para satisfacer la demanda " -"global." +"Mientras que Bitcoin abordó las funciones monetarias, Ethereum amplió esto para incluir cualquier función que pueda definirse mediante programación informática. Ambos enfrentaron el desafío de " +"equilibrar la escalabilidad con la descentralización. Estas redes de integridad a menudo han favorecido la inclusión sobre la capacidad, asegurando que incluso aquellos con recursos limitados " +"puedan autenticar la integridad del sistema. Sin embargo, esto significa que tienen dificultades para satisfacer la demanda global." #: src/ch00-00-introduction.md:15 msgid "## Defining \"Blockchain\"" @@ -576,36 +630,35 @@ msgstr "## Definición de \"Blockchain" #: src/ch00-00-introduction.md:17 msgid "" -"In the ever-evolving realm of technology, defining a term as multifaceted as \"Blockchain\" can be challenging. Based on current understandings and applications, a " -"Blockchain can be characterized by the following three properties ([Eli Ben-Sasson, 2023](https://twitter.com/EliBenSasson/status/1709272086504485265)):" +"In the ever-evolving realm of technology, defining a term as multifaceted as \"Blockchain\" can be challenging. Based on current understandings and applications, a Blockchain can be characterized " +"by the following three properties ([Eli Ben-Sasson, 2023](https://twitter.com/EliBenSasson/status/1709272086504485265)):" msgstr "" -"En el siempre cambiante ámbito de la tecnología, definir un término tan polifacético como \"Blockchain\" puede resultar complicado. Según los conocimientos y aplicaciones " -"actuales, una Blockchain puede caracterizarse por las tres propiedades siguientes ([Eli Ben-Sasson, 2023](https://twitter.com/EliBenSasson/status/1709272086504485265)):" +"En el siempre cambiante ámbito de la tecnología, definir un término tan polifacético como \"Blockchain\" puede resultar complicado. Según los conocimientos y aplicaciones actuales, una Blockchain " +"puede caracterizarse por las tres propiedades siguientes ([Eli Ben-Sasson, 2023](https://twitter.com/EliBenSasson/status/1709272086504485265)):" #: src/ch00-00-introduction.md:19 msgid "" -"1. **Public Protocol:** The foundation of a Blockchain rests upon a protocol that is openly available. This transparency ensures that any interested party can understand its " -"workings, fostering trust and enabling wider adoption.\n" -"2. **Open P2P Network:** Instead of relying on a centralized entity, a Blockchain operates over a peer-to-peer (P2P) network. This decentralized approach ensures that " -"operations are distributed across various participants or nodes, making the system more resilient to failures and censorship.\n" -"3. **Value Distribution:** Central to the Blockchain's operation is the way it rewards its operators. The system autonomously distributes value in a manner that is wide-" -"ranging and equitable. This incentivization not only motivates participants to maintain the system's integrity but also ensures a broader societal consensus." -msgstr "" -"1. **Protocolo público:** La base de una Blockchain es un protocolo que está disponible abiertamente. Esta transparencia garantiza que cualquier parte interesada pueda " -"entender su funcionamiento, fomentando la confianza y permitiendo una adopción más amplia.\n" -"2. **Red abierta P2P:** En lugar de depender de una entidad centralizada, una Blockchain funciona a través de una red entre pares (P2P). Este enfoque descentralizado " -"garantiza que las operaciones se distribuyan entre varios participantes o nodos, lo que hace que el sistema sea más resistente a los fallos y la censura.\n" -"3. **Distribución de valor:** Un aspecto central del funcionamiento de la Blockchain es la forma en que recompensa a sus operadores. El sistema distribuye valor de forma " -"autónoma, amplia y equitativa. Esta incentivación no sólo motiva a los participantes a mantener la integridad del sistema, sino que también garantiza un consenso social más " -"amplio." +"1. **Public Protocol:** The foundation of a Blockchain rests upon a protocol that is openly available. This transparency ensures that any interested party can understand its workings, fostering " +"trust and enabling wider adoption.\n" +"2. **Open P2P Network:** Instead of relying on a centralized entity, a Blockchain operates over a peer-to-peer (P2P) network. This decentralized approach ensures that operations are distributed " +"across various participants or nodes, making the system more resilient to failures and censorship.\n" +"3. **Value Distribution:** Central to the Blockchain's operation is the way it rewards its operators. The system autonomously distributes value in a manner that is wide-ranging and equitable. This " +"incentivization not only motivates participants to maintain the system's integrity but also ensures a broader societal consensus." +msgstr "" +"1. **Protocolo público:** La base de una Blockchain es un protocolo que está disponible abiertamente. Esta transparencia garantiza que cualquier parte interesada pueda entender su funcionamiento, " +"fomentando la confianza y permitiendo una adopción más amplia.\n" +"2. **Red abierta P2P:** En lugar de depender de una entidad centralizada, una Blockchain funciona a través de una red entre pares (P2P). Este enfoque descentralizado garantiza que las operaciones " +"se distribuyan entre varios participantes o nodos, lo que hace que el sistema sea más resistente a los fallos y la censura.\n" +"3. **Distribución de valor:** Un aspecto central del funcionamiento de la Blockchain es la forma en que recompensa a sus operadores. El sistema distribuye valor de forma autónoma, amplia y " +"equitativa. Esta incentivación no sólo motiva a los participantes a mantener la integridad del sistema, sino que también garantiza un consenso social más amplio." #: src/ch00-00-introduction.md:23 msgid "" -"While these properties capture the essence of many Blockchains, the term's definition might need refinement as the technology matures and finds new applications. Engaging in " -"continuous dialogue and revisiting definitions will be crucial in this dynamic landscape." +"While these properties capture the essence of many Blockchains, the term's definition might need refinement as the technology matures and finds new applications. Engaging in continuous dialogue and " +"revisiting definitions will be crucial in this dynamic landscape." msgstr "" -"Aunque estas propiedades captan la esencia de muchas Blockchains, la definición del término podría necesitar refinamiento a medida que la tecnología madura y encuentra " -"nuevas aplicaciones. En este panorama dinámico, será crucial entablar un diálogo continuo y revisar las definiciones." +"Aunque estas propiedades captan la esencia de muchas Blockchains, la definición del término podría necesitar refinamiento a medida que la tecnología madura y encuentra nuevas aplicaciones. En este " +"panorama dinámico, será crucial entablar un diálogo continuo y revisar las definiciones." #: src/ch00-00-introduction.md:25 msgid "## Starknet Definition" @@ -613,22 +666,21 @@ msgstr "## Definición de Starknet" #: src/ch00-00-introduction.md:27 msgid "" -"Starknet is a Layer-2 network that makes Ethereum transactions faster, cheaper, and more secure using zk-STARKs technology. Think of it as a boosted layer on top of " -"Ethereum, optimized for speed and cost." +"Starknet is a Layer-2 network that makes Ethereum transactions faster, cheaper, and more secure using zk-STARKs technology. Think of it as a boosted layer on top of Ethereum, optimized for speed " +"and cost." msgstr "" -"Starknet es una red de capa 2 que hace que las transacciones de Ethereum sean más rápidas, baratas y seguras utilizando la tecnología de zk-STARK. Piense en ella como una " -"capa reforzada sobre Ethereum, optimizada para la velocidad y el coste." +"Starknet es una red de capa 2 que hace que las transacciones de Ethereum sean más rápidas, baratas y seguras utilizando la tecnología de zk-STARK. Piense en ella como una capa reforzada sobre " +"Ethereum, optimizada para la velocidad y el coste." #: src/ch00-00-introduction.md:29 msgid "" -"Starknet bridges the gap between scalability and broad consensus. It integrates a mathematical framework to navigate the balance between capacity and inclusivity. Its " -"integrity hinges on the robustness of succinct, transparent proofs of computational integrity. This method lets powerful operators enhance Starknet's capacity, ensuring " -"everyone can authenticate Starknet's integrity using universally accessible tools ([Eli Ben-Sasson, Bareli, Brandt, Volokh, 2023](https://hackmd.io/@Elibensasson/ryMelVulp))." +"Starknet bridges the gap between scalability and broad consensus. It integrates a mathematical framework to navigate the balance between capacity and inclusivity. Its integrity hinges on the " +"robustness of succinct, transparent proofs of computational integrity. This method lets powerful operators enhance Starknet's capacity, ensuring everyone can authenticate Starknet's integrity using " +"universally accessible tools ([Eli Ben-Sasson, Bareli, Brandt, Volokh, 2023](https://hackmd.io/@Elibensasson/ryMelVulp))." msgstr "" -"Starknet tiende un puente entre la escalabilidad y el amplio consenso. Integra un marco matemático para navegar por el equilibrio entre capacidad e inclusividad. Su " -"integridad depende de la solidez de las pruebas sucintas y transparentes de integridad computacional. Este método permite a los operadores potentes mejorar la capacidad de " -"Starknet, garantizando que todo el mundo pueda autenticar la integridad de Starknet utilizando herramientas universalmente accesibles ([Eli Ben-Sasson, Bareli, Brandt, " -"Volokh, 2023](https://hackmd.io/@Elibensasson/ryMelVulp))." +"Starknet tiende un puente entre la escalabilidad y el amplio consenso. Integra un marco matemático para navegar por el equilibrio entre capacidad e inclusividad. Su integridad depende de la solidez " +"de las pruebas sucintas y transparentes de integridad computacional. Este método permite a los operadores potentes mejorar la capacidad de Starknet, garantizando que todo el mundo pueda autenticar " +"la integridad de Starknet utilizando herramientas universalmente accesibles ([Eli Ben-Sasson, Bareli, Brandt, Volokh, 2023](https://hackmd.io/@Elibensasson/ryMelVulp))." #: src/ch00-00-introduction.md:31 msgid "## Starknet’s Mission" @@ -650,8 +702,8 @@ msgstr "La ética de Starknet se basa en principios fundamentales ([Eli Ben-Sass msgid "" "- **Lasting Broadness.** Starknet continuously resists power consolidation. Key points include:\n" "\n" -" - Broad power distribution underpins Starknet's legitimacy and must persist across operations and decision-making. While centralized operation may be necessary at times, " -"it should be short-lived.\n" +" - Broad power distribution underpins Starknet's legitimacy and must persist across operations and decision-making. While centralized operation may be necessary at times, it should be short-" +"lived.\n" " - Starknet's protocol and governance should always be open and transparent.\n" " - Governance should bolster inclusivity, with a flexible structure that can evolve to ensure enduring inclusivity.\n" "\n" @@ -660,13 +712,13 @@ msgid "" " - The objectives and ethos of functions on Starknet lie with their creators.\n" " - **Censorship resistance:** Starknet remains agnostic to the nature and meaning of user transactions.\n" "\n" -"- **Individual Empowerment.** At its core, Starknet thrives on a well-informed and autonomous user base. This is achieved by fostering a culture rooted in its core mission " -"and values, with a strong emphasis on education." +"- **Individual Empowerment.** At its core, Starknet thrives on a well-informed and autonomous user base. This is achieved by fostering a culture rooted in its core mission and values, with a strong " +"emphasis on education." msgstr "" "- **Amplitud duradera.** Starknet se resiste continuamente a la consolidación de poder. Los puntos clave incluyen:\n" "\n" -" - La amplia distribución del poder sustenta la legitimidad de Starknet y debe persistir en todas las operaciones y toma de decisiones. Si bien en ocasiones puede ser " -"necesario el funcionamiento centralizado, debería ser de corta duración.\n" +" - La amplia distribución del poder sustenta la legitimidad de Starknet y debe persistir en todas las operaciones y toma de decisiones. Si bien en ocasiones puede ser necesario el funcionamiento " +"centralizado, debería ser de corta duración.\n" " - El protocolo y la gobernanza de Starknet siempre deben ser abiertos y transparentes.\n" " - La gobernanza debería reforzar la inclusión, con una estructura flexible que pueda evolucionar para garantizar una inclusión duradera.\n" "\n" @@ -675,8 +727,8 @@ msgstr "" " - Los objetivos y el espíritu de las funciones de Starknet recaen en sus creadores.\n" " - **Resistencia a la censura:** Starknet permanece agnóstico respecto de la naturaleza y el significado de las transacciones de los usuarios.\n" "\n" -"- **Empoderamiento individual.** En esencia, Starknet prospera con una base de usuarios autónomos y bien informados. Esto se logra fomentando una cultura arraigada en su " -"misión y valores fundamentales, con un fuerte énfasis en la educación." +"- **Empoderamiento individual.** En esencia, Starknet prospera con una base de usuarios autónomos y bien informados. Esto se logra fomentando una cultura arraigada en su misión y valores " +"fundamentales, con un fuerte énfasis en la educación." #: src/ch00-00-introduction.md:52 msgid "## Key Features" @@ -715,8 +767,8 @@ msgstr "" " (EVM) y crear un nuevo paradigma para aplicaciones descentralizadas." #: src/ch00-00-introduction.md:69 -msgid "Here some of them:" -msgstr "Aquí algunas de ellas:" +msgid "Here are some of them:" +msgstr "Estas son algunas de ellas:" #: src/ch00-00-introduction.md:71 msgid "" @@ -775,38 +827,10 @@ msgstr "" "convenientemente." #: src/ch00-00-introduction.md:96 -msgid "### Why Choose Cairo?" -msgstr "### ¿Por qué elegir Cairo?" - -#: src/ch00-00-introduction.md:98 -msgid "" -"Cairo is designed for _Provable Computation,_ a new paradigm that lets\n" -"programs prove their correctness without re-running them. Here’s why it\n" -"stands out:" -msgstr "" -"Cairo está diseñado para _Computación Demostrable_, un nuevo paradigma que permite\n" -"que los programas demuestran su corrección sin volver a ejecutarlos. He aquí por qué\n" -"destaca:" - -#: src/ch00-00-introduction.md:102 -msgid "" -"- Purpose-Built: Designed specifically for smart contracts.\n" -"\n" -"- No EVM Limits: Goes beyond what the Ethereum Virtual Machine can do.\n" -"\n" -"- Flexibility: Uses traits for more flexibility than inheritance." -msgstr "" -"- **Purpose-Built: :** Diseñado específicamente para smart contracts.\n" -"\n" -"- **Sin límites de EVM:** Va más allá de lo que puede hacer la máquina virtual Ethereum.\n" -"\n" -"- **Flexibilidad:** Utiliza rasgos para mayor flexibilidad que la herencia." - -#: src/ch00-00-introduction.md:108 msgid "## Governance" msgstr "## Gobernanza" -#: src/ch00-00-introduction.md:110 +#: src/ch00-00-introduction.md:98 msgid "" "The Starknet Foundation oversees Starknet’s governance. Its duties\n" "include:" @@ -814,7 +838,7 @@ msgstr "" "La Fundación Starknet supervisa la gobernanza de Starknet. Sus deberes\n" "incluyen:" -#: src/ch00-00-introduction.md:113 +#: src/ch00-00-introduction.md:101 msgid "" "- Managing Starknet’s development and operations\n" "\n" @@ -828,7 +852,7 @@ msgstr "" "\n" "- Establecer reglas para mantener la integridad de la red" -#: src/ch00-00-introduction.md:119 +#: src/ch00-00-introduction.md:107 msgid "" "Our focus is on technical input and debate for improving the protocol.\n" "While we value all perspectives, it’s often the technical insights that\n" @@ -838,7 +862,7 @@ msgstr "" "Si bien valoramos todas las perspectivas, a menudo son los conocimientos técnicos los que\n" "guíanos hacia adelante." -#: src/ch00-00-introduction.md:123 +#: src/ch00-00-introduction.md:111 msgid "" "Members can influence Starknet by voting on changes. Here’s the process:\n" "A new version is tested on the Goerli Testnet. Members then have six\n" @@ -850,19 +874,19 @@ msgstr "" "días para revisarlo. Se hace una propuesta de instantánea y la comunidad vota.\n" "Una mayoría de votos _SÍ_ significa una actualización a Mainnet." -#: src/ch00-00-introduction.md:128 +#: src/ch00-00-introduction.md:116 msgid "In short, governance is key to Starknet’s evolution." msgstr "En resumen, la gobernanza es clave para la evolución de Starknet." -#: src/ch00-00-introduction.md:130 +#: src/ch00-00-introduction.md:118 msgid "To propose an improvement, create a SNIP." msgstr "Para proponer una mejora, cree un SNIP." -#: src/ch00-00-introduction.md:132 +#: src/ch00-00-introduction.md:120 msgid "### SNIP: Starknet Improvement Proposals" msgstr "### SNIP: Starknet Improvement Proposals" -#: src/ch00-00-introduction.md:134 +#: src/ch00-00-introduction.md:122 msgid "" "SNIP is short for Starknet Improvement Proposal. It’s essentially a\n" "blueprint that details proposed enhancements or changes to the Starknet\n" @@ -886,11 +910,11 @@ msgstr "" "los SNIP se pueden encontrar en [este\n" "repositorio](https://github.com/starknet-io/SNIPs)." -#: src/ch00-00-introduction.md:145 +#: src/ch00-00-introduction.md:133 msgid "SNIPs serve three crucial roles:" msgstr "Los SNIP cumplen tres funciones cruciales:" -#: src/ch00-00-introduction.md:147 +#: src/ch00-00-introduction.md:135 msgid "" "1. They are the main avenue for proposing new features or changes.\n" "\n" @@ -908,7 +932,7 @@ msgstr "" "3. Documentan el proceso de toma de decisiones y ofrecen una visión\n" " histórica de cómo ha evolucionado Starknet." -#: src/ch00-00-introduction.md:155 +#: src/ch00-00-introduction.md:143 msgid "" "Because SNIPs are stored as text files in a [version-controlled\n" "repository](https://github.com/starknet-io/SNIPs), you can easily track\n" @@ -918,7 +942,7 @@ msgstr "" "repository](https://github.com/starknet-io/SNIPs), puede rastrear fácilmente los\n" "cambios y comprender la historia de las propuestas." -#: src/ch00-00-introduction.md:159 +#: src/ch00-00-introduction.md:147 msgid "" "For those who are building on Starknet, SNIPs aren’t just\n" "suggestions—they’re a roadmap. It’s beneficial for implementers to keep\n" @@ -930,99 +954,69 @@ msgstr "" "una lista de los SNIP que han ejecutado. Esta transparencia ayuda a los usuarios\n" "medir el estado de una implementación o biblioteca de software en particular." -#: src/ch00-00-introduction.md:164 -msgid "## Learning Resources" -msgstr "## Recursos de aprendizaje" - -#: src/ch00-00-introduction.md:166 -msgid "For deeper insights into Starknet and Cairo:" -msgstr "Para obtener información más detallada sobre Starknet y Cairo:" - -#: src/ch00-00-introduction.md:168 -msgid "" -"- [The Starknet Book](https://book.starknet.io): For mastering\n" -" Starknet\n" -"\n" -"- [The Cairo Book](https://cairo-book.github.io/): For mastering Cairo\n" -"\n" -"- [Starklings](https://github.com/shramee/starklings-cairo1):\n" -" Practical tutorials and examples" -msgstr "" -"- [El libro de Starknet](https://book.starknet.io): Para masterizar\n" -" Starknet\n" -"\n" -"- [El libro de Cairo](https://cairo-book.github.io/): Para dominar Cairo\n" -"\n" -"- [Starklings](https://github.com/shramee/starklings-cairo1):\n" -" Tutoriales prácticos y ejemplos" - -#: src/ch00-00-introduction.md:176 src/ch02-08-starknet-react.md:361 src/ch02-11-foundry-cast.md:502 src/ch03-00-architecture.md:251 src/ch03-01-transactions.md:102 -#: src/ch03-02-sequencers.md:216 src/ch03-03-provers.md:243 src/ch04-00-account-abstraction.md:242 -msgid "## Conclusion" -msgstr "## Conclusión" - -#: src/ch00-00-introduction.md:178 -msgid "" -"In decentralized technology, Starknet offers a solution to challenges that previous systems encountered. It's based on established _protocols_ and _registries_, following " -"the initial concepts introduced by figures such as Satoshi. Through a specific mathematical method, Starknet seeks a balance between scalability and consensus. As this " -"technology progresses, Starknet adheres to principles of inclusivity, neutrality, and user empowerment. It's poised for continuous adaptation and improvement in the field." -msgstr "" -"En tecnología descentralizada, Starknet ofrece una solución a los desafíos que encontraron los sistemas anteriores. Se basa en _protocolos_ y _registros_ establecidos, " -"siguiendo los conceptos iniciales introducidos por figuras como Satoshi. A través de un método matemático específico, Starknet busca el equilibrio entre escalabilidad y " -"consenso. A medida que avanza esta tecnología, Starknet se adhiere a principios de inclusión, neutralidad y empoderamiento del usuario. Está preparado para una adaptación y " -"mejora continuas en el campo." - #: src/ch01-00-getting-started.md:1 msgid "# Getting Started" msgstr "# Primeros Pasos" #: src/ch01-00-getting-started.md:3 msgid "" -"Starknet is a scalable Layer-2 solution on Ethereum. This guide will walk you through the process of deploying and interacting with your first Starknet smart contract using " -"the Cairo programming language, a language tailored for creating validity proofs and that Starknet uses. For seasoned developers looking to understand the core concepts and " -"get hands-on experience, this guide offers step-by-step instructions and essential details." +"Starknet is a scalable Layer-2 solution on Ethereum. This guide will walk you through the process of deploying and interacting with your first Starknet smart contract using the Cairo programming " +"language, a language tailored for creating validity proofs and that Starknet uses. For seasoned developers looking to understand the core concepts and get hands-on experience, this guide offers " +"step-by-step instructions and essential details." msgstr "" -"Starknet es una solución escalable de Capa 2 en Ethereum. Esta guía lo guiará a través del proceso de implementación e interacción con su primer smart contract de Starknet " -"utilizando el lenguaje de programación Cairo, un lenguaje diseñado para crear pruebas de validez y que utiliza Starknet. Para desarrolladores experimentados que buscan " -"comprender los conceptos básicos y adquirir experiencia práctica, esta guía ofrece instrucciones paso a paso y detalles esenciales." +"Starknet es una solución escalable de Capa 2 en Ethereum. Esta guía lo guiará a través del proceso de implementación e interacción con su primer smart contract de Starknet utilizando el lenguaje de " +"programación Cairo, un lenguaje diseñado para crear pruebas de validez y que utiliza Starknet. Para desarrolladores experimentados que buscan comprender los conceptos básicos y adquirir experiencia " +"práctica, esta guía ofrece instrucciones paso a paso y detalles esenciales." #: src/ch01-00-getting-started.md:5 msgid "We will use the Starknet Remix Plugin to compile, deploy and interact with our smart contract. It is a great tool to get started with Starknet development." -msgstr "" -"Usaremos el complemento Starknet Remix para compilar, implementar e interactuar con nuestro contrato inteligente. Es una gran herramienta para comenzar con el desarrollo de " -"Starknet." +msgstr "Usaremos el complemento Starknet Remix para compilar, implementar e interactuar con nuestro contrato inteligente. Es una gran herramienta para comenzar con el desarrollo de Starknet." #: src/ch01-00-getting-started.md:7 msgid "" -"1. Visit [The Remix Project](https://remix.ethereum.org/).\n" -"2. Navigate to the ‘Plugins’ section in the bottom left corner.\n" -"3. Enable the “Starknet” plugin." +"1. Visit the [Remix IDE](https://remix.ethereum.org/) website.\n" +"2. Navigate to the ‘Plugin Manager’ section in the bottom left corner." msgstr "" -"1. Visite [El Proyecto Remix](https://remix.ethereum.org/).\n" -"2. Navegue hasta la sección 'Plugin' en la esquina inferior izquierda.\n" -"3. Habilite el complemento 'Starknet'." +"1. Visite [Remix IDE](https://remix.ethereum.org/).\n" +"2. Navegue hasta la sección ‘Plugin Manager’ en la esquina inferior izquierda." -#: src/ch01-00-getting-started.md:11 +#: src/ch01-00-getting-started.md:10 +msgid "\"Plugin" +msgstr "\"Plugin" + +#: src/ch01-00-getting-started.md:12 +msgid "3. Activate the “Starknet” plugin." +msgstr "3. Active el plugin \"Starknet\"." + +#: src/ch01-00-getting-started.md:14 msgid "\"Activate" msgstr "\"Activate" -#: src/ch01-00-getting-started.md:13 -msgid "Activate the Starknet Plugin" -msgstr "Activar el Plugin de Starknet" +#: src/ch01-00-getting-started.md:16 +msgid "4. Accept the permissions. Click \"Remember my choice\" to avoid this step in the future." +msgstr "4. Acepta los permisos. Haga clic en \"Remember my choice\" para evitar este paso en el futuro." + +#: src/ch01-00-getting-started.md:18 +msgid "\"Accept" +msgstr "\"Accept" + +#: src/ch01-00-getting-started.md:20 +msgid "5. After enabling, the Starknet logo appears on the left sidebar. Click it to interact with opened Cairo files." +msgstr "5. Después de habilitarlo, el logotipo de Starknet aparece en la barra lateral izquierda. Haga clic en él para interactuar con los archivos abiertos de Cairo." -#: src/ch01-00-getting-started.md:15 -msgid "4. After enabling, the Starknet logo appears on the left sidebar. Click it to interact with opened Cairo files." -msgstr "4. Después de habilitarlo, el logotipo de Starknet aparece en la barra lateral izquierda. Haga clic en él para interactuar con los archivos Cairo abiertos." +#: src/ch01-00-getting-started.md:22 +msgid "\"Starknet" +msgstr "\"Starknet" -#: src/ch01-00-getting-started.md:17 +#: src/ch01-00-getting-started.md:24 msgid "## Introduction to Starknet Smart Contracts" msgstr "## Introducción a los Smart Contracts de Starknet" -#: src/ch01-00-getting-started.md:19 +#: src/ch01-00-getting-started.md:26 msgid "The script below is a simple `Ownable` contract pattern written in Cairo for Starknet. It features:" msgstr "El siguiente script es un patrón de contrato simple `Ownable` escrito en Cairo para Starknet. Cuenta con:" -#: src/ch01-00-getting-started.md:21 +#: src/ch01-00-getting-started.md:28 msgid "" "- An ownership system.\n" "- A method to transfer ownership.\n" @@ -1034,7 +1028,11 @@ msgstr "" "- Un método para comprobar el propietario (owner) actual.\n" "- Una notificación de evento para cambios de propiedad." -#: src/ch01-00-getting-started.md:26 +#: src/ch01-00-getting-started.md:33 +msgid "### Cairo Example Contract" +msgstr "### Contrato de Ejemplo de Cairo" + +#: src/ch01-00-getting-started.md:35 msgid "" "```rust\n" "use starknet::ContractAddress;\n" @@ -1074,7 +1072,7 @@ msgid "" " self.owner.write(init_owner);\n" " }\n" "\n" -" #[external(v0)]\n" +" #[abi(embed_v0)]\n" " impl OwnableImpl of super::OwnableTrait {\n" " fn transfer_ownership(ref self: ContractState, new_owner: ContractAddress) {\n" " self.only_owner();\n" @@ -1139,7 +1137,7 @@ msgstr "" " self.owner.write(init_owner);\n" " }\n" "\n" -" #[external(v0)]\n" +" #[abi(embed_v0)]\n" " impl OwnableImpl of super::OwnableTrait {\n" " fn transfer_ownership(ref self: ContractState, new_owner: ContractAddress) {\n" " self.only_owner();\n" @@ -1166,19 +1164,19 @@ msgstr "" "}\n" "```" -#: src/ch01-00-getting-started.md:91 +#: src/ch01-00-getting-started.md:100 msgid "### Components Breakdown" msgstr "### Desglose de Componentes" -#: src/ch01-00-getting-started.md:93 +#: src/ch01-00-getting-started.md:102 msgid "" -"The following is a brief description of the components in the contract. We will get into more details when we get deeper into Cairo so feel free to skip this section for now " -"if you are not familiar with smart contract development." +"The following is a brief description of the components in the contract. We will get into more details when we get deeper into Cairo so feel free to skip this section for now if you are not familiar " +"with smart contract development." msgstr "" -"La siguiente es una breve descripción de los componentes del contrato. Entraremos en más detalles cuando profundicemos en El Cairo, así que no dude en omitir esta sección " -"por ahora si no está familiarizado con el desarrollo de contratos inteligentes." +"La siguiente es una breve descripción de los componentes del contrato. Entraremos en más detalles cuando profundicemos en El Cairo, así que no dude en omitir esta sección por ahora si no está " +"familiarizado con el desarrollo de contratos inteligentes." -#: src/ch01-00-getting-started.md:95 +#: src/ch01-00-getting-started.md:104 msgid "" "1. **Dependencies and Interface**:\n" " - **`starknet::ContractAddress`**: Represents a Starknet contract address.\n" @@ -1208,101 +1206,128 @@ msgstr "" "6. **Métodos privados**:\n" " - **`only_owner`**: Valida si la persona que llama es el owner actual." -#: src/ch01-00-getting-started.md:109 +#: src/ch01-00-getting-started.md:118 msgid "## Compilation Process" msgstr "## Proceso de Compilación" -#: src/ch01-00-getting-started.md:111 +#: src/ch01-00-getting-started.md:120 msgid "To compile using Remix:" msgstr "Para compilar usando Remix:" -#: src/ch01-00-getting-started.md:113 +#: src/ch01-00-getting-started.md:122 msgid "" "1. **File Creation**\n" "\n" " - Navigate to the \"File Explorer\" tab in Remix.\n" -" - Create a new file named `Ownable.cairo` and input the previous code.\n" +" - Create a new file named `Ownable.cairo` and paste the previous [code](#cairo-example-contract) into it.\n" "\n" "2. **Compilation**\n" "\n" " - Choose the `Ownable.cairo` file.\n" -" - In the \"Starknet\" tab, select \"Compile Ownable.cairo\".\n" -" - Post-compilation, an \"artifacts\" folder emerges containing the compiled contract in two distinct formats: Sierra (JSON file) and CASM. For Starknet deployment, Remix " -"will use the Sierra file. Do not worry about this process for now; we will cover it in detail in a later chapter. For now, Remix will handle the compilation and deployment " -"for us." +" - In the \"Starknet\" tab, select \"Compile Ownable.cairo\"." msgstr "" -"1. **Creación de archivos**\n" +"1. **Creación de Archivos**\n" "\n" -" - Navega a la pestaña \"Explorador de archivos\" en Remix.\n" -" - Cree un nuevo archivo llamado `Ownable.cairo` e ingrese el código anterior.\n" +" - Navega a la pestaña \"File Explorer\" en Remix.\n" +" - Cree un nuevo archivo llamado `Ownable.cairo` y pegue el [código anterior](#cairo-example-contract) en él.\n" "\n" -"2. **Copilación**\n" +"2. **Compilación**\n" "\n" " - Elija el archivo `Ownable.cairo`.\n" -" - En la pestaña \"Starknet\", seleccione \"Compilar Ownable.cairo\".\n" -" - Después de la compilación, aparece una carpeta de \"artifacts\" que contiene el contrato compilado en dos formatos distintos: Sierra (archivo JSON) y CASM. Para la " -"implementación de Starknet, Remix utilizará el archivo Sierra. No te preocupes por este proceso por ahora; Lo cubriremos en detalle en un capítulo posterior. Por ahora, " -"Remix se encargará de la compilación y la implementación por nosotros." +" - En la pestaña \"Starknet\", seleccione \"Compilar Ownable.cairo\"." + +#: src/ch01-00-getting-started.md:132 +msgid "" +"\"Compilation" +msgstr "" +"\"Compilation" + +#: src/ch01-00-getting-started.md:135 +msgid "" +"- Post-compilation, an \"artifacts\" folder emerges containing the compiled contract in two distinct formats: Sierra (JSON file) and CASM. For Starknet deployment, Remix will use the Sierra file. " +"Do not worry about this process for now; we will cover it in detail in a later chapter. For now, Remix will handle the compilation and deployment for us." +msgstr "" +"- Después de la compilación, aparece una carpeta de \"artifacts\" que contiene el contrato compilado en dos formatos distintos: Sierra (archivo JSON) y CASM. Para la implementación de Starknet, " +"Remix utilizará el archivo Sierra. No te preocupes por este proceso por ahora; Lo cubriremos en detalle en un capítulo posterior. Por ahora, Remix se encargará de la compilación y la implementación " +"por nosotros." -#: src/ch01-00-getting-started.md:124 +#: src/ch01-00-getting-started.md:137 msgid "\"Artifacts" msgstr "\"Artifacts" -#: src/ch01-00-getting-started.md:126 +#: src/ch01-00-getting-started.md:139 msgid "Artifacts folder after compilation" msgstr "Carpeta de artefactos después de la compilación." -#: src/ch01-00-getting-started.md:128 +#: src/ch01-00-getting-started.md:141 msgid "## Deployment on the Development Network" msgstr "## Despliegue en la Red de Desarrollo" -#: src/ch01-00-getting-started.md:130 +#: src/ch01-00-getting-started.md:143 msgid "To set your smart contract in motion, an initial owner must be defined. The Constructor function needs this information." msgstr "Para poner en marcha su contrato inteligente, se debe definir un propietario inicial. La función Constructor necesita esta información." -#: src/ch01-00-getting-started.md:132 +#: src/ch01-00-getting-started.md:145 msgid "Here's a step-by-step guide to deploying your smart contract on the development network:" msgstr "Aquí hay una guía paso a paso para implementar su smart contract en la red de desarrollo:" -#: src/ch01-00-getting-started.md:134 +#: src/ch01-00-getting-started.md:147 msgid "" "1. **Select the Appropriate Network**\n" "\n" -" - Go to the Environment selection tab.\n" +" - In the Starknet tab, click on the top button.\n" +"\n" +" \"Environment\n" +"\n" " - Choose \"Remote Devnet\" for deploying your inaugural contract on a development network.\n" "\n" "2. **Choose a Devnet Account**\n" "\n" " - Under \"Devnet account selection\", a list of accounts specific to the chosen devnet is presented.\n" +"\n" +" \"Environment\n" +"\n" " - Pick any account and copy its address.\n" "\n" "3. **Initiating Deployment**\n" "\n" -" - Navigate to the \"Starknet\" tab.\n" " - Input the copied address into the `init_owner` variable.\n" -" - Click on \"Deploy ownable.cairo\"." +"\n" +" \"Environment\n" +"\n" +" - Click on **\"Deploy\"**." msgstr "" "1. **Seleccione la Red Adecuada**\n" "\n" -" - Vaya a la pestaña de selección de Environment.\n" +" - En la pestaña Starknet, haz clic en el botón superior.\n" +"\n" +" \"Environment\n" +"\n" " - Elija \"Remote Devnet\" para implementar su contrato inaugural en una red de desarrollo.\n" "\n" "2. **Elija una Cuenta Devnet**\n" "\n" -" - En \"Selección de cuenta de Devnet\", se presenta una lista de cuentas específicas del devnet elegido.\n" +" - En \"Devnet account selection\", se presenta una lista de cuentas específicas del devnet elegido.\n" +"\n" +" \"Environment\n" +"\n" " - Elija cualquier cuenta y copie su dirección.\n" "\n" "3. **Iniciando Implementación**\n" "\n" -" - Navega a la pestaña \"Starknet\".\n" " - Ingrese la dirección copiada en la variable `init_owner`.\n" -" - Haga clic en \"Deploy ownable.cairo\"." +"\n" +" \"Environment\n" +"\n" +" - Haga clic en **\"Deploy\"**." -#: src/ch01-00-getting-started.md:150 +#: src/ch01-00-getting-started.md:171 msgid "Post-deployment, Remix's terminal will send various logs. These logs provide crucial details, including:" msgstr "Después de la implementación, la terminal de Remix enviará varios registros. Estos registros proporcionan detalles cruciales, que incluyen:" -#: src/ch01-00-getting-started.md:152 +#: src/ch01-00-getting-started.md:173 msgid "" "- `transaction_hash`: The unique hash of the transaction. This hash can be used to track the transaction's status.\n" "- `contract_address`: The address of the deployed contract. Use this address to interact with your contract.\n" @@ -1312,7 +1337,7 @@ msgstr "" "- `contract_address`: La dirección del contrato implementado. Utilice esta dirección para interactuar con su contrato.\n" "- `calldata`: Contiene la dirección `init_owner` enviada al constructor." -#: src/ch01-00-getting-started.md:156 +#: src/ch01-00-getting-started.md:177 msgid "" "```bash\n" "{\n" @@ -1320,7 +1345,7 @@ msgid "" " \"contract_address\": \"0x5eb239955ad4c4333b8ab83406a3cf5970554b60a0d8e78a531df18c59a0db9\",\n" " ...\n" " \"calldata\": [\n" -" \"0x4d9c8282b5633eeb1aab56393690d76f71e32f1b7be1bea03eb03e059245a28\"\n" +" \"0x1398224729985f8e76571285c6d936b5af4a88206a1dc54c0658b4e15045292\"\n" " ],\n" " ...\n" "}\n" @@ -1332,57 +1357,60 @@ msgstr "" " \"contract_address\": \"0x5eb239955ad4c4333b8ab83406a3cf5970554b60a0d8e78a531df18c59a0db9\",\n" " ...\n" " \"calldata\": [\n" -" \"0x4d9c8282b5633eeb1aab56393690d76f71e32f1b7be1bea03eb03e059245a28\"\n" +" \"0x1398224729985f8e76571285c6d936b5af4a88206a1dc54c0658b4e15045292\"\n" " ],\n" " ...\n" "}\n" "```" -#: src/ch01-00-getting-started.md:168 +#: src/ch01-00-getting-started.md:189 msgid "By following the above process, you successfully deploy your smart contract on the development network." msgstr "Si sigue el proceso anterior, implementará con éxito su contrato inteligente en la red de desarrollo." -#: src/ch01-00-getting-started.md:170 +#: src/ch01-00-getting-started.md:191 msgid "## Interaction with the Contract" msgstr "## Interacción con el Contrato" -#: src/ch01-00-getting-started.md:172 +#: src/ch01-00-getting-started.md:193 msgid "With the contract now active on the development network, interaction becomes possible. Here's a guide to effectively interact with your contract on Starknet:" msgstr "Con el contrato ahora activo en la red de desarrollo, la interacción se hace posible. Aquí hay una guía para interactuar efectivamente con su contrato en Starknet:" -#: src/ch01-00-getting-started.md:174 +#: src/ch01-00-getting-started.md:195 msgid "" "1. **Initiating Interaction**\n" "\n" -" - Navigate to the \"Starknet\" tab.\n" +" - Navigate to the \"Starknet\" plugin tab.\n" " - Select the \"Interact\" option.\n" "\n" "2. **Calling the `get_owner` Function**\n" "\n" -" - Choose the `get_owner` function. Since this function doesn't require arguments, the calldata field remains blank. (This is a read function, hence calling it is termed " -"as a \"call\".)\n" -" - Press the \"get_owner\" button. Your terminal will display the result, revealing the owner's address provided during the contract's deployment as calldata for the " -"constructor:" +" - Choose the `get_owner` function. Since this function doesn't require arguments, the calldata field remains blank. (This is a read function, hence calling it is termed as a \"call\".)\n" +"\n" +" \"Environment\n" +"\n" +" - Press the **\"Call\"** button. Your terminal will display the result, revealing the owner's address provided during the contract's deployment as calldata for the constructor:" msgstr "" -"1. **Iniciando interacción**\n" +"1. **Iniciando Interacción**\n" "\n" -" - Navega a la pestaña \"Starknet\".\n" -" - Selecciona la opción \"Interactuar\".\n" +" - Vaya a la pestaña del complemento \"Starknet\".\n" +" - Selecciona la opción \"Interact\".\n" "\n" "2. **Llamar a la función `get_owner`**\n" "\n" -" - Elija la función `get_owner`. Como esta función no requiere argumentos, el campo calldata permanece en blanco. (Esta es una función de lectura, por lo que llamarla se " -"denomina \"call\").\n" -" - Presione el botón \"get_owner\". Su terminal mostrará el resultado, revelando la dirección del propietario proporcionada durante la implementación del contrato como " -"datos de llamada para el constructor:" +" - Elija la función `get_owner`. Como esta función no requiere argumentos, el campo calldata permanece en blanco. (Esta es una función de lectura, por lo que llamarla se denomina \"call\").\n" +"\n" +" \"Environment\n" +"\n" +" - Presione el botón **\"Call\"**. Su terminal mostrará el resultado, revelando la dirección del propietario proporcionada durante la implementación del contrato como datos de llamada para el " +"constructor:" -#: src/ch01-00-getting-started.md:184 +#: src/ch01-00-getting-started.md:208 msgid "" -"```bash\n" +"```json\n" "{\n" " \"response\": {\n" " \"result\": [\n" -" \"0x4d9c8282b5633eeb1aab56393690d76f71e32f1b7be1bea03eb03e059245a28\"\n" +" \"0x1398224729985f8e76571285c6d936b5af4a88206a1dc54c0658b4e15045292\"\n" " ]\n" " },\n" " \"contract\": \"ownable.cairo\",\n" @@ -1390,11 +1418,11 @@ msgid "" "}\n" "```" msgstr "" -"```bash\n" +"```json\n" "{\n" " \"response\": {\n" " \"result\": [\n" -" \"0x4d9c8282b5633eeb1aab56393690d76f71e32f1b7be1bea03eb03e059245a28\"\n" +" \"0x1398224729985f8e76571285c6d936b5af4a88206a1dc54c0658b4e15045292\"\n" " ]\n" " },\n" " \"contract\": \"ownable.cairo\",\n" @@ -1402,40 +1430,47 @@ msgstr "" "}\n" "```" -#: src/ch01-00-getting-started.md:196 +#: src/ch01-00-getting-started.md:220 msgid "This call currently doesn't spend gas because the function does not change the state of the contract." msgstr "Esta llamada actualmente no gasta gasolina porque la función no cambia el estado del contrato." -#: src/ch01-00-getting-started.md:198 +#: src/ch01-00-getting-started.md:222 msgid "3. **Invoking the `transfer_ownership` Function**" msgstr "3. **Invocando la función `transfer_ownership`**" -#: src/ch01-00-getting-started.md:200 +#: src/ch01-00-getting-started.md:224 +msgid "- Choose the **\"Write\"** in the interaction area. Here you can see the functions that alter the contract's state." +msgstr "- Elija **\"Write\"** en el área de interacción. Aquí puedes ver las funciones que alteran el estado del contrato." + +#: src/ch01-00-getting-started.md:226 +msgid "\"Environment" +msgstr "\"Environment" + +#: src/ch01-00-getting-started.md:228 msgid "" -"- Now, for the **`transfer_ownership`** function, which requires the new owner's address as input.\n" +"- In this case **`transfer_ownership`** function, which requires the new owner's address as input.\n" "- Enter this address into the calldata field. (For this, use any address from the \"Devnet account selection\" listed in the Environment tab.)\n" -"- Click the \"transfer_ownership\" button. The terminal then showcases the transaction hash indicating the contract's state alteration. Since we are altering the contract's " -"state this typo of interaction is called an \"invoke\" and needs to be signed by the account that is calling the function." +"- Click the **\"Call\"** button. The terminal then showcases the transaction hash indicating the contract's state alteration. Since we are altering the contract's state this typo of interaction is " +"called an \"invoke\" and needs to be signed by the account that is calling the function." msgstr "" -"- Ahora, para la función **`transfer_ownership`**, que requiere la dirección del nuevo propietario como entrada.\n" -"- Ingrese esta dirección en el campo de datos de llamada. (Para esto, use cualquier dirección de la \"Selección de cuenta Devnet\" que aparece en la pestaña Entorno).\n" -"- Haga clic en el botón \"transfer_ownership\". Luego, la terminal muestra el hash de la transacción que indica la alteración del estado del contrato. Dado que estamos " -"alterando el estado del contrato, este tipo de interacción se denomina \"invoke\" y debe ser firmado por la cuenta que llama a la función." +"- En este caso, la función **`transfer_ownership`**, que requiere la dirección del nuevo propietario como entrada.\n" +"- Ingrese esta dirección en el campo de datos de llamada. (Para esto, use cualquier dirección de la \"Devnet account selection\" que aparece en la pestaña Entorno).\n" +"- Haga clic en el botón **\"Call\"**. Luego, la terminal muestra el hash de la transacción que indica la alteración del estado del contrato. Dado que estamos alterando el estado del contrato, este " +"tipo de interacción se denomina \"invoke\" y debe ser firmado por la cuenta que llama a la función." -#: src/ch01-00-getting-started.md:204 +#: src/ch01-00-getting-started.md:232 msgid "" -"For these transactions, the terminal logs will exhibit a \"status\" variable, indicating the transaction's fate. If the status reads \"ACCEPTED_ON_L2\", the Sequencer has " -"accepted the transaction, pending block inclusion. However, a \"REJECTED\" status signifies the Sequencer's disapproval, and the transaction won't feature in the upcoming " -"block. More often than not, this transaction gains acceptance, leading to a contract state modification. On calling the **`get_owner`** function again we get this:" +"For these transactions, the terminal logs will exhibit a \"status\" variable, indicating the transaction's fate. If the status reads \"ACCEPTED_ON_L2\", the Sequencer has accepted the transaction, " +"pending block inclusion. However, a \"REJECTED\" status signifies the Sequencer's disapproval, and the transaction won't feature in the upcoming block. More often than not, this transaction gains " +"acceptance, leading to a contract state modification. On calling the **`get_owner`** function again we get this:" msgstr "" -"Para estas transacciones, los registros de la terminal mostrarán una variable de \"status\", que indica el destino de la transacción. Si el estado es \"ACCEPTED_ON_L2\", el " -"secuenciador ha aceptado la transacción, pendiente de inclusión del bloque. Sin embargo, un estado \"REJECTED\" significa la desaprobación del secuenciador y la transacción " -"no aparecerá en el siguiente bloque. La mayoría de las veces, esta transacción obtiene aceptación, lo que lleva a una modificación del estado del contrato. Al llamar " -"nuevamente a la función **`get_owner`** obtenemos esto:" +"Para estas transacciones, los registros de la terminal mostrarán una variable de \"status\", que indica el destino de la transacción. Si el estado es \"ACCEPTED_ON_L2\", el secuenciador ha aceptado " +"la transacción, pendiente de inclusión del bloque. Sin embargo, un estado \"REJECTED\" significa la desaprobación del secuenciador y la transacción no aparecerá en el siguiente bloque. La mayoría " +"de las veces, esta transacción obtiene aceptación, lo que lleva a una modificación del estado del contrato. Al llamar nuevamente a la función **`get_owner`** obtenemos esto:" -#: src/ch01-00-getting-started.md:206 +#: src/ch01-00-getting-started.md:234 msgid "" -"```bash\n" +"```json\n" "{\n" " \"response\": {\n" " \"result\": [\n" @@ -1447,7 +1482,7 @@ msgid "" "}\n" "```" msgstr "" -"```bash\n" +"```json\n" "{\n" " \"response\": {\n" " \"result\": [\n" @@ -1459,130 +1494,135 @@ msgstr "" "}\n" "```" -#: src/ch01-00-getting-started.md:218 +#: src/ch01-00-getting-started.md:246 msgid "You've now adeptly compiled, deployed, and interacted with your inaugural Starknet smart contract. Well done!" msgstr "Ahora ha compilado, implementado e interactuado hábilmente con su contrato inteligente inaugural de Starknet. ¡Bien hecho!" -#: src/ch01-00-getting-started.md:220 +#: src/ch01-00-getting-started.md:248 msgid "## Deploying on Starknet Testnet" msgstr "## Implementación en Starknet Testnet" -#: src/ch01-00-getting-started.md:222 +#: src/ch01-00-getting-started.md:250 msgid "" -"After testing your smart contract on a development network, it's time to deploy it to the Starknet Testnet. Starknet Testnet is a public platform available for everyone, " -"ideal for testing smart contracts and collaborating with fellow developers." +"After testing your smart contract on a development network, it's time to deploy it to the Starknet Testnet. Starknet Testnet is a public platform available for everyone, ideal for testing smart " +"contracts and collaborating with fellow developers." msgstr "" -"Después de probar su contrato inteligente en una red de desarrollo, es hora de implementarlo en Starknet Testnet. Starknet Testnet es una plataforma pública disponible para " -"todos, ideal para probar contratos inteligentes y colaborar con otros desarrolladores." +"Después de probar su contrato inteligente en una red de desarrollo, es hora de implementarlo en Starknet Testnet. Starknet Testnet es una plataforma pública disponible para todos, ideal para probar " +"contratos inteligentes y colaborar con otros desarrolladores." -#: src/ch01-00-getting-started.md:224 +#: src/ch01-00-getting-started.md:252 msgid "First you need to create a Starknet account." msgstr "Primero necesitas crear una cuenta Starknet." -#: src/ch01-00-getting-started.md:226 +#: src/ch01-00-getting-started.md:254 msgid "### Smart Wallet Setup" msgstr "### Configuración de Smart Wallet" -#: src/ch01-00-getting-started.md:228 +#: src/ch01-00-getting-started.md:256 msgid "" -"Before deploying your smart contract to Starknet, you must handle the transaction cost. While deploying to the Starknet Goerli Testnet is free, a smart wallet account is " -"essential. You can set up a smart wallet using either:" +"Before deploying your smart contract to Starknet, you must handle the transaction cost. While deploying to the Starknet Goerli Testnet is free, a smart wallet account is essential. You can set up a " +"smart wallet using either:" msgstr "" -"Antes de implementar su smart contract en Starknet, debe manejar el costo de la transacción. Si bien la implementación en Starknet Goerli Testnet es gratuita, una cuenta de " -"billetera inteligente es esencial. Puede configurar una billetera inteligente usando:" +"Antes de implementar su smart contract en Starknet, debe manejar el costo de la transacción. Si bien la implementación en Starknet Goerli Testnet es gratuita, una cuenta de billetera inteligente es " +"esencial. Puede configurar una billetera inteligente usando:" -#: src/ch01-00-getting-started.md:230 +#: src/ch01-00-getting-started.md:258 msgid "" -"- [Braavos](https://braavos.app/)\n" -"- [Argent](https://www.argent.xyz/argent-x/)" +"- [Argent](https://www.argent.xyz/argent-x/)\n" +"- [Braavos](https://braavos.app/)" msgstr "" -"- [Braavos](https://braavos.app/)\n" -"- [Argent](https://www.argent.xyz/argent-x/)" +"- [Argent](https://www.argent.xyz/argent-x/)\n" +"- [Braavos](https://braavos.app/)" -#: src/ch01-00-getting-started.md:233 +#: src/ch01-00-getting-started.md:261 msgid "" -"Both are reliable Starknet wallets offering enhanced security and accessibility features thanks to the possibilities that the Cairo VM brings, such as Account Abstraction " -"(keep reading the Book for more on this)." +"Both are reliable Starknet wallets offering enhanced security and accessibility features thanks to the possibilities that the Cairo VM brings, such as Account Abstraction (keep reading the Book for " +"more on this)." msgstr "" -"Ambas son billeteras Starknet confiables que ofrecen características mejoradas de seguridad y accesibilidad gracias a las posibilidades que ofrece Cairo VM, como Account " -"Abstraction (siga leyendo el libro para obtener más información sobre esto)." +"Ambas son billeteras Starknet confiables que ofrecen características mejoradas de seguridad y accesibilidad gracias a las posibilidades que ofrece Cairo VM, como Account Abstraction (siga leyendo " +"el libro para obtener más información sobre esto)." -#: src/ch01-00-getting-started.md:235 +#: src/ch01-00-getting-started.md:263 msgid "" "1. Install the recommended chrome/brave extension for your chosen wallet.\n" "2. Follow your wallet provider's instructions to deploy your account.\n" -" 1. Use the [Starknet Faucet](https://faucet.goerli.starknet.io/) to fund your account.\n" -"3. Deploy the account to the network. This usually takes around 10 seconds." +"3. Use the [Starknet Faucet](https://faucet.goerli.starknet.io/) to fund your account.\n" +"4. Deploy the account to the network. This usually takes around 10 seconds." msgstr "" -"1. Instale la extensión Chrome/brave recomendada para su billetera elegida.\n" +"1. Instale la extensión Chrome/Brave recomendada para su wallet elegida.\n" "2. Siga las instrucciones de su proveedor de billetera para implementar su cuenta.\n" -" 1. Utilice [Starknet Faucet](https://faucet.goerli.starknet.io/) para depositar fondos en su cuenta.\n" -"3. Implemente la cuenta en la red. Esto suele tardar unos 10 segundos." +"3. Utilice [Starknet Faucet](https://faucet.goerli.starknet.io/) para depositar fondos en su cuenta.\n" +"4. Implemente la cuenta en la red. Esto suele tardar unos 10 segundos." -#: src/ch01-00-getting-started.md:240 +#: src/ch01-00-getting-started.md:268 msgid "Once set up, you're ready to deploy your smart contracts to the Starknet Testnet." msgstr "Una vez configurado, estará listo para implementar sus contratos inteligentes en Starknet Testnet." -#: src/ch01-00-getting-started.md:242 +#: src/ch01-00-getting-started.md:270 msgid "### Deployment and Interaction" msgstr "### Despliegue e Interacción" -#: src/ch01-00-getting-started.md:244 +#: src/ch01-00-getting-started.md:272 msgid "" "1. Follow the previous deployment steps.\n" -"2. In the 'Environment selection' tab, choose 'Wallet Selection'.\n" +"2. In the 'Environment selection' tab, choose 'Wallet'.\n" "3. Select your Starknet account and continue with deploying and interacting with your contract." msgstr "" "1. Siga los pasos de implementación anteriores.\n" -"2. En la pestaña 'Environment selection', elija 'Selección de Wallet'.\n" +"2. En la pestaña 'Environment selection', elija 'Wallet'.\n" "3. Seleccione su cuenta Starknet y continúe con la implementación e interactuando con su contrato." -#: src/ch01-00-getting-started.md:248 +#: src/ch01-00-getting-started.md:276 +msgid "\"Environment" +msgstr "\"Environment" + +#: src/ch01-00-getting-started.md:278 msgid "You can monitor transaction hashes and addresses using any Starknet block explorers like:" msgstr "Puede monitorear los hashes y las direcciones de las transacciones utilizando cualquier explorador de bloques de Starknet como:" -#: src/ch01-00-getting-started.md:250 +#: src/ch01-00-getting-started.md:280 msgid "" "- [Starkscan](https://testnet.starkscan.co/)\n" -"- [Voyager](https://goerli.voyager.online/)" +"- [Voyager](https://goerli.voyager.online/)\n" +"- [ViewBlock](https://viewblock.io.starknet/)\n" +"- [oklink](https://www.oklink.com/starknet)" msgstr "" "- [Starkscan](https://testnet.starkscan.co/)\n" -"- [Voyager](https://goerli.voyager.online/)" +"- [Voyager](https://goerli.voyager.online/)\n" +"- [ViewBlock](https://viewblock.io.starknet/)\n" +"- [oklink](https://www.oklink.com/starknet)" -#: src/ch01-00-getting-started.md:253 +#: src/ch01-00-getting-started.md:285 msgid "" -"These tools provide a visual representation of transactions and contract state alterations. Notably, when you alter the contract ownership using the `transfer_ownership` " -"function, the event emitted by the contract appears in the block explorer. It's an effective method to track contract events." +"These tools provide a visual representation of transactions and contract state alterations. Notably, when you alter the contract ownership using the `transfer_ownership` function, the event emitted " +"by the contract appears in the block explorer. It's an effective method to track contract events." msgstr "" -"Estas herramientas proporcionan una representación visual de las transacciones y las alteraciones del estado del contrato. En particular, cuando modifica la propiedad del " -"contrato utilizando la función `transfer_ownership`, el evento emitido por el contrato aparece en el explorador de bloques. Es un método eficaz para realizar un seguimiento " -"de los eventos del contrato." +"Estas herramientas proporcionan una representación visual de las transacciones y las alteraciones del estado del contrato. En particular, cuando modifica la propiedad del contrato utilizando la " +"función `transfer_ownership`, el evento emitido por el contrato aparece en el explorador de bloques. Es un método eficaz para realizar un seguimiento de los eventos del contrato." -#: src/ch01-00-getting-started.md:255 +#: src/ch01-00-getting-started.md:287 msgid "## Your Next Steps" msgstr "## Tus Próximos Pasos" -#: src/ch01-00-getting-started.md:257 +#: src/ch01-00-getting-started.md:289 msgid "Decide your direction from the following choices:" msgstr "Decide tu dirección entre las siguientes opciones:" -#: src/ch01-00-getting-started.md:259 +#: src/ch01-00-getting-started.md:291 msgid "" -"1. **Deepen Your Starknet Knowledge**: For an extensive grasp of Starknet's inner workings and potential use cases, delve into Chapter 3 of the Starknet Book. This chapter " -"details Starknet’s architectural nuances. Then go ahead from there.\n" +"1. **Deepen Your Starknet Knowledge**: For an extensive grasp of Starknet's inner workings and potential use cases, delve into Chapter 3 of the Starknet Book. This chapter details Starknet’s " +"architectural nuances. Then go ahead from there.\n" "\n" -"2. **Dive into Cairo**: If you're more attuned to coding and wish to craft Starknet contracts, then Cairo is essential. It stands as Starknet's core contract language. Begin " -"with Chapters 1-6 of the [Cairo Book](https://book.cairo-lang.org/title-page.html), ranging from basics in _Getting Started_ to more advanced aspects such as _Enums and " -"Pattern Matching_. Conclude by navigating to the [Starknet Smart Contracts chapter](https://book.cairo-lang.org/ch99-00-starknet-smart-contracts.html), ensuring you have a " -"well-rounded understanding." +"2. **Dive into Cairo**: If you're more attuned to coding and wish to craft Starknet contracts, then Cairo is essential. It stands as Starknet's core contract language. Begin with Chapters 1-6 of " +"the [Cairo Book](https://book.cairo-lang.org/title-page.html), ranging from basics in _Getting Started_ to more advanced aspects such as _Enums and Pattern Matching_. Conclude by navigating to the " +"[Starknet Smart Contracts chapter](https://book.cairo-lang.org/ch99-00-starknet-smart-contracts.html), ensuring you have a well-rounded understanding." msgstr "" -"1. **Profundice su conocimiento de Starknet**: para obtener una comprensión amplia del funcionamiento interno de Starknet y los posibles casos de uso, profundice en el " -"Capítulo 3 del Libro de Starknet. Este capítulo detalla los matices arquitectónicos de Starknet. Entonces continúa desde allí.\n" +"1. **Profundice su conocimiento de Starknet**: Para obtener una comprensión amplia del funcionamiento interno de Starknet y los posibles casos de uso, profundice en el Capítulo 3 del Libro de " +"Starknet. Este capítulo detalla los matices arquitectónicos de Starknet. Entonces continúa desde allí.\n" "\n" -"2. **Sumérgete en Cairo**: si estás más familiarizado con la codificación y deseas crear contratos de Starknet, entonces Cairo es esencial. Es el lenguaje contractual " -"central de Starknet. Comience con los capítulos 1 a 6 del [Libro de El Cairo] (https://book.cairo-lang.org/title-page.html), que van desde conceptos básicos de " -"_Introducción_ hasta aspectos más avanzados como _Enums y Pattern Matching_. Concluya navegando al [capítulo Smart Contracts de Starknet] (https://book.cairo-lang.org/" -"ch99-00-starknet-smart-contracts.html), asegurándose de tener una comprensión completa." +"2. **Sumérgete en Cairo**: Si estás más familiarizado con la codificación y deseas crear contratos de Starknet, entonces Cairo es esencial. Es el lenguaje contractual central de Starknet. Comience " +"con los capítulos 1 a 6 del [Libro de Cairo](https://book.cairo-lang.org/title-page.html), que van desde conceptos básicos de _Introducción_ hasta aspectos más avanzados como _Enums y Pattern " +"Matching_. Concluya navegando al [capítulo Smart Contracts de Starknet](https://book.cairo-lang.org/ch99-00-starknet-smart-contracts.html), asegurándose de tener una comprensión completa." #: src/ch02-00-starknet-tooling.md:1 msgid "# Starknet Tooling" @@ -1636,23 +1676,23 @@ msgstr "En este capítulo, explorará:" #: src/ch02-00-starknet-tooling.md:23 msgid "" -"- Frameworks: Build using Starknet-Foundry or Hardhat\n" +"- **Frameworks:** Build using Starknet-Foundry\n" "\n" -"- SDKs: Discover multi-language support through Starknet.js,\n" +"- **SDKs:** Discover multi-language support through Starknet.js,\n" " Starknet-rs, Starknet_py, and Caigo\n" "\n" -"- Front-end Development: Use Starknet.js and React\n" +"- **Front-end Development:** Use Starknet.js and React\n" "\n" -"- Testing: Understand testing methods with Starknet-Foundry and the Devnet" +"- **Testing:** Understand testing methods with Starknet-Foundry and the Devnet" msgstr "" -"- **Frameworks:** Construir usando Starknet-Foundry o Hardhat\n" +"- **Frameworks:** Construir usando Starknet-Foundry\n" "\n" -"- **SDK:** descubra la compatibilidad con varios idiomas a través de Starknet.js,\n" +"- **SDK:** Descubra la compatibilidad con varios idiomas a través de Starknet.js,\n" " Starknet-rs, Starknet_py y Caigo\n" "\n" "- **Desarrollo front-end:** Utilice Starknet.js y React\n" "\n" -"- **Testing:** Comprender los métodos de prueba con Starknet-Foundry y Devnet" +"- **Pruebas:** Comprender los métodos de prueba con Starknet-Foundry y Devnet" #: src/ch02-00-starknet-tooling.md:32 msgid "" @@ -1672,33 +1712,33 @@ msgstr "" #: src/ch02-00-starknet-tooling.md:38 msgid "" -"1. Scarb: A package manager that compiles your contracts.\n" +"1. **Scarb:** A package manager that compiles your contracts.\n" "\n" -"2. Starkli: A CLI tool for interacting with the Starknet network.\n" +"2. **Starkli:** A CLI tool for interacting with the Starknet network.\n" "\n" -"3. Foundry: For contract testing.\n" +"3. **Starknet Foundry:** For contract testing.\n" "\n" -"4. Katana: Creates a local test node.\n" +"4. **Katana:** Creates a local test node.\n" "\n" -"5. SDKs: starknet.js, Starknet.py, and starknet.rs interface with\n" +"5. **SDKs:** starknet.js, Starknet.py, and starknet.rs interface with\n" " Starknet using common programming languages.\n" "\n" -"6. Starknet-react: Builds front-end apps using React." +"6. **Starknet-react:** Builds front-end apps using React." msgstr "" -"1. **Scarb:** Un administrador de paquetes que compila tus contratos.\n" +"1. **Scarb:** Un administrador de paquetes que compila tus contratos.\n" "\n" -"2. **Starkli:** Una herramienta CLI para interactuar con la red Starknet.\n" +"2. **Starkli:** Una herramienta CLI para interactuar con la red Starknet.\n" "\n" -"3. **Foundry:** Para pruebas por contrato.\n" +"3. **Starknet Foundry:** Para pruebas por contrato.\n" "\n" -"4. **Katana:** Crea un nodo de prueba local.\n" +"4. **Katana:** Crea un nodo de prueba local.\n" "\n" -"5. **SDK:** Interfaz starknet.js, Starknet.py y starknet.rs con\n" +"5. **SDK:** interfaz starknet.js, Starknet.py y starknet.rs con\n" " Starknet utilizando lenguajes de programación comunes.\n" "\n" -"6. **Starknet-react:** Crea aplicaciones front-end usando React." +"6. **Starknet-react:** Crea aplicaciones front-end usando React." -#: src/ch02-01-basic-installation.md:1 src/ch02-03-scarb.md:34 src/ch02-07-starknet-js.md:13 +#: src/ch02-01-basic-installation.md:1 src/ch02-03-scarb.md:34 src/ch02-09-starknet-js.md:13 msgid "# Installation" msgstr "# Instalación" @@ -1721,14 +1761,20 @@ msgid "" "\n" "2. [Scarb](https://github.com/software-mansion/scarb) - Cairo’s package\n" " manager that compiles code to Sierra, a mid-level language between\n" -" Cairo and CASM." +" Cairo and CASM.\n" +"\n" +"3. [Katana](https://github.com/dojoengine/dojo) - Katana is a Starknet node, built for local development." msgstr "" -"1. [Starkli](https://github.com/xJonathanLEI/starkli) - Una herramienta de línea de comandos (CLI) para interactuar con Starknet. Se discuten más herramientas en el Capítulo " -"2.\n" +"1. [Starkli](https://github.com/xJonathanLEI/starkli): Una herramienta CLI para\n" +" interactuar con Starknet. Se analizan más herramientas en el Capítulo 2.\n" +"\n" +"2. [Scarb](https://github.com/software-mansion/scarb) - Paquete de Cairo\n" +" administrador que compila código para Sierra, un lenguaje de nivel medio entre\n" +" Cairo y CASM.\n" "\n" -"2. [Scarb](https://github.com/software-mansion/scarb) - El gestor de paquetes de Cairo que compila código a Sierra, un lenguaje intermedio entre Cairo y CASM." +"3. [Katana](https://github.com/dojoengine/dojo) - Katana es un nodo de Starknet, creado para el desarrollo local." -#: src/ch02-01-basic-installation.md:15 +#: src/ch02-01-basic-installation.md:17 msgid "" "For support or queries, visit our [GitHub\n" "Issues](https://github.com/starknet-edu/starknetbook/issues) or contact\n" @@ -1738,11 +1784,11 @@ msgstr "" "Issues](https://github.com/starknet-edu/starknetbook/issues) o póngase en contacto\n" "espejelomar en Telegram." -#: src/ch02-01-basic-installation.md:19 +#: src/ch02-01-basic-installation.md:21 msgid "## Starkli Installation" msgstr "## Instalación de Starkli" -#: src/ch02-01-basic-installation.md:21 +#: src/ch02-01-basic-installation.md:23 msgid "" "Easily install Starkli using Starkliup, an installer invoked through the\n" "command line." @@ -1750,7 +1796,7 @@ msgstr "" "Instale Starkli fácilmente usando Starkliup, un instalador que se invoca\n" "a través de la línea de comando." -#: src/ch02-01-basic-installation.md:24 +#: src/ch02-01-basic-installation.md:26 msgid "" "```bash\n" "curl https://get.starkli.sh | sh\n" @@ -1762,11 +1808,11 @@ msgstr "" "starkliup\n" "```" -#: src/ch02-01-basic-installation.md:29 +#: src/ch02-01-basic-installation.md:31 msgid "Restart your terminal and confirm installation:" msgstr "Reinicia tu terminal y confirma la instalación:" -#: src/ch02-01-basic-installation.md:31 +#: src/ch02-01-basic-installation.md:33 msgid "" "```bash\n" "starkli --version\n" @@ -1776,33 +1822,33 @@ msgstr "" "starkli --version\n" "```" -#: src/ch02-01-basic-installation.md:35 +#: src/ch02-01-basic-installation.md:37 msgid "To upgrade Starkli, simply repeat the steps." msgstr "Para actualizar Starkli, simplemente repita los pasos." -#: src/ch02-01-basic-installation.md:37 +#: src/ch02-01-basic-installation.md:39 msgid "## Scarb Package Manager Installation" msgstr "## Instalación del Administrador de Paquetes Scarb" -#: src/ch02-01-basic-installation.md:39 +#: src/ch02-01-basic-installation.md:41 msgid "We will get deeper into Scarb later in this chapter. For now, we will go over the installation process." msgstr "Profundizaremos en Scarb más adelante en este capítulo. Por ahora, repasaremos el proceso de instalación." -#: src/ch02-01-basic-installation.md:41 +#: src/ch02-01-basic-installation.md:43 msgid "For macOS and Linux:" msgstr "Para macOS y Linux:" -#: src/ch02-01-basic-installation.md:43 +#: src/ch02-01-basic-installation.md:45 src/ch04-02-hello-account.md:23 src/ch04-03-standard-account.md:17 msgid "" "```bash\n" -" curl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | sh\n" +"curl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | sh\n" "```" msgstr "" "```bash\n" -" curl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | sh\n" +"curl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | sh\n" "```" -#: src/ch02-01-basic-installation.md:47 +#: src/ch02-01-basic-installation.md:49 msgid "" "For Windows, follow manual setup in the [Scarb\n" "documentation](https://docs.swmansion.com/scarb/download.html#windows)." @@ -1810,41 +1856,79 @@ msgstr "" "Para Windows, siga la configuración manual en [Scarb\n" "Documentation](https://docs.swmansion.com/scarb/download.html#windows)." -#: src/ch02-01-basic-installation.md:50 +#: src/ch02-01-basic-installation.md:52 msgid "Restart the terminal and run:" msgstr "Reinicie la terminal y ejecute:" -#: src/ch02-01-basic-installation.md:52 src/ch02-02-compile-deploy-interact.md:38 +#: src/ch02-01-basic-installation.md:54 src/ch04-02-hello-account.md:17 src/ch04-03-standard-account.md:11 msgid "" "```bash\n" -" scarb --version\n" +"scarb --version\n" "```" msgstr "" "```bash\n" -" scarb --version\n" +"scarb --version\n" "```" -#: src/ch02-01-basic-installation.md:56 +#: src/ch02-01-basic-installation.md:58 msgid "To upgrade Scarb, rerun the installation command." msgstr "Para actualizar Scarb, vuelva a ejecutar el comando de instalación." -#: src/ch02-01-basic-installation.md:58 +#: src/ch02-01-basic-installation.md:60 +msgid "## Katana Node Installation" +msgstr "## Instalación del Nodo Katana" + +#: src/ch02-01-basic-installation.md:62 src/ch02-04-katana.md:36 +msgid "To install Katana, use the `dojoup` installer from the command line:" +msgstr "Para instalar Katana, use el instalador `dojoup` desde la línea de comando:" + +#: src/ch02-01-basic-installation.md:64 src/ch02-04-katana.md:38 +msgid "" +"```bash\n" +"curl -L https://install.dojoengine.org | bash\n" +"dojoup\n" +"```" +msgstr "" +"```bash\n" +"curl -L https://install.dojoengine.org | bash\n" +"dojoup\n" +"```" + +#: src/ch02-01-basic-installation.md:69 src/ch02-04-katana.md:43 +msgid "After restarting your terminal, verify the installation with:" +msgstr "Después de reiniciar tu terminal, verifica la instalación con:" + +#: src/ch02-01-basic-installation.md:71 src/ch02-04-katana.md:45 +msgid "" +"```bash\n" +"katana --version\n" +"```" +msgstr "" +"```bash\n" +"katana --version\n" +"```" + +#: src/ch02-01-basic-installation.md:75 src/ch02-04-katana.md:49 +msgid "To upgrade Katana, rerun the installation command." +msgstr "Para actualizar Katana, vuelva a ejecutar el comando de instalación." + +#: src/ch02-01-basic-installation.md:77 msgid "You are now set to code in Cairo and deploy to Starknet." msgstr "Ahora está configurado para codificar en Cairo y realizar la implementación en Starknet." -#: src/ch02-02-compile-deploy-interact.md:1 -msgid "# Compile, Deploy and Interact with a Contract" -msgstr "# Compilar, Desplegar e Interactuar con un Contrato" +#: src/ch02-02-starkli-scarb-katana.md:1 +msgid "# Introduction to Starkli, Scarb and Katana" +msgstr "# Introducción a Starkli, Scarb y Katana" -#: src/ch02-02-compile-deploy-interact.md:3 +#: src/ch02-02-starkli-scarb-katana.md:3 msgid "" "In this chapter, you’ll learn how to compile, deploy, and interact with\n" -"a Starknet smart contract written in Cairo." +"a Starknet smart contract written in Cairo using starkli, scarb and katana." msgstr "" "En este capítulo, aprenderá cómo compilar, implementar e interactuar con\n" -"un smart contract de Starknet escrito en Cairo." +"un smart contract de Starknet escrito en El Cairo usando Starkli, Scarb y Katana." -#: src/ch02-02-compile-deploy-interact.md:6 +#: src/ch02-02-starkli-scarb-katana.md:6 msgid "" "First, confirm that the following commands work on your system. If they\n" "don’t, refer to Basic Installation in this chapter." @@ -1852,1731 +1936,1479 @@ msgstr "" "Primero, confirme que los siguientes comandos funcionan en su sistema. Si no es\n" "así, consulte Instalación básica en este capítulo." -#: src/ch02-02-compile-deploy-interact.md:9 +#: src/ch02-02-starkli-scarb-katana.md:9 msgid "" "```bash\n" " scarb --version # For Cairo code compilation\n" " starkli --version # To interact with Starknet\n" +" katana --version # To declare and deploy on local development\n" "```" msgstr "" "```bash\n" -" scarb --version # For Cairo code compilation\n" -" starkli --version # To interact with Starknet\n" +" scarb --version # Para la compilación del código Cairo\n" +" starkli --version # Para interactuar con Starknet\n" +" katana --version # Para declarar y desplegar en el desarrollo local\n" "```" -#: src/ch02-02-compile-deploy-interact.md:14 -msgid "## Find the compiler versions supported" -msgstr "## Encuentre las versiones del compilador compatibles" +#: src/ch02-02-starkli-scarb-katana.md:15 +msgid "## Crafting a Starknet Smart Contract" +msgstr "## Elaboración de un Smart Contract en Starknet" + +#: src/ch02-02-starkli-scarb-katana.md:17 +msgid "**Important:** Before we proceed with this example, please ensure that the versions of both `katana` and `starkli` match the specified versions provided below." +msgstr "**Importante:** Antes de continuar con este ejemplo, asegúrese de que las versiones de `katana` y `starkli` coincidan con las versiones especificadas que se proporcionan a continuación." -#: src/ch02-02-compile-deploy-interact.md:16 +#: src/ch02-02-starkli-scarb-katana.md:19 msgid "" -"We have to make sure that our Starkli compiler version match Scarb\n" -"compiler version" +"```console\n" +" katana --version # 0.4.4\n" +" starkli --version # 0.1.20 (e4d2307)\n" +"```" msgstr "" -"Tenemos que asegurarnos de que nuestra versión del compilador Starkli\n" -"coincida con la versión del compilador Scarb" +"```console\n" +" katana --version # 0.4.4\n" +" starkli --version # 0.1.20 (e4d2307)\n" +"```" -#: src/ch02-02-compile-deploy-interact.md:19 -msgid "To find the compiler versions supported by Starkli, execute:" -msgstr "Para encontrar las versiones del compilador compatibles con Starkli, ejecute:" +#: src/ch02-02-starkli-scarb-katana.md:24 +msgid "Now begin by initiating a Scarb project:" +msgstr "Ahora comience iniciando un proyecto Scarb:" -#: src/ch02-02-compile-deploy-interact.md:21 +#: src/ch02-02-starkli-scarb-katana.md:26 msgid "" "```bash\n" -" starkli declare --help\n" +"scarb new my_contract\n" "```" msgstr "" "```bash\n" -" starkli declare --help\n" +"scarb new my_contract\n" "```" -#: src/ch02-02-compile-deploy-interact.md:25 -msgid "" -"You’ll see a list of possible compiler versions under the\n" -"`--compiler-version` flag." -msgstr "" -"Verá una lista de posibles versiones del compilador bajo el\n" -"indicador `--compiler-version`." +#: src/ch02-02-starkli-scarb-katana.md:30 +msgid "## Configure Environment Variables and the `Scarb.toml` File" +msgstr "## Configurar Variables de Entorno y el Archivo `Scarb.toml`" -#: src/ch02-02-compile-deploy-interact.md:28 +#: src/ch02-02-starkli-scarb-katana.md:32 +msgid "Review the `my_contract` project. Its structure appears as:" +msgstr "Revise el proyecto `my_contract`. Su estructura aparece como:" + +#: src/ch02-02-starkli-scarb-katana.md:34 msgid "" "```bash\n" -" ...\n" -" --compiler-version \n" -" Statically-linked Sierra compiler version [possible values: [COMPILER VERSIONS]]]\n" -" ...\n" +" src/\n" +" lib.cairo\n" +" .gitignore\n" +" Scarb.toml\n" "```" msgstr "" "```bash\n" -" ...\n" -" --compiler-version \n" -" Statically-linked Sierra compiler version [possible values: [COMPILER VERSIONS]]]\n" -" ...\n" +" src/\n" +" lib.cairo\n" +" .gitignore\n" +" Scarb.toml\n" "```" -#: src/ch02-02-compile-deploy-interact.md:35 -msgid "" -"Note that the Scarb compiler version might not align with Starkli’s\n" -"supported versions. To check Scarb’s version:" -msgstr "" -"Tenga en cuenta que es posible que la versión del compilador Scarb no se alinee con las\n" -"versiones compatibles de Starkli. Para comprobar la versión de Scarb:" - -#: src/ch02-02-compile-deploy-interact.md:42 -msgid "You’ll see a list that contains scarb, cairo and sierra version." -msgstr "Verás una lista que contiene las versiones scarb, cairo y sierra." +#: src/ch02-02-starkli-scarb-katana.md:41 +msgid "Amend the `Scarb.toml` file to integrate the `starknet` dependency and introduce the `starknet-contract` target:" +msgstr "Modifique el archivo `Scarb.toml` para integrar la dependencia `starknet` e introduzca el objetivo `starknet-contract`:" -#: src/ch02-02-compile-deploy-interact.md:44 +#: src/ch02-02-starkli-scarb-katana.md:43 msgid "" -"```bash\n" -" scarb \n" -" cairo: \n" -" sierra: \n" +"```toml\n" +" [dependencies]\n" +" starknet = \">=2.3.0\"\n" +"\n" +" [[target.starknet-contract]]\n" "```" msgstr "" -"```bash\n" -" scarb \n" -" cairo: \n" -" sierra: \n" +"```toml\n" +" [dependencies]\n" +" starknet = \">=2.3.0\"\n" +"\n" +" [[target.starknet-contract]]\n" "```" -#: src/ch02-02-compile-deploy-interact.md:50 +#: src/ch02-02-starkli-scarb-katana.md:50 +msgid "For streamlined Starkli command execution, establish environment variables. Two primary variables are essential:" +msgstr "Para una ejecución optimizada del comando Starkli, establezca variables de entorno. Dos variables principales son esenciales:" + +#: src/ch02-02-starkli-scarb-katana.md:52 msgid "" -"If there’s a mismatch, it is suggested that you install the version of\n" -"Scarb that uses the compiler version that Starkli supports. You can find\n" -"previous releases on\n" -"[Scarb](https://github.com/software-mansion/scarb/releases)'s GitHub\n" -"repo." +"- One for your account, a pre-funded account on the local development network\n" +"- Another for designating the network, specifically the local katana devnet" msgstr "" -"Si hay una discrepancia, se sugiere instalar la versión de Scarb que utiliza la versión del\n" -"compilador compatible con Starkli. Puede encontrar versiones anteriores en el repositorio\n" -"de GitHub de [Scarb](https://github.com/software-mansion/scarb/releases)." +"- Una para su cuenta, una cuenta prefinanciada en la red de desarrollo local\n" +"- Otro para designar la red, específicamente el katana devnet local" -#: src/ch02-02-compile-deploy-interact.md:56 -msgid "To install a specific version, such as `0.6.1`, run:" -msgstr "Para instalar una versión específica, como `0.6.1`, ejecute:" +#: src/ch02-02-starkli-scarb-katana.md:55 +msgid "In the `src/` directory, create a `.env` file with the following:" +msgstr "En el directorio `src/`, cree un archivo `.env` con lo siguiente:" -#: src/ch02-02-compile-deploy-interact.md:58 +#: src/ch02-02-starkli-scarb-katana.md:57 msgid "" "```bash\n" -" curl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | sh -s -- -v 0.6.1\n" +"export STARKNET_ACCOUNT=katana-0\n" +"export STARKNET_RPC=http://0.0.0.0:5050\n" "```" msgstr "" "```bash\n" -" curl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | sh -s -- -v 0.6.1\n" +"export STARKNET_ACCOUNT=katana-0\n" +"export STARKNET_RPC=http://0.0.0.0:5050\n" "```" -#: src/ch02-02-compile-deploy-interact.md:62 -msgid "## Smart Wallet Setup" -msgstr "## Configuración de Smart Wallet" +#: src/ch02-02-starkli-scarb-katana.md:62 +msgid "These settings streamline Starkli command operations." +msgstr "Estas configuraciones agilizan las operaciones de comando de Starkli." -#: src/ch02-02-compile-deploy-interact.md:64 -msgid "" -"A smart wallet comprises a Signer and an Account Descriptor. The Signer\n" -"is a smart contract with a private key for signing transactions, while\n" -"the Account Descriptor is a JSON file detailing the wallet’s address and\n" -"public key." +#: src/ch02-02-starkli-scarb-katana.md:64 src/ch02-05-testnet-deployment.md:293 +msgid "## Declaring Smart Contracts in Starknet" +msgstr "## Declarando Smart Contracts en Starknet" + +#: src/ch02-02-starkli-scarb-katana.md:66 +msgid "Deploying a Starknet smart contract requires two primary steps:" +msgstr "La implementación de un smart contract en Starknet requiere dos pasos principales:" + +#: src/ch02-02-starkli-scarb-katana.md:68 +msgid "" +"- Declare the contract's code.\n" +"- Deploy an instance of that declared code." msgstr "" -"Una billetera inteligente comprende un firmante (Signer) y un descriptor de cuenta. El Signer\n" -"es un smart contract con una clave privada para firmar transacciones, mientras que el\n" -"descriptor de cuenta es un archivo JSON que detalla la dirección y la clave pública de\n" -"la billetera." +"- Declara el código de tu contrato.\n" +"- Implementar una instancia del código declarado." + +#: src/ch02-02-starkli-scarb-katana.md:71 +msgid "Begin with the `src/lib.cairo` file, which provides a foundational template. Remove its contents and insert the following:" +msgstr "Comience con el archivo `src/lib.cairo`, que proporciona una plantilla fundamental. Retire su contenido e inserte lo siguiente:" -#: src/ch02-02-compile-deploy-interact.md:69 +#: src/ch02-02-starkli-scarb-katana.md:73 msgid "" -"1. Use Braavos or Argent X browser extensions to create your smart\n" -" wallet.\n" +"```rust\n" +"#[starknet::contract]\n" +"mod hello {\n" +" #[storage]\n" +" struct Storage {\n" +" name: felt252,\n" +" }\n" "\n" -"2. Follow the provided instructions for your chosen wallet (Argent or\n" -" Braavos).\n" +" #[constructor]\n" +" fn constructor(ref self: ContractState, name: felt252) {\n" +" self.name.write(name);\n" +" }\n" "\n" -"3. Fund your wallet with ETH. Use [Starknet Goerli\n" -" Faucet](https://faucet.goerli.starknet.io/) as needed." +" #[external(v0)]\n" +" fn get_name(self: @ContractState) -> felt252 {\n" +" self.name.read()\n" +" }\n" +" #[external(v0)]\n" +" fn set_name(ref self: ContractState, name: felt252) {\n" +" let previous = self.name.read();\n" +" self.name.write(name);\n" +" }\n" +"}\n" +"```" msgstr "" -"1. Utilice las extensiones de navegador Braavos o Argent X para crear\n" -" su smart wallet.\n" +"```rust\n" +"#[starknet::contract]\n" +"mod hello {\n" +" #[storage]\n" +" struct Storage {\n" +" name: felt252,\n" +" }\n" "\n" -"2. Siga las instrucciones proporcionadas para la billetera elegida (Argent o Braavos).\n" +" #[constructor]\n" +" fn constructor(ref self: ContractState, name: felt252) {\n" +" self.name.write(name);\n" +" }\n" "\n" -"3. Financia tu billetera con ETH. Utilice [Starknet Goerli\n" -"Faucet](https://faucet.goerli.starknet.io/) según sea necesario." +" #[external(v0)]\n" +" fn get_name(self: @ContractState) -> felt252 {\n" +" self.name.read()\n" +" }\n" +" #[external(v0)]\n" +" fn set_name(ref self: ContractState, name: felt252) {\n" +" let previous = self.name.read();\n" +" self.name.write(name);\n" +" }\n" +"}\n" +"```" -#: src/ch02-02-compile-deploy-interact.md:78 -msgid "Now you’re ready to interact with Starknet smart contracts." -msgstr "Ahora está listo para interactuar con los smart contracts de Starknet." +#: src/ch02-02-starkli-scarb-katana.md:98 +msgid "This rudimentary smart contract serves as a starting point." +msgstr "Este smart contract rudimentario sirve como punto de partida." -#: src/ch02-02-compile-deploy-interact.md:80 -msgid "### Creating a Signer" -msgstr "### Creando un Signer" +#: src/ch02-02-starkli-scarb-katana.md:100 +msgid "Compile the contract with the Scarb compiler. If Scarb isn't installed, consult the [Installation](ch02-01-basic-installation.md) section." +msgstr "Compile el contrato con el compilador Scarb. Si Scarb no está instalado, consulte la sección [Instalación](ch02-01-basic-installation.md)." -#: src/ch02-02-compile-deploy-interact.md:82 +#: src/ch02-02-starkli-scarb-katana.md:102 src/ch02-09-02-erc20-ui.md:109 src/ch02-10-01-erc20-ui.md:108 src/ch04-02-hello-account.md:113 src/ch04-03-standard-account.md:80 msgid "" -"The Signer is an essential smart contract capable of signing\n" -"transactions in Starknet. You’ll need the private key from your smart\n" -"wallet to create one, from which the public key can be derived." +"```bash\n" +"scarb build\n" +"```" msgstr "" -"El Signer es un contrato inteligente esencial capaz de firmar\n" -"transacciones en Starknet. Necesitará la clave privada de su smart\n" -"wallet para crear una, de la cual se puede derivar la clave pública." +"```bash\n" +"scarb build\n" +"```" -#: src/ch02-02-compile-deploy-interact.md:86 +#: src/ch02-02-starkli-scarb-katana.md:106 +msgid "The above command results in a compiled contract under `target/dev/`, named \"`my_contract_hello.contract_class.json`\" (check Scarb's subchapter for more details)." +msgstr "El comando anterior da como resultado un contrato compilado en `target/dev/`, llamado \"`my_contract_hello.contract_class.json`\" (consulte el subcapítulo de Scarb para obtener más detalles)." + +#: src/ch02-02-starkli-scarb-katana.md:108 +msgid "Having compiled the smart contract, it's time to declare it with Starkli and katana. First, ensure your project acknowledges the environmental variables:" +msgstr "Habiendo compilado el smart contract, es hora de declararlo con Starkli y Katana. Primero, asegúrese de que su proyecto reconozca las variables ambientales:" + +#: src/ch02-02-starkli-scarb-katana.md:110 msgid "" -"Starkli enables secure storage of your private key through a keystore\n" -"file. This encrypted file can be accessed using a password and is\n" -"generally stored in the default Starkli directory." +"```bash\n" +"source .env\n" +"```" msgstr "" -"Starkli permite el almacenamiento seguro de su clave privada a través de un archivo\n" -"de almacén de claves (keystore). Se puede acceder a este archivo cifrado mediante una\n" -"contraseña y generalmente se almacena en el directorio predeterminado de Starkli." +"```bash\n" +"source .env\n" +"```" -#: src/ch02-02-compile-deploy-interact.md:90 -msgid "First, create the default directory:" -msgstr "Primero, cree el directorio predeterminado:" +#: src/ch02-02-starkli-scarb-katana.md:114 +msgid "Next, launch Katana. In a separate terminal, run (more details in the Katan subchapter):" +msgstr "A continuación, lanza Katana. En una terminal separada, ejecute (más detalles en el subcapítulo de Katana):" -#: src/ch02-02-compile-deploy-interact.md:92 +#: src/ch02-02-starkli-scarb-katana.md:116 src/ch02-06-starkli.md:29 src/ch02-06-01-connection-script.md:11 msgid "" "```bash\n" -" mkdir ~/.starkli-wallets/deployer -p\n" +"katana\n" "```" msgstr "" "```bash\n" -" mkdir ~/.starkli-wallets/deployer -p\n" +"katana\n" "```" -#: src/ch02-02-compile-deploy-interact.md:96 +#: src/ch02-02-starkli-scarb-katana.md:120 +msgid "To declare your contract, execute:" +msgstr "Para declarar su contrato, ejecute:" + +#: src/ch02-02-starkli-scarb-katana.md:122 src/ch02-06-starkli.md:61 msgid "" -"Then generate the keystore file. The signer command contains subcommands\n" -"for creating a keystore file from a private key or completely create a\n" -"new one. In this tutorial, we’ll use the private key option which is the\n" -"most common use case. You need to provide the path to the keystore file\n" -"you want to create. You can give any name to the keystore file, you will\n" -"likely have several wallets. In this tutorial, we will use the name\n" -"`my_keystore_ 1.json`." +"```bash\n" +"starkli declare target/dev/my_contract_hello.contract_class.json\n" +"```" +msgstr "" +"```bash\n" +"starkli declare target/dev/my_contract_hello.contract_class.json\n" +"```" + +#: src/ch02-02-starkli-scarb-katana.md:126 +msgid "" +"Facing an \"Error: Invalid contract class\"? It indicates a version mismatch between Scarb's compiler and Starkli. Refer to the earlier steps to sync the versions. Typically, Starkli supports " +"compiler versions approved by mainnet, even if the most recent Scarb version isn't compatible." +msgstr "" +"¿Se enfrenta a un \"Error: Invalid contract class\"? Indica una discrepancia de versiones entre el compilador de Scarb y Starkli. Consulte los pasos anteriores para sincronizar las versiones. " +"Normalmente, Starkli admite versiones del compilador aprobadas por la red principal, incluso si la versión más reciente de Scarb no es compatible." + +#: src/ch02-02-starkli-scarb-katana.md:128 +msgid "" +"Upon successful command execution, you'll obtain a contract class hash: This\n" +"unique hash serves as the identifier for your contract class within\n" +"Starknet. For example:" msgstr "" -"Luego genere el archivo del keystore. El comando del signer contiene subcomandos para crear un archivo de keystore a partir de una clave privada o crear uno completamente " -"nuevo. En este tutorial, usaremos la opción de clave privada, que es el caso de uso más común. Debe proporcionar la ruta al archivo del almacén de claves que desea crear. " -"Puede darle cualquier nombre al archivo del almacén de claves; probablemente tendrá varias billeteras. En este tutorial, usaremos el nombre `my_keystore_ 1.json`." +"Tras la ejecución exitosa del comando, obtendrá un hash de clase de contrato: este\n" +"hash único sirve como identificador para su clase de contrato dentro\n" +"Starknet. Por ejemplo:" -#: src/ch02-02-compile-deploy-interact.md:104 +#: src/ch02-02-starkli-scarb-katana.md:132 src/ch02-06-starkli.md:67 msgid "" "```bash\n" -" starkli signer keystore from-key ~/.starkli-wallets/deployer/my_keystore_1.json\n" -" Enter private key:\n" -" Enter password:\n" +"Class hash declared: 0x00bfb49ff80fd7ef5e84662d6d256d49daf75e0c5bd279b20a786f058ca21418\n" "```" msgstr "" "```bash\n" -" starkli signer keystore from-key ~/.starkli-wallets/deployer/my_keystore_1.json\n" -" Enter private key:\n" -" Enter password:\n" +"Class hash declared: 0x00bfb49ff80fd7ef5e84662d6d256d49daf75e0c5bd279b20a786f058ca21418\n" "```" -#: src/ch02-02-compile-deploy-interact.md:110 +#: src/ch02-02-starkli-scarb-katana.md:136 +msgid "Consider this hash as the contract class's _address_." +msgstr "Considere este hash como la class's _address_ del contrato." + +#: src/ch02-02-starkli-scarb-katana.md:138 +msgid "If you try to declare an already existing contract class, don't fret. Just proceed. You might see:" +msgstr "Si intenta declarar una clase de contrato ya existente, no se preocupe. Simplemente continúa. Es posible que vea:" + +#: src/ch02-02-starkli-scarb-katana.md:140 msgid "" -"In the private key prompt, paste the private key of your smart wallet.\n" -"In the password prompt, enter a password of your choice. You will need\n" -"this password to sign transactions using Starkli." +"```bash\n" +"Not declaring class as its already declared. Class hash:\n" +"0x00bfb49ff80fd7ef5e84662d6d256d49daf75e0c5bd279b20a786f058ca21418\n" +"```" msgstr "" -"En el mensaje de clave privada, pegue la clave privada de su billetera inteligente. En la solicitud de contraseña, ingrese la contraseña de su elección. Necesitará esta " -"contraseña para firmar transacciones utilizando Starkli." +"```bash\n" +"Not declaring class as its already declared. Class hash:\n" +"0x00bfb49ff80fd7ef5e84662d6d256d49daf75e0c5bd279b20a786f058ca21418\n" +"```" + +#: src/ch02-02-starkli-scarb-katana.md:145 +msgid "## Deploying Starknet Smart Contracts" +msgstr "## Implementación de Smart Contracts en Starknet" + +#: src/ch02-02-starkli-scarb-katana.md:147 +msgid "To deploy a smart contract on the katana local devnet, use the following command. It primarily requires:" +msgstr "Para implementar un smart contract en el devnet local de katana, utilice el siguiente comando. Requiere principalmente:" -#: src/ch02-02-compile-deploy-interact.md:114 +#: src/ch02-02-starkli-scarb-katana.md:149 msgid "" -"Export the private key from your Braavos or Argent wallet. For Argent X,\n" -"you can find it in the \"Settings\" section → Select your Account →\n" -"\"Export Private Key\". For Braavos, you can find it in the \"Settings\"\n" -"section → \"Privacy and Security\" → \"Export Private Key\"." +"1. Your contract's class hash.\n" +"2. Constructor arguments your contract needs (in our example, a _name_ of type `felt252`)." msgstr "" -"Exporte la clave privada desde su billetera Braavos o Argent. Para Argent X, puede encontrarlo en la sección\"Settings\" section → Select your Account → \"Export Private Key" -"\". Para Braavos, puede encontrarlo en la sección \"Settings\" section → \"Privacy and Security\" → \"Export Private Key\"." +"1. El hash de clase de su contrato.\n" +"2. Argumentos del constructor que su contrato necesita (en nuestro ejemplo, a _name_ of type `felt252`)." -#: src/ch02-02-compile-deploy-interact.md:119 +#: src/ch02-02-starkli-scarb-katana.md:152 +msgid "Here's the command structure:" +msgstr "Aquí está la estructura de comando:" + +#: src/ch02-02-starkli-scarb-katana.md:154 src/ch02-05-testnet-deployment.md:383 msgid "" -"While knowing the private key of a smart wallet is necessary to sign\n" -"transactions, it’s not sufficient. We also need to inform Starkli about\n" -"the signing mechanism employed by our smart wallet created by Braavos or\n" -"Argent X. Does it use an elliptic curve? If yes, which one? This is the\n" -"reason why we need an account descriptor file." +"```bash\n" +" starkli deploy \\\n" +" \\\n" +" \n" +"```" msgstr "" -"Si bien es necesario conocer la clave privada de una billetera inteligente para firmar transacciones, no es suficiente. También debemos informar a Starkli sobre el mecanismo " -"de firma empleado por nuestra billetera inteligente creada por Braavos o Argent X. ¿Utiliza una curva elíptica? ¿Si sí, cual? Ésta es la razón por la que necesitamos un " -"archivo descriptor de cuenta." +"```bash\n" +" starkli deploy \\\n" +" \\\n" +" \n" +"```" -#: src/ch02-02-compile-deploy-interact.md:125 -msgid "#### [OPTIONAL] The Architecture of the Starknet Signer" -msgstr "#### [OPCIONAL] La arquitectura del Signer en Starknet" +#: src/ch02-02-starkli-scarb-katana.md:160 +msgid "Notice the constructor inputs are in felt format. So we need to convert a short string to a felt252 format. We can use the `to-cairo-string` command for this:" +msgstr "Observe que las entradas del constructor están en formato felt. Entonces necesitamos convertir una string corta al formato Felt252. Podemos usar el comando `to-cairo-string` para esto:" -#: src/ch02-02-compile-deploy-interact.md:127 +#: src/ch02-02-starkli-scarb-katana.md:162 msgid "" -"The Starknet Signer plays an instrumental role in securing your\n" -"transactions. Let’s demystify what goes on under the hood." -msgstr "Starknet Signer desempeña un papel fundamental a la hora de proteger sus transacciones. Desmitifiquemos lo que sucede bajo el capó." +"```bash\n" +" starkli to-cairo-string \n" +"```" +msgstr "" +"```bash\n" +" starkli to-cairo-string \n" +"```" -#: src/ch02-02-compile-deploy-interact.md:130 -msgid "Key Components:" -msgstr "Componentes Clave:" +#: src/ch02-02-starkli-scarb-katana.md:166 +msgid "In this case, we'll use the string \"starknetbook\" as the name:" +msgstr "En este caso, usaremos la cadena \"starknetbook\" como nombre:" -#: src/ch02-02-compile-deploy-interact.md:132 +#: src/ch02-02-starkli-scarb-katana.md:168 msgid "" -"1. **Private Key**: A 256-bit/32-byte/64-character (ignoring the _0x_\n" -" prefix) hexadecimal key that is the cornerstone of your wallet’s\n" -" security.\n" -"\n" -"2. **Public Key**: Derived from the private key, it’s also a\n" -" 256-bit/32-byte/64-character hexadecimal key.\n" -"\n" -"3. **Smart Wallet Address**: Unlike Ethereum, the address here is\n" -" influenced by the public key, class hash, and a salt. **[Learn more\n" -" in Starknet\n" -" Documentation](https://docs.starknet.io/documentation/architecture_and_concepts/Smart_Contracts/contract-address/)**." +"```bash\n" +" starkli to-cairo-string starknetbook\n" +"```" msgstr "" -"1. **Private Key**: una clave hexadecimal de 256 bits/32 bytes/64 caracteres (ignorando el prefijo _0x_) que es la piedra angular de la seguridad de su wallet.\n" -"\n" -"2. **Public Key**: Derivada de la clave privada, también es una clave hexadecimal de 256 bits/32 bytes/64 caracteres.\n" -"\n" -"3. **Dirección de la Smart Wallet**: A diferencia de Ethereum, la dirección aquí está influenciada por la publick key, el class hash y una salt. **[Obtenga más información " -"en la documentación de Starknet](https://docs.starknet.io/documentation/architecture_and_concepts/Smart_Contracts/contract-address/)**." +"```bash\n" +" starkli to-cairo-string starknetbook\n" +"```" -#: src/ch02-02-compile-deploy-interact.md:144 -msgid "To view the details of the previously created keystore file:" -msgstr "Para ver los detalles del archivo de keystore creado anteriormente:" +#: src/ch02-02-starkli-scarb-katana.md:172 +msgid "The output:" +msgstr "La salida:" -#: src/ch02-02-compile-deploy-interact.md:146 +#: src/ch02-02-starkli-scarb-katana.md:174 msgid "" "```bash\n" -" cat ~/.starkli-wallets/deployer/my_keystore_1.json\n" +" 0x737461726b6e6574626f6f6b\n" "```" msgstr "" "```bash\n" -" cat ~/.starkli-wallets/deployer/my_keystore_1.json\n" +" 0x737461726b6e6574626f6f6b\n" "```" -#: src/ch02-02-compile-deploy-interact.md:150 -msgid "Anatomy of the `keystore.json` File:" -msgstr "Anatomía del archivo `keystore.json`:" +#: src/ch02-02-starkli-scarb-katana.md:178 +msgid "Now deploy using a class hash and constructor input:" +msgstr "Ahora implemente usando un class hash y una entrada de constructor:" -#: src/ch02-02-compile-deploy-interact.md:152 +#: src/ch02-02-starkli-scarb-katana.md:180 msgid "" -"```json\n" -"{\n" -" \"crypto\": {\n" -" \"cipher\": \"aes-128-ctr\",\n" -" \"cipherparams\": {\n" -" \"iv\": \"dba5f9a67456b121f3f486aa18e24db7\"\n" -" },\n" -" \"ciphertext\": \"b3cda3df39563e3dd61064149d6ed8c9ab5f07fbcd6347625e081fb695ddf36c\",\n" -" \"kdf\": \"scrypt\",\n" -" \"kdfparams\": {\n" -" \"dklen\": 32,\n" -" \"n\": 8192,\n" -" \"p\": 1,\n" -" \"r\": 8,\n" -" \"salt\": \"6dd5b06b1077ba25a7bf511510ea0c608424c6657dd3ab51b93029244537dffb\"\n" -" },\n" -" \"mac\": \"55e1616d9ddd052864a1ae4207824baac58a6c88798bf28585167a5986585ce6\"\n" -" },\n" -" \"id\": \"afbb9007-8f61-4e62-bf14-e491c30fd09a\",\n" -" \"version\": 3\n" -"}\n" +"```bash\n" +" starkli deploy \\\n" +" 0x00bfb49ff80fd7ef5e84662d6d256d49daf75e0c5bd279b20a786f058ca21418 \\\n" +" 0x737461726b6e6574626f6f6b\n" "```" msgstr "" -"```json\n" -"{\n" -" \"crypto\": {\n" -" \"cipher\": \"aes-128-ctr\",\n" -" \"cipherparams\": {\n" -" \"iv\": \"dba5f9a67456b121f3f486aa18e24db7\"\n" -" },\n" -" \"ciphertext\": \"b3cda3df39563e3dd61064149d6ed8c9ab5f07fbcd6347625e081fb695ddf36c\",\n" -" \"kdf\": \"scrypt\",\n" -" \"kdfparams\": {\n" -" \"dklen\": 32,\n" -" \"n\": 8192,\n" -" \"p\": 1,\n" -" \"r\": 8,\n" -" \"salt\": \"6dd5b06b1077ba25a7bf511510ea0c608424c6657dd3ab51b93029244537dffb\"\n" -" },\n" -" \"mac\": \"55e1616d9ddd052864a1ae4207824baac58a6c88798bf28585167a5986585ce6\"\n" -" },\n" -" \"id\": \"afbb9007-8f61-4e62-bf14-e491c30fd09a\",\n" -" \"version\": 3\n" -"}\n" +"```bash\n" +" starkli deploy \\\n" +" 0x00bfb49ff80fd7ef5e84662d6d256d49daf75e0c5bd279b20a786f058ca21418 \\\n" +" 0x737461726b6e6574626f6f6b\n" "```" -#: src/ch02-02-compile-deploy-interact.md:175 +#: src/ch02-02-starkli-scarb-katana.md:186 +msgid "After running, expect an output similar to:" +msgstr "Después de ejecutar, espere un resultado similar a:" + +#: src/ch02-02-starkli-scarb-katana.md:188 msgid "" -"- **`version`**: The version of the smart wallet implementation.\n" -"\n" -"- **`id`**: A randomly generated identification string.\n" -"\n" -"- **`crypto`**: Houses all encryption details." +"```bash\n" +" Deploying class 0x00bfb49ff80fd7ef5e84662d6d256d49daf75e0c5bd279b20a786f058ca21418 with salt 0x054645c0d1e766ddd927b3bde150c0a3dc0081af7fb82160c1582e05f6018794...\n" +" The contract will be deployed at address 0x07cdd583619462c2b14532eddb2b169b8f8d94b63bfb5271dae6090f95147a44\n" +" Contract deployment transaction: 0x00413d9638fecb75eb07593b5c76d13a68e4af7962c368c5c2e810e7a310d54c\n" +" Contract deployed: 0x07cdd583619462c2b14532eddb2b169b8f8d94b63bfb5271dae6090f95147a44\n" +"```" msgstr "" -"- **`version`**: La versión de la implementación de la billetera inteligente.\n" -"\n" -"- **`id`**: Una cadena de identificación generada aleatoriamente.\n" -"\n" -"- **`crypto`**: Alberga todos los detalles de cifrado." +"```bash\n" +" Deploying class 0x00bfb49ff80fd7ef5e84662d6d256d49daf75e0c5bd279b20a786f058ca21418 with salt 0x054645c0d1e766ddd927b3bde150c0a3dc0081af7fb82160c1582e05f6018794...\n" +" The contract will be deployed at address 0x07cdd583619462c2b14532eddb2b169b8f8d94b63bfb5271dae6090f95147a44\n" +" Contract deployment transaction: 0x00413d9638fecb75eb07593b5c76d13a68e4af7962c368c5c2e810e7a310d54c\n" +" Contract deployed: 0x07cdd583619462c2b14532eddb2b169b8f8d94b63bfb5271dae6090f95147a44\n" +"```" -#: src/ch02-02-compile-deploy-interact.md:181 -msgid "Inside **`crypto`**:" -msgstr "Dentro de **`crypto`**:" +#: src/ch02-02-starkli-scarb-katana.md:195 +msgid "## Interacting with Starknet Contracts" +msgstr "## Interactuar con Contracts de Starknet" -#: src/ch02-02-compile-deploy-interact.md:183 +#: src/ch02-02-starkli-scarb-katana.md:197 +msgid "Using Starkli, you can interact with smart contracts through two primary methods:" +msgstr "Con Starkli, puede interactuar con contratos inteligentes a través de dos métodos principales:" + +#: src/ch02-02-starkli-scarb-katana.md:199 msgid "" -"- **`cipher`**: Specifies the encryption algorithm used, which in this\n" -" case is AES-128-CTR.\n" -"\n" -" - **AES (Advanced Encryption Standard)**: A globally accepted\n" -" encryption standard.\n" -"\n" -" - **128**: Refers to the key size in bits, making it a 128-bit\n" -" key.\n" -"\n" -" - **CTR (Counter Mode)**: A specific mode of operation for the AES\n" -" cipher.\n" -"\n" -"- **`cipherparams`**: Contains an Initialization Vector (IV), which\n" -" ensures that encrypting the same plaintext with the same key will\n" -" produce different ciphertexts.\n" -"\n" -" - **`iv` (Initialization Vector)**: A 16-byte hex string that\n" -" serves as a random and unique starting point for each encryption\n" -" operation.\n" -"\n" -"- **`ciphertext`**: This is the private key after encryption, securely\n" -" stored so that only the correct password can reveal it.\n" -"\n" -"- **`kdf` and `kdfparams`**: KDF stands for Key Derivation Function.\n" -" This adds a layer of security by requiring computational work,\n" -" making brute-force attacks harder.\n" -"\n" -" - **`dklen`**: The length (in bytes) of the derived key. Typically\n" -" 32 bytes.\n" -"\n" -" - **`n`**: A cost factor representing CPU/memory usage. A higher\n" -" value means more computational work is needed, thus increasing\n" -" security.\n" -"\n" -" - **`p`**: Parallelization factor, affecting the computational\n" -" complexity.\n" -"\n" -" - **`r`**: Block size for the hash function, again affecting\n" -" computational requirements.\n" -"\n" -" - **`salt`**: A random value that is combined with the password to\n" -" deter dictionary attacks.\n" -"\n" -"- **`mac` (Message Authentication Code)**: This is a cryptographic\n" -" code that ensures the integrity of the message (the encrypted\n" -" private key in this case). It is generated using a hash of both the\n" -" ciphertext and a portion of the derived key." +"- `call`: For read-only functions.\n" +"- `invoke`: For functions that alter the state." msgstr "" -"- **`cipher`**: Especifica el algoritmo de cifrado utilizado, que en este caso es AES-128-CTR.\n" -"\n" -" - **AES (Estándar de cifrado avanzado)**: Un estándar de cifrado aceptado globalmente.\n" -"\n" -" - **128**: Hace referencia al tamaño de la clave en bits, por lo que es una clave de 128 bits.\n" -"\n" -" - **CTR (Modo Contador)**: Un modo de operación específico para el cifrado AES.\n" -"\n" -"- **`cipherparams`**: Contiene un vector de inicialización (IV), que garantiza que cifrar el mismo texto sin formato con la misma clave producirá textos cifrados " -"diferentes.\n" -"\n" -" - **`iv` (Vector de inicialización)**: Una cadena hexadecimal de 16 bytes que sirve como punto de partida aleatorio y único para cada operación de cifrado.\n" -"\n" -"- **`ciphertext`**: Esta es la clave privada después del cifrado, almacenada de forma segura para que solo la contraseña correcta pueda revelarla.\n" -"\n" -"- **`kdf` y `kdfparams`**: KDF significa Función de derivación de claves. Esto añade una capa de seguridad al requerir trabajo computacional,\n" -" haciendo que los ataques de fuerza bruta sean más difíciles.\n" -"\n" -" - **`dklen`**: La longitud (en bytes) de la clave derivada. Normalmente 32 bytes.\n" -"\n" -" - **`n`**: un factor de costo que representa el uso de CPU/memoria. Un valor más alto significa que se necesita más trabajo computacional, lo que aumenta la seguridad.\n" -"\n" -" - **`p`**: Factor de paralelización, que afecta la complejidad computacional.\n" -"\n" -" - **`r`**: Tamaño de bloque para la función hash, lo que nuevamente afecta los requisitos computacionales.\n" -"\n" -" - **`salt`**: Un valor aleatorio que se combina con la contraseña para disuadir ataques de diccionario.\n" -"\n" -"- **`mac` (Código de autenticación de mensaje)**: Este es un código criptográfico que asegura la integridad del mensaje (el mensaje cifrado\n" -" clave privada en este caso). Se genera utilizando un hash tanto del texto cifrado como de una parte de la clave derivada." +"- `call`: Para funciones de solo lectura.\n" +"- `invoke`: Para funciones que alteran el estado." -#: src/ch02-02-compile-deploy-interact.md:231 -msgid "### Creating an Account Descriptor" -msgstr "### Creación de un Descriptor de Cuenta" +#: src/ch02-02-starkli-scarb-katana.md:202 +msgid "### Reading Data with `call`" +msgstr "### Leyendo Datos con `call`" -#: src/ch02-02-compile-deploy-interact.md:233 +#: src/ch02-02-starkli-scarb-katana.md:204 msgid "" -"An Account Descriptor informs Starkli about your smart wallet’s unique\n" -"features, such as its signing mechanism. You can generate this\n" -"descriptor using Starkli’s `fetch` subcommand under the `account`\n" -"command. The `fetch` subcommand takes your on-chain wallet address as\n" -"input and generates the account descriptor file. The account descriptor\n" -"file is a JSON file that contains the details of your smart wallet." +"The `call` command let's you query contract functions without transacting. For instance, if you want to determine the current contract owner using the `get_name` function, which\n" +"requires no arguments:" msgstr "" -"Un Descriptor de cuenta informa a Starkli sobre las características únicas de su billetera inteligente, como su mecanismo de firma. Puede generar este descriptor utilizando " -"el subcomando`fetch` de Starkli bajo el comando `account`. El subcomando `fetch` toma la dirección de su billetera en cadena como entrada y genera el archivo descriptor de " -"la cuenta. El archivo descriptor de cuenta es un archivo JSON que contiene los detalles de su billetera inteligente." +"El comando `call` le permite consultar funciones de contrato sin realizar transacciones. Por ejemplo, si desea determinar el propietario del contrato actual utilizando la función `get_name`, que\n" +"no requiere argumentos:" -#: src/ch02-02-compile-deploy-interact.md:240 +#: src/ch02-02-starkli-scarb-katana.md:207 msgid "" "```bash\n" -" starkli account fetch --output ~/.starkli-wallets/deployer/my_account_1.json\n" +" starkli call \\\n" +" \\\n" +" get_name\n" "```" msgstr "" "```bash\n" -" starkli account fetch --output ~/.starkli-wallets/deployer/my_account_1.json\n" +" starkli call \\\n" +" \\\n" +" get_name\n" "```" -#: src/ch02-02-compile-deploy-interact.md:244 +#: src/ch02-02-starkli-scarb-katana.md:213 msgid "" -"After running the command, you’ll see a message like the one below.\n" -"We’re using a Braavos wallet as an example, but the steps are the same\n" -"for an Argent wallet." -msgstr "" -"Después de ejecutar el comando, verá un mensaje como el siguiente. Estamos usando una billetera Braavos como ejemplo, pero los pasos son los mismos para una billetera Argent." +"Replace `` with the address of your contract. The\n" +"command will return the owner’s address, which was initially set during\n" +"the contract’s deployment:" +msgstr "Reemplace `` con la dirección de su contrato. El comando devolverá la dirección del owner, que se estableció inicialmente durante la implementación del contrato:" -#: src/ch02-02-compile-deploy-interact.md:248 +#: src/ch02-02-starkli-scarb-katana.md:217 msgid "" "```bash\n" -" Account contract type identified as: Braavos\n" -" Description: Braavos official proxy account\n" -" Downloaded new account config file: ~/.starkli-wallets/deployer/my_account_1.json\n" +" [\n" +" \"0x0000000000000000000000000000000000000000737461726b6e6574626f6f6b\"\n" +" ]\n" "```" msgstr "" "```bash\n" -" Account contract type identified as: Braavos\n" -" Description: Braavos official proxy account\n" -" Downloaded new account config file: ~/.starkli-wallets/deployer/my_account_1.json\n" +" [\n" +" \"0x0000000000000000000000000000000000000000737461726b6e6574626f6f6b\"\n" +" ]\n" "```" -#: src/ch02-02-compile-deploy-interact.md:254 -msgid "To see the details of your Account Descriptor, run:" -msgstr "Para ver los detalles de su Descriptor de Cuenta, ejecute:" +#: src/ch02-02-starkli-scarb-katana.md:223 +msgid "But what is this lengthy output? In Starknet, we use the `felt252` data type to represent strings. This can be decoded into its string representation:" +msgstr "¿Pero qué es este largo resultado? En Starknet, utilizamos el tipo de datos `felt252` para representar cadenas. Esto se puede decodificar en su representación de cadena:" -#: src/ch02-02-compile-deploy-interact.md:256 +#: src/ch02-02-starkli-scarb-katana.md:225 msgid "" "```bash\n" -" cat ~/.starkli-wallets/deployer/my_account_1.json\n" +"starkli parse-cairo-string 0x737461726b6e6574626f6f6b\n" "```" msgstr "" "```bash\n" -" cat ~/.starkli-wallets/deployer/my_account_1.json\n" +"starkli parse-cairo-string 0x737461726b6e6574626f6f6b\n" "```" -#: src/ch02-02-compile-deploy-interact.md:260 -msgid "Here’s what a typical descriptor might look like:" -msgstr "Así es como podría verse un descriptor típico:" +#: src/ch02-02-starkli-scarb-katana.md:229 +msgid "The result:" +msgstr "El resultado:" -#: src/ch02-02-compile-deploy-interact.md:262 +#: src/ch02-02-starkli-scarb-katana.md:231 msgid "" -"```json\n" -"{\n" -" \"version\": 1,\n" -" \"variant\": {\n" -" \"type\": \"braavos\",\n" -" \"version\": 1,\n" -" \"implementation\": \"0x5dec330eebf36c8672b60db4a718d44762d3ae6d1333e553197acb47ee5a062\",\n" -" \"multisig\": {\n" -" \"status\": \"off\"\n" -" },\n" -" \"signers\": [\n" -" {\n" -" \"type\": \"stark\",\n" -" \"public_key\": \"0x49759ed6197d0d385a96f9d8e7af350848b07777e901f5570b3dc2d9744a25e\"\n" -" }\n" -" ]\n" -" },\n" -" \"deployment\": {\n" -" \"status\": \"deployed\",\n" -" \"class_hash\": \"0x3131fa018d520a037686ce3efddeab8f28895662f019ca3ca18a626650f7d1e\",\n" -" \"address\": \"0x6dcb489c1a93069f469746ef35312d6a3b9e56ccad7f21f0b69eb799d6d2821\"\n" -" }\n" -"}\n" +"```bash\n" +"starknetbook\n" "```" msgstr "" -"```json\n" -"{\n" -" \"version\": 1,\n" -" \"variant\": {\n" -" \"type\": \"braavos\",\n" -" \"version\": 1,\n" -" \"implementation\": \"0x5dec330eebf36c8672b60db4a718d44762d3ae6d1333e553197acb47ee5a062\",\n" -" \"multisig\": {\n" -" \"status\": \"off\"\n" -" },\n" -" \"signers\": [\n" -" {\n" -" \"type\": \"stark\",\n" -" \"public_key\": \"0x49759ed6197d0d385a96f9d8e7af350848b07777e901f5570b3dc2d9744a25e\"\n" -" }\n" -" ]\n" -" },\n" -" \"deployment\": {\n" -" \"status\": \"deployed\",\n" -" \"class_hash\": \"0x3131fa018d520a037686ce3efddeab8f28895662f019ca3ca18a626650f7d1e\",\n" -" \"address\": \"0x6dcb489c1a93069f469746ef35312d6a3b9e56ccad7f21f0b69eb799d6d2821\"\n" -" }\n" -"}\n" +"```bash\n" +"starknetbook\n" "```" -#: src/ch02-02-compile-deploy-interact.md:287 -msgid "Note: The structure will differ if you use an Argent wallet." -msgstr "Note: The structure will differ if you use an Argent wallet." - -#: src/ch02-02-compile-deploy-interact.md:289 -msgid "## Setting up Environment Variables" -msgstr "## Configuración de Variables de Entorno" +#: src/ch02-02-starkli-scarb-katana.md:235 +msgid "## Modifying Contract State with `invoke`" +msgstr "## Modificando el Estado del Contrato con `invoke`" -#: src/ch02-02-compile-deploy-interact.md:291 -msgid "" -"To simplify Starkli commands, you can set environment variables. Two key\n" -"variables are crucial: one for the Signer’s keystore file location and\n" -"another for the Account Descriptor file." -msgstr "" -"Para simplificar los comandos de Starkli, puede configurar variables de entorno. Dos variables clave son cruciales: una para la ubicación del archivo del keystore del " -"firmante y otra para el archivo del descriptor de cuenta." +#: src/ch02-02-starkli-scarb-katana.md:237 +msgid "To alter the contract's state, use the `invoke` command. For instance, if you want to update the name field in the storage, utilize the `set_name` function:" +msgstr "Para alterar el estado del contrato, use el comando `invoke`. Por ejemplo, si desea actualizar el campo de nombre en el almacenamiento, utilice la función `set_name`:" -#: src/ch02-02-compile-deploy-interact.md:295 +#: src/ch02-02-starkli-scarb-katana.md:239 msgid "" "```bash\n" -" export STARKNET_ACCOUNT=~/.starkli-wallets/deployer/my_account_1.json\n" -" export STARKNET_KEYSTORE=~/.starkli-wallets/deployer/my_keystore_1.json\n" +" starkli invoke \\\n" +" \\\n" +" set_name \\\n" +" \n" "```" msgstr "" "```bash\n" -" export STARKNET_ACCOUNT=~/.starkli-wallets/deployer/my_account_1.json\n" -" export STARKNET_KEYSTORE=~/.starkli-wallets/deployer/my_keystore_1.json\n" +" starkli invoke \\\n" +" \\\n" +" set_name \\\n" +" \n" "```" -#: src/ch02-02-compile-deploy-interact.md:300 -msgid "" -"Setting these variables makes running Starkli commands easier and more\n" -"efficient." -msgstr "Configurar estas variables hace que la ejecución de comandos Starkli sea más fácil y eficiente." - -#: src/ch02-02-compile-deploy-interact.md:303 -msgid "## Declaring Smart Contracts in Starknet" -msgstr "## Declarando Smart Contracts en Starknet" - -#: src/ch02-02-compile-deploy-interact.md:305 -msgid "Deploying a smart contract on Starknet involves two steps:" -msgstr "Implementar un contrato inteligente en Starknet implica dos pasos:" +#: src/ch02-02-starkli-scarb-katana.md:246 +msgid "Where:" +msgstr "Dónde:" -#: src/ch02-02-compile-deploy-interact.md:307 +#: src/ch02-02-starkli-scarb-katana.md:248 msgid "" -"- Declare your contract’s code.\n" -"\n" -"- Deploy an instance of the declared code." +"- **``** is the address of your contract.\n" +"- **``** is the new value for the **`name`** field, in felt252 format." msgstr "" -"- Declara el código de tu contrato.\n" -"\n" -"- Implementar una instancia del código declarado." +"- **``** es la dirección de su contrato.\n" +"- **``** es el nuevo valor para el campo **`name`**, en formato felt252." -#: src/ch02-02-compile-deploy-interact.md:311 +#: src/ch02-02-starkli-scarb-katana.md:251 +msgid "For example, to update the name to \"Omar\", first convert the string \"Omar\" to its felt252 representation:" +msgstr "Por ejemplo, para actualizar el nombre a \"Omar\", primero convierta la cadena \"Omar\" a su representación felt252:" + +#: src/ch02-02-starkli-scarb-katana.md:253 msgid "" -"To get started, navigate to the `contracts/` directory in the [first\n" -"chapter](https://github.com/starknet-edu/starknetbook/tree/main/chapters/book/modules/chapter_1/pages/contracts)\n" -"of the Starknet Book repo. The `src/lib.cairo` file contains a basic\n" -"contract to practice with." +"```bash\n" +" starkli to-cairo-string Omar\n" +"```" msgstr "" -"Para comenzar, navegue hasta el directorio `contracts/` en el [primer capítulo](https://github.com/starknet-edu/starknetbook/tree/main/chapters/book/modules/chapter_1/pages/" -"contracts)\n" -"del repositorio de Starknet Book. El archivo `src/lib.cairo` contiene un contrato básico para practicar." +"```bash\n" +" starkli to-cairo-string Omar\n" +"```" + +#: src/ch02-02-starkli-scarb-katana.md:257 +msgid "This will return:" +msgstr "Esto devolverá:" -#: src/ch02-02-compile-deploy-interact.md:316 +#: src/ch02-02-starkli-scarb-katana.md:259 msgid "" -"First, compile the contract using the Scarb compiler. If you haven’t\n" -"installed Scarb, follow the installation guide in the [Setting up your\n" -"Environment](https://book.starknet.io/chapter_1/environment_setup.html)\n" -"section." +"```bash\n" +" 0x4f6d6172\n" +"```" msgstr "" -"Primero, compila el contrato usando el compilador Scarb. Si no ha instalado Scarb, siga la guía de instalación en la sección [Configuración de su entorno] (https://book." -"starknet.io/chapter_1/environment_setup.html)." +"```bash\n" +" 0x4f6d6172\n" +"```" -#: src/ch02-02-compile-deploy-interact.md:321 +#: src/ch02-02-starkli-scarb-katana.md:263 +msgid "Now, proceed with the `invoke` command:" +msgstr "Ahora, continúa con el comando `invoke`:" + +#: src/ch02-02-starkli-scarb-katana.md:265 msgid "" "```bash\n" -" scarb build\n" +" starkli invoke 0x07cdd583619462c2b14532eddb2b169b8f8d94b63bfb5271dae6090f95147a44 set_name 0x4f6d6172\n" "```" msgstr "" "```bash\n" -" scarb build\n" +" starkli invoke 0x07cdd583619462c2b14532eddb2b169b8f8d94b63bfb5271dae6090f95147a44 set_name 0x4f6d6172\n" "```" -#: src/ch02-02-compile-deploy-interact.md:325 -msgid "" -"This creates a compiled contract in `target/dev/` as\n" -"\"contracts_Ownable.sierra.json\" (in Chapter 2 of the book we will learn\n" -"more details about Scarb)." -msgstr "Esto crea un contrato compilado en `target/dev/` como \"contracts_Ownable.sierra.json\" (en el Capítulo 2 del libro aprenderemos más detalles sobre Scarb)." +#: src/ch02-02-starkli-scarb-katana.md:269 +msgid "Bravo! You've adeptly modified and interfaced with your Starknet contract." +msgstr "¡Bravo! Ha modificado e interactuado hábilmente con su contrato Starknet." -#: src/ch02-02-compile-deploy-interact.md:329 +#: src/ch02-03-scarb.md:1 +msgid "# Scarb: The Package Manager" +msgstr "# Scarb: El Administrador de Paquetes" + +#: src/ch02-03-scarb.md:12 msgid "" -"With the smart contract compiled, we’re ready to declare it using\n" -"Starkli. Before declaring your contract, decide on an RPC provider." -msgstr "Con el contrato inteligente compilado, estamos listos para declararlo usando Starkli. Antes de declarar su contrato, decida cuál es un proveedor de RPC." +"Scarb is Cairo’s package manager designed for both Cairo and Starknet\n" +"projects. It handles dependencies, compiles projects, and integrates\n" +"with tools like Foundry. It is built by the same team that created\n" +"Foundry for Starknet." +msgstr "" +"Scarb es el administrador de paquetes de Cairo diseñado para proyectos de Cairo y Starknet. Maneja dependencias, compila proyectos y se integra con herramientas como Foundry. Está construido por el " +"mismo equipo que creó Foundry para Starknet." -#: src/ch02-02-compile-deploy-interact.md:332 -msgid "### Choosing an RPC Provider" -msgstr "### Elegir un Proveedor de RPC" +#: src/ch02-03-scarb.md:17 +msgid "# Scarb Workflow" +msgstr "# Scarb Workflow" -#: src/ch02-02-compile-deploy-interact.md:334 -msgid "There are three main options for RPC providers, sorted by ease of use:" -msgstr "Hay tres opciones principales para los proveedores de RPC, ordenadas por facilidad de uso:" +#: src/ch02-03-scarb.md:19 +msgid "Follow these steps to develop a Starknet contract using Scarb:" +msgstr "Siga estos pasos para desarrollar un contrato Starknet usando Scarb:" -#: src/ch02-02-compile-deploy-interact.md:336 +#: src/ch02-03-scarb.md:21 msgid "" -"1. **Starknet Sequencer’s Gateway**: The quickest option and it’s the\n" -" default for Starkli for now. The sequencer gateway is deprecated and\n" -" will be disabled by StarkWare soon. You’re strongly recommended to\n" -" use a third-party JSON-RPC API provider like Infura, Alchemy, or\n" -" Chainstack.\n" +"1. **Initialize:** Use `scarb new` to set up a new project, generating\n" +" a `Scarb.toml` file and initial `src/lib.cairo`.\n" "\n" -"2. **Infura or Alchemy**: A step up in complexity. You’ll need to set\n" -" up an API key and choose an endpoint. For Infura, it would look like\n" -" `https://starknet-goerli.infura.io/v3/`. Learn more in the\n" -" [Infura\n" -" documentation](https://docs.infura.io/networks/starknet/how-to/choose-a-network).\n" +"2. **Code:** Add your Cairo code in the `src` directory.\n" "\n" -"3. **Your Own Node**: For those who want full control. It’s the most\n" -" complex but offers the most freedom. Check out [Chapter 4 of the\n" -" Starknet Book](https://book.starknet.io/chapter_4/node.html) or\n" -" [Kasar](https://www.kasar.io/) for setup guides." +"3. **Dependencies:** Add external libraries using `scarb add`.\n" +"\n" +"4. **Compile:** Execute `scarb build` to convert your contract into\n" +" Sierra code." msgstr "" -"1. **Starknet Sequencer's Gateway**: La opción más rápida y es la predeterminada para Starkli por ahora. La puerta de enlace del secuenciador está obsoleta y StarkWare la " -"desactivará pronto. Se recomienda encarecidamente utilizar un proveedor de API JSON-RPC de terceros como Infura, Alchemy o Chainstack.\n" +"1. **Inicializar:** Utilice `scarb new` para configurar un nuevo proyecto, generando un archivo `Scarb.toml` y un `src/lib.cairo` inicial.\n" "\n" -"2. **Infura o Alchemy**: Un paso adelante en complejidad. Deberá configurar una clave API y elegir un punto final. Para Infura, se vería así `https://starknet-goerli.infura." -"io/v3/`. Obtenga más información en la [documentación de Infura](https://docs.infura.io/networks/starknet/how-to/choose-a-network).\n" +"2. **Código:** Agregue su código de Cairo en el directorio `src`.\n" +"\n" +"3. **Dependencias:** Agregue bibliotecas externas usando `scarb add`.\n" "\n" -"3. **Tu propio nodo**: Para aquellos que quieren control total. Es el más complejo pero ofrece la mayor libertad. Consulte el [Capítulo 4 del libro Starknet](https://book." -"starknet.io/chapter_4/node.html) o [Kasar](https://www.kasar.io/) para obtener guías de configuración." +"4. **Compilar:** Ejecute `scarb build` para convertir su contrato en código Sierra." -#: src/ch02-02-compile-deploy-interact.md:353 +#: src/ch02-03-scarb.md:31 msgid "" -"In this tutorial, we will use Alchemy. We can set the STARKNET_RPC\n" -"environment variable to make command invocations easier:" -msgstr "En este tutorial, usaremos Alchemy. Podemos configurar la variable de entorno STARKNET_RPC para facilitar las invocaciones de comandos:" +"Scarb simplifies your development workflow, making it efficient and\n" +"streamlined." +msgstr "Scarb simplifica su flujo de trabajo de desarrollo, haciéndolo eficiente y optimizado." -#: src/ch02-02-compile-deploy-interact.md:356 +#: src/ch02-03-scarb.md:36 msgid "" -"```bash\n" -" export STARKNET_RPC=\"https://starknet-goerli.g.alchemy.com/v2/\"\n" -"```" +"Scarb is cross-platform, supporting macOS, Linux, and Windows. For\n" +"installation, refer to the [Basic installation guide](./ch02-01-basic-installation)." msgstr "" -"```bash\n" -" export STARKNET_RPC=\"https://starknet-goerli.g.alchemy.com/v2/\"\n" -"```" +"Scarb es multiplataforma y admite macOS, Linux y Windows. Para\n" +"instalación, consulte la [Guía de instalación básica](./ch02-01-basic-installation)." -#: src/ch02-02-compile-deploy-interact.md:360 -msgid "### Declaring Your Contract" -msgstr "### Declarando su Contrato" +#: src/ch02-03-scarb.md:39 +msgid "# Cairo Project Structure" +msgstr "# Estructura del Proyecto de Cairo" -#: src/ch02-02-compile-deploy-interact.md:362 -msgid "" -"Run this command to declare your contract using the default Starknet\n" -"Sequencer’s Gateway:" -msgstr "Ejecute este comando para declarar su contrato utilizando la puerta de enlace predeterminada del secuenciador Starknet:" +#: src/ch02-03-scarb.md:41 +msgid "Next, we’ll dive into the key components that make up a Cairo project." +msgstr "A continuación, profundizaremos en los componentes clave que conforman un proyecto de Cairo." -#: src/ch02-02-compile-deploy-interact.md:365 -msgid "" -"```bash\n" -" starkli declare target/dev/contracts_Ownable.sierra.json\n" -"```" -msgstr "" -"```bash\n" -" starkli declare target/dev/contracts_Ownable.sierra.json\n" -"```" +#: src/ch02-03-scarb.md:43 +msgid "## Cairo Packages" +msgstr "## Paquetes en Cairo" -#: src/ch02-02-compile-deploy-interact.md:369 +#: src/ch02-03-scarb.md:45 msgid "" -"According to the `STARKNET_RPC` url, starkli can recognize the target\n" -"blockchain network, in this case \"goerli\", so it is not necessary\n" -"explicitly specify it." -msgstr "Según la URL `STARKNET_RPC`, starkli puede reconocer la red blockchain de destino, en este caso \"goerli\", por lo que no es necesario especificarla explícitamente." +"Cairo packages, also referred to as \"crates\" in some contexts, are the\n" +"building blocks of a Cairo project. Each package must follow several\n" +"rules:" +msgstr "Los paquetes de Cairo, también denominados \"crates\" en algunos contextos, son los componentes básicos de un proyecto de Cairo. Cada paquete debe seguir varias reglas:" -#: src/ch02-02-compile-deploy-interact.md:373 +#: src/ch02-03-scarb.md:49 msgid "" -"Unless you’re working with custom networks where it’s infeasible for\n" -"Starkli to detect the right compiler version, you shouldn’t need to\n" -"manually choose a version with `--network` and `--compiler-version`." +"- A package must include a `Scarb.toml` file, which is Scarb’s\n" +" manifest file. It contains the dependencies for your package.\n" +"\n" +"- A package must include a `src/lib.cairo` file, which is the root of\n" +" the package tree. It allows you to define functions and declare used\n" +" modules." msgstr "" -"A menos que esté trabajando con redes personalizadas donde a Starkli no le resulta factible detectar la versión correcta del compilador, no debería necesitar elegir " -"manualmente una versión con `--network` y `--compiler-version`." +"- Un paquete debe incluir un archivo `Scarb.toml`, que es el archivo de manifiesto de Scarb. Contiene las dependencias de su paquete.\n" +"\n" +"- Un paquete debe incluir un archivo `src/lib.cairo`, que es la raíz del árbol de paquetes. Le permite definir funciones y declarar módulos usados." -#: src/ch02-02-compile-deploy-interact.md:377 +#: src/ch02-03-scarb.md:56 msgid "" -"If you encounter an \"Error: Invalid contract class,\" it likely means\n" -"your Scarb’s compiler version is incompatible with Starkli. Follow the\n" -"steps above to align the versions. Starkli usually supports compiler\n" -"versions accepted by mainnet, even if Scarb’s latest version is not yet\n" -"compatible." +"Package structures might look like the following case where we have a\n" +"package named `my_package`, which includes a `src` directory with the\n" +"`lib.cairo` file inside, a `snips` directory which in itself a package\n" +"we can use, and a `Scarb.toml` file in the top-level directory." msgstr "" -"Si encuentra un \"Error: Invalid contract class\", probablemente significa que la versión del compilador de Scarb no es compatible con Starkli. Siga los pasos anteriores " -"para alinear las versiones. Starkli generalmente admite versiones de compiladores aceptadas por la red principal, incluso si la última versión de Scarb aún no es compatible." +"Las estructuras de los paquetes podrían parecerse al siguiente caso donde tenemos un paquete llamado `my_package`, que incluye un directorio `src` con el archivo `lib.cairo` dentro, un directorio " +"`snips` que en sí mismo es un paquete que podemos usar, y un archivo `Scarb.toml` en el directorio de nivel superior." -#: src/ch02-02-compile-deploy-interact.md:383 +#: src/ch02-03-scarb.md:61 msgid "" -"After running the command, you’ll receive a contract class hash. This\n" -"unique hash serves as the identifier for your contract class within\n" -"Starknet. For example:" +"my_package/\n" +" ├── src/\n" +" │ ├── module1.cairo\n" +" │ ├── module2.cairo\n" +" │ └── lib.cairo\n" +" ├── snips/\n" +" │ ├── src/\n" +" │ │ ├── lib.cairo\n" +" │ ├── Scarb.toml\n" +" └── Scarb.toml" msgstr "" -"Después de ejecutar el comando, recibirá un hash de clase de contrato. Este hash único sirve como identificador de su clase de contrato (contract class) dentro de Starknet. " -"Por ejemplo:" +"my_package/\n" +" ├── src/\n" +" │ ├── module1.cairo\n" +" │ ├── module2.cairo\n" +" │ └── lib.cairo\n" +" ├── snips/\n" +" │ ├── src/\n" +" │ │ ├── lib.cairo\n" +" │ ├── Scarb.toml\n" +" └── Scarb.toml" + +#: src/ch02-03-scarb.md:72 +msgid "Within the `Scarb.toml` file, you might have:" +msgstr "Dentro del archivo `Scarb.toml`, es posible que tengas:" -#: src/ch02-02-compile-deploy-interact.md:387 +#: src/ch02-03-scarb.md:74 msgid "" -"```bash\n" -" Class hash declared: 0x04c70a75f0246e572aa2e1e1ec4fffbe95fa196c60db8d5677a5c3a3b5b6a1a8\n" -"```" +"[package]\n" +" name = \"my_package\"\n" +" version = \"0.1.0\"\n" +"\n" +" [dependencies]\n" +" starknet = \">=2.0.1\"\n" +" snips = { path = \"snips\" }" msgstr "" -"```bash\n" -" Class hash declared: 0x04c70a75f0246e572aa2e1e1ec4fffbe95fa196c60db8d5677a5c3a3b5b6a1a8\n" -"```" +"[package]\n" +" name = \"my_package\"\n" +" version = \"0.1.0\"\n" +"\n" +" [dependencies]\n" +" starknet = \">=2.0.1\"\n" +" snips = { path = \"snips\" }" -#: src/ch02-02-compile-deploy-interact.md:391 +#: src/ch02-03-scarb.md:82 msgid "" -"You can think of this hash as the contract class’s _address._ Use a\n" -"block explorer like\n" -"[StarkScan](https://testnet.starkscan.co/class/0x04c70a75f0246e572aa2e1e1ec4fffbe95fa196c60db8d5677a5c3a3b5b6a1a8)\n" -"to verify this hash on the blockchain." +"Here starknet and snips are the dependencies of the package. The\n" +"`starknet` dependency is hosted on the Scarb registry (we do not need to\n" +"download it), while the `snips` dependency is located in the `snips`\n" +"directory." msgstr "" -"Puede considerar este hash como la dirección de la clase de contrato. Utilice un explorador de bloques como [StarkScan](https://testnet.starkscan.co/" -"class/0x04c70a75f0246e572aa2e1e1ec4fffbe95fa196c60db8d5677a5c3a3b5b6a1a8) para verificar este hash en la cadena de bloques." +"Aquí starknet y snips son las dependencias del paquete. La dependencia `starknet` está alojada en el registro Scarb (no necesitamos descárgarlo), mientras que la dependencia `snips` se encuentra en " +"el directorio `snips`." -#: src/ch02-02-compile-deploy-interact.md:396 +#: src/ch02-03-scarb.md:87 +msgid "# Setting Up a Project with Scarb" +msgstr "# Configurar un Proyecto con Scarb" + +#: src/ch02-03-scarb.md:89 msgid "" -"If the contract class you’re attempting to declare already exists, it is\n" -"ok we can continue. You’ll receive a message like:" -msgstr "Si la contract class que intenta declarar ya existe, está bien, podemos continuar. Recibirás un mensaje como:" +"To create a new project using Scarb, navigate to your desired project\n" +"directory and execute the following command:" +msgstr "Para crear un nuevo proyecto usando Scarb, navegue hasta el directorio del proyecto que desee y ejecute el siguiente comando:" + +#: src/ch02-03-scarb.md:92 +msgid "$ scarb new hello_scarb" +msgstr "$ scarb new hello_scarb" -#: src/ch02-02-compile-deploy-interact.md:399 +#: src/ch02-03-scarb.md:94 msgid "" -"```bash\n" -" Not declaring class as its already declared. Class hash:\n" -" 0x04c70a75f0246e572aa2e1e1ec4fffbe95fa196c60db8d5677a5c3a3b5b6a1a8\n" -"```" +"This command will create a new project directory named `hello_scarb`,\n" +"including a `Scarb.toml` file, a `src` directory with a `lib.cairo` file\n" +"inside, and initialize a new Git repository with a `.gitignore` file." msgstr "" -"```bash\n" -" Not declaring class as its already declared. Class hash:\n" -" 0x04c70a75f0246e572aa2e1e1ec4fffbe95fa196c60db8d5677a5c3a3b5b6a1a8\n" -"```" - -#: src/ch02-02-compile-deploy-interact.md:404 -msgid "## Deploying Smart Contracts on Starknet" -msgstr "## Implementación de Smart Contracts en Starknet" +"Este comando creará un nuevo directorio de proyecto llamado `hello_scarb`, que incluye un archivo `Scarb.toml`, un directorio `src` con un archivo `lib.cairo` dentro e inicializará un nuevo " +"repositorio Git con un archivo `.gitignore` ." -#: src/ch02-02-compile-deploy-interact.md:406 +#: src/ch02-03-scarb.md:98 msgid "" -"To deploy a smart contract, you’ll need to instantiate it on Starknet’s\n" -"testnet. This process involves executing a command that requires two\n" -"main components:" +"hello_scarb/\n" +" ├── src/\n" +" │ └── lib.cairo\n" +" └── Scarb.toml" msgstr "" -"Para implementar un contrato inteligente, deberá crear una instancia del mismo en la red de prueba de Starknet. Este proceso implica ejecutar un comando que requiere dos " -"componentes principales:" +"hello_scarb/\n" +" ├── src/\n" +" │ └── lib.cairo\n" +" └── Scarb.toml" -#: src/ch02-02-compile-deploy-interact.md:410 +#: src/ch02-03-scarb.md:103 msgid "" -"1. The class hash of your smart contract.\n" +"Upon opening `Scarb.toml` in a text editor, you should see something\n" +"similar to the code snippet below:" +msgstr "Al abrir `Scarb.toml` en un editor de texto, debería ver algo similar al fragmento de código a continuación:" + +#: src/ch02-03-scarb.md:106 +msgid "" +"[package]\n" +" name = \"hello_scarb\"\n" +" version = \"0.1.0\"\n" "\n" -"2. Any constructor arguments that the contract expects." +" # See more keys and their definitions at https://docs.swmansion.com/scarb/docs/reference/manifest.html\n" +" [dependencies]\n" +" # foo = { path = \"vendor/foo\" }" msgstr "" -"1. El class hash de tu contrato inteligente.\n" +"[package]\n" +" name = \"hello_scarb\"\n" +" version = \"0.1.0\"\n" "\n" -"2. Cualquier argumento del constructor que el contrato espera." +" # See more keys and their definitions at https://docs.swmansion.com/scarb/docs/reference/manifest.html\n" +" [dependencies]\n" +" # foo = { path = \"vendor/foo\" }" + +#: src/ch02-03-scarb.md:114 +msgid "# Building a Scarb Project" +msgstr "# Construyendo un Proyecto Scarb" + +#: src/ch02-03-scarb.md:116 +msgid "Clear all content in `src/lib.cairo` and replace with the following:" +msgstr "Borre todo el contenido en `src/lib.cairo` y reemplácelo con lo siguiente:" -#: src/ch02-02-compile-deploy-interact.md:414 +#: src/ch02-03-scarb.md:118 msgid "" -"In our example, the constructor expects an _owner_ address. You can\n" -"learn more about constructors in \\[Chapter 12 of The Cairo\n" -"Book\\]()." +"// src/lib.cairo\n" +" mod hello_scarb;" msgstr "" -"En nuestro ejemplo, el constructor espera una dirección de _owner_. Puede obtener más información sobre los constructores en el \\[Capítulo 12 del Libro de Cairo\\]()." +"// src/lib.cairo\n" +" mod hello_scarb;" -#: src/ch02-02-compile-deploy-interact.md:418 -msgid "The command would look like this:" -msgstr "El comando se vería así:" +#: src/ch02-03-scarb.md:121 +msgid "" +"Next, create a new file titled `src/hello_scarb.cairo` and add the\n" +"following:" +msgstr "A continuación, cree un nuevo archivo titulado `src/hello_scarb.cairo` y agregue lo siguiente:" -#: src/ch02-02-compile-deploy-interact.md:420 +#: src/ch02-03-scarb.md:124 msgid "" -"```bash\n" -" starkli deploy \\\n" -" \\\n" -" \n" -"```" +"// src/hello_scarb.cairo\n" +" use debug::PrintTrait;\n" +" fn main() {\n" +" 'Hello, Scarb!'.print();\n" +" }" msgstr "" -"```bash\n" -" starkli deploy \\\n" -" \\\n" -" \n" -"```" +"// src/hello_scarb.cairo\n" +" use debug::PrintTrait;\n" +" fn main() {\n" +" 'Hello, Scarb!'.print();\n" +" }" -#: src/ch02-02-compile-deploy-interact.md:426 +#: src/ch02-03-scarb.md:130 msgid "" -"Here’s a specific example with an actual class hash and constructor\n" -"inputs (as the owner address use the address of your smart wallet so you\n" -"can invoke the transfer_ownership function later):" +"In this instance, the `lib.cairo` file contains a module declaration\n" +"referencing _hello_scarb_, which includes the _hello_scarb.cairo_\n" +"file’s implementation. For more on modules, imports, and the `lib.cairo`\n" +"file, please refer to the cairo-book on [Managing Cairo Projects in Chapter\n" +"7](https://book.cairo-lang.org/ch07-00-managing-cairo-projects-with-packages-crates-and-modules.html)." msgstr "" -"Aquí hay un ejemplo específico con un class hash real y entradas de constructor (como dirección del owner, use la dirección de su billetera inteligente para poder invocar la " -"función transfer_ownership más adelante):" +"En este caso, el archivo `lib.cairo` contiene una declaración de módulo\n" +"haciendo referencia a _hello_scarb_, que incluye _hello_scarb.cairo_\n" +"implementación del archivo. Para obtener más información sobre módulos, importaciones y `lib.cairo`,\n" +"consulte el libro de Cairo sobre [Gestión de proyectos de Cairo en el Capítulo\n" +"7](https://book.cairo-lang.org/ch07-00-managing-cairo-projects-with-packages-crates-and-modules.html)." -#: src/ch02-02-compile-deploy-interact.md:430 +#: src/ch02-03-scarb.md:136 msgid "" -"```bash\n" -" starkli deploy \\\n" -" 0x04c70a75f0246e572aa2e1e1ec4fffbe95fa196c60db8d5677a5c3a3b5b6a1a8 \\\n" -" 0x02cdAb749380950e7a7c0deFf5ea8eDD716fEb3a2952aDd4E5659655077B8510\n" -"```" -msgstr "" -"```bash\n" -" starkli deploy \\\n" -" 0x04c70a75f0246e572aa2e1e1ec4fffbe95fa196c60db8d5677a5c3a3b5b6a1a8 \\\n" -" 0x02cdAb749380950e7a7c0deFf5ea8eDD716fEb3a2952aDd4E5659655077B8510\n" -"```" +"Scarb mandates that your source files be located within the `src`\n" +"directory." +msgstr "Scarb exige que sus archivos fuente estén ubicados dentro del directorio `src`." -#: src/ch02-02-compile-deploy-interact.md:436 +#: src/ch02-03-scarb.md:139 msgid "" -"After executing the command and entering your password, you should see\n" -"output like the following:" -msgstr "Después de ejecutar el comando e ingresar su contraseña, debería ver un resultado como el siguiente:" +"To build (compile) your project from your `hello_scarb` directory, use\n" +"the following command:" +msgstr "Para construir (compilar) su proyecto desde su directorio `hello_scarb`, use el siguiente comando:" + +#: src/ch02-03-scarb.md:142 +msgid "scarb build" +msgstr "scarb build" -#: src/ch02-02-compile-deploy-interact.md:439 +#: src/ch02-03-scarb.md:144 msgid "" -"```bash\n" -" Deploying class 0x04c70a75f0246e572aa2e1e1ec4fffbe95fa196c60db8d5677a5c3a3b5b6a1a8 with salt 0x065034b27a199cbb2a5b97b78a8a6a6c6edd027c7e398b18e5c0e5c0c65246b7...\n" -" The contract will be deployed at address 0x02a83c32d4b417d3c22f665acbc10e9a1062033b9ab5b2c3358952541bc6c012\n" -" Contract deployment transaction: 0x0743de1e233d38c4f3e9fb13f1794276f7d4bf44af9eac66e22944ad1fa85f14\n" -" Contract deployed:\n" -" 0x02a83c32d4b417d3c22f665acbc10e9a1062033b9ab5b2c3358952541bc6c012\n" -"```" +"This command compiles your project and produces the Sierra code in the\n" +"`target/dev/hello_scarb.sierra.json` file. Sierra serves as an intermediate\n" +"layer between high-level Cairo and compilation targets such as Cairo\n" +"Assembly (CASM). To understand more about Sierra, check out this\n" +"[article](https://medium.com/nethermind-eth/under-the-hood-of-cairo-1-0-exploring-sierra-7f32808421f5/)." msgstr "" -"```bash\n" -" Deploying class 0x04c70a75f0246e572aa2e1e1ec4fffbe95fa196c60db8d5677a5c3a3b5b6a1a8 with salt 0x065034b27a199cbb2a5b97b78a8a6a6c6edd027c7e398b18e5c0e5c0c65246b7...\n" -" The contract will be deployed at address 0x02a83c32d4b417d3c22f665acbc10e9a1062033b9ab5b2c3358952541bc6c012\n" -" Contract deployment transaction: 0x0743de1e233d38c4f3e9fb13f1794276f7d4bf44af9eac66e22944ad1fa85f14\n" -" Contract deployed:\n" -" 0x02a83c32d4b417d3c22f665acbc10e9a1062033b9ab5b2c3358952541bc6c012\n" -"```" +"Este comando compila su proyecto y produce el código Sierra en el\n" +"archivo `target/dev/hello_scarb.sierra.json`. Sierra sirve como intermediario\n" +"de capa entre Cairo de alto nivel y objetivos de compilación como Cairo\n" +"Assembly (CASM). Para comprender más sobre Sierra, consulte esto\n" +"[artículo](https://medium.com/nethermind-eth/under-the-hood-of-cairo-1-0-exploring-sierra-7f32808421f5/)." -#: src/ch02-02-compile-deploy-interact.md:447 +#: src/ch02-03-scarb.md:150 msgid "" -"The contract is now live on the Starknet testnet. You can verify its\n" -"status using a block explorer like\n" -"[StarkScan](https://testnet.starkscan.co/contract/0x02a83c32d4b417d3c22f665acbc10e9a1062033b9ab5b2c3358952541bc6c012).\n" -"On the \"Read/Write Contract\" tab, you’ll see the contract’s external\n" -"functions." -msgstr "" -"El contrato ya está activo en la red de prueba de Starknet. Puede verificar su estado utilizando un explorador de bloques como [StarkScan](https://testnet.starkscan.co/" -"contract/0x02a83c32d4b417d3c22f665acbc10e9a1062033b9ab5b2c3358952541bc6c012). En la pestaña \"Read/Write Contract\", verá las funciones externas del contrato." +"To remove the build artifacts and delete the target directory, use the\n" +"`scarb clean` command." +msgstr "Para eliminar los artefactos de compilación y eliminar el directorio de destino, use el comando `scarb clean`." -#: src/ch02-02-compile-deploy-interact.md:453 -msgid "## Interacting with the Starknet Contract" -msgstr "## Interactuando con el Contrato Starknet" +#: src/ch02-03-scarb.md:153 +msgid "## Adding Dependencies" +msgstr "## Agregar Dependencias" -#: src/ch02-02-compile-deploy-interact.md:455 +#: src/ch02-03-scarb.md:155 msgid "" -"Starkli enables interaction with smart contracts via two primary\n" -"methods: `call` for read-only functions and `invoke` for write functions\n" -"that modify the state." -msgstr "" -"Starkli permite la interacción con contratos inteligentes a través de dos métodos principales: `call` para funciones de solo lectura e invoke`para funciones de escritura " -"que modifican el estado." +"Scarb facilitates the seamless management of dependencies for your Cairo\n" +"packages. Here are two methods to add dependencies to your project:" +msgstr "Scarb facilita la gestión perfecta de las dependencias de sus paquetes de Cairo. Aquí hay dos métodos para agregar dependencias a su proyecto:" -#: src/ch02-02-compile-deploy-interact.md:459 -msgid "### Calling a Read Function" -msgstr "### Llamar a una Función de Lectura" +#: src/ch02-03-scarb.md:158 +msgid "- Edit Scarb.toml File" +msgstr "- Editar Scarb.toml File" -#: src/ch02-02-compile-deploy-interact.md:461 +#: src/ch02-03-scarb.md:160 msgid "" -"The `call` command enables you to query a smart contract function\n" -"without sending a transaction. For instance, to find out who the current\n" -"owner of the contract is, you can use the `get_owner` function, which\n" -"requires no arguments." +"Open the Scarb.toml file in your project directory and locate the\n" +"`[dependencies]` section. If it doesn’t exist, add it. To include a\n" +"dependency hosted on a Git repository, use the following format:" msgstr "" -"El comando `call` le permite consultar una función de contrato inteligente sin enviar una transacción. Por ejemplo, para saber quién es el propietario actual del contrato, " -"puede utilizar la función `get_owner`, que no requiere argumentos." +"Abra el archivo Scarb.toml en el directorio de su proyecto y busque la sección `[dependencies]`. Si no existe, agréguelo. Para incluir una dependencia alojada en un repositorio Git, utilice el " +"siguiente formato:" -#: src/ch02-02-compile-deploy-interact.md:466 src/ch02-02-compile-deploy-interact.md:523 +#: src/ch02-03-scarb.md:164 msgid "" -"```bash\n" -" starkli call \\\n" -" \\\n" -" get_owner\n" -"```" +"[dependencies]\n" +" alexandria_math = { git = \"https://github.com/keep-starknet-strange/alexandria.git\" }" msgstr "" -"```bash\n" -" starkli call \\\n" -" \\\n" -" get_owner\n" -"```" +"[dependencies]\n" +" alexandria_math = { git = \"https://github.com/keep-starknet-strange/alexandria.git\" }" -#: src/ch02-02-compile-deploy-interact.md:472 +#: src/ch02-03-scarb.md:167 msgid "" -"Replace `` with the address of your contract. The\n" -"command will return the owner’s address, which was initially set during\n" -"the contract’s deployment:" -msgstr "" -"Reemplace `` con la dirección de su contrato. El comando devolverá la dirección del owner, que se estableció inicialmente durante la implementación del " -"contrato:" +"For consistency, it’s recommended to pin Git dependencies to specific\n" +"commits. This can be done by adding the `rev` field with the commit\n" +"hash:" +msgstr "Para mantener la coherencia, se recomienda fijar las dependencias de Git a confirmaciones específicas. Esto se puede hacer agregando el campo `rev` con el commit hash:" -#: src/ch02-02-compile-deploy-interact.md:476 +#: src/ch02-03-scarb.md:171 msgid "" -"```bash\n" -" [\n" -" \"0x02cdab749380950e7a7c0deff5ea8edd716feb3a2952add4e5659655077b8510\"\n" -" ]\n" -"```" +"[dependencies]\n" +" alexandria_math = { git = \"https://github.com/keep-starknet-strange/alexandria.git\", rev = \"81bb93c\" }" msgstr "" -"```bash\n" -" [\n" -" \"0x02cdab749380950e7a7c0deff5ea8edd716feb3a2952add4e5659655077b8510\"\n" -" ]\n" -"```" +"[dependencies]\n" +" alexandria_math = { git = \"https://github.com/keep-starknet-strange/alexandria.git\", rev = \"81bb93c\" }" -#: src/ch02-02-compile-deploy-interact.md:482 -msgid "## Invoking a Write Function" -msgstr "## Invocar una Función de Escritura" +#: src/ch02-03-scarb.md:174 +msgid "After adding the dependency, remember to save the file." +msgstr "Después de agregar la dependencia, recuerde guardar el archivo." -#: src/ch02-02-compile-deploy-interact.md:484 -msgid "" -"You can modify the contract’s state using the `invoke` command. For\n" -"example, let’s transfer the contract’s ownership with the\n" -"`transfer_ownership` function." -msgstr "Puede modificar el estado del contrato utilizando el comando`invoke`. Por ejemplo, transfiramos la propiedad del contrato con la función `transfer_ownership`." +#: src/ch02-03-scarb.md:176 +msgid "- Use the scarb add Command" +msgstr "- Utilice el comando scarb add" -#: src/ch02-02-compile-deploy-interact.md:488 +#: src/ch02-03-scarb.md:178 msgid "" -"```bash\n" -" starkli invoke \\\n" -" \\\n" -" transfer_ownership \\\n" -" \n" -"```" -msgstr "" -"```bash\n" -" starkli invoke \\\n" -" \\\n" -" transfer_ownership \\\n" -" \n" -"```" +"Alternatively, you can use the `scarb add` command to add dependencies\n" +"to your project. Open your terminal and execute the following command:" +msgstr "Alternativamente, puedes usar el comando `scarb add` para agregar dependencias a tu proyecto. Abre tu terminal y ejecuta el siguiente comando:" -#: src/ch02-02-compile-deploy-interact.md:495 -msgid "" -"Replace `` with the address of the contract and\n" -"`` with the address you want to transfer ownership\n" -"to. If the smart wallet you’re using isn’t the contract’s owner, an\n" -"error will appear. Note that the initial owner was set when deploying\n" -"the contract:" -msgstr "" -"Reemplace `` con la dirección del contrato y `` con la dirección a la que desea transferir la propiedad. Si la billetera inteligente que " -"está utilizando no es la propietaria del contrato, aparecerá un error. Tenga en cuenta que el propietario inicial se estableció al implementar el contrato:" +#: src/ch02-03-scarb.md:181 +msgid "$ scarb add alexandria_math --git https://github.com/keep-starknet-strange/alexandria.git" +msgstr "$ scarb add alexandria_math --git https://github.com/keep-starknet-strange/alexandria.git" -#: src/ch02-02-compile-deploy-interact.md:501 +#: src/ch02-03-scarb.md:183 msgid "" -"```bash\n" -" Execution was reverted; failure reason: [0x43616c6c6572206973206e6f7420746865206f776e6572].\n" -"```" -msgstr "" -"```bash\n" -" Execution was reverted; failure reason: [0x43616c6c6572206973206e6f7420746865206f776e6572].\n" -"```" +"This command will add the alexandria_math dependency from the specified\n" +"Git repository to your project." +msgstr "Este comando agregará la dependencia alexandria_math del repositorio Git especificado a su proyecto." -#: src/ch02-02-compile-deploy-interact.md:505 -msgid "" -"The failure reason is encoded as a felt. o decode it, use the starkli’s\n" -"`parse-cairo-string` command." -msgstr "El motivo del fracaso está codificado como un sentimiento. Para decodificarlo, use el comando `parse-cairo-string` de starkli." +#: src/ch02-03-scarb.md:186 +msgid "To remove a dependency, you can use the `scarb rm` command." +msgstr "Para eliminar una dependencia, puede utilizar el comando `scarb rm`." -#: src/ch02-02-compile-deploy-interact.md:508 +#: src/ch02-03-scarb.md:188 msgid "" -"```bash\n" -" starkli parse-cairo-string \n" -"```" -msgstr "" -"```bash\n" -" starkli parse-cairo-string \n" -"```" +"Once a dependency is added, the Scarb.toml file will be automatically\n" +"updated with the new dependency information." +msgstr "Una vez que se agrega una dependencia, el archivo Scarb.toml se actualizará automáticamente con la nueva información de dependencia." -#: src/ch02-02-compile-deploy-interact.md:512 -msgid "" -"For example, if you see\n" -"`0x43616c6c6572206973206e6f7420746865206f776e6572`, decoding it will\n" -"yield \"Caller is not the owner.\"" -msgstr "Por ejemplo, si ve `0x43616c6c6572206973206e6f7420746865206f776e6572`, al decodificarlo se obtendrá \"Caller is not the owner.\"" +#: src/ch02-03-scarb.md:191 +msgid "## Using Dependencies in Your Code" +msgstr "## Usando Dependencias en su Código" -#: src/ch02-02-compile-deploy-interact.md:516 +#: src/ch02-03-scarb.md:193 msgid "" -"After a successful transaction on L2, use a block explorer like\n" -"StarkScan or Voyager to confirm the transaction status using the hash\n" -"provided by the `invoke` command." -msgstr "" -"Después de una transacción exitosa en L2, use un explorador de bloques como StarkScan o Voyager para confirmar el estado de la transacción usando el hash proporcionado por " -"el comando`invoke`." +"After dependencies are added to your project, you can start utilizing\n" +"them in your Cairo code." +msgstr "Después de agregar dependencias a su proyecto, puede comenzar a utilizarlas en su código de Cairo." -#: src/ch02-02-compile-deploy-interact.md:520 +#: src/ch02-03-scarb.md:196 msgid "" -"To verify that the ownership has successfully transferred, you can call\n" -"the `get_owner` function again:" -msgstr "Para verificar que la propiedad se haya transferido exitosamente, puedes volver a llamar a la función `get_owner`:" +"For example, let’s assume you have added the alexandria_math\n" +"dependency. Now, you can import and utilize functions from the\n" +"alexandria_math library in your `src/hello_scarb.cairo` file:" +msgstr "Por ejemplo, supongamos que ha agregado la dependencia alexandria_math. Ahora, puedes importar y utilizar funciones de la biblioteca alexandria_math en tu archivo `src/hello_scarb.cairo`:" -#: src/ch02-02-compile-deploy-interact.md:529 +#: src/ch02-03-scarb.md:200 msgid "" -"If the function returns the new owner’s address, the transfer was\n" -"successful." -msgstr "Si la función devuelve la dirección del nuevo propietario, la transferencia fue exitosa." +"// src/hello_scarb.cairo\n" +" use alexandria_math::fibonacci;\n" +"\n" +" fn main() -> felt252 {\n" +" fibonacci::fib(0, 1, 10)\n" +" }" +msgstr "" +"// src/hello_scarb.cairo\n" +" use alexandria_math::fibonacci;\n" +"\n" +" fn main() -> felt252 {\n" +" fibonacci::fib(0, 1, 10)\n" +" }" -#: src/ch02-02-compile-deploy-interact.md:532 +#: src/ch02-03-scarb.md:207 msgid "" -"Congratulations! You’ve successfully deployed and interacted with a\n" -"Starknet contract." -msgstr "¡Felicidades! Ha implementado e interactuado con éxito con un contrato Starknet." +"In the above example, we import the fibonacci function from the\n" +"alexandria_math library and utilize it in the main function." +msgstr "En el ejemplo anterior, importamos la función Fibonacci de la biblioteca alexandria_math y la utilizamos en la función principal." -#: src/ch02-03-scarb.md:1 -msgid "# Scarb: The Package Manager" -msgstr "# Scarb: El Administrador de Paquetes" +#: src/ch02-03-scarb.md:210 +msgid "# Scarb Cheat Sheet" +msgstr "# Scarb Cheat Sheet" -#: src/ch02-03-scarb.md:12 +#: src/ch02-03-scarb.md:212 msgid "" -"Scarb is Cairo’s package manager designed for both Cairo and Starknet\n" -"projects. It handles dependencies, compiles projects, and integrates\n" -"with tools like Foundry. It is built by the same team that created\n" -"Foundry for Starknet." -msgstr "" -"Scarb es el administrador de paquetes de Cairo diseñado para proyectos de Cairo y Starknet. Maneja dependencias, compila proyectos y se integra con herramientas como " -"Foundry. Está construido por el mismo equipo que creó Foundry para Starknet." - -#: src/ch02-03-scarb.md:17 -msgid "# Scarb Workflow" -msgstr "# Scarb Workflow" - -#: src/ch02-03-scarb.md:19 -msgid "Follow these steps to develop a Starknet contract using Scarb:" -msgstr "Siga estos pasos para desarrollar un contrato Starknet usando Scarb:" +"Here’s a quick cheat sheet of some of the most commonly used Scarb\n" +"commands:" +msgstr "Aquí hay una hoja de referencia rápida de algunos de los comandos Scarb más utilizados:" -#: src/ch02-03-scarb.md:21 +#: src/ch02-03-scarb.md:215 msgid "" -"1. **Initialize:** Use `scarb new` to set up a new project, generating\n" -" a `Scarb.toml` file and initial `src/lib.cairo`.\n" +"- `scarb new `: Initialize a new project with the given\n" +" project name.\n" "\n" -"2. **Code:** Add your Cairo code in the `src` directory.\n" +"- `scarb build`: Compile your Cairo code into Sierra code.\n" "\n" -"3. **Dependencies:** Add external libraries using `scarb add`.\n" +"- `scarb add --git `: Add a dependency to\n" +" your project from a specified Git repository.\n" "\n" -"4. **Compile:** Execute `scarb build` to convert your contract into\n" -" Sierra code." +"- `scarb rm `: Remove a dependency from your project.\n" +"\n" +"- `scarb run