Alpaca Finance
Português
Português
  • 🧭Navegação
  • 🦙Alpaca Finance
  • Nosso protocolo
    • 🏆Nossos Produtos
    • 📈Como participar
      • Introdução às Seis Estratégias Simples para Ganhar
      • Estratégia 1: Hold um token enquanto ganha altos rendimentos com baixo risco; chamado: Lend e Stake
      • Estratégia 2: Hold um par de token para ter rendimentos reinvestidos automaticamente sem alavancagem
      • Estratégia 3: turbine seus rendimentos de Stablecoin
      • Estratégia 4: multiplique os ganhos em um mercado em alta
      • Estratégia 5: Yield Farm com Lucro num Mercado em Queda
      • Estratégia 6: Multiplique os ganhos em qualquer mercado por meio de hedge
    • 🗺️ Roadmap
    • 🔒Segurança
    • 📃Transparência (Auditorias e Contratos)
    • 🔗Links
    • 📰Cobertura na Mídia
    • ♥️Caridade
    • 🌐Parâmetros Globais do Protocolo
      • ⏫Parâmetros do Yield Farming Alavancado
      • 📈AF1.0 Modelo da Taxa de Juros
      • 📔Parâmetros da AUSD
      • 📖Parâmetros dos Cofres Automatizados
      • 📗Parâmetros da Exchange de Futuros Perpétuos
      • 📙Parâmetros da AF2.0
  • Tokenomics
    • 📀ALPACA Token
    • 💰ibTokens
    • ⚖️Alocações das pools
    • 🔥Prova da queima
      • Detalhes das fontes de queima
  • Lending
    • 🏦Introdução para o Lending
    • ❗Riscos
    • ⏭️Guia Passo a Passo
      • Lend e Stake
      • Saque
  • Yield Farming Alavancado
    • 🏦Introdução para o Yield Farming Alavancado
    • 🏊Parâmetros específicos das pools
      • PancakeSwap Pools
      • Mdex Pools
      • Biswap Pools
      • SpookySwap Pools
      • WaultSwap Pools (Descontinuadas)
    • 🧮Mecânica do Yield Farming Alavancado
      • PancakeSwap Farms
      • Mdex Farms
      • Biswap Farms
      • SpookySwap Farms
      • WaultSwap Farms
    • 🌊AF1.0 Liquidação
    • ❗Riscos
    • ⏭️Guia Passo a Passo
      • Abrir uma Posição Alavancada de Yield Farm
      • Ajustar uma posição de yield farming alavancada
      • Fechar/Fechar parcialmente uma Posição Alavancada de Yield Farm
      • Reivindicar Recompensas
      • Liquidar Posições
  • Cofres Automatizados
    • ⚙️Introdução aos Cofres Automatizados
      • Estratégia de Mercado Neutro
      • Estratégia dos Cofres de Poupança
    • 🧮Mecânica de Hedging
    • ⏬Reduzindo a Mecânica de Alavancagem do Cofre
    • 🔏Cofre Automatizado Privado
    • 📈Resultados dos Backtest
    • ❗Riscos
    • ⏭️Guias Passo a Passo
      • Investir nos Cofres Automatizados
      • Veja Suas Posições nos Cofres Automatizados
      • Saque dos seus Cofres Automatizados
  • AUSD
    • 💵Introdução à AUSD
    • 💹Como participar
    • 💦AUSD Liquidação
    • 〰️Módulo de Estabilidade de Preços AUSD
    • ❗Riscos
    • ⏭️Guia Passo a Passo
      • Abrir uma posição AUSD
      • Ajustar uma Posição AUSD
      • Fechar/Fechar Parcialmente uma Posição AUSD
      • Adicionar/remover tokens AUSD-3EPS LP
  • Exchange de Futuros Perpétuos
    • 🔮Introdução à Exchange de Futuros Perpétuos
      • Traders
      • Provedores de Liquidez
    • 🚀Plano de Lançamento
    • 💲Programa de desconto de taxa de negociação
    • 🎁Programa de Referência
    • ❗Riscos
    • ⏭️Guia Passo a Passo
      • Abra uma posição alavancada
      • Gerenciar uma posição alavancada
      • Fechar uma posição alavancada
      • Trocar Ativos
      • Invista e faça Stake do token ALP
      • Retire do stake e saque o token LP
  • Alpaca Finance 2.0
    • 💎Introdução para Alpaca Finance 2.0
      • Money Market
      • Yield Farm Alavancado
    • 🚀Plano de Lançamento
    • ⭐Recompensas de incentivo
    • 🌊AF2.0 Liquidação
    • ❗Riscos
    • ⏭️Guia Passo a Passo
      • Depósito
      • Empréstimo (Borrow)
      • Devolver o empréstimo
      • Saque
      • Transferência entre contas
      • Estratégias de Looping
  • Governança
    • 🗳️Cofre de Governança
    • 🍃Grazing Range (Novo)
    • ⚡Saque Antecipado
    • 🔎Detalhes das fontes de receita para a governança
    • 📝Discussão da Governança e Votação
    • 🗒️Detalhes das AIP
      • AIP-1: Tratamento de recompensas ITAM
      • AIP-2: Cofre de Governança na Fantom
      • AIP-3: Penalidade na retirada antecipada do Cofre de Governança
      • AIP-4.1: Tratamento de uma dívida incobrável recente na posição da WaultSwap
      • AIP-4.2: Solução para eliminar os riscos de dívidas incobráveis das posições restantes da Waultswap
      • AIP-5: Ajuste do modelo de juros
      • AIP-6.1: Limitando o acesso aos Cofres Automatizados
      • AIP-6.2 Limitando o acesso aos Cofres Automatizados
      • AIP-7: Tratamento de uma dívida incobrável recente na Fantom Network
      • AIP-8.1: Aumentar a utilidade da AUSD fornecendo acesso aos Cofres Automatizados de alta alavancagem
      • AIP-8.2: Aumentar a utilidade da AUSD fornecendo acesso aos Cofres Automatizados de alta alavancagem
      • AIP-9: Depositar Fundos do Tesouro de Liquidação em Pools de Lend enquanto aguardam a recompra
      • AIP-10: Otimizando ainda mais a inclinação da taxa de juros dos empréstimos
      • AIP-11: Ajuste da taxa de estabilidade para AUSD para ajudar a restaurar a paridade
      • AIP-12: Tratamento da inadimplência do recente depeg do stkBNB
      • AIP-13: Remoção do requisito xALPACA para acessar cofres automatizados de alta alavancagem
      • AIP-14: Fechar as posições LYF no pool stkBNB-BNB para evitar qualquer possível dívida futura
      • AIP-15.1: Incentivos para os novos produtos(Perp, AF2.0)
      • AIP-15.2: Método de distribuição - Incentivos para os novos produtos (Perp, AF2.0)
      • AIP-15.3: Valor de incentivos para Perp - Incentivos para o novo produto (Perp)
      • AIP-15.4: Valor dos incentivos para AF2.0 - Incentivos para o novo produto (AF2.0)
      • AIP-15.5: Fontes de incentivos - Incentivos para produtos futuros (Perp, AF2.0):
      • AIP-16: Ajustando a taxa de juros máxima da Inclinação 3
      • AIP-17: Decisão sobre os tokens ALPACA extras dos incentivos da AIP-15
      • AIP-18: Desativando o suporte do yield farming alavancado para pools MDEX
      • AIP-19: Implementar votação blindada
      • AIP-20: Alinhamento da estrutura de taxas de desempenho de empréstimo AF1.0 com AF2.0
      • AIP-21.1: Ajustando o esquema de pagamento de dívidas incobráveis do evento de depeg do stkBNB
      • AIP-21.2: Ajustando o esquema de pagamento de dívidas incobráveis do evento de depeg do stkBNB
      • AIP-22: Orçamento de marketing pago para Alperp e AF2.0
      • AIP-23: Desativação do suporte de yield farming alavancado para TUSD
    • ⏭️Guia Passo a Passo
      • Bloqueie ALPACA no Cofre de Governança
      • Bloqueie mais ALPACA/Estenda o tempo
      • Reivindique Recompensas do Cofre de Governança
      • Adicionar tokens personalizados à sua MetaMask
      • Ponte de tokens ALPACA entre BNB Chain e Fantom
      • Votação nas Propostas de Melhoria da Alpaca (AIP)
      • Saque Antecipado de ALPACA do Cofre de Governança
      • Saque ALPACA do Cofre de Governança na FANTOM para a BNB Chain
  • Alpies
    • 🌗Introdução para os Alpies
    • 🧑‍🏫Ponte para os Alpies
      • Ponte para os Alpies da BNB Chain para a ETH
      • Ponte para os Alpies da ETH para a BNB Chain
    • ⚡Alavancagem Impulsionada
  • Entre para o Rebanho (Alpacareers)
    • 🚀Seção de empregos
  • Central de Ajuda
  • 👩‍🏫 Academia Alpaca
    • Lição 0 - Como comprar ALPACA e começar a ganhar rendimentos, guia para iniciantes (Lending+Staking)
    • Lição 1 - Caso de uso exclusivo da Alpaca Finance - Shorting com lucro
    • Lição 2 - Introdução para Hedging com empréstimos duplos
    • Lição 3 - Risco de liquidação no yield farming alavancado
    • Lição 4 - Abrir/fechar posições com 0 taxas de troca
    • Lição 5 - A verdade sobre a perda impermanente e entendimentos incorretos comuns
    • Exames de proficiência (ganhe NFTs)
  • ❓Perguntas frequentes (FAQ)
  • 🧰Ferramentas úteis
  • 📘Terminologias e metodologia de cálculo
    • 🧮Cálculo do APY
    • 📈Cálculo de Lucros/Perdas
  • ⚠️Mensagens de erro comuns
  • 💸Oportunidades de ganho de ALPACA com terceiros
  • Desenvolvedores
    • 🐞Programa de Recompensas para Bugs
    • 🎛️Configurações do Protocolo
    • 💻 Integrando com a Alpaca Finance
    • 🏛️AF2.0 Guia de Recompra
    • ⚡AF2.0 Guia para Flashloan
  • Produtos Antigos
    • 🌿Grazing Range (Antigo)
    • 💪Stronk Vault
Powered by GitBook
On this page
  • Integrando com a Alpaca Finance
  • Estatísticas Importantes
  • Integração do contrato inteligente
  • Lending
  • Cálculo de Token de Rolagem de Juros (ibToken)
  • Staking
  • Testando com a Alpaca Finance

Was this helpful?

  1. Desenvolvedores

💻 Integrando com a Alpaca Finance

PreviousConfigurações do ProtocoloNextAF2.0 Guia de Recompra

Last updated 1 year ago

Was this helpful?

Integrando com a Alpaca Finance

A Alpaca Finance permite que aplicativos DeFi e usuários finais se integrem com seu protocolo principal. O objetivo deste documento é auxiliar os desenvolvedores na integração com nosso protocolo para garantir a segurança geral do ecossistema.

Se você quiser primeiro ter uma melhor compreensão do nosso protocolo, você pode revisar a documentação do nosso contrato .

Estatísticas Importantes

As APIs públicas a seguir contêm todas as informações necessárias usadas em nosso frontend, portanto, você pode usá-las como fontes que serão sincronizadas automaticamente conosco.

AF1.0:

  • Para BNB Chain:

  • Para FANTOM:

AF2.0:

  • Para BNB Chain:

Exemplo de informações incluídas nas APIs:

  1. Todas as pools de Lend e suas estatísticas, por exemplo, APR, TVL, Fornecimento e Empréstimo, preço do ibToken

  2. Todos os workers (farm) e suas estatísticas, por exemplo, APR, TVL

  3. Todos os cofres automatizados e suas estatísticas, por exemplo, APY, AV Share Price

Integração do contrato inteligente

Esta seção descreve como integrar com a Alpaca Finance diretamente de um contrato inteligente.

Lending

A Alpaca Finance permite que os usuários obtenham receita de juros sobre ativos criptográficos, depositando-os em nossos cofres de depósito. Esses ativos são então oferecidos aos farmers para alavancar suas posições. Qualquer contrato inteligente compatível com EVM e implantado na BNB Chain pode ser integrado ao protocolo de empréstimo da Alpaca Finance.

Para depositar o token base nos cofres da Alpaca Finance, a lista de cofres disponíveis e seus tokens básicos correspondentes deve ser adquirida primeiro.

Antes que um depósito possa ser feito em um cofre, o contrato inteligente que atua como um depositante deve primeiro aprovar o subsídio de gastos do token base a ser depositado. Isso fornecerá ao Contrato Inteligente da Alpaca a capacidade de obter tokens do remetente.

// JavaScript
import { ERC20 } from '../typechain/ERC20'
import { MaxUint256 } from '@ethersproject/constants'

...

const yourSmartContractAddress = 'xxx'
tokenERC20.approve(yourSmartContractAddress, MaxUint256);

O snippet de código JavaScript acima é um fluxo de trabalho simplificado sobre como aprovar o subsídio de gastos de token com o valor máximo possível. Observe que o uso de MaxUint256 pode apresentar risco de segurança, o uso da quantidade exata de token inserida pelo usuário é recomendado.

Para realizar um depósito, chame o método deposit e especifique o valor do depósito no parâmetro amountToken . O tipo de dado doo amountToken é uint256 e este parâmetro deve ser formatado para os decimais do token de depósito (por exemplo, o BNB usa 18 decimais, 1 BNB =10000000000000000000 ou 1 * 1e18). Para o caso em que o token de depósito é BNB, o cofre tratará o empacotamento do BNB em wBNB, mas a transação deve incluir BNB suficiente enviado como o token nativo.

// Solidity
address vaultContractAddress = '0xd7D069493685A581d27824Fc46EdA46B7EfC0063'; // BNB Vault
if (msg.value == 0) { // if no native token is sent, then it is a ERC20/BEP20 token deposit
	IERC20(tokenAddess).safeTransferFrom(address(msg.sender), address(this), amountToken);
}
// Allow transfer to vault
SafeToken.safeApprove(tokenAddess, vaultContractAddress, amountToken);
// Deposit to vault
IVault(vaultContractAddress).deposit(amountToken);

Os juros do empréstimo reverterão para o ibTokens. Para realizar os ganhos do empréstimo, o ibTokens deve ser retirado, resgatando o token base + juros cobrados. Você notará que o preço de troca do ibToken será mais alto na retirada, o que indica que os juros já foram acumulados. Portanto, você receberá tokens base adicionais ao sacar.

Para resgatar os tokens base do cofre, a quantidade de ibTokens a ser retirada deve ser fornecida ao método withdraw no contrato Vault .

// Solidity
address vaultContractAddress = '0xd7D069493685A581d27824Fc46EdA46B7EfC0063'; // BNB Vault
IVault(vaultContractAddress).withdraw(ibTokenAmount);

Os tokens base serão então devolvidos ao chamador. Se o token retornado for BNB, o contrato do Vault irá desembrulhar o WBNB de volta a BNB.

Cálculo de Token de Rolagem de Juros (ibToken)

Um token de suporte de juros (ibToken) é o token que representa a ação do cofre do depositante. O ibTokens acumulará juros recebidos do empréstimo ao longo do tempo. Qualquer protocolo DeFi que deseje utilizar os cofres da Alpaca Finance deve compreender e implementar o cálculo do ibTokens corretamente para refletir as cotas reais dos usuários do cofre.

Portanto, a proporção entre um ibToken e o token de base real será apenas de 1: 1 quando o cofre for aberto pela primeira vez, após o qual o valor do ibToken continuará a aumentar à medida que os juros do empréstimo acumulam juros (o valor de um ibToken em relação ao token de base apenas se move para cima. O valor não pode diminuir). Por exemplo, vamos supor o preço: 1 ibBNB = 1.0292 BNB que significa que um depósito de 1,0292 BNB receberá 1 ibBNB em troca. Por outro lado, resgatar 1 ibBNB obterá 1.0292 BNB em troca. O BNB adicional ao resgatar ibBNB são os juros acumulados.

Além disso, embora o Alpaca não funcione com empréstimos instantâneos, em um cofre externo que não seja da Alpaca pode haver o risco de manipulação de preços do ibToken em um ataque, como um ataque de empréstimo instantâneo. Se não estiver preparado, o preço de um ibToken pode ser drasticamente alterado dentro do escopo da transação de um invasor. É por isso que confiar apenas no preço ibToken do cálculo do contrato inteligente não é suficiente. Recomendamos que o projeto tenha um oráculo de preços alimentando a proporção atual de ibTokens versus seu token de base para evitar o ataque mencionado acima.

Portanto, mostraremos a maneira mais segura e correta de calcular os preços dos ibTokens.

Direct calculation from smart contract

Calcular o preço do token ibToken do contrato inteligente é a maneira mais simples, mas para robustez, não deve ser o único método que você utiliza.

// Solidity
address vaultContractAddress = '0xd7D069493685A581d27824Fc46EdA46B7EfC0063'; // BNB Vault
IVault vault = IVault(vaultContractAddress);
uint256 ibTokenAmount = ...;
uint256 ibTokenPrice = vault.totalToken()).div(vault.totalSupply();
uint256 underlyingTokenAmount = ibTokenAmount.mul(ibTokenPrice);

O fragmento de código acima demonstra um cálculo de preço ibToken a partir da recuperação do valor de totalToken e totalSupply do cofre correspondente.

Recuperando o preço ibToken da Alpaca API

Alpaca Finance fornece uma API para recuperar os preços ibToken atuais enviando uma solicitação REST GET para o endpoint /ibTokens para recuperar qualquer preço ibToken. A integração com a Alpaca API requer autenticação, portanto, entre em contato conosco em requests@alpacafinance.org se você deseja usar este serviço.

O resultado de exemplo da API é o seguinte:

{
    "status": {
        "code": 1000,
        "messages": [
            "OK"
        ]
    },
    "data": [
        {
            "symbol": "ibALPACA",
            "baseTokenPerShare": "1.051108636596531492",
            "lendingApr": "0.0003638488758058",
            "stakingApr": "0.0"
        },
        {
            "symbol": "ibBNB",
            "baseTokenPerShare": "1.025808940627339553",
            "lendingApr": "9.7785294844178225",
            "stakingApr": "316693.265280905443641"
        },
        {
            "symbol": "ibBUSD",
            "baseTokenPerShare": "0.972337256352625836",
            "lendingApr": "0.368330890561667",
            "stakingApr": "2269.786601379154162"
        },
        {
            "symbol": "ibUSDT",
            "baseTokenPerShare": "0.913094694500682622",
            "lendingApr": "0.0012775198722327",
            "stakingApr": "0.0"
        },
        {
            "symbol": "ibBTCB",
            "baseTokenPerShare": "1.000006160536069502",
            "lendingApr": "6.5534019786376696",
            "stakingApr": "0.0"
        },
        {
            "symbol": "ibETH",
            "baseTokenPerShare": "0.999463386510494271",
            "lendingApr": "0.0000004209960912",
            "stakingApr": "0.0"
        }
    ]
}

Recomendamos fortemente recuperar o preço ibToken do cálculo de contrato inteligente e da API Alpaca. Essas duas fontes de dados de preços devem ser comparadas para evitar qualquer possível anomalia de dados. Se a comparação entre as duas fontes diferir significativamente, os dados de preços devem ser rejeitados.

Em resumo, o processo mais seguro para calcular os preços do ibToken é o seguinte:

  1. Calcule os preços do ibToken em seus próprios contratos.

  2. Use um oráculo fora da rede para preços ibToken ou extraia esses preços da API da Alpaca.

  3. Compare 1 e 2. Se a diferença for superior a n%, reverta a transação.

A API da Alpaca está atualmente apenas com uma lista de permissões para protocolos e instituições. Para solicitar acesso, envie um email para requests@alpacafinance.org

Staking

Alpaca Finance oferece oportunidades de staking aos usuários. Tokens com juros e tokens LP selecionados estão disponíveis para staking em nossos pools de staking para receber rendimentos adicionais na forma de tokens ALPACA. Se você depositou fundos e recebeu ibTokens, recomendamos que aposte esses tokens nesses pools para ganhar o máximo de recompensas disponíveis.

O staking é feito chamando o método deposit. Os parâmetros são os seguintes:

  • _for é o endereço do depositante.

  • _pid é o id do pool de staking.

  • _amount é a quantidade do token a ser depositado em uint256 expresso em seus decimais (por exemplo, ibBNB usa 18 decimais, 1 ibBNB = 10000000000000000000 ou 1 * 1e18)

// Solidity
address fairlaunchContractAddress = '0xA625AB01B08ce023B2a342Dbb12a16f2C8489A8F'; // ibBNB pool
IFairLaunch fairlaunch = IFairLaunch(fairlaunchContractAddress);
fairlaunch.deposit(msg.sender, poolId, amount);

As informações do staking share serão armazenadas dentro do estado do contrato inteligente. Não haverá nenhum token emitido pelo staking. A quota de um usuário pode ser recuperada chamando o método userInfo do contrato Fairlaunch .

As recompensas do stake não são creditadas automaticamente e devem ser colhidas manualmente. No entanto, realizar um depósito ou saque nos pools de stake colherá automaticamente quaisquer recompensas pendentes para o chamador. Para colher recompensas de um pool de staking, o chamador deve chamar o método harvest do contrato Fairlaunch e fornecer a id do pool.

// Solidity
address fairlaunchContractAddress = '0xA625AB01B08ce023B2a342Dbb12a16f2C8489A8F'; // ibBNB pool
IFairLaunch fairlaunch = IFairLaunch(fairlaunchContractAddress);
fairlaunch.harvest(poolId);

Para retirar os tokens de staking do pool, o valor da parte do usuário deve ser fornecido ao método withdraw do contrato Fairlaunch .

// Solidity
address fairlaunchContractAddress = '0xA625AB01B08ce023B2a342Dbb12a16f2C8489A8F'; // ibBNB pool
IFairLaunch fairlaunch = IFairLaunch(fairlaunchContractAddress);
fairlaunch.withdraw(msg.sender, poolId, amount);

Os tokens de staking serão devolvidos ao chamador e todas as recompensas pendentes também serão coletadas automaticamente.

Testando com a Alpaca Finance

Por favor, veja lista detalhada de todos os endereços de contrato dos cofres.

Se o depósito for bem-sucedido, o cofre cunhará tokens que rendem juros (ibTokens) e devolverá esses tokens cunhados ao chamador. Observe que o valor do token com juros devolvido não será igual ao valor do token base fornecido devido ao design dos tokens que rendem juros. O chamador do método deposit deve acompanhar corretamente as ações dos usuários para depósitos em cofres, consulte a seção para uma explicação detalhada.

Entender essa mecânica fundamental dos valores dos ibTokens é crucial, uma vez que um protocolo DeFi que se integra aos cofres de empréstimo da Alpaca Finance pode precisar calcular com precisão as cotas dos usuários do depósito do cofre. Não fazer isso pode representar risco de segurança e perda financeira. Este foi o caso dos ataques a e em que esses protocolos sempre trataram ibTokens como tendo uma proporção de 1:1 com o token desejado (leia a análise dos ataques em e).

O preço recuperado da API da Alpaca deve ser fornecido ao contrato inteligente usando um oráculo de preço. Fornecer os preços por meio de uma entrada para uma chamada de contrato inteligente ficará vulnerável a um ataque de injeção do cliente. Aconselhamos fortemente não fazer isso. Um exemplo de um oráculo de preços simples pode ser visto . Usando um oráculo de preços confiável, você pode garantir a integridade e confiabilidade dos dados de preços ibToken.

De acordo com o , as recompensas de emissão da ALPACA já foram concluídas. Assim, as informações relacionadas a stake fornecidas abaixo são apenas para fins de referência e podem não ser mais relevantes devido à suspensão das recompensas de stake da ALPACA.

Para apostar os tokens nos pools de stake da Alpaca Finance, a lista de pools e seus tokens de staking correspondentes deve ser adquirida primeiro. Por favor, veja para obter uma lista detalhada de todos os endereços de contrato de pool. O contrato dos pools é geralmente chamado de Fairlaunch em nossa base de código.

Atualmente, não oferecemos suporte para ambiente testnet. Recomendamos testar bifurcando da rede principal, o que pode ser facilmente realizado por meio do . Para todas as informações e endereços relevantes, consulte:

aqui
https://alpaca-static-api.alpacafinance.org/bsc/v1/landing/summary.json
https://alpaca-static-api.alpacafinance.org/ftm/v1/landing/summary.json
https://alpaca-static-api.alpacafinance.org/56/v1/money-market/summary.json
aqui a
Cálculo de Token de Rolagem de Juros
bEarn.fi
ValueDeFi
bEarn.fi
ValueDefi
aqui
cronograma de emissões
aqui
Fork do Tenderly
https://github.com/alpaca-finance/bsc-alpaca-contract/blob/main/.mainnet.json
Page cover image