Не путать с cryptoops/script/ (Solidity, Foundry, Deploy.s.sol).
Playbook целиком: ../README.md § Playbook (шаг 2 — здесь; шаги 3–5 деплоя — ../script/README.md).
Да — полностью, для любой кампании в campaigns/<id>/.
| Файл | Назначение |
|---|---|
paths.mjs |
Куда писать: campaigns/{id}/whitelist.csv, output/, deploy.json |
build-tree.mjs |
CSV → tree.json + Merkle root в консоль |
get-proof.mjs |
tree.json → proof.json (root + proof на каждый адрес) |
В скриптах нет зашитого root, адресов или сумм — только формат CSV: address,amount,decimals.
Приоритет:
$env:CAMPAIGN_ID = "eftihia-sepolia-002"(PowerShell)- иначе
campaigns/active.json→ полеcampaignId - иначе fallback
eftihia-sepolia-001
npm run build-tree # пишет в campaigns/<id>/output/tree.json
npm run get-proof # пишет в campaigns/<id>/output/proof.jsonКампания 001 не перезаписывается, если CAMPAIGN_ID указывает на 002.
mkdir campaigns\eftihia-sepolia-002
copy campaigns\_template\whitelist.example.csv campaigns\eftihia-sepolia-002\whitelist.csv
# edit addresses/amounts
$env:CAMPAIGN_ID = "eftihia-sepolia-002"
npm run build-tree
npm run get-proofДальше — вручную обновить константы в script/Deploy.s.sol и деплой (см. script/README.md).
| Команда | Файл | Поведение |
|---|---|---|
build-tree |
output/tree.json |
перезапись в папке текущей кампании |
get-proof |
output/proof.json |
перезапись в папке текущей кампании |
Старые кампании в других папках не трогаются.
- Node.js,
npm installв корнеcryptoops - Пакет
@openzeppelin/merkle-tree(file:./merkle-treeвpackage.json)
scripts/ (Node) |
script/ (Solidity) |
|
|---|---|---|
| Универсальность | ✅ полная | |
| Сеть | только файлы на диске | Sepolia tx |
| Менять при новой кампании | только CSV + CAMPAIGN_ID |
+ MERKLE_ROOT, FUND в .sol |
См. также: campaigns/README.md, README.md.