From 2d2498458882a75df3f2f846a39e0375bb48aa7f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 13 Jun 2023 19:10:13 +0800 Subject: [PATCH] 1 --- server/web3service/blockchain.js | 49 +++++++++++++++++++------- server/web3service/metadata/factory.js | 6 ++++ 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/server/web3service/blockchain.js b/server/web3service/blockchain.js index 491cc27..2306ac5 100644 --- a/server/web3service/blockchain.js +++ b/server/web3service/blockchain.js @@ -10,8 +10,8 @@ const C = require("./C"); class BlockChain { - constructor() { - this.netId = 0; + constructor(netId) { + this.netId = netId; } async initInstance(user, address, jsonUrl) { @@ -24,40 +24,65 @@ class BlockChain { } async init() { - this.web3 = new Web3(metaFactory.getWeb3Conf()['block_server']); + this.web3Conf = metaFactory.getWeb3Conf(this.netId); + this.contractsConf = metaFactory.getContractsConf(this.netId); + + this.web3 = new Web3(this.getRpcUrl()); this.web3.eth.handleRevert = true; - this.web3.eth.accounts.wallet.add(metaFactory.getPrivateKey()); - for (const data of metaFactory.getContracts()) { + this.web3.eth.accounts.wallet.add(this.getPrivateKey()); + for (const data of this.contractsConf) { this[`${data.name}Instance`] = await this.initInstance - (metaFactory.getUserAddress(), data.address, data.json); + (this.getUserAddress(), data.address, data.json); } event.emitEvent(C.BC_INITIALIZED_EVENT); } - async getNetId() { - return await this.web3.eth.getChainId(); + getNetId() { + return this.netId; + } + + getRpcUrl() { + return this.web3Conf['block_server']; + } + + getUserAddress() { + return this.web3Conf['user_address']; + } + + getPrivateKey() { + return this.web3Conf['private_key']; + } + + getContractByName(name) { + let contract = null; + this.contractsConf.forEach((item) => { + if (item['name'] == name) { + contract = item; + } + }); + return contract; } getNftAddress(tokenType) { switch (Number(tokenType)) { case bcutils.HERO_TYPE: { - return metaFactory.getContractByName('HERO')['address']; + return this.getContractByName('HERO')['address']; } break; case bcutils.EQUIP_TYPE: { - return metaFactory.getContractByName('WEAPON')['address']; + return this.getContractByName('WEAPON')['address']; } break; case bcutils.CHIP_TYPE: { - return metaFactory.getContractByName('CHIP')['address']; + return this.getContractByName('CHIP')['address']; } break; case bcutils.FRAGMENT_TYPE: { - return metaFactory.getContractByName('shard')['address']; + return this.getContractByName('shard')['address']; } break; default: diff --git a/server/web3service/metadata/factory.js b/server/web3service/metadata/factory.js index b52a726..34c4e4b 100644 --- a/server/web3service/metadata/factory.js +++ b/server/web3service/metadata/factory.js @@ -146,8 +146,14 @@ function traverseMetaList(name, cb) { } } +function getWeb3Conf(netId) { + +} + exports.init = init; exports.getMetaByKey = getMetaByKey; exports.traverseMetaList = traverseMetaList; exports.callMetaStatic = callMetaStatic; + +exports.getWeb3Conf = getWeb3Conf;