From 95fb0fc11894ace2e0967a809f92f75d10588de7 Mon Sep 17 00:00:00 2001 From: rick Date: Mon, 5 Apr 2021 15:26:16 +0430 Subject: [PATCH 1/3] improve useProposalList --- src/app/hooks/useProposalList.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/app/hooks/useProposalList.ts b/src/app/hooks/useProposalList.ts index b544d48..1bc34bf 100644 --- a/src/app/hooks/useProposalList.ts +++ b/src/app/hooks/useProposalList.ts @@ -15,8 +15,10 @@ export function useProposalList(page: number, limit: number = 0) { useEffect(() => { setLoading(true); const get = async () => { - const admin = await getProposalsOf('governorAdmin', page, limit); - const owner = await getProposalsOf('governorOwner', page, limit); + const adminPromise = getProposalsOf('governorAdmin', page, limit); + const ownerPromise = getProposalsOf('governorOwner', page, limit); + + const [admin, owner] = await Promise.all([adminPromise, ownerPromise]); const merged = [...admin.items, ...owner.items].sort( (a, b) => b.startBlock - a.startBlock, From 517d623b512592353fc67529e33745b649324de2 Mon Sep 17 00:00:00 2001 From: rick Date: Wed, 7 Apr 2021 11:27:19 +0430 Subject: [PATCH 2/3] add databaseWeb3. --- .../BlockChainProvider/classifiers.ts | 5 ++ .../containers/BlockChainProvider/network.ts | 46 ++++++++++++++++++- src/app/containers/BlockChainProvider/saga.ts | 1 + 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/app/containers/BlockChainProvider/classifiers.ts b/src/app/containers/BlockChainProvider/classifiers.ts index d63cfb6..14dd1d4 100644 --- a/src/app/containers/BlockChainProvider/classifiers.ts +++ b/src/app/containers/BlockChainProvider/classifiers.ts @@ -10,6 +10,11 @@ export const wssNodes = { 31: 'wss://testnet.sovryn.app/ws', }; +export const databaseRpcNodes = { + 30: 'https://backend.sovryn.app/rpc', + 31: 'https://testnet.sovryn.app/backend/rpc', +}; + export const rpcBackupNodes = { 30: 'https://public-node.rsk.co', 31: 'https://public-node.testnet.rsk.co', diff --git a/src/app/containers/BlockChainProvider/network.ts b/src/app/containers/BlockChainProvider/network.ts index 1a11da7..e6a8134 100644 --- a/src/app/containers/BlockChainProvider/network.ts +++ b/src/app/containers/BlockChainProvider/network.ts @@ -1,5 +1,6 @@ +import { databaseRpcNodes } from './classifiers'; import Web3 from 'web3'; -import { EventData } from 'web3-eth-contract'; +import { EventData, Contract } from 'web3-eth-contract'; import { RevertInstructionError } from 'web3-core-helpers'; import { ContractName, @@ -12,6 +13,7 @@ import { contracts } from './contracts'; import { store } from '../../../store/store'; import { actions } from './slice'; import { getContract } from '../../../utils/helpers'; +import { AbiItem } from 'web3-utils'; interface SendTxOptions { type?: TransactionType; @@ -24,9 +26,49 @@ class Network { public contracts: {} = {}; public writeContracts: {} = {}; + private _databaseWeb3: Web3 = null as any; + public databaseContracts: { [key: string]: Contract } = {}; + public databaseContractList: Contract[] = []; + private _network: NetworkName = null as any; private _writeNetwork: NetworkName = null as any; + public async initDatabaseWeb3(chainId: number) { + try { + const nodeUrl = databaseRpcNodes[chainId]; + const web3Provider = new Web3.providers.HttpProvider(nodeUrl, { + keepAlive: true, + }); + this._databaseWeb3 = new Web3(web3Provider); + + const netwrokName = chainId === 30 ? 'mainnet' : 'testnet'; + Array.from(Object.keys(contracts[netwrokName])).forEach(key => { + this.addDatabaseContract(key, contracts[netwrokName][key]); + }); + } catch (e) { + console.error('init database web3 fails.'); + console.error(e); + } + } + + public addDatabaseContract( + contractName: string, + contractConfig: { + address: string; + abi: AbiItem | AbiItem[]; + }, + ) { + if (!this._databaseWeb3) { + return; + } + console.log('contractConfig: ', contractName, contractConfig); + const contract = this.makeContract(this._databaseWeb3, contractConfig); + // @ts-ignore + this.databaseContracts[contractName] = contract; + // @ts-ignore + this.databaseContractList.push(contract); + } + public setWeb3(web3: Web3, network: NetworkName) { this.web3 = web3; if (this._network !== network) { @@ -189,7 +231,7 @@ class Network { fromBlock: number = 0, toBlock: number | 'latest' = 'latest', ): Promise { - return this.contracts[contractName].getPastEvents(eventName, { + return this.databaseContracts[contractName].getPastEvents(eventName, { fromBlock, toBlock, filter, diff --git a/src/app/containers/BlockChainProvider/saga.ts b/src/app/containers/BlockChainProvider/saga.ts index 38812be..3275b8e 100644 --- a/src/app/containers/BlockChainProvider/saga.ts +++ b/src/app/containers/BlockChainProvider/saga.ts @@ -36,6 +36,7 @@ function* setupSaga({ payload }: PayloadAction) { } const web3 = new Web3(web3Provider); + network.initDatabaseWeb3(payload); network.setWeb3(web3, payload === 30 ? 'mainnet' : 'testnet'); network.setWsWeb3(web3, payload === 30 ? 'mainnet' : 'testnet', isWebsocket); walletConnection.init(payload); From 3fce4051d8584edd957a297d8d03eb6b19eebcdd Mon Sep 17 00:00:00 2001 From: Victor Creed Date: Tue, 7 Dec 2021 16:58:39 +0200 Subject: [PATCH 3/3] internal(node): upgrade node version --- .nvmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nvmrc b/.nvmrc index e1fcd1e..8351c19 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -lts/erbium +14