-
Notifications
You must be signed in to change notification settings - Fork 44
Adds TEOS case study #187
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Adds TEOS case study #187
Changes from 2 commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
cdcd9b8
Adds TEOS case study
80f9047
Add TEOS edits
2fee0e9
Update docs/_blog/teos-uses-ldk-to-build-open-source-watchtower.md
f354794
Update docs/_blog/teos-uses-ldk-to-build-open-source-watchtower.md
3b12cf3
Update docs/_blog/teos-uses-ldk-to-build-open-source-watchtower.md
882c2b2
Update docs/_blog/teos-uses-ldk-to-build-open-source-watchtower.md
de08d83
Update docs/_blog/teos-uses-ldk-to-build-open-source-watchtower.md
4ac1a7b
Update docs/_blog/teos-uses-ldk-to-build-open-source-watchtower.md
e74d15c
Update docs/_blog/teos-uses-ldk-to-build-open-source-watchtower.md
e3c017b
Update docs/_blog/teos-uses-ldk-to-build-open-source-watchtower.md
a526cc5
Update docs/_blog/teos-uses-ldk-to-build-open-source-watchtower.md
08dcc66
Update publish date
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
33 changes: 33 additions & 0 deletions
33
docs/_blog/teos-uses-ldk-to-build-open-source-watchtower.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
--- | ||
title: "TEOS uses LDK to build open-source watchtower" | ||
description: "Learn how TEOS built an open-source watchtower" | ||
date: "2023-01-14" | ||
authors: | ||
- Sergi Delgado | ||
tags: | ||
- Case Studies | ||
--- | ||
|
||
[The Eye of Satoshi (TEOS)](https://github.com/talaia-labs/rust-teos) s a bitcoin watchtower with a specific focus on lightning. Watchtowers are third-party viewing services that help prevent people from cheating on the lightning network by constantly monitoring the bitcoin blockchain for channel breaches. If found, a watchtower will react by penalizing the misbehaving party and sending all funds to its counterpart. | ||
|
||
The Eye of Satoshi (TEOS) needs information from several building blocks in order to work. This includes block data processing (including reacting to forks/chain splits), interaction with a bitcoin node (for transaction broadcasting) and general tooling around bitcoin/lightning (transaction parsing, data encoding and decoding, lightning P2P messaging, etc) | ||
ConorOkus marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
TEOS does not have strong performance requirements, as data is checked in newly processed blocks approximately every 10 mins. However, if it services a substantial amount of nodes at once or channels with high traffic, it may need to compare processed info against huge amounts of data. | ||
ConorOkus marked this conversation as resolved.
Show resolved
Hide resolved
|
||
# What we did? | ||
|
||
Initially, we had a Python implementation, so we needed to choose between sticking to the original choice of language or re-implementing something that was more robust with better tooling. Rust was an obvious choice given how well it has worked for other bitcoin-related projects. In addition, moving away from Python allowed us to drop a substantial amount of dependencies that were unmaintained or maintained by us, and instead use properly maintained counterparts. | ||
ConorOkus marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
 | ||
|
||
With respect to LDK, it has allowed TEOS to abstract its interaction with bitcoind, and remove several components of the original design, given that LDK already does a substantial amount of the low-level heavy lifting (e.g. reorg management). Also, for the upcoming features such as lightning P2P communication, Python lacked proper support for most of lightning’s functionality, so using LDK paid for the invested Rust re-implementation time instead of having to implement and maintain all that related tooling in Python. | ||
ConorOkus marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Furthermore, it let us take advantage of any future lightning updates that we may need, such as anchors. At the end of the day, using LDK lets you focus on the product/protocol you are building and have to care less about the low-level lightning/bitcoin parts that are needed. | ||
ConorOkus marked this conversation as resolved.
Show resolved
Hide resolved
|
||
# Results | ||
|
||
We’ve reached a more robust and stable codebase, easier to contribute to and integrate with other projects. | ||
ConorOkus marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Functionality-wise, we recently reached the same state as the old Python codebase. We are currently focusing on new functionality and integrations. From a project health perspective, we’ve achieved a healthier community, primarily due to using Rust and LDK. Also, it’s easier to make improvements to a project when you speak, literally, the same language and use the same tooling. | ||
ConorOkus marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Some additional words on this: LDK’s team has been super helpful both from a Rust to a lightning dev standpoint. They’ve helped us solve several issues and have been open to implementing and accepting PRs for new functionality that we required. | ||
ConorOkus marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Learn how you can deploy your own TEOS watchtower on the Bitcoin Developers Youtube [channel](https://www.youtube.com/watch?v=8vzNB_NZt2A). |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.