Інтеграція зі Snapshot (голосування)

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Інтеграція зі Snapshot (голосування)
Простий
~2-3 дні
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1306
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1218
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    920
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1147
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    610
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    885

Інтеграція з Snapshot (голосування)

Snapshot — стандарт off-chain голосування у Web3. Більшість DAO з активним управлінням його використовує: Uniswap, Aave, ENS, Gitcoin, Compound. Причина проста: on-chain голосування через Governor коштує газ кожному учаснику; з тисячами голосуючих це стає значною перешкодою.

Snapshot вирішує це через підписи: голос — це криптографічна підпис, не транзакція. Верифікація відбувається off-chain; результати публікуються в IPFS. Для більшості DAO цього достатньо.

Що потрібно для інтеграції

Інтеграція Snapshot займає 1–2 тижні й включає три частини: налаштування Space, відображення пропозицій у вашому інтерфейсі та кнопку голосування.

Налаштування Space: створюється на snapshot.org, конфігурується через JSON файл у записі ENS. Ключові параметри — стратегія голосування (які токени й на яких мережах рахуються) та мінімальний поріг пропозиції.

// Приклад отримання пропозицій через Snapshot GraphQL API
const SNAPSHOT_HUB = 'https://hub.snapshot.org/graphql';

async function getProposals(spaceId) {
    const query = `
        query Proposals($space: String!) {
            proposals(
                where: { space: $space, state: "active" }
                orderBy: "created"
                orderDirection: desc
            ) {
                id
                title
                body
                choices
                start
                end
                snapshot
                state
                scores
                scores_total
                votes
                author
            }
        }
    `;
    
    const response = await fetch(SNAPSHOT_HUB, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ query, variables: { space: spaceId } })
    });
    
    const { data } = await response.json();
    return data.proposals;
}

// Подання голосу через Snapshot SDK
import { Web3Provider } from '@ethersproject/providers';
import Client from '@snapshot-labs/snapshot.js';

async function castVote(proposalId, choiceIndex, provider) {
    const client = new Client.Client('https://hub.snapshot.org');
    const web3 = new Web3Provider(provider);
    const [account] = await web3.listAccounts();
    
    const result = await client.vote(web3, account, {
        space: 'yourspace.eth',
        proposal: proposalId,
        type: 'single-choice',
        choice: choiceIndex,    // індекс вибору на основі 1
        reason: '',
        app: 'your-app'
    });
    
    return result;
}

Стратегії голосування

Snapshot підтримує гнучкі стратегії: erc20-balance-of (голос = баланс токенів), erc20-votes (делегована голосувальна сила від Governor), delegation (передані голоси), whitelist. Кілька стратегій можуть бути об'єднані з коефіцієнтами ваги. Снапшот блок використовується для снапшоту балансу — голосувальна вага фіксується при створенні пропозиції; купівля токенів під час голосування марна.

Коли Snapshot недостатньо

Snapshot підходить для сигналів управління, але не для виконання. Якщо результати голосування повинні автоматично змінити параметри протоколу — потрібне on-chain виконання через Governor + Timelock. В цьому випадку Snapshot — перший етап: off-chain сигнал → on-chain голос → виконання. ENS використовує цей паттерн.

Графік інтеграції

Базовий UI з переглядом пропозицій та голосуванням — 1 тиждень. Повна інтеграція з сповіщеннями, історією голосів користувача та делегуванням — 2–3 тижні.