MCPcopy Create free account
hub / github.com/ElementsProject/lightning / serialize_payload_tlv

Function serialize_payload_tlv

tests/utils.py:625–645  ·  view source on GitHub ↗

Encode TLV onion payload for non-final hops, returns bytes

(amount_msat, delay, next_channel, blockheight)

Source from the content-addressed store, hash-verified

623
624
625def serialize_payload_tlv(amount_msat, delay, next_channel, blockheight):
626 """Encode TLV onion payload for non-final hops, returns bytes"""
627 block, tx, out = next_channel.split('x')
628
629 payload = TlvPayload()
630 # BOLT #4:
631 # 1. type: 2 (`amt_to_forward`)
632 # 2. data:
633 # * [`tu64`:`amt_to_forward`]
634 payload.add_field(2, tu64_encode(int(amount_msat)))
635 # BOLT #4:
636 # 1. type: 4 (`outgoing_cltv_value`)
637 # 2. data:
638 # * [`tu32`:`outgoing_cltv_value`]
639 payload.add_field(4, tu64_encode(blockheight + delay))
640 # BOLT #4:
641 # 1. type: 6 (`short_channel_id`)
642 # 2. data:
643 # * [`short_channel_id`:`short_channel_id`]
644 payload.add_field(6, struct.pack("!Q", int(block) << 40 | int(tx) << 16 | int(out)))
645 return payload.to_bytes()
646
647
648def serialize_payload_final_tlv(amount_msat, delay, total_msat, blockheight, payment_secret: str):

Calls 4

add_fieldMethod · 0.95
to_bytesMethod · 0.95
TlvPayloadClass · 0.90
tu64_encodeFunction · 0.85