diff --git a/electrum/lnutil.py b/electrum/lnutil.py index 271e9c7c3..17a89698c 100644 --- a/electrum/lnutil.py +++ b/electrum/lnutil.py @@ -1265,6 +1265,18 @@ class ShortChannelID(bytes): oi = output_index.to_bytes(2, byteorder='big') return ShortChannelID(bh + tpos + oi) + @classmethod + def from_str(cls, scid: str) -> 'ShortChannelID': + """Parses a formatted scid str, e.g. '643920x356x0'.""" + components = scid.split("x") + if len(components) != 3: + raise ValueError(f"failed to parse ShortChannelID: {scid!r}") + try: + components = [int(x) for x in components] + except ValueError: + raise ValueError(f"failed to parse ShortChannelID: {scid!r}") from None + return ShortChannelID.from_components(*components) + @classmethod def normalize(cls, data: Union[None, str, bytes, 'ShortChannelID']) -> Optional['ShortChannelID']: if isinstance(data, ShortChannelID) or data is None: