107 lines
5.5 KiB
JavaScript
107 lines
5.5 KiB
JavaScript
/**
|
||
* Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
||
* All rights reserved.
|
||
*
|
||
* This software is proprietary and confidential.
|
||
* Unauthorized copying, modification, or distribution is prohibited.
|
||
*
|
||
* For licensing inquiries: info@hb3-accelerator.com
|
||
* Website: https://hb3-accelerator.com
|
||
* GitHub: https://github.com/HB3-ACCELERATOR
|
||
*/
|
||
|
||
// Скрипт для чтения данных DLE из блокчейна
|
||
const { ethers } = require("hardhat");
|
||
|
||
async function main() {
|
||
// Адрес DLE контракта (замените на ваш адрес)
|
||
const dleAddress = process.env.DLE_ADDRESS || "0x219f9665e713476B0B080bd73b8465B39dAB1E41";
|
||
|
||
console.log(`Читаем данные DLE из блокчейна по адресу: ${dleAddress}`);
|
||
|
||
// Получаем RPC URL из переменных окружения или используем дефолтный для Sepolia
|
||
const rpcUrl = process.env.RPC_URL || 'https://eth-sepolia.nodereal.io/v1/YOUR_NODEREAL_KEY';
|
||
|
||
// Создаем провайдер
|
||
const provider = new ethers.JsonRpcProvider(rpcUrl);
|
||
|
||
try {
|
||
// Получаем ABI контракта DLE
|
||
const DLE = await ethers.getContractFactory("DLE");
|
||
const dle = DLE.attach(dleAddress).connect(provider);
|
||
|
||
// Читаем данные DLE из блокчейна
|
||
console.log("\n📋 Чтение данных DLE из блокчейна...");
|
||
|
||
const dleInfo = await dle.getDLEInfo();
|
||
|
||
console.log("\n✅ Данные DLE из блокчейна:");
|
||
console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
|
||
console.log(`🏢 Название: ${dleInfo.name}`);
|
||
console.log(`💎 Символ: ${dleInfo.symbol}`);
|
||
console.log(`📍 Местонахождение: ${dleInfo.location}`);
|
||
console.log(`🌍 Координаты: ${dleInfo.coordinates}`);
|
||
console.log(`🏛️ Юрисдикция: ${dleInfo.jurisdiction}`);
|
||
console.log(`📊 ОКТМО: ${dleInfo.oktmo}`);
|
||
console.log(`🏭 Коды ОКВЭД: ${dleInfo.okvedCodes.join(', ')}`);
|
||
console.log(`🏢 КПП: ${dleInfo.kpp}`);
|
||
console.log(`📅 Дата создания: ${new Date(Number(dleInfo.creationTimestamp) * 1000).toISOString()}`);
|
||
console.log(`✅ Активен: ${dleInfo.isActive}`);
|
||
console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
|
||
|
||
// Дополнительная информация
|
||
console.log("\n📊 Дополнительная информация:");
|
||
const quorumPercentage = await dle.quorumPercentage();
|
||
const currentChainId = await dle.getCurrentChainId();
|
||
const totalSupply = await dle.totalSupply();
|
||
|
||
console.log(`🗳️ Кворум: ${quorumPercentage}%`);
|
||
console.log(`🔗 Текущая сеть: ${currentChainId}`);
|
||
console.log(`💰 Общий запас токенов: ${ethers.formatUnits(totalSupply, 18)}`);
|
||
|
||
// Проверяем информацию о токенах
|
||
console.log("\n👥 Информация о токенах:");
|
||
try {
|
||
const totalSupply = await dle.totalSupply();
|
||
console.log(`💰 Общий запас: ${ethers.formatUnits(totalSupply, 18)} токенов`);
|
||
|
||
// Проверим баланс создателя контракта (адрес, который деплоил контракт)
|
||
const deployer = "0xF45aa4917b3775bA37f48Aeb3dc1a943561e9e0B"; // Адрес из логов
|
||
const deployerBalance = await dle.balanceOf(deployer);
|
||
if (deployerBalance > 0) {
|
||
console.log(`👤 Создатель (${deployer}): ${ethers.formatUnits(deployerBalance, 18)} токенов`);
|
||
} else {
|
||
console.log(`👤 Создатель (${deployer}): 0 токенов`);
|
||
}
|
||
|
||
// Проверим, есть ли другие держатели токенов
|
||
console.log("\n🔍 Проверка распределения токенов:");
|
||
console.log("💡 Партнеры не сохраняются в блокчейне как отдельные данные.");
|
||
console.log("💡 Они используются только для первоначального распределения токенов.");
|
||
console.log("💡 Информация о партнерах хранится в локальных файлах JSON.");
|
||
|
||
} catch (error) {
|
||
console.log("⚠️ Не удалось прочитать информацию о токенах:", error.message);
|
||
}
|
||
|
||
console.log("\n🌐 Ссылка на Etherscan:");
|
||
console.log(`https://sepolia.etherscan.io/address/${dleAddress}#readContract`);
|
||
console.log("\n💡 На Etherscan перейдите в раздел 'Contract' -> 'Read Contract'");
|
||
console.log(" и вызовите функцию 'getDLEInfo' чтобы увидеть эти данные!");
|
||
|
||
} catch (error) {
|
||
console.error("❌ Ошибка при чтении данных DLE:", error);
|
||
throw error;
|
||
}
|
||
}
|
||
|
||
// Запускаем скрипт
|
||
main()
|
||
.then(() => {
|
||
console.log("\n✅ Скрипт завершен успешно");
|
||
process.exit(0);
|
||
})
|
||
.catch((error) => {
|
||
console.error("\n❌ Скрипт завершен с ошибкой:", error);
|
||
process.exit(1);
|
||
});
|