Encode TLV onion payload for final hop, returns bytes
(amount_msat, delay, total_msat, blockheight, payment_secret: str)
| 646 | |
| 647 | |
| 648 | def serialize_payload_final_tlv(amount_msat, delay, total_msat, blockheight, payment_secret: str): |
| 649 | """Encode TLV onion payload for final hop, returns bytes""" |
| 650 | payload = TlvPayload() |
| 651 | # BOLT #4: |
| 652 | # 1. type: 2 (`amt_to_forward`) |
| 653 | # 2. data: |
| 654 | # * [`tu64`:`amt_to_forward`] |
| 655 | payload.add_field(2, tu64_encode(int(amount_msat))) |
| 656 | # BOLT #4: |
| 657 | # 1. type: 4 (`outgoing_cltv_value`) |
| 658 | # 2. data: |
| 659 | # * [`tu32`:`outgoing_cltv_value`] |
| 660 | payload.add_field(4, tu64_encode(blockheight + delay)) |
| 661 | # BOLT #4: |
| 662 | # 1. type: 8 (`payment_data`) |
| 663 | # 2. data: |
| 664 | # * [`32*byte`:`payment_secret`] |
| 665 | # * [`tu64`:`total_msat`] |
| 666 | payload.add_field(8, bytes.fromhex(payment_secret) + tu64_encode(int(total_msat))) |
| 667 | return payload.to_bytes() |
| 668 | |
| 669 | |
| 670 | # I wish we could force libwally to use different entropy and thus force it to |