# Gateway network

# Overview

The AR.IO Network consists of AR.IO Gateway nodes, which are identified by their registered Arweave wallet addresses and either their IP addresses or hostnames, as stored in the network's smart contract Gateway Address Registry (GAR).

These nodes adhere to the AR.IO Network Protocols, creating a collaborative environment of Gateway nodes that vary in scale and specialization. The network ensures a fundamental level of service quality and trust minimization among its participants.

Being part of the network grants AR.IO Gateways an array of advantages, such as:

  • Simplified advertising of services and end user discovery via the Gateway Address Registry.

  • More rapid bootstrapping of key Gateway operational data due to prioritized data request fulfillment among Gateways joined to the network.

  • Sharing of data processing results.

  • Access to support channels tailored for operators.

  • Enhanced trust and transparency through the use of AGPL-3 licenses, which mandate public disclosure of any software changes, thereby reinforcing the network's integrity and reliability.

  • Improved network reliability and performance through an incentive protocol, which uses a system of rewards and evaluations to encourage high-quality service from Gateways.

# Gateway Address Registry (GAR)

Any Gateway operator that whishes to join the AR.IO Network must register their node in the AR.IO SmartWeave Contract's "Gateway Address Registry", known as the GAR. Registration involves staking a minimum amount of IO tokens and providing additional metadata describing the Gateway service offered.

After joining the network, the operator's Gateway can be easily discovered by permaweb apps, its health can be observed, and it can participate in the AR.IO data sharing protocol.

The Gateway operator can modify their Gateway's GAR configuration as needed, which includes adding more tokens to their stake or removing them. Operators can completely remove their stake and leave the AR.IO Network following a minimum network exit wait time. This exit time ensures that Gateways cannot quickly escape from an anticipated penalty.

The GAR advertises the specific attributes of each Gateway including its stake and settings. This enables permaweb apps and users to discover which Gateways are currently available and meet their needs. Apps that read the GAR can sort and filter it using the Gateway metadata, for example, ranking Gateways with the highest stake at the top of the list. This would allow users to prefer the lower-trust, higher staked Gateways before settling on a higher-trust, lower staked Gateway.

# Staking

Staking tokens serves a dual purpose in the AR.IO Network:

  • It acts as a method of public commitment, and

  • It qualifies participants for reward distribution.

In the AR.IO Network, "staking" designates the act of locking a specified amount of IO tokens into a protocol-controlled vault. These tokens act as a form of collateral and public commitment, encouraging network participants to act in the network's best interests. Once tokens are deposited in the vault, they remain locked until either the participant triggers the "unstake" function or the vault's predetermined lock period expires.

It is important to note that unlike other protocols, the IO token is non-inflationary. Therefore, the staking mechanism in the AR.IO Network is not designed to function as a yield-generation tool. By staking their tokens, participants become eligible for potential rewards, fostering an atmosphere of mutual trust within the network. Specifically, Gateway operators stake tokens to facilitate their Gateway integration and establish public trust. Once connected, they become eligible for rewards driven by the protocol and gain access to the network's shared resources.

# Schema

# Gateway Schema

Gateway
Name Type Description
operatorStake number The total stake of the Gateway's operator.
start number Block number in which the Gateway joined the network.
end number Block number in which the Gateway can leave the network, setting to 0 means no end date.
status string Participation status of the Gateway, "joined" - participating in the network, "hidden" - not leaving, but not participating, "leaving" - in the process of withdrawing from the network.
vaults array of objects The locked tokens staked by the Gateway operator, view schema.
settings object Additional configuration settings for the Gateway, view schema.
delegates object Wallets that have delegated a stake of IO tokens to the Gateway.
totalDelegatedStake number The total number of IO tokens delegated to the Gateway
observerWallet string The public address for the wallet being used to sign and upload Observer reports
stats object Information about the Gateways Network performance

# Token Vault

Token Vault
Name Type Description
balance number Positive integer, the number of IO tokens locked.
start number Block number in which locking starts.
end number Block number in which locking ends. Setting to 0 means no end date.

# Gateway Settings

Gateway Settings
Name Type Required Description
label string yes The friendly name used to label the Gateway.
fqdn string yes The fully qualified domain name at which the Gateway can be reached. e.g. arweave.net
port number yes The port used by the Gateway. e.g. 443
protocol string yes Web protocol used by this Gateway "https", or "http"
properties string no An Arweave transaction ID containing additional properties of the Gateway.
note string no An Arweave transaction ID containing additional notes the Gateway operator can set to include things like announcements, maintenance, or other operational updates.
allowDelegatedStaking boolean no The Gateway Operator can allow or disallow other wallets to stake IO tokens on the Gateway.
delegatedRewardShareRatio number no The percentage of Gateway rewards given to delegated stakers
autoStake boolean no If true, Gateway rewards will automatically be added to the Gateway's Operator stake