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:
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:
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:
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:
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:
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);
Network
Los 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
Market
Los 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
Asset
Los 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/