1
This commit is contained in:
parent
ecae00f4b4
commit
7fbcd56bb8
@ -60,7 +60,11 @@ class BlockChain extends BaseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async getPastEvents(contractName, eventName, ...args) {
|
async getPastEvents(contractName, eventName, ...args) {
|
||||||
return this.#bc[contractName + 'Instance'].getPastEvents(eventName, ...args);
|
return await this.#bc[contractName + 'Instance'].getPastEvents(eventName, ...args);
|
||||||
|
}
|
||||||
|
|
||||||
|
async ownerOf721(contractName, tokenId) {
|
||||||
|
return await this.#bc[contractName + 'Instance'].methods.ownerOf(tokenId).call();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -89,14 +89,14 @@ class Erc721Refresher extends BaseService {
|
|||||||
while (true) {
|
while (true) {
|
||||||
await this.bc.mustBeActive();
|
await this.bc.mustBeActive();
|
||||||
const oldBlockNumber = this.bc.getCurrBlockNumber();
|
const oldBlockNumber = this.bc.getCurrBlockNumber();
|
||||||
let oldOwner = await this.getOwner();
|
let oldOwner = await this.getOwner(row['token_id']);
|
||||||
while (oldBlockNumber + 8 > this.bc.getCurrBlockNumber()) {
|
while (oldBlockNumber + 8 > this.bc.getCurrBlockNumber()) {
|
||||||
await utils.sleep(1000 + utils.randRange(0, 500));
|
await utils.sleep(1000 + utils.randRange(0, 500));
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.bc.mustBeActive();
|
await this.bc.mustBeActive();
|
||||||
const newBlockNumber = this.bc.getCurrBlockNumber();
|
const newBlockNumber = this.bc.getCurrBlockNumber();
|
||||||
let newOwner = await this.getOwner();
|
let newOwner = await this.getOwner(row['token_id']);
|
||||||
|
|
||||||
if (oldOwner == newOwner) {
|
if (oldOwner == newOwner) {
|
||||||
const ok = await this.updateConfirmed(newOwner, oldBlockNumber, row);
|
const ok = await this.updateConfirmed(newOwner, oldBlockNumber, row);
|
||||||
@ -110,10 +110,33 @@ class Erc721Refresher extends BaseService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
await utils.sleep(1000 + utils.randRange(500, 1500));
|
await utils.sleep(1000 + utils.randRange(500, 1500));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getOwner(tokenId) {
|
||||||
|
while (true) {
|
||||||
|
await this.bc.lockQuery();
|
||||||
|
try {
|
||||||
|
let owner = await this.bc.ownerOf721(this.getContractName(), tokenId);
|
||||||
|
return owner;
|
||||||
|
} catch (err) {
|
||||||
|
const reason = utils.getVal(err, 'reason');
|
||||||
|
if (reason == 'ERC721: owner query for nonexistent token') {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
if (err == 'Error: Returned error: VM Exception while processing transaction: revert ERC721: owner query for nonexistent token' ||
|
||||||
|
err == 'Error: Returned error: execution reverted: ERC721: owner query for nonexistent token') {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
log.error(err);
|
||||||
|
} finally {
|
||||||
|
await this.bc.unlockQuery();
|
||||||
|
}
|
||||||
|
await utils.sleep(5000 + utils.randRange(1500, 2500));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async updateConfirmed(newOwner, blockNumber, row) {
|
async updateConfirmed(newOwner, blockNumber, row) {
|
||||||
const logHead = this.genLogHead('updateConfirmed ');
|
const logHead = this.genLogHead('updateConfirmed ');
|
||||||
const tokenId = row['token_id'];
|
const tokenId = row['token_id'];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user