The recent cryptocurrency boom has reflected on lots of digital-aligned projects, forcing financial-oriented businesses to enter the age of crypto payments. We took a challenge and build a client-side wallet for storing Ethereum tokens on the user’s end. From scratch.
Basically, cryptocurrency wallets could be divided into two groups: hosted and non-hosted. While hosted wallets can not be marked as “trustless” (user’s keys are stored on service provider’s servers, even in a “hashed” way), non-hosted or client-side wallets never apply for a “trusted” server that way, creating and signing a transaction on the user’s end. This way, proper fund management can only be applicable for users who want to have entire control over their funds. Therefore, businesses who would like to satisfy a user’s interest should be oriented on client-side key storage, as it follows the idea of decentralization, which is highly valued by the crypto community.
In order to speed up the realization, we have offered several variants for addressing to public libraries, in order to define the basic framework and workflow. The server, backend, and frontend parts were built from scratch by Unknwn team.
Server and Backend
We’ve run three full Ethereum nodes with RPC on them, and have spread them worldwide, in order to reduce any connection lags and increase communication speed. The user interface backend is based on Node.js.
Libraries We Used
As for the cryptographic part, we have adopted the ethereumjs-wallet public library that allows a private key to be converted into an address, and ethereumjs-tx library to sign raw transactions with private keys.