예제 #1
0
    def test_execute(self):
        # given
        self.tx.approve([self.token1], directly())

        # when
        self.tx.execute([self.token1.address], [
            Invocation(
                self.token1.address,
                self.token1.transfer_calldata(self.other_address,
                                              Wad.from_number(500)))
        ])

        # then
        assert self.token1.balance_of(
            self.our_address) == Wad.from_number(999500)
        assert self.token1.balance_of(
            self.other_address) == Wad.from_number(500)
예제 #2
0
 def setup_method(self):
     self.web3 = Web3(EthereumTesterProvider())
     self.web3.eth.defaultAccount = self.web3.eth.accounts[0]
     self.our_address = Address(self.web3.eth.defaultAccount)
     self.other_address = Address(self.web3.eth.accounts[1])
     self.tx = TxManager.deploy(self.web3)
     self.token1 = DSToken.deploy(self.web3, 'ABC')
     self.token1.mint(Wad.from_number(1000000))
     self.token2 = DSToken.deploy(self.web3, 'DEF')
예제 #3
0
def new_sai() -> SaiDeployment:
    def deploy(web3, contract_name, args=None):
        contract_factory = web3.eth.contract(
            abi=json.loads(
                pkg_resources.resource_string('api.feed',
                                              f'abi/{contract_name}.abi')),
            bytecode=pkg_resources.resource_string('api.feed',
                                                   f'abi/{contract_name}.bin'))
        tx_hash = contract_factory.deploy(args=args)
        receipt = web3.eth.getTransactionReceipt(tx_hash)
        return receipt['contractAddress']

    web3 = Web3(EthereumTesterProvider())
    web3.eth.defaultAccount = web3.eth.accounts[0]
    our_address = Address(web3.eth.defaultAccount)
    sai = DSToken.deploy(web3, 'SAI')
    sin = DSToken.deploy(web3, 'SIN')
    gem = DSToken.deploy(web3, 'ETH')
    pip = DSValue.deploy(web3)
    skr = DSToken.deploy(web3, 'SKR')
    pot = DSVault.deploy(web3)
    pit = DSVault.deploy(web3)
    tip = deploy(web3, 'Tip')
    dad = DSGuard.deploy(web3)
    jug = deploy(web3, 'SaiJug', [sai.address.address, sin.address.address])
    jar = deploy(
        web3, 'SaiJar',
        [skr.address.address, gem.address.address, pip.address.address])

    tub = Tub.deploy(web3, Address(jar), Address(jug), pot.address,
                     pit.address, Address(tip))
    tap = Tap.deploy(web3, tub.address, pit.address)
    top = Top.deploy(web3, tub.address, tap.address)

    # set permissions
    dad.permit(DSGuard.ANY, DSGuard.ANY, DSGuard.ANY)
    for auth in [sai, sin, skr, pot, pit, tub, tap, top]:
        auth.set_authority(dad.address)

    # approve, mint some GEMs
    tub.approve(directly())
    gem.mint(Wad.from_number(1000000))

    web3.currentProvider.rpc_methods.evm_snapshot()
    return SaiDeployment(web3, our_address, gem, sai, skr, tub, tap, top)
예제 #4
0
# logging.info(etherdelta.amount_filled(offchain_order))
# logging.info(etherdelta.can_trade(offchain_order, Wad.from_number(0.0026)))
# logging.info(etherdelta.can_trade(offchain_order, Wad.from_number(0.0025)))
# logging.info(etherdelta.can_trade(offchain_order, Wad.from_number(0.0006)))
# logging.info(etherdelta.trade(offchain_order, Wad.from_number(0.0006)))
# logging.info(etherdelta.amount_available(offchain_order))
# logging.info(etherdelta.amount_filled(offchain_order))
# logging.info(etherdelta.cancel_order(offchain_order))
# logging.info(etherdelta.amount_available(offchain_order))
# logging.info(etherdelta.amount_filled(offchain_order))
#
# logging.info("---")

logging.info(len(etherdelta.active_onchain_orders()))
logging.info(
    etherdelta.place_order_onchain(gem.address, Wad.from_number(0.0025),
                                   sai.address, Wad.from_number(0.1), 3600003))
onchain_order = OnChainOrder(
    gem.address, Wad.from_number(0.0025), sai.address, Wad.from_number(0.1),
    3600003,
    108207123768469167288277382516046143893265072544230933698775098822034023113615,
    our_address)
logging.info(len(etherdelta.active_onchain_orders()))
logging.info(onchain_order)
logging.info(etherdelta.amount_available(onchain_order))
logging.info(etherdelta.amount_filled(onchain_order))
logging.info(len(etherdelta.active_onchain_orders()))
logging.info(etherdelta.cancel_order(onchain_order))
logging.info(etherdelta.amount_available(onchain_order))
logging.info(etherdelta.amount_filled(onchain_order))
logging.info(len(etherdelta.active_onchain_orders()))