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

Update vesting documentation #169

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
11 changes: 6 additions & 5 deletions documentation/privilege-roles-operations.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@ There are also additional actions that require the `owner` role, like setting a

The following are the privilege roles that are defined in the smart contracts:

- `owner`: The account that owns the contract. This account has the highest level of privilege and can perform all critical operations like upgrading the contract, setting DAO treasury address, setting emergency exit, etc. The owner of deployed smart contracts is a `Security council`. This is a multisignature account that requires the approval of the majority of the members to perform any operation. The multisignature account is controlled by different parties, which ensures that no single party has full control over the contract. Smart contract which have the `owner` role defined are [L1LiskToken](../src/L1/L1LiskToken.sol), [L1VestingWallet](../src/L1/L1VestingWallet.sol), [L2Airdrop](../src/L2/L2Airdrop.sol), [L2Claim](../src/L2/L2Claim.sol), [L2Governor](../src/L2/L2Governor.sol), [L2LockingPosition](../src/L2/L2LockingPosition.sol), [L2Reward](../src/L2/L2Reward.sol), [L2Staking](../src/L2/L2Staking.sol), [L2VestingWallet](../src/L2/L2VestingWallet.sol) and [L2VotingPower](../src/L2/L2VotingPower.sol).
- `owner`: The account that owns the contract. This account has the highest level of privilege and can perform all critical operations like upgrading the contract, setting DAO treasury address, setting emergency exit, etc. The owner of deployed smart contracts is a `Security council`. This is a multisignature account that requires the approval of the majority of the members to perform any operation. The multisignature account is controlled by different parties, which ensures that no single party has full control over the contract. Smart contract which have the `owner` role defined are [L1LiskToken](../src/L1/L1LiskToken.sol), [L1VestingWallet](../src/L1/L1VestingWallet.sol), [L2Airdrop](../src/L2/L2Airdrop.sol), [L2Claim](../src/L2/L2Claim.sol), [L2Governor](../src/L2/L2Governor.sol), [L2LockingPosition](../src/L2/L2LockingPosition.sol), [L2Reward](../src/L2/L2Reward.sol), [L2Staking](../src/L2/L2Staking.sol), [L2VestingWallet](../src/L2/L2VestingWallet.sol) and [L2VotingPower](../src/L2/L2VotingPower.sol), however in cases of [L1VestingWallet](../src/L1/L1VestingWallet.sol) and [L2VestingWallet](../src/L2/L2VestingWallet.sol) the `owner` does not have the authority to upgrade the smart contract (see `admin` role below).
- `burner`: The account that is allowed to burn LSK tokens. This role is defined in the [L1LiskToken](../src/L1/L1LiskToken.sol) smart contract.
- `creator`: The accounts (smart contracts) which are allowed to lock LSK tokens and manipulate with them on behalf of the users inside [L2StakingContract](../src/L2/L2Staking.sol) smart contract. It is expected that only one smart contract will be allowed to be a `creator` ([L2Reward](../src/L2/L2Reward.sol)) but in principle, there can be multiple `creators`. A security assumption is that the `creator` is a trusted smart contract that will not misuse the locked LSK tokens. This role is defined in the [L2Staking](../src/L2/L2Staking.sol) smart contract.
- `admin`: A special role existing exclusively for [L1VestingWallet](../src/L1/L1VestingWallet.sol) and [L2VestingWallet](../src/L2/L2VestingWallet.sol) smart contracts. For technical reasons, `admin` plays the role of `owner` for vesting wallets and is the only role that can upgrade the vesting wallet smart contracts.

## Smart Contracts and Their Privilege Roles

Expand All @@ -23,12 +24,12 @@ The following are the smart contracts that have privilege roles defined in their
- [L1LiskToken.sol](../src/L1/L1LiskToken.sol): This contract has the `owner` and `burner` roles defined. The `owner` role is required to add or remove the `burner` role to and from an account:
- `addBurner`: Assigns the `burner` role to an account.
- `renounceBurner`: Removes the `burner` role from an account.

The `burner` role is required to burn LSK tokens:
- `burn`: Burns LSK tokens from the caller's account.
- `burnFrom`: Burns LSK tokens from another account, deducting from the caller's allowance.

- [L1VestingWallet.sol](../src/L1/L1VestingWallet.sol): This contract has the `owner` role defined. The `owner` role is required to upgrade the contract.
- [L1VestingWallet.sol](../src/L1/L1VestingWallet.sol): This contract has the `owner` and `admin` roles defined. The `owner` does not have special authority and serves as the beneficiary of the vesting wallet. The `admin` role is required to upgrade the contract.

- [L2Airdrop.sol](../src/L2/L2Airdrop.sol): This contract has the `owner` role defined. The `owner` role is authorized to set the Merkle root to commence the airdrop period and transfer unclaimed airdrop LSK tokens to a designated airdrop wallet once the airdrop period concludes:
- `setMerkleRoot`: Sets the Merkle root to commence the airdrop period.
Expand Down Expand Up @@ -65,15 +66,15 @@ The following are the smart contracts that have privilege roles defined in their
- `pauseRemainingLockingDuration`: Pauses the countdown of the remaining locking duration of the given locking position.
- `resumeCountdown`: Resumes the remaining locking duration of the given locking position.

- [L2VestingWallet.sol](../src/L2/L2VestingWallet.sol): This contract has the `owner` role defined. The `owner` role is required to upgrade the contract.
- [L2VestingWallet.sol](../src/L2/L2VestingWallet.sol): This contract has the `owner` and `admin` roles defined. The `owner` does not have special authority and serves as the beneficiary of the vesting wallet. The `admin` role is required to upgrade the contract.

- [L2VotingPower.sol](../src/L2/L2VotingPower.sol): This contract has the `owner` role defined. The `owner` role is required to upgrade the contract.

## Operations and Their Required Roles

The following are the operations that are defined in the smart contracts and the roles that are required to perform them:

- `Upgrade Smart Contract`: The `owner` role is required to upgrade the contract code to a new version.
- `Upgrade Smart Contract`: The `owner` role is required to upgrade the contract code to a new version (`admin` role is required for [L1VestingWallet](../src/L1/L1VestingWallet.sol) and [L2VestingWallet](../src/L2/L2VestingWallet.sol) smart contracts).
- `Set DAO Treasury Address`: The `owner` role is required to set the DAO treasury address inside the contract.
- `Set Address to Another Contract`: The `owner` role is required to set the address of another contract inside the contract.
- `Set Merkle Root`: The `owner` role is required to set the Merkle root inside the [L2Airdrop](../src/L2/L2Airdrop.sol) smart contract.
Expand Down
23 changes: 12 additions & 11 deletions documentation/vesting.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,21 @@ The following table gives an overview of the vesting schedules, each implemented

Some vesting wallets will be deployed on L1 and some on L2. The vesting schedules are read from the [vestingPlans_L1.json](../script/data/devnet/vestingPlans_L1.json) and [vestingPlans_L2.json](../script/data/devnet/vestingPlans_L2.json) files. Note that the vested amount is not passed into the initializer of `VestingWalletUpgradeable` contract, rather all tokens transferred to this smart contract are vested over the provided period.

| Category | Network Layer | Amount (LSK) | Beneficiary Address | Start Timestamp | Duration in Days | Description |
|----------|---------------|--------------|-----------------|------------------|-------------|-------------|
| Treasury | L1 | 8,000,000 | <treasury address> | 1735689600 | 1095 | All tokens are linearly released over 3 years between 1.1.2025 and 31.12.2027. |
| Team | L1 | 7,000,000 | <team address> | 1735689600 | 1461 | All tokens are linearly released over 4 years between 1.1.2025 and 31.12.2028. |
| Investors | L1 | 30,000,000 | <investor address> | 1716163200 | 730 | 10,000,000 LSK liquid at migration, the remaining 20,000,000 LSK vested linearly over 24 months, starting 20.05.2024. |
| Ecosystem Fund | L1 | ~7,860,000 | <ecosystem fund address> | 1735689600 | 0 | 5,000,000 LSK are liquid at migration, the remaining ~2,860,000 LSK are released on 1.1.2025. |
| DAO Fund | L2 | 15,000,000 | <dao treasury> | 1716163200 | 226 | 6,250,000 LSK liquid at migration, 8,750,000 LSK are linearly released in 2024, starting 20.05.2024. |
| DAO Fund | L2 | 30,000,000 | <dao treasury> | 1735689600 | 730 | 15,000,000 LSK are linearly released in 2025, 15,000,000 LSK are linearly released in 2026. |
| DAO Fund - optional | L2 | 90,000,000 | <dao treasury> | 1798761600 | 2192 | 15,000,000 LSK are linearly released in the years 2027-2032. |
| DAO Fund - optional | L2 | 10,000,000 | <dao treasury> | 1988150400 | 365 | 10,000,000 LSK are linearly released in 2033. |
| Category | Network Layer | Amount (LSK) | Wallet address | Beneficiary Address | Start Timestamp | Duration in Days | Description |
|----------|---------------|--------------|----------------|---------------------|----------|------------------|-------------|
| Treasury | L1 | 8,000,000 |[0x18a0b8c653c291D69F21A6Ef9a1000335F71618e](https://eth.blockscout.com/address/0x18a0b8c653c291D69F21A6Ef9a1000335F71618e)| [0xCAaCF7d9E40D0f4dB66419d678A8D46dE74B0C02](https://eth.blockscout.com/address/0xCAaCF7d9E40D0f4dB66419d678A8D46dE74B0C02) | 1735689600 | 1095 | All tokens are linearly released over 3 years between 1.1.2025 and 31.12.2027. |
| Team I | L1 | 5,500,000 |[0xe09899a4C98473460BC19D136B330608B465Dc55](https://eth.blockscout.com/address/0xe09899a4C98473460BC19D136B330608B465Dc55)| [0x84798151d27C09E9B6C85A110E6a195D83A4D5F0](https://eth.blockscout.com/address/0x84798151d27C09E9B6C85A110E6a195D83A4D5F0) | 1735689600 | 1461 | All tokens are linearly released over 4 years between 1.1.2025 and 31.12.2028. |
| Team II | L1 | 1,500,000 |[0x2294A7f24187B84995A2A28112f82f07BE1BceAD](https://eth.blockscout.com/address/0x2294A7f24187B84995A2A28112f82f07BE1BceAD)| [0x586C7735d78f421495FE7e4E32B4e13a90661395](https://eth.blockscout.com/address/0x586C7735d78f421495FE7e4E32B4e13a90661395) | 1735689600 | 1461 | All tokens are linearly released over 4 years between 1.1.2025 and 31.12.2028. |
| Investors | L1 | 30,000,000 |[0x58a61b1807a7bDA541855DaAEAEe89b1DDA48568](https://eth.blockscout.com/address/0x58a61b1807a7bDA541855DaAEAEe89b1DDA48568)| [0x4B00A4659454013388b39DF9b23F5DbE65Bbc06E](https://eth.blockscout.com/address/0x4B00A4659454013388b39DF9b23F5DbE65Bbc06E) | 1716163200 | 730 | 10,000,000 LSK liquid at migration, the remaining 20,000,000 LSK vested linearly over 24 months, starting 20.05.2024. |
| Ecosystem Fund | L1 | ~7,860,000 |[0x114cB34b1A0fBBB686E31Bf5542d64A98c42eE23](https://eth.blockscout.com/address/0x114cB34b1A0fBBB686E31Bf5542d64A98c42eE23)| [0xC30B50cdCccEb70b8D87fDda4F08258e8A02539E](https://eth.blockscout.com/address/0xC30B50cdCccEb70b8D87fDda4F08258e8A02539E) | 1735689600 | 0 | 5,000,000 LSK are liquid at migration, the remaining ~2,860,000 LSK are released on 1.1.2025. |
| DAO Fund | L2 | 15,000,000 |[0xfDEf6f02778Ab9e38A75A52b3Ba900C2aD751ecE](https://blockscout.lisk.com/address/0xfDEf6f02778Ab9e38A75A52b3Ba900C2aD751ecE)| [0x2294A7f24187B84995A2A28112f82f07BE1BceAD](https://blockscout.lisk.com/address/0x2294A7f24187B84995A2A28112f82f07BE1BceAD) | 1716163200 | 226 | 6,250,000 LSK liquid at migration, 8,750,000 LSK are linearly released in 2024, starting 20.05.2024. |
| DAO Fund | L2 | 30,000,000 |[0x21498d0c5d90198059B7B29Bbb6DB46f36a66e27](https://blockscout.lisk.com/address/0x21498d0c5d90198059B7B29Bbb6DB46f36a66e27)| [0x2294A7f24187B84995A2A28112f82f07BE1BceAD](https://blockscout.lisk.com/address/0x2294A7f24187B84995A2A28112f82f07BE1BceAD) | 1735689600 | 730 | 15,000,000 LSK are linearly released in 2025, 15,000,000 LSK are linearly released in 2026. |
| DAO Fund - optional | L2 | 90,000,000 |[0xdEA264322978933724d2147C45ddd186E7994A8c](https://blockscout.lisk.com/address/0xdEA264322978933724d2147C45ddd186E7994A8c)| [0x2294A7f24187B84995A2A28112f82f07BE1BceAD](https://blockscout.lisk.com/address/0x2294A7f24187B84995A2A28112f82f07BE1BceAD) | 1798761600 | 2192 | 15,000,000 LSK are linearly released in the years 2027-2032. |
| DAO Fund - optional | L2 | 10,000,000 |[0x8F0dc4c07a876aB963eB84df26cDAA1cc43F6b24](https://blockscout.lisk.com/address/0x8F0dc4c07a876aB963eB84df26cDAA1cc43F6b24)| [0x2294A7f24187B84995A2A28112f82f07BE1BceAD](https://blockscout.lisk.com/address/0x2294A7f24187B84995A2A28112f82f07BE1BceAD) | 1988150400 | 365 | 10,000,000 LSK are linearly released in 2033. |

## Owner, Contract Admin and Contract Upgrades

The vesting smart contracts will hold a significant portion of LSK tokens vested for the community and other stakeholders. By design, beneficiary address for these smart contract will be the owner of the vesting contract. While Contract Admin is authorized to upgrade the contracts, set to the multisignature controlled by the Security Council.
The vesting smart contracts will hold a significant portion of LSK tokens vested for the community and other stakeholders. By design, beneficiary address for these smart contract will be the owner of the vesting contract. While Contract Admin is authorized to upgrade the contracts, set to the multisignature controlled by the Security Council. Refer to [Privilege Roles, Operations and Upgrades](privilege-roles-operations.md) page for more details.

Vesting contracts will be upgraded exclusively if any of them is hacked or contains a vulnerability, and only to control the damage. This is a security measure protecting the vested LSK tokens.

Expand Down
Loading