Kit de desarrollo de acoplamiento Aave del protocolo DeFi [PHP]

El kit de desarrollo AaveTool es adecuado para agregar rápidamente soporte para el protocolo AAVE para aplicaciones PHP. La dirección de descarga oficial es: AaveTool para PHP .

1. Descripción general del kit de desarrollo de AaveTool

Incluye principalmente las siguientes características:

  • Admite funciones completas como depósito, interés y canje de tokens Ether / ERC20
  • Admite consultas de eventos de protocolo y datos de activos
  • Apoyar el mercado AAVE y el mercado UNISWAP

El kit de desarrollo AaveTool es compatible con PHP 7.1+, la versión actual es 1.0.0, los principales tipos y relaciones se muestran en la siguiente figura:

Inserte la descripción de la imagen aquí

La lista de archivos de código principal de AaveTool es la siguiente:

Archivo de código Descripción
aavetool / src / MoneyMarket.php Clase de entrada AaveTool
aavetool / src / LendingPool.php Paquete de contrato Aave LendingPool
aavetool / src / LendingPoolCore.php Paquete de contrato Aave LendingPoolCore
aavetool / src / AToken.php Paquete de contrato Aave AToken
aavetool / src / Erc20Token.php Embalaje de contrato de token ERC20
aavetool / src / AddressProvider.php Paquete de contrato Aave LendingPoolAddressProvider
aavetool / src / ContractBase.php Clase base de contrato Ethereum
aavetool / src / ProtocolMeta.php Metainformación del protocolo Aave
aavetool / src / Credential.php Clase de cuenta Ethereum
aavetool / src / Callback.php Clase auxiliar de llamada Ethereum RPC
aavetool / src / Enums / Asset.php Aave tipo de enumeración de activos
aavetool / src / Enums / InterestRateMode.php Tipo de enumeración del modelo de cálculo de intereses de activos prestados de Aave
aavetool / src / Enums / Market.php Aave tipo de enumeración de mercado
aavetool / src / Enums / Network.php Tipo de enumeración de la red Ethereum
demo / deposit-eth.php Código de demostración, deposita Ether en Aave
demo / pedir prestado-dai.php Código de demostración, DAI prestado por Aave
demo / user-info.php Código demo, consulta la información básica de la cuenta en el protocolo Aave
demo / general-info.php Código de demostración para consultar la información general del protocolo Aave
vendedor/ Directorio de paquetes de dependencia de terceros
composer.json Archivo de configuración de administración de paquetes de Composer
composer.lock Configuración de administración de paquetes de Composer

2. Usa código de muestra

2.1 Depositar activos a Aave

El programa de muestra demo / deposit-eth.php demuestra cómo depositar activos en el protocolo Aave. Ejecute el siguiente comando en la terminal para iniciar el programa de muestra:

php deposit-eth.php

El resultado es el siguiente:

Inserte la descripción de la imagen aquí

2.2 Préstamo de activos de Aave

El programa de muestra demo / resource-dai.php demuestra cómo tomar prestados activos del protocolo Aave. Ejecute el siguiente comando en la terminal para iniciar el programa de muestra:

php borrow-dai.php

El resultado es el siguiente:

Inserte la descripción de la imagen aquí

2.3 Ver las estadísticas generales del protocolo Aave

El programa de ejemplo demo / general-info.php demuestra cómo consultar las estadísticas generales del protocolo Aave. Ejecute el siguiente comando en la terminal para iniciar el programa de muestra:

php general-info.php

El resultado es el siguiente:

Inserte la descripción de la imagen aquí

2.4 Consultar los datos de la cuenta en el protocolo Aave

El programa de muestra demo / user-info.php demuestra cómo consultar las estadísticas de la cuenta Ethereum en el protocolo Aave. Ejecute el siguiente comando en la terminal para iniciar el programa de muestra:

php user-info.php

El resultado es el siguiente:

Inserte la descripción de la imagen aquí

2 Método de uso de la clase de credenciales

AaveTool usa la clase Credential para representar una cuenta Ethereum específica, que es
el sujeto de acceso al protocolo Aave .

2.1 Crear instancia de credencial

new()Cree una nueva cuenta de Ethereum utilizando métodos estáticos , por ejemplo:

//use AaveTool\Credential;

$credential = Credential::new();

También puede utilizar un método estático para fromKey()importar una clave privada existente para crear una instancia del objeto Credential, por ejemplo:

$credential = Credential::fromKey('0x4f3edf983ac6......b113bce9c46');

2.2 Ver la clave y la dirección de la cuenta

La clase Credential proporciona los siguientes métodos para obtener la clave privada, la clave pública y la dirección de la cuenta actual:

  • getPrivateKey (): devuelve la cadena hexadecimal de la clave privada
  • getPublicKey (): devuelve la cadena hexadecimal de clave pública
  • getAddress (): devuelve la cadena hexadecimal de dirección

Por ejemplo, el siguiente código crea una nueva cuenta de Ethereum y muestra su dirección:

$credential = Credential::new();
echo 'address => ' . $credential.getAddress() . PHP_EOL;

3. Instrucciones para usar MoneyMarket

La clase MoneyMarket proporciona un conjunto de métodos prácticos para acceder al protocolo Aave.

3.1 Creación de instancias de MoneyMarket

La instanciación de MoneyMarket debe pasar dos parámetros: el objeto de cuenta utilizado para la interacción y la información de configuración de mercado necesaria. P.ej:

//use AaveTool\Credential;
//use AaveTool\MoneyMarket;
//use AaveTool\Enums\Network;
//use AaveTool\Enums\Market;

$credential = Credential::fromKey('0x7878......7878');
$config = [
  'url' => 'http://localhost:8545',        // 以太坊节点URL
  'timeout' => 60,                         // 节点超时设置,单位:秒
  'network' => Network::MAIN,              // 接入以太坊主网
  'market' => Market::AAVE                 // 接入AAVE市场
];
$moneyMarket = new MoneyMarket($credential, $config);

NetworkLos tipos de enumeración admiten actualmente las siguientes opciones:

  • Red :: PRINCIPAL: Cadena principal de Ethereum
  • Red :: ROPSTEN: cadena de prueba Ethereum Ropsten
  • Red :: RINKEBY: cadena de prueba Ethereum Rinkeby

MarketLos tipos de enumeración admiten actualmente las siguientes opciones:

  • Mercado :: AAVE : Aave
  • Mercado :: UNISWAP: mercado Uniswap

3.2 Depósito de activos en el acuerdo Aave

deposit()Deposite Ether o tokens en el protocolo Aave utilizando objetos MoneyMarket . Por ejemplo, deposite 100 Ether en el protocolo Aave:

//use AaveTool\Enums\Asset;

$txid = $moneyMarket->deposit(
  Asset::ETH,                         // 存入资产名称        
  '100000000000000000000'             // 存入资产数量
);

O deposita 100 USDT al protocolo Aave:

$txid = $moneyMarket->deposit(
  Asset::USDT,                         // 存入资产名称        
  '100000000'                          // 存入资产数量
);

Tenga en cuenta que el número de activos depositados debe calcularse en la unidad más pequeña del activo correspondiente, por ejemplo:

  • 100 éter = 100000000000000000000 wei
  • 100 usdt = 100000000 unidad

AssetLos tipos de enumeración admiten actualmente las siguientes opciones:

  • Mercado de Aave:
    • ETH / DAI / USDT / SUSD / TUSD / USDT / BAT / ENJ
    • KNC / LEND / LINK / MANA / MKR / REN / REP / SNX / WBTC / ZRX
  • Mercado Uniswap:
    • ETH / DAI / USDC / USDT
    • UNI_USDC_ETH / UNI_LINK_ETH / UNI_DAI_ETH
    • UNI_LENT_ETH / UNI_MKR_ETH / UNI_SETH_ETH

De forma predeterminada, el deposit()método calculará automáticamente el gasPrice y el gasLimit de la transacción. También puede utilizar los dos últimos parámetros del método para especificar estos dos valores, por ejemplo:

$txid = $moneyMarket->deposit(
  Asset::USDT,                         // 存入资产名称        
  '100000000',                         // 存入资产数量
  '20000000000',                       // gasPrice:20 gwei
  '100000'                             // gasLimit: 100k
);
echo 'deposit txid => ' . $txid . PHP_EOL;

Otros métodos de negociación de MoneyMarket son deposit()similares a los métodos. De forma predeterminada, gasPrice y gasLimit se estiman automáticamente, y los valores de estos dos parámetros también se admiten manualmente, que no se repetirán a continuación.

3.3 Activos depositados hipotecarios / demócratas

Los activos depositados en Aave pueden constituirse como garantía para préstamos posteriores. Utilice los dos métodos siguientes para establecer el estado hipotecario del activo depositado especificado:

  • enableUseAsCollateral (): establecer como garantía
  • disableUseAsCollateral (): cancela la configuración de garantía

Por ejemplo, el siguiente código establece el activo ETH depositado previamente como garantía:

$txid = $moneyMarket->enableUseAsCollateral(Asset::ETH);
echo 'enable collateral txid => ' . $txid . PHP_EOL;

3.4 Préstamo de activos del acuerdo Aave

Cuando la garantía es válida, se pueden utilizar borrow()métodos para prestar otros activos del protocolo Aave. Por ejemplo, prestando 20 LINK:

//use AaveTool\Enums\Asset;
//use AaveTool\Enums\InterestRateMode;

$txid = $moneyMarket->borrow(
  Asset::LINK,                       // 资产名称
  '20000000000000000000',            // 资产数量
  InterestRateMode::STABLE           // 计息模式
);
echo 'borrow txid => ' . $txid . PHP_EOL;

Aave admite dos modelos de cálculo de intereses para activos prestados:

  • InterestRateMode :: STABLE: Tasas de interés estables, basadas en algoritmos para mantener las tasas de interés pequeñas
  • InterestRateMode :: VARIABLE: tasa de interés variable, es decir, la tasa de interés se ajusta dinámicamente con la relación entre la oferta y la demanda de activos

3.5 Cambio del modo de cálculo de intereses de los activos prestados

El swapBorrowRateMode()método de uso puede cambiar el modo de cálculo de intereses de los activos prestados. P.ej:

$txid = $moneyMarket->swapBorrowRateMode();
echo 'swap rate mode txid => ' . $txid . PHP_EOL;

3.6 Reembolso de activos prestados

Utilice el repay()método para reembolsar los activos prestados por Aave. Por ejemplo, para reembolsar parte de los activos LINK prestados:

$txid = $moneyMarket->repay(
  Asset::LINK,                          // 资产名称
  '10000000000000000000'                // 资产数量
);
echo 'repay txid => ' . $txid . PHP_EOL;

De forma predeterminada, el método repay () reembolsa los activos prestados de la cuenta corriente y también puede reembolsar los activos prestados por otros, como pagar préstamos para Mary:

$mary = '0x9F7C50......D3e3bd';    
$txid = $moneyMarket->repay(
  Asset::LINK,                          // 资产名称
  '10000000000000000000',               // 资产数量
  $mary                                 // 偿还该地址名下借款 
);
echo 'repay txid => ' . $txid . PHP_EOL;

3.7 Retirar el depósito del acuerdo Aave

Utilice el redeem()método para recuperar los activos almacenados en el protocolo Aave. Por ejemplo, retirar parte del ETH depositado previamente:

$txid = $moneyMarket->redeem(
  Asset::ETH,                            // 资产名称
  '10000000000000000000'                 // 资产数量
);
echo 'redeem txid => ' . $txid . PHP_EOL;

3.8 Consultar la información básica de la cuenta en el protocolo Aave

Utilizar getUserAccountData()método para consultar la información básica de la cuenta corriente en el protocolo Aave. P.ej:

$data = $moneyMarket->getUserAccountData();
foreach($data as $name => $value){
  echo $name . ': ' . $value . PHP_EOL;
}

getUserAccountData()El método devuelve una matriz asociativa, que contiene principalmente los siguientes campos:

  • totalLiquidityETH: la cantidad total de activos depositados, unidad: WEI
  • totalCollateralETH: activos hipotecarios totales, unidad: WEI
  • totalBorrowsETH: activos totales prestados, unidad: WEI
  • totalFeesETH: tarifa total, unidad: WEI
  • availableBorrowsETH: monto del préstamo válido, unidad: WEI
  • currentLiquidationThreshold: el umbral de liquidación medio de los activos hipotecarios
  • ltv: Promedio préstamo-valor
  • healthFactor: factor de salud de la cuenta

3.9 Consultar los activos de la cuenta en el acuerdo Aave

Utilice el getUserReserveData()método para consultar el estado de los activos de la cuenta actual en el protocolo Aave. Por ejemplo, el siguiente código consulta el estado del préstamo de activos ETH del usuario en el protocolo Aave:

$data = $moneyMarket->getUserReserveData(
  Asset::ETH
);
foreach($data as $name => $value){
  echo $name . ': ' . $value . PHP_EOL;
}

getUserReserveData()El método devuelve una matriz asociativa, los campos se describen a continuación:

  • currentATokenBalance: deposita el saldo que devenga intereses del activo
  • currentBorrowBalance: saldo que devenga intereses de los activos prestados
  • pincipalBorrowBalance: principal del préstamo de los activos
  • préstamoRateMode: modo de tasa de interés de préstamo
  • préstamoTasa: la tasa de interés anualizada del activo prestado
  • liquidityRate: la tasa de interés anualizada de los activos depositados
  • originationFee: tarifa inicial por activos prestados
  • variableBorrowIndex: cambiar el índice acumulativo
  • lastUpdateTimestamp: marca de tiempo de la última actualización
  • useAsCollateralEnabled: si se puede utilizar como garantía

Dirección de descarga oficial de AaveTool: http://sc.hubwiz.com/codebag/aave-php-sdk/

Supongo que te gusta

Origin blog.csdn.net/shebao3333/article/details/107791175
Recomendado
Clasificación