a DID managing tool to communicate your public and private data with sovereignty
On STARKNET, every address is a smart contract, and creating these addresses requires an initial transaction. Though we can pre calculate new addresses there’s a catch:
STARKNET ADDRESSES ARE DIFFERENT FROM ETH ADDRESSES
To interact with both (*)Ethereum and (**)StarkNet, we need to generate separate key pairs for each network since they use different cryptographic systems.
So, to create an Ethereum public key to be used for communication (xmtp protocol) using a StarkNet private key: we use a DID, a decentralized identifier.
This DID utilizes a new method specific identifier called starkid, in the format: did:starkid:address
Now we can encrypt Ethereum's private key with the StarkNet public key (or viceversa)and store it using starkid.
This approach helps users from different ecosystems to manage their keys and other sensible data using a DID approach.
While preserving their preferred method to store their seed or private key.
The DID identifier is created, owned, and controlled by the subject of the identifier. The idea behind DIDs is to enable decentralized, self-sovereign identity, where individuals have greater control over their personal information and how it is shared, reducing the reliance on centralized authorities or intermediaries.
To use it just scan the qr of your peer or share yours and start communicating!
To create this I used OpenZeppelin smart contracts, starknet.js, scarb, starknet-foundry, ethers, argent, xmtp protocol and polybase. I created a simple registry smart contract to manage the DID on chain. I also created a polybase db to manage the DID of addresses that have not yet been deployed but pre-calculated.
This opens new possibilities at the time of funding new accounts as the embedded chat allows new peer to peer possibilities.