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

[VEN-2725] VIP for XVS bridge on OP Sepolia and Mainnet #371

Merged
merged 28 commits into from
Sep 27, 2024
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
014a08d
feat: add VIP for XVS bridge on opsepolia
Debugger022 Sep 2, 2024
8b1fd6d
feat: simulations for XVS bridge on opsepolia
Debugger022 Sep 2, 2024
4e69411
Merge branch 'main' into feat/VEN-2725
Debugger022 Sep 3, 2024
92affb1
refactor: add xvs bridge support for zysync on opsepoilia
Debugger022 Sep 4, 2024
8a144ff
fix: pr comments
Debugger022 Sep 11, 2024
8d7ee85
Merge branch 'main' into feat/VEN-2725
Debugger022 Sep 12, 2024
adc9137
Merge branch 'main' into feat/VEN-2725
Debugger022 Sep 12, 2024
df99dc2
feat: add opsepolia trusted remote to arbitrum sepolia xvs bridge
Debugger022 Sep 12, 2024
2f60c48
feat: add opsepolia trusted remote to opbnb testnet xvs bridge
Debugger022 Sep 12, 2024
0b3f8cb
feat: add opsepolia trusted remote to sepolia xvs bridge
Debugger022 Sep 12, 2024
4b7ddef
feat: add opsepolia trusted remote to zksyncsepolia xvs bridge
Debugger022 Sep 12, 2024
6f96e92
feat: add vip for bsctestnet to support xvs bridge for opsepolia
Debugger022 Sep 16, 2024
538fc0d
fix: amount of XVS for daily tx limit exceed
Debugger022 Sep 16, 2024
135d19b
feat: vip for xvs-bridge on op mainnet
Debugger022 Sep 19, 2024
9d1067d
feat: mesh architecture support for arbitrum one for op mainnet
Debugger022 Sep 19, 2024
44f741b
feat: mesh architecture support for ethereum to op mainnet
Debugger022 Sep 19, 2024
cd3b7de
feat: mesh architecture support for opbnbmainnet to op mainnet
Debugger022 Sep 19, 2024
8715477
feat: mesh architecture support for bscmainnet to op mainnet
Debugger022 Sep 19, 2024
3e1e6f6
feat: vip for xvs vault and store on opmainnet
Debugger022 Sep 19, 2024
a7a3087
feat: xvs bridge support for zksync to op mainnet
Debugger022 Sep 19, 2024
e07920a
refactor: set xvs bridge config for all networks to op mainnet
Debugger022 Sep 19, 2024
fa1ce0b
fix: addresses in simulations
GitGuru7 Sep 20, 2024
105462d
fix: typos and BSC simulation
GitGuru7 Sep 25, 2024
f12ab02
fix: PR typo
GitGuru7 Sep 26, 2024
f9b9ca4
feat: add description for VIP-374
kkirka Sep 26, 2024
680053c
feat: update tx nonces
kkirka Sep 26, 2024
cc2bcc9
Merge branch 'main' into feat/VEN-2725
chechu Sep 27, 2024
8e6165a
chore: remove duplicated entry
chechu Sep 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions multisig/proposals/arbitrumsepolia/vip-014/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { parseUnits } from "ethers/lib/utils";
import { LzChainId } from "src/types";
import { makeProposal } from "src/utils";

const XVS_BRIDGE_ADMIN = "0xc94578caCC89a29B044a0a1D54d20d48A645E5C8";

export const MIN_DST_GAS = "300000";
export const SINGLE_SEND_LIMIT = parseUnits("10000", 18);
export const MAX_DAILY_SEND_LIMIT = parseUnits("50000", 18);
export const SINGLE_RECEIVE_LIMIT = parseUnits("10200", 18);
export const MAX_DAILY_RECEIVE_LIMIT = parseUnits("51000", 18);
export const OP_SEPOLIA_TRUSTED_REMOTE = "0x79a36dc9a43d05db4747c59c02f48ed500e47df1";

const vip014 = () => {
return makeProposal([
{
target: XVS_BRIDGE_ADMIN,
signature: "setTrustedRemoteAddress(uint16,bytes)",
params: [LzChainId.opsepolia, OP_SEPOLIA_TRUSTED_REMOTE],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMinDstGas(uint16,uint16,uint256)",
params: [LzChainId.opsepolia, 0, MIN_DST_GAS],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMaxDailyLimit(uint16,uint256)",
params: [LzChainId.opsepolia, MAX_DAILY_SEND_LIMIT],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMaxSingleTransactionLimit(uint16,uint256)",
params: [LzChainId.opsepolia, SINGLE_SEND_LIMIT],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMaxDailyReceiveLimit(uint16,uint256)",
params: [LzChainId.opsepolia, MAX_DAILY_RECEIVE_LIMIT],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMaxSingleReceiveTransactionLimit(uint16,uint256)",
params: [LzChainId.opsepolia, SINGLE_RECEIVE_LIMIT],
},
]);
};

export default vip014;
49 changes: 49 additions & 0 deletions multisig/proposals/opbnbtestnet/vip-021/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { parseUnits } from "ethers/lib/utils";
import { LzChainId } from "src/types";
import { makeProposal } from "src/utils";

const XVS_BRIDGE_ADMIN = "0x19252AFD0B2F539C400aEab7d460CBFbf74c17ff";

export const MIN_DST_GAS = "300000";
export const SINGLE_SEND_LIMIT = parseUnits("10000", 18);
export const MAX_DAILY_SEND_LIMIT = parseUnits("50000", 18);
export const SINGLE_RECEIVE_LIMIT = parseUnits("10200", 18);
export const MAX_DAILY_RECEIVE_LIMIT = parseUnits("51000", 18);
export const OP_SEPOLIA_TRUSTED_REMOTE = "0x79a36dc9a43d05db4747c59c02f48ed500e47df1";

const vip021 = () => {
return makeProposal([
{
target: XVS_BRIDGE_ADMIN,
signature: "setTrustedRemoteAddress(uint16,bytes)",
params: [LzChainId.opsepolia, OP_SEPOLIA_TRUSTED_REMOTE],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMinDstGas(uint16,uint16,uint256)",
params: [LzChainId.opsepolia, 0, MIN_DST_GAS],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMaxDailyLimit(uint16,uint256)",
params: [LzChainId.opsepolia, MAX_DAILY_SEND_LIMIT],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMaxSingleTransactionLimit(uint16,uint256)",
params: [LzChainId.opsepolia, SINGLE_SEND_LIMIT],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMaxDailyReceiveLimit(uint16,uint256)",
params: [LzChainId.opsepolia, MAX_DAILY_RECEIVE_LIMIT],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMaxSingleReceiveTransactionLimit(uint16,uint256)",
params: [LzChainId.opsepolia, SINGLE_RECEIVE_LIMIT],
},
]);
};

export default vip021;
244 changes: 244 additions & 0 deletions multisig/proposals/opsepolia/vip-002/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,244 @@
import { parseUnits } from "ethers/lib/utils";
import { NETWORK_ADDRESSES } from "src/networkAddresses";
import { makeProposal } from "src/utils";

const { opsepolia } = NETWORK_ADDRESSES;

const ACM = "0x1652E12C8ABE2f0D84466F0fc1fA4286491B3BC1";

export const XVS_BRIDGE_ADMIN_PROXY = "0x6bBcB95eCF9BEc9AE91d5Ad227783e3913145321";
export const XVS = "0x789482e37218f9b26d8D9115E356462fA9A37116";
export const XVS_BRIDGE_DEST = "0x79a36dc9a43D05Db4747c59c02F48ed500e47dF1";

export const BNB_TESTNET_ENDPOINT_ID = 10102;
export const SEPOLIA_ENDPOINT_ID = 10161;
export const OPBNB_TESTNET_ENDPOINT_ID = 10202;
export const ARBITRUM_SEPOLIA_ENDPOINT_ID = 10231;
export const ZKSYNC_SEPOLIA_ENDPOINT_ID = 10248;

export const OPBNB_TESTNET_TRUSTED_REMOTE = "0xa03205bc635a772e533e7be36b5701e331a70ea3";
export const SEPOLIA_TRUSTED_REMOTE = "0xc340b7d3406502f43dc11a988e4ec5bbe536e642";
export const BNB_TESTNET_TRUSTED_REMOTE = "0x0e132cd94fd70298b747d2b4d977db8d086e5fd0";
export const ARBITRUM_SEPOLIA_TRUSTED_REMOTE = "0xfdc5cec63fd167da46cf006585b30d03b104efd4";
export const ZKSYNC_SEPOLIA_TRUSTED_REMOTE = "0x760461ccb2508caaa2ece0c28af3a4707b853043";

chechu marked this conversation as resolved.
Show resolved Hide resolved
export const SINGLE_RECEIVE_LIMIT = parseUnits("10200", 18);
export const MAX_DAILY_RECEIVE_LIMIT = parseUnits("51000", 18);
export const MIN_DST_GAS = "300000";
export const SINGLE_SEND_LIMIT = parseUnits("10000", 18);
export const MAX_DAILY_SEND_LIMIT = parseUnits("50000", 18);

export const XVS_MINT_LIMIT = parseUnits("500000", 18);

const vip002 = () => {
return makeProposal([
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "setSendVersion(uint16)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "setReceiveVersion(uint16)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "forceResumeReceive(uint16,bytes)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "setOracle(address)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "setMaxSingleTransactionLimit(uint16,uint256)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "setMaxDailyLimit(uint16,uint256)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "setMaxSingleReceiveTransactionLimit(uint16,uint256)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "setMaxDailyReceiveLimit(uint16,uint256)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "pause()", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "unpause()", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "removeTrustedRemote(uint16)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "dropFailedMessage(uint16,bytes,uint64)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "setPrecrime(address)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "setMinDstGas(uint16,uint16,uint256)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "setPayloadSizeLimit(uint16,uint256)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "setWhitelist(address,bool)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "setConfig(uint16,uint16,uint256,bytes)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "sweepToken(address,address,uint256)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "updateSendAndCallEnabled(bool)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS, "mint(address,uint256)", XVS_BRIDGE_DEST],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS, "burn(address,uint256)", XVS_BRIDGE_DEST],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "setTrustedRemoteAddress(uint16,bytes)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS_BRIDGE_ADMIN_PROXY, "transferBridgeOwnership(address)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS, "migrateMinterTokens(address,address)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS, "setMintCap(address,uint256)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS, "updateBlacklist(address,bool)", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS, "pause()", opsepolia.GUARDIAN],
},
{
target: ACM,
signature: "giveCallPermission(address,string,address)",
params: [XVS, "unpause()", opsepolia.GUARDIAN],
},
{ target: XVS_BRIDGE_ADMIN_PROXY, signature: "acceptOwnership()", params: [] },
{
target: XVS_BRIDGE_ADMIN_PROXY,
signature: "setTrustedRemoteAddress(uint16,bytes)",
params: [BNB_TESTNET_ENDPOINT_ID, BNB_TESTNET_TRUSTED_REMOTE],
},
{
target: XVS_BRIDGE_ADMIN_PROXY,
signature: "setTrustedRemoteAddress(uint16,bytes)",
params: [OPBNB_TESTNET_ENDPOINT_ID, OPBNB_TESTNET_TRUSTED_REMOTE],
},
{
target: XVS_BRIDGE_ADMIN_PROXY,
signature: "setTrustedRemoteAddress(uint16,bytes)",
params: [SEPOLIA_ENDPOINT_ID, SEPOLIA_TRUSTED_REMOTE],
},
{
target: XVS_BRIDGE_ADMIN_PROXY,
signature: "setTrustedRemoteAddress(uint16,bytes)",
params: [ARBITRUM_SEPOLIA_ENDPOINT_ID, ARBITRUM_SEPOLIA_TRUSTED_REMOTE],
},
{
target: XVS_BRIDGE_ADMIN_PROXY,
signature: "setTrustedRemoteAddress(uint16,bytes)",
params: [ZKSYNC_SEPOLIA_ENDPOINT_ID, ZKSYNC_SEPOLIA_TRUSTED_REMOTE],
},
{
target: XVS_BRIDGE_ADMIN_PROXY,
signature: "setMinDstGas(uint16,uint16,uint256)",
params: [ZKSYNC_SEPOLIA_ENDPOINT_ID, 0, MIN_DST_GAS],
},
{
target: XVS_BRIDGE_ADMIN_PROXY,
signature: "setMaxDailyLimit(uint16,uint256)",
params: [ZKSYNC_SEPOLIA_ENDPOINT_ID, MAX_DAILY_SEND_LIMIT],
},
{
target: XVS_BRIDGE_ADMIN_PROXY,
signature: "setMaxSingleTransactionLimit(uint16,uint256)",
params: [ZKSYNC_SEPOLIA_ENDPOINT_ID, SINGLE_SEND_LIMIT],
},
{
target: XVS_BRIDGE_ADMIN_PROXY,
signature: "setMaxDailyReceiveLimit(uint16,uint256)",
params: [ZKSYNC_SEPOLIA_ENDPOINT_ID, MAX_DAILY_RECEIVE_LIMIT],
},
{
target: XVS_BRIDGE_ADMIN_PROXY,
signature: "setMaxSingleReceiveTransactionLimit(uint16,uint256)",
params: [ZKSYNC_SEPOLIA_ENDPOINT_ID, SINGLE_RECEIVE_LIMIT],
},
{
target: XVS_BRIDGE_ADMIN_PROXY,
signature: "setWhitelist(address,bool)",
params: [opsepolia.VTREASURY, true],
},
{
target: XVS_BRIDGE_ADMIN_PROXY,
signature: "setWhitelist(address,bool)",
params: [opsepolia.GUARDIAN, true],
},
{
target: XVS,
signature: "setMintCap(address,uint256)",
params: [XVS_BRIDGE_DEST, XVS_MINT_LIMIT],
},
]);
};

export default vip002;
49 changes: 49 additions & 0 deletions multisig/proposals/sepolia/vip-060/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { parseUnits } from "ethers/lib/utils";
import { LzChainId } from "src/types";
import { makeProposal } from "src/utils";

const XVS_BRIDGE_ADMIN = "0xd3c6bdeeadB2359F726aD4cF42EAa8B7102DAd9B";

export const MIN_DST_GAS = "300000";
export const SINGLE_SEND_LIMIT = parseUnits("10000", 18);
export const MAX_DAILY_SEND_LIMIT = parseUnits("50000", 18);
export const SINGLE_RECEIVE_LIMIT = parseUnits("10200", 18);
export const MAX_DAILY_RECEIVE_LIMIT = parseUnits("51000", 18);
export const OP_SEPOLIA_TRUSTED_REMOTE = "0x79a36dc9a43d05db4747c59c02f48ed500e47df1";

const vip060 = () => {
return makeProposal([
{
target: XVS_BRIDGE_ADMIN,
signature: "setTrustedRemoteAddress(uint16,bytes)",
params: [LzChainId.opsepolia, OP_SEPOLIA_TRUSTED_REMOTE],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMinDstGas(uint16,uint16,uint256)",
params: [LzChainId.opsepolia, 0, MIN_DST_GAS],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMaxDailyLimit(uint16,uint256)",
params: [LzChainId.opsepolia, MAX_DAILY_SEND_LIMIT],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMaxSingleTransactionLimit(uint16,uint256)",
params: [LzChainId.opsepolia, SINGLE_SEND_LIMIT],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMaxDailyReceiveLimit(uint16,uint256)",
params: [LzChainId.opsepolia, MAX_DAILY_RECEIVE_LIMIT],
},
{
target: XVS_BRIDGE_ADMIN,
signature: "setMaxSingleReceiveTransactionLimit(uint16,uint256)",
params: [LzChainId.opsepolia, SINGLE_RECEIVE_LIMIT],
},
]);
};

export default vip060;
Loading
Loading