diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..fbb0273c --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,63 @@ +const TonWeb = require('tonweb'); +const fs = require('fs'); + +const httpProvider = new TonWeb.HttpProvider('CHAINSTACK_NODE_WITH_jsonRPC'); +const tonweb = new TonWeb(httpProvider); + +async function generateAndInitializeWallet() { + // Generate a new key pair + const keyPair = TonWeb.utils.nacl.sign.keyPair(); + + // Create a v4R2 wallet instance + const WalletClass = tonweb.wallet.all['v4R2']; + const wallet = new WalletClass(tonweb.provider, { + publicKey: keyPair.publicKey, + wc: 0 + }); + + // Get the wallet address + const walletAddress = await wallet.getAddress(); + const addressString = walletAddress.toString(true, true, true); + + console.log('Generated wallet address:', addressString); + console.log('Please send some TON to this address to initialize the wallet.'); + + // Save the key pair to a file + const keyPairData = { + publicKey: TonWeb.utils.bytesToHex(keyPair.publicKey), + secretKey: TonWeb.utils.bytesToHex(keyPair.secretKey) + }; + fs.writeFileSync('wallet_keys.json', JSON.stringify(keyPairData, null, 2)); + console.log('Key pair saved to wallet_keys.json'); + + // Wait for the wallet to be topped up + await waitForBalance(walletAddress); + + // Initialize the wallet + console.log('Initializing wallet...'); + const deployResult = await wallet.deploy(keyPair.secretKey).send(); + console.log('Deployment transaction sent:', deployResult); + + console.log('Waiting for deployment to complete...'); + await new Promise(resolve => setTimeout(resolve, 10000)); // Wait for 10 seconds + + const seqno = await wallet.methods.seqno().call(); + if (seqno !== null) { + console.log('Wallet successfully initialized!'); + } else { + console.log('Wallet initialization might have failed. Please check the address on a block explorer.'); + } +} + +async function waitForBalance(address) { + while (true) { + const balance = await tonweb.getBalance(address); + if (balance && balance !== '0') { + console.log('Balance detected:', TonWeb.utils.fromNano(balance), 'TON'); + break; + } + await new Promise(resolve => setTimeout(resolve, 5000)); // Check every 5 seconds + } +} + +generateAndInitializeWallet().catch(console.error); diff --git a/Altrd b/Altrd new file mode 100644 index 00000000..9a875d70 --- /dev/null +++ b/Altrd @@ -0,0 +1,43 @@ +const TonWeb = require('tonweb'); + +const privateKey = IrPhIDMH.j7A6K0cf5ODb7tt9U3whePdO1UXqfth1 + +const httpProvider = new TonWeb.HttpProvider(Node 23-12-2024 09:52/JsonRPC); +const tonweb = new TonWeb(httpProvider); + +async function deployWallet() {UQA40gk4wW3XgJcPiExt5sUuBS3Q0Zp0k9giek_owXPNgzdq + try { + const keyPair = TonWeb.utils.nacl.sign.keyPair.fromSecretKey(TonWeb.utils.hexToBytes(privateKey)); + const WalletClass = tonweb.wallet.all['v4R2']; + const wallet = new WalletClass(tonweb.provider, { + publicKey: keyPair.publicKey, + wc: 0 + }); + + const walletAddress = await wallet.getAddress(); + console.log(UQA40gk4wW3XgJcPiExt5sUuBS3Q0Zp0k9giek_owXPNgzdq, walletAddress.toString(true, true, true)); + + const balance = await tonweb.provider.getBalance(walletAddress.toString()); + console.log('Wallet balance:', balance); + + if (balance === '0') { + console.error('Wallet has no balance. Please add funds before deploying.'); + return; + } + + const seqno = await wallet.methods.seqno().call(); + console.log('Seqno:', seqno); + + if (seqno === null) { + console.log('Wallet not deployed. Deploying...'); + const deployResult = await wallet.deploy(keyPair.secretKey).send(); + console.log('Deploy result:', deployResult); + } else { + console.log('Wallet already deployed. Seqno:', seqno); + } + } catch (error) { + console.error('Unexpected error:', error.message); + } +} + +deployWallet();