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): u64
Input 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. |