{"id":28095941,"url":"https://github.com/evmos/vesting","last_synced_at":"2026-01-20T16:25:12.674Z","repository":{"id":189751221,"uuid":"679655759","full_name":"evmos/vesting","owner":"evmos","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-30T10:32:26.000Z","size":438,"stargazers_count":0,"open_issues_count":4,"forks_count":3,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-07T19:50:42.049Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/evmos.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2023-08-17T10:21:29.000Z","updated_at":"2024-04-30T10:32:29.000Z","dependencies_parsed_at":"2024-04-30T11:44:50.049Z","dependency_job_id":"d4c94b4b-82a4-40e4-8f96-5bb6d00c9ade","html_url":"https://github.com/evmos/vesting","commit_stats":null,"previous_names":["evmos/vesting"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/evmos/vesting","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evmos%2Fvesting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evmos%2Fvesting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evmos%2Fvesting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evmos%2Fvesting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/evmos","download_url":"https://codeload.github.com/evmos/vesting/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evmos%2Fvesting/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28606993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T16:10:39.856Z","status":"ssl_error","status_checked_at":"2026-01-20T16:10:39.493Z","response_time":117,"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":[],"created_at":"2025-05-13T16:17:14.351Z","updated_at":"2026-01-20T16:25:12.669Z","avatar_url":"https://github.com/evmos.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# x/vesting\n\n## Overview\n\nThis page presents comprehensive details regarding the Vesting Module offered by Evmos. The functionality of this module empowers users to transform their accounts into clawback vesting accounts, allowing the reception of tokens from a designated funder. Additionally, it provides the funder with the capability to stipulate specific vesting and locking schedules, and to clawback unvested tokens.\nThis module is a copy of the original [x/vesting](https://github.com/evmos/evmos/tree/main/x/vesting) module and has been adapted to not rely on Evmos's custom [EthAccount](https://github.com/evmos/evmos/blob/6fda63866715b248bbd03c13461163a58de48c09/proto/ethermint/types/v1/account.proto#L14).\nThis allows the module to be compatible with other non-EVM Cosmos SDK chains.\n\nVesting accounts, defined in the `x/vesting` module, are a new type implementing the Cosmos SDK [`VestingAccount` interface](https://docs.cosmos.network/main/modules/auth/vesting#vesting-account-types).\nThis new type allows users to convert their account into a clawback vesting account.\nThis account type can receive tokens from a particular address (_funder_),\nwhich are then released according to the defined lockup and vesting schedules.\nThe funder of the account can claw back unvested tokens at any time.\nThe clawback can also be enforced through a governance proposal for any account that opts in to this when converting to a vesting account.\n\nFor a complete description of the vesting functionalities,\nplease visit the corresponding page in the [docs](https://docs.evmos.org/protocol/modules/vesting#state-transitions).\n\n## Implementing the Module\n\nThe shown example demonstrates how to include the [evmos/vesting](https://github.com/evmos/vesting) module in the Stride chain.\nBecause each chain may have specific characteristics,\nthe following steps might not be universally applicable,\nand other modifications may be necessary before the module can be used correctly.\n\n### `app.go` Wiring\n\n- Register the [governance clawback](https://github.com/Vvaradinov/stride/blob/ec1df0f0cfc377eda48c84263b3925ca91b4731f/app/app.go#L181) proposal handler in the `govProposalHandlers`.\n- Include the vesting module’s `[AppModuleBasic].(https://github.com/Vvaradinov/stride/blob/ec1df0f0cfc377eda48c84263b3925ca91b4731f/app/app.go#L227)` into the chain’s `ModuleBasics`.\n- Include the `VestingKeeper` in the [`StrideApp`].(https://github.com/Vvaradinov/stride/blob/ec1df0f0cfc377eda48c84263b3925ca91b4731f/app/app.go#L282) struct.\n- Include the vesting module’s `StoreKey` into the the `KVStoreKey` map.\n- Initialize the `[VestingKeeper].(https://github.com/Vvaradinov/stride/blob/ec1df0f0cfc377eda48c84263b3925ca91b4731f/app/app.go#L618)`.\n- Add the new `AppModule`.\n\n```go\nevmosvesting.NewAppModule(app.VestingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper),\n```\n\n- Include the vesting module in the `BeginBlocker` and `EndBlocker` stack.\n\n### Enable `from` flag for the CLI\n\n- Enable the `from` [flag in the CLI](https://github.com/Stride-Labs/stride/blob/405fb9c961e537619092dc51cc70107aedf03ba4/cmd/strided/root.go#L268) to be able to specify the sender key.\n\n### `AnteHandler` for Locked and Unvested tokens\n\n- The Vesting `AnteHandler` is included in [the repo here](https://github.com/evmos/vesting/blob/main/ante/vesting.go). In order to use it, Stride should add the `StakingKeeper` definition to the `HandlerOptions` struct:\n\n```go\n// HandlerOptions are the options required for constructing a default SDK AnteHandler.\ntype HandlerOptions struct {\n    AccountKeeper          AccountKeeper\n    BankKeeper             types.BankKeeper\n    ExtensionOptionChecker ExtensionOptionChecker\n    FeegrantKeeper         FeegrantKeeper\n    SignModeHandler        authsigning.SignModeHandler\n    SigGasConsumer         func(meter sdk.GasMeter, sig signing.SignatureV2, params types.Params) error\n    TxFeeChecker           TxFeeChecker\n}\n```\n\n- The `AnteHandler` requires a binary codec to be included the `ante_handlers.go` `HandlerOptions` struct:\n\n```go\n// HandlerOptions extend the SDK's AnteHandler options by requiring the IBC\n// channel keeper.\ntype HandlerOptions struct {\n    ante.HandlerOptions\n    Cdc            codec.BinaryCodec // Add this here\n    IBCKeeper      *ibckeeper.Keeper\n    ConsumerKeeper ccvconsumerkeeper.Keeper\n}\n```\n\n- Lastly, all expected keepers interfaces should have the required functions, like the `BankKeeper` needs the `GetBalance` function.\n\n## Licensing\n\n### SPDX Identifier\n\nThe following header including a license identifier in SPDX short form has been added to all ENCL-1.0 files:\n\n```go\n// Copyright Tharsis Labs Ltd.(Evmos)\n// SPDX-License-Identifier:ENCL-1.0(https://github.com/evmos/evmos/blob/main/LICENSE)\n```\n\nExempted files contain the following SPDX ID:\n\n```go\n// Copyright Tharsis Labs Ltd.(Evmos)\n// SPDX-License-Identifier:LGPL-3.0-only\n```\n\n### License FAQ\n\nFind below an overview of the Permissions and Limitations of the Evmos Non-Commercial License 1.0.\nFor more information, check out the full ENCL-1.0 FAQ [here](/LICENSE_FAQ.md).\n\n| Permissions                                                                                                                                                                  | Prohibited                                                                 |\n| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |\n| - Private Use, including distribution and modification\u003cbr /\u003e- Commercial use on designated blockchains\u003cbr /\u003e- Commercial use with Evmos permit (to be separately negotiated) | - Commercial use, other than on designated blockchains, without Evmos permit |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevmos%2Fvesting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevmos%2Fvesting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevmos%2Fvesting/lists"}