add_new_farm

An entrypoint that adds a new farm with the specified parameters. Also setups share token default metadata. Required amount of reward token will be transferred from an admin to the contract (allowance is required).

Call parameters

type fa12_type          is address

type fa2_type           is [@layout:comb] record [
  token                   : address;
  id                      : token_id_type;
]

type token_type         is
  FA12                    of fa12_type
| FA2                     of fa2_type

type fees_type          is [@layout:comb] record [
  harvest_fee             : nat;
  withdrawal_fee          : nat;
]

type stake_params_type  is [@layout:comb] record [
  staked_token            : token_type;
  is_v1_lp                : bool;
]

type add_new_farm_type  is [@layout:comb] record [
  fees                    : fees_type;
  stake_params            : stake_params_type;
  token_info              : map(string, bytes);
  reward_token            : token_type;
  paused                  : bool;
  timelock                : nat;
  start_time              : timestamp;
  end_time                : timestamp;
  reward_per_second       : nat;
]

fees_type

Field
Type
Hint
Description

harvest_fee

nat

Float value multiplied by 1e+16

Fee that applies in time of rewards claiming

withdrawal_fee

nat

Float value multiplied by 1e+16

Fee that applies in time of withdrawing (unstaking) tokens only in farms with timelock

stake_params_type

Field
Type
Description

staked_token

token_type

FA1.2/FA2 staked token

is_v1_lp

bool

Flag that indicates: QuipuSwap V1 LP token staked or not

add_new_farm_type

Field
Type
Description

fees

Fees that applies to the farming

stake_params

Staking parameters

token_info

map(string, bytes)

Mapping of token's keys to token's info

reward_token

token_type

FA1.2/FA2 reward token

paused

bool

Flag that indicates: farm is paused or not

timelock

nat

Timelock in seconds (0 for farms without timelock)

start_time

timestamp

Farm's start time

end_time

timestamp

Farm's end time

reward_per_second

nat

Reward per second

Usage

import { MichelsonMap } from "@taquito/michelson-encoder";

const tFarmAddress = "KT1...";
const lifetime = 10510000; // ~4 months
const params = {
    fees: {
        harvest_fee: 0.05 * 10 ** 16, // 0.05%
        withdrawal_fee: 0.25 * 10 ** 16, // 0.25%
    },
    stake_params: {
        staked_token: {
            fA2: {
                token: "KT1...",
                id: 0,
            },
        },
        is_v1_lp: true, // or false
    },
    token_info: MichelsonMap.fromLiteral({
        name: Buffer.from("wWBTC/TEZ FA2 Staking Share").toString("hex"),
        symbol: Buffer.from("QSHR").toString("hex"),
        decimals: Buffer.from("6").toString("hex"),
    }),
    reward_token: {
      fA12: "KT1...",
    },
    paused: false, // or true
    timelock: 0, // or positive number
    start_time: String(Math.ceil(Date.now() / 1000)),
    end_time: String(Math.floor(Date.now() / 1000) + lifetime + 1),
    reward_per_second: 1169098400000000,
};
const tFarm = await tezos.contract.at(tFarmAddress);
const operation = await tFarm.methodsObject.add_new_farm(params).send();

await operation.confirmation();

Errors

  • Not-admin - sender of the transaction is not current administrator.

  • TFarm/wrong-end-time - end time of a farming is less that or equal to start time.

  • TFarm/wrong-timelock - timelock is greater than farming's lifetime.

Last updated