|
|
|
#ifndef LIGHTNING_DEVTOOLS_PRINT_WIRE_H
|
|
|
|
#define LIGHTNING_DEVTOOLS_PRINT_WIRE_H
|
|
|
|
#include <bitcoin/preimage.h>
|
|
|
|
#include <bitcoin/tx.h>
|
|
|
|
#include <common/wireaddr.h>
|
|
|
|
#include <wire/peer_wire.h>
|
|
|
|
#include <wire/onion_wire.h>
|
|
|
|
|
|
|
|
struct tlv_print_record_type {
|
|
|
|
u64 type;
|
|
|
|
void (*print)(const char *tlv_name, const u8 **cursor, size_t *plen);
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef u64 bigsize;
|
|
|
|
#define printwire_bigsize printwire_u64
|
|
|
|
|
|
|
|
void printwire_u8(const char *fieldname, const u8 *v);
|
|
|
|
void printwire_u16(const char *fieldname, const u16 *v);
|
|
|
|
void printwire_u32(const char *fieldname, const u32 *v);
|
|
|
|
void printwire_u64(const char *fieldname, const u64 *v);
|
|
|
|
void printwire_u8_array(const char *fieldname, const u8 **cursor, size_t *plen, size_t len);
|
|
|
|
void printwire_tlvs(const char *tlv_name, const u8 **cursor, size_t *plen,
|
|
|
|
const struct tlv_print_record_type types[], size_t num_types);
|
|
|
|
|
|
|
|
void printwire_bitcoin_blkid(const char *fieldname, const struct bitcoin_blkid *bitcoin_blkid);
|
|
|
|
void printwire_bitcoin_txid(const char *fieldname, const struct bitcoin_txid *bitcoin_txid);
|
|
|
|
void printwire_channel_id(const char *fieldname, const struct channel_id *channel_id);
|
|
|
|
void printwire_amount_sat(const char *fieldname, const struct amount_sat *sat);
|
|
|
|
void printwire_amount_msat(const char *fieldname, const struct amount_msat *msat);
|
|
|
|
void printwire_preimage(const char *fieldname, const struct preimage *preimage);
|
|
|
|
void printwire_pubkey(const char *fieldname, const struct pubkey *pubkey);
|
common/node_id: new type.
Node ids are pubkeys, but we only use them as pubkeys for routing and checking
gossip messages. So we're packing and unpacking them constantly, and wasting
some space and time.
This introduces a new type, explicitly the SEC1 compressed encoding
(33 bytes). We ensure its validity when we load from the db, or get it
from JSON. We still use 'struct pubkey' for peer messages, which checks
validity.
Results from 5 runs, min-max(mean +/- stddev):
store_load_msec,vsz_kb,store_rewrite_sec,listnodes_sec,listchannels_sec,routing_sec,peer_write_all_sec
39475-39572(39518+/-36),2880732,41.150000-41.390000(41.298+/-0.085),2.260000-2.550000(2.336+/-0.11),44.390000-65.150000(58.648+/-7.5),32.740000-33.020000(32.89+/-0.093),44.130000-45.090000(44.566+/-0.32)
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
|
|
|
void printwire_node_id(const char *fieldname, const struct node_id *id);
|
|
|
|
void printwire_secp256k1_ecdsa_signature(const char *fieldname, const secp256k1_ecdsa_signature *);
|
|
|
|
void printwire_sha256(const char *fieldname, const struct sha256 *sha256);
|
|
|
|
void printwire_secret(const char *fieldname, const struct secret *secret);
|
|
|
|
void printwire_short_channel_id(const char *fieldname, const struct short_channel_id *short_channel_id);
|
|
|
|
|
|
|
|
#endif /* LIGHTNING_DEVTOOLS_PRINT_WIRE_H */
|