Erc-20

是否有與 OpenZeppelin 的 SafeERC20.safeTransfer 等效的 Vyper?

  • July 4, 2020

OpenZeppelin 提供 SoliditySafeERC20庫作為處理ERC20 可能變化的一種方式。是否有使用 Vyper 的等效方法來執行此操作?

從 Vyper 開始,0.2.0這可以使用raw_call內置函式:

@external
def safe_transfer(_token: address, _to: address, _value: uint256) -> bool:
   _response: Bytes[32] = raw_call(
       _token,
       concat(
           method_id("transfer(address,uint256)"),
           convert(_to, bytes32),
           convert(_value, bytes32)
       ),
       max_outsize=32
   )
   if len(_response) > 0:
       assert convert(_response, bool), "Transfer failed!"

   return True

引用自:https://ethereum.stackexchange.com/questions/84775