diff --git a/.gitignore b/.gitignore index 042d298bb254cd4b5eeb3277746e3d2d982acb71..36faf9bcf0cf444801dceb0bdae65f211d23e3b2 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ 847e7d6ea18a417496518dc90b547438bf1b3d05.json +api/nohup.out +www diff --git a/api/src/StamperWrapper.js b/api/src/StamperWrapper.js index 17760c7d824f26502aac34637362ef18f1497fc5..11c923debfbc43864a5722eb621361ae327173bc 100644 --- a/api/src/StamperWrapper.js +++ b/api/src/StamperWrapper.js @@ -75,6 +75,38 @@ class Stamper { }) } + async wait1block() { + return new Promise((resolve, reject) => { + let max = 10; + let web3 = this.web3; + web3.eth.getBlockNumber() + .then( + (startnum) => { + setTimeout( + function nextblock() + { + web3.eth.getBlockNumber() + .then( + (nownum) => { + if ( nownum != startnum ) + resolve( nownum ); + else + if ( max-- > 0 ) + setTimeout( nextblock, 500 ) + else + reject( 'Timeout. Tal vez no esta sincronizado el nodo local' ) + }, + reject + ) + }, + 500 + ) + }, + (errtxt) => { reject('No conseguimos el blockNumber.\n'+errtxt) } + ) + }) + } + async verify(hash) { try { let count = await this.contract.methods.getObjectCount(hash).call() @@ -85,10 +117,16 @@ class Stamper { var stamps = [] for (var i = 0; i < count; i++) { - let stampPos = await this.contract.methods.getObjectPos(hash, i).call() - let stamp = await this.contract.methods.getStamplistPos(stampPos).call() - - stamps.push({ stamper: stamp[1], block: stamp[2].toString() }) + let stampPos = await this.contract.methods.getObjectPos(hash, i).call() + let stamp = await this.contract.methods.getStamplistPos(stampPos).call() + let whostamped = stamp[1]; + let blockno = stamp[2]; + let block = await this.web3.eth.getBlock( blockno ); + stamps.push({ + whostamped: whostamped, + blocknumber: blockno.toString(), + blocktimestamp: block.timestamp + }); } console.log(`exito verificación ${hash}`) @@ -100,4 +138,4 @@ class Stamper { } } -export default Stamper \ No newline at end of file +export default Stamper diff --git a/api/src/index.js b/api/src/index.js index 39cf60980199ccb20055b6c4b9a7cb02bb25e1aa..f728ff9401edeab12a3d9ec3653691881725b206 100644 --- a/api/src/index.js +++ b/api/src/index.js @@ -102,6 +102,23 @@ if (process.env.API_USER && process.env.API_PASS) { /***************************************************/ // API Endpoints /***************************************************/ +app.get('/wait1block', async (req, res) => { + let ss = new Stamper(web3, contractAbi, contractAddress) + + try { + let blockno = await ss.wait1block() + return res.json( + { + success: true, + blocknumber: blockno + } + ) + } catch (e) { + console.error( e ) + res.status( 500 ) + res.send( e ) + } +}) app.post('/stamp', async (req, res) => { let ss = new Stamper(web3, contractAbi, contractAddress)