UNPKG

@vechain/vebetterdao-contracts

Version:

Open-source repository that houses the smart contracts powering the decentralized VeBetterDAO on the VeChain Thor blockchain.

55 lines (54 loc) 2.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.airdropB3trFromTreasury = exports.transferErc20 = exports.airdropVTHO = void 0; const typechain_types_1 = require("../../typechain-types"); const sdk_core_1 = require("@vechain/sdk-core"); const utils_1 = require("@repo/utils"); const chunk_1 = require("./chunk"); const sdk_network_1 = require("@vechain/sdk-network"); const config_1 = require("@repo/config"); const thorClient = sdk_network_1.ThorClient.at((0, config_1.getConfig)().nodeUrl); const airdropVTHO = async (accounts, amount, sourceAccount) => { console.log(`Airdropping VTHO...`); const accountChunks = (0, chunk_1.chunk)(accounts, 200); for (const accountChunk of accountChunks) { const clauses = []; accountChunk.forEach(address => { clauses.push(sdk_core_1.Clause.transferVTHOToken(address, sdk_core_1.VTHO.of(amount))); }); await utils_1.TransactionUtils.sendTx(thorClient, clauses, sourceAccount.pk); } }; exports.airdropVTHO = airdropVTHO; /** * Transfer ERC20 tokens */ const transferErc20 = async (tokenAddress, sender, recipient, amount) => { console.log(`Transferring ${amount} ${tokenAddress} tokens from ${sender.address} to ${recipient}`); if (amount === 0n) { console.log(`Skipping transfer of 0 tokens from ${sender.address} to ${recipient}`); return; } const clauses = []; clauses.push(sdk_core_1.Clause.callFunction(sdk_core_1.Address.of(tokenAddress), sdk_core_1.ABIContract.ofAbi(sdk_core_1.ERC20_ABI).getFunction("transfer"), [ recipient, amount, ])); await utils_1.TransactionUtils.sendTx(thorClient, clauses, sender.pk); }; exports.transferErc20 = transferErc20; /** * Airdrop B3TR from treasury to a list of accounts */ const airdropB3trFromTreasury = async (treasuryAddress, admin, accounts) => { console.log(`Airdropping B3TR...`); const accountChunks = (0, chunk_1.chunk)(accounts, 100); for (const accountChunk of accountChunks) { const clauses = []; accountChunk.forEach(account => { clauses.push(sdk_core_1.Clause.callFunction(sdk_core_1.Address.of(treasuryAddress), sdk_core_1.ABIContract.ofAbi(typechain_types_1.Treasury__factory.abi).getFunction("transferB3TR"), [account.key.address.toString(), account.amount])); }); await utils_1.TransactionUtils.sendTx(thorClient, clauses, admin.pk); } }; exports.airdropB3trFromTreasury = airdropB3trFromTreasury;