Aplicaciones construidas en Lisk : proyecto de venta de entradas Lisk

diciembre 26, 2020 VICTOR HUGO LAZARTE 0 Comments

Introducción

Al crear entradas únicas en una cadena de bloques, Lisk Ticketing proporciona un nuevo enfoque para la venta de entradas en el que el fraude será más difícil y los organizadores de eventos pueden gestionar de forma eficaz todo el proceso, incluido el mercado secundario.

Situación actual

Los organizadores de eventos ofrecen eficazmente sus entradas a la venta online. Estas entradas a precios razonables a menudo son compradas en grandes cantidades por organizaciones de terceros, que luego las revenden con una ganancia. Esto es particularmente desventajoso para el cliente final que no tiene la capacidad de comprar los boletos más baratos con precio original e inevitablemente termina pagando una tarifa adicional. Esta tarifa adicional no beneficia a los artistas ni a los clientes finales, ya que termina siendo devengada por una organización de terceros intermediarios.

Muchos particulares también ofrecen sus entradas a la venta por diversas razones válidas, por ejemplo, ausentarse por enfermedad u otras obligaciones. Esto requiere un sistema claro que, por un lado, prevenga a los vendedores deshonestos y, por otro lado, ofrezca una opción viable para los vendedores privados.

Una posible solución al problema actual es Ticketswap . Proporcionan una plataforma donde puede vender y comprar boletos. Dado que permiten un margen máximo del 20% en las entradas, esta estrategia tiende a evitar que los vendedores deshonestos exploten a los clientes finales. Además, también realizan numerosos controles para asegurarse de que no se esté cometiendo fraude.

¿Podría la tecnología blockchain ayudarnos a resolver estos problemas?

Nuestra solución

Con la ayuda de la tecnología blockchain, podemos implementar los servicios de Ticketswap en un sistema de ticketing a nivel de protocolo. Todos los requisitos administrativos, como la identificación de personas y la verificación de la autenticidad de un ticket, se automatizan a través de la infraestructura blockchain. Incluso permite que un organizador de eventos determine las reglas para el mercado secundario (la reventa de boletos) y, por lo tanto, inhibe automáticamente los servicios de Ticketswap. Además, es aún más flexible ya que estas reglas se pueden ajustar por organización y por evento.

Construyendo el proyecto de venta de entradas Lisk

Construyendo el proyecto de venta de entradas Lisk

Construyendo el proyecto de venta de entradas Lisk

Detalles adicionales

Los problemas actuales de reventa de boletos se resolverán con nuestra solución que captura los boletos en una cadena de bloques.

Un organizador de eventos crea un evento en la cadena de entradas. La cadena ofrece la posibilidad de personalizar eventos y entradas. Un organizador puede indicar que las entradas no se pueden revender o que solo se venden a un porcentaje de beneficio máximo fijo.

Como los tickets están vinculados a una cuenta en la cadena de bloques, un ticket no puede cambiar entre usuarios fuera de la cadena. Cada transacción se registrará en la cadena. Además, cada entrada contiene propiedades específicas determinadas por el organizador antes de que comience la venta.

Las opciones adicionales para estas entradas consisten en un reembolso automático cuando se cancela un evento, así como futuras actualizaciones sobre eventos, que se pueden comunicar fácil y directamente a los titulares de las entradas.

Dentro de la aplicación, los boletos se pueden revender a otros usuarios, ya que es una ubicación central para obtener y comprar boletos. Hemos determinado que ya no es necesario ni siquiera tener un mercado de segunda mano. Los swaptickets se pueden encontrar en el sitio web del evento original.

Por lo tanto, Lisk Ticketing proporciona una solución para gestionar el proceso desde el momento de la creación de un evento hasta la venta de entradas y la entrada a un evento.

Oportunidades comerciales e interoperabilidad

Esta es una solución de venta de entradas de prueba de concepto. En esta etapa, todavía hay muchas ideas e incertidumbres con respecto a las oportunidades futuras relacionadas con los boletos digitales en una infraestructura blockchain.

Por ejemplo, podemos agregar la posibilidad de cuentas de artista y proporcionarles una tarifa automática (después de una venta y / o reventa). Alternativamente, podríamos conectarnos con una "Cadena de artistas" separada mediante la cual el artista podría ofrecer un descuento a todos los que asistieron anteriormente a un evento específico, que puede ser completamente automatizado.

Detalles técnicos: construido con SDK v5

Lisk Ticketing hace uso de los siguientes 8 módulos registrados (organizador, aspersor, token, secuencia, claves, dpos, evento, ticket).

Módulos

Token (módulo sdk)

Secuencia (módulo sdk)

Teclas (módulo sdk)

dpos (módulo sdk)

Cuadro 1a

Módulos

Activos de transacción

Organizador

  • createOrganizer

Aspersor

  • espolvorear

Evento

  • crear evento
  • cancelEvent

Boleto

  • comprar boleto
  • scanTicket
  • sellTicket
  • transferTicket
  • buyMarketTicket

Cuadro 1b

Utilice la API estándar
https://api-ticketswap.moosty.com/api/node/info para obtener más información sobre los " Módulos registrados ".

Construyendo el proyecto de venta de entradas Lisk

Construyendo el proyecto de venta de entradas Lisk

 

Construyendo el proyecto de venta de entradas Lisk

Crear cuenta de organizador (usando el módulo de organizador)

  • Esto creará una cuenta especial para organizadores de eventos.
  • Solo los organizadores de eventos pueden realizar una transacción de "crear evento" y escanear las entradas
  • Los organizadores no pueden comprar entradas
     
  • Crear evento
    • Una cuenta de organizador tiene la posibilidad de crear eventos a través de una transacción de creación de eventos.
    • Con esta transacción, indica la información del evento, la información de las entradas y la información de reventa.
    • Brinda la posibilidad de indicar diferentes tipos de boletos (madrugada, premium, diferentes escalas de precios), y qué acciones se pueden realizar como se describe a continuación: 
      • revender a terceros y el rango de precios (por ejemplo, máximo del 120% por ciento, o incluso máximo del 90%)
      • sin reventa, solo recompra
      • El organizador también puede determinar una tarifa de organizador revendiendo el boleto.
         
  • Cancelar evento
    • Un evento puede cancelarse de manera que los titulares de las entradas sean reembolsados ​​automáticamente. El porcentaje a reembolsar se establece en la transacción "crear evento"
       
  • Escanear ticket
    • El organizador escanea el código QR de un boleto cuando el titular de un boleto solicita acceso para ingresar al evento. La transacción scanTicket cambia el estado del ticket en la cadena de bloques
       

Construyendo el proyecto de venta de entradas Lisk

Construyendo el proyecto de venta de entradas Lisk

Construyendo el proyecto de venta de entradas Lisk

Crear cuenta de usuario

  • Esto creará una cuenta normal para los poseedores de boletos.
  • Esta cuenta permitirá a un usuario poseer tokens, explorar eventos y comprar (vender y revender) boletos.
     
  • Comprar boleto
    • Compra un boleto o un swapticket.
       
  • Vender entradas (p2p)
    • Los poseedores de boletos pueden revender su boleto en el mercado de segunda mano.
       
  • Billete de transferencia
    • Envíe su boleto a un amigo.

  • Ingresar evento
    • muestra el código QR al comienzo del evento.
       

Los boletos pueden usarse digitalmente e imprimirse en papel, con el (los) código (s) QR, y pueden ser validados y autenticados por el propietario.

Construyendo el proyecto de venta de entradas Lisk

Construyendo el proyecto de venta de entradas Lisk

Construyendo el proyecto de venta de entradas Lisk

Lisk SDK v5

Este PoC se creó utilizando Lisk SDK v5 . Esta última versión tiene muchas ventajas nuevas en comparación con las anteriores. En versiones anteriores, era posible crear una lógica de transacción personalizada para personalizar su blockchain. Sin embargo, en v5 es posible construir módulos y activos (transacciones personalizadas). Los módulos personalizados se crean para definir las propiedades de la cuenta y un conjunto de transacciones para cambiar el estado de estas propiedades de la cuenta. Las transacciones personalizadas pueden cambiar las propiedades del estado de la cuenta definidas en el módulo.

Los módulos pueden tener acciones y reductores. Las acciones se utilizan para recopilar un estado fuera de la cadena, no se utilizan para cambiar nada en la cadena. Los reductores se utilizan para cambios onChain. Por ejemplo, el módulo de token tiene reductores llamados crédito y débito. Entonces, cuando realiza una transacción personalizada en la que tiene que pagar tokens LSK a otra cuenta, puede debitar el saldo del token del remitente y acreditar esos tokens a una cuenta receptora a través de estos reductores.

Lisk Ticketing tiene 4 módulos personalizados y un total combinado de 9 transacciones personalizadas (consulte las tablas 1a y 1b). El módulo de organizador almacena el nombre de un organizador y, al enviar la transacción del organizador de registro, proporciona los tokens de cuenta para fines de prueba. El módulo de eventos almacena eventos y almacena sus ID en la cuenta del organizador que tiene el evento. El módulo de tickets almacena los ID de ticket propios en la cuenta del usuario. Finalmente, el módulo de rociadores es un módulo de grifo de prueba de concepto que otorga tokens al usuario para probar la prueba de concepto de LisTicketing.

En esta PoC, puede comprar boletos de un organizador o revendedor con tokens LSK. Al comprar un boleto, el costo se restará del saldo de LSK del comprador utilizando el reductor de débito de token.

Aclaración: Pa:ra ver completos los codigos se recomeienda verlos  desde una PC

aguardar reducerHandler . invoke ( "token: débito" , {
dirección : senderAddress ,
cantidad : activo . valor ,
} ) ;
ver crudobuyTicket.js alojado con ❤ por GitHub

Se agregará la misma cantidad de tokens al organizador (propietario de un evento).

aguardar reducerHandler . invoke ( "token: crédito" , {
dirección : organización . ownerAddress ,
cantidad : activo . valor ,
} ) ;
ver crudobuyTicket.js alojado con ❤ por GitHub

Un ticket se registra en una cuenta una vez que ese ticket se crea en la cadena de bloques en su propia base de datos con una identificación única. Las entradas tienen las siguientes propiedades:

  • carné de identidad
  • ownerAddress
  • eventId
  • typeId
  • valor

La dirección del propietario es la cuenta que posee el boleto, el eventId corresponde a un evento, el typeId se vincula al tipo de boleto que compró el usuario y, finalmente, el valor es la cantidad de tokens utilizados para pagar el boleto.

El módulo de entradas agrega una propiedad de entradas a la cuenta. En la transacción buyTicket, se crea un boleto y la identificación única se agrega a la lista en la propiedad de boletos de la cuenta. Para determinar cuántas entradas no vendidas quedan, es necesario actualizar el evento. Esto también se realiza utilizando un reductor.

aguardar reducerHandler . invoke ( "evento: soldTicket" , {
eventId : activo . eventId ,
typeId : activo . typeId ,
} ) ;
ver crudobuyTicket.js alojado con ❤ por GitHub

El reductor soldTicket del módulo de eventos incrementará la propiedad vendida del tipo de entrada del eventId especificado en 1 y guarda todos los eventos en la tienda de eventos.

const soldTicket = async ( { params , stateStore } ) => {
const { eventId , typeId } = params ;
const registrationEventsBuffer = espera stateStore . cadena . obtener (
CHAIN_STATE_EVENTS
) ;
if ( ! SavedEventsBuffer ) {
lanzar nuevo Error ( 'No se encontraron eventos' ) ;
}
eventos registrados const = códec . decodificar (
eventSchema ,
registerEventsBuffer
) ;
const eventIndex = eventos registrados . eventos . findIndex ( e => e . id . toString ( 'hex' ) === eventId ) ;
if ( eventIndex === - 1 ) {
arrojar nuevo Error ( 'Evento no encontrado' ) ;
}
const typeIndex = eventos registrados . eventos [ eventIndex ] . ticketData . findIndex ( t => t . id === typeId ) ;
if ( typeIndex === - 1 ) {
lanzar nuevo Error ( 'Tipo de ticket no encontrado' ) ;
}
eventos registrados . eventos [ eventIndex ] . ticketData [ typeIndex ] . vendido ++ ;
esperar setAllEvents ( stateStore , eventos registrados . eventos ) ;
}
ver crudoevent_asset.js alojado con ❤ por GitHub

Observaciones finales

Con Lisk Ticketing hemos creado nuestra primera aplicación blockchain con Lisk SDK v5 . La introducción de la estructura del módulo fue una adición bienvenida al Lisk SDK. Proporciona una forma más estructurada de crear cadenas de bloques personalizadas

Enlaces adicionales

Aplicación:  https://ticketing.moosty.com/

Explorer:  https://explorer.moosty.com/ (cambie a Lisk Ticketing con el botón en la parte inferior derecha)

API - información de nodo y cuenta:  https://api-ticketswap.moosty.com/api/node/info

API extendida: específica de blockchain:  https://eapi-ticketswap.moosty.com/api/events

Interfaz de Github:  https://github.com/Moosty/lisk-ticketing/

Back-end de Github:  https://github.com/Moosty/lisk-ticketing-chain

Fuente: blog de Lisk

Introducción Al crear entradas únicas en una cadena de bloques, Lisk Ticketing proporciona un nuevo enfoque para la venta de entradas en el ...