params of liquidateParams -> (list(op), storage upd)

The liquidation process occurs when another user repays part of the outstanding amount of the borrower and thus purchases his collateral at a discount. To do this, user call liquidate method.

The yToken contract expects that underlying token infos of collateralToken and all borrowed by borrower before tokenIds are updated by calling PriceFeed.getPrice and updateInterest in the same block before this contract method


type liquidateParams    is [@layout:comb] record [
  borrowToken             : nat;
  collateralToken         : nat;
  borrower                : address;
  amount                  : nat;



yToken identifier of borrow token market



yToken identifier of collateral token market



address of borrower to liquidate



amount of yTokens borrow to pay with max amount is less or equal borrow * closeFactor


const collateralTokenId = 0; // or new BigNumber(0) or "0"
const borrowTokenIdToClose = 2;
const amount = 10_000_000; // amount of collateral.
const borrower = "tz...";
const yupana = await;
const proxy = await;
const borrowedTokenIds = [1, 2];
const updBorrowed = borrowedTokenIds.reduce(
  (batch, tokenId) => {
        kind: "transaction",
        kind: "transaction",
      return batch;
const batchArray = [
        kind: "transaction",
        kind: "transaction",
        kind: "transaction",
          .liquidate(borrowTokenIdToClose, collateralTokenId, borrower, amount)
const batch = await tezos.wallet.batch(batchArray);
const operation = await batch.send();
await operation.confirmation();


  • yToken/borrower-cannot-be-liquidator - borrower can't be liquidator

  • yToken/liquidation-not-achieved - this debt is not in "liquidation" case.

  • yToken/debt-is-zero - user's debt is zero.

  • yToken/too-much-repay - too many tokens sent to repay.

  • underflow/borrowerAccount.borrow - not enough borrow of borrower to liquidate with amount wanted by user.

  • underflow/totalBorrowsF - total borrows less than amount.

  • yToken/no-such-collateral - borrower doesn't has collateral in token with collateralToken

  • yToken/seize/not-enough-tokens - seize tokens greater than borrower balance.

  • token/cant-get-contract-token - FA12 token contract address does not contain transfer entrypoint from FA12 interface.

  • token/cant-get-contract-fa2-token - FA2 token contract address does not contain transfer entrypoint from FA2 interface.

  • underflow/liquidity - reserves - liquidity more than reserves.

  • yToken/amount-is-zero - passed zero amount.

  • ceil-div-error - division of two numbers fails.

  • yToken/need-update - token price and interest not updated (see warning above)

  • yToken/borrow-id-undefined - borrow token identifier is not assigned to any known yTokens.

  • yToken/collateral-id-undefined - collateral token identifier is not assigned to any known yTokens.

Last updated