This commit saves the RPC request used to construct the `Parameters` on
disk. Since it's a proto message, an easy way to read/write it is to
rely on the proto marshal/unmarshal methods. A side effect is that
migration also becomes easy as proto message have its own internal
mechanism to keep track of the compatibility.
Previously, the feepercent flag on autoloop was set to an IntFlag and
later converted to Float, leading to the issue where users couldn't
specify decimal rates even though we allowed it.
Protobuf does not allow naming conflicts for files within the same
process, because all proto messages register themselves in a global
registry.
This is problematic because the server's itests import the client's
looprpc package to make rpc queries to the loopd client, thus importing
duplicate common.proto and server.proto from the client's looprc package
(since they're both in there as well).
This change moves the server's proto files into their own directory so
that they are not imported when we want to use the client's files. We
cannot change the package name for the server, because that would be
a breaking change (the package name is included in URIS). Fortunately,
we have the go_package option which allows us to place generated files
in a different location.
This commit passes routehints all the way from when/if the user passes
them from the cli all the way to the backend loop server. If private is
used, this commit passes that boolean down to different stages, where it
is then converted into routehints.
main: add --private and --route_hints to quote
Adds --private and --route_hints flags to quote cli
Adding the --private flag informs loopd that the connected node is
considered private (all channels are marked private) and the loop in
server may have trouble routing the payment. To handle this, loopd will
construct some hophints that will be sent to the loopin server to help
route. This commit merely adds the flag to the cli.
Since the lsat code was copied over to aperture a while ago for other
projects to use as well, we should migrate over to that shared code
also. This will give us the recently added "remove token if payment
failed and try again" feature for free along with some other small
updates to the lsat package.
In an effort to surface more information about why autoloop is not
executing, we add an error when suggest swaps is called with no rules.
In other cases we can surface a reason enum with each rule that is set,
but in the case where we have no rules, there are no results to
accompany with reasons.
As we add more paramters to the liqudity manager, it will become more
difficult to include them in a single cli endpoint with rules. This
commit renames the existing setparam command (which is only used for
rules at present), so that we can have a dedicated paramters cli
command for all the new values we are adding.
As we only use the readMacaroon function inside getClientConn where we
have an error return value anyway, we might as well pass the error along
correctly instead of failing hard directly.
To provide more information about swaps, we add a failure reason field
to our swaps. We do not extend our existing state enum to remain
backwards compatible.