def test_worklock_deployment(worklock_deployer,
                             baseline_deployment,
                             staking_escrow_deployer,
                             deployment_progress,
                             test_registry,
                             testerchain):

    # Ensure nucypher APIs implementing economics are usable without a worklock deployment.
    economics = EconomicsFactory.retrieve_from_blockchain(registry=test_registry)
    assert economics.bidding_start_date == NotImplemented

    # Deploy
    assert worklock_deployer.contract_name == WORKLOCK_CONTRACT_NAME
    deployment_receipts = worklock_deployer.deploy(progress=deployment_progress)    # < ---- DEPLOY

    # Verify economics are updated
    economics = EconomicsFactory.retrieve_from_blockchain(registry=test_registry)
    assert economics.bidding_start_date != NotImplemented

    # deployment steps must match expected number of steps
    steps = worklock_deployer.deployment_steps
    assert deployment_progress.num_steps == len(steps) == len(deployment_receipts) == 4

    # Ensure every step is successful
    for step_title in steps:
        assert deployment_receipts[step_title]['status'] == 1

    # Ensure the correct staking escrow address is set
    staking_escrow_address = worklock_deployer.contract.functions.escrow().call()
    assert staking_escrow_deployer.contract_address == staking_escrow_address
Esempio n. 2
0
        def supply_information():
            economics = EconomicsFactory.retrieve_from_blockchain(
                registry=self.registry)

            parameter = request.args.get('q')
            if parameter is None:
                # no query - return all supply information
                supply_info = calculate_supply_information(economics=economics)
                response = flask_server.response_class(
                    response=json.dumps(supply_info),
                    status=200,
                    mimetype='application/json')
            else:
                # specific request query provided
                if parameter == 'current_total_supply':
                    current_total_supply = calculate_current_total_supply(
                        economics)
                    response = flask_server.response_class(
                        response=str(current_total_supply),
                        status=200,
                        mimetype='text/plain')
                elif parameter == 'est_circulating_supply':
                    est_circulating_supply = calculate_circulating_supply(
                        economics)
                    response = flask_server.response_class(
                        response=str(est_circulating_supply),
                        status=200,
                        mimetype='text/plain')
                else:
                    response = flask_server.response_class(
                        response=f"Unsupported supply parameter: {parameter}",
                        status=400,
                        mimetype='text/plain')
            return response