def main(): deployer = accounts.at('0xB593d82d53e2c187dc49673709a6E9f806cdC835', force=True) # deployer = accounts.load('gh') # deploy safeboxes safebox_eth = SafeBoxETH.deploy( '0x41c84c0e2EE0b740Cf0d31F63f3B6F627DC6b393', 'Interest Bearing Ether v2', 'ibETHv2', {'from': deployer}) safebox_dai = SafeBox.deploy('0x8e595470Ed749b85C6F7669de83EAe304C2ec68F', 'Interest Bearing Dai Stablecoin v2', 'ibDAIv2', {'from': deployer}) safebox_usdt = SafeBox.deploy('0x48759F220ED983dB51fA7A8C0D2AAb8f3ce4166a', 'Interest Bearing Tether USD v2', 'ibUSDTv2', {'from': deployer}) safebox_usdc = SafeBox.deploy('0x76Eb2FE28b36B3ee97F3Adae0C69606eeDB2A37c', 'Interest Bearing USD Coin v2', 'ibUSDCv2', {'from': deployer}) safebox_yfi = SafeBox.deploy('0xFa3472f7319477c9bFEcdD66E4B948569E7621b9', 'Interest Bearing yearn.finance v2', 'ibYFIv2', {'from': deployer}) # add banks usdt = interface.IERC20Ex('0xdAC17F958D2ee523a2206206994597C13D831ec7') usdc = interface.IERC20Ex('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48') yfi = interface.IERC20Ex('0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e') cyusdt = '0x48759F220ED983dB51fA7A8C0D2AAb8f3ce4166a' cyusdc = '0x76Eb2FE28b36B3ee97F3Adae0C69606eeDB2A37c' cyyfi = '0xFa3472f7319477c9bFEcdD66E4B948569E7621b9' bank = HomoraBank.at('0x5f5Cd91070960D13ee549C9CC47e7a4Cd00457bb') bank.addBank(usdt, cyusdt, {'from': deployer}) bank.addBank(usdc, cyusdc, {'from': deployer})
def main(): deployer = accounts.at('0xB593d82d53e2c187dc49673709a6E9f806cdC835', force=True) # deployer = accounts.load('gh') # deploy safeboxes safebox_eth = SafeBoxETH.deploy( '0x41c84c0e2EE0b740Cf0d31F63f3B6F627DC6b393', 'Interest Bearing Ether v2', 'ibETHv2', {'from': deployer}) safebox_dai = SafeBox.deploy('0x8e595470Ed749b85C6F7669de83EAe304C2ec68F', 'Interest Bearing Dai Stablecoin v2', 'ibDAIv2', {'from': deployer}) safebox_usdt = SafeBox.deploy('0x48759F220ED983dB51fA7A8C0D2AAb8f3ce4166a', 'Interest Bearing Tether USD v2', 'ibUSDTv2', {'from': deployer}) safebox_usdc = SafeBox.deploy('0x76Eb2FE28b36B3ee97F3Adae0C69606eeDB2A37c', 'Interest Bearing USD Coin v2', 'ibUSDCv2', {'from': deployer}) safebox_yfi = SafeBox.deploy('0xFa3472f7319477c9bFEcdD66E4B948569E7621b9', 'Interest Bearing yearn.finance v2', 'ibYFIv2', {'from': deployer})
def main(): admin = accounts[0] alice = accounts[1] bob = accounts[2] weth = interface.IERC20Ex('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2') cyweth = interface.IERC20Ex('0x41c84c0e2ee0b740cf0d31f63f3b6f627dc6b393') homora = HomoraBank.deploy({'from': admin}) safebox = SafeBoxETH.deploy(cyweth, 'ibETHv2', 'ibETHv2', {'from': admin}) # set up funds to alice mint_tokens(weth, alice) mint_tokens(weth, bob) weth.approve(cyweth, 2**256-1, {'from': bob}) ################################################################# # check decimals assert safebox.decimals() == cyweth.decimals(), 'incorrect decimals' ################################################################# # deposit print('====================================') print('Case 1. deposit') prevETHAlice = alice.balance() prevWETHBob = weth.balanceOf(bob) prevIBETHAlice = safebox.balanceOf(alice) prevcyWETHBob = cyweth.balanceOf(bob) alice_amt = 10**18 bob_amt = 10**18 safebox.deposit({'from': alice, 'value': alice_amt}) chain.mine(20) cyweth.mint(bob_amt, {'from': bob}) curETHAlice = alice.balance() curWETHBob = weth.balanceOf(bob) curIBETHAlice = safebox.balanceOf(alice) curcyWETHBob = cyweth.balanceOf(bob) print('∆ eth alice', curETHAlice - prevETHAlice) print('∆ weth bob', curWETHBob - prevWETHBob) print('∆ ibETH bal alice', curIBETHAlice - prevIBETHAlice) print('∆ cyWETH bal bob', curcyWETHBob - prevcyWETHBob) print('calculated ibETH alice', alice_amt * 10**18 // cyweth.exchangeRateStored()) print('calculated ibETH bob', bob_amt * 10**18 // cyweth.exchangeRateStored()) assert curETHAlice - prevETHAlice == -alice_amt, 'incorrect alice amount' assert curWETHBob - prevWETHBob == -bob_amt, 'incorrect bob amount' assert almostEqual(curIBETHAlice - prevIBETHAlice, curcyWETHBob - prevcyWETHBob) chain.mine(200) ################################################################# # alice withdraws 1/3 & 2/3. bob withdraws all. print('====================================') print('Case 2. withdraw') alice_withdraw_1 = safebox.balanceOf(alice) // 3 alice_withdraw_2 = safebox.balanceOf(alice) - alice_withdraw_1 bob_withdraw = cyweth.balanceOf(bob) // 3 prevETHAlice = alice.balance() prevWETHBob = weth.balanceOf(bob) prevIBETHAlice = safebox.balanceOf(alice) prevcyWETHBob = cyweth.balanceOf(bob) safebox.withdraw(alice_withdraw_1, {'from': alice}) chain.mine(20) cyweth.redeem(bob_withdraw, {'from': bob}) curETHAlice = alice.balance() curWETHBob = weth.balanceOf(bob) curIBETHAlice = safebox.balanceOf(alice) curcyWETHBob = cyweth.balanceOf(bob) print('∆ eth alice', curETHAlice - prevETHAlice) print('∆ weth bob', curWETHBob - prevWETHBob) print('∆ ibETH bal alice', curIBETHAlice - prevIBETHAlice) print('∆ cyWETH bal bob', curcyWETHBob - prevcyWETHBob) assert almostEqual(curETHAlice - prevETHAlice, alice_amt // 3), 'incorrect alice withdraw eth amount' assert almostEqual(curWETHBob - prevWETHBob, bob_amt // 3), 'incorrect bob withdraw eth amount' assert almostEqual(curIBETHAlice - prevIBETHAlice, curcyWETHBob - prevcyWETHBob), 'incorrect withdraw amount' chain.mine(20) prevETHAlice = alice.balance() prevIBETHAlice = safebox.balanceOf(alice) safebox.withdraw(alice_withdraw_2, {'from': alice}) curETHAlice = alice.balance() curIBETHAlice = safebox.balanceOf(alice) print('∆ eth alice', curETHAlice - prevETHAlice) print('∆ ibETH bal alice', curIBETHAlice - prevIBETHAlice) assert almostEqual(curETHAlice - prevETHAlice, alice_amt * 2 // 3), 'incorrect second withdraw'