FIO Attestations

Overview

FIO Attestations is a FIO Improvement Proposal (FIP) candidate, which would enable 3rd parties to attest to truths about data associated with a FIO Handle, such as public address ownership. The following document is intended to be a starting point for industry discussions.

Benefits

Fully decentralized and open source

FIO Protocol is fully decentralized and open-source protocol designed specifically for crypto metadata exchange. It has already been integrated into many leading wallets and exchanges and is often selected as a default decentralized identity solution (e.g. Trust Wallet, EDGE Wallet).

Universal

FIO Attestations can be used for many types of attestations by many entities or users themselves and be accessed my multiple entities, so that the user does not have to continuously provide the same data to every requesting entity. Entities can freely choose which attesters they trust and only rely on their attestations.

Privacy-preserving and secure

FIO Handles are pseudonymous and PII is not stored on-chain. Attestation may be hashed, encrypted or refer to off-chain data accessible only based on bilateral agreements.

Attesters and attestations

Examples of attesters include, but are not limited to:

  • FIO Handle owner (self attestation)

    • Any statement may be self attested, and may optionally include cryptographic proof.

  • Virtual Asset Service Provider (VASP)

    • VASP may record a hash of public address indicating they have verified the ownership of that public address via signature or micro-transaction.

    • VASP may record a hash identifier indicating they hold data accessible to authorized parties, e.g. via Global Travel Rule integration.

  • Wallets

    • Non-custodial can enable users to make public address ownership attestations, since they already secure user’s private keys.

  • Know-your-customer (KYC provider)

    • KYC provider may record zero-knowledge proof that can confirm that they have verified user’s First and Last name. That proof would only be able to verify data if the user provided a unique nonce to the verifying entity.

    • KYC provider may record hash identifier indicating they hold data accessible to authorized parties, e.g. KYC data.

Attestation can be any statement following a common standard, which would be published in a FIP akin to token/chain code standard in FIP-15. This will allow for easy expansion of types of attestations without having to modify the FIO Chain. The data may be hashed or encrypted.

Pilot use case: public address ownership verification

Financial Action Task Force (FATF) has established global standards which require many entities to verify user’s crypto public addresses before a transaction can be allowed. However there is no common or open standard to enable such verification and entities do not share the verification data, requiring user to continuously re-verify the ownership of for the same public address.

Example flows

Public address ownership attestation

In this example a Virtual Asset Service Provider (VASP) is required to verify that a user is in control of a public address which will be used as withdrawal address, before withdrawal is completed. They will act as an Attester.

  • VASP validates FIO Handle ownership, using Private key signature, FIO Request, or FIO Token Send

  • VASP attaches the validated FIO Handle to the user profile for future use

  • VASP validates a withdrawal public address using private key signature or token send

  • VASP records attestation on FIO Chain

  • Any party which trusts this Attester can now confirm that the public address is owned by the FIO Handle owner without having to ask for verification.

Proposed actions and getters

Attestation types standard

type

Description

data

type

Description

data

pub_address_ownership

Public address ownership was verified with a signature or token send.

JSON including:

  • verification_hash - the hash contains the public address and a nonce.

attest

Records attestation on FIO Chain.

Request

{ "attestee_fio_address": "bob@crypto", "attester_fio_address": "vasp@crypto", "type": "pub_address_ownership", "data": { "pub_address_hash": "492b5a30f6a353ce49d479ef1032cefe0797d13b2737e80023b47fceee9577e2" }, "max_fee": 1000000000, "actor": "aftyershcu22" }

get_attestations

Fetches specific attestation from FIO Chain.

Request

{ "attestee_fio_address": "bob@crypto", "attester_fio_addresses": [ "vasp@crypto", "attester@crypto" ], "type": [ "pub_address_ownership" ], "data": { "pub_address_hash": "492b5a30f6a353ce49d479ef1032cefe0797d13b2737e80023b47fceee9577e2" }, "limit": 1000, "offset": 0 }

Response

{ "attestations": [ { "type": "pub_address_ownership", "data": { "pub_address_hash": "492b5a30f6a353ce49d479ef1032cefe0797d13b2737e80023b47fceee9577e2" }, "attester_fio_address": "vasp@crypto", "time_stamp": "2020-09-11T18:30:56" } ], "more": 0 }

Other Related Topics