Убрать фиксированного менеджера из config и хранить только DAO-управляемых менеджеров

This commit is contained in:
AidarKC 2026-05-16 18:36:36 +03:00
parent a701c1cbba
commit 32bc2c9dc3
7 changed files with 14 additions and 19 deletions

View File

@ -1,6 +1,16 @@
//! Единый деплой-конфиг проекта SHINE.
//! Здесь хранятся адреса и параметры, которые зависят от окружения деплоя.
// =========================
// Program IDs
// =========================
/// `SHINE_PAYMENTS_PROGRAM_ID` — адрес программы `shine_payments` для текущего окружения.
pub const SHINE_PAYMENTS_PROGRAM_ID: &str = "m48pWRGWrMj3TEHjuU4zsp5Gju4e7ZaPovk8RcVt7kR";
/// `SHINE_USERS_PROGRAM_ID` — адрес программы `shine_users` для текущего окружения.
pub const SHINE_USERS_PROGRAM_ID: &str = "FZS1YctoeEhCkZ5VTjsysUFAXR8CqxYztcLboXcg2Rpm";
// =========================
// DAO / роли управления
// =========================
@ -11,9 +21,6 @@ pub const DAO_AUTHORITY: &str = "FUc28vNixp7F3nnkpGVt6nuJbgvJ4429v4B5wS52Df6P";
/// `DAO_TREASURY_WALLET` — кошелек казны DAO для поступления DAO-части выплат в `shine_payments`.
pub const DAO_TREASURY_WALLET: &str = "FUc28vNixp7F3nnkpGVt6nuJbgvJ4429v4B5wS52Df6P";
/// `MANAGER_WALLET` — сервисный менеджерский кошелек по умолчанию для `shine_payments`.
pub const MANAGER_WALLET: &str = "4yzHKs2zFXpyqqCETe8KpAs4xhEo4QhJ2ybyTgRZphZv";
// =========================
// Комиссии / получатели
// =========================

View File

@ -34,15 +34,11 @@ pub mod shine_payments {
let dao_wallet = Pubkey::from_str(settings::DAO_WALLET)
.map_err(|_| error!(PaymentsError::InvalidSettingsWallet))?;
let manager_wallet = Pubkey::from_str(settings::MANAGER_WALLET)
.map_err(|_| error!(PaymentsError::InvalidSettingsWallet))?;
let system_program_ai = ctx.accounts.system_program.to_account_info();
let config = ConfigState {
version: 1,
dao_wallet,
manager_wallet,
inflow_vault: ctx.accounts.inflow_vault_pda.key(),
};
create_and_store_state(
@ -737,7 +733,6 @@ pub struct ChangeTicketRecipientArgs {
pub struct ConfigState {
pub version: u8,
pub dao_wallet: Pubkey,
pub manager_wallet: Pubkey,
pub inflow_vault: Pubkey,
}

View File

@ -52,5 +52,3 @@ pub const PYTH_SOL_USD_ACCOUNT: &str = deploy_config::PYTH_SOL_USD_ACCOUNT;
/// `DAO_WALLET` — адрес кошелька DAO-казны для `shine_payments` (берется из общего deploy-конфига).
pub const DAO_WALLET: &str = deploy_config::DAO_TREASURY_WALLET;
/// `MANAGER_WALLET` — адрес менеджерского кошелька по умолчанию (берется из общего deploy-конфига).
pub const MANAGER_WALLET: &str = deploy_config::MANAGER_WALLET;

View File

@ -180,9 +180,8 @@
let o = 0;
const version = data[o++];
const dao = new solanaWeb3.PublicKey(data.slice(o, o + 32)); o += 32;
const manager = new solanaWeb3.PublicKey(data.slice(o, o + 32)); o += 32;
const inflow = new solanaWeb3.PublicKey(data.slice(o, o + 32)); o += 32;
return { version, dao, manager, inflow };
return { version, dao, inflow };
}
function parseCoef(data) {
let o = 0;
@ -313,7 +312,6 @@
<div class="muted">Сейчас это тестовый DAO-кошелек. В production здесь будет адрес реального DAO.</div>
<div>Inflow vault: <code>${core.config.inflow.toBase58()}</code></div>
<div class="muted">Inflow vault — входящий PDA-кошелек выплат программы.</div>
<div>Manager (для справки): <code>${core.config.manager.toBase58()}</code></div>
<div>Награда за шаг: <b>${lamportsToSolStr(core.coef.reward)} SOL</b></div>
<div>Коэффициент: <b>${coefText}</b>, лимит: <b>${centsToUsdStr(core.coef.limitUsdCents)} USD</b></div>
<div>Осталось лимита для покупки Q1: <b>${centsToUsdStr(limitRemain)} USD</b></div>

View File

@ -187,9 +187,8 @@
let o = 0;
const version = data[o++];
const dao = new solanaWeb3.PublicKey(data.slice(o, o + 32)).toBase58(); o += 32;
const manager = new solanaWeb3.PublicKey(data.slice(o, o + 32)).toBase58(); o += 32;
const inflow = new solanaWeb3.PublicKey(data.slice(o, o + 32)).toBase58(); o += 32;
return { version, dao, manager, inflow };
return { version, dao, inflow };
}
function parseCoef(data) {
let o = 0;

View File

@ -138,9 +138,8 @@
let o = 0;
const version = data[o++];
const dao = new solanaWeb3.PublicKey(data.slice(o, o + 32)); o += 32;
const manager = new solanaWeb3.PublicKey(data.slice(o, o + 32)); o += 32;
const inflow = new solanaWeb3.PublicKey(data.slice(o, o + 32)); o += 32;
return { version, dao, manager, inflow };
return { version, dao, inflow };
}
function parseManagerAllowance(data) {
let o = 0;

View File

@ -165,9 +165,8 @@
let o = 0;
const version = data[o++];
const dao = new solanaWeb3.PublicKey(data.slice(o, o + 32)); o += 32;
const manager = new solanaWeb3.PublicKey(data.slice(o, o + 32)); o += 32;
const inflow = new solanaWeb3.PublicKey(data.slice(o, o + 32)); o += 32;
return { version, dao, manager, inflow };
return { version, dao, inflow };
}
function parseCoef(data) {
let o = 0;