def connect_multisig(self): deployer = self.owner multisigParams = badger_config["devMultisigParams"] multisigParams.owners = [deployer.address] print("Deploy Dev Multisig") self.devMultisig = connect_gnosis_safe(badger_config.multisig.address)
def __init__(self, contract, testMode=True): self.contract = connect_gnosis_safe(contract) console.print("contract", contract) self.firstOwner = get_first_owner(contract) self.transactions = [] self.testMode = testMode if testMode and rpc.is_active(): distribute_test_ether(self.firstOwner, Wei("2 ether")) self.convert_to_test_mode()
def __init__(self, deployer, devProxyAdmin, config, publish_source=False): self.deployer = deployer self.devProxyAdmin = devProxyAdmin self.config = config self.publish_source = publish_source # Admin is a multisig self.admin = connect_gnosis_safe(config.adminMultiSig) # Router ref, lazily set. self.router = None self.strategies = DotMap() self.logic = DotMap()
def swap_transfer(recipient, params): badger = connect_badger("deploy-final.json") badger.paymentsMultisig = connect_gnosis_safe( "0xD4868d98849a58F743787c77738D808376210292" ) expectedMultisig = "0xB65cef03b9B89f99517643226d76e286ee999e77" assert badger.devMultisig == expectedMultisig multi = GnosisSafe(badger.paymentsMultisig) one_wei = Wei("1") end_token = interface.IERC20(params["path"][-1]) console.print("Executing Swap:", style="yellow") console.print(params) # === Approve Uniswap Router on Rewards Escrow if not approved === uniswap = UniswapSystem() # === Approve UNI Router for Badger === # Note: The allowance must first be set to 0 id = multi.addTx( MultisigTxMetadata( description="Approve UNI Router to send BADGER", operation="call", ), params={ "to": badger.token.address, "data": badger.token.approve.encode_input(uniswap.router, 0), }, ) tx = multi.executeTx(id) # Set proper allowance id = multi.addTx( MultisigTxMetadata( description="Approve UNI Router to send BADGER", operation="call", ), params={ "to": badger.token.address, "data": badger.token.approve.encode_input( uniswap.router, int(params["max_in"] * 1.5) ), }, ) tx = multi.executeTx(id) console.print( { "rewardsEscrowBalance": val( badger.token.balanceOf(badger.paymentsMultisig) ), "rewardsEscrowRouterAllowance": val( badger.token.allowance(badger.paymentsMultisig, uniswap.router) ), "max_in": val(params["max_in"]), } ) assert badger.token.balanceOf(badger.paymentsMultisig) > params["max_in"] assert ( badger.token.allowance(badger.paymentsMultisig, uniswap.router) >= params["max_in"] ) # === Trade Badger === before = end_token.balanceOf(badger.paymentsMultisig) beforeBadger = badger.token.balanceOf(badger.paymentsMultisig) console.print({"EAO": params["exact_amount_out"]}) expiration = chain.time() + 8000 id = multi.addTx( MultisigTxMetadata( description="Trade Badger for output token", operation="call", callInfo={}, ), params={ "to": uniswap.router.address, "data": uniswap.router.swapTokensForExactTokens.encode_input( params["exact_amount_out"], int(params["max_in"] * 1.5), params["path"], badger.paymentsMultisig, expiration, ), }, ) tx = multi.executeTx(id) print(tx.call_trace()) print(tx.events) printUniTrade( method="swapTokensForExactTokens", params=( params["exact_amount_out"], int(params["max_in"] * 1.5), params["path"], badger.paymentsMultisig, expiration, ), ) console.log("=== Post Trade ===") console.print( { "before_input_coin": val(beforeBadger), "after_input_coin": val(badger.token.balanceOf(badger.paymentsMultisig)), "change_input_coin": val( beforeBadger - badger.token.balanceOf(badger.paymentsMultisig) ), "before_output_coin": val(before, decimals=end_token.decimals()), "post_output_coin": val( end_token.balanceOf(badger.paymentsMultisig), decimals=end_token.decimals(), ), "end_token": end_token, "chain_time_before": chain.time(), } ) assert end_token.balanceOf(badger.paymentsMultisig) >= params["exact_amount_out"] console.print("\n[green] ✅ Actions Complete [/green]")
def connect_multisig(self): deployer = self.deployer if env_config.debug: print("Deploy Dev Multisig") self.devMultisig = connect_gnosis_safe(badger_config.multisig.address)
def connect_centralized_oracle(self, address): self.centralizedOracle = connect_gnosis_safe(address)
def connect_treasury_multisig(self): self.treasuryMultisig = connect_gnosis_safe( badger_config.treasury_multisig.address )
def connect_multisig(self): self.devMultisig = connect_gnosis_safe(badger_config.multisig.address)
def connect_ops_multisig(self, address): self.opsMultisig = connect_gnosis_safe(address)
def connect_treasury_multisig(self, address): self.treasuryMultisig = connect_gnosis_safe(address)
def connect_multisig(self, address): self.devMultisig = connect_gnosis_safe(address)