Recetas electrónicas y el Hashcash de Bitcoin

Antecedentes

El Hashcash, inventado por el criptógrafo inglés Adam Back en 1997, nace como consecuencia de combatir el correo basura -o spam-. La idea de Back era imponer un costo de tiempo (mínimo) por el envío de cada correo. El imponer este costo a alguien que envía unos pocos correos al día esto no le afectaría en lo absoluto; sin embargo, para una persona que quisiera enviar unos millones de correos al día, el costo de tiempo impuesto por Back por envío seria significativo.

La aplicación más importante del Hashcash fue su implementación como núcleo de minería  del Bitcoin, realizado por su creador Satoshi Nakamoto, haciendo de ella una moneda criptográfica segura, característica que la hizo ganar popularidad durante los últimos años.

Lo anterior quiere decir que todos los mineros Bitcoin están gastando su esfuerzo creando pruebas de trabajo Hashcash que actúan como un voto en la evolución de Blockchain y validan el registro de estas transacciones.   

Hashcash

Hashcash es un algoritmo de prueba de trabajo (PoW por sus siglas en inglés, Proof-of-Work) escrito en distintos lenguajes de programación. En este artículo haremos referencia a la  librería Hashcash escrita en python, la cual fue desarrollada por David Mertz y es de libre acceso.

 

Hashcash en Prescrypto

Basados en la clase creada por Mertz, en Prescrypto desarrollamos una clase escrita en Python llamada “Hashcash”. En comparación con la de Mertz, las ventajas de nuestra clase son el uso de la función sha256 para crear el hashcash en la función “Check Sha” y añadir un tiempo de expiración a los hashcash en la función “Check Hashcash”.         

La clase Hashcash

La clase Hashcash cuenta con tres funciones principales:

Create Challenge

Esta función recibe un valor del tipo string, por ejemplo “Prueba”, y genera un hashcash incompleto del tipo string como se muestra a continuación:

Prescrypto1.1*8*06/04/18 13:00:00*Prueba*l-abzeyw*

Cada elemento de este hashcash incompleto tiene el siguiente significado:

– Prescrypto1.1: es la versión de hashcash a utilizar.

– 8: Son los bits de dificultad que tendrá la PoW.

– 06/04/2018 13:00:00: es la fecha y hora de creación del hashcash incompleto con un formato “DD/MM/AAAA HH.MM.SS”.

– Prueba: Es la palabra inicial para comenzar a generar el hashcash.

– l-abzeyw: Es el arreglo aleatorio de palabras con longitud ocho.

 

Check Sha

Esta función recibe un hashcash incompleto generado por la función Create Challenge y   calcula:

Sha256(hashcash incompleto + intento),

donde intento es un número entero hexadecimal. Si el resultado no es correcto, la función no regresa valor alguno y aumenta el intento en uno. Si el resultado es correcto, la función regresa un hashcash válido. Por ejemplo:

Prescrypto1.1*8*06/04/18 13:00:00*Prueba*l-abzeyw*FA

Recordemos que FA es el intento válido, es decir, al aplicar:

Sha256(Prescrypto1.1*8*06/04/18 13:00:00*Prueba*l-abzeyw*FA)

obtenemos los bits necesarios para aprobar la prueba de trabajo (PoW).

 

Check Hashcash

Esta función recibe un hashcash y determina si es válido o inválido; si fuese válido también es posible agregarle un tiempo de caducidad. Como se explica a continuación:

 

La documentación completa a esta clase puede ser consultada en aquí.

 

Implementación de Hashcash en Prescrypto.

La clase hashcash que desarrollamos tiene como objetivo implementar una PoW en la generación de cada bloque en RxChain y validar la PoW implementada en la misma, es decir, cada que se crea una receta nueva en RxChain se realiza el cálculo de generar un hashcash, si este es válido, se genera un bloque; en el caso contrario se espera la creación de una nueva receta y se vuelve a hacer el cálculo una vez más hasta encontrar un hashcash válido y así generar un bloque con todas las recetas anteriores.

Lo anterior se refleja en el siguiente diagrama de flujo:

Por último, al implementar la PoW en Prescrypto buscamos obtener un número aleatorio de recetas por bloque creado en RxChain, de una manera similar como ocurre en el Bitcoin.

 

Bibliografía

[1] http://www.hashcash.org/

[2] https://en.bitcoin.it/wiki/Hashcash

[3] http://www.gnosis.cx/download/gnosis/util/hashcash.py

[4] https://github.com/Prescrypto/hashcash

Mi primera semana en una startup: Prescrypto

Soy Mariano Salinas, estudié Comercio y Negocios Internacionales, estoy por terminar la carrera en Derecho, y llevo una semana en Prescrypto.

Hasta ahora mi camino profesional había estado enfocado en las funciones propias de un analista, he trabajado tanto para el sector energético como para el de la investigación de mercados. Esta semana tuve la oportunidad de integrarme a Prescrypto, una startup mexicana que está haciendo las cosas bastante bien al cuidar el medio ambiente, ser eficientes, tener comunicación constante y mejorar continuamente en todo lo que realizan.

Trabajar en una startup puede hacerte sentir extraño; así me sentí, al principio no tenía claro lo que significaba. “Nadie los conoce”,”no sé a qué se dedican”, son algunos de los pensamientos que rodearon mi mente al momento del primer contacto que tuve con ellos. Después de 5 días aquí tengo una idea (vaga, pero una idea) de lo que es formar parte de una startup como Prescrypto.

¿Qué es una startup?

Busqué en Wikipedia y encontré que es una empresa emergente, por lo general involucrada con la tecnología, asociada con conceptos como innovación, desarrollo de tecnologías, diseño y desarrollo web.

Esto me hizo pensar en todo lo que estaba por aprender en Prescrypto…

1. Conocer e integrarse a la estructura y el funcionamiento

Desde el primer minuto aquí me sentí parte de la organización, como si llevase ya más tiempo y no sólo sesenta segundos. Me di cuenta que soy parte de un equipo, no soy un número más. Me asignaron un mentor, el cual me apoya e instruye en cualquier actividad que esté por realizar por primera vez. Y así comenzó todo: plataformas, cuentas, correos, actividades… todas y cada una de las tareas que realizo son importantes para el funcionamiento de esta startup.

2. Trabajar por objetivos

Pronto me di cuenta de la existencia de los procesos de cada actividad, la mayoría de las plataformas están integradas y todas cumplen una etapa del proceso en Prescrypto. Desde la comunicación con los potenciales clientes, hasta el seguimiento de posventa del producto. No importan las horas (porque realmente no hay un horario) sino las tareas trabajadas o resueltas (las cuales están definidas y ordenadas cada semana). Igualmente los roles están bien definidos y recibes la capacitación para cada actividad a realizar. Ser ordenado es parte esencial para que las actividades sean cubiertas en tiempo y forma.

3. Inmersión tecnológica

Colaborar en una startup puede ser sinónimo de tecnología para muchos; para mí significó no tener idea de la gran integración que la tecnología tiene en la vida laboral, y descubrir la cantidad de aplicaciones y plataformas que existen para cada situación. Ésta es el área donde más he adquirido conocimientos en los días que llevo aquí. Hoy ya soy #Blockchain.

4. Política sobre el conocimiento

Todo parece estar en Google, en tu mentor o en cualquier otro miembro del equipo, aquí cualquiera te apoyará a resolver aquello en lo que te atores. Empoderar a los miembros del equipo tiene como consecuencia que cada uno realice las actividades de la manera más independiente posible. Además de que los miembros del equipo son personas preparadas, dominan más de un área de conocimiento.

 

El viaje comienza

Como emprendedor, profesionista y voluntario, me emociona formar parte de un mundo interconectado, en el que el conocimiento está al alcance de todos, y poder aportar en todo lo que me sea posible. La mentalidad de Prescrypto es diferente al ambiente de trabajo tradicional y esto me inspira a pensar diferente y a optar por soluciones creativas; sin duda hay grandes retos y muchos cambios por delante. Sé que siendo apasionado y feliz realizando mi trabajo podré sentirme parte del cambio.

Yo, como Orson Scott Card, creo que…

“cambiar el mundo es bueno para aquellos que quieren su nombre en los libros. Pero ser feliz… eso es para aquellos que escriben sus nombres en las vidas de los demás.”

9 razones para utilizar prescripciones médicas electrónicas

En diversos países ya es una práctica común la de utilizar sistemas de prescripción electrónica, la Unión Europea (España, Gran Bretaña, etc.) lleva ya más de un lustro utilizándolas. En nuestro continente, Estados Unidos ha sido uno de los pioneros; junto a él también está Brasil, Chile y Perú. México es un terreno fértil en el que se ha intentado implantar esta tecnología, como te hemos contado en textos anteriores, no con mucho éxito.

Las prescripciones médicas electrónicas existen dentro de sistemas de información médica; esto significa que dentro de ellos hay mucha más información que solamente la relacionada con un tratamiento médico. Estas redes de datos están diseñadas para conectar el historial médico del paciente, tratamientos actuales, observaciones o alergias a ciertos medicamentos, padecimientos crónicos, etc.

 

¿Está tu médico actualizado o sigue en la prehistoria?

Si aún tu doctor no se convence de sumarse a esta vanguardia tecnológica, nosotros te damos algunas de las principales razones para que sí se sume. Las recetas o prescripciones electrónicas ofrecen las siguientes ventajas:

  1. Certeza en los medicamentos recetados al disminuir los errores asociados a la ilegibilidad de la caligrafía de los médicos, que se traduce en el suministro de medicamentos no prescritos.
  2. Accesibilidad y eficiencia al consultar información clínica del paciente dentro y fuera del consultorio sin ir a repositorios físicos por ella. Lo que hace tener a la mano el historial clínico, los tratamientos actuales, las observaciones o alergias a ciertos medicamentos, los padecimientos crónicos, los resultados clínicos, etc. También significa que el médico pueda consultar fácilmente catálogos médicos y así comparta información sobre la seguridad y efectos secundarios de los medicamentos recetados.
  3. Impacto ecológico positivo al evitar grandes cantidades de gasto en papel.
  4. Automatización y eficiencia en la comunicación entre todos los involucrados: pacientes, médicos, laboratorios clínicos, farmaceutas.
  5. Control y privacidad de la información del paciente al estar alojada en
  6. Simplificación de los procesos en los centros de salud al facilitar la comunicación de tratamientos y recetas médicas entre pacientes, farmacias y otros médicos tratantes del mismo paciente.
  7. Ahorro económico al automatizar procesos haciendo que sucedan en menor tiempo y con menores recursos para obtener la misma información.
  8. Rastreo y seguimiento de inventarios en farmacias intrahospitalarias hará más eficiente la disponibilidad de medicamentos y la cadena de suministro de inventarios en clínicas y hospitales.
  9. Mayor seguridad en la prescripción al aumentar la posibilidad de sugerencias en la posología de los medicamentos. Esto se traduce en disminución de iatrogenias médicas y mala praxis en las prescripciones de medicamentos, y como consecuencia también disminución de errores en las prescripciones.

 

El futuro es hoy

Existe un piso mínimo del que debe partir todo sistema de prescripciones electrónicas y es que garantice la seguridad y privacidad informática, y que facilite la calidad y seguridad clínica de las prescripciones. Para ello se pide integrarse una firma digital, como un código QR o códigos de barras, así como una red que resguarde la transmisión de la información de forma segura, como lo es la tecnología Blockchain.

Nuestro gran interés es lograr la integración de esta tecnología porque sabemos que se traduce en una mejora de los servicios de salud y en la mejora de ella misma para los pacientes. Las recetas electrónicas que ofrecemos cuentan con firma electrónica y la información en ellas se transmite utilizando la tecnología blockchain. Además tienen la posibilidad de consultarse en diferentes dispositivos electrónicos (tabletas, teléfonos móviles, computadoras) y están diseñadas para ser simples y fáciles de usar.