Skip to content
Snippets Groups Projects
Commit 1d3ea805 authored by Mariano Absatz (git)'s avatar Mariano Absatz (git)
Browse files

agrego un README.md para describir el Stamper.sol (después habría que documentar el resto)

parent e6b38e99
No related branches found
No related tags found
No related merge requests found
# Stamper.sol
Smart contract simple que puede utilizarse para una _timestamp authority_ o para cualquier caso en el que quiera registrarse cosas del tipo:
* qué, quién, cuándo
* qué, dónde, cuándo
* quién, dónde, cuándo
Notar que el _cuándo_ definido más arriba se refiere a cuándo fue insertado en la _blockchain_, lo cual lo único que verifica es que el hecho, la cosa o la acción se realizaron o existían **antes** de eso. Si una aplicación requiere de una marca de tiempo específica (_fine grained_), como ser un registro de control de ingreso/egreso laboral, esto debería codificarse en el registro "qué" o "quién" y mantenerse _off-chain_.
El SC define una `struct stamp` que tiene:
* un hash llamado `object` (que representa un objeto arbitrario, que puede ser un archivo o cualquier otra cosa)
* una dirección llamada `stamper` (que identifica a la cuenta Ethereum -EOA- que invocó al SC para insertar este stamp)
* el número de bloque `blockno` (que contiene el número de bloque en el que se invocó al Sc para insertar este stamp)
El SC mantiene una lista de estas estructuras `stamplist` donde mantiene la información de todos los objetos _stampeados_.
En la primera posición de la lista (0), se guarda la información de la cuenta que instanció el SC y en qué bloque lo hizo.
Además mantiene dos arrays asociativos (_mappings_) que facilitan la búsqueda de stamps tanto por `object` (`hashobjects`) como por `stamper` (`hashstampers`).
Las funciones para invocar al SC son:
* `put ( [ lista de objects ] )` que recibe una lista de objects (puede ser uno solo) y genera un stamp para cada uno
* `getStampListPos ( posición )` que recibe una posición de la lista de stamps y devuelve el object correspondiente a esa posición
* `getObjectCount ( object )` que recibe un object y devuelve la cantidad de stamps que hay de ese object
* `getObjectPos ( object , pos )` que recibe un object y una posición de la lista para ese object y devuelve la posición correspondiente al stamp específico en la lista de stamps
* `getStamperCount ( stamper )` que recibe un stamper y devuelve la cantidad de stamps que realizó ese stamper
* `getStamperPos ( stamper , pos )` que recibe un stamper y una posición de la lista de ese stamper y devuelve la posición correspondiente al stamp específico en la lista de stamps
Esto permite fácilmente ubicar todos los stamps que hay de un object o todos los objects que haya enviado un stamper.
Un mismo object podría tener varios stamps (enviados por el mismo o diversos stampers).
En todos los casos, para cada stamp es fácil saber cuándo fue insertado en la blockchain.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment