SetLiquidityParams
SetLiquidityParams sets a new set of parameters for the daemon's liquidity manager. Note that the full set of parameters must be provided, because this call fully overwrites our existing parameters. [EXPERIMENTAL]: endpoint is subject to change.
Source: looprpc/client.proto
gRPC
rpc SetLiquidityParams (SetLiquidityParamsRequest) returns (SetLiquidityParamsResponse);
REST
| HTTP Method | Path | 
|---|---|
| POST | /v1/liquidity/params | 
Code Samples
- gRPC
 - REST
 - Shell
 
- Javascript
 - Python
 
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/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 = {
  parameters: <LiquidityParameters>,
};
client.setLiquidityParams(request, function(err, response) {
  console.log(response);
});
// Console output:
//  {
//  }
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/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.SetLiquidityParamsRequest(
  parameters=<LiquidityParameters>,
)
response = stub.SetLiquidityParams(request)
print(response)
# {
# }
- Javascript
 - Python
 
const fs = require('fs');
const request = require('request');
const REST_HOST = 'localhost:8081'
const MACAROON_PATH = 'LOOP_DIR/regtest/loop.macaroon'
let requestBody = {
  parameters: <object>, // <LiquidityParameters> 
};
let options = {
  url: `https://${REST_HOST}/v1/liquidity/params`,
  // Work-around for self-signed certificates.
  rejectUnauthorized: false,
  json: true,
  headers: {
    'Grpc-Metadata-macaroon': fs.readFileSync(MACAROON_PATH).toString('hex'),
  },
  form: JSON.stringify(requestBody),
}
request.post(options, function(error, response, body) {
  console.log(body);
});
// Console output:
//  {
//  }
import base64, codecs, json, requests
REST_HOST = 'localhost:8081'
MACAROON_PATH = 'LOOP_DIR/regtest/loop.macaroon'
TLS_PATH = 'LOOP_DIR/tls.cert'
url = f'https://{REST_HOST}/v1/liquidity/params'
macaroon = codecs.encode(open(MACAROON_PATH, 'rb').read(), 'hex')
headers = {'Grpc-Metadata-macaroon': macaroon}
data = {
  'parameters': <LiquidityParameters>,
}
r = requests.post(url, headers=headers, data=json.dumps(data), verify=TLS_PATH)
print(r.json())
# {
# }
$ loop setparams --help
NAME:
   loop setparams - update the parameters set for the liquidity manager
USAGE:
   loop setparams [options]
DESCRIPTION:
   Updates the parameters set for the liquidity manager. Note the parameters are persisted in db to save the trouble of setting them again upon loopd restart. To get the defaultvalues, use `getparams` before any `setparams`.
OPTIONS:
   --sweeplimit int                    the limit placed on our estimated sweep fee in sat/vByte. (default: 0)
   --feepercent float                  the maximum percentage of swap amount to be used across all fee categories (default: 0)
   --maxswapfee float                  the maximum percentage of swap volume we are willing to pay in server fees. (default: 0)
   --maxroutingfee float               the maximum percentage of off-chain payment volume that we are willing to pay in routingfees. (default: 0)
   --maxprepayfee float                the maximum percentage of off-chain prepay volume that we are willing to pay in routing fees. (default: 0)
   --maxprepay uint                    the maximum no-show (prepay) in satoshis that swap suggestions should be limited to. (default: 0)
   --maxminer uint                     the maximum miner fee in satoshis that swap suggestions should be limited to. (default: 0)
   --sweepconf int                     the number of blocks from htlc height that swap suggestion sweeps should target, used to estimate max miner fee. (default: 0)
   --failurebackoff uint               the amount of time, in seconds, that should pass before a channel that previously had a failed swap will be included in suggestions. (default: 0)
   --autoloop                          set to true to enable automated dispatch of swaps, limited to the budget set by autobudget. (default: false)
   --destaddr string                   custom address to be used as destination for autoloop loop out, set to "default" in order to revert to default behavior.
   --account string                    the name of the account to generate a new address from. You can list the names of valid accounts in your backing lnd instance with "lncli wallet accounts list".
   --account_addr_type string          the address type of the extended public key specified in account. Currently only pay-to-taproot-pubkey(p2tr) is supported (default: "p2tr")
   --autobudget uint                   the maximum amount of fees in satoshis that automatically dispatched loop out swaps may spend. (default: 0)
   --autobudgetrefreshperiod duration  the time period over which the automated loop budget is refreshed. (default: 0s)
   --autoinflight uint                 the maximum number of automatically dispatched swaps that we allow to be in flight. (default: 0)
   --minamt uint                       the minimum amount in satoshis that the autoloop client will dispatch per-swap. (default: 0)
   --maxamt uint                       the maximum amount in satoshis that the autoloop client will dispatch per-swap. (default: 0)
   --htlc_conf int                     the confirmation target for loop in on-chain htlcs. (default: 0)
   --easyautoloop                      set to true to enable easy autoloop, which will automatically dispatch swaps in order to meet the target local balance. (default: false)
   --localbalancesat uint              the target size of total local balance in satoshis, used by easy autoloop. (default: 0)
   --asset_easyautoloop                set to true to enable asset easy autoloop, which will automatically dispatch asset swaps in order to meet the target local balance. (default: false)
   --asset_id string                   If set to a valid asset ID, the easyautoloop and localbalancesat flags will be set for the specified asset.
   --asset_localbalance uint           the target size of total local balance in asset units, used by asset easy autoloop. (default: 0)
   --fast                              if set new swaps are expected to be published immediately, paying a potentially higher fee. If not set the swap server might choose to wait up to 30 minutes before publishing swap HTLCs on-chain, to save on chain fees. Not setting this flag therefore might result in a lower swap fees (default: false)
   --help, -h                          show help
GLOBAL OPTIONS:
   --rpcserver string           loopd daemon address host:port (default: "localhost:11010") [$LOOPCLI_RPCSERVER]
   --network string, -n string  the network loop is running on e.g. mainnet, testnet, etc. (default: "mainnet") [$LOOPCLI_NETWORK]
   --loopdir string             path to loop's base directory (default: "/home/runner/.loop") [$LOOPCLI_LOOPDIR]
   --tlscertpath string         path to loop's TLS certificate (default: "/home/runner/.loop/mainnet/tls.cert") [$LOOPCLI_TLSCERTPATH]
   --macaroonpath string        path to macaroon file (default: "/home/runner/.loop/mainnet/loop.macaroon") [$LOOPCLI_MACAROONPATH]
Messages
looprpc.SetLiquidityParamsRequest
Source: looprpc/client.proto
| Field | gRPC Type | REST Type | REST Placement | 
|---|---|---|---|
parameters | LiquidityParameters | object | body | 
looprpc.SetLiquidityParamsResponse
Source: looprpc/client.proto
note
This response has no parameters.
Nested Messages
looprpc.EasyAssetAutoloopParams
| Field | gRPC Type | REST Type | 
|---|---|---|
enabled | bool | boolean | 
local_target_asset_amt | uint64 | string | 
looprpc.LiquidityParameters
| Field | gRPC Type | REST Type | 
|---|---|---|
rules | LiquidityRule[] | array | 
fee_ppm | uint64 | string | 
sweep_fee_rate_sat_per_vbyte | uint64 | string | 
max_swap_fee_ppm | uint64 | string | 
max_routing_fee_ppm | uint64 | string | 
max_prepay_routing_fee_ppm | uint64 | string | 
max_prepay_sat | uint64 | string | 
max_miner_fee_sat | uint64 | string | 
sweep_conf_target | int32 | integer | 
failure_backoff_sec | uint64 | string | 
autoloop | bool | boolean | 
autoloop_budget_sat | uint64 | string | 
autoloop_budget_start_secdeprecated | uint64 | string | 
auto_max_in_flight | uint64 | string | 
min_swap_amount | uint64 | string | 
max_swap_amount | uint64 | string | 
htlc_conf_target | int32 | integer | 
autoloop_dest_address | string | string | 
autoloop_budget_refresh_period_sec | uint64 | string | 
autoloop_budget_last_refresh | uint64 | string | 
easy_autoloop | bool | boolean | 
easy_autoloop_local_target_sat | uint64 | string | 
account | string | string | 
account_addr_type | AddressType | string | 
easy_asset_params | EasyAssetParamsEntry[] | object | 
fast_swap_publication | bool | boolean | 
looprpc.LiquidityParameters.EasyAssetParamsEntry
| Field | gRPC Type | REST Type | 
|---|---|---|
key | string | unknown | 
value | EasyAssetAutoloopParams | unknown | 
looprpc.LiquidityRule
| Field | gRPC Type | REST Type | 
|---|---|---|
channel_id | uint64 | string | 
swap_type | SwapType | string | 
pubkey | bytes | string | 
type | LiquidityRuleType | string | 
incoming_threshold | uint32 | integer | 
outgoing_threshold | uint32 | integer | 
Enums
looprpc.AddressType
| Name | Number | 
|---|---|
ADDRESS_TYPE_UNKNOWN | 0 | 
TAPROOT_PUBKEY | 1 | 
looprpc.LiquidityRuleType
| Name | Number | 
|---|---|
UNKNOWN | 0 | 
THRESHOLD | 1 | 
looprpc.SwapType
| Name | Number | 
|---|---|
LOOP_OUT | 0 | 
LOOP_IN | 1 |