SHA256
Сократить promo-аргументы регистрации в Solana
This commit is contained in:
@@ -267,7 +267,7 @@ On-chain инвариант только один:
|
||||
|
||||
### 7.3. Promo-обход login guard
|
||||
|
||||
При создании пользователя допускается опциональный `promo_code`.
|
||||
При создании пользователя off-chain клиент может использовать опциональный `promo_code`.
|
||||
|
||||
Формат строки:
|
||||
|
||||
@@ -285,6 +285,8 @@ On-chain инвариант только один:
|
||||
shine_promo_v1:<login_из_запроса_create_user_pda>
|
||||
```
|
||||
|
||||
В сам `create_user_pda` при этом передаётся только `seller_login`, а подпись проверяется по отдельной Ed25519-инструкции в транзакции.
|
||||
|
||||
Если promo-код валиден, то:
|
||||
|
||||
- premium/trademark-проверка через `shine_login_guard` не выполняется;
|
||||
@@ -385,7 +387,7 @@ shine_promo_v1:<login_из_запроса_create_user_pda>
|
||||
- `additional_limit`
|
||||
- mutable fields записи
|
||||
- `root` signature по unsigned части
|
||||
- опционально `promo_code`
|
||||
- опционально `promo_seller_login`
|
||||
|
||||
### Бинарный ABI
|
||||
|
||||
@@ -398,15 +400,14 @@ shine_promo_v1:<login_из_запроса_create_user_pda>
|
||||
- additional_limit: u64 LE
|
||||
- fields: UserMutableFieldsV1
|
||||
- root_signature: [u8; 64]
|
||||
- optional trailing promo_code: string_u8
|
||||
- optional trailing promo_seller_login: string_u8
|
||||
```
|
||||
|
||||
### Обязательные проверки
|
||||
|
||||
1. Логин валиден по синтаксису.
|
||||
2. Если promo-код не передан, логин разрешён `shine_login_guard`.
|
||||
3. Если promo-код передан, он должен:
|
||||
- иметь формат `1<seller_login>-<signature_base58>`;
|
||||
3. Если promo-регистрация включена, программа получает `promo_seller_login`, а связанная Ed25519-инструкция должна:
|
||||
- ссылаться на существующий `promo_seller_pda`;
|
||||
- проходить Ed25519-проверку через `signer_pubkey` продавца;
|
||||
- иметь `remaining_sales > 0`;
|
||||
|
||||
Reference in New Issue
Block a user