Опис тега light
Я хочу використовувати API блокчейна для мого магазину, але гаманець тільки моніторинг останніх 20 згенерований адресу.
Цитата з https://blockchain.info/api/api_receive:
Як визначено в біп 44, програмним забезпеченням гаманець не буде сканувати минулі 20 невикористану адреси. Враховуючи досить запитів від даного API, що немає звірка платежів, ви можете створити адресами минулому цей горизонт, що б зробити витрачання коштів, сплачених на ці адреси цілком складно. З цієї причини, цей API повертає помилку і відмовити для створення нової адреси, якщо він виявляє, це створить розрив більше 20 невикористаних адрес. Якщо виникає ця помилка, вам знадобиться або щоб перейти на новий xPub (в межах тієї ж гаманець в порядку), або отримаєте оплата на одну з попередніх 20 створила адреси
Я погуглив про цю проблему і знайшли деякі рішення, такі як:
Рішення, які я знайшов
- Перевірити зазор з Blockchain API для checkgap і не генерувати нові адреси, поки вони не були оплачені.
- Збільшити ліміт розрив на отримання API-інтерфейс.
- Відправити гроші до останнього невикористаний адресу.
Проблеми з цими рішеннями
- Якщо у мене є 20 неоплачувану адресу і вони ніколи не були сплачені, Рішення № 1 не може вирішити проблему. це просто сказати, що у мене 20 неоплачувану адресу.
- Рішення № 2 не зможуть вирішити головну проблему. Навіть я встановити граничний розрив до 100, про те, що 101 цікаві користувачі хочуть бачити тільки сторінку оформлення замовлення і закрийте його. Я вам ще раз 100 невикористаний адресу.
- Рішення № 3-це не дуже гарне рішення для мене. Здається, що це погана практика для мене і це рішення, яке вирішується витрачати гроші.
Моє Рішення
Якщо я отримати це право, коли блокчейн генеруюча адресу, він буде їсти поки не отримає гроші. Поправте мене, якщо я помиляюся, блокчейн не віддзвонили, поки користувач не виплатити суму. так що я роблю це, щоб вирішити проблему:
- Перевірте зазор за допомогою API. Якщо зазор>19 Гото #3 ще #2.
- Створити адресою і зберігати його всередині
unpaid_address
таблиці на основі "індекс", що блокчейн повертається з адреси. встановити термін протягом 30 хвилин і перейти на #4. - Отримати перше закінчився неоплачувану адреса
unpaid_address
стіл. Якщо немає нічого, показують, вибачте, сервер зайнятий, ще Гото #4. - показати адресу користувачеві і сказати, у вас є 15 хвилин, щоб заплатити за цією адресою. (15 хвилин менше, ніж закінчиться час, щоб уникнути проблем).
- Якщо блокчейн зворотного виклику URL-адресу, і вони були сплачені до того, як час спливає, я видалити адресу
unpaid_address
ще адресу було там на наступний запит інших користувачів. Я дам Цю адресу наступним користувачам для оплати.
Питання
Це рішення дасть мені можливість ніколи не перевищуйте ліміт розрив. Але я не знаю, якщо це безпечно, щоб дати адресу користувача, і якщо він не звертав на 30 хвилин, дати іншому користувачеві.
Що ви думаєте? Це безпечно? чи є краще рішення?
Про присвоєння адреси декільком користувачам
- Перше користувачів див. На сторінці оформлення замовлення в 8:20 ранку і відправити суму на адресу. але немає підтвердження протягом 15 хвилин. підтвердження прийде в 11:00 годин.
- Другий користувач бачить на сторінці оформлення замовлення в 9:00 і направить цю суму на ту ж адресу. є підтвердження в 9:10 ранку, так що я буду повертати результат виклику, як платили.
Щодо першого підтвердження користувача на 11:00 ранку?