- Constructor: Define el poseedor del contrato como aquel que deploya el contrato, emite el evento Deploy
- stamp(string clave, string valor) -> void : el contrato guarda valor y bloque en un diccionario para la clave dada, si la clave ya estaba asignada, no hace nada. Emite el evento Stamped, en el caso que sí se haga la asignación, con los parámetros indexados sobre la clave, el valor y la cuenta que envió la transacción
- verify(string clave, string valor) -> bool : verifica que para la clave dada, tiene el valor asignado en el diccionario
- getBlock(string clave) -> unsigned int : precondición: está definido el diccionario, devuelve el int que corresponde al número de bloque donde se hizo el stamp original
- selfDestroy() -> void : precondición: el usuario es el poseedor del contrato. Invoca el selfdestroy del contrato, y se envía todo el eter que tenga al poseedor del contrato, emite el evento SelfDestroy con esos parámetros
Notas:
- Se debería hacer un call del verify antes de hacer una transacción de stamp, para que en el caso de que ya exista, no consumir gas innecesario