Browse Source

Do not store message payloads in channel db.

Use single primary key for addresses.
dependabot/pip/contrib/deterministic-build/ecdsa-0.13.3
ThomasV 6 years ago
parent
commit
0eab1692d6
  1. 29
      electrum/channel_db.py

29
electrum/channel_db.py

@ -76,8 +76,6 @@ class ChannelInfo(NamedTuple):
node1_id: bytes
node2_id: bytes
capacity_sat: int
msg_payload: bytes
trusted: bool
@staticmethod
def from_msg(payload):
@ -87,16 +85,12 @@ class ChannelInfo(NamedTuple):
node_id_1 = payload['node_id_1']
node_id_2 = payload['node_id_2']
assert list(sorted([node_id_1, node_id_2])) == [node_id_1, node_id_2]
msg_payload = encode_msg('channel_announcement', **payload)
capacity_sat = None
return ChannelInfo(
short_channel_id = channel_id,
node1_id = node_id_1,
node2_id = node_id_2,
capacity_sat = capacity_sat,
msg_payload = msg_payload,
trusted = False)
capacity_sat = capacity_sat)
class Policy(NamedTuple):
@ -206,17 +200,12 @@ class ChannelInfoBase(Base):
node1_id = Column(String(66), ForeignKey('node_info.node_id'), nullable=False)
node2_id = Column(String(66), ForeignKey('node_info.node_id'), nullable=False)
capacity_sat = Column(Integer)
msg_payload = Column(String(1024), nullable=False)
trusted = Column(Boolean, nullable=False)
def to_nametuple(self):
return ChannelInfo(
short_channel_id=self.short_channel_id,
node1_id=self.node1_id,
node2_id=self.node2_id,
capacity_sat=self.capacity_sat,
msg_payload=self.msg_payload,
trusted=self.trusted
capacity_sat=self.capacity_sat
)
class PolicyBase(Base):
@ -252,8 +241,8 @@ class NodeInfoBase(Base):
class AddressBase(Base):
__tablename__ = 'address'
node_id = Column(String(66), primary_key=True, sqlite_on_conflict_primary_key='REPLACE')
host = Column(String(256), primary_key=True)
port = Column(Integer, primary_key=True)
host = Column(String(256))
port = Column(Integer)
last_connected_date = Column(Integer(), nullable=True)
@ -331,25 +320,17 @@ class ChannelDB(SqlDB):
except UnknownEvenFeatureBits:
self.logger.info("unknown feature bits")
continue
#channel_info.trusted = trusted
added += 1
self._channels[short_channel_id] = channel_info
self._channels_for_node[channel_info.node1_id].add(channel_info.short_channel_id)
self._channels_for_node[channel_info.node2_id].add(channel_info.short_channel_id)
self.save_channel(channel_info)
if not trusted:
self.ca_verifier.add_new_channel_info(channel_info.short_channel_id, channel_info.msg_payload)
self.ca_verifier.add_new_channel_info(channel_info.short_channel_id, msg)
self.update_counts()
self.logger.debug('add_channel_announcement: %d/%d'%(added, len(msg_payloads)))
#def add_verified_channel_info(self, short_id, capacity):
# # called from lnchannelverifier
# channel_info = self.DBSession.query(ChannelInfoBase).filter_by(short_channel_id = short_id).one_or_none()
# channel_info.trusted = True
# channel_info.capacity = capacity
def print_change(self, old_policy, new_policy):
# print what changed between policies
if old_policy.cltv_expiry_delta != new_policy.cltv_expiry_delta:

Loading…
Cancel
Save