Como escribir un contrato inteligente (Smart Contract) en Ontology con Python | Parte 2

Prefacio

En el último artículo, presentamos el contrato inteligente de Blockchain & Block API de Ontology. Es posible que algunos de ustedes ya hayan intentado escribir y ejecutar contratos inteligentes en Ontology con Python. Si tiene algún problema al usar SmartX, no dude en contactarnos.

Hoy discutiremos cómo usar el segundo módulo: API de almacenamiento. La API de almacenamiento tiene cinco API’s relacionadas que permiten la adición, eliminación y cambios en el almacenamiento persistente en los contratos inteligentes de Blockchain. Aquí hay una breve descripción de las cinco API’s:

Echemos un vistazo más de cerca de cómo usar estas cinco API’s. Primero y antes de nada, cree un nuevo contrato en SmartX y luego siga los pasos que se presentan a continuación. Como siempre, al final del artículo proporcionaremos el enlace de GitHub del código fuente.

2 Cómo usar la API de almacenamiento

2.1 GetContext y GetReadOnlyContext

GetContext & GetReadOnlyContext obtiene el contexto en el que se ejecuta el contrato inteligente actual. El valor de retorno es el reverso del hash del contrato inteligente actual. Como su nombre lo indica, GetReadOnlyContext obtiene el contexto del modo de solo lectura. En el siguiente ejemplo, el valor de retorno es el reverso del hash del contrato que se muestra en la esquina superior derecha.

2.2 Put

La función Put es responsable de almacenar los datos en la cadena de bloques en forma de diccionario. Como se muestra, Put acepta tres parámetros. GetContext obtiene el contexto del contrato inteligente actual en ejecución, la clave es el valor clave que necesita almacenar datos y el valor es el valor de los datos que deben almacenarse. Tenga en cuenta que si el valor de la clave ya está almacenado, la función actualizará su valor correspondiente.

2.3 Get

La función Get es responsable de leer los datos en la cadena de bloques existente a través del valor clave. En el siguiente ejemplo, puede completar el valor clave en el panel de parámetros a la derecha para ejecutar la función y leer los datos correspondientes al valor clave en la cadena de bloques:

2.4 Delete

La función de eliminación es responsable de eliminar los datos en la cadena de bloques a través del valor clave(Key value). En el siguiente ejemplo, puede completar el valor clave para ejecutar la función en el panel de parámetros a la derecha y eliminar los datos correspondientes al valor clave en la cadena de bloques:

3 Código de muestra de API de almacenamiento

El siguiente código ofrece un ejemplo detallado del uso de cinco API: GetContext; Get; Put; Delete; y GetReadOnlyContext. Puede intentar ejecutar estas API en SmartX.

from ontology.interop.System.Storage import GetContext, Get, Put, Delete, GetReadOnlyContext
from ontology.interop.System.Runtime import Notify

def Main(operation,args):
if operation == ‘get_sc’:
return get_sc()
if operation == ‘get_read_only_sc’:
return get_read_only_sc()
if operation == ‘get_data’:
key=args[0]
return get_data(key)
if operation == ‘save_data’:
key=args[0]
value=args[1]
return save_data(key, value)
if operation == ‘delete_data’:
key=args[0]
return delete_data(key)
return False

def get_sc():
return GetContext()

def get_read_only_sc():
return GetReadOnlyContext()

def get_data(key):
sc=GetContext()
data=Get(sc,key)
return data

def save_data(key, value):
sc=GetContext()
Put(sc,key,value)

def delete_data(key):
sc=GetContext()
Delete(sc,key)

Epílogo

El almacenamiento en la blockchain es el núcleo de todo el sistema blockchain. El uso de la API de almacenamiento de Ontology es muy simple y amigable para el desarrollador.

Por otro lado, el almacenamiento es el foco de los piratas informáticos, como la amenaza de seguridad que mencionamos en un artículo anterior: ataque de inyección de almacenamiento, los desarrolladores deben prestar especial atención a la seguridad del código al momento de escribir código relacionado con el almacenamiento.

Encuentra el tutorial detallado en GitHub aquí.

En el próximo artículo se discutira cómo usar la API Runtime. ¡Manténganse al tanto!.

¿Eres desarrollador? Asegúrate de unirte a nuestra comunidad tecnológica en Discord. Además, eche un vistazo al Developer Center (Centro de Desarrollo) en nuestro sitio web, donde puede encontrar herramientas de desarrolladores, documentación y más.

--

--

Construyendo comunidades. Apasionado del ecosistema Crypto.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Butneversaved

Butneversaved

29 Followers

Construyendo comunidades. Apasionado del ecosistema Crypto.