Monorepository of contracts for the I am Human: proof of humanity protocol.
List of contracts:
registry
: implements the SBT Registry, documented in the NEP-393. See Registry README for a detailed documentation about the I Am Human registry, examples and information about extra queries and methods.
Helper crates:
sbt
: set of traits, events and common functions for NEP-393 SBT Standard.cost
: Common functions and constants to calculate gas and storage deposit for IAH registry calls.human_checker
: Helper contract for integration tests. Notably, used foris_human_call
.
Issuers:
demo-issuer
: basic SBT Issuer: contains a list of admins who are authorized to issue SBTs.community-sbt
: Permissioned Community Issuer of SBT tokens.community-open
: Permissionless Community Issuer of SBT tokens.oracle
: SBT Issuer which relays on an off-chain authority signing claims for issuing SBTs.
work in progress:
soulbound-class
: An algebraic class of tokens to efficiently query if a user have required subset of tokens.ubi
: demo use case implementing universal basic income.
For details about creating and querying SBTs, and flow diagrams, see the NEP-393.
Actors:
- user: someone who wants to hold SBT
- issuer: a contract or an account which can issue SBTs and is whitelisted in a registry. Issuer is usually an entity which makes validation to mint a specific class of SBTs.
- registry: a contract which keeps balance of SBTs.
Whenever a new issuer is created, it needs a registry to mint tokens. Today, IAH registry is permissioned: the IAH Registry admin has to add a new issuer willing to mint tokens within IAH registry. In the future this may change and the process can be permission-less (any issuer will be able to mint tokens in the IAH registry).
Issuer calls registry.sbt_mint
to mint new tokens. Each token must have specified class in it's metadata. See NEP-393 to learn more about SBT classes. The mint call panics, if a recipient already holds a token with a same class of a given issuer.
Anyone can query registry to check token supply or query tokens by issuer or by owner.
Production:
- SBT registry:
registry.i-am-human.near
@ registry/v1.8.0 - Fractal:
fractal.i-am-human.near
@ oracle/v1.2.0- verification pubkey base64:
"zqMwV9fTRoBOLXwt1mHxBAF3d0Rh9E9xwSAXR3/KL5E="
- verification pubkey base64:
- Community SBTs:
community.i-am-human.near
@ community-sbt/v5.0.0 Max and default TTL = 1year. classes: 1=OG, 2=NDC_Contributor, 3=NDC_Core_Contributors, 4=NDC_Champion, 5=NDC_Mod, 6=NDC_TechWG, 7=Creatives_DAO - Regens SBTs:
issuer.regens.near
@ community-sbt/v5.0.0 Max and default TTL = 1year. classes: ProofOfRegen=1 - Proof of Vibes:
issuer.proofofvibes.near
@ community-sbt/v5.0.0 Max and default TTL = 1year. classes: Vibes=1
Mainnet Testing:
registry-v1.gwg-testing.near
@ registry/v1.8.0 IAH issuer:(fractal.i-am-human.near, [1])
Deprecated:
- GoodDollar-SBT:
gooddollar-v1.i-am-human.near
. verification pubkey base64:"zqMwV9fTRoBOLXwt1mHxBAF3d0Rh9E9xwSAXR3/KL5E="
- SBT registry:
Testnet registry is used to test the issuer behavior. For testing other integrations (eg polling, elections) use the testing-unstable version. Consult issuer contracts to validate which issuer is linked to which registry. We may consider adding migration to
registry-1
to make it compatible with the latest version.registry-v2.i-am-human.testnet
@ registry/v1.8.0 (same as the prod version)registry-unstable-v2.i-am-human.testnet
@ registry/v1.8.0
- Demo SBT:
sbt1.i-am-human.testnet
(thedemo_issuer
contract) - Fractal:
fractal-v2.i-am-human.testnet
@ oracle/v1.2.0 registry:registry-1.i-am-human.testnet
; Verification pubkey base64:FGoAI6DXghOSK2ZaKVT/5lSP4X4JkoQQphv1FD4YRto=
,claim_ttl
: 3600ms, FV class: 1 - Community-SBT:
community-v2.i-am-human.testnet
@ community-sbt/v5.0.0 registry:registry-v2.i-am-human.testnet
classes: 1=OG, 2=NDC_Contributor, 3=NDC_Core_Contributors, 4=NDC_Champion, 5=NDC_Mod, 6=NDC_TechWG, 7=Creatives_DAO Max and default TTL = 1year. - Open Community SBTs:
CTR open-v1.i-am-human.testnet
@ community-open/v1.0.0
Deprecated:
- SBT Registry:
registry.i-am-human.testnet
registry-1.i-am-human.testnet
@ release/v0.2registry-unstable.i-am-human.testnet
@ registry/v1.6.0
- Fractal:
i-am-human-staging.testnet
@ oracle/v1.0.1 registry:registry-1.i-am-human.testnet
; Verification pubkey base64:FGoAI6DXghOSK2ZaKVT/5lSP4X4JkoQQphv1FD4YRto=
,claim_ttl
: 3600ms, FV class: 1 - Community-SBT:
community-v1.i-am-human.testnet
@ community-sbt/v4.3.0 registry:registry-1.i-am-human.testnet
classes: 1=OG, 2=NDC_Contributor, 3=NDC_Core_Contributors, 4=NDC_Champion, 5=NDC_Mod, 6=NDC_TechWG, 7=Creatives_DAO - GoodDollar SBT:
gooddollar-v1.i-am-human.testnet