• 0 Голоса
    2 Сообщения
    27 Просмотры

    Любая строка, которая была подписана секретным ключом, может быть проверена с помощью открытого ключа. Несколько примеров ниже

    Для подписи полезной нагрузки (nacl используется из ton- crypto)

    const signatureData = beginCell() .storeUint(123, 32) .storeCoins(toNano(123)) .endCell() nacl.sign(signatureData.hash(), YOUR_SECRET_KEY)

    Для проверки подписи на другой стороне (js) это может быть следующим образом:

    return nacl.sign.detached.verify(message, signature, pubkey)

    ИЛИ, если вы хотите, отметьте это в контракте

    (int public_key) = load_data() slice ref = in_msg~load_ref().begin_parse(); var signature = ref~load_bits(512); int is_valid = check_signature(slice_hash(in_msg), signature, public_key)

    Некоторые ссылки

    кошелек v4R2 с проверкой подписи во внешнем msg github * TON Connect V2 и проверка ton-proof на typescript и go github ts и github go
  • Как вы создаете кошелек TON, используя C# и .NET?

    TON Overflow на русском
    0 Голоса
    2 Сообщения
    39 Просмотры

    Проверьте this для работы с мнемотехникой/ключами и этим, чтобы развернуть кошелек и отправить транзакцию.

    Пожалуйста, обратите внимание, что кошелек развертывается первым outgoing tx (не входящим), поэтому вам нужно, чтобы на вашем аккаунте было немного TON, прежде чем вы начнете его развертывать.

    Для совершенно нового кошелька ваша последовательность действий выглядит следующим образом:

    создайте ключ, вычислите данные инициализации и преобразуйте их в адрес вашего (будущего) кошелька как в строке 49. Если вы откроете свой адрес в проводнике в этот момент - вы увидите нулевой баланс и неактивное состояние. * переведите некоторую сумму (с биржи или чего-либо еще) на ваш новый (все еще неактивный) адрес. Проводники будут показывать "in" tx и ненулевой баланс, но состояние вашего аккаунта по-прежнему будет "неактивным". * совершить исходящую транзакцию (на свой собственный или другой адрес) как в строках 58+ \ - это сделает ваш аккаунт активным.
  • 0 Голоса
    3 Сообщения
    14 Просмотры

    Поскольку клиентское программное обеспечение и рассматриваемый смарт-контракт являются двумя отдельными объектами, было бы лучше фактически проверить, что транзакция действительно была обработана, а исходящие сообщения были созданы и отправлены на обработку.

    ** Что вам следует сделать, так это:**

    1). Создайте внешнее сообщение для вашего кошелька highload со списком денежных переводов, которые необходимо выполнить. Получите хэш внешнего сообщения или его тела.

    2). Отправьте сообщение в сеть.

    3). Опросите последние транзакции из блокчейна, используя идентификатор учетной записи вашего кошелька, и сопоставьте транзакцию, используя предварительно сгенерированный хэш.

    4). Проверьте, что транзакция была выполнена успешно (код выхода = 0 || 1) и убедитесь, что исходящие сообщения содержат все требуемые передачи значений с правильными значениями.

    Это гарантирует, что переводы действительно были осуществлены. Однако, если вам нужно убедиться, что они действительно были доставлены (а не отправлены обратно), вам нужно будет запросить каждую отдельную учетную запись получателя и проверить наличие входящих транзакций, сопоставив их с использованием хэшей исходящих сообщений.

  • 0 Голоса
    3 Сообщения
    124 Просмотры

    Основное отличие заключается в том, что в версии 4 введены плагины, которыми может управлять пользователь и которые могут взаимодействовать с контрактами onchain.

    Имейте в виду, что добавление (если таковые имеются) ненадежного плагина или добавление плагина, который может обновить его код, может быть опасным.

  • 0 Голоса
    3 Сообщения
    344 Просмотры

    Я вижу токены, завернутые в Binance и Ethereum, только в качестве опций в моем ledger live. Пожалуйста, помогите.

  • 0 Голоса
    4 Сообщения
    43 Просмотры

    Good read: 'Ton-offline-transaction - offline laptop' https://github.com/ton-defi-org/ton-offline-transaction

    Чтобы облегчить инвестирование в Toncoin большему количеству китов, было бы неплохо поместить эти инструкции в скрипт (bash). Легко поддается аудиту, легко модифицируется / обновляется и облегчает хранение ваших монет со спокойной душой.

    Я мог бы помочь со сценарием. Я родом из FreeBSD, создаю защищенные серверы и рабочие столы Linux, в которых особое внимание уделяется безопасности и конфиденциальности. Занимаюсь этим уже 20 лет,

    Вчера я просмотрел различные кошельки Ton и был потрясен отсутствием подхода к безопасности в MyTonWallet. Это действительно удерживало меня от дальнейших инвестиций.

  • 0 Голоса
    2 Сообщения
    630 Просмотры

    Решено

    Существует одно решение, основанное на сообществе, под названием pytonlib, который я нашел для отправки транзакции на Python. Пожалуйста, обратите внимание, что я сам этого не пробовал, поэтому не могу добросовестно рекомендовать это, но члены сообщества, которые работают над этим, довольно активны.

    Установите с помощью:

    pip install ton

    Вот пример того, как он используется для отправки транзакции.

    from .init import client from .wallet import wallet # Viewing transactions txs = await wallet.get_transactions() in_msg = txs[0].in_msg in_msg.source.account_address # Sender in_msg.destination.account_address # Recipient int(in_msg.amount) # Amount in nanoTONs client.from_nano(int(in_msg.value)) # Amount in TONs # Sending transaction with 1 TON await wallet.transfer('EQCl1Ug9ZT9ZfGyFH9l4q-bqaUy6kyOzVPmrk7bivmVKJRRZ', client.to_nano(1), comment='test') # Send transaction with multiple outputs await wallet.transfer( ('EQCl1Ug9ZT9ZfGyFH9l4q-bqaUy6kyOzVPmrk7bivmVKJRRZ', client.to_nano(1), 'test comment'), ('EQCl1Ug9ZT9ZfGyFH9l4q-bqaUy6kyOzVPmrk7bivmVKJRRZ', client.to_nano(0.5), 'test comment 2'), ('EQCl1Ug9ZT9ZfGyFH9l4q-bqaUy6kyOzVPmrk7bivmVKJRRZ', client.to_nano(1)) ) # Sending transaction with raw BOC data from tvm_valuetypes import Cell await wallet.transfer('EQCl1Ug9ZT9ZfGyFH9l4q-bqaUy6kyOzVPmrk7bivmVKJRRZ', client.to_nano(1), data=Cell().serialize_boc())
  • 0 Голоса
    3 Сообщения
    166 Просмотры

    Вы можете использовать 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);
  • Поддерживает ли блокчейн TON HD кошельки?

    TON Overflow на русском
    0 Голоса
    2 Сообщения
    10 Просмотры

    я думаю, это то, что вам нужно https://github.com/ton-blockchain/mnemonic2key

  • 0 Голоса
    3 Сообщения
    706 Просмотры

    Развертывание кошелька - это процесс загрузки его байт-кода в блокчейн. Но все, что необходимо для успешного проведения транзакции, - это правильный адрес TON (например, при использовании приложения кошелька), даже если оно не было развернуто.

    Когда вы отправляете средства TONcoin на неинициализированный правильный адрес, происходит одно из следующих событий:

    Транзакция будет выполнена, и средства будут храниться в сети до тех пор, пока не будет открыт адрес соответствующего кошелька. После развертывания владелец кошелька получит средства на баланс. 2. Транзакция будет выполнена, а затем произойдет возврат средств - средства (за вычетом всех сборов за передачу сообщения и заправку) вернутся отправителю. Это поведение зависит от режима сообщения в макет сообщения.

    Вы можете узнать больше о развертывании смарт-контрактов TON здесь.

  • 0 Голоса
    2 Сообщения
    16 Просмотры

    Невозможно обновить версию кошелька с версии v3 до версии 4 без изменения адреса.

    По сути, кошелек является одним из смарт-контрактов TON blockchain, а адрес кошелька - это адрес смарт-контракта. Адрес вновь развернутого контракта в TON зависит от двух факторов - развернутого байт-кода и исходного хранилища контракта. Поскольку у нас будет новый байт-код (из-за разницы между контрактами v3 и v4) и новые исходные данные - мы всегда будем получать новый адрес.

    Возможно, хитрость с добавлением функции "установить код" или "белый список" в новую версию смарт-контракта кошелька позволит сохранять один адрес от версии к версии. Но на данный момент это выглядит очень сложным и небезопасным для смарт-контракта кошелька.