๐ go to the motion ๐
License: GPLv3
Requested amount: 1273.95 DOT
Timeline: 6 weeks
Contact: ๐ง [email protected]; ๐จ๏ธ #virto-network
Libwallet is a lightweight and very portable library with simple to understand and use
abstractions that allow creating chain-agnostic crypto wallets able to run in
all kinds of environments like native applications, hosted wallets, the browser
or even embedded hardware.
I'm Daniel, senior Polkadot ambassador, full-time open source builder in the ecosystem and founder of the Virto Network, a parachain focused in
decentralized commerce infrastructure for the Polkadot ecosystem, Virto aims
to bridge real world products/services and the common folk to the growing
but not so user friendly world of interconnected blockchains(For more about Virto and its key place in the Polkadot ecosystem check our whitepaper ;)).
To realize our promise of decentralization for the masses we have been developing a collection of tools and high level APIs that will allow users interact with the Polkadot ecosystem in a decentralized but familiar way. Just like our Kusama treasury funded library Sube, libwallet
is a core building block of our infrastructure that can also greatly benefit the ecosystem, in particular the simple creation of all kinds of Polkadot compatible crypto wallets.
The entry barrier to the Polkadot ecosystem it's still considered to be high for the average user due to its technical complexities and the lack of user facing tools and applications that abstract those complexities away.
The main entry point of users to a blockchain ecosystem is via its wallets, the ecosystem should provide a wide variety of wallets as there are all kinds of users with very different levels of expertise, needs and preferred platforms, the available options should be as diverse as the users themselves, but for developers however, it becomes hard to support many different platforms and it's often required to re-implementing security critical components for each targeted platform, a non trivial task that requires good understanding of crypto. We believe libwallet(like our other tools) can make things easy for developers so they can focus on making things easy for users, creating wallets would become a breeze and more focus can be put in creating the best mobile/browser/hardware/hot/cold/magic wallet experience :)
Libwallet main design principles:
Ease of use
A high level public API abstracts blockchain and cryptography heavy concepts.
i.e. Account
abstracts handling of private keys and their metadata.Vault
makes it simple to support multiple types of credentials and back-ends
that store private keys in different ways, whether it is a cryptographic
hardware module, a database or a file system.
In the future this abstractions could be used to integrate with different
ledger-like back-ends including regular bank accounts.
Security
Written in safe Rust and based on of production ready crypto primitives. Also
encourages good practices like the use of pin protected sub-accounts derived
from the root account as a form of second factor authentication or a two step
signing process where transactions are added to a queue for review before
being signed.
Multi-chain and extensibility
No assumptions are made about what the kind of private keys and signatures
different vaults use to be able to support any chain's cryptography.
Core functionality of wallets and accounts can be extended to support chain
specific features. There is initial focus on supporting Substrate based
chains adding features like formatting addresses using their network prefix
or use metadata to validate what's being signed and simplify the creation of
signed extrinsics.
Portability and small footprint
Being no_std
and WASM friendly users can create wallets for the wide range
of platforms and computer architectures supported by Rust. Dependencies are
kept to a minimum and any extra non-core functionality is set behind feature
flags that users can enable only when needed.
This library will be used as the core component of the Wallet API, one of
Virto's decentralizable, composable and easy to use HTTP APIs that run
as plugins of the Valor runtime.SummaVault
will be our main vault implementation that integrates the Matrix
protocol allowing users to sign-up to a homeserver using familiar credentials
and have out of the box key management, multi-device support and encrypted
account backup among others.
We already started the required work to come with better estimates, our deliverables and timeline can be tracked in the repository milestones but overall it looks like:
| Feature | done | FTE time |
|--------------------------------------------|------|----------|
| Core abstractions and basic functionality | X | 3w |
| Simple Vault and example wallet CLI | X | 1w |
| WASM and no_std support | X | 1w |
| Substrate extension | ~ | 2w |
| Batched/Two-step signing | | 2w |
| Multi account support | | 1w |
| Persited Vault + updated CLI | | 2w |
| Showcase in Substrate seminar | | -- |
Full Time Engineer = USD$60/hour, 1w = 40 hours, #Engineers = 2
Total cost of the project = USD$28,800 with the 30 day average price per DOT of USD$22.607