mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-01 17:07:56 +00:00
d1f678c0ec
This PR allows _username authorities_ to issue unique usernames that correspond with an account. It also provides two-way lookup, that is from `AccountId` to a single, "primary" `Username` (alongside `Registration`) and multiple unique `Username`s to an `AccountId`. Key features: - Username Authorities added (and removed) via privileged origin. - Authorities have a `suffix` and an `allocation`. They can grant up to `allocation` usernames. Their `suffix` will be appended to the usernames that they issue. A suffix may be up to 7 characters long. - Users can ask an authority to grant them a username. This will take the form `myusername.suffix`. The entire name (including suffix) must be less than or equal to 32 alphanumeric characters. - Users can approve a username for themselves in one of two ways (that is, authorities cannot grant them arbitrarily): - Pre-sign the entire username (including suffix) with a secret key that corresponds to their `AccountId` (for keyed accounts, obviously); or - Accept the username after it has been granted by an authority (it will be queued until accepted) (for non-keyed accounts like pure proxies or multisigs). - The system does not require any funds or deposits. Users without an identity will be given a default one (presumably all fields set to `None`). If they update this info, they will need to place the normal storage deposit. - If a user does not have any username, their first one will be set as `Primary`, and their `AccountId` will map to that one. If they get subsequent usernames, they can choose which one to be their primary via `set_primary_username`. - There are some state cleanup functions to remove expired usernames that have not been accepted and dangling usernames whose owners have called `clear_identity`. TODO: - [x] Add migration to runtimes - [x] Probably do off-chain migration into People Chain genesis - [x] Address a few TODO questions in code (please review) --------- Co-authored-by: Liam Aharon <liam.aharon@hotmail.com> Co-authored-by: Gonçalo Pestana <g6pestana@gmail.com> Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by: Dónal Murray <donal.murray@parity.io>
66 lines
1.9 KiB
TOML
66 lines
1.9 KiB
TOML
[package]
|
|
name = "pallet-identity"
|
|
version = "4.0.0-dev"
|
|
authors.workspace = true
|
|
edition.workspace = true
|
|
license = "Apache-2.0"
|
|
homepage = "https://substrate.io"
|
|
repository.workspace = true
|
|
description = "FRAME identity management pallet"
|
|
readme = "README.md"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[package.metadata.docs.rs]
|
|
targets = ["x86_64-unknown-linux-gnu"]
|
|
|
|
[dependencies]
|
|
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive", "max-encoded-len"] }
|
|
enumflags2 = { version = "0.7.7" }
|
|
log = { version = "0.4.17", default-features = false }
|
|
scale-info = { version = "2.10.0", default-features = false, features = ["derive"] }
|
|
frame-benchmarking = { path = "../benchmarking", default-features = false, optional = true }
|
|
frame-support = { path = "../support", default-features = false }
|
|
frame-system = { path = "../system", default-features = false }
|
|
sp-io = { path = "../../primitives/io", default-features = false }
|
|
sp-runtime = { path = "../../primitives/runtime", default-features = false }
|
|
sp-std = { path = "../../primitives/std", default-features = false }
|
|
|
|
[dev-dependencies]
|
|
pallet-balances = { path = "../balances" }
|
|
sp-core = { path = "../../primitives/core" }
|
|
sp-keystore = { path = "../../primitives/keystore" }
|
|
|
|
[features]
|
|
default = ["std"]
|
|
|
|
std = [
|
|
"codec/std",
|
|
"enumflags2/std",
|
|
"frame-benchmarking?/std",
|
|
"frame-support/std",
|
|
"frame-system/std",
|
|
"log/std",
|
|
"pallet-balances/std",
|
|
"scale-info/std",
|
|
"sp-core/std",
|
|
"sp-io/std",
|
|
"sp-keystore/std",
|
|
"sp-runtime/std",
|
|
"sp-std/std",
|
|
]
|
|
runtime-benchmarks = [
|
|
"frame-benchmarking/runtime-benchmarks",
|
|
"frame-support/runtime-benchmarks",
|
|
"frame-system/runtime-benchmarks",
|
|
"pallet-balances/runtime-benchmarks",
|
|
"sp-runtime/runtime-benchmarks",
|
|
]
|
|
try-runtime = [
|
|
"frame-support/try-runtime",
|
|
"frame-system/try-runtime",
|
|
"pallet-balances/try-runtime",
|
|
"sp-runtime/try-runtime",
|
|
]
|