ETH Price: $1,992.50 (-1.38%)

Contract

0x1f7e55F2e907dDce8074b916f94F62C7e8A18571
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Age:24H
Reset Filter

Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Age:24H
Reset Filter

Advanced mode:
Parent Transaction Hash Method Block
From
To

There are no matching entries

Update your filters to view other transactions

View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.3.7

Optimization Enabled:
N/A

Other Settings:
paris EvmVersion, GNU GPLv3 license

Contract Source Code (Vyper language format)

# @version ^0.3.7

MAX_DATA: constant(uint256) = 2**13

interface RocketStorageInterface:
  def getAddress(_key: bytes32) -> address: view

interface RocketDepositPoolInterface:
  def deposit(): payable

interface FlashLoanInterface:
  def flashLoan(receiver: address, token: address, amount: uint256, data: Bytes[MAX_DATA]) -> bool: nonpayable

interface WethInterface:
  def approve(_spender: address, _amount: uint256) -> bool: nonpayable
  def balanceOf(_who: address) -> uint256: view
  def deposit(): payable
  def withdraw(_wad: uint256): nonpayable

interface RethInterface:
  def approve(_spender: address, _amount: uint256) -> bool: nonpayable
  def balanceOf(_who: address) -> uint256: view
  def transfer(_to: address, _wad: uint256) -> bool: nonpayable

interface RocketDepositArbitrageInterface:
  def drain(): nonpayable

rocketStorage: immutable(RocketStorageInterface)
rethToken: immutable(RethInterface)
wethToken: immutable(WethInterface)
flashLender: immutable(FlashLoanInterface)
swapRouter: immutable(address)
owner: public(address)

@external
def __init__(flashLenderAddress: address, rocketStorageAddress: address, swapRouterAddress: address, wethAddress: address):
  self.owner = msg.sender
  rocketStorage = RocketStorageInterface(rocketStorageAddress)
  rethAddress: address = rocketStorage.getAddress(keccak256("contract.addressrocketTokenRETH"))
  rethToken = RethInterface(rethAddress)
  wethToken = WethInterface(wethAddress)
  flashLender = FlashLoanInterface(flashLenderAddress)
  swapRouter = swapRouterAddress

@external
def setOwner(newOwner: address):
  assert msg.sender == self.owner, "only owner can set owner"
  self.owner = newOwner

@external
@payable
def __default__():
  assert msg.sender == wethToken.address, "only WETH can send ETH"

@external
def onFlashLoan(initiator: address, token: address, amount: uint256, fee: uint256, data: Bytes[MAX_DATA]) -> bytes32:
  assert initiator == self, "only I can initiate a flash loan"
  assert token == wethToken.address, "only WETH can be flash loaned"
  assert fee == 0, "no fee allowed"

  wethToken.withdraw(amount)

  rocketDepositPool: RocketDepositPoolInterface = RocketDepositPoolInterface(
    rocketStorage.getAddress(keccak256("contract.addressrocketDepositPool")))
  assert rethToken.balanceOf(self) == 0, "unexpected held rETH"
  rocketDepositPool.deposit(value = amount)

  assert rethToken.approve(swapRouter, rethToken.balanceOf(self)), "rETH approve failed"
  raw_call(swapRouter, data)
  assert wethToken.balanceOf(self) >= amount, "not enough WETH after swap"
  assert rethToken.balanceOf(self) == 0, "rETH left over after swap"

  assert wethToken.approve(msg.sender, amount), "WETH approve failed"
  return keccak256("ERC3156FlashBorrower.onFlashLoan")

@external
def arb(wethAmount: uint256, minProfit: uint256, swapData: Bytes[MAX_DATA]):
  RocketDepositArbitrageInterface(self).drain()
  assert flashLender.flashLoan(self, wethToken.address, wethAmount, swapData), "flash loan failed"
  profit: uint256 = wethToken.balanceOf(self)
  assert profit >= minProfit, "not enough profit"
  wethToken.withdraw(profit)
  send(msg.sender, profit)

@external
def drain():
  rethBalance: uint256 = rethToken.balanceOf(self)
  if 0 < rethBalance:
    rethToken.transfer(self.owner, rethBalance)

  wethBalance: uint256 = wethToken.balanceOf(self)
  if 0 < wethBalance:
    wethToken.withdraw(wethBalance)
  if 0 < self.balance:
    send(self.owner, self.balance)

Contract Security Audit

Contract ABI

API
[{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"flashLenderAddress","type":"address"},{"name":"rocketStorageAddress","type":"address"},{"name":"swapRouterAddress","type":"address"},{"name":"wethAddress","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"setOwner","inputs":[{"name":"newOwner","type":"address"}],"outputs":[]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"nonpayable","type":"function","name":"onFlashLoan","inputs":[{"name":"initiator","type":"address"},{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"fee","type":"uint256"},{"name":"data","type":"bytes"}],"outputs":[{"name":"","type":"bytes32"}]},{"stateMutability":"nonpayable","type":"function","name":"arb","inputs":[{"name":"wethAmount","type":"uint256"},{"name":"minProfit","type":"uint256"},{"name":"swapData","type":"bytes"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"drain","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}]}]

6020610d206000396000518060a01c610d1b576040526020610d406000396000518060a01c610d1b576060526020610d606000396000518060a01c610d1b576080526020610d806000396000518060a01c610d1b5760a05234610d1b5733600055606051610c1a52610c1a516321f8a72160e0527fe3744443225bff7cc22028be036b80de58057d65a3fdca0a3df329f525e31ccc61010052602060e0602460fc845afa6100b2573d600060003e3d6000fd5b60203d10610d1b5760e0518060a01c610d1b576101205261012090505160c05260c051610c3a5260a051610c5a52604051610c7a52608051610c9a52610c1a61010061000039610cba610000f36003361161000c57610b97565b60003560e01c6313af403581186100a75760243610610c08576004358060a01c610c085760405234610c085760005433181561009f5760186060527f6f6e6c79206f776e65722063616e20736574206f776e6572000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b604051600055005b6323e30c8b811861077b5760c43610610c08576004358060a01c610c08576040526024358060a01c610c0857606052608435600401612000813511610c085780358060805260208201818160a03750505034610c085730604051181561016d5760206120a0527f6f6e6c7920492063616e20696e697469617465206120666c617368206c6f616e6120c0526120a0506120a051806120c001601f826000031636823750506308c379a061206052602061208052601f19601f6120a051011660440161207cfd5b6020610c5a60003960005160605118156101e757601d6120a0527f6f6e6c7920574554482063616e20626520666c617368206c6f616e65640000006120c0526120a0506120a051806120c001601f826000031636823750506308c379a061206052602061208052601f19601f6120a051011660440161207cfd5b6064351561025557600e6120a0527f6e6f2066656520616c6c6f7765640000000000000000000000000000000000006120c0526120a0506120a051806120c001601f826000031636823750506308c379a061206052602061208052601f19601f6120a051011660440161207cfd5b6020610c5a600039600051632e1a7d4d6120a0526044356120c052803b15610c085760006120a060246120bc6000855af1610295573d600060003e3d6000fd5b506020610c1a6000396000516321f8a7216120c0527f65dd923ddfc8d8ae6088f80077201d2403cbd565f0ba25e09841e2799ec90bb26120e05260206120c060246120dc845afa6102eb573d600060003e3d6000fd5b60203d10610c08576120c0518060a01c610c0857612100526121009050516120a0526020610c3a6000396000516370a082316120c052306120e05260206120c060246120dc845afa610342573d600060003e3d6000fd5b60203d10610c08576120c0905051156103bb576014612100527f756e65787065637465642068656c6420724554480000000000000000000000006121205261210050612100518061212001601f826000031636823750506308c379a06120c05260206120e052601f19601f6121005101166044016120dcfd5b6120a05163d0e30db06120c052803b15610c085760006120c060046120dc604435855af16103ee573d600060003e3d6000fd5b506020610c3a60003960005163095ea7b3612100526020610c9a600039600051612120526020610c3a6000396000516370a082316120c052306120e05260206120c060246120dc845afa610447573d600060003e3d6000fd5b60203d10610c08576120c0905051612140526020612100604461211c6000855af1610477573d600060003e3d6000fd5b60203d10610c0857612100518060011c610c0857612160526121609050516104ff576013612180527f7245544820617070726f7665206661696c6564000000000000000000000000006121a0526121805061218051806121a001601f826000031636823750506308c379a061214052602061216052601f19601f61218051011660440161215cfd5b6080506000600060805160a060006020610c9a6000396000515af1610529573d600060003e3d6000fd5b6044356020610c5a6000396000516370a082316120c052306120e05260206120c060246120dc845afa610561573d600060003e3d6000fd5b60203d10610c08576120c090505110156105db57601a612100527f6e6f7420656e6f756768205745544820616674657220737761700000000000006121205261210050612100518061212001601f826000031636823750506308c379a06120c05260206120e052601f19601f6121005101166044016120dcfd5b6020610c3a6000396000516370a082316120c052306120e05260206120c060246120dc845afa610610573d600060003e3d6000fd5b60203d10610c08576120c090505115610689576019612100527f72455448206c656674206f7665722061667465722073776170000000000000006121205261210050612100518061212001601f826000031636823750506308c379a06120c05260206120e052601f19601f6121005101166044016120dcfd5b6020610c5a60003960005163095ea7b36120c052336120e0526044356121005260206120c060446120dc6000855af16106c7573d600060003e3d6000fd5b60203d10610c08576120c0518060011c610c08576121205261212090505161074f576013612140527f5745544820617070726f7665206661696c6564000000000000000000000000006121605261214050612140518061216001601f826000031636823750506308c379a061210052602061212052601f19601f61214051011660440161211cfd5b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd96120c05260206120c0f35b63d9c9662a8118610a165760843610610c0857604435600401612000813511610c085780358060405260208201818160603750505034610c085730639890220b61206052803b15610c08576000612060600461207c6000855af16107e4573d600060003e3d6000fd5b506020610c7a600039600051635cffe9de61206052608030612080526020610c5a6000396000516120a0526004356120c052806120e052806120800160405180825260208201818183606060045afa5050508051806020830101601f82600003163682375050601f19601f8251602001011690508101505060206120606120a461207c6000855af161087b573d600060003e3d6000fd5b60203d10610c0857612060518060011c610c085761412052614120905051610903576011614140527f666c617368206c6f616e206661696c65640000000000000000000000000000006141605261414050614140518061416001601f826000031636823750506308c379a061410052602061412052601f19601f61414051011660440161411cfd5b6020610c5a6000396000516370a0823161208052306120a0526020612080602461209c845afa610938573d600060003e3d6000fd5b60203d10610c0857612080905051612060526024356120605110156109bd576011612080527f6e6f7420656e6f7567682070726f6669740000000000000000000000000000006120a0526120805061208051806120a001601f826000031636823750506308c379a061204052602061206052601f19601f61208051011660440161205cfd5b6020610c5a600039600051632e1a7d4d61208052612060516120a052803b15610c08576000612080602461209c6000855af16109fe573d600060003e3d6000fd5b50600060006000600061206051336000f115610c0857005b639890220b8118610b715760043610610c085734610c08576020610c3a6000396000516370a0823160605230608052602060606024607c845afa610a5f573d600060003e3d6000fd5b60203d10610c0857606090505160405260405115610acd576020610c3a60003960005163a9059cbb60605260005460805260405160a052602060606044607c6000855af1610ab2573d600060003e3d6000fd5b60203d10610c08576060518060011c610c085760c05260c050505b6020610c5a6000396000516370a082316080523060a052602060806024609c845afa610afe573d600060003e3d6000fd5b60203d10610c0857608090505160605260605115610b54576020610c5a600039600051632e1a7d4d60805260605160a052803b15610c0857600060806024609c6000855af1610b52573d600060003e3d6000fd5b505b4715610b6f576000600060006000476000546000f115610c08575b005b638da5cb5b8118610b955760043610610c085734610c085760005460405260206040f35b505b6020610c5a600039600051331815610c065760166040527f6f6e6c7920574554482063616e2073656e64204554480000000000000000000060605260405060405180606001601f826000031636823750506308c379a06000526020602052601f19601f6040510116604401601cfd5b005b600080fda165767970657283000307000b005b600080fd00000000000000000000000007df2ad9878f8797b4055230bbae5c808b8259b30000000000000000000000001d8f8f00cfa6758d7be78336684788fb0ee0fa460000000000000000000000001111111254fb6c44bac0bed2854e76f90643097d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

Deployed Bytecode

0x6003361161000c57610b97565b60003560e01c6313af403581186100a75760243610610c08576004358060a01c610c085760405234610c085760005433181561009f5760186060527f6f6e6c79206f776e65722063616e20736574206f776e6572000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b604051600055005b6323e30c8b811861077b5760c43610610c08576004358060a01c610c08576040526024358060a01c610c0857606052608435600401612000813511610c085780358060805260208201818160a03750505034610c085730604051181561016d5760206120a0527f6f6e6c7920492063616e20696e697469617465206120666c617368206c6f616e6120c0526120a0506120a051806120c001601f826000031636823750506308c379a061206052602061208052601f19601f6120a051011660440161207cfd5b6020610c5a60003960005160605118156101e757601d6120a0527f6f6e6c7920574554482063616e20626520666c617368206c6f616e65640000006120c0526120a0506120a051806120c001601f826000031636823750506308c379a061206052602061208052601f19601f6120a051011660440161207cfd5b6064351561025557600e6120a0527f6e6f2066656520616c6c6f7765640000000000000000000000000000000000006120c0526120a0506120a051806120c001601f826000031636823750506308c379a061206052602061208052601f19601f6120a051011660440161207cfd5b6020610c5a600039600051632e1a7d4d6120a0526044356120c052803b15610c085760006120a060246120bc6000855af1610295573d600060003e3d6000fd5b506020610c1a6000396000516321f8a7216120c0527f65dd923ddfc8d8ae6088f80077201d2403cbd565f0ba25e09841e2799ec90bb26120e05260206120c060246120dc845afa6102eb573d600060003e3d6000fd5b60203d10610c08576120c0518060a01c610c0857612100526121009050516120a0526020610c3a6000396000516370a082316120c052306120e05260206120c060246120dc845afa610342573d600060003e3d6000fd5b60203d10610c08576120c0905051156103bb576014612100527f756e65787065637465642068656c6420724554480000000000000000000000006121205261210050612100518061212001601f826000031636823750506308c379a06120c05260206120e052601f19601f6121005101166044016120dcfd5b6120a05163d0e30db06120c052803b15610c085760006120c060046120dc604435855af16103ee573d600060003e3d6000fd5b506020610c3a60003960005163095ea7b3612100526020610c9a600039600051612120526020610c3a6000396000516370a082316120c052306120e05260206120c060246120dc845afa610447573d600060003e3d6000fd5b60203d10610c08576120c0905051612140526020612100604461211c6000855af1610477573d600060003e3d6000fd5b60203d10610c0857612100518060011c610c0857612160526121609050516104ff576013612180527f7245544820617070726f7665206661696c6564000000000000000000000000006121a0526121805061218051806121a001601f826000031636823750506308c379a061214052602061216052601f19601f61218051011660440161215cfd5b6080506000600060805160a060006020610c9a6000396000515af1610529573d600060003e3d6000fd5b6044356020610c5a6000396000516370a082316120c052306120e05260206120c060246120dc845afa610561573d600060003e3d6000fd5b60203d10610c08576120c090505110156105db57601a612100527f6e6f7420656e6f756768205745544820616674657220737761700000000000006121205261210050612100518061212001601f826000031636823750506308c379a06120c05260206120e052601f19601f6121005101166044016120dcfd5b6020610c3a6000396000516370a082316120c052306120e05260206120c060246120dc845afa610610573d600060003e3d6000fd5b60203d10610c08576120c090505115610689576019612100527f72455448206c656674206f7665722061667465722073776170000000000000006121205261210050612100518061212001601f826000031636823750506308c379a06120c05260206120e052601f19601f6121005101166044016120dcfd5b6020610c5a60003960005163095ea7b36120c052336120e0526044356121005260206120c060446120dc6000855af16106c7573d600060003e3d6000fd5b60203d10610c08576120c0518060011c610c08576121205261212090505161074f576013612140527f5745544820617070726f7665206661696c6564000000000000000000000000006121605261214050612140518061216001601f826000031636823750506308c379a061210052602061212052601f19601f61214051011660440161211cfd5b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd96120c05260206120c0f35b63d9c9662a8118610a165760843610610c0857604435600401612000813511610c085780358060405260208201818160603750505034610c085730639890220b61206052803b15610c08576000612060600461207c6000855af16107e4573d600060003e3d6000fd5b506020610c7a600039600051635cffe9de61206052608030612080526020610c5a6000396000516120a0526004356120c052806120e052806120800160405180825260208201818183606060045afa5050508051806020830101601f82600003163682375050601f19601f8251602001011690508101505060206120606120a461207c6000855af161087b573d600060003e3d6000fd5b60203d10610c0857612060518060011c610c085761412052614120905051610903576011614140527f666c617368206c6f616e206661696c65640000000000000000000000000000006141605261414050614140518061416001601f826000031636823750506308c379a061410052602061412052601f19601f61414051011660440161411cfd5b6020610c5a6000396000516370a0823161208052306120a0526020612080602461209c845afa610938573d600060003e3d6000fd5b60203d10610c0857612080905051612060526024356120605110156109bd576011612080527f6e6f7420656e6f7567682070726f6669740000000000000000000000000000006120a0526120805061208051806120a001601f826000031636823750506308c379a061204052602061206052601f19601f61208051011660440161205cfd5b6020610c5a600039600051632e1a7d4d61208052612060516120a052803b15610c08576000612080602461209c6000855af16109fe573d600060003e3d6000fd5b50600060006000600061206051336000f115610c0857005b639890220b8118610b715760043610610c085734610c08576020610c3a6000396000516370a0823160605230608052602060606024607c845afa610a5f573d600060003e3d6000fd5b60203d10610c0857606090505160405260405115610acd576020610c3a60003960005163a9059cbb60605260005460805260405160a052602060606044607c6000855af1610ab2573d600060003e3d6000fd5b60203d10610c08576060518060011c610c085760c05260c050505b6020610c5a6000396000516370a082316080523060a052602060806024609c845afa610afe573d600060003e3d6000fd5b60203d10610c0857608090505160605260605115610b54576020610c5a600039600051632e1a7d4d60805260605160a052803b15610c0857600060806024609c6000855af1610b52573d600060003e3d6000fd5b505b4715610b6f576000600060006000476000546000f115610c08575b005b638da5cb5b8118610b955760043610610c085734610c085760005460405260206040f35b505b6020610c5a600039600051331815610c065760166040527f6f6e6c7920574554482063616e2073656e64204554480000000000000000000060605260405060405180606001601f826000031636823750506308c379a06000526020602052601f19601f6040510116604401601cfd5b005b600080fda165767970657283000307000b0000000000000000000000001d8f8f00cfa6758d7be78336684788fb0ee0fa46000000000000000000000000ae78736cd615f374d3085123a210448e74fc6393000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000007df2ad9878f8797b4055230bbae5c808b8259b30000000000000000000000001111111254fb6c44bac0bed2854e76f90643097d

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000007df2ad9878f8797b4055230bbae5c808b8259b30000000000000000000000001d8f8f00cfa6758d7be78336684788fb0ee0fa460000000000000000000000001111111254fb6c44bac0bed2854e76f90643097d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

-----Decoded View---------------
Arg [0] : flashLenderAddress (address): 0x07df2ad9878F8797B4055230bbAE5C808b8259b3
Arg [1] : rocketStorageAddress (address): 0x1d8f8f00cfa6758d7bE78336684788Fb0ee0Fa46
Arg [2] : swapRouterAddress (address): 0x1111111254fb6c44bAC0beD2854e76F90643097d
Arg [3] : wethAddress (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000007df2ad9878f8797b4055230bbae5c808b8259b3
Arg [1] : 0000000000000000000000001d8f8f00cfa6758d7be78336684788fb0ee0fa46
Arg [2] : 0000000000000000000000001111111254fb6c44bac0bed2854e76f90643097d
Arg [3] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.