Welcome to IDNET & Giga

Nathan James
8 min readOct 25, 2020

It’s been a long time coming. After three iterations of RIDL and failed attempts to bring a cohesive cross-chain experience, it’s finally here.

Want to skip ahead and try it out now?
Go ahead:
https://ohmygiga.com

What is IDNET?

The IDNET smart contract is a reputation and identity based protocol that sits on top of EOSIO. It acts as a cryptographically backed message broker between cryptographically proven users and integrating platforms.

Identities do the heavy lifting
Identities are nothing but a small bit of meta-data in the smart contract that says who you are digitally. They can hold various real tokens (Like EOS and EOSDT), but they aren’t real EOSIO accounts. They cost a fraction of the price to create ($0.08 on EOS Mainnet, less on other chains) and can move tokens between identities and EOSIO accounts.

They can also use all of the smart contract actions meant for general users:

  • changekey — Changes the key associated with the identity
  • repute — Assigns reputation to an entity (entity doesn’t have to exist within the smart contract)
  • broadcast — Publishes message to the blockchain. Only verification is done on-chain, no data is stored there.
  • interact — Allows users to interact with content emitted from IDNET
  • report — Allows users to report content, and other identities.
  • givetokens — Transfers tokens from one identity to another.
  • transfer — Transfers tokens to EOSIO accounts

USAGE
To ensure automatic spam protection, the contract has a concept of USAGE allowances. Some actions like interact earn you USAGE tokens (even if it’s someone interacting on your content). Some actions like broadcast require USAGE tokens to do. If you want to use the platform extensively you must partake in full use of the protocol.

Once the smart contract hits production (and EOS Mainnet), all RIDL tokens will be able to be loaded into IDNET for USAGE conversion.

Relays
Relays are what allow users to not need EOSIO accounts. They run small programs that accept signed action data from identities and forward them to the smart contract in return for USAGE.

In order to ensure that action data is not tampered with on the way, the smart contract will hash the parameters, and check that they were signed with the identity’s publicly known key (which happens on Giga, before being sent to a relay). If any tampering happens on the way, the transaction will be rejected.

Relays also replicate identity meta-data across chains. Identities which are registered on one chain cannot be registered on another (and even if they are, Giga will reject them before they hit the platform).

There is both a relay GUI and CLI for general use which will be open-sourced along with the rest of the code. These are pre-built instantly runnable applications that allow anyone to become a relay and earn USAGE in return for providing CPU and NET to identities.

Relays have some special smart contract actions for them:

  • regrelay — Registers a relay along with its metadata.
  • unregrelay — Unregisters a relay
  • heartbeat — Allows a relay to check-in and update their last_alive property (this is used to give users better connectivity with live relays, and make sure any relay which didn’t unregister but is no longer active doesn’t get picked up by users). This action also gives you usage every 2 minutes.

There are also some managerial actions related to relays to ban and unban them if they aren’t consistently reachable or are not forwarding messages properly to chain.

Relays get up to 25 USAGE per identity registration for users, which they can forward a portion of to the users to get them started. This is configurable in the relay GUI and CLI.

Registration also costs RAM (a non-regenerative EOSIO resource), and as such relays can register themselves with registrations disabled and will never have their RAM consumed. However, no other action in the smart contract gives even close to as much USAGE as helping to register identities.

Note: Spam prevention of identity registration for relays is not yet implemented, but will be before mainnet release.

Cross-chain compatibility
The IDNET contracts were made specifically to work on many chains. This allows different resource models to be used by different relays. Since the contract is a sort of complex message relayer, integrating platforms can aggregate the data from all of the chains into one cohesive experience for their users.

Beta testing
Right now the contract is only on the Jungle Testnet. A beta period will take priority so that smart contract bugs can be found and handled before moving to production (multi-chain mainnet release) where keys can be nulled out and immutability of the smart contract can commence.

What is Giga?

Now let’s get fancy. Giga is one example of an integrating platform which consumes IDNET.

  • No EOSIO account required.
  • Live cryptographically powered chat (each content / profile / topic has its own chat, and the feed has a global chat).
  • Social network style content posting with repost, up/down vote, report, comments, and tipping/gifting.
  • Multi-chain aggregation of content.
  • Built-in user reputation.
  • Web, Desktop, and Mobile.

Posting will cost you time
USAGE is gained primarily by getting interactions on your content. When another identity interacts (up/down vote, repost, etc) on your content you get a little USAGE. If you post more than you get interactions you’ll end up with no USAGE to post anything, and will have to interact on other identity’s content instead. Make great content that people love and you’ll be able to post more. Don’t and you won’t.

Get rewarded by the platform, and by the users.
IDNET will automatically reward you with USAGE tokens as you interact with content, but other users of the platform may also reward you as well. Tipping is a front-and-center aspect of Giga.

A safer place
Reporting is also prominent, and banning of identities is multi-leveled. Though it will take a lot to get banned from IDNET (yes, there’s an action for that, primarily for objectively illegal content posters), it might take less to get banned from a topic, content, or profile by its hosts. If an identity decides to ban you from their profile, you will not be able to post there anymore. The same goes for their content, and any topics they manage.

Reputation plays a part here as well (not 100% integrated yet). Based on your global reputation you will either get boosts or impairments. For instance if your reputation drops too low, you might not be able to chat on the platform or post comments. If you have higher reputation, your content might be higher in the feed, and your comments too. More on this to come.

Topics
Think of topics like Twitter hashtags, but with a bit more functionality. The mechanics surrounding managers of topics is still under works, but will likely have to do with interaction strength within that topic, meaning the more people like your content in a topic the more power you have to influence the topic’s direction.

Verifiable content
Every time you post content on Giga, the hash of the content and your signature is displayed under it. This allows everyone to see that you have without a doubt posted it yourself.

Desktop client
There is already a desktop client in final stages of development, which allows identity credentials to be stored safely on the user’s machine without having to log in every time you visit Giga (which is mildly annoying).

Mobile client
Using the same methodology as the desktop client, a mobile app is underway as well. There native wrappers are nothing more than webview which inject signing capabilities, so they are particularly easy to do.

So what can we do with this?

To start, get a hang of it all. Explore Giga, explore IDNET (once the code is released) and all the pieces that make them up. The platform and protocol is infinitely dynamic with the way that it was created, and adding new functionality to Giga without changing IDNET is incredibly easy. Suggestions are welcome. This is your platform.

The Relay software is not yet publicly available as I would like to run it consistently for a little while before releasing it to catch any lingering long-running related bugs. Once it is released, throwing up a relay will be a good way to get a hang of it before the mainnet launches.

Q & A

Why is scatter not yet integrated?

Right now this is impossible, as the signing method used in IDNET and Giga is restricted by Scatter by default. I will be changing that restriction in Scatter in the near future, however IDNET itself can be used to interact with other smart contracts in an OAuth fashion; but there are some pieces missing for that inevitable end-goal.

How will IDNET be integrated into Scatter?

The only parts of IDNET which make sense within Scatter is the reputation and identity parts. The social networking/broadcasting aspect of the protocol isn’t generally required, so that’s where we’ll start. Having apps and accounts be reputationally bound means a safer environment. Having that data being produced on multiple platforms (Giga + Scatter + others) makes the entire protocol stronger and benefits each integrating platform.

What parts make up IDNET and Giga?

  • IDNET Smart contracts
  • IDNET Relay GUI and CLI
  • IDNET Relay NodeJS Library
  • IDNET Platform JavaScript wrapper
  • Giga Front-end
  • Giga API
  • Giga Desktop & Giga Mobile

What’s coming next?

Right now is a period of testing. There’s still some functionality which is required for a mainnet release, but isn’t holding up a testing release. Those missing pieces are the main focus along with finding and fixing bugs in the current solution.

When can we expect a mainnet release?

Afraid this can’t be defined yet as it relies on unknowns like bugs found and feature requirements discovered during beta testing. However, aside from the lack of real token tipping, both IDNET and Giga run identically on testnets as they would on mainnets.

Reserved identities coming?

Big yes.

--

--