1
This commit is contained in:
parent
a773cdbce0
commit
9fb7e16e14
@ -1,5 +1,6 @@
|
|||||||
const util = require('util');
|
const util = require('util');
|
||||||
const Web3 = require('web3');
|
const Web3 = require('web3');
|
||||||
|
const app = require('j7/app');
|
||||||
const utils = require('j7/utils');
|
const utils = require('j7/utils');
|
||||||
const event = require('j7/event');
|
const event = require('j7/event');
|
||||||
const sync = require("j7/sync");
|
const sync = require("j7/sync");
|
||||||
@ -91,9 +92,11 @@ class BlockChain {
|
|||||||
);
|
);
|
||||||
if (!err && row) {
|
if (!err && row) {
|
||||||
this.firstBlockNumber = Number(row['value']);
|
this.firstBlockNumber = Number(row['value']);
|
||||||
|
await utils.sleep(500 + utils.randRange(500, 1500));
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
console.log(e);
|
||||||
} finally {
|
} finally {
|
||||||
conn.release();
|
conn.release();
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
const log = require('j7/log');
|
const log = require('j7/log');
|
||||||
const bcutils = require('j7/bcutils');
|
const bcutils = require('j7/bcutils');
|
||||||
const utils = require('j7/utils');
|
const utils = require('j7/utils');
|
||||||
|
const metaFactory = require('../../metadata/factory');
|
||||||
|
|
||||||
class BoxOpenedProcess {
|
class BoxOpenedProcess {
|
||||||
|
|
||||||
async start(conn, event) {
|
async start(instance, conn, event) {
|
||||||
const {err, row} = await conn.ormSelectOne(
|
const {err, row} = await conn.ormSelectOne(
|
||||||
't_boxopened_event',
|
't_boxopened_event',
|
||||||
[
|
[
|
||||||
@ -37,6 +38,7 @@ class BoxOpenedProcess {
|
|||||||
);
|
);
|
||||||
fieldList.push(['token_type' + (i + 1), type]),
|
fieldList.push(['token_type' + (i + 1), type]),
|
||||||
await this.mintNft(
|
await this.mintNft(
|
||||||
|
conn,
|
||||||
bcutils.toNormalAddress(returnValues['to']),
|
bcutils.toNormalAddress(returnValues['to']),
|
||||||
blockNumber,
|
blockNumber,
|
||||||
id,
|
id,
|
||||||
@ -53,7 +55,7 @@ class BoxOpenedProcess {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async mintNft(owner, blockNumber, tokenId, tokenType) {
|
async mintNft(conn, owner, blockNumber, tokenId, tokenType) {
|
||||||
const {err, row} = await conn.ormSelectOne(
|
const {err, row} = await conn.ormSelectOne(
|
||||||
't_nft',
|
't_nft',
|
||||||
[
|
[
|
||||||
|
@ -4,7 +4,6 @@ const bcutils = require('j7/bcutils');
|
|||||||
const log = require('j7/log');
|
const log = require('j7/log');
|
||||||
const event = require('j7/event');
|
const event = require('j7/event');
|
||||||
const BaseService = require('./baseservice');
|
const BaseService = require('./baseservice');
|
||||||
const metaFactory = require('../metadata/factory');
|
|
||||||
const bc = require('../blockchain');
|
const bc = require('../blockchain');
|
||||||
const C = require('../C');
|
const C = require('../C');
|
||||||
const factory = require('./factory');
|
const factory = require('./factory');
|
||||||
@ -18,29 +17,24 @@ class EventCenter extends BaseService {
|
|||||||
instances = [
|
instances = [
|
||||||
{
|
{
|
||||||
'name': 'heroInstance',
|
'name': 'heroInstance',
|
||||||
'last_block_number': 0,
|
|
||||||
'eventName': 'Transfer',
|
'eventName': 'Transfer',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'equipInstance',
|
'name': 'equipInstance',
|
||||||
'last_block_number': 0,
|
|
||||||
'eventName': 'Transfer',
|
'eventName': 'Transfer',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'chipInstance',
|
'name': 'chipInstance',
|
||||||
'last_block_number': 0,
|
|
||||||
'eventName': 'Transfer',
|
'eventName': 'Transfer',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'luckboxInstance',
|
'name': 'luckboxInstance',
|
||||||
'last_block_number': 0,
|
|
||||||
'eventName': 'Transfer',
|
'eventName': 'Transfer',
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
boxInstance = {
|
boxInstance = {
|
||||||
'name': 'boxproxyInstance',
|
'name': 'boxproxyInstance',
|
||||||
'last_block_number': 0,
|
|
||||||
'eventName': 'BoxOpened',
|
'eventName': 'BoxOpened',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ class EventProcess extends BaseService {
|
|||||||
this.instance = instance;
|
this.instance = instance;
|
||||||
this.cb = cb;
|
this.cb = cb;
|
||||||
this.lastBlockNumber = 0;
|
this.lastBlockNumber = 0;
|
||||||
|
await this.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
async start() {
|
async start() {
|
||||||
@ -25,8 +26,17 @@ class EventProcess extends BaseService {
|
|||||||
const logClass = this.getInstanceName() + ' pullEvent:';
|
const logClass = this.getInstanceName() + ' pullEvent:';
|
||||||
while (true) {
|
while (true) {
|
||||||
try {
|
try {
|
||||||
|
console.log('pullEvent1',
|
||||||
|
utils.jsonEncode(this.instance));
|
||||||
const fromBlock = await this.getFromBlock();
|
const fromBlock = await this.getFromBlock();
|
||||||
|
console.log('pullEvent2',
|
||||||
|
utils.jsonEncode(this.instance));
|
||||||
const toBlock = await this.calcToBlock(fromBlock);
|
const toBlock = await this.calcToBlock(fromBlock);
|
||||||
|
console.log('pullEvent',
|
||||||
|
fromBlock,
|
||||||
|
toBlock,
|
||||||
|
bc.getCurrBlockNumber(),
|
||||||
|
utils.jsonEncode(this.instance));
|
||||||
if (toBlock >= fromBlock) {
|
if (toBlock >= fromBlock) {
|
||||||
const events = await bc[this.getInstanceName()].getPastEvents(
|
const events = await bc[this.getInstanceName()].getPastEvents(
|
||||||
this.instance['eventName'],
|
this.instance['eventName'],
|
||||||
@ -35,6 +45,7 @@ class EventProcess extends BaseService {
|
|||||||
toBlock: toBlock,
|
toBlock: toBlock,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
console.log(events);
|
||||||
await this.processEvents(events, toBlock);
|
await this.processEvents(events, toBlock);
|
||||||
await this.saveLastBlockNumber(toBlock);
|
await this.saveLastBlockNumber(toBlock);
|
||||||
}
|
}
|
||||||
@ -50,13 +61,13 @@ class EventProcess extends BaseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async processEvents(events, toBlock) {
|
async processEvents(events, toBlock) {
|
||||||
this.instance['last_block_number'] = toBlock;
|
|
||||||
for (let i in events) {
|
for (let i in events) {
|
||||||
while (true) {
|
while (true) {
|
||||||
try {
|
try {
|
||||||
await cb(event);
|
await this.cb(events[i]);
|
||||||
break;
|
break;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
log.error(err);
|
||||||
}
|
}
|
||||||
await utils.sleep(8000 + utils.randRange(500, 1500));
|
await utils.sleep(8000 + utils.randRange(500, 1500));
|
||||||
}
|
}
|
||||||
@ -67,7 +78,7 @@ class EventProcess extends BaseService {
|
|||||||
const firstBlockNumber = await bc.getFirstBlockNumber();
|
const firstBlockNumber = await bc.getFirstBlockNumber();
|
||||||
while (this.lastBlockNumber < 1) {
|
while (this.lastBlockNumber < 1) {
|
||||||
try {
|
try {
|
||||||
const {err, row} = await conn.ormSelectOne(
|
const {err, row} = await this.conn.ormSelectOne(
|
||||||
't_parameter',
|
't_parameter',
|
||||||
[
|
[
|
||||||
['name', this.getBlockNumberDbName()]
|
['name', this.getBlockNumberDbName()]
|
||||||
@ -77,13 +88,19 @@ class EventProcess extends BaseService {
|
|||||||
if (row) {
|
if (row) {
|
||||||
this.lastBlockNumber = Number(row['value']);
|
this.lastBlockNumber = Number(row['value']);
|
||||||
} else {
|
} else {
|
||||||
this.lastBlockNumber = this.firstBlockNumber;
|
this.lastBlockNumber = firstBlockNumber;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (this.lastBlockNumber + 8 < bc.getCurrBlockNumber()) {
|
console.log('getFromBlock',
|
||||||
|
this.lastBlockNumber,
|
||||||
|
bc.getCurrBlockNumber(),
|
||||||
|
utils.jsonEncode(this.instance));
|
||||||
|
while (this.lastBlockNumber + 8 > bc.getCurrBlockNumber()) {
|
||||||
await utils.sleep(1000 + utils.randRange(500, 1500));
|
await utils.sleep(1000 + utils.randRange(500, 1500));
|
||||||
}
|
}
|
||||||
|
continue;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
}
|
}
|
||||||
await utils.sleep(5000 + utils.randRange(500, 1500));
|
await utils.sleep(5000 + utils.randRange(500, 1500));
|
||||||
}
|
}
|
||||||
@ -97,18 +114,37 @@ class EventProcess extends BaseService {
|
|||||||
if (distanceBlock > 3000) {
|
if (distanceBlock > 3000) {
|
||||||
return fromBlock + 3000;
|
return fromBlock + 3000;
|
||||||
} else {
|
} else {
|
||||||
return distanceBlock;
|
return fromBlock + distanceBlock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return fromBlock;
|
return fromBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
async saveLastBlockNumber(blockNumber) {
|
async saveLastBlockNumber(blockNumber) {
|
||||||
|
while (true) {
|
||||||
|
const {err} = await this.conn.upsert(
|
||||||
|
't_parameter',
|
||||||
|
[
|
||||||
|
['name', this.getBlockNumberDbName()]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
['value', blockNumber],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
['name', this.getBlockNumberDbName()],
|
||||||
|
['value', blockNumber],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
if (!err) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
await utils.sleep(5000 + utils.randRange(500, 1500));
|
||||||
|
}
|
||||||
this.lastBlockNumber = blockNumber;
|
this.lastBlockNumber = blockNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
getBlockNumberDbName() {
|
getBlockNumberDbName() {
|
||||||
return this.instance['name'] + '.' + this.instance['eventName'] + '.last_block_name';
|
return this.instance['name'] + '.' + this.instance['eventName'] + '.last_block_number';
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user