Encode TLV onion payload for non-final hops, returns bytes
(amount_msat, delay, next_channel, blockheight)
| 623 | |
| 624 | |
| 625 | def 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 | |
| 648 | def serialize_payload_final_tlv(amount_msat, delay, total_msat, blockheight, payment_secret: str): |