mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-17 19:03:42 +01:00
plugin: Tell the plugin which network we run on
The fundchannel plugin needs to know how to build a transaction, so we need to tell it which chainparams to use. Also adds `chainparams` as a global, since that seems to be the way to do things in plugins.
This commit is contained in:
parent
858b3f2b93
commit
14247283b2
@ -1049,6 +1049,9 @@ plugin_populate_init_request(struct plugin *plugin, struct jsonrpc_request *req)
|
||||
json_add_string(req->stream, "lightning-dir", ld->config_dir);
|
||||
json_add_string(req->stream, "rpc-file", ld->rpc_filename);
|
||||
json_add_bool(req->stream, "startup", plugin->plugins->startup);
|
||||
json_add_string(
|
||||
req->stream, "network",
|
||||
plugin->plugins->ld->topology->bitcoind->chainparams->network_name);
|
||||
json_object_end(req->stream);
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,9 @@
|
||||
|
||||
const char *placeholder_script = "0020b95810f824f843934fa042acd0becba52087813e260edaeebc42b5cb9abe1464";
|
||||
const char *placeholder_funding_addr;
|
||||
const struct amount_sat *max_funding;
|
||||
|
||||
/* Populated by libplugin */
|
||||
extern const struct chainparams *chainparams;
|
||||
|
||||
struct funding_req {
|
||||
struct node_id *id;
|
||||
@ -333,7 +335,7 @@ static struct command_result *tx_prepare_dryrun(struct command *cmd,
|
||||
const jsmntok_t *result,
|
||||
struct funding_req *fr)
|
||||
{
|
||||
const struct bitcoin_tx *tx;
|
||||
struct bitcoin_tx *tx;
|
||||
const char *hex;
|
||||
struct amount_sat funding;
|
||||
bool funding_found;
|
||||
@ -347,6 +349,7 @@ static struct command_result *tx_prepare_dryrun(struct command *cmd,
|
||||
|
||||
hex = json_strdup(tmpctx, buf, json_get_member(buf, result, "unsigned_tx"));
|
||||
tx = bitcoin_tx_from_hex(fr, hex, strlen(hex));
|
||||
tx->chainparams = chainparams;
|
||||
|
||||
/* Find the funding amount */
|
||||
funding_found = false;
|
||||
@ -363,8 +366,8 @@ static struct command_result *tx_prepare_dryrun(struct command *cmd,
|
||||
plugin_err("Error creating placebo funding tx, funding_out not found. %s", hex);
|
||||
|
||||
/* Update funding to actual amount */
|
||||
if (fr->funding_all && amount_sat_greater(funding, *max_funding))
|
||||
funding = *max_funding;
|
||||
if (fr->funding_all && amount_sat_greater(funding, chainparams->max_funding))
|
||||
funding = chainparams->max_funding;
|
||||
|
||||
fr->funding_str = type_to_string(fr, struct amount_sat, &funding);
|
||||
return fundchannel_start(cmd, fr);
|
||||
@ -404,7 +407,6 @@ static void init(struct plugin_conn *rpc,
|
||||
{
|
||||
/* Figure out what the 'placeholder' addr is */
|
||||
const char *network_name;
|
||||
const struct chainparams *chainparams;
|
||||
u8 *placeholder = tal_hexdata(tmpctx, placeholder_script, strlen(placeholder_script));
|
||||
|
||||
network_name = rpc_delve(tmpctx, "listconfigs",
|
||||
@ -415,7 +417,6 @@ static void init(struct plugin_conn *rpc,
|
||||
placeholder_funding_addr = encode_scriptpubkey_to_addr(NULL,
|
||||
chainparams->bip173_name,
|
||||
placeholder);
|
||||
max_funding = &chainparams->max_funding;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
#include <bitcoin/chainparams.h>
|
||||
#include <ccan/err/err.h>
|
||||
#include <ccan/intmap/intmap.h>
|
||||
#include <ccan/json_out/json_out.h>
|
||||
@ -34,6 +35,8 @@ static size_t in_timer;
|
||||
|
||||
bool deprecated_apis;
|
||||
|
||||
const struct chainparams *chainparams;
|
||||
|
||||
struct plugin_timer {
|
||||
struct timer timer;
|
||||
struct command_result *(*cb)(void);
|
||||
@ -523,10 +526,10 @@ static struct command_result *handle_init(struct command *init_cmd,
|
||||
void (*init)(struct plugin_conn *,
|
||||
const char *buf, const jsmntok_t *))
|
||||
{
|
||||
const jsmntok_t *configtok, *rpctok, *dirtok, *opttok, *t;
|
||||
const jsmntok_t *configtok, *rpctok, *dirtok, *opttok, *nettok, *t;
|
||||
struct sockaddr_un addr;
|
||||
size_t i;
|
||||
char *dir;
|
||||
char *dir, *network;
|
||||
struct json_out *param_obj;
|
||||
|
||||
configtok = json_delve(buf, params, ".configuration");
|
||||
@ -537,6 +540,11 @@ static struct command_result *handle_init(struct command *init_cmd,
|
||||
if (chdir(dir) != 0)
|
||||
plugin_err("chdir to %s: %s", dir, strerror(errno));
|
||||
|
||||
nettok = json_delve(buf, configtok, ".network");
|
||||
network = json_strdup(tmpctx, buf, nettok);
|
||||
chainparams = chainparams_for_network(network);
|
||||
is_elements = chainparams->is_elements;
|
||||
|
||||
rpctok = json_delve(buf, configtok, ".rpc-file");
|
||||
rpc_conn.fd = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||
if (rpctok->end - rpctok->start + 1 > sizeof(addr.sun_path))
|
||||
|
Loading…
Reference in New Issue
Block a user