Skip to main content

MuSig2RegisterNonces

MuSig2RegisterNonces (experimental!) registers one or more public nonces of other signing participants for a session identified by its ID. This RPC can be called multiple times until all nonces are registered.

NOTE: The MuSig2 BIP is not final yet and therefore this API must be considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming releases. Backward compatibility is not guaranteed!

Source: signrpc/signer.proto

gRPC

rpc MuSig2RegisterNonces (MuSig2RegisterNoncesRequest) returns (MuSig2RegisterNoncesResponse);

REST

HTTP MethodPath
POST /v2/signer/musig2/registernonces

Code Samples

const fs = require('fs');
const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');

const GRPC_HOST = 'localhost:10009'
const MACAROON_PATH = 'LND_DIR/data/chain/bitcoin/regtest/admin.macaroon'
const TLS_PATH = 'LND_DIR/tls.cert'

const loaderOptions = {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true,
};
const packageDefinition = protoLoader.loadSync(['lightning.proto', 'signrpc/signer.proto'], loaderOptions);
const signrpc = grpc.loadPackageDefinition(packageDefinition).signrpc;
process.env.GRPC_SSL_CIPHER_SUITES = 'HIGH+ECDSA';
const tlsCert = fs.readFileSync(TLS_PATH);
const sslCreds = grpc.credentials.createSsl(tlsCert);
const macaroon = fs.readFileSync(MACAROON_PATH).toString('hex');
const macaroonCreds = grpc.credentials.createFromMetadataGenerator(function(args, callback) {
let metadata = new grpc.Metadata();
metadata.add('macaroon', macaroon);
callback(null, metadata);
});
let creds = grpc.credentials.combineChannelCredentials(sslCreds, macaroonCreds);
let client = new signrpc.Signer(GRPC_HOST, creds);
let request = {
session_id: <bytes>,
other_signer_public_nonces: <bytes>,
};
client.muSig2RegisterNonces(request, function(err, response) {
console.log(response);
});
// Console output:
// {
// "have_all_nonces": <bool>,
// }

Messages

signrpc.MuSig2RegisterNoncesRequest

Source: signrpc/signer.proto

FieldgRPC TypeREST TypeREST Placement
session_id
bytesstringbody
other_signer_public_nonces
bytes[]arraybody

signrpc.MuSig2RegisterNoncesResponse

Source: signrpc/signer.proto

FieldgRPC TypeREST Type
have_all_nonces
boolboolean