Skip to content

Syrup Pools

Contract info

Contract name: pancake::smart_chef
Contract address:

fd1d8a523f1be89277ac0787ae3469312667e3d0b3f75a5f01bfc95530a2dc91::smart_chef

Admin multi sig address: 0xd97268666bad31a7299cc80c1bca26face32718630c5498544fe8e9bcc593d74

Aptos Explorer

Types

NameTypeDescription
StakeTokentype addressThe coin type address of stake token in pool.
RewardTokentype addressThe coin type address of reward token in pool.
UIDtype addressThe 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>
}
NameTypeDescription
signer_capaccount::SignerCapablityThe signer capability of the resource account.
adminaddressThe admin address of the module.
uidu64The latest id of the latest pool.
create_pool_eventEventHandleThe 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>>,
}
NameTypeDescription
total_staked_tokencoin::CoinThe total amount of staked token in the pool.
total_reward_tokencoin::CoinThe total amount of reward token in the pool.
reward_per_secondu64The reward emitting out per second.
start_timestampu64The start time in seconds.
end_timestampu64The end time in seconds.
last_reward_timestampu64The latest time that reward was distributed.
seconds_for_user_limitu64The time that user limit will apply after the start time.
pool_limit_per_useru64The amount of token allow to be stake within the seconds_for_user_limit.
acc_token_per_shareu128The accumulative token per share.
precision_factoru128The precision factor used for calculation.
emergency_withdraw_reward_eventEventHandleThe event emit when the reward is withdrawn.
stop_reward_eventEventHandleThe event emit when the admin stop reward.
new_pool_limit_eventEventHandleThe event emit when the admin update the new pool limit.
new_reward_per_second_eventEventHandleThe event emit when the admin update the reward per second of the pool.
new_start_and_end_timestamp_eventEventHandleThe 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
)
NameTypeDescription
accountsignerThe sender's signer when calling the function.
amountu64The 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,
)
NameTypeDescription
accountsignerThe sender's signer when calling the function.
amountu64The 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)
NameTypeDescription
accountsignerThe 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

PositionTypeDescription
0u64The total amount of staked token in the pool.
1u64The total amount of reward token in the pool.
2u64The reward emitting out per second.
3u64The start time in seconds.
4u64The end time in seconds.
5u64The time that user limit will apply after the start time.
6u64The 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

NameTypeDescription
accountaddressThe depositor address.

Return Values

TypeDescription
u64The 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

NameTypeDescription
accountaddressThe depositor address.

Return Values

TypeDescription
u64The amount of pending reward token in the pool that depositor is eligible to claim.

Audit

Zellic's PancakeSwap Aptos Syrup Pool security audit