AaveTool開発キットは、PHPアプリケーションのAAVEプロトコルのサポートをすばやく追加するのに適しています。公式のダウンロードアドレスは、AaveTool forPHPです。
1.AaveTool開発キットの概要
主に次の機能が含まれています。
- Ether / ERC20トークンの預け入れ、利息、償還などの完全な機能をサポートします
- 資産データとプロトコルイベントクエリをサポートする
- AAVE市場とUNISWAP市場をサポート
AaveTool開発キットはPHP7.1以降をサポートし、現在のバージョンは1.0.0です。主なタイプと関係は、次の図に示されています。
AaveToolのメインコードファイルリストは次のとおりです。
コードファイル | 説明 |
---|---|
aavetool / src / MoneyMarket.php | AaveToolエントリクラス |
aavetool / src / LendingPool.php | AaveLendingPool契約パッケージ |
aavetool / src / LendingPoolCore.php | AaveLendingPoolCore契約パッケージ |
aavetool / src / AToken.php | AaveAToken契約パッケージ |
aavetool / src / Erc20Token.php | ERC20トークン契約パッケージ |
aavetool / src / AddressProvider.php | AaveLendingPoolAddressProvider契約パッケージ |
aavetool / src / ContractBase.php | Ethereum契約基本クラス |
aavetool / src / ProtocolMeta.php | Aaveプロトコルメタ情報 |
aavetool / src / Credential.php | Ethereumアカウントクラス |
aavetool / src / Callback.php | EthereumRPC呼び出し補助クラス |
aavetool / src / Enums / Asset.php | Aave資産列挙タイプ |
aavetool / src / Enums / InterestRateMode.php | Aave貸付資産利息計算モデル列挙型 |
aavetool / src / Enums / Market.php | Aave市場列挙型 |
aavetool / src / Enums / Network.php | Ethereumネットワーク列挙型 |
demo /deposit-eth.php | デモコード、EtherをAaveに預ける |
demo / Borrow-dai.php | デモコード、AaveからDAIを貸与 |
demo / user-info.php | Aaveプロトコルでアカウントの基本情報を照会するためのデモコード |
demo / general-info.php | Aaveプロトコルの全体的な情報を照会するためのデモコード |
ベンダー/ | サードパーティの依存関係パッケージディレクトリ |
composer.json | Composerパッケージ管理構成ファイル |
composer.lock | Composerパッケージ管理構成 |
2.サンプルコードを使用する
2.1資産をAaveに預ける
サンプルプログラムdemo / deposit-eth.phpは、資産をAaveプロトコルにデポジットする方法を示しています。ターミナルで次のコマンドを実行して、サンプルプログラムを開始します。
php deposit-eth.php
出力は次のとおりです。
2.2Aaveからの資産の貸し出し
サンプルプログラムdemo / Borrow-dai.phpは、Aaveプロトコルからアセットを借用する方法を示しています。ターミナルで次のコマンドを実行して、サンプルプログラムを開始します。
php borrow-dai.php
出力は次のとおりです。
2.3Aaveプロトコルの全体的な統計を表示する
サンプルプログラムdemo / general-info.phpは、Aaveプロトコルの全体的な統計を照会する方法を示しています。ターミナルで次のコマンドを実行して、サンプルプログラムを開始します。
php general-info.php
出力は次のとおりです。
2.4Aaveプロトコルでアカウントデータをクエリする
サンプルプログラムdemo / user-info.phpは、AaveプロトコルでEthereumアカウントの統計を照会する方法を示しています。ターミナルで次のコマンドを実行して、サンプルプログラムを開始します。
php user-info.php
出力は次のとおりです。
2資格クラスの使用方法
AaveToolは、Credentialクラスを使用して、Aaveプロトコルへのアクセス
の対象である特定のEthereumアカウントを表します。
2.1資格情報のインスタンス化
静的メソッドを使用してnew()
、新しいEthereumアカウントを作成します。次に例を示します。
//use AaveTool\Credential;
$credential = Credential::new();
静的メソッドを使用してfromKey()
既存の秘密鍵をインポートし、次のようにCredentialオブジェクトをインスタンス化することもできます。
$credential = Credential::fromKey('0x4f3edf983ac6......b113bce9c46');
2.2アカウントのキーとアドレスを表示する
Credentialクラスは、現在のアカウントの秘密鍵、公開鍵、およびアドレスを取得するための次のメソッドを提供します。
- getPrivateKey():秘密鍵の16進文字列を返します
- getPublicKey():公開キーの16進文字列を返します
- getAddress():アドレスの16進文字列を返します
たとえば、次のコードは新しいEthereumアカウントを作成し、そのアドレスを表示します。
$credential = Credential::new();
echo 'address => ' . $credential.getAddress() . PHP_EOL;
3.MoneyMarketの使用方法
MoneyMarketクラスは、Aaveプロトコルにアクセスするための一連の便利なメソッドを提供します。
3.1MoneyMarketのインスタンス化
MoneyMarketをインスタンス化するには、対話に使用されるアカウントオブジェクトと、必要な市場構成情報の2つのパラメーターを渡す必要があります。例えば:
//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
現在、列挙型は次のオプションをサポートしています。
- ネットワーク::メイン:Ethereumメインチェーン
- Network :: ROPSTEN:EthereumRopstenテストチェーン
- Network :: RINKEBY:EthereumRinkebyテストチェーン
Market
現在、列挙型は次のオプションをサポートしています。
- マーケット:: AAVE:Aave
- Market :: UNISWAP:Uniswapマーケット
3.2Aave契約への資産の預け入れ
MoneyMarketオブジェクトを使用deposit()
して、EtherまたはトークンをAaveプロトコルにデポジットします。たとえば、100EtherをAaveプロトコルにデポジットします。
//use AaveTool\Enums\Asset;
$txid = $moneyMarket->deposit(
Asset::ETH, // 存入资产名称
'100000000000000000000' // 存入资产数量
);
または、100USDTをAaveプロトコルにデポジットします。
$txid = $moneyMarket->deposit(
Asset::USDT, // 存入资产名称
'100000000' // 存入资产数量
);
預け入れ資産の数は、対応する資産の最小単位で計算する必要があることに注意してください。次に例を示します。
- 100エーテル= 100000000000000000000 wei
- 100 usdt = 100000000単位
Asset
現在、列挙型は次のオプションをサポートしています。
- Aaveマーケット:
- ETH / DAI / USDT / SUSD / TUSD / USDT / BAT / ENJ
- KNC / LEND / LINK / MANA / MKR / REN / REP / SNX / WBTC / ZRX
- ユニスワップ市場:
- ETH / DAI / USDC / USDT
- UNI_USDC_ETH / UNI_LINK_ETH / UNI_DAI_ETH
- UNI_LENT_ETH / UNI_MKR_ETH / UNI_SETH_ETH
デフォルトでは、deposit()
メソッドはトランザクションのgasPriceとgasLimitを自動的に推定します。メソッドの最後の2つのパラメーターを使用して、次の2つの値を指定することもできます。
$txid = $moneyMarket->deposit(
Asset::USDT, // 存入资产名称
'100000000', // 存入资产数量
'20000000000', // gasPrice:20 gwei
'100000' // gasLimit: 100k
);
echo 'deposit txid => ' . $txid . PHP_EOL;
MoneyMarketの他のトランザクションメソッドは、このdeposit()
メソッドと同様です。デフォルトでは、gasPriceとgasLimitが自動的に推定されます。同時に、これら2つのパラメーター値の手動指定もサポートされますが、以下では繰り返されません。
3.3住宅ローン/住宅ローンの預託資産
Aaveに預け入れられた資産は、その後の借入の担保として設定できます。次の2つの方法を使用して、指定された預け入れ資産の抵当可能ステータスを設定します。
- enableUseAsCollateral():担保として設定
- disableUseAsCollateral():担保設定をキャンセルします
たとえば、次のコードは、以前に預け入れたETH資産を担保として設定します。
$txid = $moneyMarket->enableUseAsCollateral(Asset::ETH);
echo 'enable collateral txid => ' . $txid . PHP_EOL;
3.4Aaveプロトコルからの資産の貸し出し
有効な担保の場合borrow()
、Aave契約から他の資産を貸すための方法を使用できます。たとえば、20個のリンクを貸し出します。
//use AaveTool\Enums\Asset;
//use AaveTool\Enums\InterestRateMode;
$txid = $moneyMarket->borrow(
Asset::LINK, // 资产名称
'20000000000000000000', // 资产数量
InterestRateMode::STABLE // 计息模式
);
echo 'borrow txid => ' . $txid . PHP_EOL;
Aaveは、貸付資産の2つの利息計算モデルをサポートしています。
- InterestRateMode :: STABLE:金利を小さく保つためのアルゴリズムに基づく安定した金利
- InterestRateMode :: VARIABLE:可変金利、つまり、資産の供給と需要の関係に応じて動的に調整される金利
3.5貸付資産の利息計算モードの切り替え
使用swapBorrowRateMode()
方法は、貸付資産の利息計算モードを切り替えることができます。例えば:
$txid = $moneyMarket->swapBorrowRateMode();
echo 'swap rate mode txid => ' . $txid . PHP_EOL;
3.6貸付資産の返済
このrepay()
方法を使用して、Aaveから貸与された資産を返済します。たとえば、貸与されたLINK資産の一部を返済するには:
$txid = $moneyMarket->repay(
Asset::LINK, // 资产名称
'10000000000000000000' // 资产数量
);
echo 'repay txid => ' . $txid . PHP_EOL;
デフォルトでは、repay()メソッドは現在のアカウントの貸し出し資産を返済し、メアリーの貸し出しの返済など、他の人の貸し出し資産を返済することもできます。
$mary = '0x9F7C50......D3e3bd';
$txid = $moneyMarket->repay(
Asset::LINK, // 资产名称
'10000000000000000000', // 资产数量
$mary // 偿还该地址名下借款
);
echo 'repay txid => ' . $txid . PHP_EOL;
3.7Aave契約から預金を引き出す
このredeem()
メソッドを使用して、Aaveプロトコルに保存されているアセットを取得します。たとえば、以前にデポジットされたETHの一部を撤回します。
$txid = $moneyMarket->redeem(
Asset::ETH, // 资产名称
'10000000000000000000' // 资产数量
);
echo 'redeem txid => ' . $txid . PHP_EOL;
3.8Aaveプロトコルでアカウントの基本情報を照会する
getUserAccountData()
メソッドを使用して、Aaveプロトコルで現在のアカウントの基本情報を照会します。例えば:
$data = $moneyMarket->getUserAccountData();
foreach($data as $name => $value){
echo $name . ': ' . $value . PHP_EOL;
}
getUserAccountData()
このメソッドは、主に次のフィールドを含む連想配列を返します。
- totalLiquidityETH:預け入れ資産の合計額、単位:WEI
- totalCollateralETH:住宅ローン資産の合計、単位:WEI
- totalBorrowsETH:総貸付資産、単位:WEI
- totalFeesETH:合計料金、単位:WEI
- availableBorrowsETH:有効なローン金額、単位:WEI
- currentLiquidationThreshold:住宅ローン資産の平均清算しきい値
- ltv:ローンからバリューへの平均
- healthFactor:アカウントのヘルスファクター
3.9Aave契約のアカウント資産を照会する
getUserReserveData()
メソッドを使用して、Aaveプロトコルで現在のアカウントの資産ステータスを照会します。たとえば、次のコードは、AaveプロトコルでユーザーのETH資産ローンステータスを照会します。
$data = $moneyMarket->getUserReserveData(
Asset::ETH
);
foreach($data as $name => $value){
echo $name . ': ' . $value . PHP_EOL;
}
getUserReserveData()
このメソッドは連想配列を返します。フィールドは次のように記述されます。
- currentATokenBalance:資産の有利子残高をデポジットします
- currentBorrowBalance:貸付資産の有利な残高
- pincipalBorrowBalance:資産の元本
- BorrowRateMode:借用金利モード
- BorrowRate:借入資産の年間金利
- LiquidityRate:預け入れ資産の年間金利
- originationFee:貸付資産の初期費用
- variableBorrowIndex:累積インデックスを変更します
- lastUpdateTimestamp:最終更新タイムスタンプ
- UsageAsCollateralEnabled:担保として使用できるかどうか
AaveToolの公式ダウンロードアドレス:http://sc.hubwiz.com/codebag/aave-php-sdk/