[#48] frostfsid: Update contract #40

Merged
fyrchik merged 1 commit from dkirillov/frostfs-contract:poc/frostfsid into master 2024-09-04 19:51:17 +00:00

View file

@ -9,15 +9,17 @@ FrostFSID contract does not produce notifications to process.
# Contract storage scheme # Contract storage scheme
| Key | Value | Description | | Key | Value | Description |
|---------------------------------------------------------------------------------|--------------------------------|----------------------------------------------------| |------------------------------------------------------------------------------|--------------------------------|-----------------------------------------------|
| `o` + [ owner address ] | []byte{1} | contract owners that can invoke write methods | | `o` + [ owner address ] | []byte{1} | contract owners that can invoke write methods |

What kind of "owners" can be here besides the committee?

What kind of "owners" can be here besides the committee?

In case of TO this can be CM or IAM. But we have not decided yet should it be someone besides the committee @alexvanin

In case of TO this can be CM or IAM. But we have not decided yet should it be someone besides the committee @alexvanin

We want to have external validators. They can validate email, phone number or any other claim user may have. It isn't committee work to validate and approve such things.

These validators can create multi-signed transaction and multiaddress can be added as owner. These owners managed by committee \ consensus.

In trusted networks, validator key addresses can be added as owner, for example IAM service instances.

We want to have external validators. They can validate email, phone number or any other claim user may have. It isn't committee work to validate and approve such things. These validators can create multi-signed transaction and multiaddress can be added as owner. These owners managed by committee \ consensus. In trusted networks, validator key addresses can be added as owner, for example IAM service instances.
| `s` + [ subject address ] | Serialized Subject structure | subject into | | `s` + [ subject address ] | Serialized Subject structure | subject into |
| `a` + [ pk address ] + [ subject address ] | []byte{1} | link extra public keys for subject | | `a` + [ pk address ] + [ subject address ] | []byte{1} | link extra public keys for subject |
| `n` + [ RIPEMD160 of namespace ] | Serialized Namespace structure | namespace info | | `n` + [ RIPEMD160 of namespace ] | Serialized Namespace structure | namespace info |
fyrchik marked this conversation as resolved Outdated

Is there any reason we use RIPEMD instead of SHA256 which is also supported by the VM?

Is there any reason we use RIPEMD instead of SHA256 which is also supported by the VM?

specifically for this key there isn't any reason besides consistency and possibility reusing already computed ns hash for other keys (but currently as I see we don't do this)

specifically for this key there isn't any reason besides consistency and possibility reusing already computed ns hash for other keys (but currently as I see we don't do this)
| `N` + [ RIPEMD160 of namespace ] + [ subject address ] | []byte{1} | subject that belongs to the namespace | | `N` + [ RIPEMD160 of namespace ] + [ subject address ] | []byte{1} | subject that belongs to the namespace |
| `l` + [ RIPEMD160 of namespace ] + [ RIPEMD160 of subject name ] | Subject public key | subject name to public key index | | `l` + [ RIPEMD160 of namespace ] + [ RIPEMD160 of subject name ] | Subject public key | subject name to public key index |
| `g` + [ RIPEMD160 of namespace ] + [ RIPEMD160 of group ] | Serialized Group structure | group into | | `g` + [ RIPEMD160 of namespace ] + [ 8 byte group id ] | Serialized Group structure | group into |
| `G` + [ RIPEMD160 of namespace ] + [ RIPEMD160 of group ] + [ subject address ] | []byte{1} | subject that belongs to the group | | `G` + [ RIPEMD160 of namespace ] + [ 8 byte group id ] + [ subject address ] | []byte{1} | subject that belongs to the group |
| `c` | Int | group id counter |
| `m` + [ RIPEMD160 of namespace ] + [ RIPEMD160 of subject name ] | Serialized group id int | group name to group id index |
*/ */