¿Qué son?

Los procesos en Stamping.io son flujos de trabajo orquestados que permiten la creación de tareas secuenciales. Estos procesos se diseñan visualmente y se ejecutan como nuevas API REST que pueden ser invocadas desde las dApps de los clientes. En esencia, los procesos son la infraestructura que permite automatizar y gestionar tareas de manera eficiente.

Modo de uso

  • Diseño Visual: La creación de procesos se realiza de manera visual y sin necesidad de programación. Los usuarios pueden diseñar flujos de trabajo mediante una interfaz intuitiva y amigable.
  • Secuencia de Tareas: Los procesos consisten en una secuencia de tareas que están vinculadas entre sí. Estas tareas se ejecutan de manera ordenada, permitiendo una ejecución paso a paso del flujo de trabajo.
  • Parametrización: Se pueden enviar parámetros a las tareas del proceso, lo que brinda flexibilidad y personalización en la ejecución de las tareas. Asimismo, las tareas pueden devolver respuestas que son gestionadas por el propio proceso.
  • Finalización como API REST: Al concluir, un proceso se convierte en una nueva API REST, permitiendo su invocación desde las aplicaciones descentralizadas (dApps) de los clientes. Esto facilita la integración de la lógica del proceso en diversas aplicaciones.

Ejemplo

A continuación se muestra una imagen donde se muestra un proceso que permite atestar una imagen:

Beneficios

En una herramienta NoCode (sin código), los procesos desempeñan un papel clave al permitir a los usuarios definir la lógica y comportamientos específicos de un procesos de negocios para conectarla con sus aplicaciones descentralizadas sin la necesidad de escribir código tradicional. Estos procesos son implementados desde interfaces gráficas por cada tarea, en lugar de escribir código manualmente presentando los siguientes beneficios:

  • Diseño Intuitivo: La interfaz visual y amigable facilita la creación de flujos de trabajo sin necesidad de conocimientos extensos de programación.
  • Automatización Eficiente: Los procesos permiten automatizar tareas de manera secuencial, mejorando la eficiencia en la ejecución de operaciones complejas.
  • Integración con dApps: La finalización como API REST facilita la integración de la lógica del proceso en las aplicaciones descentralizadas (dApps) de los clientes.
  • Personalización: La capacidad de enviar y recibir parámetros permite una personalización flexible de las tareas en el proceso.
  • Interacción con Web3 y Web2: Los procesos pueden abarcar desde la invocación de APIs externas (Web2) hasta la creación de billeteras, interacción con smart contracts (Web3), servidores IPFS, afirmaciones verificables, evidencias digitales, entre otras funcionalidades avanzadas.

En resumen, los procesos en Stamping.io ofrecen una solución No-code para la automatización de flujos de trabajo, brindando a los usuarios la capacidad de diseñar, ejecutar y gestionar tareas de manera visual y eficiente, incluso integrando operaciones complejas de Web3 y Web2. A continuación se muestra la lista de tareas disponibles en el apificador de Stamping.io:
Listado de procesos (tareas)

goWalletCreate(Secret, Nonce)

El proceso goWalletCreate() en Stamping.io permite la creación de una billetera mediante la combinación de un código secreto (Secret) y asociarlo a un identificador (nonce opcional). La llave privada asociada se genera utilizando el algoritmo SHA256 y se basa en la concatenación de secret y nonce. Si el nonce es vacío, la llave privada se genera únicamente a partir del secret.

Entradas
  • Secret: Código secreto utilizado como componente para la generación de la billetera.
  • Nonce (Opcional): Valor opcional utilizado para vincularlo a un identificador del usuario (ej: email, dni, codigointerno, address, etc); además permite fortalecer la generación de la llave privada.
Proceso
  • Si el Nonce no está vacío, la llave privada se genera mediante SHA256(secret + nonce).
  • Si el Nonce está vacío, la llave privada se genera mediante SHA256(secret).
Salida del proceso
  • El address asociado a la llave privada.
  • La llave privada generada.
El proceso goWalletCreate() es útil cuando se necesita generar billeteras de forma segura utilizando un código secreto. La inclusión opcional de un nonce mejora la seguridad de la llave privada.

goWalletCreateBIP39(Secret, Lenguaje, #Palabras)

El proceso goWalletCreateBIP39 en Stamping.io facilita la creación de una billetera mediante el estándar BIP39 (Bitcoin Improvement Proposal 39). BIP39 es un método para generar secuencias de palabras mnemotécnicas que representan claves privadas. Este proceso utiliza un código secreto (Secret), elige un lenguaje específico para las palabras mnemotécnicas, y permite determinar la cantidad de palabras a generar.

Entradas
  • Secret: Código secreto utilizado como componente para la generación de la billetera.
  • Lenguaje: Idioma en el que se generarán las palabras mnemotécnicas (ej. "es" para español, "en" para inglés).
  • Cantidad de Palabras: Número que indica la cantidad de palabras mnemotécnicas a generar.
Proceso
  • Se utiliza el código secreto para generar una semilla inicial.
  • La semilla se convierte en una secuencia de palabras mnemotécnicas según el estándar BIP39 y el idioma especificado.
  • La cantidad de palabras generadas se determina por el parámetro Cantidad de Palabras.
Salida del proceso
  • El address asociado a la llave privada.
  • La llave privada generada.
  • La secuencia de palabras mnemotécnicas que representa la billetera generada.
El proceso goWalletCreateBIP39 es útil cuando se requiere una billetera basada en el estándar BIP39, que proporciona una forma mnemotécnica y fácil de recordar para respaldar y recuperar claves privadas.

goWalletSignEthereum(SigningMethod, Message, PrivateKey)

El proceso goWalletSignEthereum en Stamping.io facilita la firma de mensajes utilizando una billetera, permitiendo elegir entre distintos métodos de firma. Los métodos disponibles son "data message" (firma de datos directos), "hash message" (firma de hash del mensaje), y "transaction message" (firma de mensajes de transacción en formato JSON).

Entradas
  • SigningMethod: Método de firma a utilizar ("data message", "hash message", "transaction message").
  • Message: Mensaje a firmar, que varía según el método elegido.
  • PrivateKey: Clave privada asociada a la billetera que realizará la firma.
Proceso
Firma el mensaje según el método de firma seleccionado:
  • "data message": Se firma directamente el dato proporcionado en el mensaje.
  • "hash message": Se genera un hash del mensaje antes de realizar la firma.
  • "transaction message": Se firma un mensaje de transacción en formato JSON.
Salida del proceso
  • La firma generada.
El proceso goWalletSignEthereum es útil cuando se requiere la firma de mensajes utilizando una billetera. La posibilidad de elegir el método de firma brinda flexibilidad en la aplicación de la firma según los requisitos específicos. Si no desea exponer su llave privada use: getPrivateKey() o getVariableRemote().

goWalletRecover(SigningMethod, Signature, Message)

El proceso goWalletRecover en Stamping.io facilita la recuperación de la dirección pública asociada a una firma mediante el uso de la firma de curva elíptica ECDSA (Elliptic Curve Digital Signature Algorithm). Se ofrecen diferentes métodos de recuperación dependiendo el método usado para el firmado (goWalletSignEthereum), como "data message" (recuperación de datos directos), "hash message" (recuperación de hash del mensaje), y "transaction message" (recuperación de mensajes de transacción en formato JSON).

Entradas
  • SigningMethod: Método de firma a utilizar ("data message", "hash message", "transaction message").
  • Signature: Firma ECDSA que se desea recuperar.
  • Message: Mensaje firmado, que varía según el método elegido en goWalletSignEthereum().
Proceso
Recupera el 0xaddress directamente desde la firma de datos mediante ECDSA.
Salida del proceso
  • La dirección pública recuperada.
El proceso goWalletRecover es útil cuando se necesita recuperar la dirección pública asociada a una firma mediante el uso de ECDSA. La elección del método de recuperación permite adaptarse a diferentes escenarios de aplicación.

goWalletSend(Network, rowTransaction)

El proceso goWalletSend en Stamping.io permite enviar una transacción firmada a una cadena de bloques basada en el protocolo de EVM.

Entradas
  • Network: Red blockchain a donde enviará la transacción.
  • rowTransaction: Firma ECDSA de la transacción que será enviada.
Proceso
Envia la transacción firmada a un nodo de la red usando un RPC público.
Salida del proceso
  • transactionHash: Hash de la transacción.
  • log: Log que devuelve la red al ejecutar la transacción.
El proceso goWalletSend es útil cuando se necesita firmar una transacción offchain de modo no asistido y cuya llave privada se encuentra en custodia del usuario.

goWalletReceipt(Network, transactionHash)

El proceso goWalletReceipt en Stamping.io permite obtener el recibo de una transacción en una red blockchain específica, proporcionando detalles detallados sobre la ejecución de la transacción. Se requiere especificar la red blockchain (Network) y el hash de la transacción (transactionHash) que se desea consultar.

Entradas
  • Network: Nombre de la red blockchain EVM en la que se realizó la transacción (ej. "ethereum", "fantom", "avalanche", "lacchain", etc...).
  • transactionHash: Hash único que identifica la transacción dentro de la red blockchain.
Proceso
Se realiza una consulta a la red blockchain especificada utilizando el hash de la transacción y se recopilan detalles detallados del recibo de la transacción, como estado de ejecución, gas utilizado, confirmaciones, entre otros.
Salida del proceso

Responde el detalle del recibo de la transacción.

  • blockNumber: Numero del bloque donde se encuentra la transacción en la red.
  • from: Address que envió (firmó) la transacción en la cadena de bloques.
  • to: Address de la wallet o smart contrat donde se envió la transacción en la cadena de bloques.
  • explorer: URL del explorador oficial de la red blockchain donde se puede fácilmente verificar la transacción.
  • network: Nombre de la red blockchain.
  • chainid: identificador de la red blockchain.
  • icon: Icono de la red blockchain.
  • status: Si es verdadero es por que la transacción ha sido correcta.
  • response: JSON de la transacción que ha sido almacenada en la cadena de bloques.
El proceso goWalletReceipt es útil cuando se requiere obtener información detallada sobre una transacción específica en una red blockchain. Proporciona una visión completa de la ejecución de la transacción y sus resultados.

goWalletBalance(Network, address)

El proceso goWalletBalance en Stamping.io posibilita la verificación del saldo de criptomonedas asociado a una dirección en redes blockchain compatibles con EVM (Ethereum Virtual Machine). Se deben proporcionar la red blockchain (Network) y la dirección (address) cuyo saldo se desea conocer.

Entradas
  • Network: Nombre de la red blockchain EVM en la que se realizó la transacción (ej. "ethereum", "fantom", "avalanche", "lacchain", etc...).
  • address: Direección de la billetera que se desea consultar el saldo de criptomonedas que tiene en una red blockchain.
Proceso
Se realiza una consulta a la red blockchain especificada utilizando el hash de la transacción y se recopilan detalles detallados del recibo de la transacción, como estado de ejecución, gas utilizado, confirmaciones, entre otros.
Salida del proceso

Responde el detalle del recibo de la transacción.

  • balance: Cantidad de saldo que tiene sin respetar el punto decimal.
  • balanceANSI: Cantidad de saldo que tiene considerando los decimales.
  • response: JSON de la transacción que ha sido almacenada en la cadena de bloques.
El proceso goWalletBalance es útil cuando se desea verificar el saldo de una dirección en redes blockchain compatibles con EVM. Proporciona información actualizada sobre la cantidad de criptomonedas disponibles en la dirección especificada.

goWalletStamp(Bytes, Keystorage)

El proceso goWalletStamp en Stamping.io posibilita la creación de una wallet especial basado en el cifrado de "El Gamal", que permite crear infinitas direcciones asociadas a una llave privada.

Entradas
  • bytes: Tamaño en bytes que tendrá el address a crear, cuando mas bytes ocupa es mas segura pero demora más tiempo en firmar.
  • keystorage: Es el contenedor de llaves de Stamping.io. Es un mecanismo de almacenaje seguro para sus llaves, se recomienda usar un hash de tipo SHA256.
Proceso
Genera una wallet basada en el algoritmo de "El Gamal".
Salida del proceso
  • address: Dirección de la wallet creada.
  • privateKey: Llave privada de la wallet.

goWalletSignStamp(address, signingMethod, message, walletType, privateKey)

El proceso goWalletSignStamp en Stamping.io permite cifrar un mensaje desde una wallet hacia otra.

Entradas
  • address: Dirección de la wallet destinataria, para que pueda leer el mensaje es necesario que use su llave privada.
  • signingMethod: Método de firma a utilizar ("data message", "hash message", "transaction message", "code number").
  • message: Mensaje que será cifrado.
  • walletType: Tipo de contenedor de llaves de Stamping.io que uasará para firmar el mensaje. Si usa un keyStorage, se recomienda recomienda usar un hash de tipo SHA256.
  • privateKey: Si el tipo de contenedor de su wallet es KeyStorage, debe ingresar el Key, caso contrario, ingrese la llave privada con la que firmará el mensaje.
Proceso
Cifra el mensaje usando el cifrado de "El Gamal". Si desea asegurarse que el firmante ha sido autorizado, puede pedirle previamente que descifre un mensaje que luego debe enviar cifrado, tal como se aprecia en este diagrama de secuencia:
  • "data message": Se firma directamente el dato proporcionado en el mensaje.
  • "hash message": Se genera un hash del mensaje antes de realizar la firma.
  • "transaction message": Se firma un mensaje de transacción en formato JSON.
  • "code number": Se firma un numero.
Salida del proceso
  • address: Dirección de la wallet creada.
  • privateKey: Llave privada de la wallet.

goWalletRecoverStamp(signingMethod, signature, walletType, privateKey)

El proceso goWalletRecoverStamp en Stamping.io permite decifrar un mensaje que ha sido cifrado desde una wallet hacia otra.

Entradas
  • signingMethod: Método de firma a utilizar ("data message", "hash message", "transaction message", "code number").
  • signature: Mensaje cifrado.
  • walletType: Tipo de contenedor de llaves de Stamping.io que uasará para firmar el mensaje. Si usa un keyStorage, se recomienda recomienda usar un hash de tipo SHA256.
  • privateKey: Si el tipo de contenedor de su wallet es KeyStorage, debe ingresar el Key, caso contrario, ingrese la llave privada con la que firmará el mensaje.
Proceso
Descifra el mensaje usando el cifrado de "El Gamal". El mensaje dependerá del método usado:
  • "data message": Se firma directamente el dato proporcionado en el mensaje.
  • "hash message": Se genera un hash del mensaje antes de realizar la firma.
  • "transaction message": Se firma un mensaje de transacción en formato JSON.
  • "code number": Se firma un numero.
Salida del proceso
  • message: Mensaje decifrado.
  • response: JSON con los datos de decifrado.

goWalletPay(signingMethod, signature, walletType, privateKey)

El proceso goWalletPay en Stamping.io permite procesar pagos desde una billetera de captura de tarjetas. Este proceso se ejecua desde el backend pero requiere contar con un token que provee el API de checkout de mercadopago cuando se captura los datos del medio de pago del cliente.

Entradas
  • signingMethod: Método de firma a utilizar ("data message", "hash message", "transaction message", "code number").
  • signature: Mensaje cifrado.
  • walletType: Tipo de contenedor de llaves de Stamping.io que uasará para firmar el mensaje. Si usa un keyStorage, se recomienda recomienda usar un hash de tipo SHA256.
  • privateKey: Si el tipo de contenedor de su wallet es KeyStorage, debe ingresar el Key, caso contrario, ingrese la llave privada con la que firmará el mensaje.
Proceso
Permite procesar un pago que es capturado desde el cliente de mercadopago, para que funcione correctamente este proceso es necesario que realice un sitio web donde se capure los datos del medio de pago que el cliente usará para adquirir un bien o servicio, para implementarlo debe incluya el SDK de Stamping "https://stamping.io/sdk/mercadopago/pay.js", tal como se muestra en la siguiente imagen:
Ejemplo de código a implementar:
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pagar con MercadoPago</title>
    <script src="https://stamping.io/sdk/mercadopago/pay.js"></script>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<style>
body, html {
    margin: 0;
    height: 100%;
    width: 100%;
    overflow: hidden;
}

body::before {
    content: "";
    position: fixed;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    background-image: url('/img/logo.png');
    background-repeat: repeat;
    background-size: 120px auto; /* Ancho de 120px, alto automático */
    opacity: 0.2; /* Ajusta este valor para controlar la opacidad del fondo */
    z-index: -1; /* Coloca la imagen detrás del contenido */
    padding: 10;
}

.content {
    position: relative;
    z-index: 1; /* Asegura que el contenido esté sobre el fondo */
    padding: 20px;
}
</style>
<body>
    <div class="container">
        <script>

        function stampingPayInstance() {
            //document.getElementById('payButton').addEventListener('click', function() {
                /*Ingrese sus credenciales correctas*/
                const myCard = new StampingPAY('{PAY_CODE}',
                                               '{PROCESS_ID}',
                                               '{API_KEY}',
                                               420,
                                               'https://stamping.io/img/favicon.ico',
                                               true,
                                               true,
                                               true,
                                               true,
                                               true,
                                               'AjkMlr6'
                                               );
                /*Ingrese los datos del cliente*/
                myCard.payment("Entrada Peru-Colombia 9029493", 
                                20.50,
                                '',
                                '',
                                '',
                                '',
                                '',
                                '',
                                '')
            //});
        }
        
    </script>
    </div>
</body>
</html>
Salida del proceso
  • response: JSON con los datos del pago.

goEDVMerkle(URI, flgCreateEDV)

El proceso goEDVMerkle en Stamping.io, permite la creación de un árbol Merkle que agrupa distintas evidencias digitales. Estas evidencias pueden ser hashes de documentos, imágenes o secuencias de datos. El árbol Merkle (también conocido como árbol hash) se utiliza para estructurar y organizar las evidencias digitales, y se puede estampar en la blockchain si se especifica el flag flgCreateEDV.

Entradas
  • URI: Identificador único (Uniform Resource Identifier) que referencia el conjunto de evidencias digitales. El URI debe recuperar un JSON donde en el atributo attibutes se encuentra un listado (array) de hashes.
  • flgCreateEDV: Flag que indica si se debe crear y estampar el árbol Merkle en la blockchain. Si es true, se realiza el proceso de estampado.
Proceso
Se agrupan las evidencias digitales utilizando un árbol Merkle y el árbol se construye mediante la aplicación sucesiva de funciones hash a pares de evidencias digitales, hasta llegar al hash raíz.
Si flgCreateEDV es true, se estampa el hash raíz del árbol Merkle en la blockchain, proporcionando una prueba verificable de la existencia y estructura de las evidencias digitales en un momento específico.
Salida del proceso
  • Hash raíz del árbol Merkle creado.
  • Cantidad de evidencias registradas.
  • Transacción de estampado (trxid).
  • Información de registro en la cadena de bloques.
El proceso goEDVMerkle es útil para organizar y estructurar evidencias digitales de manera verificable mediante un árbol Merkle. El estampado en la blockchain ofrece una capa adicional de seguridad y trazabilidad.

goEDVStamp(evidence, transactionType, flgAsynchronous, data, params)

El proceso goEDVStamp en Stamping.io se encarga de estampar evidencias digitales utilizando el estándar EDV. Permite la creación de pruebas de existencia y la garantía de integridad de una secuencia de datos mediante el uso de funciones hash, y puede incluir información adicional en formato JSON, XML, HEX, BASE64 o ASCII.

Entradas
  • Evidence(SHA256): El hash SHA256 de la evidencia digital que se desea estampar.
  • transactionType: Tipo de transacción que describe la acción relacionada con la evidencia digital (por ejemplo, "CREATE", "UPDATE", "DELETE").
  • flgAsynchronous: Indica si el proceso debe ejecutarse de forma asíncrona, permitiendo el estampado de evidencias en segundo plano.
  • data: Información adicional asociada a la evidencia digital, proporcionada en formato JSON, XML, HEX, BASE64 o ASCII.
  • params: Parámetros adicionales que pueden incluir la URI del documento, coordenadas de latitud y longitud, resumen, entre otros.
Proceso
Se utiliza el hash SHA256 junto con la información adicional y los parámetros para crear una estructura de evidencia digital según el estándar EDV.
La evidencia digital se estampa, lo que implica la creación de un registro inmutable en la blockchain que verifica la existencia y la integridad de la evidencia.
Salida del proceso
  • Transacción de estampado (trxid).
  • uriView: URL del visor para verificar el estampado.
  • Si es sincrónico el estampado se muestra datos de la transacción registrada en la cadena de bloques.
El proceso goEDVStamp es fundamental para crear pruebas de existencia y garantizar la integridad de datos digitales mediante el estándar EDV. Puede ser utilizado en una variedad de casos, desde la certificación de documentos hasta la trazabilidad de activos digitales.