playing for KEEPS
Contributor Profile
PFK Rewards
Round 7
Tokens are locked for 1 year from the date of distribution.
Continued development, work on staking pool with state#1559
Round 6
Tokens are locked for 1 year from the date of distribution.
Continues to ship amazing Lightning work.
Round 5
for continuing work on and the aggregator! Impressing a ton of people in BTC land
Round 4
Tokens are locked for 1 year from the date of distribution.
Our top winners. For his work on ln2tbtc, a Lightning Network <> tBTC integration! Give it a try
Round 3
Tier Two


- Been working on a decentralized staking pool with @state, nothing is ready to be shared publicly tho 
- Built an incentivized redemptions system where stakers can set up KEEP bounties that are claimable by redeeming deposits with collateralization below a certain threshold (not yet live on mainnet, but we plan to launch it soonTM). 
This is a first step towards our staking pool project. 
- Forked tBTC dApp ( and connected it to tcp-enabled public electrum servers through a websocket-to-tcp-sockets proxy 
I built (, enabling users to deposit/redeem deposits in case the KEEP-operated server goes down or there are any problems with it (during the last liquidity crunch this became a problem which caused operators to have issues redeeming their low-c-ratio deposits). 
- Built an adapter for tBTC/KEEP on DefiPulse (
- Bugfix on tbtc.js (, details on the PR 
- Bugfix on electrum-client-js (, this hasn't been an issue for the tBTC dApp because only websocket-based connections are used there but connections over tls sockets to electrum servers are broken 
- Added KEEP token to metamask (, also the PR that added tBTC was merged in november 
- Provided liquidity on KEEP pairs on uniswap with all the rewards I got from my ECDSA node and the last PfKs
- Been running a mainnet ECDSA node for a few months with no faults (not providing operator address because of privacy, it can be tracked from my grant). I plan on using the second grant 
I received to run a node for the staking pool (this may change due to the design we end up going for)


- Launched tbtcswaps (tBTC <-> Lightning network trustless swaps) and shut it down when a bug was found.

- Created a PR to add tBTC to the metamask contract list -
- Designed and implemented the prototype of a system that would enable trustless swaps btween Lightning Network and zksync (zk rollup).Meant to be used for the tbtc torch being passed on twitter -
- Applied a major upgrade to my courtesy call alert bot and brought it to mainnet -
- Created a tx relayer that leverages the GSN to allow anyone to pay the gas fees associated with minting tBTC with LN sats.

Essentially in the beginning of the process a Lightning invoice is produced which, when paid, funds the gas fees of the whole process, thus making it possible to mint tBTC without ever having to own ETH. Not production ready, just a prototype. -


tbtcswaps (previously ln2tBTC) is live on mainnet! 
  • Check out to swap tBTC for BTC on the lightning network trustlessly!
  • If you'd like to become a liquidity provider, ping or send me a DM. Note: it involves running a lightning node
  • If you are interested in security, try to break my implementation and get rewarded with 1k USD. 
This month I teamed up with @bakarapara to bring my submarine swaps system from prototype-level to production quality. This involved a full re-write of the whole system, which was re-designed from the ground up by @bakarapara, and a re-implementation of the frontend and node, which was also heavily upgraded in terms of security (fun fact: when checking out other implementations of submarine swaps I found that a lot of them were vulnerable, luckily most were just prototypes). Right now the system is live on mainnet, at the moment I'm the only liquidity provider with about 1k USD in a mixture of tBTC and LN-sats, but I've already had several people reach out with interest in becoming an LP so I believe the number of LPs will grow soon

Apart from that, I've worked on a system that enables holders of KEEP that don't reach the staking threshold to pool together their KEEP and stake it. I expect that when the stakedrop begins we will see a big influx of new users that come because of the economic profits and are interested in participating without having to own large positions in KEEP, so this is meant to serve this market. Code: 

Finally, I made two PRs to tbtc.js that aimed to improve several things that came up when I worked with it heavily last month to add TypeScript support & during a discussion with shadowfiend. The [main PR]( involved:
- Generate typescript typings (I'll deprecate my DefinitelyTyped package when the types are provided directly on the main package)
- Rework the tests and bring them back
- Transpile the readme to markdown to get it to show on npm (right now it's not getting recognized)
- Fix the example code provided on the README (it was outdated)
- A minor import fix 

From discussion on this PR another one was spun (and it has already been merged, yay!), which fixes type-checks on CI (they were silently broken and a few type-incompatible changes slipped by). See On top of that, my work on this lead me to land two PRs on alexbosworth's projects run-lnd and ln-service. My changes are minor and not related to KEEP/tBTC at all, but still it's nice.

Contributions for this PFK:
- Created, a swapping service that allows users to swap tBTC for Lightning Network-bound BTC trustlessly using submarine swaps and a decentralized network of liquidity providers  
- Live page: 
- Contract: 
- Diagram of one of the protocols: 
- Explanation of the protocol:
- Reported a bug on tbtc.js which made it to the previous release (and some others) and, if left unsolved, would have caused address synthesis to fail on mainnet. Curiously it turned out that the upstream dependency (bcoin) had also some outdated code surrounding that, so I also sent a PR there (
- My PR:
- Commit that fixes the bug:
- I also reported some other bugs and added some types that were eventually merged (not by me), but given that there was a team member working in paralel on the same project I don't know if my efforts actually led to any changes. That is, given that these bugs were discovered doing static analysis it's quite possible that he didn't look at my PR, just did the same I did and we discovered the same things independentlywith with very little time difference (~days).
- Created @types/keep-network__tbtc.js on DefinitelyTyped so that it's much easier for other typescript users to get started (note that these types are better than what can be achieved by --declaration compiling with the current JSDoc comments, as declarations generated that way miss some things such as the types of class attributes)

Contribution: KEEP Tools
Contribution: KEEP Guides
Contribution: Community Resources