Моніторинг депозитів та виплат USDT / USDC
Моніторинг підтримуваних переказів USDT і USDC для депозитів, сповіщень продавців та виплат; саме лише сповіщення не встановлює остаточний розрахунок.
Для розробників та AI Agent. Почніть з API key та власного HTTPS-приймача; фільтруйте контракти токенів і суми у вашому застосунку.
Базовий моніторинг переказів доступнийФільтрація сум і токенів виконується у вашому приймачі. Серверні умови, кілька етапів підтвердження та IM-сповіщення буде додано незабаром.
Перед початком
Розробники та AI Agent використовують однаковий процес налаштування. Надійно встановіть BLOCKVECTRA_API_KEY і встановіть curl та jq. Виберіть CHAIN із покриття завдань нижче; перевірте контракт токена в цій мережі, отримувача та цілу суму в найменших одиницях. Для Push розгорніть власний HTTPS-приймач на порту 443 і перевірте список автентифікованих мереж, діапазон підтверджень і статус halted перед створенням підписки.
Дивіться посібник із програмної реєстрації →Перевірка біржових депозитів
Опитуйте логи ERC-20 Transfer для вашої адреси депозиту. Встановіть TOKEN_CONTRACT та RECIPIENT із довіреної конфігурації платежів; встановіть FROM_BLOCK та TO_BLOCK у шістнадцяткових висотах у межах покриття вузла та опублікованого ліміту діапазону блоків. Просувайте постійний курсор лише після обробки кожного діапазону.
Підтримувані мережі
set -euo pipefail
: "${BLOCKVECTRA_API_KEY:?}" "${CHAIN:?}" "${TOKEN_CONTRACT:?}" "${RECIPIENT:?}"
: "${FROM_BLOCK:?}" "${TO_BLOCK:?}"
TOPIC_TO="0x000000000000000000000000${RECIPIENT#0x}"
jq -n --arg token "$TOKEN_CONTRACT" --arg to "$TOPIC_TO" \
--arg from "$FROM_BLOCK" --arg end "$TO_BLOCK" \
'{jsonrpc:"2.0",id:1,method:"eth_getLogs",params:[{address:$token,
fromBlock:$from,toBlock:$end,topics:[
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",null,$to]}]}' |
curl --fail-with-body -sS "https://api.blockvectra.com/v1/$CHAIN" \
-H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' --data-binary @-Результат для перевірки
Зіставте контракт, отримувача та цілу суму; перевірте receipt і власну політику підтверджень перед зарахуванням. Дедуплікуйте за мережею, transactionHash і logIndex, зберігаючи blockHash для узгодження реорганізацій.
Читати повний посібникОтримання сповіщень про платежі продавцям
Встановіть RECIPIENT та RECEIVER_URL, потім створіть базову підписку на адресу зі стандартними підтвердженнями мережі. Надійно збережіть отриманий secret. Зачекайте applied_version >= change_version і зафіксуйте applied_from_block перед очікуванням відповідної активності.
Підтримувані мережі
- Arbitrum One — Доступно для виконання
- Base — Доступно для виконання
- BNB Smart Chain — Доступно для виконання
- Ethereum — Доступно для виконання
- Ethereum Sepolia — Доступно для виконання
- HyperEVM — Доступно для виконання
- Polygon — Доступно для виконання
- Robinhood Chain — Доступно для виконання
- Robinhood Chain Testnet — Доступно для виконання
Виберіть CHAIN для цього прикладу з доступних для виконання мереж нижче
set -euo pipefail
umask 077
: "${BLOCKVECTRA_API_KEY:?}" "${CHAIN:?}" "${RECIPIENT:?}" "${RECEIVER_URL:?}"
PUSH_URL='https://api.blockvectra.com/v1/push'
curl --fail-with-body -sS "$PUSH_URL/chains" \
-H "x-api-key: $BLOCKVECTRA_API_KEY" > push-chains.json
jq -e --arg chain "$CHAIN" 'any(.chains[]; .chain == $chain and .halted == false)' push-chains.json
jq -n --arg url "$RECEIVER_URL" --arg chain "$CHAIN" \
'{url: $url, chains: {($chain): {}}}' > create.json
curl --fail-with-body -sS "$PUSH_URL/subscriptions" \
-H "x-api-key: $BLOCKVECTRA_API_KEY" \
-H 'Content-Type: application/json' -d @create.json > subscription.json
SUBSCRIPTION_ID=$(jq -er '.id' subscription.json)
jq -n --arg recipient "$RECIPIENT" '{addresses: [$recipient]}' > addresses.json
curl --fail-with-body -sS "$PUSH_URL/subscriptions/$SUBSCRIPTION_ID/addresses/add" \
-H "x-api-key: $BLOCKVECTRA_API_KEY" \
-H 'Content-Type: application/json' -d @addresses.json > address-change.json
curl --fail-with-body -sS "$PUSH_URL/subscriptions/$SUBSCRIPTION_ID" \
-H "x-api-key: $BLOCKVECTRA_API_KEY"Результат для перевірки
Перша відповідна подія зараховується лише після перевірки підпису вихідного тіла запиту (raw-body), перевірки токена/отримувача/цілої суми, стійкої дедуплікації за id події та відповіді 2xx приймача. HTTP 201 підписки не є доставленим сповіщенням про платіж.
Читати повний посібникВідстеження виплат
Встановіть TX_HASH для транзакції, уже надісланої вашою платіжною системою. Прочитайте її receipt через JSON-RPC; порівняйте receipt.blockNumber з поточною вершиною та узгодьте очікувані логи переказу токенів.
Підтримувані мережі
set -euo pipefail
: "${BLOCKVECTRA_API_KEY:?}" "${CHAIN:?}" "${TX_HASH:?}"
jq -n --arg hash "$TX_HASH" \
'{jsonrpc:"2.0",id:1,method:"eth_getTransactionReceipt",params:[$hash]}' |
curl --fail-with-body -sS "https://api.blockvectra.com/v1/$CHAIN" \
-H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' --data-binary @-Результат для перевірки
receipt зі значенням null або транзакція pending не є отриманим платежем. Перевірте receipt.status, контракт токена, отримувача, цілу суму та політику підтверджень; успішний receipt сам по собі не підтверджує очікуваний переказ.
Читати повний посібникМежі підтверджень та покриття
N підтверджень не є фінальністю мережі. Базовий Push не має серверних фільтрів сум або токенів; фільтруйте у вашому приймачі. Внутрішні перекази нативної монети в контрактах не покриваються. Pending не є отриманим платежем. Узгоджуйте замінені блоки під час chain.reorg та ідемпотентно обробляйте канонічні заміни. Деякі мережі виключають системні транзакції з покриття; дивіться сторінку відповідної мережі.
Відновлення прогалин та узгодження історії
Replay надсилає повторно лише збережені збіги; він не відновлює історію до активації підписки або адреси. Використовуйте обмежене опитування через RPC для попередніх інтервалів або прогалин. Ведіть курсор для кожної мережі та узгоджуйте реорганізації за повним посібником.
Підтримувані мережі
За потреби надсилайте запити до індексованих переказів ERC-20 у мережах нижче. Встановіть FROM_BLOCK та TO_BLOCK у десяткових висотах у межах індексованого покриття; перевіряйте актуальність і покриття та переходьте за next_cursor, доки поле не зникне. Перевіряйте кожен контракт токена, отримувача та цілу суму; індексовані дані не є доказом фінальності.
Підтримувані мережі
: "${BLOCKVECTRA_API_KEY:?}" "${CHAIN:?}" "${RECIPIENT:?}" "${FROM_BLOCK:?}" "${TO_BLOCK:?}"
curl --fail-with-body -sS --get \
"https://api.blockvectra.com/v1/data/$CHAIN/addresses/$RECIPIENT/transfers" \
-H "x-api-key: $BLOCKVECTRA_API_KEY" \
--data-urlencode 'standard=erc20' --data-urlencode 'direction=in' \
--data-urlencode "from_block=$FROM_BLOCK" --data-urlencode "to_block=$TO_BLOCK"Тарифи та правила білінгу
Вага методу eth_getLogs: 30 CU ($3.00 за 1,000,000 запитів).
Запити, відхилені сервісом (наприклад, перевищення діапазону блоків або обмеження частоти), не тарифікуються. Дивіться посібник із правил білінгу або повну таблицю тарифів.
Webhook push
Ваги CU з GET /v1/plans. Автоматичні повторні спроби безкоштовні.
Безкоштовні адреси на обліковий запис за добу UTC: 1000
Безкоштовний ліміт адрес на обліковий запис за добу UTC ділиться між усіма групами підписок незалежно від плану. Для кожної групи враховується максимальна кількість адрес під час перебування онлайн протягом цієї доби; ліміт виділяється в порядку зростання ID груп. Одна й та сама адреса у двох групах враховується двічі; кількість мереж у групі не примножує кількість її адрес. Група, яка була офлайн або видалена протягом усієї доби, не додає нічого до підрахунку. Для кожної групи залишок після вирахування її частки ліміту множиться на вагу CU `push.address_day` у `method_weights`. Поточний налаштований ліміт походить із тієї ж тарифної політики, що й плата за адресо-день; це не обмеження місткості облікового запису і не окремий ліміт для кожної групи.
| Метод | Розрахункова одиниця | CU |
|---|---|---|
| push.address_day | Оплачуваний адресо-день | 33 |
| push.history | Успішний запит історії | 25 |
| push.log | Доставлена подія даних | 150 |
| push.native_transfer | Доставлена подія даних | 150 |
| push.token_transfer | Доставлена подія даних | 150 |