При розробці крипто гаманця ви зіткнетеся з рядом проблем, і не є очевидними. Не розглядатимемо зараз проблеми, пов'язані генерацією адрес, підписом транзакцій та іншими питаннями, які можуть спасти на думку в першу чергу.
Давайте зупинимося на простій і тривіальній на перший погляд задачі - одержанні списку транзакцій, пов'язаних із певною адресою. На перший погляд вже цей простенький запит не повинен викликати питань - адже блокчейн містить саме велику базу даних транзакцій, адже так?
Не зовсім. Якщо 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 - і автор будь-якої програми, навіть безкоштовної, буде змушений думати, що з цим робити. Закинути програму? Зробити його платним? Але нагадаю, криптогаманець - це сховище криптовалюти, і користувачі такої програми можуть раптово втратити доступ до своїх заощаджень. А суми можуть бути значними.
Продовжувати цей список можна довго, але висновок буде один - у багатьох випадках куди раціональніше забезпечити свій бакенд, і розгорнути свою інфраструктуру, яка дозволить отримати доступ до потрібних даних.
Що для цього потрібно, і як це реалізувати - розглянемо наступну статтю
Читайте також
Скільки можна заробити на трейдингу інвестору-початківцю. Частина 27. Трейдинг (продовження)
Ми продовжуємо серію публікацій про трейдінг, щоб на практиці розібратися, скільки може заробити інвестор-початківець, використовуючи тільки прогнози, опубліковані на нашому сайті. Щоб зрозуміти, наскільки вони корисні, ми вирішили провести експеримент і змоделюва...
Приймаємо оплату в bitcoin: Частина перша, теоретична
Інтернет повний статей про те, яке прекрасне майбутнє готує нам blockchain, як це "стильно, модно та інноваційно". Однак інформації, як практично скористатися всім цим пишнотою, вкрай мало. Спробуємо частково заповнити цю прогалину.
