UNPKG

tonweb

Version:

TonWeb - JavaScript API for TON blockchain

157 lines (131 loc) 6.69 kB
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: '319256218218ff3c53398474375d0781cd81c1c9d1936ee992372845f8ebadb1'})); // 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, stateInit: (await vestingWallet.createStateInit()).stateInit }); 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();