Status: Draft (Version 0.2)
Vouch Data Protocol provides guidance on how sybil resistence can be implemented on the permaweb.
To provide a decentralized approach to Sybil resistance.
What is Sybil resistence?
Sybil resistance refers to the ability of a network, system, or protocol to withstand or mitigate the effects of Sybil attacks. In a Sybil attack, an attacker subverts the network by creating a large number of pseudonymous identities to gain a disproportionately large influence. This type of attack is named after the book "Sybil," which discusses a case of multiple personality disorder, reflecting the creation of many fake identities by the attacker.
The Vouch Protocol allows any arweave wallet or ao process to Vouch-For
another wallet address. The Vouch-DAO
members can stake and vote their tokens in the confidence of the Voucher
Wallet Address. The Voucher
is a service that uses an identity method to vouch the wallet address.
An example of a Voucher is a twitter service that vouches address when a wallet is associated with a twitter account.
In this protocol there are sets of Tags that drive functional triggers to the VouchDAO (ao) Process.
These sets of Tags are used by the Voucher to Vouch a Wallet Address.
Tag Name | Optional? | Tag Value |
---|---|---|
Vouch-For | False | {Wallet Address} |
Data-Protocol | False | Vouch |
Variant | False | 0.2 |
Method | False | (eg. Twiter|In-Person|Recaptcha|Discord|KYC) |
Identifier | True | (eg. Username|Name|Email|…) |
Confidence-Value | True | ({Amount}-{Currency}) eg. 100-USD |
Expiration | True | Unix Timestamp |
Country | True | Country Code |
This is an arweave data-item, that can be submitted to the VouchDAO Process using the Target
property or via Assign
feature.
A permaweb application or ao process can send a Get-Vouches
messsage to VouchDAO with a Wallet Address and in return recieve a message containing a JSON data-set.
Tag Name | Optional? | Tag Value |
---|---|---|
Action | False | Get-Vouches |
ID | False | {Vouch Address or Sub Account ID} |
Response
Specification
Lists all the Vouchers for the DAO, this ao Message Type provides a JSON list of Voucher Services that can be used by staking parties to set the confidence.
Tag Name | Optional? | Tag Value |
---|---|---|
Action | False | List-Vouchers |
Response
Specification
Staked members of VouchDAO are allowed to Set-Confidence
score between 0..1 for any Voucher
wallet address. This Confidence score will help give the applications a clear signal to the strength of the Voucher.
Tag Name | Optional? | Tag Value |
---|---|---|
Action | False | Set-Confidence |
ID | False | Voucher Wallet Address |
Confidence | False | 0..1 |
NOTE: This is an
ao
Message that is assigned to the VouchDAO Process
As a VouchDAO Token holder you can Stake
your tokens to be able to set confidence for Vouch-For
services.
Tag Name | Optional? | Tag Value |
---|---|---|
Action | False | Stake |
Quantity | False | {Tokens} |
UnstakeDelay | False | {Height} |
As a VouchDAO Token holder you can Unstake
your tokens.
Tag Name | Optional? | Tag Value |
---|---|---|
Action | False | Unstake |
Quantity | False | {Tokens} |
A Vouched Wallet Address MUST be able to add a Sub-ID using the Add-ID
ao Message.
Tag Name | Optional? | Tag Value |
---|---|---|
Action | False | Add-ID |
Sub-ID | False | {Process ID} |
The core business logic is to calculate the Estimated-Value
for a given Voucher
.
For this implementation, we will use AOS-SQLite.
Table Schema
Column | Type | Description |
---|---|---|
ID | INT PRIMARY KEY | Primary Key |
Voucher | TEXT | The wallet address of the voucher |
Staker | TEXT | The wallet address of the staker |
ConfidenceScore | INTEGER | 0 - 100 score for confidence |
Column | Type | Description |
---|---|---|
ID | INT PRIMARY KEY | Primary Key |
VouchFor | TEXT NOT NULL | Address being vouched |
Voucher | TEXT NOT NULL | Voucher Address |
Method | TEXT NOT NULL | Method for vouch |
Identifier | TEXT | Optional Identifier |
Country | TEXT | Optional Country |
Updated | INTEGER | Unix Timestamp of last update |
ConfidenceValue | TEXT | {Number}-{Currency} |
UNIQUE(Vouch-For, Voucher)
Column | Type | Description |
---|---|---|
ID. | INT PRIMARY KEY | Primary Key |
SublID | TEXT | Address of sub account |
VouchAddress | TEXT | Address of parent |
Updated | INTEGER | Unix Timestamp of last update |