Releases: callebtc/electronwall
v0.5
What's Changed
- Add Private Channel Rule for ChannelInterceptor by @ziggie1984 in #12
- bugfix htlcevent by @ziggie1984 in #14
- Security patches by @onepabz in #16
New Contributors
- @ziggie1984 made their first contribution in #12
- @onepabz made their first contribution in #16
Full Changelog: v0.4...v0.5
electronwall v0.4
⚡️🛡 Scripts and node explorer APIs
Programmable rules
electronwall has a Javascript engine called goja that allows you to set custom rules. Note that you can only use pure Javascript (ECMAScript), you can't import a ton of other dependcies like with web applications.
Rules are saved in the rules/
directory. There are two files, one for channel open requests ChannelAccept.js
and one for HTLC forwards HtlcForward.js
.
electronwall passes contextual information to the Javascript engine that you can use to create rich rules. See below for a list of objects that are currently supported.
Contextual information
electronwall now fetches data from 1ML.com and Amboss.space and provides this information to the rule script.
Here is one rather complex rule for channel accept decisions in ChannelAccept.js
for demonstration purposes:
// only channels > 0.75 Msat
ChannelAccept.Event.FundingAmt >= 750000 &&
// nodes with high 1ML availability score
ChannelAccept.OneMl.Noderank.Availability > 100 &&
// nodes with a low enough 1ML age rank
ChannelAccept.OneMl.Noderank.Age < 10000 &&
(
// only nodes with Amboss contact data
ChannelAccept.Amboss.Socials.Info.Email ||
ChannelAccept.Amboss.Socials.Info.Twitter ||
ChannelAccept.Amboss.Socials.Info.Telegram
) &&
(
// elitist: either nodes with amboss prime
ChannelAccept.Amboss.Amboss.IsPrime ||
// or nodes with high-ranking capacity
ChannelAccept.Amboss.GraphInfo.Metrics.CapacityRank < 1000 ||
// or nodes with high-ranking channel count
ChannelAccept.Amboss.GraphInfo.Metrics.ChannelsRank < 1000
)
electronwall v0.3.3
⚡️🛡 JSON output
In this release
JSON output
In config.yaml
set log-json: true
to receive all logs in json format for better log aggregation with external tools. Output will now be written to StdOut (instead of StdErr).
Detailed logging
You'll now see the details for LinkFailEvent
events and the preimage for successful forwards.
Color output
In terminal.
electronwall v0.3.2
⚡️🛡 Wildcards
electronwall can now filter payment routings along specific channels or channel pairs using an allowlists or a denylists.
In this release
Wild cards
To allow or deny HTLC forwards, you can either use a specific filter for a channel ID pair like 6629856x65537x0->7143424x65537x0
or filter, for example, all outgoing forwards to a channel like *->25328x256x0
. Similarly, you can filter for incoming payments using *->25328x256x0
.
You can also apply wildcards to filter for all public keys when using the channel acceptor.
Config changes
This release requires you to make appropriate changes in your config:
forward-mode: "allowlist" # only one mode can be used at a time!
forward-allowlist:
- "7143424x65537x0" # all forwards from this channel
- "7143424x65537x0->*" # same as above
- "6629856x65537x0->7143424x65537x0" # channel pair
- "*->25328x256x0" # all forwards to this channel
forward-denylist:
- "9961472x65537x1"
- "*" # this would deny all forward events in "denylist" mode
Screenshot
electronwall v0.3.1
⚡️🛡 Filter channel pairs
electronwall now supports allowlists and denylists for payment routing (HTLC forwarding). You can add channel IDs to your config to allow or deny forwards from certain channels. You can also filter HTLCs forwards along a specific pair of channels.
In this release
Standard channel ID format
electronwall now uses the standard channel ID format 7143424x65537x0
that is used in many places such as amboss.space.
Filter channel pairs
You can now also add channel pairs to the filter list like 7929856x65537x0->7143424x65537x0
. electronwall will then only filter HTLC forwards along this incoming->outgoing channel pair.
Config changes
This release requires you to make appropriate changes in your config. whitelist
was renamed to allowlist
and blacklist
to denylist
. An example config.yaml
:
forward-mode: "allowlist"
forward-allowlist:
- "7143424x65537x0"
- "7929856x65537x0->7143424x65537x0"
forward-denylist:
- "9961472x65537x1"
Screenshot
HTLC interceptor
⚡️ electronwall v0.3
electronwall now supports whitelists and blacklists for payment routing (HTLC forwarding). You can add channel IDs to the config file (long uint64
numbers) to allow or deny forwards from these channels.
Note: This version has config file changes (config.yaml
) since some of the entries have been renamed. There are two lists now: the list of peers for channel open requests and the list of channels IDs for payment forward request. If you are using an old config, transfer your entries to the new one.
Blacklist support
- Rename project to electronwall
- Add support for blacklisting nodes
Whitelist for channel openings
This is a first release with whitelist support.