• Последние
  • Feed подписок
  • Категории
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Telegram chat
    • TON WIKI
    • TON Archive
    • TONpie Chats
    • ANP system
    • indicaton.io
Theme Center
  • Theme Center
  • default

  • reset theme
Collapse

tonpie.io

Подпишись на канал фаундера и разработчика экосистемы tonpie

Как вы создаете новый кошелек TON программным путем?

Запланировано Прикреплена Закрыта Перенесена TON Overflow на русском
a-dev-toolsa-wallet
3 Сообщения 1 Posters 348 Просмотры
    • Сначала старые
    • Сначала новые
    • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано Answers
    #1

    Существует ли API, который может создать новый кошелек TON с помощью кода?

    Создание и развертывание - это два разных шага. Итак, как я могу создать много неинициализированных адресов кошелька, а затем позже развернуть и инициализировать их один за другим?


    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show


    Оригинал вопроса

    1 ответ Последний ответ
    0
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано
    #2

    В JavaScript вы можете использовать пакет [ton](https://github.com/ton - сообщество/тонна). Я адаптировал пример из [руководства по TON, подготовленного сообществом](https://ton-community.github.io/tutorials/01-wallet /). Пожалуйста, используйте на свой страх и риск.

    Что он делает, так это:

    1. Сгенерируйте несколько мнемоник 2. Найдите адреса сгенерированных мнемоник 3. Пополните адреса этих мнемоник предварительно оплаченным кошельком 4. Отправьте транзакцию с помощью этих мнемоник для автоматического развертывания контракта

      import { getHttpEndpoint } from "@orbs-network/ton-access";
      import { mnemonicToWalletKey, mnemonicNew } from "ton-crypto";
      import { TonClient, WalletContractV4, internal } from "ton";

      async function main() {
      // open wallet v4 (set your correct wallet version here)
      const mnemonic = "unfold sugar water ..."; // insert a mnemonic for a wallet that has funds
      const key = await mnemonicToWalletKey(mnemonic.split(" "));
      const fundingWallet = WalletContractV4.create({ publicKey: key.publicKey, workchain: 0 });

       for(let i = 0; i < 5; i++) {
           let m = await mnemonicNew();
           console.log(m);
           await initializeWallet(fundingWallet, m);
       }
      

      }

      async function initializeWallet(fundingWallet: WalletContractV4, mnemonic: string[]) {
      // open wallet v4 (notice the correct wallet version here)
      const key = await mnemonicToWalletKey(mnemonic);
      const generatedWallet = WalletContractV4.create({ publicKey: key.publicKey, workchain: 0 });

      // initialize ton rpc client on testnet
      const endpoint = await getHttpEndpoint({ network: "testnet" });
      const client = new TonClient({ endpoint });

      // send 0.1 TON from funding wallet to new wallet
      let walletContract = client.open(generatedWallet);
      let seqno = await walletContract.getSeqno();
      await walletContract.sendTransfer({
      secretKey: key.secretKey,
      seqno: seqno,
      messages: [
      internal({
      to: generatedWallet.address,
      value: "0.09", // 0.001 TON
      bounce: false,
      })
      ]
      });

      // send 0.9 back TON to funding wallet
      walletContract = client.open(generatedWallet);
      seqno = await walletContract.getSeqno();
      await walletContract.sendTransfer({
      secretKey: key.secretKey,
      seqno: seqno,
      messages: [
      internal({
      to: fundingWallet.address,
      value: "0.09", // 0.001 TON
      bounce: false
      })
      ]
      });

      await waitForTransaction(seqno, walletContract);
      }

      async function waitForTransaction(seqno: number, walletContract: any) {
      // wait until confirmed
      let currentSeqno = seqno;
      while (currentSeqno == seqno) {
      console.log("waiting for transaction to confirm...");
      await sleep(1500);
      currentSeqno = await walletContract.getSeqno();
      }
      console.log("transaction confirmed!");
      }

      function sleep(ms: number) {
      return new Promise(resolve => setTimeout(resolve, ms));
      }

      main();

    1 ответ Последний ответ
    0
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано
    #3

    Вы можете использовать TonWeb javascript SDK.

    const tonweb = new TonWeb();
    
    const wallet = tonweb.wallet.create({publicKey});
    
    const address = await wallet.getAddress();
    
    const nonBounceableAddress = address.toString(true, true, false);
    
    const seqno = await wallet.methods.seqno().call();
    
    await wallet.deploy(secretKey).send(); // deploy wallet to blockchain
    
    const fee = await wallet.methods.transfer({
        secretKey,
        toAddress: 'EQDjVXa_oltdBP64Nc__p397xLCvGm2IcZ1ba7anSW0NAkeP',
        amount: TonWeb.utils.toNano(0.01), // 0.01 TON
        seqno: seqno,
        payload: 'Hello',
        sendMode: 3,
    }).estimateFee();
    
    const Cell = TonWeb.boc.Cell;
    const cell = new Cell();
    cell.bits.writeUint(0, 32);
    cell.bits.writeAddress(address);
    cell.bits.writeGrams(1);
    console.log(cell.print()); // print cell data like Fift
    const bocBytes = cell.toBoc();
    
    const history = await tonweb.getTransactions(address);
    
    const balance = await tonweb.getBalance(address);
    
    tonweb.sendBoc(bocBytes);
    
    1 ответ Последний ответ
    0

  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Последние
  • Feed подписок
  • Категории
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Telegram chat
    • TON WIKI
    • TON Archive
    • TONpie Chats
    • ANP system
    • indicaton.io
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.