DeFiプロトコルAaveドッキング開発キット[PHP]

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つの方法を使用して、指定された預け入れ資産の抵当可能ステータスを設定します。

  • enableUseAsCollat​​eral():担保として設定
  • disableUseAsCollat​​eral():担保設定をキャンセルします

たとえば、次のコードは、以前に預け入れた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
  • totalCollat​​eralETH:住宅ローン資産の合計、単位: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:最終更新タイムスタンプ
  • UsageAsCollat​​eralEnabled:担保として使用できるかどうか

AaveToolの公式ダウンロードアドレス:http://sc.hubwiz.com/codebag/aave-php-sdk/

おすすめ

転載: blog.csdn.net/shebao3333/article/details/107791175