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

Function encode_f

common/bolt11.c:1028–1059  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1026}
1027
1028static void encode_f(u5 **data, const u8 *fallback)
1029{
1030 struct bitcoin_address pkh;
1031 struct ripemd160 sh;
1032 struct sha256 wsh;
1033
1034 /* BOLT #11:
1035 *
1036 * for Bitcoin payments... MUST set an `f` field to a valid
1037 * witness version and program, OR to `17` followed by a
1038 * public key hash, OR to `18` followed by a script hash.
1039 */
1040 if (is_p2pkh(fallback, &pkh)) {
1041 push_fallback_addr(data, 17, &pkh, sizeof(pkh));
1042 } else if (is_p2sh(fallback, &sh)) {
1043 push_fallback_addr(data, 18, &sh, sizeof(sh));
1044 } else if (is_p2wpkh(fallback, &pkh)) {
1045 push_fallback_addr(data, 0, &pkh, sizeof(pkh));
1046 } else if (is_p2wsh(fallback, &wsh)) {
1047 push_fallback_addr(data, 0, &wsh, sizeof(wsh));
1048 } else if (tal_count(fallback)
1049 && fallback[0] >= 0x50
1050 && fallback[0] < (0x50+16)) {
1051 /* Other (future) witness versions: turn OP_N into N */
1052 push_fallback_addr(data, fallback[0] - 0x50, fallback + 1,
1053 tal_count(fallback) - 1);
1054 } else {
1055 /* Copy raw. */
1056 push_field(data, 'f',
1057 fallback, tal_count(fallback) * CHAR_BIT);
1058 }
1059}
1060
1061static void encode_r(u5 **data, const struct route_info *r)
1062{

Callers 1

bolt11_encode_Function · 0.85

Calls 6

push_fallback_addrFunction · 0.85
is_p2wshFunction · 0.85
push_fieldFunction · 0.85
is_p2pkhFunction · 0.50
is_p2shFunction · 0.50
is_p2wpkhFunction · 0.50

Tested by

no test coverage detected