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

Lockable Jetton Wallet #121

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
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
63 changes: 63 additions & 0 deletions text/0000-lockable-jetton-wallet.md

This comment was marked as spam.

This comment was marked as spam.

Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
- **TEP**: [0](https://github.com/ton-blockchain/TEPs/pull/0) *(don't change)*
- **title**: Lockable Jettons Wallets
- **status**: Draft
- **type**: Contract Interface
- **authors**: [KuznetsovNikita](https://github.com/KuznetsovNikita)
- **created**: 13.04.2023
- **replaces**: -
- **replaced by**: -

# Summary

This proposal suggests extending the standard Jetton Wallet by adding the option `get_locked_balance` get method.

# Motivation

New contracts have may want to disable jetton transfer until a time in the future. For this case, the Jetton Wallet should show zero balance to not affect old services and add a new get method to allow to get a locked balance and expiration date.

The standard may use for:
1. Jetton DAO contract may want to disable jetton transfer until voting is in progress.
2. Jetton Vesting contract may want to release tokens in the future.


# Guide

Upon calling `get_locked_balance` get method Jetton Wallet should respond with integer jetton balance, integer jetton locked balance, and expiration date in integer UNIX epoch seconds format.

# Specification

## New Jetton Master contracts
An example of the implementation jetton wallet code can be found [here](https://github.com/OpenProduct/jetton-dao-contracts/blob/ece785f82e07a7833194992cfc0e2fa1a690b524/contracts/jetton_wallet.func#L367)


Jetton Wallet should implement the get method:

```
(int, int, int) get_locked_balance() method_id {
(int balance, slice owner_address,
slice jetton_master_address, cell jetton_wallet_code,
int locked, int lock_expiration,
cell vote_keeper_code) = load_data();
return (balance, locked, lock_expiration);
}
```

# Drawbacks

The standard implies single expiration date single locked balance.

# Rationale and alternatives

This design allows us to show balance and locked balance in a user-friendly and clear format in blockchain explorers and wallets.

# Prior art

-

# Unresolved questions

-

# Future possibilities

-