Theta holders regularly need to access information that is currently scattered across a number of sites: Theta Explorer, Coinmarketcap, Theta Wallet... etc, which is time consuming and inconvenient. To make Theta more approachable and easier to use, we decided to build a centralized location where Theta enthusiasts can find all the relevant information, and access Theta-related tools. We call it Thetaboard. Thetaboard is hosted at https://thetaboard.io, and we also encourage everyone to easily set up their own instance of Thetaboard via Docker.
What it does
Thetaboard is a web dashboard that displays data related to the user’s Theta wallet along with other useful figures such as Theta’s market price. Users can access their wallet using one of three methods: using their wallet address, the Theta wallet Chrome extension, or through a Theta domain. A Theta domain is an alias for a particular wallet, and similar to how DNS translates a domain name to an ip address (ex: google.com -> 126.96.36.199 ), a Theta domain translates to a Theta wallet address. Theta domains are a convenient alternative to wallet addresses as they can be easily memorised, and saves the user from copy/pasting steps. Theta domains are written to the blockchain using a solidity smart contract. They are bought and managed within thetaboard itself. Finally, Thetaboard also provides an user-friendly interface for managing and monitoring one’s own Guardian Node instance.
Thetaboard is divided into four sections, providing various visualizations and functionalities:
- Real time price of Theta & T-fuel
- History of Theta & T-fuel market prices over user-selected time frame (year, month, week)
- Summary of Theta & T-fuel holdings with real-time USD market value
- Staking rewards forecast based on user-defined stake amount
- Real time price of Theta & T-fuel
- Wallet page
- Current total value of a wallet
- History of all the transactions pertaining to a wallet
- Theta domain Page
- Purchase a domain on the Theta Blockchain using T-fuels.
- See all the domains that are owned by an address.
- Make an offer on a pre-existing domain (domains that are already owned by someone)
- Accept or reject domain purchase offers.
- Guardian Node
- Live Guardian Node Status, Version number, Sync Status, Guardian Node Logs
- Stake or withdraw Thetas to/from the Guardian Node.
- Start or stop the Guardian Node.
- Update Guardian Node to the latest available binary (handy to upgrade from 2.0 to 2.2 or 2.2 to Mainnet 3.0 !) .
- Download the latest snapshot.
How we built it
This project consists of four main components:
A Docker container
A NodeJS WebServer
A EmberJS UI A Smart Contract for domains
- The Docker provides ease of installation and deployment. It runs the WebServer and hosts all Guardian Node binaries.
- The WebServer, built using ExpressJS in NodeJS, interacts with Theta API's. It makes internal calls to Theta Explorer and mainnet-data Tetha APIs to retrieve the Guardian binaries and data. The WebServer also interacts with docker to start and stop the GuardianNode, and to fetch the Guardian Node status, logs, and summary.
- The UI is based on EmberJS for a robust and flexible web Framework, and connects to Theta Wallet Chrome extension as well as the Theta Blockchain JS SDK. It fetches user wallet information which is then used to render the wallets holding, transaction list and charts using ChartJS. The UI also gets info related to the Guardian Node from the WebServer .
- A custom smart contract on the Theta Blockchain enables users to buy domain, make offers to purchase pre-owned domains, accept offers, or cancel offers. The domains can be used to search for a wallet in our search bar. All the domains and their operations are written to the blockchain.
Challenges we ran into
Accomplishments that we're proud of
Our greatest accomplishment for this project by far is bringing value to the Theta community. For the past week, we’ve had 50 to 150 unique visitors per day, and we’ve created a discord group for Thetaboard which already has over 100 members. We see people repeatedly coming back to thetaboard.io and we believe that it is because they find value in it! As developers previously unfamiliar with blockchain development, we are really proud of our work on smart contracts for domains. As of this writing, our Guardian Nodes have been running on Thetaboard for over a month. This has simplified many aspects of Guardian Nodes management but also of how we keep up with the market and all other information related to Theta. Ultimately we think that thetaboard.io looks pretty sleek too.
What we learned
We learned how to interact with many aspects of the Theta ecosystem. We are now familiar on how to interact with Theta wallet, Theta explorer and Theta Guardian Node. We master the development life cycle of a smart contract. Writing, deploying, and using a smart contract on the theta blockchain was a good learning experience. The addition of interactions with this contract from the web using the ThetaJS library really connected the dots on how the web and the theta blockchain can interact together. And we are getting familiarized with Edge Node Streaming, and NFTs.
What's next for Thetaboard
Thetaboard.io aims to establish itself as the go-to destination for anyone interested in the theta ecosystem. For this we have a long term roadmap that includes several projects. For the smart contract domains we are planning to add capabilities to easily send and receive T-fuel using domain names instead of wallets address. Also we are hopeful that Theta will adopt our domain's smart contract and will integrate it to official explorers, and wallet extensions as well. ( Mitch, Jieyi, and Wes, don’t hesitate to ping us about it :) ). To do so we are planning to implement the official erc-162, and erc-165. We are currently looking at theta unique streaming technology to see how we could bring the edge cast to the web. Finally, we aim to continue to ease the setup and management of Guardian Node, by adding a hosted solution. We want to integrate the Edge Node as well. This should help with adoption and ability to compute for all users, and ultimately help bring Theta to the top 5 : https://stats.foldingathome.org/teams-monthly
Find the code for thetaboard.io here: https://github.com/momohuri/thetaboard And the code for the domains smart contracts here: https://github.com/thetaboard-org/smart_contracts/blob/master/contracts/addressName.sol