GithubHelp home page GithubHelp logo

Comments (3)

llorllale avatar llorllale commented on August 19, 2024

@rolsonquadras agreed

These are the key things an Agent needs to do:

  1. Store pairwise mappings of DIDs (ours and theirs)
  2. Look up a pairwise mapping of DIDs from just the sender's public key (when receiving a message)
  3. Look up pairwise mappings in order to then send a message to the other party.

Rough draft:

package did

// Connection is a pairwise relation between two DIDs (ours and theirs)
type Connection struct {
   Mine *did.Doc
   Theirs *did.Doc
   Label string // human readable string set by the user, such as "Bob"
}

// Store is the storage interface for DIDs
type Store interface {
    Iter() *Iterator  // <--- iterator of Connections
    Put(c *Connection) error
    LookupByTheirPublicKey(k crypto.PublicKey) (c *Connection, found bool)
}

from aries-framework-go.

rolsonquadras avatar rolsonquadras commented on August 19, 2024

@llorllale Based on our offline discussion, i have updated interface design.

docstore to store only peer did docs

package docstore

type Store interface {
	// Put stores the DID Doc
	Put(*did.Doc) error

	// GetAll fetches the DID Doc based on DID
	Get(string) (*did.Doc, error)
}

connstore to store the mapping between my DID and their DID along with their public key

package connstore

// Connection is a pairwise relation between two DIDs (ours and theirs)
type Connection struct {
	MineDID        string
	TheirDID       string
	TheirPublicKey []byte
	Label          string
}

type Store interface {
	Iter() *ConnIterator // <--- iterator of Connections
	Put(c *Connection) error
	LookupByTheirPublicKey(pubKey *[]byte) (*Connection, bool)
}

Primary consideration to separate the doc store from connection store is to have a clear scope for each items rather than mixing both, which might result in maintainability issues later on. Also, peer did resolution will be simpler with a separate DID Doc store as we can just pass the DID to the method.

Please Let me know your thoughts. @troyronda FYI.

from aries-framework-go.

llorllale avatar llorllale commented on August 19, 2024

@rolsonquadras sounds good

from aries-framework-go.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.