Syrup Pools
Contract info
Contract name: pancake::smart_chef
Contract address:
fd1d8a523f1be89277ac0787ae3469312667e3d0b3f75a5f01bfc95530a2dc91::smart_chef
Admin multi sig address: 0xd97268666bad31a7299cc80c1bca26face32718630c5498544fe8e9bcc593d74
Types
| Name | Type | Description |
|---|---|---|
| StakeToken | type address | The coin type address of stake token in pool. |
| RewardToken | type address | The coin type address of reward token in pool. |
| UID | type address | The UID of the pool, can be found in here. |
Resources
SmartChefMetadata
The metadata of the module.
struct SmartChefMetadata has key {
signer_cap: account::SignerCapability,
admin: address,
uid: u64,
create_pool_event: EventHandle<CreatePoolEvent>
}| Name | Type | Description |
|---|---|---|
| signer_cap | account::SignerCapablity | The signer capability of the resource account. |
| admin | address | The admin address of the module. |
| uid | u64 | The latest id of the latest pool. |
| create_pool_event | EventHandle | The event emit when a new pool is created |
PoolInfo
The information of each pool.
struct PoolInfo<phantom StakeToken, phantom RewardToken, phantom UID> has key {
total_staked_token: coin::Coin<StakeToken>,
total_reward_token: coin::Coin<RewardToken>,
reward_per_second: u64,
start_timestamp: u64,
end_timestamp: u64,
last_reward_timestamp: u64,
seconds_for_user_limit: u64,
pool_limit_per_user: u64,
acc_token_per_share: u128,
precision_factor: u128,
emergency_withdraw_reward_event: EventHandle<EmergencyWithdrawRewardEvent<StakeToken, RewardToken, UID>>,
stop_reward_event: EventHandle<StopRewardEvent<StakeToken, RewardToken, UID>>,
new_pool_limit_event: EventHandle<NewPoolLimitEvent<StakeToken, RewardToken, UID>>,
new_reward_per_second_event: EventHandle<NewRewardPerSecondEvent<StakeToken, RewardToken, UID>>,
new_start_and_end_timestamp_event: EventHandle<NewStartAndEndTimestampEvent<StakeToken, RewardToken, UID>>,
}| Name | Type | Description |
|---|---|---|
| total_staked_token | coin::Coin | The total amount of staked token in the pool. |
| total_reward_token | coin::Coin | The total amount of reward token in the pool. |
| reward_per_second | u64 | The reward emitting out per second. |
| start_timestamp | u64 | The start time in seconds. |
| end_timestamp | u64 | The end time in seconds. |
| last_reward_timestamp | u64 | The latest time that reward was distributed. |
| seconds_for_user_limit | u64 | The time that user limit will apply after the start time. |
| pool_limit_per_user | u64 | The amount of token allow to be stake within the seconds_for_user_limit. |
| acc_token_per_share | u128 | The accumulative token per share. |
| precision_factor | u128 | The precision factor used for calculation. |
| emergency_withdraw_reward_event | EventHandle | The event emit when the reward is withdrawn. |
| stop_reward_event | EventHandle | The event emit when the admin stop reward. |
| new_pool_limit_event | EventHandle | The event emit when the admin update the new pool limit. |
| new_reward_per_second_event | EventHandle | The event emit when the admin update the reward per second of the pool. |
| new_start_and_end_timestamp_event | EventHandle | The event emit when the admin update the start or end timestamp of the pool. |
Entry Functions
Deposit
Deposit the stake token into the pool. It will also transfer reward token to the user if there's any.
public entry fun deposit<StakeToken, RewardToken, UID>(
account: &signer,
amount: u64
)| Name | Type | Description |
|---|---|---|
| account | signer | The sender's signer when calling the function. |
| amount | u64 | The amount of stake token that will be deposited. |
Withdraw
Withdraw the stake token from the pool. It will also transfer reward token to the user if there's any.
public entry fun withdraw<StakeToken, RewardToken, UID>(
account: &signer,
amount: u64,
)| Name | Type | Description |
|---|---|---|
| account | signer | The sender's signer when calling the function. |
| amount | u64 | The amount of stake token that will be withdrawn. |
Emergency Withdraw
Withdraw the stake token from the pool regardless of any rewards.
public entry fun emergency_withdraw<StakeToken, RewardToken, UID>(account: &signer)| Name | Type | Description |
|---|---|---|
| account | signer | The sender's signer when calling the function. |
Public Functions
Get Pool Info
Get the pool information.
public fun get_pool_info<StakeToken, RewardToken, UID>(): (u64, u64, u64, u64, u64, u64, u64)Return Values
| Position | Type | Description |
|---|---|---|
| 0 | u64 | The total amount of staked token in the pool. |
| 1 | u64 | The total amount of reward token in the pool. |
| 2 | u64 | The reward emitting out per second. |
| 3 | u64 | The start time in seconds. |
| 4 | u64 | The end time in seconds. |
| 5 | u64 | The time that user limit will apply after the start time. |
| 6 | u64 | The amount of token allow to be stake within the seconds_for_user_limit. |
Get User Stake Amount
Get the user stake amount in the pool.
public fun get_user_stake_amount<StakeToken, RewardToken, UID>(account: address)Input Values
| Name | Type | Description |
|---|---|---|
| account | address | The depositor address. |
Return Values
| Type | Description |
|---|---|
u64 | The total amount of depositor staked token in the pool. |
Get Pending Reward
Get the pending reward of the depositor in the pool.
public fun get_pending_reward<StakeToken, RewardToken, UID>(account: address): u64Input Values
| Name | Type | Description |
|---|---|---|
| account | address | The depositor address. |
Return Values
| Type | Description |
|---|---|
u64 | The amount of pending reward token in the pool that depositor is eligible to claim. |