Resetter Registration

In the case that a client loses all of her private keys, the client has an option to reset her DID, i.e. revoking all of her key series in that DID, with the approval of her resetters.

To invoke the reset operation, a list of resetters must be first registered with did_register_resetters operation. All resetters must also approve the registration themselves before the reset operation becomes available. In the resetter registration request, the client must specify (i) each resetter's DID address ("did_address") and (ii) each resetter's vote power ("vote_power") and (iii) the acceptable number of combined voting powers ("acceptable_votes") for approving the reset operation.

Note that the client cannot submit a request to reset her DID herself. To reset all key series in a DID, the client must contact each of her resetters individually and ask them to submit a reset request. For the reset operation to be complete, the combined voting powers from all resetters must surpass the threshold.

For a set resetters to become active, all resetters in the set must respond and approve the registration.

did_register_resetters

POST https://test-network.finema.co/did/<did_address>/reset

Request Body

NameTypeDescription

operation

string

The method's name that is "did_register_resetters".

did_address

string

The DID address.

current_key

string

The current public key in the series. It is used to verify the request's signature.

next_key_hash

string

The SHA-256 hash of the next public key in the series.

resetters

string

The list of the resetters. Each element in the list contains a resetter's DID address and voting power.

acceptable_votes

string

The voting power threshold in a resetter consensus.

nonce

number

The request nonce.

{
    "operation": "did_register_resetters",
    "did_address": "did:idin:afb7ba88c76edbda55c344b70ae0cf0556d770ec256820d7185000de395391b5",
}

Example Message and Request

{
    "operation": "did_register_resetters",
   "did_address": "did:idin:afb7ba88c76edbda55c344b70ae0cf0556d770ec256820d7185000de395391b5",
    "current_key": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbqWnPp+v+a3QfT1rpJUfMxma0oFY\nc/7m07qWVr7Uf158jIon0teT+SHt9ChncFDVbUp5fYo+EDRjiEnygkpxJQ==\n-----END PUBLIC KEY-----",
    "next_key_hash": "665267b5854fd3a81b97850c696eb745448f57e53c93e05edb2e8b85e377dde5",
    "resetters": [
        {
            "did_address": "did:idin:14cd5183f730afe756a5e43f794c66ea72bd0e90095dfa84a46631371f3c3a88",
            "vote_power": 1
        },
        {
            "did_address": "did:idin:048ca23c7edfb71655cb6dc5628c8327816edfcb377963deecba3a3e91e5f8b0",
            "vote_power": 2
        },
        {
            "did_address": "did:idin:37c92d742a1fac53588a4d7918d12275540c0cacd19b56036f6720dcf7da0b2c",
            "vote_power": 3
        }
    ],
    "acceptable_votes": 3,
    "nonce": 3
}

The above message can then be encoded in Base64 and signed with ECDSA to obtain the following HTTP request

{
    "message": "eyJyZXNldHRlcnMiOiBbeyJkaWRfYWRkcmVzcyI6ICJkaWQ6aWRpbjoxNGNkNTE4M2Y3MzBhZmU3NTZhNWU0M2Y3OTRjNjZlYTcyYmQwZTkwMDk1ZGZhODRhNDY2MzEzNzFmM2MzYTg4IiwgInZvdGVfcG93ZXIiOiAxfSwgeyJkaWRfYWRkcmVzcyI6ICJkaWQ6aWRpbjowNDhjYTIzYzdlZGZiNzE2NTVjYjZkYzU2MjhjODMyNzgxNmVkZmNiMzc3OTYzZGVlY2JhM2EzZTkxZTVmOGIwIiwgInZvdGVfcG93ZXIiOiAyfSwgeyJkaWRfYWRkcmVzcyI6ICJkaWQ6aWRpbjozN2M5MmQ3NDJhMWZhYzUzNTg4YTRkNzkxOGQxMjI3NTU0MGMwY2FjZDE5YjU2MDM2ZjY3MjBkY2Y3ZGEwYjJjIiwgInZvdGVfcG93ZXIiOiAzfV0sICJhY2NlcHRhYmxlX3ZvdGVzIjogMywgImN1cnJlbnRfa2V5IjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVicVduUHArdithM1FmVDFycEpVZk14bWEwb0ZZXG5jLzdtMDdxV1ZyN1VmMTU4aklvbjB0ZVQrU0h0OUNobmNGRFZiVXA1ZllvK0VEUmppRW55Z2tweEpRPT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLSIsICJuZXh0X2tleV9oYXNoIjogIjY2NTI2N2I1ODU0ZmQzYTgxYjk3ODUwYzY5NmViNzQ1NDQ4ZjU3ZTUzYzkzZTA1ZWRiMmU4Yjg1ZTM3N2RkZTUiLCAib3BlcmF0aW9uIjogImRpZF9yZWdpc3Rlcl9yZXNldHRlcnMiLCAiZGlkX2FkZHJlc3MiOiAiZGlkOmlkaW46YWZiN2JhODhjNzZlZGJkYTU1YzM0NGI3MGFlMGNmMDU1NmQ3NzBlYzI1NjgyMGQ3MTg1MDAwZGUzOTUzOTFiNSIsICJub25jZSI6IDN9",
    "signature": "MEYCIQDcF+eiEcPdvJgI3Ab2c+Cy9f2VhG2fYP6aIfMnZCn/LwIhAK1OdOKTqiKAUA4rZhdRPOYrE6ew5Cp220p4+vjgxq8C"
}

Last updated