I was first inspired by an idea found in the DigitalBits docs which was a service that was able to create accounts for users that didn't yet have one and then send them the details, enabling you to send CDAs (and XDB) to anyone seamlessly. As I explored the idea further it became clear that it would also be beneficial if the federation database XDBeam uses could have existing accounts, to prevent spam and wasted network space.
What it does
XDBeam is primarily used through a web interface that displays key wallet information. Its other key feature is the "Beam" menu, in which the user can send any token they have to any other address. Not only that, but it can be sent to any email address.
If an email address is entered, it is searched in the XDBeam Federation Service with the "*xdbe.am" suffix. If there is a matching address, then the transfer is made to that account. If not, a keypair is generated by the Federation Service, of an account that has not yet been created. Then XDBeam adds a creation operation to the transaction and explains the XDB requirements to the user. If the user continues with the transaction, the new account will be created and given the transferred token, at which point XDBeam will email the new user with their account details, allowing them to access their new tokens or merge this account with a previous account that wasn't in the Federation DB.
Due to time constraints and my technical limitations, the submission to the hackathon is based on a prototype pair of web UIs.
The main XDBeam interface prototype is available at xdbe.am and is currently active on the testnet, so you can try it out with your own test wallet to see how it responds.
The XDBeam Federation Service interface prototype is available at federation.xdbe.am.
Currently, neither of these interfaces are connected to a back-end and are thus not connected to the network yet. They do demonstrate the user-facing part of XDBeam, which is what the main idea is.
How I built it
Both pages were composed using Svelte, a HTML-like compiled language that results in lightweight and fast code in production, and an easier development experience. See the real code in the GitHub repositories I've linked to. The websites are currently being hosted on a shared hosting plan, with no back-end.
Challenges I ran into
I faced many challenges over the course of development, primarily due to my relative newness to programming and blockchain development. A few were based on setting up the website, which I had never done before, and I also found form styling difficult.
The biggest challenges I encountered were ones that I could not overcome, at least not this time, and they related to back-end development. A major part of the XDBeam vision is to run a federation server, and also have a backend to add addresses to the database, and also one to compose transactions to be sent to frontier. Unfortunately that proved to be too large for me at this stage. I am hopeful for future developments, however.
Accomplishments that I'm proud of
This has been my first hackathon submission, and I worked in conjunction with the ideas set out by the moderators. I developed my technical communication skills and reached out to mentors when clarification was needed. I am also proud to have made 2 (simple) web apps independently, fully self-guided.
What I learned
I learned a lot about svelte development and how the federation server works, even if I couldn't manage to put that knowledge into practice within the time limits. I also leaned a lot about DigitalBits and what sets it apart from other blockchains. I hope to use these in future developments, whether on XDBeam or in other hackathons.
What's next for XDBeam
If it's recommended, I would love to work more on XDBeam to get it connected with a backend and with a federation server, allowing users to send digitalbits to anyone, regardless of if they have an account or not. It would serve as a massive utility for users, as well as a smooth way to onboard friends and family and expand the DigitalBits user-base. It would require more learning and likely some ongoing technical help, but it could become a pillar of the DigitalBits network.
Thanks for reading! Let me know what you think.