Skip to main content

MuSig2RegisterCombinedNonce

MuSig2RegisterCombinedNonce (experimental!) registers a pre-aggregated combined nonce for a signing session. This is an alternative to MuSig2RegisterNonces and is used when a coordinator has already aggregated all individual nonces and wants to distribute the combined nonce to participants.

NOTE: This method is mutually exclusive with MuSig2RegisterNonces for the same session. 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 MuSig2RegisterCombinedNonce (MuSig2RegisterCombinedNonceRequest) returns (MuSig2RegisterCombinedNonceResponse);

REST

HTTP MethodPath
POST /v2/signer/musig2/registercombinednonce

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>,
combined_public_nonce: <bytes>,
};
client.muSig2RegisterCombinedNonce(request, function(err, response) {
console.log(response);
});
// Console output:
// {
// }

Messages

signrpc.MuSig2RegisterCombinedNonceRequest

Source: signrpc/signer.proto

FieldgRPC TypeREST TypeREST Placement
session_id
bytesstringbody
combined_public_nonce
bytesstringbody

signrpc.MuSig2RegisterCombinedNonceResponse

Source: signrpc/signer.proto

note

This response has no parameters.