Skip to main content

LeaseOutput

LeaseOutput locks an output to the given ID, preventing it from being available for any future coin selection attempts. The absolute time of the lock's expiration is returned. The expiration of the lock can be extended by successive invocations of this RPC. Outputs can be unlocked before their expiration through ReleaseOutput.

Source: walletrpc/walletkit.proto

gRPC

rpc LeaseOutput (LeaseOutputRequest) returns (LeaseOutputResponse);

REST

HTTP MethodPath
POST /v2/wallet/utxos/lease

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', 'walletrpc/walletkit.proto'], loaderOptions);
const walletrpc = grpc.loadPackageDefinition(packageDefinition).walletrpc;
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 walletrpc.WalletKit(GRPC_HOST, creds);
let request = {
id: <bytes>,
outpoint: <OutPoint>,
expiration_seconds: <uint64>,
};
client.leaseOutput(request, function(err, response) {
console.log(response);
});
// Console output:
// {
// "expiration": <uint64>,
// }

Messages

walletrpc.LeaseOutputRequest

Source: walletrpc/walletkit.proto

FieldgRPC TypeREST TypeREST Placement
id
bytesstringbody
outpoint
OutPointobjectbody
expiration_seconds
uint64stringbody

walletrpc.LeaseOutputResponse

Source: walletrpc/walletkit.proto

FieldgRPC TypeREST Type
expiration
uint64string

Nested Messages

lnrpc.OutPoint

FieldgRPC TypeREST Type
txid_bytes
bytesstring
txid_str
stringstring
output_index
uint32integer