第2课

Almacenamiento de valores en un contrato

¡Hola y bienvenido de nuevo! En nuestra primera lección, le presentamos SmartPy y Tezos creando un contrato inteligente muy básico. En esta lección, profundizaremos en uno de los componentes más esenciales de cualquier contrato inteligente de Tezos: el almacenamiento.

¿Qué es el almacenamiento?

En un contrato inteligente de Tezos, el almacenamiento es como la memoria del contrato. Este es el lugar donde se guardan todos los datos relevantes para el contrato. Esencialmente, actúa como el estado de nuestro contrato, almacenando valores que persisten en diferentes transacciones y permitiendo que el contrato inteligente "recuerde" información. Es esta capacidad la que nos permite construir aplicaciones descentralizadas complejas y atractivas en la cadena de bloques de Tezos.

Comprender el almacenamiento en profundidad

Antes de profundizar en nuestro código para esta lección, analicemos un poco más el concepto de almacenamiento. El almacenamiento de un contrato es el estado que persiste entre llamadas a funciones. Si tiene experiencia en programación tradicional, puede considerarlo como el "estado global" del contrato. Es lo que permite a los usuarios tener interacciones continuas con un contrato a lo largo del tiempo.

Ahora, echemos un vistazo a nuestro código de contrato para esta lección:

Python 
 importa smartpy como sp 

 @sp.module 
 def main(): 
 clase StoreValue(sp.Contract): 
 def __init__(self, valor): 
 self.data.storedValue = valor 

 @sp.entrypoint 
 def reemplazar(self, params): 
 self.data.storedValue = params.value 

 @sp.entrypoint 
 def double(self): 
 self.data.storedValue *= 2 

 @sp.entrypoint 
 def dividir(self , params): 
 afirmar params.divisor > 5 
 self.data.storedValue /= params.divisor 


 si "plantillas" no están en __name__: 

 @sp.add_test(name="StoreValue") 
 def test() : 
 c1 = main.StoreValue(12) 
 escenario = sp.test_scenario(principal)
        escenario.h1("Tienda Valor") 
 escenario += c1 
 c1.replace(valor=15) 
 escenario.p("Algunos cálculo").show(c1.data.storedValue * 12) 
 c1.replace(valor=25) 
 c1.double() 
 c1.divide(divisor=2).run(
            válido=Falso, excepción="Condición incorrecta: params.divisor > 5" 
 ) 
 escenario.verify(c1.data.storedValue == 50) 
 c1.divide(divisor=6) 
 escenario.verify(c1.data.storedValue == 8)

Ejecutar y descomponer el código

En nuestro ejemplo de contrato de almacenamiento, tenemos varios puntos de entrada: replace, double y divide. Después de implementar este contrato, los usuarios pueden llamar a estos puntos de entrada para interactuar con el contrato.

Para los puntos de entrada de replace y divide , los usuarios deben proporcionar parámetros en la transacción. Para replace, se requiere un value de parámetro y para divide, se requiere un divisor de parámetro.

Cuando ejecute este contrato en SmartPy IDE, en el lado derecho, verá una representación visual de las operaciones y el almacenamiento del contrato. De hecho, puedes simular las interacciones del usuario aquí. Aquí hay una guía paso a paso:

  1. Implemente su contrato haciendo clic en el botón Deploy .

  2. Después de la implementación, verá el contrato representado en Contracts. Haz click en eso.

  3. Ahora verá los puntos de entrada del contrato enumerados.

  4. Para llamar replace, ingrese un valor para params.value en el campo y luego haga clic en el botón replace .

  5. Para igualar double, simplemente haga clic en el botón double .

  6. Para llamar a divide, ingrese un valor para params.divisor en el campo y luego haga clic en el botón divide .
    Cada una de estas interacciones creará una nueva operación enumerada en el contrato y podrá ver el estado actualizado del almacenamiento del contrato después de cada operación.

En este contrato, enfatizamos el concepto de almacenamiento con la línea self.data.storedValue = value. Aquí, self.data se refiere al almacenamiento de nuestro contrato. Aquí es donde mantenemos el estado de nuestro contrato: un único parámetro llamado storedValue.

También tenemos varios puntos de entrada en este contrato. Los puntos de entrada son esencialmente funciones públicas que permiten a partes externas interactuar con el contrato. Aquí, nuestros puntos de entrada permiten la modificación del storedValue de varias maneras. Podemos reemplazarlo con un nuevo valor, duplicarlo o dividirlo por un divisor determinado.

A continuación, consideremos el escenario de prueba que hemos configurado. Creamos una instancia de nuestro contrato con el valor inicial 12 para storedValue. Luego llamamos a nuestros puntos de entrada para modificar el valor de storedValue de varias maneras y validar los resultados.

¿Por qué es importante el almacenamiento?

La capacidad de almacenar y actualizar valores dentro del almacenamiento de un contrato es fundamental para crear contratos inteligentes de Tezos. Permite la persistencia de datos en diferentes interacciones con el contrato. Ya sea manteniendo los saldos en un contrato de token, almacenando información del usuario en una aplicación descentralizada o manteniendo el estado de un juego en la cadena de bloques, el almacenamiento es una característica central que facilita estas funcionalidades.

El almacenamiento en un contrato inteligente puede contener valores simples como números enteros, cadenas y valores booleanos, o estructuras de datos más complejas como listas, mapas y objetos definidos de forma personalizada. Esto nos permite construir lógicas complejas y transiciones de estado en nuestros contratos.

En la próxima lección, continuaremos desarrollando estos conceptos básicos, introduciendo cálculos más complejos dentro de los contratos inteligentes y comenzaremos a trabajar con tipos de datos más avanzados en el almacenamiento de nuestro contrato. Así que estad atentos y recordad: la práctica hace la perfección. ¡No dudes en experimentar con el código, realizar modificaciones y observar los resultados!

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。
目录
第2课

Almacenamiento de valores en un contrato

¡Hola y bienvenido de nuevo! En nuestra primera lección, le presentamos SmartPy y Tezos creando un contrato inteligente muy básico. En esta lección, profundizaremos en uno de los componentes más esenciales de cualquier contrato inteligente de Tezos: el almacenamiento.

¿Qué es el almacenamiento?

En un contrato inteligente de Tezos, el almacenamiento es como la memoria del contrato. Este es el lugar donde se guardan todos los datos relevantes para el contrato. Esencialmente, actúa como el estado de nuestro contrato, almacenando valores que persisten en diferentes transacciones y permitiendo que el contrato inteligente "recuerde" información. Es esta capacidad la que nos permite construir aplicaciones descentralizadas complejas y atractivas en la cadena de bloques de Tezos.

Comprender el almacenamiento en profundidad

Antes de profundizar en nuestro código para esta lección, analicemos un poco más el concepto de almacenamiento. El almacenamiento de un contrato es el estado que persiste entre llamadas a funciones. Si tiene experiencia en programación tradicional, puede considerarlo como el "estado global" del contrato. Es lo que permite a los usuarios tener interacciones continuas con un contrato a lo largo del tiempo.

Ahora, echemos un vistazo a nuestro código de contrato para esta lección:

Python 
 importa smartpy como sp 

 @sp.module 
 def main(): 
 clase StoreValue(sp.Contract): 
 def __init__(self, valor): 
 self.data.storedValue = valor 

 @sp.entrypoint 
 def reemplazar(self, params): 
 self.data.storedValue = params.value 

 @sp.entrypoint 
 def double(self): 
 self.data.storedValue *= 2 

 @sp.entrypoint 
 def dividir(self , params): 
 afirmar params.divisor > 5 
 self.data.storedValue /= params.divisor 


 si "plantillas" no están en __name__: 

 @sp.add_test(name="StoreValue") 
 def test() : 
 c1 = main.StoreValue(12) 
 escenario = sp.test_scenario(principal)
        escenario.h1("Tienda Valor") 
 escenario += c1 
 c1.replace(valor=15) 
 escenario.p("Algunos cálculo").show(c1.data.storedValue * 12) 
 c1.replace(valor=25) 
 c1.double() 
 c1.divide(divisor=2).run(
            válido=Falso, excepción="Condición incorrecta: params.divisor > 5" 
 ) 
 escenario.verify(c1.data.storedValue == 50) 
 c1.divide(divisor=6) 
 escenario.verify(c1.data.storedValue == 8)

Ejecutar y descomponer el código

En nuestro ejemplo de contrato de almacenamiento, tenemos varios puntos de entrada: replace, double y divide. Después de implementar este contrato, los usuarios pueden llamar a estos puntos de entrada para interactuar con el contrato.

Para los puntos de entrada de replace y divide , los usuarios deben proporcionar parámetros en la transacción. Para replace, se requiere un value de parámetro y para divide, se requiere un divisor de parámetro.

Cuando ejecute este contrato en SmartPy IDE, en el lado derecho, verá una representación visual de las operaciones y el almacenamiento del contrato. De hecho, puedes simular las interacciones del usuario aquí. Aquí hay una guía paso a paso:

  1. Implemente su contrato haciendo clic en el botón Deploy .

  2. Después de la implementación, verá el contrato representado en Contracts. Haz click en eso.

  3. Ahora verá los puntos de entrada del contrato enumerados.

  4. Para llamar replace, ingrese un valor para params.value en el campo y luego haga clic en el botón replace .

  5. Para igualar double, simplemente haga clic en el botón double .

  6. Para llamar a divide, ingrese un valor para params.divisor en el campo y luego haga clic en el botón divide .
    Cada una de estas interacciones creará una nueva operación enumerada en el contrato y podrá ver el estado actualizado del almacenamiento del contrato después de cada operación.

En este contrato, enfatizamos el concepto de almacenamiento con la línea self.data.storedValue = value. Aquí, self.data se refiere al almacenamiento de nuestro contrato. Aquí es donde mantenemos el estado de nuestro contrato: un único parámetro llamado storedValue.

También tenemos varios puntos de entrada en este contrato. Los puntos de entrada son esencialmente funciones públicas que permiten a partes externas interactuar con el contrato. Aquí, nuestros puntos de entrada permiten la modificación del storedValue de varias maneras. Podemos reemplazarlo con un nuevo valor, duplicarlo o dividirlo por un divisor determinado.

A continuación, consideremos el escenario de prueba que hemos configurado. Creamos una instancia de nuestro contrato con el valor inicial 12 para storedValue. Luego llamamos a nuestros puntos de entrada para modificar el valor de storedValue de varias maneras y validar los resultados.

¿Por qué es importante el almacenamiento?

La capacidad de almacenar y actualizar valores dentro del almacenamiento de un contrato es fundamental para crear contratos inteligentes de Tezos. Permite la persistencia de datos en diferentes interacciones con el contrato. Ya sea manteniendo los saldos en un contrato de token, almacenando información del usuario en una aplicación descentralizada o manteniendo el estado de un juego en la cadena de bloques, el almacenamiento es una característica central que facilita estas funcionalidades.

El almacenamiento en un contrato inteligente puede contener valores simples como números enteros, cadenas y valores booleanos, o estructuras de datos más complejas como listas, mapas y objetos definidos de forma personalizada. Esto nos permite construir lógicas complejas y transiciones de estado en nuestros contratos.

En la próxima lección, continuaremos desarrollando estos conceptos básicos, introduciendo cálculos más complejos dentro de los contratos inteligentes y comenzaremos a trabajar con tipos de datos más avanzados en el almacenamiento de nuestro contrato. Así que estad atentos y recordad: la práctica hace la perfección. ¡No dudes en experimentar con el código, realizar modificaciones y observar los resultados!

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。