diff --git a/src/sakia/data/processors/dividends.py b/src/sakia/data/processors/dividends.py index 578dc6d850ada2d3fd28fd59e39399af2cd33ad8..3a8206663634d548db370f7e60d810715fa1940f 100644 --- a/src/sakia/data/processors/dividends.py +++ b/src/sakia/data/processors/dividends.py @@ -61,7 +61,7 @@ class DividendsProcessor: for tx in transactions: txdoc = Transaction.from_signed_raw(tx.raw) for input in txdoc.inputs: - if input.source == "D" and input.index not in block_numbers: + if input.source == "D" and input.origin_id == identity.pubkey and input.index not in block_numbers: block = await self._bma_connector.get(identity.currency, bma.blockchain.block, req_args={'number': input.index}) @@ -69,8 +69,8 @@ class DividendsProcessor: pubkey=identity.pubkey, block_number=input.index, timestamp=block["medianTime"], - amount=input.amount, - base=input.base) + amount=block["dividend"], + base=block["unitbase"]) log_stream("Dividend of block {0}".format(dividend.block_number)) try: self._repo.insert(dividend) diff --git a/src/sakia/services/transactions.py b/src/sakia/services/transactions.py index 7ba6b639c6e22280f5e5f6724fba1afbfa27dccc..768d10c5bbfad80098760ea15a1fc317498dc511 100644 --- a/src/sakia/services/transactions.py +++ b/src/sakia/services/transactions.py @@ -1,6 +1,7 @@ from PyQt5.QtCore import QObject from sakia.data.entities.transaction import parse_transaction_doc from duniterpy.documents import SimpleTransaction +from sakia.data.entities import Dividend import logging @@ -47,8 +48,17 @@ class TransactionsService(QObject): if not self._transactions_processor.find_by_hash(t.sha_hash) and SimpleTransaction.is_simple(t)] connections_pubkeys = [c.pubkey for c in self._connections_processor.connections_to(self.currency)] - for (i, tx_doc) in enumerate(new_transactions): - for pubkey in connections_pubkeys: + for pubkey in connections_pubkeys: + if block_doc.ud: + dividend = Dividend(currency=self.currency, + pubkey=pubkey, + block_number=block_doc.number, + timestamp=block_doc.mediantime, + amount=block_doc.ud, + base=block_doc.unit_base) + self._dividends_processor.commit(dividend) + + for (i, tx_doc) in enumerate(new_transactions): tx = parse_transaction_doc(tx_doc, pubkey, block_doc.blockUID.number, block_doc.mediantime, txid+i) if tx: new_transfers.append(tx)