Browse Source
Not really a bitcoin primitive but the place where we keep all the small stuff currently.ppa-0.6.1
Christian Decker
8 years ago
committed by
Rusty Russell
7 changed files with 65 additions and 42 deletions
@ -0,0 +1,34 @@ |
|||
#include <bitcoin/short_channel_id.h> |
|||
#include <ccan/tal/str/str.h> |
|||
#include <stdio.h> |
|||
#include <string.h> |
|||
|
|||
bool short_channel_id_from_str(const char *str, size_t strlen, |
|||
struct short_channel_id *dst) |
|||
{ |
|||
u32 blocknum, txnum; |
|||
u16 outnum; |
|||
int matches; |
|||
|
|||
char buf[strlen + 1]; |
|||
memcpy(buf, str, strlen); |
|||
buf[strlen] = 0; |
|||
|
|||
matches = sscanf(buf, "%u:%u:%hu", &blocknum, &txnum, &outnum); |
|||
dst->blocknum = blocknum; |
|||
dst->txnum = txnum; |
|||
dst->outnum = outnum; |
|||
return matches == 3; |
|||
} |
|||
|
|||
char *short_channel_id_to_str(tal_t *ctx, const struct short_channel_id *scid) |
|||
{ |
|||
return tal_fmt(ctx, "%d:%d:%d", scid->blocknum, scid->txnum, scid->outnum); |
|||
} |
|||
|
|||
bool short_channel_id_eq(const struct short_channel_id *a, |
|||
const struct short_channel_id *b) |
|||
{ |
|||
return a->blocknum == b->blocknum && a->txnum == b->txnum && |
|||
a->outnum == b->outnum; |
|||
} |
@ -0,0 +1,28 @@ |
|||
#ifndef LIGHTNING_BITCOIN_SHORT_CHANNEL_ID_H |
|||
#define LIGHTNING_BITCOIN_SHORT_CHANNEL_ID_H |
|||
#include "config.h" |
|||
#include <ccan/short_types/short_types.h> |
|||
#include <ccan/tal/tal.h> |
|||
#include <stdbool.h> |
|||
#include <stddef.h> |
|||
|
|||
/* Short Channel ID is composed of 3 bytes for the block height, 3
|
|||
* bytes of tx index in block and 2 bytes of output index. The |
|||
* bitfield is mainly for unit tests where it is nice to be able to |
|||
* just memset them and not have to take care about the extra byte for |
|||
* u32 */ |
|||
struct short_channel_id { |
|||
u32 blocknum : 24; |
|||
u32 txnum : 24; |
|||
u16 outnum; |
|||
}; |
|||
|
|||
bool short_channel_id_from_str(const char *str, size_t strlen, |
|||
struct short_channel_id *dst); |
|||
|
|||
bool short_channel_id_eq(const struct short_channel_id *a, |
|||
const struct short_channel_id *b); |
|||
|
|||
char *short_channel_id_to_str(tal_t *ctx, const struct short_channel_id *scid); |
|||
|
|||
#endif /* LIGHTNING_BITCOIN_SHORT_CHANNEL_ID_H */ |
Loading…
Reference in new issue