コード例 #1
0
    def __init__(self, contract, name):
        ExternStateTokenInterface.__init__(self, contract, name)
        
        self.contract = contract
        self.contract_name = name

        self.feePool = lambda: self.contract.functions.feePool().call()
        self.feeAuthority = lambda: self.contract.functions.feeAuthority().call()
        self.transferFeeRate = lambda: self.contract.functions.transferFeeRate().call()

        self.transferFeeIncurred = lambda value: self.contract.functions.transferFeeIncurred(value).call()
        self.transferPlusFee = lambda value: self.contract.functions.transferPlusFee(value).call()
        self.amountReceived = lambda value: self.contract.functions.amountReceived(value).call()

        self.setTransferFeeRate = lambda sender, new_fee_rate: mine_tx(
            self.contract.functions.setTransferFeeRate(new_fee_rate).transact({'from': sender}), "setTransferFeeRate", self.contract_name)
        self.setFeeAuthority = lambda sender, new_fee_authority: mine_tx(
            self.contract.functions.setFeeAuthority(new_fee_authority).transact({'from': sender}), "setFeeAuthority", self.contract_name)
        self.transferSenderPaysFee = lambda sender, to, value: mine_tx(
            self.contract.functions.transferSenderPaysFee(to, value).transact({'from': sender}), "transferSenderPaysFee", self.contract_name)
        self.transferFromSenderPaysFee = lambda sender, frm, to, value: mine_tx(
            self.contract.functions.transferFromSenderPaysFee(frm, to, value).transact({'from': sender}), "transferFromSenderPaysFee", self.contract_name)
        self.withdrawFees = lambda sender, account, value: mine_tx(
            self.contract.functions.withdrawFees(account, value).transact({'from': sender}), "withdrawFees", self.contract_name)
        self.donateToFeePool = lambda sender, value: mine_tx(
            self.contract.functions.donateToFeePool(value).transact({'from': sender}), "donateToFeePool", self.contract_name)
    def test_change_state(self):
        lucky_one = fresh_account()

        print()
        # Deploy contract and old tokenstate
        _old_tokenstate, _ = attempt_deploy(self.compiled, 'TokenState',
                                            MASTER, [MASTER, MASTER])
        old_tokenstate = TokenStateInterface(_old_tokenstate, 'TokenState')
        _token, _ = attempt_deploy(self.compiled, 'ExternStateToken', MASTER, [
            self.proxy.address, old_tokenstate.contract.address, "Test Token",
            "TEST", 1000 * UNIT, 18, MASTER
        ])
        token = ExternStateTokenInterface(_token, 'ExternStateToken')
        mine_txs([
            self.proxy.functions.setTarget(token.contract.address).transact(
                {"from": MASTER})
        ])

        old_tokenstate.setAssociatedContract(MASTER, token.contract.address)
        self.assertEqual(token.balanceOf(lucky_one), 0)
        self.assertEqual(old_tokenstate.balanceOf(lucky_one), 0)

        # Deploy new tokenstate and swap it out with the existing one.
        _new_tokenstate, _ = attempt_deploy(self.compiled, 'TokenState',
                                            MASTER, [MASTER, MASTER])
        new_tokenstate = TokenStateInterface(_new_tokenstate, 'TokenState')
        new_tokenstate.setBalanceOf(MASTER, lucky_one, UNIT)
        new_tokenstate.setAssociatedContract(MASTER, token.contract.address)
        token.setTokenState(MASTER, new_tokenstate.contract.address)

        self.assertEqual(token.tokenState(), new_tokenstate.contract.address)
        self.assertEqual(token.balanceOf(lucky_one), UNIT)
        self.assertEqual(new_tokenstate.balanceOf(lucky_one), UNIT)
 def setUpClass(cls):
     cls.proxy, cls.proxied_token, cls.compiled, cls.token_contract, cls.token_abi, cls.token_event_dict, cls.tokenstate, cls.token_recipient, cls.token_recipient_event_dict, cls.empty_token_recipient, cls.re_entrant_token_recipient = cls.deploy_contracts(
     )
     cls.event_map = cls.event_maps['ExternStateToken']
     cls.token = ExternStateTokenInterface(cls.proxied_token,
                                           "ExternStateToken")
コード例 #4
0
ファイル: havven_interface.py プロジェクト: sigp/havven-audit
    def __init__(self, contract, name):
        ExternStateTokenInterface.__init__(self, contract, name)

        self.contract = contract
        self.contract_name = name

        # HAVVEN

        # getters
        self.feePeriodStartTime = lambda: self.contract.functions.feePeriodStartTime(
        ).call()
        self.lastFeePeriodStartTime = lambda: self.contract.functions.lastFeePeriodStartTime(
        ).call()
        self.feePeriodDuration = lambda: self.contract.functions.feePeriodDuration(
        ).call()
        self.lastFeesCollected = lambda: self.contract.functions.lastFeesCollected(
        ).call()
        self.nomin = lambda: self.contract.functions.nomin().call()
        self.escrow = lambda: self.contract.functions.escrow().call()
        self.oracle = lambda: self.contract.functions.oracle().call()
        self.price = lambda: self.contract.functions.price().call()
        self.lastPriceUpdateTime = lambda: self.contract.functions.lastPriceUpdateTime(
        ).call()
        self.priceStalePeriod = lambda: self.contract.functions.priceStalePeriod(
        ).call()
        self.issuanceRatio = lambda: self.contract.functions.issuanceRatio(
        ).call()
        self.priceIsStale = lambda: self.contract.functions.priceIsStale(
        ).call()

        self.hasWithdrawnFees = lambda acc: self.contract.functions.hasWithdrawnFees(
            acc).call()
        self.isIssuer = lambda acc: self.contract.functions.isIssuer(acc).call(
        )
        self.nominsIssued = lambda acc: self.contract.functions.nominsIssued(
            acc).call()
        self.issuanceData = lambda acc: self.contract.functions.issuanceData(
            acc).call()
        self.totalIssuanceData = lambda: self.contract.functions.totalIssuanceData(
        ).call()
        self.issuanceCurrentBalanceSum = lambda acc: self.contract.functions.issuanceCurrentBalanceSum(
            acc).call()
        self.issuanceLastAverageBalance = lambda acc: self.contract.functions.issuanceLastAverageBalance(
            acc).call()
        self.issuanceLastModified = lambda acc: self.contract.functions.issuanceLastModified(
            acc).call()
        self.totalIssuanceCurrentBalanceSum = lambda: self.contract.functions.totalIssuanceCurrentBalanceSum(
        ).call()
        self.totalIssuanceLastAverageBalance = lambda: self.contract.functions.totalIssuanceLastAverageBalance(
        ).call()
        self.totalIssuanceLastModified = lambda: self.contract.functions.totalIssuanceLastModified(
        ).call()
        self.availableHavvens = lambda acc: self.contract.functions.availableHavvens(
            acc).call()
        self.lockedHavvens = lambda acc: self.contract.functions.lockedHavvens(
            acc).call()
        self.maxIssuableNomins = lambda acc: self.contract.functions.maxIssuableNomins(
            acc).call()
        self.remainingIssuableNomins = lambda acc: self.contract.functions.remainingIssuableNomins(
            acc).call()

        # utility function
        self.havValue = lambda havWei: self.contract.functions.havValue(
            havWei).call()

        # mutable functions
        self.setNomin = lambda sender, addr: mine_tx(
            self.contract.functions.setNomin(addr).transact({'from': sender}),
            "setNomin", self.contract_name)
        self.setEscrow = lambda sender, addr: mine_tx(
            self.contract.functions.setEscrow(addr).transact({'from': sender}),
            "setEscrow", self.contract_name)
        self.setFeePeriodDuration = lambda sender, duration: mine_tx(
            self.contract.functions.setFeePeriodDuration(duration).transact(
                {'from': sender}), "setFeePeriodDuration", self.contract_name)
        self.setOracle = lambda sender, addr: mine_tx(
            self.contract.functions.setOracle(addr).transact({'from': sender}),
            "setOracle", self.contract_name)
        self.setIssuanceRatio = lambda sender, val: mine_tx(
            self.contract.functions.setIssuanceRatio(val).transact(
                {'from': sender}), "setIssuanceRatio", self.contract_name)
        self.setPriceStalePeriod = lambda sender, val: mine_tx(
            self.contract.functions.setPriceStalePeriod(val).transact(
                {'from': sender}), "setPriceStalePeriod", self.contract_name)
        self.endow = lambda sender, to, val: mine_tx(
            self.contract.functions.endow(to, val).transact({'from': sender}),
            "endow", self.contract_name)
        self.setIssuer = lambda sender, acc, val: mine_tx(
            self.contract.functions.setIssuer(acc, val).transact(
                {'from': sender}), "setIssuer", self.contract_name)
        self.transfer = lambda sender, to, val: mine_tx(
            self.contract.functions.transfer(to, val).transact(
                {'from': sender}), "transfer", self.contract_name)
        self.transferFrom = lambda sender, frm, to, val: mine_tx(
            self.contract.functions.transferFrom(frm, to, val).transact(
                {'from': sender}), "transferFrom", self.contract_name)
        self.withdrawFees = lambda sender: mine_tx(
            self.contract.functions.withdrawFees().transact({'from': sender}),
            "withdrawFees", self.contract_name)
        self.recomputeLastAverageBalance = lambda sender, acc: mine_tx(
            self.contract.functions.recomputeLastAverageBalance(acc).transact(
                {'from': sender}), "recomputeLastAverageBalance", self.
            contract_name)
        self.rolloverFeePeriodIfElapsed = lambda sender: mine_tx(
            self.contract.functions.rolloverFeePeriodIfElapsed().transact(
                {'from': sender}), "rolloverFeePeriodIfElapsed", self.
            contract_name)
        self.issueMaxNomins = lambda sender: mine_tx(
            self.contract.functions.issueMaxNomins().transact(
                {'from': sender}), "issueMaxNomins", self.contract_name)
        self.issueNomins = lambda sender, amt: mine_tx(
            self.contract.functions.issueNomins(amt).transact(
                {'from': sender}), "issueNomins", self.contract_name)
        self.burnNomins = lambda sender, amt: mine_tx(
            self.contract.functions.burnNomins(amt).transact({'from': sender}),
            "burnNomins", self.contract_name)
        self.updatePrice = lambda sender, price, time: mine_tx(
            self.contract.functions.updatePrice(price, time).transact(
                {'from': sender}), "updatePrice", self.contract_name)