Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/dec sequencer (#261) #269

Merged
merged 14 commits into from
Oct 22, 2024
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

# production
/build

.vscode
# misc
.DS_Store
.env.local
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
"wagmi": "^0.12.1",
"web-vitals": "^1.0.1",
"webpack": "^5.70.0",
"zkbob-client-js": "5.5.0"
"zkbob-client-js": "6.0.0"
},
"scripts": {
"start": "react-app-rewired start",
Expand Down
130 changes: 91 additions & 39 deletions src/config/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,15 @@ const config = {
}],
addressPrefix: 'zkbob_polygon',
paymentContractAddress: '0x76a911E76fC78F39e73cE0c532F8866ac28Dfe43',
parameters:'prod',
closingDate: '2025-02-01T00:00:00Z',
},
'BOB2USDC-optimism': {
chainId: 10,
poolAddress: '0x1CA8C2B9B20E18e86d5b9a72370fC6c91814c97C',
tokenAddress: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',
relayerUrls: ['https://relayer-optimism.zkbob.com/'],
// relayerUrls: ['https://relayer-optimism.zkbob.com/'],
proxyUrls: ["https://proxy1.zkbob.com", "https://proxy2.zkbob.com"],
delegatedProverUrls: [],
coldStorageConfigPath: '',
tokenSymbol: 'USDC',
Expand All @@ -49,6 +51,7 @@ const config = {
}],
addressPrefix: 'zkbob_optimism',
paymentContractAddress: '0x860513FbdC4B6B2B210e1D393BE244F1d0b1Babd',
parameters:'prod'
},
'WETH-optimism': {
chainId: 10,
Expand All @@ -69,6 +72,7 @@ const config = {
ddSubgraph: 'zkbob-eth-optimism',
addressPrefix: 'zkbob_optimism_eth',
paymentContractAddress: '0x7a8006Ea0Dda93C56E60187Bd55109AbfF486c6F',
parameters:'prod'
},
'USDT-tron': {
chainId: 728126428,
Expand All @@ -84,49 +88,65 @@ const config = {
minTxAmount: 50000n, // 0.05 USDT
addressPrefix: 'zkbob_tron',
isTron: true,
parameters:'prod'
},
},
chains: {
'137': {
rpcUrls: ['https://rpc.ankr.com/polygon', 'https://polygon-rpc.com', 'https://polygon-mainnet.g.alchemy.com/v2/fnUqqB1tThPuSpM33VFm26wqXISKPS2n'],
},
'10': {
rpcUrls: ['https://rpc.ankr.com/optimism', 'https://opt-mainnet.g.alchemy.com/v2/fnUqqB1tThPuSpM33VFm26wqXISKPS2n','https://optimism-mainnet.infura.io/v3/9a94d181b23846209f01161dcd0f9ad6'],
rpcUrls: ['https://mainnet.optimism.io','https://optimism.llamarpc.com','https://optimism.gateway.tenderly.co'],
},

'728126428': {
rpcUrls: ['https://few-methodical-breeze.tron-mainnet.quiknode.pro/c9e0de7204463ff25a6ca3afd1bd32caf880561e', 'https://api.trongrid.io'],
external: "https://tron.zkbob.com/"
},
},
snarkParams: process.env.REACT_APP_HOSTING === 'netlify' ? {
transferParamsUrl: 'https://r2.zkbob.com/transfer_params_22022023.bin',
transferVkUrl: 'https://r2.zkbob.com/transfer_verification_key_22022023.json',
} : {
transferParamsUrl: 'https://5tqpkqtbrkd5ookgni4yydvxgsnaazxl53pdgymjgkiaqwb56lzq.arweave.net/7OD1QmGKh9c5Rmo5jA63NJoAZuvu3jNhiTKQCFg98vM',
transferVkUrl: 'https://rhm3gvehfvhrnll2cuuem2s77hruahjgifqctaw7ld2z37ehpcta.arweave.net/idmzVIctTxatehUoRmpf-eNAHSZBYCmC31j1nfyHeKY',
},
"snarkParamsSet": {
"prod": process.env.REACT_APP_HOSTING === 'netlify' ? {
transferParamsUrl: 'https://r2.zkbob.com/transfer_params_22022023.bin',
transferVkUrl: 'https://r2.zkbob.com/transfer_verification_key_22022023.json',
} : {
transferParamsUrl: 'https://5tqpkqtbrkd5ookgni4yydvxgsnaazxl53pdgymjgkiaqwb56lzq.arweave.net/7OD1QmGKh9c5Rmo5jA63NJoAZuvu3jNhiTKQCFg98vM',
transferVkUrl: 'https://rhm3gvehfvhrnll2cuuem2s77hruahjgifqctaw7ld2z37ehpcta.arweave.net/idmzVIctTxatehUoRmpf-eNAHSZBYCmC31j1nfyHeKY',
},
"prod-arweave": {
transferParamsUrl: 'https://5tqpkqtbrkd5ookgni4yydvxgsnaazxl53pdgymjgkiaqwb56lzq.arweave.net/7OD1QmGKh9c5Rmo5jA63NJoAZuvu3jNhiTKQCFg98vM',
transferVkUrl: 'https://rhm3gvehfvhrnll2cuuem2s77hruahjgifqctaw7ld2z37ehpcta.arweave.net/idmzVIctTxatehUoRmpf-eNAHSZBYCmC31j1nfyHeKY',
}
}
},
// snarkParams: process.env.REACT_APP_HOSTING === 'netlify' ? {
// transferParamsUrl: 'https://r2.zkbob.com/transfer_params_22022023.bin',
// transferVkUrl: 'https://r2.zkbob.com/transfer_verification_key_22022023.json',
// } : {
// transferParamsUrl: 'https://5tqpkqtbrkd5ookgni4yydvxgsnaazxl53pdgymjgkiaqwb56lzq.arweave.net/7OD1QmGKh9c5Rmo5jA63NJoAZuvu3jNhiTKQCFg98vM',
// transferVkUrl: 'https://rhm3gvehfvhrnll2cuuem2s77hruahjgifqctaw7ld2z37ehpcta.arweave.net/idmzVIctTxatehUoRmpf-eNAHSZBYCmC31j1nfyHeKY',
// },
// },
dev: {
defaultPool: 'USDC-goerli',
defaultPool: 'zkbob_sepolia',
pools: {
// 'BOB-sepolia': {
// chainId: 11155111,
// poolAddress: '0x3bd088C19960A8B5d72E4e01847791BD0DD1C9E6',
// tokenAddress: '0x2C74B18e2f84B78ac67428d0c7a9898515f0c46f',
// relayerUrls: ['https://relayer.thgkjlr.website/'],
// delegatedProverUrls: ['https://prover-staging.thgkjlr.website/'],
// coldStorageConfigPath: 'https://r2-staging.zkbob.com/coldstorage/coldstorage.cfg',
// kycUrls: {
// status: 'https://api-stage.knowyourcat.id/v1/%s/categories?category=BABTokenBOB',
// homepage: 'https://stage.knowyourcat.id/address/%s/BABTokenBOB',
// },
// tokenSymbol: 'BOB',
// tokenDecimals: 18,
// feeDecimals: 2,
// depositScheme: 'permit',
// addressPrefix: 'zkbob_sepolia',
// },
'zkbob_sepolia': {
chainId: 11155111,
poolAddress: '0x77f3D9Fb578a0F2B300347fb3Cd302dFd7eedf93',
tokenAddress: '0x2C74B18e2f84B78ac67428d0c7a9898515f0c46f',
proxyUrls: ['https://sepolia-decentralized-relayer.thgkjlr.website'],
delegatedProverUrls: ['https://prover-staging.thgkjlr.website/'],
coldStorageConfigPath: 'https://r2-staging.zkbob.com/coldstorage/coldstorage.cfg',
kycUrls: {
status: 'https://api-stage.knowyourcat.id/v1/%s/categories?category=BABTokenBOB',
homepage: 'https://stage.knowyourcat.id/address/%s/BABTokenBOB',
},
tokenSymbol: 'BOB',
tokenDecimals: 18,
feeDecimals: 2,
depositScheme: 'permit',
addressPrefix: 'zkbob_sepolia',
parameters:'staging'
},
'BOB2USDC-goerli': {
chainId: 5,
poolAddress: '0x49661694a71B3Dab9F25E86D5df2809B170c56E6',
Expand All @@ -144,20 +164,23 @@ const config = {
prevTokenSymbol: 'BOB',
}],
addressPrefix: 'zkbob_goerli',
parameters:'staging'
},
'USDC-goerli': {
chainId: 5,
poolAddress: '0xCF6446Deb67b2b56604657C67DAF54f884412531',
tokenAddress: '0x28B531401Ee3f17521B3772c13EAF3f86C2Fe780',
relayerUrls: ['https://goerli-usdc-relayer.thgkjlr.website'],
'USDC-OP-tenderly': {
chainId: 10,
parameters: "prod",
poolAddress: "0x1CA8C2B9B20E18e86d5b9a72370fC6c91814c97C",
tokenAddress: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
delegatedProverUrls: [],
proxyUrls: ["https://sepolia-proxy.zkbob.evgen.space", "https://sepolia-decentralized-relayer.thgkjlr.website"],
coldStorageConfigPath: '',
tokenSymbol: 'USDC',
tokenDecimals: 6,
feeDecimals: 2,
depositScheme: 'usdc-polygon',
depositScheme: 'usdc',
parameters: 'prod-arweave',
minTxAmount: 50000n, // 0.05 USDC
addressPrefix: 'zkbob_goerli_usdc',
addressPrefix: 'zkbob_optimism',
},
// 'BOB-op-goerli': {
// chainId: 420,
Expand Down Expand Up @@ -186,6 +209,7 @@ const config = {
minTxAmount: 1000000n, // 0.001 ETH
ddSubgraph: 'zkbob-eth-goerli',
addressPrefix: 'zkbob_goerli_eth',
parameters:'staging'
},
'USDT-nile': {
chainId: 3448148188,
Expand All @@ -201,6 +225,7 @@ const config = {
minTxAmount: 50000n, // 0.05 USDT
addressPrefix: 'zkbob_nile',
isTron: true,
parameters:'staging'
},
'USDT-nile-guard': {
chainId: 3448148188,
Expand All @@ -216,11 +241,29 @@ const config = {
minTxAmount: 50000n, // 0.05 USDT
addressPrefix: 'zkbob_nile_g',
isTron: true,
parameters:'staging'
},
},
"snarkParamsSet": {
"prod": process.env.REACT_APP_HOSTING === 'netlify' ? {
transferParamsUrl: 'https://r2.zkbob.com/transfer_params_22022023.bin',
transferVkUrl: 'https://r2.zkbob.com/transfer_verification_key_22022023.json',
} : {
transferParamsUrl: 'https://5tqpkqtbrkd5ookgni4yydvxgsnaazxl53pdgymjgkiaqwb56lzq.arweave.net/7OD1QmGKh9c5Rmo5jA63NJoAZuvu3jNhiTKQCFg98vM',
transferVkUrl: 'https://rhm3gvehfvhrnll2cuuem2s77hruahjgifqctaw7ld2z37ehpcta.arweave.net/idmzVIctTxatehUoRmpf-eNAHSZBYCmC31j1nfyHeKY',
},
"staging": {
transferParamsUrl: 'https://r2-staging.zkbob.com/transfer_params_20022023.bin',
transferVkUrl: 'https://r2-staging.zkbob.com/transfer_verification_key_20022023.json'
},
"prod-arweave": {
transferParamsUrl: 'https://5tqpkqtbrkd5ookgni4yydvxgsnaazxl53pdgymjgkiaqwb56lzq.arweave.net/7OD1QmGKh9c5Rmo5jA63NJoAZuvu3jNhiTKQCFg98vM',
transferVkUrl: 'https://rhm3gvehfvhrnll2cuuem2s77hruahjgifqctaw7ld2z37ehpcta.arweave.net/idmzVIctTxatehUoRmpf-eNAHSZBYCmC31j1nfyHeKY',
}
},
chains: {
'11155111': {
rpcUrls: ['https://sepolia.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'],
rpcUrls: ['https://sepolia.infura.io/v3/9a94d181b23846209f01161dcd0f9ad6'],
},
'5': {
rpcUrls: ['https://goerli.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161']
Expand All @@ -232,19 +275,28 @@ const config = {
rpcUrls: ['https://nile.trongrid.io'],
external: "https://deploy-preview-250--shimmering-douhua-023cc6.netlify.app"
},
'10': {
rpcUrls:["https://virtual.optimism.rpc.tenderly.co/fb1a77c3-e7f5-4622-aee5-85025a99a658"]
},
},
snarkParams: {
transferParamsUrl: 'https://r2-staging.zkbob.com/transfer_params_20022023.bin',
transferVkUrl: 'https://r2-staging.zkbob.com/transfer_verification_key_20022023.json'
},
// snarkParams: {
// transferParamsUrl: 'https://r2-staging.zkbob.com/transfer_params_20022023.bin',
// transferVkUrl: 'https://r2-staging.zkbob.com/transfer_verification_key_20022023.json'
// },
extraPrefixes: [
{
poolId: 16776968,
prefix: 'zkbob_nile_g',
name: 'USDT on Nile testnet (MPC guard contracts)',
},
{
poolId: 16776969,
prefix: 'zkbob_sepolia',
name: 'Bob Pool on Sepolia with decentralized relayer',
},
],
}

};

export default config[process.env.REACT_APP_CONFIG || 'dev'];
12 changes: 6 additions & 6 deletions src/contexts/ZkAccountContext/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -290,8 +290,8 @@ export const ZkAccountContextProvider = ({ children }) => {
if (!zkClient) return;
let version = null;
try {
const data = await zkClient.getRelayerVersion();
version = data.ref;
// const data = await zkClient.getRelayerVersion();
version = "TODO";
} catch (error) {
console.error(error);
Sentry.captureException(error, { tags: { method: 'ZkAccountContext.loadRelayerVersion' } });
Expand Down Expand Up @@ -437,19 +437,19 @@ export const ZkAccountContextProvider = ({ children }) => {
}
if (!zkAccount) {
let atomicTxFee = await zkClient.atomicTxFee(txType);
atomicTxFee = await fromShieldedAmount(atomicTxFee);
atomicTxFee = await fromShieldedAmount(atomicTxFee.total);
return { fee: atomicTxFee, numberOfTxs: 1, insufficientFunds: false, directDepositFee };
}
const shieldedAmounts = await Promise.all(amounts.map(async amount => await toShieldedAmount(amount)));
const shieldedAmountToConvert = await toShieldedAmount(amountToConvert);
const {
total,
fee,
txCnt,
insufficientFunds,
relayerFee,
} = await zkClient.feeEstimate(shieldedAmounts, txType, shieldedAmountToConvert, false);
} = await zkClient.feeEstimate(shieldedAmounts, txType, shieldedAmountToConvert, false);
return {
fee: await fromShieldedAmount(total),
fee: await fromShieldedAmount(fee.total),
numberOfTxs: txCnt,
insufficientFunds,
relayerFee,
Expand Down
1 change: 1 addition & 0 deletions src/contexts/ZkAccountContext/zp.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const createClient = (currentPoolAlias, supportId, callback) => {
snarkParams: config.snarkParams,
extraPrefixes: config.extraPrefixes,
supportId,
snarkParamsSet:config.snarkParamsSet
},
currentPoolAlias,
callback,
Expand Down
60 changes: 33 additions & 27 deletions src/providers/Web3Provider.js
Original file line number Diff line number Diff line change
@@ -1,41 +1,47 @@
import { WagmiConfig, configureChains, createClient } from 'wagmi';
import { publicProvider } from 'wagmi/providers/public';
import { jsonRpcProvider } from 'wagmi/providers/jsonRpc';
import { publicProvider } from '@wagmi/core/providers/public'
import { sepolia, polygon, goerli, optimism, optimismGoerli } from 'wagmi/chains';
import { InjectedConnector } from 'wagmi/connectors/injected';
import { WalletConnectConnector } from 'wagmi/connectors/walletConnect';
import config from '../config'


const getRpcByPriority = (priority) => {

return (chain) => {
if(!Object.keys(config.chains).find((chainId) => chainId == chain.id)){
return publicProvider(chain);
}

const selectedChain = config.chains[chain.id];
const len = selectedChain?.rpcUrls.length;
let res;
if (len > priority-1)
{
res = ({http: selectedChain.rpcUrls[priority]})
} else {
res = ({http: selectedChain.rpcUrls[priority%len]}) //if config is shorter than current prioirity (up to 3) , we just wrap and start from the beginning
};
return res;
}

}

const networks = process.env.REACT_APP_CONFIG === 'dev' ? [sepolia, goerli, optimismGoerli, optimism] : [polygon, optimism];
console.log('networks', networks)
const { chains, provider, webSocketProvider } = configureChains(
process.env.REACT_APP_CONFIG === 'dev' ? [sepolia, goerli, optimismGoerli] : [polygon, optimism],
networks,
[
jsonRpcProvider({
priority: 0,
rpc: chain => {
if (chain.id === optimism.id) {
return ({ http: 'https://rpc.ankr.com/optimism' });
}
if (chain.id === sepolia.id) {
return ({ http: 'https://sepolia.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161' });
}
if (chain.id === polygon.id) {
return ({ http: 'https://rpc.ankr.com/polygon' });
}
return null;
}
}),
publicProvider({ priority: 1 }),
rpc: getRpcByPriority(0)}),
jsonRpcProvider({priority:1,
rpc: getRpcByPriority(1)}),
jsonRpcProvider({priority:2,
rpc: chain => {
if (chain.id == optimism.id) {
return ({http: 'https://optimism-mainnet.infura.io/v3/9a94d181b23846209f01161dcd0f9ad6'})
}
} }),
jsonRpcProvider({priority:3,
rpc: chain => {
if (chain.id == optimism.id) {
return ({http: 'https://opt-mainnet.g.alchemy.com/v2/fnUqqB1tThPuSpM33VFm26wqXISKPS2n'})
}
} }),
rpc: getRpcByPriority(2)}),
jsonRpcProvider({priority:3,
rpc: getRpcByPriority(3)})
],
);

Expand Down
Loading