1
This commit is contained in:
parent
44485f9a79
commit
cdaa601fc8
@ -3,8 +3,10 @@ const EVENTDB_STATE_HANDLED = 1;
|
|||||||
|
|
||||||
const GAMEDB_NAME = 'GameDb0';
|
const GAMEDB_NAME = 'GameDb0';
|
||||||
const BCEVENTDB_NAME = 'BcEventDb0';
|
const BCEVENTDB_NAME = 'BcEventDb0';
|
||||||
|
const BCNFTDB_NAME = 'BcNftDb0';
|
||||||
|
|
||||||
exports.EVENTDB_STATE_PENDING = EVENTDB_STATE_PENDING;
|
exports.EVENTDB_STATE_PENDING = EVENTDB_STATE_PENDING;
|
||||||
exports.EVENTDB_STATE_HANDLED = EVENTDB_STATE_HANDLED;
|
exports.EVENTDB_STATE_HANDLED = EVENTDB_STATE_HANDLED;
|
||||||
exports.GAMEDB_NAME = GAMEDB_NAME;
|
exports.GAMEDB_NAME = GAMEDB_NAME;
|
||||||
exports.BCEVENTDB_NAME = BCEVENTDB_NAME;
|
exports.BCEVENTDB_NAME = BCEVENTDB_NAME;
|
||||||
|
exports.BCNFTDB_NAME = BCNFTDB_NAME;
|
||||||
|
@ -39,7 +39,7 @@ class BlockChain extends BaseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getCurrBlockNumber() {
|
getCurrBlockNumber() {
|
||||||
return this.#bc.currBlockNumber;
|
return this.#bc.getCurrBlockNumber();
|
||||||
}
|
}
|
||||||
|
|
||||||
async lockQuery() {
|
async lockQuery() {
|
||||||
|
@ -41,6 +41,14 @@ class Erc721Refresher extends BaseService {
|
|||||||
if (err) {
|
if (err) {
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
|
if (rows.length > 0) {
|
||||||
|
await utils.serial(
|
||||||
|
rows,
|
||||||
|
async (row) => {
|
||||||
|
await this.refresh(row);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log.error(logHead + err);
|
log.error(logHead + err);
|
||||||
await utils.sleep(5000 + utils.randRange(1000, 3000));
|
await utils.sleep(5000 + utils.randRange(1000, 3000));
|
||||||
@ -64,6 +72,61 @@ class Erc721Refresher extends BaseService {
|
|||||||
return head;
|
return head;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async refresh(row) {
|
||||||
|
while (true) {
|
||||||
|
await this.bc.mustBeActive();
|
||||||
|
const oldBlockNumber = this.bc.getCurrBlockNumber();
|
||||||
|
let oldOwner = await this.getOwner();
|
||||||
|
while (oldBlockNumber + 8 > this.bc.getCurrBlockNumber()) {
|
||||||
|
await utils.sleep(1000 + utils.randRange(0, 500));
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.bc.mustBeActive();
|
||||||
|
const newBlockNumber = this.bc.getCurrBlockNumber();
|
||||||
|
let newOwner = await this.getOwner();
|
||||||
|
|
||||||
|
if (oldOwner == newOwner) {
|
||||||
|
const ok = await this.updateConfirmed(newOwner, oldBlockNumber, row);
|
||||||
|
if (ok) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await utils.sleep(1000 + utils.randRange(500, 1500));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async updateConfirmed(newOwner, blockNumber, row) {
|
||||||
|
const {err, nftDbConn} = await app.getDbConn(constant.BCNFTDB_NAME);
|
||||||
|
if (err) {
|
||||||
|
log.error('updateConfirmed:' + this.tokenId + ' err:' + err);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
{
|
||||||
|
const {err} = await nftDbConn.update(
|
||||||
|
't_nft',
|
||||||
|
[
|
||||||
|
['net_id', row['net_id']],
|
||||||
|
['token_id', row['token_id']],
|
||||||
|
['contract_address', row['contract_address']],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
['owner_address', bcutils.toNormalAddress(newOwner)],
|
||||||
|
['confirm_count', this.nftDb['confirm_count'] + 1],
|
||||||
|
['confirm_block_number', blockNumber]
|
||||||
|
]);
|
||||||
|
if (err) {
|
||||||
|
log.error('updateConfirmed:' + this.tokenId + ' err:' + err);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
nftDbConn.release();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Erc721Refresher;
|
module.exports = Erc721Refresher;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user