예제 #1
0
    def __init__(self, web3: Web3, address: Address):
        assert isinstance(web3, Web3)
        assert isinstance(address, Address)

        self.web3 = web3
        self.address = address
        self._contract = self._get_contract(web3, self.abi, address)
        vat_address = Address(self._contract.functions.vat().call())
        self.vat = Vat(web3, vat_address) if vat_address != Address.zero() else None
        vow_address = Address(self._contract.functions.vow().call())
        self.vow = Vow(web3, vow_address) if vow_address != Address.zero() else None
예제 #2
0
파일: auctions.py 프로젝트: mtyou/pymaker
 def active_auctions(self) -> list:
     active_auctions = []
     for index in range(1, self.kicks()+1):
         sale = self.sales(index)
         if sale.usr != Address.zero():
             active_auctions.append(sale)
         index += 1
     return active_auctions
예제 #3
0
 def test_getters(self, mcd, clipper):
     assert clipper.ilk_name() == "ETH-B"
     collateral = mcd.collaterals[clipper.ilk_name()]
     assert clipper.kicks() == 0
     assert clipper.buf() == Ray.from_number(1.50)
     assert clipper.tail() == 10800
     assert clipper.cusp() == Ray.from_number(0.3333)
     assert clipper.chip() == Wad.from_number(0.02)
     assert clipper.tip() == Rad.from_number(100)
     assert clipper.chost() == collateral.ilk.dust * Rad(mcd.dog.chop(collateral.ilk))
     assert isinstance(clipper.calc, Address)
     assert clipper.calc != Address.zero()
     assert clipper.dog.address == mcd.dog.address
     assert clipper.vat.address == mcd.vat.address
     assert clipper.active_auctions() == []
예제 #4
0
    run_transactions = True
elif len(sys.argv) > 2:
    our_address = Address(sys.argv[2])
    run_transactions = False
else:
    our_address = None
    run_transactions = False

gas_strategy = DefaultGasPrice() if len(sys.argv) <= 4 else \
    GeometricGasPrice(web3=web3,
                      initial_price=None,
                      initial_tip=int(float(sys.argv[4]) * GeometricGasPrice.GWEI),
                      every_secs=5,
                      max_price=50 * GeometricGasPrice.GWEI)

eth = EthToken(web3, Address.zero())


class TestApp:
    def main(self):
        with Lifecycle(web3) as lifecycle:
            lifecycle.on_block(self.on_block)

    def on_block(self):
        block = web3.eth.blockNumber
        logging.info(f"Found block; web3.eth.blockNumber={block}")

        if run_transactions and block % 3 == 0:
            # dummy transaction: send 0 ETH to ourself
            eth_transfer(web3=web3, to=our_address, amount=Wad(0)).transact(
                from_address=our_address, gas=21000, gas_strategy=gas_strategy)