{"id":22072551,"url":"https://github.com/broxus/stever-contracts","last_synced_at":"2026-02-23T13:32:23.797Z","repository":{"id":66355185,"uuid":"566882940","full_name":"broxus/stEver-contracts","owner":"broxus","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-04T10:48:35.000Z","size":3224,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-12-07T18:43:37.628Z","etag":null,"topics":["everscale","stever"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/broxus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-11-16T16:06:19.000Z","updated_at":"2023-08-06T14:10:34.000Z","dependencies_parsed_at":"2024-03-14T12:31:41.706Z","dependency_job_id":"83c545ac-668a-4b34-beae-009d5ba84339","html_url":"https://github.com/broxus/stEver-contracts","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/broxus/stEver-contracts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/broxus%2FstEver-contracts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/broxus%2FstEver-contracts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/broxus%2FstEver-contracts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/broxus%2FstEver-contracts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/broxus","download_url":"https://codeload.github.com/broxus/stEver-contracts/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/broxus%2FstEver-contracts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29743834,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["everscale","stever"],"created_at":"2024-11-30T21:13:40.367Z","updated_at":"2026-02-23T13:32:23.769Z","avatar_url":"https://github.com/broxus.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# StEver\r\n\r\nStEver is a staking platform that aggregates real network validators in one place. This platform\r\nhas the ability to automatically balance between validators.\r\n\r\n### This project resolves problems:\r\n1. Users shouldn't select a validator for them self\r\n2. Users shouldn't freeze their money, after stake user will receive StEver tokens based on the current rate\r\n\r\n## Functional Description\r\n### Actors\r\n1. **StEverVault** - a contract that aggregates all validators and provides the ability to stake\r\n2. **User** - a person who wants to stake his money\r\n3. **StEverAccount** - a user account that represents user's withdrawal requests\r\n4. **StEver** - a token that represents the user's stake in the StEverVault\r\n5. **StEverGovernance** - a software that manage ever tokens between connected validators\r\n6. **StEverStrategy** - an abstraction that represents a connector to `DePool` contract\r\n7. **StEverCluster** - a contract that aggregates strategies owned by a validator\r\n\r\n### Actors behavior\r\n#### StEverVault\r\nThis is the main entry point for each user, owner, governance operations. It keeps all ever assets, and also it is the `StEver` token issuer.\r\nLet's dig into the `StEverVault` functionality:\r\n1. **Deposit** - `StEver.deposit` user can deposit his ever tokens to the `StEverVault` and receive `StEver` tokens in return\r\n2. **Withdraw** - `StEver.onAcceptTokensTransfer` user can withdraw his ever tokens from the `StEverVault` by sending `StEver` tokens to the `StEverVault`.\r\nAfter it inside the user's **StEverAccount** will be created new withdrawal request (withdraw request can also be canceled by the user).\r\nWhen `withfrawHoldTime` will be passed, and `StEverGovernance` will process this request, user will receive his `ever` tokens + reward back\r\n#### StEverCluster\r\nIf the validator wants to participate to StEver project he should get in touch with StEver admins. After some checks,\r\nif a validator pass our checks we will create a `StEverCluster` contract for him.\r\n\r\n**Integrate validator functionality**\r\n1. Admin will call `StEver.createCluster`, after this call new cluster will be added to `clusterPools` mapping.\r\nThen cluster address will be provided to validator\r\n2. Validator going to deploy his `DePool` contracts and call `StEverCluster.deployStrategies` with `DePool` addresses\r\n3. Each cluster has its own constrains such as `maxStrategiesCount` and `assurance`. `maxStrategiesCount` is a maximal\r\n   strategy count that can be created by the `Cluster`. `assurance` is Assurance that should be provided by the\r\n   `clusterOwner` to his `Cluster`. `assurance` is `StEver` value, so the `clusterOwner` should make a `StEver` token\r\n   transfer to the `Cluster` address\r\n4. When all constraints are satisfied, the validator can obtain strategies addresses, and call `StEverCluster.addStrategies` with strategies addresses.\r\nAfter its strategies will be added to the `StEverVault` and will be available for staking\r\n\r\n#### StEverGovernance\r\nThis is software that has access to re-balance ever tokens between connected strategies, and also it manages withdrawals for users.\r\n\r\n**Re-balance functionality**\r\n1. `StEverVault.depositToStrategies`\r\n2. `StEverVault.processWithdrawFromStrategies`\r\n\r\n**Withdraw request satisfaction**\r\n1. `StEverVault.processSendToUsers`\r\n \r\n## Deploy\r\n```shell\r\nnpm i\r\n```\r\n```shell\r\nSEED=\"{{seed phrase}}\" \\\r\nMAIN_GIVER_KEY={{giver secret key}} \\\r\nnpx locklift run --disable-build --network mainnet -s scripts/1_deploy-and-setup-stEverVault.ts\r\n```\r\n### Deploy params:\r\n1. **MultiSig admin(owner) wallet address**: StEverVault owner\r\n2. **TokeRoot address**: StEver token root address\r\n3. **Governance PUBLIC key**: bot public key\r\n4. **StEverVault deploy value (nano ever), min 100 ever**\r\n5. **GainFee (nano ever), min 1 ever**: StEverVault will take gainFee from each strategy report to maintain the required gas level **(1 ever is recommended)**\r\n6. **StEver platform fee (0..1000), 1% == 10**: This fee will aggregate (as a platform fee) for future withdrawal to the admin\r\n\r\n## Get upgrade code\r\n\r\n```shell\r\nnpx locklift run --disable-build --network mainnet -s scripts/2_fix_upgrade.ts\r\n```\r\n## Change log\r\n### [v2]\r\n#### Fixes\r\n\r\n### [v3] - Cluster\r\nThis update provides validators the possibility to control their strategies for themselves\r\n(in the previous version only `stEverOwner` could add and remove strategies from `StEverVault`)\r\n#### Added\r\n- Cluster entity was added to the StEverVault, now actions like deploy, add and delete strategy only allowed by the\r\n  `Cluster` contract. Cluster can be created only by the `stEverOwner`. Each cluster includes constraints such as\r\n  `maxStrategiesCount` and `assurance`.\r\n  - `maxStrategiesCount` - maximal strategy count that can be created by the `Cluster`\r\n  - `assurance` - Assurance that should be provided by the `clusterOwner` to his `Cluster`. `assurance` is `StEver` value,\r\n    so the `clusterOwner` should make a `StEver` token transfer to the `Cluster` address\r\n  \r\nNow interaction with strategies looks like this:\r\n1. We need to create a `Cluster`, this method can be called by `stEverOnwer` only\r\n- Other operations should be done by `clusterOwner`\r\n2. Deploy strategies via `Cluster.deployStrategies(_dePools=deppolssAddress[])`\r\n3. Attach strategies to the StEver `Cluster.addStrategies(_strategies=strategiesAddresses[])`\r\n- Remove strategies\r\n1. `Cluster.removeStrategies(_strategies=strategiesAddresses[])`\r\n\r\n### [V4]\r\nWith this update we improve `withfrawHoldTime` for each user. This is anti-abuse mechanism\r\nthat allows to withdraw only after `withfrawHoldTime` from the withdrawal request. \r\n#### Added\r\n- Filed `withfrawHoldTime` - time that should be passed from the withdrawal request to the withdrawal itself\r\n- Each withdrawal request has its own `unlockTime` that is calculated as `now + withfrawHoldTime`\r\n\r\n### [V5]\r\nThis update provide `reduction factor` for rewards. This factor is used to reduce growing of ever/stEver ratio.\r\nAnd now users are obtaining their rewards immediately after the stake was made (each second rate are growing).\r\nInstead of obtaining rewards immediately after strategy report.\r\n\r\n\r\n\r\n\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbroxus%2Fstever-contracts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbroxus%2Fstever-contracts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbroxus%2Fstever-contracts/lists"}