[Решено] Как работают платежи TON? В чем разница между ними и платежными каналами?
-
Я хочу использовать блокчейн TON (ton.org ) для получения платежей. Что это означает? Какие компоненты мне нужно реализовать?
-
При обсуждении платежей в TON вам следует знать о двух методах:
1. Платежные каналы
Этот метод полезен, когда у вас много мелких платежей между несколькими сторонами и стоимость газа (комиссия за транзакцию) является проблемой. Этот метод устранит блокчейн-сборы и сделает их постоянными и независимыми от количества платежей.
Метод работает с использованием стандартного смарт-контракта под названием PaymentChannel, экземпляр которого обе стороны развертывают. Затем обе стороны вносят в контракт некоторое количество монет TON. Затем они осуществляют транзакции вне сети и могут осуществлять тысячи платежей между собой без уплаты каких-либо комиссий. Только когда канал будет закрыт, контракт рассчитает, как внесенные деньги должны быть разделены между сторонами, и фактически отправит им деньги по цепочке.
Дополнительная информация: https://github.com/ton-blockchain/payment-channels
И вот клиентская библиотека в JS, которая облегчает процесс.
2. Простой платеж
Этот метод намного проще и его следует использовать, когда вы ожидаете единовременного платежа и газ не является проблемой. В этом случае вы просто создаете новый кошелек для получателя (например, магазин электронной коммерции) и внедряете небольшой серверный модуль, обычно на JavaScript или Python, который периодически запрашивает кошелек, чтобы узнать, были ли на него произведены какие-либо платежи.
Вы можете развернуть контракт кошелька, используя любой стандартный кошелек TON, такой как TonKeeper, а затем использовать его адрес в своем бэкэнде, чтобы периодически проверять, получены ли платежи.
Дополнительная информация: https://ton.org/docs/#/payment-processing/deposits-single-wallet
И если вы поклонник JavaScript, вот хороший пост в блоге, показывающий, как это можно легко сделать: https://society.ton.org/how-ton-wallets-work-and-how-to-доступ-к-ним-из-javascript
const tonMnemonic = require("tonweb-mnemonic"); const TonWeb = require("tonweb"); async function main() { // mnemonic to key pair const mnemonic = "rail sound peasant ... portion gossip arrow"; // 24 words const mnemonicArray = mnemonic.split(" "); const keyPair = await tonMnemonic.mnemonicToKeyPair(mnemonicArray); console.log("public key:", Buffer.from(keyPair.publicKey).toString('hex')); // list available wallet versions const tonweb = new TonWeb(new TonWeb.HttpProvider("https://toncenter.com/api/v2/jsonRPC")); console.log("wallet versions:", Object.keys(tonweb.wallet.all).toString()); // instance of wallet V4 r2 (from the list printed above) const WalletClass = tonweb.wallet.all["v4R2"]; const wallet = new WalletClass(tonweb.provider, { publicKey: keyPair.publicKey }); const address = await wallet.getAddress(); console.log("address:", address.toString(true, true, true)); const seqno = await wallet.methods.seqno().call(); console.log("seqno:", seqno); await sleep(1500); // avoid throttling by toncenter.com const balance = await tonweb.getBalance(address); console.log("balance:", TonWeb.utils.fromNano(balance)); } main(); function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }