PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/tonweb/src

Просмотр файла: test-vesting.js

const TonWeb = require("./index");
const {toNano} = require("./utils");
const BN = TonWeb.utils.BN;
const fromNano = TonWeb.utils.fromNano;

async function init() {
    const tonweb = new TonWeb(new TonWeb.HttpProvider('https://toncenter.com/api/v2/jsonRPC', {apiKey: ''}));

    // Create private key

    const seed = TonWeb.utils.base64ToBytes('vt58J2v6FaBuXFGcyGtqT5elpVxcZ+I1zgu/GUfA5uY=');
    const keyPair = TonWeb.utils.nacl.sign.keyPair.fromSeed(seed);

    const seed2 = TonWeb.utils.base64ToBytes('vt59J2v6FaBuXFGcyGtqT5elpVxcZ+I1zgu/GUfA5uY=');
    const keyPair2 = TonWeb.utils.nacl.sign.keyPair.fromSeed(seed2);

    console.log('pubkey', TonWeb.utils.bytesToHex(keyPair.publicKey));

    const senderWallet = new (tonweb.wallet.all.v3R2)(tonweb.provider, {
        publicKey: keyPair.publicKey
    });
    const senderAddress = (await senderWallet.getAddress()).toString(true, true, true);
    console.log('sender address', senderAddress)

    const userWallet = new (tonweb.wallet.all.v4R2)(tonweb.provider, {
        publicKey: keyPair.publicKey
    });
    const userAddress = (await userWallet.getAddress()).toString(true, true, false);
    console.log('user address', userAddress)

    const MIN = 60;
    const HOUR = 60 * 60;
    const DAY = 60 * 60 * 24;
    const MONTH = 60 * 60 * 24 * 30;

    const VestingWalletClass = tonweb.lockupWallet.VestingWalletV1;
    const vestingParams = {
        publicKey: keyPair.publicKey,
        wc: 0,
        vestingStartTime: 1691562371, // 9:26
        vestingTotalDuration: HOUR,   // 10:26
        unlockPeriod: 5 * MIN,   // 9:41 (1 / 12 = 0.08 TON )
        cliffDuration: 10 * MIN, // 9:36 (1 * 2/12 = 0.16 TON)
        vestingTotalAmount: new TonWeb.utils.BN(1e9),
        vestingSenderAddress: new TonWeb.utils.Address(senderAddress),
        ownerAddress: new TonWeb.utils.Address(userAddress),
    };
    // console.log(VestingWalletClass.codeHex);
    // console.log(VestingWalletClass.WALLET_ID_BASE);

    const vestingWallet = new VestingWalletClass(tonweb.provider, vestingParams);

    const vestingWalletAddress = (await vestingWallet.getAddress()).toString(true, true, true);
    console.log('vesting address', vestingWalletAddress, 'non-bounce:', (await vestingWallet.getAddress()).toString(true, true, false))

    const SINGLE_NOMINATOR_POOL = 'Ef8GA8bh6WzeDmSq_rrZnpkuA0eZ-X7Bb4XGLJowKFQjoAHq';
    const NOMINATOR_POOL = 'Ef8LwnWMF502lcxlywkN3FJu0t10OYbulpWCWs1uS_HqleIy';

    const ELECTOR = 'Ef8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0vF';
    const CONFIG = 'Ef9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVbxn';

    const TON_STAKERS_POOL_TESTNET = 'kQANFsYyYn-GSZ4oajUJmboDURZU-udMHf9JxzO4vYM_hFP3';
    const BEMO = 'EQDNhy-nxYFgUqzfUzImBEP67JqsyMIcyk2S5_RwNNEYku0k';
    const WHALES = 'EQCkR1cGmnsE45N4K0otPl5EnxnRakmGqeJUNua5fkWhales';

    // console.log(await vestingWallet.deploy(keyPair.secretKey).send());

    // console.log(await vestingWallet.methods.seqno().call());
    // console.log(await vestingWallet.getWalletId());
    // console.log(await vestingWallet.methods.getWalletId());
    // console.log(await vestingWallet.getPublicKey());
    // console.log(await vestingWallet.methods.getPublicKey());
    //
    // console.log(await vestingWallet.methods.getVestingData());
    // const lockupData = await vestingWallet.getVestingData();
    // lockupData.vestingSenderAddress = lockupData.vestingSenderAddress.toString(true, true, true);
    // lockupData.ownerAddress = lockupData.ownerAddress.toString(true, true, true);
    // console.log(lockupData);

    // console.log((await vestingWallet.methods.getWhitelist()).map(a => a.toString(true, true, true)));
    // console.log((await vestingWallet.getWhitelist()).map(a => a.toString(true, true, true)));

    // console.log((await vestingWallet.methods.getLockedAmount(Math.floor(Date.now() / 1000))).toString());
    // console.log((await vestingWallet.methods.getLockedAmount(1684414982)).toString());
    // console.log((await vestingWallet.methods.getLockedAmount(1684414982 + 1 * 60)).toString());
    // console.log((await vestingWallet.methods.getLockedAmount(1684414982 + 5 * 60)).toString());
    // console.log((await vestingWallet.methods.getLockedAmount(1684414982 + 10 * 60)).toString());

    // add whitelist
    //
    // const seqno = (await senderWallet.methods.seqno().call()) || 0;
    // console.log({seqno});
    //
    // const transfer = senderWallet.methods.transfer({
    //     secretKey: keyPair.secretKey,
    //     toAddress: vestingWalletAddress,
    //     amount: TonWeb.utils.toNano('0.2'),
    //     seqno: seqno,
    //     payload: vestingWallet.createAddWhitelistBody({
    //         addresses: [
    //             new TonWeb.Address('EQBWt81tpIeWGQYhBickYFBn6B-25RrGLzzZEYpNXXmbJERU'),
    //             // new TonWeb.Address('EQBWt81tpIeWGQYhBickYFBn6B-25RrGLzzZEYpNXXmbJERU'),
    //         ]
    //     })
    // });
    // //
    // console.log(await transfer.send());

   // internal transfer

    // const seqno = (await userWallet.methods.seqno().call()) || 0;
    // console.log({seqno});
    //
    // const transfer = userWallet.methods.transfer({
    //     secretKey: keyPair.secretKey,
    //     toAddress: vestingWalletAddress,
    //     amount: TonWeb.utils.toNano('0.05'),
    //     seqno: seqno,
    //     payload: vestingWallet.createInternalTransfer({
    //         address: 'EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N',
    //         amount: TonWeb.utils.toNano('0.123'),
    //         // payload: 'TestTes',
    //         sendMode: 3
    //     })
    // });
    //
    // console.log(await transfer.send());

   // external transfer

    const seqno = (await vestingWallet.methods.seqno().call()) || 0;
    console.log({seqno});

    const payload = new TonWeb.boc.Cell();
    payload.bits.writeUint(0x595f07bc, 32); // burn op
    payload.bits.writeUint(0, 64);
    payload.bits.writeCoins(toNano('0.9'));
    payload.bits.writeAddress(new TonWeb.Address('EQA42bC_BKd9ulc2y5bus34B6g2nyaa6S7vC0SLaOv4OMbOD'));
    payload.bits.writeUint(0, 1)
    payload.bits.writeUint(0, 1)
    //
    const transfer = vestingWallet.methods.transfers({
        secretKey: keyPair.secretKey,
        seqno: seqno,
        messages: [
            {
                toAddress: 'EQA0i8-CdGnF_DhUHHf92R1ONH6sIA9vLZ_WLcCIhfBBXwtG',
                amount: TonWeb.utils.toNano('0.05'),
                // payload
            },
            // {
            //     toAddress: 'Ef-gJfrz9hYaXnxfvO7OMNmxfysCYY7cW2lVxJymVtMvkayU',
            //     amount: TonWeb.utils.toNano('0.01'),
            // }
        ]
        // payload: payload.bits.array.slice(0, payload.bits.getUsedBytes())
    });

    // console.log(await transfer.send());
}

init();

Выполнить команду


Для локальной разработки. Не используйте в интернете!