Inspiration
The vision for TapVolt stems from the desire to democratize access to Taproot Assets on the Bitcoin Lightning Network. We aimed to create a user-friendly interface that simplifies the complexities of asset management, making it accessible to both novice and experienced users. We wanted to provide a seamless experience for minting, managing, and transferring assets, thereby fostering innovation and adoption within the Bitcoin ecosystem.
What it does
TapVolt is a React application that empowers users to interact with their Lightning Network node (LND and Tapd integrated) for managing Taproot Assets. It provides functionalities to:
- View Owned Taproot Assets: Display detailed information about owned assets.
- Mint New Assets: Create and mint new assets with customizable parameters.
- Manage Minting Batches: View, finalize, and cancel pending minting batches.
- Deposit Assets via Tapchannels: Open Taproot Asset-enabled Lightning channels.
- Transfer Assets (Future): Intends to support asset transfer via Lightning and on-chain.
How we built it
TapVolt is built using React for the frontend, leveraging @lightninglabs/lnc-web to interface with LND and Tapd. The application uses Tailwind CSS for a responsive and modern UI. We used the @lightninglabs/lnc-web/taprpc library to interact with Taproot Asset functionalities. For metadata handling, we employed the Buffer module for encoding and decoding. The app is designed to connect to a Lightning node running LND and Tapd in integrated mode, ideally through Lightning Terminal (Lit). We've tested the app on Signet, due to its speed and compatibility with Lit.
Challenges we ran into
- BitcoinConnect Integration: Initially, we attempted to use BitcoinConnect with LNC connection, which presented connectivity issues.
- Tailwind CSS Versioning: We encountered PostCSS errors due to Tailwind CSS version incompatibilities, requiring a downgrade to version 3.x.
- LNC-Web Package Versioning: Older versions of
@lightninglabs/lnc-webcaused issues with the Taproot mint method, necessitating an upgrade to the latest alpha version (0.3.3-alpha). - Network Selection: Choosing a suitable test network was challenging due to the deprecation of testnet3 and the lack of Lit support for testnet4. We ultimately opted for Multinynet Signet for its speed and Lit compatibility first but then we had problem with Taproot Federation Servers. After changed to normal Signet we could find and continue the project.
- Tapchannel opening: We found that opening taproot channels works only with Lightning Terminal's integrated LND and Tapd modes. When using two separate computers, we made a
fundChannelcall, but the receiving node gave this error:[ERR] TCHN: unable to verify output proof: invalid witness: missing asset input(s): unable to make virtual txIn (*asset.PrevID). This happened with both our UI and terminal commands. We first suposed that we had to insert a proof in the universe host before trying to open taproot assets channel but after the mint transaction got 6 confirmations we could open the taproot asset channel.
Accomplishments that we're proud of
- Successfully integrating LNC to connect to a Lightning node and manage Taproot Assets.
- Developing a functional interface for minting, listing, and managing Taproot Assets.
- Overcoming versioning challenges with Tailwind CSS and
@lightninglabs/lnc-webto ensure stability. - Implementing a robust solution for displaying collectible asset metadata, including images.
- Setting up a working development environment using Signet.
- We could make call at
fundChannelmethod using our user interface - Being able to successfully open a taproot asset channel in our UI
What we learned
- The importance of carefully managing library versions to avoid compatibility issues.
- The complexities of integrating with evolving Lightning Network technologies.
- The necessity of thorough testing across different network environments.
- The current limitations of taproot channels and the need for LND and Tapd running in integrated mode, mainly using Lit.
- The importance of clear and concise error handling.
What's next for TapVolt
- Implement asset transfer functionality via Lightning and on-chain.
- Enhance the UI/UX to provide a more intuitive and user-friendly experience.
- Add more robust error handling and user feedback.
- Expand testing to cover a broader range of scenarios and network configurations.
- Add more parameters to tapchannel openning.
- Implement collectibles minting.
Built With
- lightning-node-connect
- lightning-terminal
- react
- taproot-assets

Log in or sign up for Devpost to join the conversation.