首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Aave aaveLendingPool.withdraw()返回值验证

Aave aaveLendingPool.withdraw()返回值验证
EN

Stack Overflow用户
提问于 2021-11-23 22:28:15
回答 1查看 114关注 0票数 0

我正在写一个拉付款函数,和任何外部调用一样,这是一个很好的实践,验证结果并检查成功的执行。我使用以下界面:

代码语言:javascript
复制
    interface IAaveLendingPool {
    function deposit(
        address asset,
        uint256 amount,
        address onBehalfOf,
        uint16 referralCode
    ) external;

    function withdraw(
        address asset,
        uint256 amount,
        address to
    ) external;

    function getReservesList() external view returns (address[] memory);
}

aAveLendingPool= IAaveLendingPool(0x0543958349aAve_pooladdress)

Aave提供的接口也没有指定返回。LendingPool.sol合同的退出函数返回external override whenNotPaused returns (uint256)

问题:我是否可以使用返回的uint来验证成功的执行,或者aAveLendingPool.withdraw()返回一个布尔值?下面的工作会像预期的那样吗?

代码语言:javascript
复制
    ///@notice assigns dai to caller
    require( aaveLendingPool.withdraw(
                address(dai),
                amount,
                msg.sender), "Error, contract does not have enough DAI")

如果有的话,请提供一个指向外部函数调用返回值的solidity链接。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-27 12:57:51

根据衰老勤勉Aave V2审计

ERC20实现并不总是一致的。有些传输和transferFrom实现可以在失败时返回“false”,而不是恢复。将这样的调用封装到针对这些失败的require()语句中是更安全的。

因此,将传输调用包装在需求检查中是安全和充分的。

代码语言:javascript
复制
require( aaveLendingPool.withdraw(
                address(dai),
                amount,
                msg.sender), "Error, contract does not have enough DAI")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70088614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档