


The Galactica Network Reputation Framework binds other network components, namely Reputation Root Contract and zkCertificates to create a protocol capable of expressive DeSoc primitives.
It leverages Persistent Identities, which are protocol representations of humans, to quantify a multitude of users' interactions with other users, dApps and the entirety of the ecosystem - the web3 footprint - and create a virtual correspondence to the real-world concept of reputation. dApps and other users can then use these data as inputs into their own business logic. Reputation is an immensely important social primitive - meritocratic governance, undercollateralized lending, attestations and social networks are only the tip of the iceberg of use cases it enables.
This article describes the Cosmos subnet-powered implementation and also includes a brief overview of other designs that were considered but not chosen. For an elaborate investigation into the properties of these other designs an inquiring reader is kindly directed to a standalone whitepaper with the same title available in the research section on our website.
Note that this is an exploratory implementation and our best shot so far, not necessarily an optimal, nor is it an exclusive solution and can be augmented with alternatives described here or those we have not considered.
We warmly welcome any feedback and critique.
This document specifies an approach to measuring a user's web3 footprint in the Galactica Network (henceforth, Galactica). It is a central component of the reputation framework as it provides specific data concerning user behavior on Galactica. EVM blockchains have no direct way to access historical transaction data from on-chain smart contracts. This makes it a difficult task to calculate the reputation based on the user's previous behavior.
A successful solution is expressive, efficient, and accurate:
This article first outlines the reputation function as well as the RRC, then the approaches considered are outlined and finally the current (Sub-chains) solution is presented.
Reputation functions are defined by dApps and users. They can either create a custom function based on the available on-chain data or reuse such functions provided by other parties. Available inputs for reputation functions are a ZKP by the user being rated and on-chain data. The ZKP is sent to the reputation smart contract, verified for ZK validity and consistency of the Merkle roots with chain data.
The Root reputation contract (RRC) is a special smart contract on the Galactica blockchain. It works as a registry for reputation requirements of contingent transactions. Every address can register a minimum score and reputation function in the form of an address to the smart contract defining the reputation function. Whenever someone wants to send funds to an address, the protocol looks up the reputation requirements in the RRC to determine if the transaction is contingent. For more information please consider the Reputation Root Contract (RRC) section in the Galactica Network Whitepaper.
There are various ways to measure a user's web3 footprint and determine their reputation. Ideally, it takes the whole transaction history into account and offers expressive reputation functions while still being efficient enough to be verified by a distributed blockchain. This is a complex task with contradictory goals (expressiveness vs efficiency).
An exhaustive list can be found in Table 1 - we had to forego part of them right at the outset, as they do not possess the target properties.


While it appears challenging to implement, as it requires node development and also every validator will have to store more than just blocks, this approach is decentralized, trustless, and easy to use for everyone. As it will become clear from the information provided further in this document, this approach furthermore addresses all of the limitations described in the previous solutions considered.
Subchain is an independent network that is connected to the mainnet. The connection usually includes a bridge and technology that allows the exchange of information between the subchain and the mainnet. In this case, the IBC protocol will be utilized, allowing synchronization between the states of EVM-compatible networks. Subchains are often used to reduce the load on a mainnet by delegating specific features to them. They receive inputs from the main network, carry out computations and send the results back.
It was concluded that it is beneficial to use subchains for reputation metrics calculations. The subchain reads data from the mainnet blocks through RPC, validates block hashes, calculates reputation, then submits the calculation results back to the mainnet. The first subchain will be launched by Galactica and used to calculate the reputation metric that the governance framework will utilize to determine users' voting power.

Figure 2: Galactica Mainnet and the Galactica Zones/Subchains
The Reputation module is a typical Cosmos SDK modul and is embedded at the core of Galactica Network. The on-chain reputation calculation method utilized here allows the use of the logic present in a smart contract based on the Reputation value. This logic can be used to reach a consensus among Validators based on block production results, in addition to amending Reputation values.
Each Validator calculates Reputation values independently and only validates Merkle root hashes from the data they used for calculations.
The module operates in two synchronization modes:
During historical data indexing, a Validator performs the following actions:
a. Decodes transactions and their events;
b. Carries out the formation of source data;
c. Carries out data aggregation by event type or another group;
d. Calculates Reputation based on aggregations calculated in the past;
e. Saves the result of the Reputation calculation in a smart contract.
Validators store source and aggregated data off-chain; however, they keep the Merkle root hashes of that data on-chain. To add new functions which build the source data and data aggregations, special EVM smart contracts (repositories) are provided. It makes it possible to add functions that expand the functionality of the Reputation module.
Utilizing multiple intermediate steps in the indexing pipeline makes storing data off-chain possible, allowing for lower on-chain storage. The smart contract that considers the reputation value is public - anyone can observe what the reputation consists of.
Live blocks processing utilizes the same algorithm as historical processing to calculate reputation metrics in every new block. It implements EVM hooks PostTxProcessing to subscribe for incoming transactions.
When the live processing module receives a transaction, a check is carried out to verify its compliance with the established reputational requirements. This includes two mechanisms:
a. Method id;
b. Reputation metric id;
c. Condition;
If the executor does not meet the listed reputation requirement(s) - the transaction will fail.
The implementation of a subchain (blockchain node) includes a special Indexer specifically for on-chain events. This Indexer can collect, store, and aggregate specific events described in a root on-chain contract.
For example, it can store and aggregate trades from multiple DEX protocols on the mainnet. The description for such logic would resemble the following:
Step 1:
Step 2:
The Reputation value, which is a result of an aggregation, will be re-calculated every block by all subchain Validators following given rules.
Using the Indexer, we can calculate metrics for every address, at every block. What remains is to actually calculate the Reputation. The formula (or formulas) for calculating it are located within the root smart contract, and Validators of a subchain will calculate Reputation based on values obtained from the Indexer, then push those values to the mainnet using IBC.
The role of subchains in this process is to avoid the overload of Indexers and only store on-chain what is required for critical calculations.
There is a delay between events that happen on the mainnet and those subsequently delivered to a subchain. This delay may be up to N blocks in duration (subject to further testing to estimate the exact delay), meaning that even in a subchain the Reputation is delayed, and thus, unsuitable for time-sensitive operations such as flash loans.
This delay may lead to a state where certain subchains may be utilized solely by specific protocol subcategories - e.g. a dedicated subchain for lending protocols. This specialization of subchains will allow them to track the interactions of a given user among themselves without delay.
For example, provide undercollateralized loans to those users who have a lot of positive activity on the mainnet (delayed info) and never failed to pay for a loan (instant data, located on a subchain). Such a hybrid Reputation metric may help lending protocols merge a user's overall score from the mainnet, with a trustless lending rating that lives on the said subchain.
This will be discussed in a separate article specifically dedicated to subchain economics.