🚨 Shai-Hulud Strikes Again:834 Packages Compromised.Technical Analysis →
Socket
Book a DemoInstallSign in
Socket

safe-did-resolver

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

safe-did-resolver

DID Resolver for the Safe method

latest
Source
npmnpm
Version
2.0.0
Version published
Weekly downloads
568
-13.28%
Maintainers
1
Weekly downloads
 
Created
Source

Gnosis Safe DID Resolver

Safe is a DID method that uses the Ceramic network to resolve DID documents for Gnosis Safe See CIP-101

Getting started

This implementation is still a prototype. Contributions are welcome!

Installation

$ npm install safe-did-resolver

Usage

import SafeResolver from 'safe-did-resolver'
import { Resolver } from 'did-resolver'
import Ceramic from '@ceramicnetwork/http-client'

const ceramic = new Ceramic() // connects to localhost:7007 by default

const config: NftResolverConfig = {
  ceramic,
  chains: {
    // Ethereum Mainnet
    'eip155:1': {
      blocks: 'https://api.thegraph.com/subgraphs/name/blocklytics/ethereum-blocks',
      skew: 15000,
      gnosisSafe: 'https://api.thegraph.com/subgraphs/name/gjeanmart/gnosis-safe-mainnet',
    },
    // Ethereum Ropsten
    'eip155:3': {
      blocks: 'https://api.thegraph.com/subgraphs/name/yyong1010/ethereumblocks',
      skew: 15000,
      gnosisSafe: 'https://api.thegraph.com/subgraphs/name/gjeanmart/gnosis-safe-ropsten',
    },
    // Ethereum Rinkeby
    'eip155:4': {
      blocks: 'https://api.thegraph.com/subgraphs/name/billjhlee/rinkeby-blocks',
      skew: 15000,
      gnosisSafe: 'https://api.thegraph.com/subgraphs/name/radicle-dev/gnosis-safe-rinkeby',
    },
  },
}

// getResolver will return an object with a key/value pair of { 'safe': resolver }
// where resolver is a function used by the generic did resolver.
const safeResolver = SafeResolver.getResolver(config)
const didResolver = Resolver(safeResolver)

const safeResult = await didSafeResolver.resolve(
  'did:safe:eip155:1:0x00044c87ddc54536ee05047c6f4f6f831aba988b'
)
console.log(safeResult)

The resolver supports the following networks by default:

  • Ethereum mainnet (eip155:1),
  • Ethereum Rinkeby (eip155:4),

Testing

$ npm test

DID Specs

The token DIDs are prefixed with did:safe:, followed by method specific identifier, which is simply a CAIP-10 Account ID.

DID: did:safe:{chainId}:{safeAddress}

CAIP-10: {chainId}:{safeAddress}

Conversions

DID->CAIP

const caip = did.substr(8).replace(/_/g, '/')

CAIP->DID

const did = `did:safe:${caip.replace(/\//g, '_')

There are helpers that help you with the conversion:

import { caipToDid, didToCaip, createSafeDidUrl } from 'safe-did-resolver'
import { AccountId } from 'caip'

// CAIP -> DID URL
const didUrl = createSafeDidUrl({
  chainId: 'eip155:1',
  address: '0x1234567891234567891234567891234596351156',
})
// If you use `caip` library in your app, consider using sister `caipToDid` function to
// convert `AccountId` to Safe DID URL.

// DID URL -> CAIP
const accountId = didToCaip(didUrl) // eip155:1/erc721:0x1234567891234567891234567891234596351156/1

License

Apache-2.0 OR MIT

Keywords

Ceramic

FAQs

Package last updated on 24 Feb 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts