def retire_ggo(self, url):
        key_ggo = self.master_key.ChildKey(4)
        key_mea = self.master_key.ChildKey(10)

        signer_mea = self.crypto.new_signer(
            PrivateKey.from_bytes(key_mea.PrivateKey()))
        signer_ggo = self.crypto.new_signer(
            PrivateKey.from_bytes(key_ggo.PrivateKey()))

        mea_add = generate_address(AddressPrefix.MEASUREMENT,
                                   key_mea.PublicKey())
        set_add = generate_address(AddressPrefix.SETTLEMENT,
                                   key_mea.PublicKey())
        ggo_add = generate_address(AddressPrefix.GGO, key_ggo.PublicKey())

        retire_request = RetireGGORequest(origin=ggo_add,
                                          settlement_address=set_add)

        retire_response = self.send_request(url, retire_request,
                                            [mea_add, set_add, ggo_add],
                                            signer_ggo)

        self.wait_for_commit(retire_response.json()['link'])

        request = SettlementRequest(settlement_address=set_add,
                                    measurement_address=mea_add,
                                    ggo_addresses=[ggo_add])

        return self.send_request(url, request, [mea_add, set_add, ggo_add],
                                 signer_mea)
    def transfer_ggo(self, url):
        key2 = self.master_key.ChildKey(2)
        key4 = self.master_key.ChildKey(4)

        signer = self.crypto.new_signer(
            PrivateKey.from_bytes(key2.PrivateKey()))

        ggo_add_2 = generate_address(AddressPrefix.GGO, key2.PublicKey())
        ggo_add_4 = generate_address(AddressPrefix.GGO, key4.PublicKey())

        request = TransferGGORequest(origin=ggo_add_2, destination=ggo_add_4)

        return self.send_request(url, request, [ggo_add_2, ggo_add_4], signer)
    def publish_con_measurement(self, url):
        key = self.master_key.ChildKey(10)
        signer = self.crypto.new_signer(PrivateKey.from_bytes(
            key.PrivateKey()))

        add = generate_address(AddressPrefix.MEASUREMENT, key.PublicKey())

        request = PublishMeasurementRequest(begin=datetime(
            2020, 1, 1, 12, tzinfo=timezone.utc),
                                            end=datetime(2020,
                                                         1,
                                                         1,
                                                         13,
                                                         tzinfo=timezone.utc),
                                            sector='DK1',
                                            type=MeasurementType.CONSUMPTION,
                                            amount=500)

        return self.send_request(url, request, [add], signer)
    def split_ggo(self, url):
        key1 = self.master_key.ChildKey(1)
        key2 = self.master_key.ChildKey(2)
        key3 = self.master_key.ChildKey(3)

        signer = self.crypto.new_signer(
            PrivateKey.from_bytes(key1.PrivateKey()))

        ggo_add_1 = generate_address(AddressPrefix.GGO, key1.PublicKey())
        ggo_add_2 = generate_address(AddressPrefix.GGO, key2.PublicKey())
        ggo_add_3 = generate_address(AddressPrefix.GGO, key3.PublicKey())

        request = SplitGGORequest(
            origin=ggo_add_1,
            parts=[SplitGGOPart(ggo_add_2, 500),
                   SplitGGOPart(ggo_add_3, 524)])

        return self.send_request(url, request,
                                 [ggo_add_1, ggo_add_2, ggo_add_3], signer)
    def issue_ggo(self, url):
        key = self.master_key.ChildKey(1)
        signer = self.crypto.new_signer(PrivateKey.from_bytes(
            key.PrivateKey()))

        mea_add = generate_address(AddressPrefix.MEASUREMENT, key.PublicKey())
        ggo_add = generate_address(AddressPrefix.GGO, key.PublicKey())

        request = IssueGGORequest(origin=mea_add,
                                  destination=ggo_add,
                                  tech_type='T12441',
                                  fuel_type='F12412',
                                  emissions={
                                      "co2": {
                                          "value": 1113342.14,
                                          "unit": "g/Wh",
                                      },
                                      "so2": {
                                          "value": 9764446,
                                          "unit": "g/Wh",
                                      },
                                  })

        return self.send_request(url, request, [mea_add, ggo_add], signer)
예제 #6
0
def get_signer(private_key_bytes: bytes) -> Signer:
    context = create_context('secp256k1')
    private_key = PrivateKey.from_bytes(private_key_bytes)
    return CryptoFactory(context).new_signer(private_key)   
    def setUp(self):
        master_key = BIP32Key.fromEntropy(
            "bfdgafgaertaehtaha43514r<aefag".encode())
        context = create_context('secp256k1')

        self.key_1 = master_key.ChildKey(1)
        self.false_key = master_key.ChildKey(1241).ChildKey(1241)
        self.false_signer = CryptoFactory(context).new_signer(
            PrivateKey.from_bytes(self.false_key.PrivateKey()))

        self.mea_prod_1_key = master_key.ChildKey(1).ChildKey(1)
        self.mea_prod_1_add = generate_address(AddressPrefix.MEASUREMENT,
                                               self.mea_prod_1_key.PublicKey())
        self.mea_prod_1 = Measurement.get_schema().dumps(
            Measurement(amount=25,
                        type=MeasurementType.PRODUCTION,
                        begin=datetime(2020, 1, 1, 12, tzinfo=timezone.utc),
                        end=datetime(2020, 1, 1, 13, tzinfo=timezone.utc),
                        sector='DK1')).encode('utf8')

        self.mea_prod_2_add = 'mea_prod_2_add'
        self.mea_prod_3_add = 'mea_prod_3_add'

        self.mea_con_1_key = master_key.ChildKey(3).ChildKey(1)
        self.mea_con_1_add = generate_address(AddressPrefix.MEASUREMENT,
                                              self.mea_con_1_key.PublicKey())
        self.mea_con_1 = Measurement.get_schema().dumps(
            Measurement(amount=150,
                        type=MeasurementType.CONSUMPTION,
                        begin=datetime(2020, 1, 1, 12, tzinfo=timezone.utc),
                        end=datetime(2020, 1, 1, 13, tzinfo=timezone.utc),
                        sector='DK1')).encode('utf8')

        self.mea_con_2_key = master_key.ChildKey(3).ChildKey(2)
        self.mea_con_2_add = generate_address(AddressPrefix.MEASUREMENT,
                                              self.mea_con_2_key.PublicKey())
        self.mea_con_2 = Measurement.get_schema().dumps(
            Measurement(amount=15,
                        type=MeasurementType.CONSUMPTION,
                        begin=datetime(2020, 1, 1, 12, tzinfo=timezone.utc),
                        end=datetime(2020, 1, 1, 13, tzinfo=timezone.utc),
                        sector='DK1')).encode('utf8')

        self.ggo_1_key = master_key.ChildKey(2).ChildKey(1)
        self.ggo_1_signer = CryptoFactory(context).new_signer(
            PrivateKey.from_bytes(self.ggo_1_key.PrivateKey()))
        self.ggo_1_add = generate_address(AddressPrefix.GGO,
                                          self.ggo_1_key.PublicKey())
        self.ggo_1 = GGO.get_schema().dumps(
            GGO(origin=self.mea_prod_1_add,
                amount=10,
                begin=datetime(2020, 1, 1, 12, tzinfo=timezone.utc),
                end=datetime(2020, 1, 1, 13, tzinfo=timezone.utc),
                tech_type='T12412',
                fuel_type='F010101',
                sector='DK1',
                next=None,
                emissions={
                    "co2": {
                        "value": 1113342.14,
                        "unit": "g/Wh",
                    },
                    "so2": {
                        "value": 9764446,
                        "unit": "g/Wh",
                    },
                })).encode('utf8')

        self.ggo_2_key = master_key.ChildKey(2).ChildKey(2)
        self.ggo_2_signer = CryptoFactory(context).new_signer(
            PrivateKey.from_bytes(self.ggo_2_key.PrivateKey()))
        self.ggo_2_add = generate_address(AddressPrefix.GGO,
                                          self.ggo_2_key.PublicKey())
        self.ggo_2 = GGO.get_schema().dumps(
            GGO(origin=self.mea_prod_2_add,
                amount=25,
                begin=datetime(2020, 1, 1, 12, tzinfo=timezone.utc),
                end=datetime(2020, 1, 1, 13, tzinfo=timezone.utc),
                tech_type='T12412',
                fuel_type='F010101',
                sector='DK1',
                next=None,
                emissions={
                    "co2": {
                        "value": 1113342.14,
                        "unit": "g/Wh",
                    },
                    "so2": {
                        "value": 9764446,
                        "unit": "g/Wh",
                    },
                })).encode('utf8')

        self.ggo_3_key = master_key.ChildKey(2).ChildKey(3)
        self.ggo_3_signer = CryptoFactory(context).new_signer(
            PrivateKey.from_bytes(self.ggo_3_key.PrivateKey()))
        self.ggo_3_add = generate_address(AddressPrefix.GGO,
                                          self.ggo_3_key.PublicKey())
        self.ggo_3 = GGO.get_schema().dumps(
            GGO(origin=self.mea_prod_3_add,
                amount=15,
                begin=datetime(2020, 1, 1, 12, tzinfo=timezone.utc),
                end=datetime(2020, 1, 1, 13, tzinfo=timezone.utc),
                tech_type='T12412',
                fuel_type='F010101',
                sector='DK1',
                next=None,
                emissions={
                    "co2": {
                        "value": 1113342.14,
                        "unit": "g/Wh",
                    },
                    "so2": {
                        "value": 9764446,
                        "unit": "g/Wh",
                    },
                })).encode('utf8')

        self.ggo_DK2_key = master_key.ChildKey(2).ChildKey(3)
        self.ggo_DK2_signer = CryptoFactory(context).new_signer(
            PrivateKey.from_bytes(self.ggo_DK2_key.PrivateKey()))
        self.ggo_DK2_add = generate_address(AddressPrefix.GGO,
                                            self.ggo_DK2_key.PublicKey())
        self.ggo_DK2 = GGO.get_schema().dumps(
            GGO(origin=self.mea_prod_3_add,
                amount=15,
                begin=datetime(2020, 1, 1, 12, tzinfo=timezone.utc),
                end=datetime(2020, 1, 1, 13, tzinfo=timezone.utc),
                tech_type='T12412',
                fuel_type='F010101',
                sector='DK2',
                next=None,
                emissions={
                    "co2": {
                        "value": 1113342.14,
                        "unit": "g/Wh",
                    },
                    "so2": {
                        "value": 9764446,
                        "unit": "g/Wh",
                    },
                })).encode('utf8')

        self.ggo_other_time_key = master_key.ChildKey(2).ChildKey(3)
        self.ggo_other_time_signer = CryptoFactory(context).new_signer(
            PrivateKey.from_bytes(self.ggo_other_time_key.PrivateKey()))
        self.ggo_other_time_add = generate_address(
            AddressPrefix.GGO, self.ggo_other_time_key.PublicKey())
        self.ggo_other_time = GGO.get_schema().dumps(
            GGO(origin=self.mea_prod_3_add,
                amount=15,
                begin=datetime(2020, 1, 1, 13, tzinfo=timezone.utc),
                end=datetime(2020, 1, 1, 14, tzinfo=timezone.utc),
                tech_type='T12412',
                fuel_type='F010101',
                sector='DK1',
                next=None,
                emissions={
                    "co2": {
                        "value": 1113342.14,
                        "unit": "g/Wh",
                    },
                    "so2": {
                        "value": 9764446,
                        "unit": "g/Wh",
                    },
                })).encode('utf8')

        self.ggo_used_key = master_key.ChildKey(2).ChildKey(54687)
        self.ggo_used_signer = CryptoFactory(context).new_signer(
            PrivateKey.from_bytes(self.ggo_used_key.PrivateKey()))
        self.ggo_used_add = generate_address(AddressPrefix.GGO,
                                             self.ggo_used_key.PublicKey())
        self.ggo_used = GGO.get_schema().dumps(
            GGO(origin='mea_prod_used_add',
                amount=15,
                begin=datetime(2020, 1, 1, 12, tzinfo=timezone.utc),
                end=datetime(2020, 1, 1, 13, tzinfo=timezone.utc),
                tech_type='T12412',
                fuel_type='F010101',
                sector='DK1',
                next=GGONext(action=GGOAction.RETIRE,
                             addresses=['mea_con_used_add']),
                emissions={
                    "co2": {
                        "value": 1113342.14,
                        "unit": "g/Wh",
                    },
                    "so2": {
                        "value": 9764446,
                        "unit": "g/Wh",
                    },
                })).encode('utf8')

        self.ggo_used_multiple_key = master_key.ChildKey(2).ChildKey(54687)
        self.ggo_used_multiple_signer = CryptoFactory(context).new_signer(
            PrivateKey.from_bytes(self.ggo_used_multiple_key.PrivateKey()))
        self.ggo_used_multiple_add = generate_address(
            AddressPrefix.GGO, self.ggo_used_multiple_key.PublicKey())
        self.ggo_used_multiple = GGO.get_schema().dumps(
            GGO(origin='mea_prod_used_add',
                amount=15,
                begin=datetime(2020, 1, 1, 12, tzinfo=timezone.utc),
                end=datetime(2020, 1, 1, 13, tzinfo=timezone.utc),
                tech_type='T12412',
                fuel_type='F010101',
                sector='DK1',
                next=GGONext(
                    action=GGOAction.RETIRE,
                    addresses=['mea_con_used_add', 'mea_con_used_add2']),
                emissions={
                    "co2": {
                        "value": 1113342.14,
                        "unit": "g/Wh",
                    },
                    "so2": {
                        "value": 9764446,
                        "unit": "g/Wh",
                    },
                })).encode('utf8')

        self.ggo_transfered_key = master_key.ChildKey(2).ChildKey(54688)
        self.ggo_transfered_signer = CryptoFactory(context).new_signer(
            PrivateKey.from_bytes(self.ggo_transfered_key.PrivateKey()))
        self.ggo_transfered_add = generate_address(
            AddressPrefix.GGO, self.ggo_transfered_key.PublicKey())
        self.ggo_transfered = GGO.get_schema().dumps(
            GGO(origin='mea_prod_used_add',
                amount=15,
                begin=datetime(2020, 1, 1, 12, tzinfo=timezone.utc),
                end=datetime(2020, 1, 1, 13, tzinfo=timezone.utc),
                tech_type='T12412',
                fuel_type='F010101',
                sector='DK1',
                next=GGONext(action=GGOAction.TRANSFER,
                             addresses=['mea_con_used_add']),
                emissions={
                    "co2": {
                        "value": 1113342.14,
                        "unit": "g/Wh",
                    },
                    "so2": {
                        "value": 9764446,
                        "unit": "g/Wh",
                    },
                })).encode('utf8')