При розробці крипто гаманця ви зіткнетеся з рядом проблем, і не є очевидними. Не розглядатимемо зараз проблеми, пов'язані генерацією адрес, підписом транзакцій та іншими питаннями, які можуть спасти на думку в першу чергу.
Давайте зупинимося на простій і тривіальній на перший погляд задачі - одержанні списку транзакцій, пов'язаних із певною адресою. На перший погляд вже цей простенький запит не повинен викликати питань - адже блокчейн містить саме велику базу даних транзакцій, адже так?
Не зовсім. Якщо Bitcoin та його спадкоємці (Litecoin, DASH, Docgecoin, etc) дійсно є за визначенням леджером транзакцій, то ось Ethereum і похідні від нього - вже є леджерами балансів, хоча і транзакції вони зберігатимуть.
Але що цікаво, навіть для Bitcoin адреси ви не зможете штатними засобами отримати список транзакцій, пов'язаних з певною адресою повністю, тільки входи (отримані адресою транзакції). З Ethereum все ще цікавіше. Geth (go-ethereum) не дозволяє штатними засобами отримати транзакції взагалі. Якщо Вам відомий хеш транзакції – без проблем, якщо ні – то все, що ви можете дізнатися про адресу в блокчейні – це його баланс.
Звичайно це не буде великою проблемою, якщо всі адреси згенеровані вашим додатком, і ваш бакенд вже відслідковує стан mempool і сканує все нові блоки на предмет потрібних транзакцій - ви напевно будете акуратно конспектувати всі операції, складати їх у базу даних і мати до них доступ до. У випадку Etherem та інших блокчейнів, де механізм токенів реалізований подібно до стандарту ERC20 ви ще й отримаєте всі транзакції, пов'язані з викликами смарт-контрактів (наприклад відправлення або отримання ERC20 токенів)
Однак майже будь-яка хороша програма-гаманець дозволяє імпортувати. Так, можна використовувати підхід, який використовували творці Exodus - просто "згрібати" всі кошти з імпортованої адреси на ту, що вказана в додатку, на чому вважати проблему закритою.
Але як тоді працює наприклад популярний Metamask? Як йому вдається показати всі транзакції навіть для імпортованих адрес?
Власне жодної особливої магії вони не використовують. Для експерименту - спробуйте додати до MetaMask нову мережу, і уважно вивчіть поля, які потрібно заповнити.. Серед очевидних даних, таких як URL точки доступу, networkID, назви мережі та символу валюти, вам запропонують заповнити необов'язкове поле - вказати посилання на блок explorer. Вся інформація виходить через API з таких сервісів, як infura.io та alchemy.com. Для Bitcoin схожий функціонал забезпечує blockhain.com/blockhain.info, велика кількість мереж покриває сервіс blockchair. З одного боку, так. Однак не завжди таке рішення буде позбавлене недоліків, і іноді ці недоліки можуть бути критичними. Давайте пройдемося тільки найочевиднішими.
По-перше про будь-яку конфіденційність операцій можна забути відразу. Велика компанія матиме доступ до всіх даних всіх ваших клієнтів і невідомо з якою метою вона ці дані буде використовувати. Добре, якщо це буде лише нешкідлива збірка bigdata для аналізу ринку та отримання інсайдерської інформації при торгівлі. Але в перспективі такі дані можуть стати надбанням скажемо так, не зовсім чистих на руку людей, До речі, зовсім недавно Alchemy заявила, що реєструватиме IP, з яких зроблена транзакція. Вже якщо вони офіційно заявили, що збиратиму дані про місцезнаходження навіть не своїх клієнтів, а клієнтів усіх сервісів, які користуються їх API - то можна з високим ступенем припустити, що вони це вже активно роблять.
Другий аспект, не менш проблемний у перспективі - залежність від чужого сервісу ніяк не може гарантувати, що умови обслуговування не зміняться. Наприклад сервіс вирішить ввести плату за підписку на API - і автор будь-якої програми, навіть безкоштовної, буде змушений думати, що з цим робити. Закинути програму? Зробити його платним? Але нагадаю, криптогаманець - це сховище криптовалюти, і користувачі такої програми можуть раптово втратити доступ до своїх заощаджень. А суми можуть бути значними.
Продовжувати цей список можна довго, але висновок буде один - у багатьох випадках куди раціональніше забезпечити свій бакенд, і розгорнути свою інфраструктуру, яка дозволить отримати доступ до потрібних даних.
Що для цього потрібно, і як це реалізувати - розглянемо наступну статтю
Читайте також
Скільки можна заробити на трейдингу інвестору-початківцю. Частина десята. Трейдинг (продовження)
Ми продовжуємо серію публікацій про трейдінг, щоб на практиці розібратися, скільки може заробити інвестор-початківець, використовуючи тільки прогнози, опубліковані на нашому сайті. Щоб зрозуміти, наскільки вони корисні, ми вирішили провести експеримент і змоделюва...
Скільки можна заробити на трейдингу інвестору-початківцю. Частина 23. Трейдинг (продовження)
Ми продовжуємо серію публікацій про трейдінг, щоб на практиці розібратися, скільки може заробити інвестор-початківець, використовуючи тільки прогнози, опубліковані на нашому сайті. Щоб зрозуміти, наскільки вони корисні, ми вирішили провести експеримент і змоделюва...
