Something went wrong. Try again.
Monorepo for Aesthetic.Computer aesthetic.computer
Something went wrong. Try again.
JavaScript
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980#!/usr/bin/env node
/** * Update v4 contract metadata */
import { TezosToolkit } from '@taquito/taquito';import { InMemorySigner } from '@taquito/signer';import fs from 'fs';import path from 'path';import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);const __dirname = path.dirname(__filename);
// V4 staging contractconst V4_CONTRACT = 'KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W';
// Load staging wallet credentialsconst stagingEnvPath = path.join(__dirname, 'staging/.env');const envContent = fs.readFileSync(stagingEnvPath, 'utf8');let stagingAddress, stagingKey;for (const line of envContent.split('\n')) { if (line.startsWith('STAGING_ADDRESS=') || line.startsWith('ADDRESS=')) { stagingAddress = line.split('=')[1].trim().replace(/"/g, ''); } else if (line.startsWith('STAGING_KEY=') || line.startsWith('KEY=') || line.startsWith('SECRET_KEY=')) { stagingKey = line.split('=')[1].trim().replace(/"/g, ''); }}
if (!stagingAddress || !stagingKey) { console.error('❌ Could not load staging wallet credentials'); process.exit(1);}
const tezos = new TezosToolkit('https://mainnet.api.tez.ie');tezos.setProvider({ signer: new InMemorySigner(stagingKey) });
console.log('\n╔══════════════════════════════════════════════════════════════╗');console.log('║ 📝 Update v4 Contract Metadata ║');console.log('╚══════════════════════════════════════════════════════════════╝\n');
console.log(`📍 Contract: ${V4_CONTRACT}`);console.log(`👤 Admin: ${stagingAddress}\n`);
// Read new metadataconst metadataJson = JSON.parse(fs.readFileSync('/tmp/v4-metadata.json', 'utf8'));const metadataString = JSON.stringify(metadataJson);const metadataBytes = Buffer.from(metadataString, 'utf8').toString('hex');
console.log('📄 New metadata:');console.log(JSON.stringify(metadataJson, null, 2));console.log();
// Prepare contract callconsole.log('📤 Calling set_contract_metadata...');
try { const contract = await tezos.contract.at(V4_CONTRACT);
// Call set_contract_metadata with [{ key: "content", value: bytes }] const op = await contract.methods.set_contract_metadata([{ key: 'content', value: metadataBytes }]).send();
console.log(` ⏳ Operation hash: ${op.hash}`); console.log(' ⏳ Waiting for confirmation...');
await op.confirmation(1);
console.log('\n✅ Contract metadata updated!'); console.log(` 🔗 Explorer: https://tzkt.io/${op.hash}\n`);
} catch (error) { console.error('\n❌ Update failed!'); console.error(` Error: ${error.message}\n`); process.exit(1);}