mirror of
https://github.com/oceanprotocol/market.git
synced 2024-12-02 05:57:29 +01:00
fallback providers, more config
This commit is contained in:
parent
759d38ca21
commit
da2625a6f8
@ -16,8 +16,6 @@ module.exports = {
|
|||||||
// List of all supported chainIds. Used to populate the Chains user preferences list.
|
// List of all supported chainIds. Used to populate the Chains user preferences list.
|
||||||
chainIdsSupported: [1, 137, 56, 246, 1285, 5, 80001],
|
chainIdsSupported: [1, 137, 56, 246, 1285, 5, 80001],
|
||||||
|
|
||||||
infuraProjectId: process.env.NEXT_PUBLIC_INFURA_PROJECT_ID || 'xxx',
|
|
||||||
|
|
||||||
defaultDatatokenTemplateIndex: 2,
|
defaultDatatokenTemplateIndex: 2,
|
||||||
// The ETH address the marketplace fee will be sent to.
|
// The ETH address the marketplace fee will be sent to.
|
||||||
marketFeeAddress:
|
marketFeeAddress:
|
||||||
|
@ -7,7 +7,6 @@ export interface OpcFee {
|
|||||||
|
|
||||||
export interface AppConfig {
|
export interface AppConfig {
|
||||||
metadataCacheUri: string
|
metadataCacheUri: string
|
||||||
infuraProjectId: string
|
|
||||||
chainIds: number[]
|
chainIds: number[]
|
||||||
chainIdsSupported: number[]
|
chainIdsSupported: number[]
|
||||||
defaultDatatokenTemplateIndex: number
|
defaultDatatokenTemplateIndex: number
|
||||||
|
@ -2,7 +2,6 @@ import { FixedRateExchange, PriceAndFees } from '@oceanprotocol/lib'
|
|||||||
import { consumeMarketFixedSwapFee } from '../../app.config'
|
import { consumeMarketFixedSwapFee } from '../../app.config'
|
||||||
import Web3 from 'web3'
|
import Web3 from 'web3'
|
||||||
import { getOceanConfig } from './ocean'
|
import { getOceanConfig } from './ocean'
|
||||||
import { getDummyWeb3 } from './web3'
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is used to calculate the price to buy one datatoken from a fixed rate exchange. You need to pass either a web3 object or a chainId. If you pass a chainId a dummy web3 object will be created
|
* This is used to calculate the price to buy one datatoken from a fixed rate exchange. You need to pass either a web3 object or a chainId. If you pass a chainId a dummy web3 object will be created
|
||||||
@ -19,10 +18,6 @@ export async function getFixedBuyPrice(
|
|||||||
if (!web3 && !chainId)
|
if (!web3 && !chainId)
|
||||||
throw new Error("web3 and chainId can't be undefined at the same time!")
|
throw new Error("web3 and chainId can't be undefined at the same time!")
|
||||||
|
|
||||||
if (!web3) {
|
|
||||||
web3 = await getDummyWeb3(chainId)
|
|
||||||
}
|
|
||||||
|
|
||||||
const config = getOceanConfig(chainId)
|
const config = getOceanConfig(chainId)
|
||||||
|
|
||||||
const fixed = new FixedRateExchange(config.fixedRateExchangeAddress, web3)
|
const fixed = new FixedRateExchange(config.fixedRateExchangeAddress, web3)
|
||||||
|
@ -6,19 +6,23 @@ import {
|
|||||||
modalConnectors,
|
modalConnectors,
|
||||||
walletConnectProvider
|
walletConnectProvider
|
||||||
} from '@web3modal/ethereum'
|
} from '@web3modal/ethereum'
|
||||||
|
|
||||||
import { configureChains, createClient, erc20ABI } from 'wagmi'
|
import { configureChains, createClient, erc20ABI } from 'wagmi'
|
||||||
import { mainnet, polygon, bsc, goerli, polygonMumbai } from 'wagmi/chains'
|
import { mainnet, polygon, bsc, goerli, polygonMumbai } from 'wagmi/chains'
|
||||||
|
import { publicProvider } from 'wagmi/providers/public'
|
||||||
|
import { infuraProvider } from 'wagmi/providers/infura'
|
||||||
import { ethers, utils } from 'ethers'
|
import { ethers, utils } from 'ethers'
|
||||||
|
|
||||||
export const chains = [mainnet, polygon, bsc, goerli, polygonMumbai]
|
|
||||||
|
|
||||||
// Wagmi client
|
// Wagmi client
|
||||||
export const { provider } = configureChains(chains, [
|
export const { chains, provider } = configureChains(
|
||||||
|
[mainnet, polygon, bsc, goerli, polygonMumbai],
|
||||||
|
[
|
||||||
walletConnectProvider({
|
walletConnectProvider({
|
||||||
projectId: process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID
|
projectId: process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID
|
||||||
})
|
}),
|
||||||
])
|
infuraProvider({ apiKey: process.env.NEXT_PUBLIC_INFURA_PROJECT_ID }),
|
||||||
|
publicProvider()
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
export const wagmiClient = createClient({
|
export const wagmiClient = createClient({
|
||||||
autoConnect: true,
|
autoConnect: true,
|
||||||
@ -35,15 +39,6 @@ export function accountTruncate(account: string): string {
|
|||||||
const truncated = account.replace(middle, '…')
|
const truncated = account.replace(middle, '…')
|
||||||
return truncated
|
return truncated
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* returns a dummy web3 instance, only usable to get info from the chain
|
|
||||||
* @param chainId
|
|
||||||
* @returns Web3 instance
|
|
||||||
*/
|
|
||||||
// export async function getDummyWeb3(chainId: number): Promise<Web3> {
|
|
||||||
// const config = getOceanConfig(chainId)
|
|
||||||
// return new Web3(config.nodeUri)
|
|
||||||
// }
|
|
||||||
|
|
||||||
export async function addCustomNetwork(
|
export async function addCustomNetwork(
|
||||||
web3Provider: any,
|
web3Provider: any,
|
||||||
@ -141,10 +136,10 @@ export async function getTokenBalance(
|
|||||||
accountId: string,
|
accountId: string,
|
||||||
decimals: number,
|
decimals: number,
|
||||||
tokenAddress: string,
|
tokenAddress: string,
|
||||||
provider: any
|
web3Provider: any
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
try {
|
try {
|
||||||
const token = new ethers.Contract(tokenAddress, erc20ABI, provider)
|
const token = new ethers.Contract(tokenAddress, erc20ABI, web3Provider)
|
||||||
const balance = await token.methods.balanceOf(accountId).call()
|
const balance = await token.methods.balanceOf(accountId).call()
|
||||||
const adjustedDecimalsBalance = `${balance}${'0'.repeat(18 - decimals)}`
|
const adjustedDecimalsBalance = `${balance}${'0'.repeat(18 - decimals)}`
|
||||||
return utils.formatEther(adjustedDecimalsBalance)
|
return utils.formatEther(adjustedDecimalsBalance)
|
||||||
|
@ -43,7 +43,6 @@ import { useAbortController } from '@hooks/useAbortController'
|
|||||||
import { getOrderPriceAndFees } from '@utils/accessDetailsAndPricing'
|
import { getOrderPriceAndFees } from '@utils/accessDetailsAndPricing'
|
||||||
import { handleComputeOrder } from '@utils/order'
|
import { handleComputeOrder } from '@utils/order'
|
||||||
import { getComputeFeedback } from '@utils/feedback'
|
import { getComputeFeedback } from '@utils/feedback'
|
||||||
import { getDummyWeb3 } from '@utils/web3'
|
|
||||||
import { initializeProviderForCompute } from '@utils/provider'
|
import { initializeProviderForCompute } from '@utils/provider'
|
||||||
import { useUserPreferences } from '@context/UserPreferences'
|
import { useUserPreferences } from '@context/UserPreferences'
|
||||||
import { useAsset } from '@context/Asset'
|
import { useAsset } from '@context/Asset'
|
||||||
@ -117,7 +116,6 @@ export default function Compute({
|
|||||||
|
|
||||||
async function checkAssetDTBalance(asset: DDO): Promise<boolean> {
|
async function checkAssetDTBalance(asset: DDO): Promise<boolean> {
|
||||||
if (!asset?.services[0].datatokenAddress) return
|
if (!asset?.services[0].datatokenAddress) return
|
||||||
const web3 = await getDummyWeb3(asset?.chainId)
|
|
||||||
const datatokenInstance = new Datatoken(web3)
|
const datatokenInstance = new Datatoken(web3)
|
||||||
const dtBalance = await datatokenInstance.balance(
|
const dtBalance = await datatokenInstance.balance(
|
||||||
asset?.services[0].datatokenAddress,
|
asset?.services[0].datatokenAddress,
|
||||||
@ -153,21 +151,14 @@ export default function Compute({
|
|||||||
setInitializedProviderResponse(initializedProvider)
|
setInitializedProviderResponse(initializedProvider)
|
||||||
|
|
||||||
const feeAmount = await unitsToAmount(
|
const feeAmount = await unitsToAmount(
|
||||||
!isSupportedOceanNetwork || !isAssetNetwork
|
web3,
|
||||||
? await getDummyWeb3(asset?.chainId)
|
|
||||||
: web3,
|
|
||||||
initializedProvider?.datasets?.[0]?.providerFee?.providerFeeToken,
|
initializedProvider?.datasets?.[0]?.providerFee?.providerFeeToken,
|
||||||
initializedProvider?.datasets?.[0]?.providerFee?.providerFeeAmount
|
initializedProvider?.datasets?.[0]?.providerFee?.providerFeeAmount
|
||||||
)
|
)
|
||||||
|
|
||||||
setProviderFeeAmount(feeAmount)
|
setProviderFeeAmount(feeAmount)
|
||||||
|
|
||||||
const datatoken = new Datatoken(
|
const datatoken = new Datatoken(web3, null, null, minAbi)
|
||||||
await getDummyWeb3(asset?.chainId),
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
minAbi
|
|
||||||
)
|
|
||||||
setProviderFeesSymbol(
|
setProviderFeesSymbol(
|
||||||
await datatoken.getSymbol(
|
await datatoken.getSymbol(
|
||||||
initializedProvider?.datasets?.[0]?.providerFee?.providerFeeToken
|
initializedProvider?.datasets?.[0]?.providerFee?.providerFeeToken
|
||||||
|
@ -3,7 +3,6 @@ import MetaItem from './MetaItem'
|
|||||||
import styles from './MetaFull.module.css'
|
import styles from './MetaFull.module.css'
|
||||||
import Publisher from '@shared/Publisher'
|
import Publisher from '@shared/Publisher'
|
||||||
import { useAsset } from '@context/Asset'
|
import { useAsset } from '@context/Asset'
|
||||||
import { getDummyWeb3 } from '@utils/web3'
|
|
||||||
import { Asset, Datatoken, LoggerInstance } from '@oceanprotocol/lib'
|
import { Asset, Datatoken, LoggerInstance } from '@oceanprotocol/lib'
|
||||||
|
|
||||||
export default function MetaFull({ ddo }: { ddo: Asset }): ReactElement {
|
export default function MetaFull({ ddo }: { ddo: Asset }): ReactElement {
|
||||||
@ -14,7 +13,6 @@ export default function MetaFull({ ddo }: { ddo: Asset }): ReactElement {
|
|||||||
async function getInitialPaymentCollector() {
|
async function getInitialPaymentCollector() {
|
||||||
try {
|
try {
|
||||||
if (!ddo) return
|
if (!ddo) return
|
||||||
const web3 = await getDummyWeb3(ddo.chainId)
|
|
||||||
const datatoken = new Datatoken(web3)
|
const datatoken = new Datatoken(web3)
|
||||||
setPaymentCollector(
|
setPaymentCollector(
|
||||||
await datatoken.getPaymentCollector(ddo.datatokens[0].address)
|
await datatoken.getPaymentCollector(ddo.datatokens[0].address)
|
||||||
|
@ -40,6 +40,8 @@ function MyApp({ Component, pageProps }: AppProps): ReactElement {
|
|||||||
<Web3Modal
|
<Web3Modal
|
||||||
projectId={process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID}
|
projectId={process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID}
|
||||||
ethereumClient={ethereumClient}
|
ethereumClient={ethereumClient}
|
||||||
|
themeColor="blackWhite"
|
||||||
|
themeBackground="themeColor"
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user