Skip to content

vesting revoke returns unvested tokens to current admin, not original funder #157

Description

@ritaifeoluwa

Description

The vesting wallet's revoke function transfers unvested tokens back to admin. However, if the admin address has changed via transfer_admin before revocation, the tokens go to the new admin, not the original admin who funded the vesting.

Current behavior

let admin = get_admin(&env);
admin.require_auth();
// ...
token::TokenClient::new(&env, &get_token(&env)).transfer(
    &env.current_contract_address(),
    &admin,  // This is the current admin, not the original funder
    &unvested,
);

Expected behavior

Consider storing the original funder address separately and returning unvested tokens to them on revocation.

Why this matters

The original funder may expect their tokens back, not the new admin. This could be a legal/compliance issue.

Labels

correctness, hard

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave programcorrectnessLogic correctness and invariant enforcementhardRequires deep domain knowledge and careful design — not a quick fix

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions