# Libraries and Tooling
# Block Explorer
The VocExplorer is a web frontend that allows any third party to query and observe the Vochain processes, votes, organizations, transactions, etc. It is developed in golang using the Vecty (opens new window) framework and compiling to Web Assembly.
The VocExplorer frontend queries the Gateway Api for publicly-available information from the Vochain. Users can host their own combination of explorer frontend and gateway node and can also manually query gateway nodes.
# DVote JS
This library is the more versatile and extensive of the ecosystem, since it allows to target both web and app clients, as well as it does with backend services. It provides all wrappers to interact with all decentralized methods andd resources, covering the whole process.
The intended functionality is to interact with a public Ethereum blockchain, to fetch data from a decentralized filesystem, to enforce data schema validity, to prepare vote packages and using decentralized messaging networks through Gateways.
- See DVote JS on GitHub (opens new window)
- See an example integration of Voting as a Service (opens new window) using DVote JS
# Go DVote
Similarly to DVote JS, Go DVote provides an extensive toolkit to interact with Vocdoni, in addition to actually running it. Beyond the SDK libraries, Go DVote also allows to spin up a DVote Gateway, a Vochain Miner, a Census Service, etc.
Its intent is to enable P2P access to its JS counterparts, and process data conforming to the standard formats and data structures.
# DVote Solidity
Provides the Smart Contracts supporting the trustless management of entities, processes and namespaces. It also provides documentation, TypeScript wrappers and ABI to attach to the contracts from client applications.
- See DVote Solidity on GitHub (opens new window)
- See the Entity Resolver smart contract
- See the Process smart contract
- See the Namespace smart contract
# DVote Flutter
Note that all flutter/dart libraries are deprecated at the moment, as we are no longer developing a mobile application
This library features a subset of DVote JS features, tailored to the usage on mobile apps consuming decentralized metadata and governance processes. While most of the plumbing is developed in Dart, all performance sensitive computations are handled by native versions. See DVote Flutter Native below.
This library is likely to be refactored into a pure Dart version and a Flutter superset in the future.
# DVote Rust
A Rust library that provides fast and performant functions to compute Ethereum wallets, Poseidon hashes, encrypt and decrypt data and generate ZK Proofs on modest hardware. These expensive computations need the lightest implementation possible, and DVote Rust serves exactly this purpose.
# DVote Rust FFI
A library that exports the cryptographic primitives from DVote Rust in a C compatible format that can be used with the Foreign Function Interface. It is mostly used by DVote Flutter Native.
# DVote Flutter Crypto
This library exposes Dart wrappers around native bindings of the cryptographic functions used by the Mobile Client. It bundles Android and iOS libraries and exposes typed Dart functions to invoke them seamlessly.
# DVote Protobuf
This library allows to define data models and store data in an efficient and compact way. Data can be easily serialized and deserialized into Dart, Go, JS, etc, objects.
Protobuf empowers the use of GRPC but the data models are currently used by the Mobile Client.
# DVote Wasm
This library provides experimental support for the cryptographic primitives available on dvote-rs for NodeJS and web browsers, importing WASM modules.
# Eventual
Eventual is a Flutter package that provides a convenient path toward a Reactive Programming model on Flutter apps. It allows to create value listeners, track progress of their related remote requests and handle errors, all while repainting the UI in a clean and efficient fashion.
A simple and performant alternative to the BLOC pattern or the boilerplate of using Providers.