GetLsatTokens
danger
This RPC is deprecated and will be removed in a future version.
Deprecated: use GetL402Tokens.
This API is provided to maintain backward compatibility with gRPC clients
(e.g. loop listauth, Terminal Web, RTL).
Type LsatToken used by GetLsatTokens in the past was renamed to L402Token,
but this does not affect binary encoding, so we can use type L402Token here.
Source: looprpc/client.proto
gRPC
rpc GetLsatTokens (TokensRequest) returns (TokensResponse);
Code Samples
- gRPC
- Javascript
- Python
- grpcurl
const fs = require('fs');
const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');
const GRPC_HOST = 'localhost:11010'
const MACAROON_PATH = 'LOOP_DIR/regtest/loop.macaroon'
const TLS_PATH = 'LOOP_DIR/regtest/tls.cert'
const loaderOptions = {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true,
};
const packageDefinition = protoLoader.loadSync('looprpc/client.proto', loaderOptions);
const looprpc = grpc.loadPackageDefinition(packageDefinition).looprpc;
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 looprpc.SwapClient(GRPC_HOST, creds);
let request = {};
client.getLsatTokens(request, function(err, response) {
console.log(response);
});
// Console output:
// {
// "tokens": <L402Token>,
// }
import codecs, grpc, os
# Generate the following 2 modules by compiling the looprpc/client.proto with the grpcio-tools.
# See https://github.com/lightningnetwork/lnd/blob/master/docs/grpc/python.md for instructions.
import client_pb2 as looprpc, client_pb2_grpc as clientstub
GRPC_HOST = 'localhost:11010'
MACAROON_PATH = 'LOOP_DIR/regtest/loop.macaroon'
TLS_PATH = 'LOOP_DIR/regtest/tls.cert'
# create macaroon credentials
macaroon = codecs.encode(open(MACAROON_PATH, 'rb').read(), 'hex')
def metadata_callback(context, callback):
callback([('macaroon', macaroon)], None)
auth_creds = grpc.metadata_call_credentials(metadata_callback)
# create SSL credentials
os.environ['GRPC_SSL_CIPHER_SUITES'] = 'HIGH+ECDSA'
cert = open(TLS_PATH, 'rb').read()
ssl_creds = grpc.ssl_channel_credentials(cert)
# combine macaroon and SSL credentials
combined_creds = grpc.composite_channel_credentials(ssl_creds, auth_creds)
# make the request
channel = grpc.secure_channel(GRPC_HOST, combined_creds)
stub = clientstub.SwapClientStub(channel)
request = looprpc.TokensRequest()
response = stub.GetLsatTokens(request)
print(response)
# {
# "tokens": <L402Token>,
# }
# grpcurl docs: https://github.com/fullstorydev/grpcurl
# Proto source: https://github.com/lightninglabs/loop
# Also requires: https://github.com/lightningnetwork/lnd
GRPC_HOST=localhost:11010
LOOP_DIR=~/.loop
LOOP_SOURCE=path/to/loop
LND_SOURCE=path/to/lnd
NETWORK=mainnet
MACAROON_PATH="$LOOP_DIR/$NETWORK/loop.macaroon"
TLS_PATH="$LOOP_DIR/$NETWORK/tls.cert"
grpcurl \
-import-path $LOOP_SOURCE \
-import-path $LND_SOURCE \
-proto looprpc/client.proto \
-cacert $TLS_PATH \
-H "macaroon: $(xxd -ps -u -c 1000 $MACAROON_PATH)" \
$GRPC_HOST \
looprpc.SwapClient/GetLsatTokens
Messages
looprpc.TokensRequest
Source: looprpc/client.proto
note
This request has no parameters.
looprpc.TokensResponse
Source: looprpc/client.proto
| Field | gRPC Type | REST Type |
|---|---|---|
tokens | L402Token[] | array |
Nested Messages
looprpc.L402Token
| Field | gRPC Type | REST Type |
|---|---|---|
base_macaroon | bytes | string |
payment_hash | bytes | string |
payment_preimage | bytes | string |
amount_paid_msat | int64 | string |
routing_fee_paid_msat | int64 | string |
time_created | int64 | string |
expired | bool | boolean |
storage_name | string | string |
id | string | string |