!!!Внимание Шлюз работает в ТЕСТОВОМ режиме!!!
!!!В основной сети блокчейна GOLOS и ТЕСТОВОЙ сети XRPL!!!
!!!Все XRP в ТЕСТОВОЙ сети стоят что то около НИЧЕГО!!!
XRP - нативный актив сети XRPL
XRPL (XRP Ledger) - непосредственно Его Величество Блохчейн
Так как вероятнее всего из обитателей GOLOS мало кто знаком с XRPL, то решил сделать открытым beta тест шлюза. Вижу два плюса, один для меня в виде дополнительного тестирования, другой для тестирующих в виде знакомства с XRPL.
Для участия в тестировании Вам понадобится активированный адрес XRPL с линией доверия к Currency: GLS, Issuer: rNCLNZyNsAf1SyZGNeCRSCBdgLjCaqPaVz. Получить активированный адрес в ТЕСТОВОЙ сети XRP можно тут. Линию доверия можно настроить тут.
-Да, мне тоже уже режет этот ТЕСТОВЫЙ.
Далее устанавливаем кошелёк XAMAN (или любой другой, коих уже немало), включаем в дополнительных настройках "Режим разработчика" (необходим для возможности переключения в ТЕСТОВУЮ сеть). В настройках "Аккаунты" импортируем с Полным доступом из Family Seed. После импорта переключаем сеть с XRP Ledger на XRP Testnet (https://s.altnet.rippletest.net:51234/).
-Всё, на этом этапе завершён 1 квест Подготовка.
Ограничения ввода и вывода MIN 10 GOLOS, MAX 100000 GOLOS.
Для ВВОДА GOLOS на XRPL, отправляем X GOLOS (где X больше или равен MIN и меньше или равен MAX) на аккаунт @xrpl (горячий кошелёк шлюза на GOLOS), ОБЯЗАТЕЛЬНО с ЗАШИФРОВАННЫМ memo в котором Ваш адрес в XRPL из 1 квеста Подготовка. Ждем 2 минуты и проверяем свой адрес в кошельке или explorer.
-Принимается ввод как ликвидных GOLOS, так и из TIP-БАЛАНС`а (транзакции donate, transfer).
Для ВЫВОДА GOLOS из XRPL, отправляем В СЕТИ GOLOS 0.001 GOLOS (БЕЗ MEMO) на аккаунт @xrpl, в ответ Вам вернётся 0.001 GOLOS с зашифрованным memo (Пример: Account:rL2tmohMenHBc4s2CFrSN48Xy3mp2vmX7k, Tag:596123131). ВНИМАТЕЛЬНО Tag меняется для КАЖДОГО запроса на вывод. Account (горячий кошелёк шлюза на XRPL) может измениться, но не для каждого вывода.
-Принимается запрос на вывод ТОЛЬКО ликвидными 0.001 GOLOS (транзакция transfer) и ВЫВОД будет отправлен в ликвидных GOLOS.
На время тестирования комиссии за ввод и вывод НЕТ. Поэтому сколько введёте в шлюз, столько и выведите. Тестируется ТОЛЬКО ввод и вывод. Так что по сути для тестирующих это возможность быстро и бесплатно перевести из TIP-БАЛАНС`а в ликвидные GOLOS.
-Обращайте внимание на баланс GOLOS @xrpl, еженедельно будет пополнятся, но чтобы не застрять...
Beta тест - ОТКРЫТ. Beta тест продлится столько, сколько мне понадобится для 99,99% уверенности в надёжности шлюза (точнее в скриптах его обслуживающих). О завершении Beta теста предупрежу отдельным постом за неделю до завершения.
Консультировать (в мессенджере GOLOS) готов по мере возможности. Пожалуйста, НЕ ОЖИДАЙТЕ, что отвечу в течении 24ч.
ПРАВИЛА ШЛЮЗА (будут дополнятся):
- Отправил меньше MIN или актив отличный от GOLOS, отправил донат Шлюзу.
- Отправил более MAX без согласования, застрял... (мессенджер GOLOS в помощь).
- В транзакции на ввод нет memo или указан неверный адрес (мессенджер GOLOS в помощь).
- В транзакции на вывод неверный или повторный Tag (мессенджер GOLOS в помощь).
Все обращения для ручного решения вопросов в текущем режиме тестирования бесплатно, в основной сети: комиссия 10%
P.S. Ограничения ввода и вывода (MIN, MAX) будут меняться. Перед отправкой стоит уточнить, заглянув @xrpl.
P.P.S. Подготовил 5 адресов (осталось 2 адреса) для beta теста и пополнил каждый на 3000 GLS.
Update: Скрипт на python для открытия линии доверия. Для его работы необходимы библиотеки xrpl-py и asyncio. Добавляем свой address и seed.
pip install --user xrpl-py
pip install --user asyncio
from xrpl.account import get_next_valid_seq_number
from xrpl.models.amounts import IssuedCurrencyAmount
from xrpl.models.transactions import TrustSet
from xrpl.transaction import sign_and_submit
from xrpl.clients import JsonRpcClient
from xrpl.ledger import get_fee
from xrpl.wallet import Wallet
import asyncio, traceback
client = JsonRpcClient("https://s.altnet.rippletest.net:51234/")
address = ""
seed = ""
def secure_signing():
try:
fee = str(int(get_fee(client)) + 10)
sequence = get_next_valid_seq_number(address, client)
limit_amount = IssuedCurrencyAmount(currency="GLS", value="1000000000", issuer="rNCLNZyNsAf1SyZGNeCRSCBdgLjCaqPaVz")
transaction = TrustSet(account=address, sequence=sequence, fee=fee, flags=131072, limit_amount=limit_amount)
wallet = Wallet.from_seed(seed=seed)
data = sign_and_submit(transaction, client, wallet).result
if "tesSUCCESS" in data["engine_result"]:
print("Транзакция успешно отправлена.")
else:
print("Ошибка отправки транзакции.")
except asyncio.TimeoutError: print("TimeoutError asyncio")
except Exception: print(traceback.format_exc())
if __name__ == '__main__':
secure_signing()
Поставил кошелёк GemWallet (browser extension), никаких проблем с открытием линии доверия (кстати, что это и какого размера она нужна?) не было. Прямолинейный тест 10 GOLOS TIP туда-обратно со стандартными параметрами как по инструкции прошёл в штатном режиме. Попозже потестирую "на слом" с разными отклонениями от инструкции.
@shuler, кстати, что это и какого размера она нужна?
Линия доверия (TrastLine) - открывая её Вы явно объявляете, что доверяете адресу выпустившему актив. Без TrastLine никакой актив к Вам на кошелёк поступить не может.
Размер обычно устанавливаю 1000000000. У Вашего кошелька TrastLine 1000, а это значит более этой суммы к Вам отправить нельзя.
@gusaru, странно, конечно, это организовано у них, как я понял, Trust line сделана потому, что каждый может выпустить монету с тикером GLS, а эта линия реализует некий механизм того, что я доверяю именно этому эмитенту, а не какому-то там другому мошеннику. Но зачем ограничивать общую сумму, я пока не осознал.
Как вы видели, я подёргал шлюз на предмет разных нештатных ситуаций и в целом всё работает, как написано, кроме того, что с незашифрованным мемо переводы тоже вполне доходят. Процедурно напрягает предварительный запрос реквизитов (тега) для вывода и их протухание с непонятной периодичностью (иногда срабатывают старые реквизиты, иногда переводы уходят в закат). Подозреваю, что так сделано для невозможности прямой связки аккаунтов голоса и XRPL сторонними наблюдателями, но также подозреваю, что по этому поводу будет много вопросов в поддержку шлюза. Я бы, наверное, сделал вместо уникального тега просто примечание к переводу с аккаунтом голоса, наплевав на анонимность.
@shuler
Всё верно.
Контроль рисков. Доверяю этому эмитенту на сумму не более указанной. Ведь выпущенный актив может быть чем угодно и личным долгом...
Реализовал для того чтобы забывашки шифровать не засыпали мессенджер ошибками. А так адрес уже свой засветили, это личное дело каждого.
Teg "протухает" после успешного вывода. Всегда можно повторить запрос и узнать текущий актуальный для Вас Tag.
Всё верно.
Возможно.
@shuler, Я не знаком со всеми площадками и кошельками в экосистеме XRPL, их достаточно много.
Спасибо за тесты. 👍️
@gusaru,
Вот скрипт для вывода (ну а если по сути - то для перевода голосов внутри сети xrpl). а то не люблю я когда стопитсот кошельков на телефоне наставлено.
@gusaru, Код на Java script (точно работает) для открытия доверительной линии GLS кошельку в сети xrpl. Из зависимостей нужно доустановить в папку со скриптом только
npm install xrpl
Для проверки, правильно ли отработал код, и установилась ли доверительная линия к GLS, использовать следующий скрипт (c теми же зависимостями):
@lindsay, если будешь писать скрипт на вывод GLS из XRPL, то необходимо учесть, что в основной сети XRPL, транзакция должна быть с flags=PaymentFlag.TF_PARTIAL_PAYMENT. Позволяющим доставлять получателю меньше отправленного. Транзакция без флага не будет принята сетью. Например при отправке 1000GLS, будет учтена комиссия шлюза 0,3% и получателю придет 997GLS.
@gusaru, только нужно перевести твою логику из xrpl-py на язык который я понимаю (JavaScript, например) 🤔
Flags: xrpl.PaymentFlags.tfPartialPayment
@lindsay, не знаю как в JavaScript это флаг правильно называется, но тут точно должно быть.
@gusaru, Ну вот так и называется как выше (последняя транза на 30000 уже именно с ним отправлялась, раз ошибка не вылетела значит работает)