mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-18 05:12:45 +01:00
51de503096
We need to control the *inputs* to the anchor tx, to make sure they pay to witness scripts (thus the anchor is immalleable). The easiest way to do this is to hand out P2SH addresses for the user, and have them pay into those. Then they hand us that tx and we use it to create the anchor. This is not a long-term solution! Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
69 lines
1.9 KiB
C
69 lines
1.9 KiB
C
#ifndef LIGHTNING_DAEMON_JSONRPC_H
|
|
#define LIGHTNING_DAEMON_JSONRPC_H
|
|
#include "config.h"
|
|
#include "json.h"
|
|
#include <ccan/list/list.h>
|
|
|
|
/* Context for a command (from JSON, but might outlive the connection!)
|
|
* You can allocate off this for temporary objects. */
|
|
struct command {
|
|
/* The global state */
|
|
struct lightningd_state *dstate;
|
|
/* The 'id' which we need to include in the response. */
|
|
const char *id;
|
|
/* The connection, or NULL if it closed. */
|
|
struct json_connection *jcon;
|
|
};
|
|
|
|
struct json_connection {
|
|
/* The global state */
|
|
struct lightningd_state *dstate;
|
|
|
|
/* Logging for this json connection. */
|
|
struct log *log;
|
|
|
|
/* The buffer (required to interpret tokens). */
|
|
char *buffer;
|
|
|
|
/* Internal state: */
|
|
/* How much is already filled. */
|
|
size_t used;
|
|
/* How much has just been filled. */
|
|
size_t len_read;
|
|
|
|
/* We've been told to stop. */
|
|
bool stop;
|
|
|
|
/* Current command. */
|
|
struct command *current;
|
|
|
|
struct list_head output;
|
|
const char *outbuf;
|
|
};
|
|
|
|
struct json_command {
|
|
const char *name;
|
|
void (*dispatch)(struct command *,
|
|
const char *buffer, const jsmntok_t *params);
|
|
const char *description;
|
|
const char *help;
|
|
};
|
|
|
|
void command_success(struct command *cmd, struct json_result *response);
|
|
void PRINTF_FMT(2, 3) command_fail(struct command *cmd, const char *fmt, ...);
|
|
|
|
/* For initialization */
|
|
void setup_jsonrpc(struct lightningd_state *dstate, const char *rpc_filename);
|
|
|
|
/* Commands (from other files) */
|
|
extern const struct json_command connect_command;
|
|
extern const struct json_command getpeers_command;
|
|
extern const struct json_command newhtlc_command;
|
|
extern const struct json_command fulfillhtlc_command;
|
|
extern const struct json_command failhtlc_command;
|
|
extern const struct json_command commit_command;
|
|
extern const struct json_command mocktime_command;
|
|
extern const struct json_command close_command;
|
|
extern const struct json_command newaddr_command;
|
|
#endif /* LIGHTNING_DAEMON_JSONRPC_H */
|