Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Example of diamonds for DID resolution #22

Open
wants to merge 9 commits into
base: main
Choose a base branch
from

Conversation

Hmac512
Copy link

@Hmac512 Hmac512 commented Jan 25, 2023

This is a simple stupid example of how to set up replaceable resolvers with the Diamond pattern.

Screenshot 2023-01-25 at 6 48 00 PM

The tests were written really fucking quickly, and the code for the tests isn't pretty. Might be a good exercise for someone to go through and write full coverage tests.

There is nothing to do with DIDs in this implementation, it’s more like a NFT contract. All in due time.

@Hmac512
Copy link
Author

Hmac512 commented Jan 26, 2023

#8

@Hmac512
Copy link
Author

Hmac512 commented Jan 26, 2023

The idea I am getting at is we can actually give each resolver direct access to the document storage to create/update DID Documents.

The following code is where the magic happens:

https://github.com/Hmac512/did-eth/blob/42cfdfa1d8101349e590deb7b7d46fd451b1695c/diamonds/contracts/implementations/documents/didETH.sol#L39

https://github.com/Hmac512/did-eth/blob/42cfdfa1d8101349e590deb7b7d46fd451b1695c/diamonds/contracts/libraries/DocumentStorage.sol#L27

In this code the resolver itself is handling the idProxyAddress, which determines the pointer for the document map.

We can utilize the pattern here instead:

https://github.com/aavegotchi/aavegotchi-contracts/blob/a9fbff896f7c0cb701f422fe0fb891d553262652/contracts/shared/libraries/LibMeta.sol#L26

So the entry point to each resolver is through a function in DID.sol. There the address for the pointer is determined based on the intended resolver.

Then our document storage can do something like this to get the pointer, and send it to the resolver.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant