diff --git a/api/src/StamperWrapper.js b/api/src/StamperWrapper.js index 7eebbb3ef4d60f9620e6dd31600dd0cbf5925622..41b6140e93dd2d18c74a07851d6fe4f2f1a23ff7 100644 --- a/api/src/StamperWrapper.js +++ b/api/src/StamperWrapper.js @@ -11,7 +11,7 @@ class Stamper { // utiliza la cuenta walletAccount para enviar la transaccion // (o defaultAccount si no se especifica) async stamp(objects, walletAccount) { - console.log(`stamping ${objects}`) + console.log(`asked to stamp ${objects}`) // si walletAccount es undefined trata de usar la account de web3.eth.defaultAccount let defaultAccount = (walletAccount) ? walletAccount.address : this.web3.eth.defaultAccount @@ -19,13 +19,21 @@ class Stamper { for (let i=0; i < objects.length; i++) { let blockNo = await this.contract.methods.getBlockNo(objects[i], defaultAccount).call() - if (blockNo == 0) objectsToStamp.push(objects[i]) + if (blockNo == 0) + { + objectsToStamp.push(objects[i]) + } + else + { + console.log(`already stamped: ` + objects[i] ); + } } if (objectsToStamp.length == 0) return new Promise( (resolve) => { console.log(`Los objects enviados ya están stampeados`) resolve() }) + console.log(`stamping ` + objectsToStamp.join(', ') ); let txPromise let gasLimit = 2000000 @@ -42,7 +50,8 @@ class Stamper { //chainId: '200941592', gas: gasLimit, // gasLimit: gasLimit, - data: encodedABI + data: encodedABI, + nonce: this.web3.bfa.txnonce++ } // tx.v = Buffer.from([47525974938]) // tx.nonce = this.web3.utils.toHex(await this.web3.eth.getTransactionCount(defaultAccount)) diff --git a/api/src/index.js b/api/src/index.js index 598d3ce92257e04b059fea8dacf24f32c651cd81..51a8a124376cacecdc7aec3ec888cc1c020f4cbd 100644 --- a/api/src/index.js +++ b/api/src/index.js @@ -43,6 +43,9 @@ async function setupWeb3() { // se trata de utilizar una que haya abierta web3.eth.defaultAccount = (await web3.eth.getAccounts())[0] } + web3.bfa = { + txnonce: await web3.eth.getTransactionCount(web3.eth.defaultAccount), + } /***************************************************/ // Carga de contrato @@ -102,6 +105,7 @@ if ( process.env.API_USER && process.env.API_PASS ) { // API Endpoints /***************************************************/ app.get('/wait1block', async (req, res) => { + console.log( Date() + ": /wait1block" ); let ss = new Stamper(web3, contractAbi, contractAddress) try { @@ -119,6 +123,7 @@ app.get('/wait1block', async (req, res) => { } }) app.post('/stamp', async (req, res) => { + console.log( Date() + ": /stamp " + req.body.hashes.join(', ') ); let ss = new Stamper(web3, contractAbi, contractAddress) if ( ! ("hashes" in req.body) ) @@ -158,6 +163,7 @@ app.post('/stamp', async (req, res) => { }) app.get('/verify/:hash', async (req, res) => { + console.log( Date() + ": /verify/:" + req.params.hash ); let ss = new Stamper(web3, contractAbi, contractAddress) var value = req.params.hash diff --git a/api/start.sh b/api/start.sh new file mode 100755 index 0000000000000000000000000000000000000000..7aedb6b33a214bf69e0021e33bc24a9404983dae --- /dev/null +++ b/api/start.sh @@ -0,0 +1,46 @@ +#!/bin/bash +# Example startup script + +if ip a | grep -q inet.200.108.146.180/ +then + mode=test2 +else + mode=${1:-prod} +fi + +cd `dirname $0` +case "$mode" in + "prod") + modedir=$( echo ~bfa/bfa/network ) + export CONTRACT_ADDRESS="0x7e56220069CAaF8367EA42817EA9210296AeC7c6" + ;; + "test2") + modedir=$( echo ~bfa/bfa/test2network ) + export CONTRACT_ADDRESS="0xFc0f01A88bD08b988173A2354952087C9492d947" + ;; + "*") + echo "Unsupported mode." >&2 + echo "Usage: $0 <test2|prod>" >&2 + exit 1 + ;; +esac +export GETH_ACCOUNT_JSON=$( ls -1 ${modedir}/node/keystore/UTC* | head -1 ) +export GETH_ACCOUNT_PASSWORD="" +export GETH_HOST=http://localhost:8545 +export CONTRACT_ABI_PATH="${PWD}/abi.json" + +# roll logs +higher=10 +for n in {9..0} +do + if [ $n -eq 0 ] + then + mv -f "nohup.out" "nohup.out.$higher" + else + mv -f "nohup.out.$n" "nohup.out.$higher" + fi + higher=$n +done + +nohup npm run serve & +sleep 1