Skip to main content

MuSig2GetCombinedNonce

MuSig2GetCombinedNonce (experimental!) retrieves the combined nonce for a signing session. This will be available after either all individual nonces have been registered via MuSig2RegisterNonces, or a combined nonce has been registered via MuSig2RegisterCombinedNonce.

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 MuSig2GetCombinedNonce (MuSig2GetCombinedNonceRequest) returns (MuSig2GetCombinedNonceResponse);

REST

HTTP MethodPath
POST /v2/signer/musig2/getcombinednonce

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

Messages

signrpc.MuSig2GetCombinedNonceRequest

Source: signrpc/signer.proto

FieldgRPC TypeREST TypeREST Placement
session_id
bytesstringbody

signrpc.MuSig2GetCombinedNonceResponse

Source: signrpc/signer.proto

FieldgRPC TypeREST Type
combined_public_nonce
bytesstring