npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ants-protocol-sdk

v0.0.6

Published

ANT$ protocol

Downloads

5

Readme

ANT$ Protocol SDK

⚠️ Please note this is an EARLY, alpha version of ANT$. It more represents a Proof of Concept rather than a final product.

ANT$ is a decentralized, permissioned data aggregation protocol. It is a second layer protocol that utilizes the Symbol blockchain to both incentivize, store and keep track a wide variety of information. This SDK implements ANT$ as a second protocol solution. The SDK can be implemented in a website, backend service, IoT device, or a mobile app.

While still in development, we have developed a good base. Future plans experimenting with homomorphic encryption for sensitive data, secret sharing mechanisms to better shard / distribute data, and distributed storage for a more persistent big data store.

Example Implementations

The choice of writing this SDK in Typescript offers many possible and useful implementation of the ANT$ protocol

Installation & Running

The package is available via npm:

npm install ants-protocol-sdk

To run the code, clone this repo, npm install, and you can run npm test to run the tests.

Vision

ANT$ is a decentralized, incentivization based data reporting protocol. Users, referred to as the “ants”, are able to be rewarded by contributing to an open data market. Much like the biological ant, the ANT$ system depends on the distribution of users, or "ants", over a given area to report and relay information.

Through the ANT$ protocol, anyone can have an on-chain data repository, set rules for what should be sent to it, and if / when a user should be paid for that data. The data submitter can be either completely anonymous or authenticated, depending on the objective of the entity creating the call-to-action for real time information.

Future Plans & Additional Notes

ANT$ currently logs directly to the Symbol blockchain. This works well for smaller amounts of data, however for massive datasets, we are looking into a way to integrate a distributed storage solution to link directly to Symbol.

It's worth noting that the blockchain is not really designed for holding mass amounts of information like images, videos, or audio. It should be used as a record keeping, state management, and reward system. We hope to update ANT$ to reflect these concepts.

Concepts / Features

Data Archives

Data Archives represented via on-chain accounts. These archives are able to send and recieve transactions, as well as be owned by multiple entites via a multisignature account. Using Symbol Account restrictions, archives are able white and black list certain addresses from reporting information. These cryptographic accounts act aw containers for the data, as well as store Schemas in a key-value state on the account.

Data Schemas

Multiple, on-chain JSON schemas can be assigned to an archive. Each schema represents a set of fields specified by the archive owner. These fields can be a JSON object (Typescript Interface, checked for type-correctness), string, number, or boolean.

Incentivization

Each field can also be assigned specific token id and value. An archive owner's external service can evaluate users based on the validity of the data, including specifying a bonus if all data is submitted. This incentivization scheme is entirely optional and configurable.

Archive Restrictions

Archives are able to black or whitelist addresses from logging to it. This enables Archive owners to only allow certain members to log information, which is useful in some scenarios.

Data Reports

Data reports are sent to data archives by users, where they must conform to the schema specified in the transaction. Reports can be validated against the target schema.

Symbol Usage / Detailed Explanation

ANT$ is a second layer protocol, meaning it utilizes Symbol's features to build the protocol,

Namespaces are used to establish a human-readable name for a data “Archives”. Data reports are sent and added to the Archive.

Along with the initial establishment of the namespace, a list of owners are declared and own this Archive account via a Symbol multi-signature account.

These owners have sovereignty over what comes in and out of the Archive through Account Restrictions. Account Restrictions can either declare an “Authorized User” on a whitelist, or a “Certification Restriction” (an account has to own a certain token).

Each Archive has a set of data “Schemas” associated via Namespace Metadata. These schemas declare how the dataset submitted to the archive should look like, what the required fields are and what types they should be. One Archive can contain multiple schemas to represent multiple datasets, i.e “Overall COVID Cases”, or “Testing Results By Region”.

Data Schemas can be updated by owners of the archive to reflect new information. New schemas can also be added to the archive to represent new datasets.

Data Reports are submitted in the form of Complete Aggregate Transactions with TransferTransactions within containing the report in chunks in each subsequent transaction.