diff --git a/package.json b/package.json index ed6c47fd115a..fbe5b1e020dd 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "@shutter-network/shutter-crypto": "0.1.0-beta.3", "@snapshot-labs/lock": "^0.2.0", "@snapshot-labs/pineapple": "^0.2.0", - "@snapshot-labs/snapshot.js": "^0.5.5", + "@snapshot-labs/snapshot.js": "^0.5.6", "@snapshot-labs/tune": "^0.1.33", "@vue/apollo-composable": "4.0.0-beta.4", "@vueuse/core": "^10.4.0", diff --git a/src/composables/useDelegate.ts b/src/composables/useDelegate.ts index a902ca6e6658..f1630519c8da 100644 --- a/src/composables/useDelegate.ts +++ b/src/composables/useDelegate.ts @@ -36,8 +36,12 @@ export function useDelegate() { const txPendingId = createPendingTransaction(); try { let ethAddress = address; - if (validEnsTlds.includes(address.split('.').pop())) - ethAddress = await getProvider('1').resolveName(address); + if (validEnsTlds.includes(address.split('.').pop())) { + const networkId = import.meta.env.VITE_DEFAULT_NETWORK; + const broviderUrl = import.meta.env.VITE_BROVIDER_URL; + const provider = getProvider(networkId, { broviderUrl }); + ethAddress = await provider.resolveName(address); + } const tx = await sendTransaction( auth.web3, contractAddress, diff --git a/src/composables/useGnosis.ts b/src/composables/useGnosis.ts index b3377c983353..4763d195fa25 100644 --- a/src/composables/useGnosis.ts +++ b/src/composables/useGnosis.ts @@ -8,7 +8,8 @@ const defaultNetwork = import.meta.env.VITE_DEFAULT_NETWORK; const getSafeVersion = useMemoize( async (networkKey: string, account: string) => { - const provider = utils.getProvider(networkKey); + const broviderUrl = import.meta.env.VITE_BROVIDER_URL; + const provider = utils.getProvider(networkKey, { broviderUrl }); const code = await provider.getCode(account); if (code === '0x') return undefined; diff --git a/src/composables/useQuorum.ts b/src/composables/useQuorum.ts index 1102b491f109..657caa15c58a 100644 --- a/src/composables/useQuorum.ts +++ b/src/composables/useQuorum.ts @@ -10,6 +10,8 @@ interface QuorumProps { results: Results; } +const broviderUrl = import.meta.env.VITE_BROVIDER_URL; + export function useQuorum(props: QuorumProps) { const loading = ref(false); const quorum = ref(0); @@ -74,7 +76,7 @@ export function useQuorum(props: QuorumProps) { ); const requests: Promise[] = strategies.map(s => call( - getProvider(s.network), + getProvider(s.network, { broviderUrl }), [s.methodABI], [s.address, s.methodABI.name], { blockTag: blocks[s.network] } @@ -100,7 +102,7 @@ export function useQuorum(props: QuorumProps) { async function loadQuorum() { loading.value = true; quorum.value = await getQuorum( - getProvider(props.space.network), + getProvider(props.space.network, { broviderUrl }), props.space.plugins.quorum, props.proposal.snapshot ); diff --git a/src/composables/useSnapshot.ts b/src/composables/useSnapshot.ts index e2821b8c9dcb..6a970bfe58f8 100644 --- a/src/composables/useSnapshot.ts +++ b/src/composables/useSnapshot.ts @@ -9,7 +9,10 @@ export function useSnapshot() { try { isLoading.value = true; error.value = false; - const currentBlock = await getBlockNumber(getProvider(network)); + const broviderUrl = import.meta.env.VITE_BROVIDER_URL; + const currentBlock = await getBlockNumber( + getProvider(network, { broviderUrl }) + ); console.log('Snapshot block number', currentBlock); return currentBlock - 4; } catch (e) { diff --git a/src/composables/useSpaceController.ts b/src/composables/useSpaceController.ts index d68550601856..fb5a1cac7eba 100644 --- a/src/composables/useSpaceController.ts +++ b/src/composables/useSpaceController.ts @@ -16,6 +16,7 @@ const pendingENSRecord = ref(false); const ensOwner = ref(null); const spaceController = ref(null); const defaultNetwork = import.meta.env.VITE_DEFAULT_NETWORK; +const broviderUrl = import.meta.env.VITE_BROVIDER_URL; export function useSpaceController() { const { web3, web3Account } = useWeb3(); @@ -78,13 +79,16 @@ export function useSpaceController() { } async function loadEnsOwner() { - ensOwner.value = await getEnsOwner(ensAddress.value, defaultNetwork); + ensOwner.value = await getEnsOwner(ensAddress.value, defaultNetwork, { + broviderUrl + }); } async function loadSpaceController() { spaceController.value = await getSpaceController( ensAddress.value, - defaultNetwork + defaultNetwork, + { broviderUrl } ); } diff --git a/src/composables/useTxStatus.ts b/src/composables/useTxStatus.ts index 49e42c8c1515..687a66d6cefb 100644 --- a/src/composables/useTxStatus.ts +++ b/src/composables/useTxStatus.ts @@ -53,7 +53,8 @@ export function useTxStatus() { if (Date.now() > tx.createdAt + 1000 * 60) return removePendingTransaction(tx.id); try { - const provider = getProvider(tx.network); + const broviderUrl = import.meta.env.VITE_BROVIDER_URL; + const provider = getProvider(tx.network, { broviderUrl }); await provider.waitForTransaction(tx.hash, 1, 1000 * 60 * 4); } finally { removePendingTransaction(tx.id); diff --git a/src/helpers/lensResolver.ts b/src/helpers/lensResolver.ts index 1c5a0bfdfbbe..255edc2bcd58 100644 --- a/src/helpers/lensResolver.ts +++ b/src/helpers/lensResolver.ts @@ -20,7 +20,9 @@ class LensResolver { get multi() { if (!this._multicaller) { - this._multicaller = new Multicaller(network, getProvider(network), abi); + const broviderUrl = import.meta.env.VITE_BROVIDER_URL; + const provider = getProvider(network, { broviderUrl }); + this._multicaller = new Multicaller(network, provider, abi); } return this._multicaller; } diff --git a/src/helpers/profile.ts b/src/helpers/profile.ts index c3a7eb835034..7d1488401d42 100644 --- a/src/helpers/profile.ts +++ b/src/helpers/profile.ts @@ -5,9 +5,11 @@ import Multicaller from '@snapshot-labs/snapshot.js/src/utils/multicaller'; import { getAddress } from '@ethersproject/address'; import { resolveLensAddresses } from './lensResolver'; +const broviderUrl = import.meta.env.VITE_BROVIDER_URL; + async function ensReverseRecordRequest(addresses) { const network = '1'; - const provider = getProvider(network); + const provider = getProvider(network, { broviderUrl }); const abi = [ 'function getNames(address[] addresses) view returns (string[] r)' ]; @@ -46,7 +48,11 @@ async function udReverseRecordRequest(addresses) { ]; try { - const multi = new Multicaller(network, getProvider(network), abi); + const multi = new Multicaller( + network, + getProvider(network, { broviderUrl }), + abi + ); addresses.forEach(address => { address = getAddress(address); multi.call( diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 8495b2fe690f..fd2745fbb764 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -131,7 +131,8 @@ export function urlify(text: string, target = '_blank') { export async function resolveEns(handle: string) { try { - const provider = getProvider('1'); + const broviderUrl = import.meta.env.VITE_BROVIDER_URL; + const provider = getProvider('1', { broviderUrl }); const addressResolved = await provider.resolveName(handle); if (!addressResolved) throw new Error('Invalid ENS name'); return addressResolved; diff --git a/src/plugins/gnosis/components/CustomBlock.vue b/src/plugins/gnosis/components/CustomBlock.vue index 7c426e37b2e4..5b701c897ff4 100644 --- a/src/plugins/gnosis/components/CustomBlock.vue +++ b/src/plugins/gnosis/components/CustomBlock.vue @@ -26,7 +26,8 @@ export default { async created() { this.loading = true; const network = this.proposalConfig.network || '1'; - const provider = getProvider(network); + const broviderUrl = import.meta.env.VITE_BROVIDER_URL; + const provider = getProvider(network, { broviderUrl }); this.baseToken = await this.plugin.getTokenInfo( provider, this.proposalConfig.baseTokenAddress diff --git a/src/plugins/safeSnap/components/Modal/OptionApproval.vue b/src/plugins/safeSnap/components/Modal/OptionApproval.vue index 9245fc2a76e7..b497e89c9fa1 100644 --- a/src/plugins/safeSnap/components/Modal/OptionApproval.vue +++ b/src/plugins/safeSnap/components/Modal/OptionApproval.vue @@ -60,7 +60,9 @@ export default { try { this.criteriaLink = await getEnsTextRecord( this.spaceId, - 'daorequirements' + 'daorequirements', + '1', + { broviderUrl: import.meta.env.VITE_BROVIDER_URL } ); } catch (err) { console.warn( diff --git a/src/plugins/safeSnap/index.ts b/src/plugins/safeSnap/index.ts index 7b10330212ff..92a99834ec4c 100644 --- a/src/plugins/safeSnap/index.ts +++ b/src/plugins/safeSnap/index.ts @@ -50,6 +50,7 @@ export * from './utils/realityETH'; export * from './utils/transactions'; export * from './utils/realityModule'; +const broviderUrl = import.meta.env.VITE_BROVIDER_URL; export default class Plugin { validateTransaction(transaction: SafeTransaction) { const addressEmptyOrValidate = @@ -100,7 +101,7 @@ export default class Plugin { proposalId: string, txHashes: string[] ): Promise> { - const provider: StaticJsonRpcProvider = getProvider(network); + const provider: StaticJsonRpcProvider = getProvider(network, { broviderUrl }); const question = await buildQuestion(proposalId, txHashes); const questionHash = solidityKeccak256(['string'], [question]); @@ -139,14 +140,14 @@ export default class Plugin { } async getModuleDetailsReality(network: string, moduleAddress: string) { - const provider: StaticJsonRpcProvider = getProvider(network); + const provider: StaticJsonRpcProvider = getProvider(network, { broviderUrl }); return getModuleDetailsReality(provider, network, moduleAddress); } async validateUmaModule(network: string, umaAddress: string) { if (!isAddress(umaAddress)) return 'reality'; - const provider: StaticJsonRpcProvider = getProvider(network); + const provider: StaticJsonRpcProvider = getProvider(network, { broviderUrl }); const moduleContract = new Contract(umaAddress, UMA_MODULE_ABI, provider); return moduleContract @@ -209,7 +210,7 @@ export default class Plugin { explanation: string, transactions: any ) { - const provider: StaticJsonRpcProvider = getProvider(network); + const provider: StaticJsonRpcProvider = getProvider(network, { broviderUrl }); try { // try optimized calls, which use the graph over web3 event queries return await getModuleDetailsUmaGql( @@ -278,7 +279,7 @@ export default class Plugin { block: string ) { const contract = new Contract(oracleAddress, ORACLE_ABI, web3); - const provider: StaticJsonRpcProvider = getProvider(network); + const provider: StaticJsonRpcProvider = getProvider(network, { broviderUrl }); const account = (await web3.listAccounts())[0]; const [[userBalance], [bestAnswer], [historyHash], [isFinalized]] = diff --git a/src/plugins/safeSnap/utils/index.ts b/src/plugins/safeSnap/utils/index.ts index 287288651382..b61dfddb4b20 100644 --- a/src/plugins/safeSnap/utils/index.ts +++ b/src/plugins/safeSnap/utils/index.ts @@ -16,7 +16,8 @@ export const mustBeEthereumAddress = memoize((address: string) => { export const mustBeEthereumContractAddress = memoize( async (network: string, address: string) => { - const provider = getProvider(network) as JsonRpcProvider; + const broviderUrl = import.meta.env.VITE_BROVIDER_URL; + const provider = getProvider(network, { broviderUrl }) as JsonRpcProvider; const contractCode = await provider.getCode(address); return ( diff --git a/src/views/PlaygroundView.vue b/src/views/PlaygroundView.vue index 02f11bd61dac..386ef1e61465 100644 --- a/src/views/PlaygroundView.vue +++ b/src/views/PlaygroundView.vue @@ -121,7 +121,8 @@ async function loadSnapshotBlockNumber() { loading.value = true; scores.value = null; networkError.value = false; - const provider = await getProvider(form.value.network); + const broviderUrl = import.meta.env.VITE_BROVIDER_URL; + const provider = await getProvider(form.value.network, { broviderUrl }); const blockNumber = await getBlockNumber(provider); form.value.snapshot = blockNumber.toString(); loading.value = false; diff --git a/yarn.lock b/yarn.lock index 1dafd5dbff36..8e870ce5a136 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1869,10 +1869,10 @@ dependencies: cross-fetch "^3.1.5" -"@snapshot-labs/snapshot.js@^0.5.5": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@snapshot-labs/snapshot.js/-/snapshot.js-0.5.5.tgz#1ad759ae1c6504ad2d506ddb6f71756151847622" - integrity sha512-JNBGdqim9+IriPRv0R8vhLe3ojVv7i2R1qrx6PxQCbdHwiBr7d7Npei+h8VpnzOKYcVzPAkttOedxDvxxR2wnA== +"@snapshot-labs/snapshot.js@^0.5.6": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@snapshot-labs/snapshot.js/-/snapshot.js-0.5.6.tgz#e8fa4786bfc1fd69c5093d31e65b60ad2f0c5f65" + integrity sha512-5YVgM2V2uhJi3PZfTwSNihcrPa66Wz697IfC8v57enXdYaVYryZnwZfB0A0eahgwdtjBHWlyPOvfRI4Rr7aoTw== dependencies: "@ensdomains/eth-ens-namehash" "^2.0.15" "@ethersproject/abi" "^5.6.4"