diff --git a/squeakserver/core/__init__.py b/squeakserver/core/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/squeakserver/core/squeak_entry.py b/squeakserver/core/squeak_entry.py new file mode 100644 index 00000000..16f1847a --- /dev/null +++ b/squeakserver/core/squeak_entry.py @@ -0,0 +1,4 @@ +from collections import namedtuple + + +SqueakEntry = namedtuple("LightningAddress", ["squeak", "block_header"]) diff --git a/squeakserver/node/squeak_block_verifier.py b/squeakserver/node/squeak_block_verifier.py index 3650b59b..84475589 100644 --- a/squeakserver/node/squeak_block_verifier.py +++ b/squeakserver/node/squeak_block_verifier.py @@ -38,7 +38,8 @@ class SqueakBlockVerifier: self.verify_squeak_block(squeak_hash) def _get_squeak(self, squeak_hash): - return self.postgres_db.get_squeak(squeak_hash) + squeak_entry = self.postgres_db.get_squeak_entry(squeak_hash) + return squeak_entry.squeak def _mark_squeak_verified(self, squeak_hash, block_header): self.postgres_db.mark_squeak_block_valid(squeak_hash, block_header) diff --git a/squeakserver/node/squeak_node.py b/squeakserver/node/squeak_node.py index d6ec16f0..b7778d05 100644 --- a/squeakserver/node/squeak_node.py +++ b/squeakserver/node/squeak_node.py @@ -45,20 +45,22 @@ class SqueakNode: return inserted_squeak_hash def get_locked_squeak(self, squeak_hash): - squeak = self.postgres_db.get_squeak(squeak_hash) + squeak_entry = self.postgres_db.get_squeak_entry(squeak_hash) + squeak = squeak_entry.squeak # Remove the decryption key before returning. squeak.ClearDecryptionKey() return squeak - def get_squeak(self, squeak_hash): - return self.postgres_db.get_squeak(squeak_hash) + def get_squeak_entry(self, squeak_hash): + return self.postgres_db.get_squeak_entry(squeak_hash) def lookup_squeaks(self, addresses, min_block, max_block): return self.postgres_db.lookup_squeaks(addresses, min_block, max_block) def get_buy_offer(self, squeak_hash, challenge): # Get the squeak from the database - squeak = self.postgres_db.get_squeak(squeak_hash) + squeak_entry = self.postgres_db.get_squeak_entry(squeak_hash) + squeak = squeak_entry.squeak # Get the decryption key from the squeak decryption_key = squeak.GetDecryptionKey() # Solve the proof diff --git a/squeakserver/server/postgres_db.py b/squeakserver/server/postgres_db.py index 7ef93c84..5cb0f5cf 100644 --- a/squeakserver/server/postgres_db.py +++ b/squeakserver/server/postgres_db.py @@ -6,6 +6,8 @@ from squeak.core import CSqueak from squeakserver.server.squeak_profile import SqueakProfile from squeakserver.server.util import get_hash +from squeakserver.core.squeak_entry import SqueakEntry + logger = logging.getLogger(__name__) @@ -76,7 +78,7 @@ class PostgresDb: row = curs.fetchone() return bytes.fromhex(row[0]) - def get_squeak(self, squeak_hash): + def get_squeak_entry(self, squeak_hash): """ Get a squeak. """ sql = """ SELECT * FROM squeak WHERE hash=%s""" @@ -103,7 +105,8 @@ class PostgresDb: vchScriptSig=row[14], vchDecryptionKey=row[16], ) - return squeak + block_header = row[17] + return SqueakEntry(squeak=squeak, block_header=block_header) def lookup_squeaks(self, addresses, min_block, max_block): """ Lookup squeaks. """