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

'stamper' genérico (basado en la tsa v3 de Robert)

parent 96954714
No related branches found
No related tags found
No related merge requests found
// 20190401 Robert Martin-Legene <robert@nic.ar>
// Stamper
// vim:filetype=javascript
pragma solidity ^0.5.2;
contract Stamper {
struct stamp {
uint256 object;
address stamper;
uint256 blockno;
}
stamp[] stamplist;
// Mapping de objects stampeados a la stamplist
mapping ( uint256 => uint256[] ) hashobjects;
// Mapping de cuentas que stampean (stampers) a la stamplist
mapping ( address => uint256[] ) hashstampers;
constructor() public {
// No queremos que haya stamps asociados a la posicion 0 (== false)
// entonces guardamos ahi informacion de quien creo el SC y en que bloque
stamplist.push( stamp( 0, msg.sender, block.number) );
}
// Stampear una lista de objects (hashes)
function put( uint256[] memory objectlist ) public {
uint256 i = 0;
uint256 max = objectlist.length;
while ( i<max )
{
uint256 h = objectlist[i];
// stamplist.push devuelve la longitud, restamos 1 para usar como indice
uint256 idx = stamplist.push( stamp( h, msg.sender, block.number ) ) - 1;
hashobjects[h].push( idx );
hashstampers[msg.sender].push( idx );
i++;
}
}
// devuelve un stamp completo (object, stamper, blockno) de la lista
function getStamplistPos( uint256 pos ) public view returns ( uint256, address, uint256 )
{
return (stamplist[pos].object, stamplist[pos].stamper, stamplist[pos].blockno );
}
// devuelve la cantidad de stamps que hay de este object
function getObjectCount( uint256 object ) public view returns (uint256) {
return hashobjects[object].length;
}
// devuelve la ubicacion en la stamplist de un stamp especifico de este object
function getObjectPos( uint256 object, uint256 pos ) public view returns (uint256)
{
return hashobjects[object][pos];
}
// devuelve la cantidad de stamps que realizo este stamper
function getStamperCount( address stamper ) public view returns (uint256) {
return hashstampers[stamper].length;
}
// devuelve la ubicacion en la sstamplist de un stamp especifico de este stamper
function getObjectPos( address stamper, uint256 pos ) public view returns (uint256)
{
return hashstampers[stamper][pos];
}
}
// 20180718 Robert Martin-Legene <robert@nic.ar>
// Time stamp authority
// vim:filetype=javascript
pragma solidity ^0.5.2;
contract TimeStampAuthority {
struct stamp {
uint256 stamped;
address stamper;
uint256 blockno;
}
stamp[] stamplist;
// Provide mappings from what is being stamped, back to the stamplist
mapping ( uint256 => uint256[] ) hashstamped;
// Provide mappings from who is stamping, back to the stamplist
mapping ( address => uint256[] ) hashstamper;
constructor() public {
// We don't like to assign anything to position 0, so we fill
// it with a dummy which just happens to also have information
// about the creator and the blocknumber it was created.
stamplist.push( stamp( 0, msg.sender, block.number) );
}
// Stores hashes (256 bit uint) in the mapping
function put( uint256[] memory hasharray ) public {
uint256 i = 0;
uint256 max = hasharray.length;
while ( i<max )
{
uint256 h = hasharray[i];
uint256 idx = stamplist.push( stamp( h, msg.sender, block.number ) ) - 1;
hashstamped[h].push( idx );
hashstamper[msg.sender].push( idx );
i++;
}
}
function getStamplistPos( uint256 pos ) public view returns ( uint256, address, uint256 )
{
return (stamplist[pos].stamped, stamplist[pos].stamper, stamplist[pos].blockno );
}
// returns the number of stamps stored with this hash
function getStampedCount( uint256 hash ) public view returns (uint256) {
return hashstamped[hash].length;
}
// returns the index position into the stamplist
function getStampedPos( uint256 hash, uint256 pos ) public view returns (uint256)
{
return hashstamped[hash][pos];
}
// returns the number of stamps stored from this sender
function getStamperCount( address sndr ) public view returns (uint256) {
return hashstamper[sndr].length;
}
// returns the index position into the stamplist
function getStampedPos( address sndr, uint256 pos ) public view returns (uint256)
{
return hashstamper[sndr][pos];
}
}
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