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)
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')