Урок по x402: Оставете AI агента си сам да зарежда AIHubMix с USDC

AIHubMix7 мин четене
Урок по x402: Оставете AI агента си сам да зарежда AIHubMix с USDC

AIHubMix вече приема зареждания с USDC. Вашият AI агент може да добави кредит към собствения си акаунт с USDC от портфейла си: не трябва да отваряте уеб страница и никой не трябва да натиска бутон.

С x402 зареждането може да бъде само $1. Агентът зарежда кредит постепенно, така че не е нужно да поддържате голям баланс предварително.

Процесът е в две стъпки: вземете токен, портфейл и малко USDC в уеб и в приложение, след което изпълнете нашия готов скрипт за зареждане с една команда. Около 20 секунди след плащането кредитът се появява във вашия акаунт.

Ако ви помогне, можете да следвате това 30-секундно видео:

Най-лесният начин: ако използвате AI инструмент, който може да изпълнява терминални команди, като Claude Code, Cursor или Codex, завършете стъпка 1, след което му изпратете линка към тази публикация и кажете „настрой това вместо мен“. Той ще следва „Инструкциите за AI асистенти“ в края на публикацията. Токена и частния ключ попълвате сами, веднъж, без да ги изпращате на AI.

Преди да започнете

  • Сумите са само цели долари, по подразбиране от $1 до $10 за едно зареждане
  • Всеки акаунт може да създава до 3 поръчки на ден (UTC)
  • Поддържа се само USDC в Base mainnet, а тестова мрежа няма, затова започнете с $1
  • Този канал е създаден за програми; човек не може да плаща в браузъра. За ръчни зареждания продължете да използвате Alipay или Stripe

Стъпка 1: Вземете токен, портфейл и USDC

Всичко в тази стъпка се случва в уеб или в приложение за телефон.

1. Вземете системния си токен за достъп

Влезте в aihubmix.com, отворете личните си настройки и генерирайте системен токен за достъп (низ от 32 символа).

Имайте предвид, че това не е API ключът, който започва с sk-. Двата не са взаимозаменяеми.

2. Създайте портфейл за плащания

В MetaMask или подобно приложение за портфейл създайте нов акаунт, предназначен само за плащанията на агента. Не използвайте основния си портфейл. След това:

  • Копирайте адреса на акаунта (започва с 0x); на него ще изпратите USDC в следващата стъпка
  • Експортирайте частния ключ от данните на акаунта и го съхранявайте в мениджър на пароли. Всеки, който има частния ключ, може да движи парите в портфейла

3. Купете USDC и го изпратете към този портфейл

MetaMask е портфейл: вие държите частния ключ, а скриптът го нуждае, за да подпише. Coinbase е борса, на която купувате криптовалута. Средствата в борсов акаунт не идват с частен ключ, затова скриптът не може да ги използва. Затова първо купувате на борсата, а после изпращате USDC към портфейла от предишната стъпка.

Като пример използваме борсата Coinbase (не Coinbase Wallet):

  1. Купете USDC в Coinbase
  2. Изпратете USDC на копирания адрес и изберете мрежата Base
  3. Изпратете малко повече от сумата, която планирате да заредите, например 1,5 до 2 USDC за зареждане от $1

Изчакайте малко, след което отворете https://basescan.org/address/your-wallet-address. Когато видите баланс в USDC, значи средствата са пристигнали. Работят и други борси, които поддържат теглене на USDC в Base; вижте документацията на Base за още варианти.

Портфейлът не се нуждае от ETH: FluxA плаща мрежовата такса за плащането.

Стъпка 2: Изпълнете скрипта за зареждане

Няма нищо за сваляне и файл за създаване: uv взема скрипта от уеб и го изпълнява. Отворете Terminal (PowerShell на Windows) и копирайте и поставете командите по-долу.

1. Инсталирайте uv (еднократно)

uv е Python инструмент, който подготвя всичко, нужно на скрипта, за да работи.

macOS / Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows (PowerShell):

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Когато приключи, затворете терминала и го отворете отново.

2. Проверете настройката (нищо не харчи)

uv run https://raw.githubusercontent.com/zch456/public_resource/main/aihubmix-x402-topup/topup.py check

При първото изпълнение скриптът пита за системния ви токен за достъп (System access token) и частния ключ на портфейла (Wallet private key). Това, което въвеждате, не се показва на екрана; поставете го и натиснете Enter. След това пита дали да ги запази (Save to ...? [Y/n]). Натиснете Enter, за да ги запазите, и няма да ги въвеждате отново. Първото изпълнение отнема малко време, докато uv подготви всичко.

Когато видите това, настройката е готова:

Wallet: 0x... (USDC balance 2.0)
Access token and private key are fine. Ready to top up.

3. Заредете

uv run https://raw.githubusercontent.com/zch456/public_resource/main/aihubmix-x402-topup/topup.py 1

Цифрата 1 в края е сумата в долари. Ако всичко мине добре, ще видите:

Wallet: 0x... (USDC balance 2.0)
tradeNo: pl_XXXXXXXX
txHash: 0x...
result: credited

result: credited означава, че кредитът е пристигнал. Влезте в aihubmix.com и ще видите как балансът ви се увеличава; $1 добавя 500 000 квота.

Ако последният ред показва нещо друго:

  • failed: поръчката е затворена или е изтекла. Изпълнете отново, ако е нужно; това използва друга от днешните поръчки.
  • pending: кредитът не е потвърден в рамките на 10 минути. Това не е неуспех, а кредитът ще пристигне по-късно сам. Не изпълнявайте отново.

Отстраняване на проблеми

What you see Какво да направите
Missing access token or private key... Отворете конфигурационния файл, посочен в съобщението, попълнете токена и частния ключ, запазете и изпълнете отново
Invalid private key... Проверете дали сте копирали целия частен ключ, поправете конфигурационния файл и изпълнете отново
USDC balance is below... Изпратете USDC на показания адрес и се уверете, че сте избрали мрежата Base
command not found: uv Затворете и отворете отново терминала; ако не помогне, инсталирайте uv отново
Usage: topup.py AMOUNT... Сумата трябва да е цял брой долари, например 1, а не 1.5
Error: Unauthorized... Токенът е грешен или е изтекъл, или е използван API ключът sk-. Въведете системния си токен за достъп в конфигурационния файл
Error: Account suspended. Акаунтът е спрян; свържете се с поддръжката
Error: Stablecoin top-up is not available on this site Каналът временно не е достъпен; свържете се с нас
Error: Invalid amount... Сумата е над лимита за едно зареждане
Error: Daily stablecoin top-up limit reached... Използвали сте днешните 3 поръчки; опитайте отново след полунощ UTC
Error: Failed to create payment link... Временен проблем; просто изпълнете отново. Не се брои към днешните поръчки
Error: 402 challenge check failed... Заявката за плащане не съвпада с очакваното, затова скриптът отказа да плати; свържете се с нас

Ако след отпечатването на tradeNo се появи грешка при изтичане на времето или мрежова грешка, парите може вече да са платени. Не изпълнявайте отново веднага. Проверете баланса след няколко минути; ако нищо не е пристигнало, свържете се с нас и посочете tradeNo.

Токенът и частният ключ се запазват в ~/.aihubmix-topup.env на вашия компютър (в потребителската ви папка на Windows). На macOS и Linux само вашият акаунт може да го чете. За да промените токена или частния ключ, редактирайте този файл.

Включване в агента ви

  • След като настройката е запазена, агентът ви може да зарежда кредит, като изпълни uv run https://raw.githubusercontent.com/zch456/public_resource/main/aihubmix-x402-topup/topup.py 1 винаги, когато има нужда от кредит, без някой да е до него
  • Разрешени са само 3 поръчки на ден, затова ограничете колко често агентът зарежда и никога не повтаряйте създаването на поръчка в цикъл
  • Запазете tradeNo и txHash от изхода в база данни или лог за сверяване
  • За дългосрочна употреба изтеглете скрипта и фиксирайте версия преди изпълнение; можете първо да прочетете изходния код
  • Ако $10 за зареждане или 3 на ден не са достатъчни, свържете се с нас, за да увеличим лимитите

Инструкции за AI асистенти

Ако сте AI асистент, който помага на потребител да настрои зареждания на AIHubMix с USDC, следвайте тези стъпки по ред:

  1. Уверете се, че потребителят е завършил стъпка 1: има системен токен за достъп, както и портфейл с USDC в Base mainnet и неговия частен ключ. Ако не е, първо го преведете през стъпка 1.
  2. Изпълнете uv --version, за да проверите дали uv е инсталиран. Ако не е, инсталирайте го с командите от стъпка 2.
  3. Изпълнете uv run https://raw.githubusercontent.com/zch456/public_resource/main/aihubmix-x402-topup/topup.py check.
  4. Ако се съобщи за липсващ токен или частен ключ (Missing access token or private key), скриптът е създал конфигурационния файл ~/.aihubmix-topup.env. Помолете потребителя да го отвори в текстов редактор и да го попълни сам (на macOS изпълнете open -e ~/.aihubmix-topup.env; на Windows изпълнете notepad $HOME\.aihubmix-topup.env). Не четете този файл, не поставяйте токена или частния ключ в никоя команда и не молете потребителя да ви ги изпрати.
  5. Когато потребителят го попълни, изпълнете check отново, докато видите Access token and private key are fine. Ready to top up. Ако има грешка, отстранете я с таблицата за отстраняване на проблеми по-горе.
  6. Зареждането харчи реални пари. Потвърдете сумата с потребителя, преди да изпълните uv run https://raw.githubusercontent.com/zch456/public_resource/main/aihubmix-x402-topup/topup.py <amount>.

Под капака: какво прави скриптът

Скриптът извършва пет действия по ред:

  1. Проверява баланса: създаването на поръчка изразходва една от днешните поръчки, затова първо проверява дали частният ключ е валиден и дали има достатъчно USDC.
  2. Създава поръчка: извиква POST /api/pay/fluxa/crt и получава линк за плащане и номер на поръчката, tradeNo. Токенът се поставя в заглавката Authorization без промяна, без Bearer. Бизнес грешките също се връщат като HTTP 200, затова проверява полето success в отговора.
  3. Проверява заявката за плащане: GET заявка към линка за плащане връща HTTP 402 с изискванията за плащане. Преди подписване проверява четири неща: scheme е exact, network е eip155:8453, asset е договорът за USDC в Base mainnet и maxAmountRequired е равно на сумата × 1 000 000. Ако някое от тях не съвпада, спира.
  4. Подписва и плаща: подписва с частния ключ разрешение за прехвърляне на USDC, поставя го в заглавката X-PAYMENT и изпраща GET заявката отново към линка за плащане. Отговор 200 или 202 означава, че плащането е изпратено; txHash в отговора е разписката във веригата за това плащане. Нито една от заявките не носи токена на AIHubMix.
  5. Чака кредита: извиква GET /api/pay/fluxa/qry?trade_no=... на всеки 8 секунди, докато статусът стане TRADE_SUCCESS. Сървърът се обновява само на всеки 5 секунди, така че по-честото проверяване не помага.

Всеки линк за плащане е валиден и 30 минути и може да бъде платен само веднъж.

Реализация на друг език

Отговорът 402 от линка за плащане изглежда така:

{
  "x402Version": 1,
  "accepts": [{
    "scheme": "exact",
    "network": "eip155:8453",
    "maxAmountRequired": "1000000",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "payTo": "0x....",
    "maxTimeoutSeconds": 600,
    "extra": {"name": "USD Coin", "version": "2"}
  }]
}

Подписът използва формата EIP-712 върху структурата TransferWithAuthorization от EIP-3009:

Field Стойност
from Адресът на вашия портфейл
to payTo от отговора 402
value maxAmountRequired от отговора 402
validAfter Текущото време минус 60 секунди
validBefore Текущото време плюс max(maxTimeoutSeconds, 600) секунди
nonce 32 случайни байта, нови при всяко изпращане

Домейн за подписване: name = USD Coin, version = 2 (използвайте стойностите от extra в отговора 402, ако има такива), chainId = 8453, verifyingContract = 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.

Стойността на заглавката X-PAYMENT е base64 кодиране на този JSON:

{
  "x402Version": 1,
  "scheme": "exact",
  "network": "eip155:8453",
  "payload": {
    "signature": "0x...",
    "authorization": {
      "from": "0x...", "to": "0x...", "value": "1000000",
      "validAfter": "...", "validBefore": "...", "nonce": "0x..."
    }
  }
}

Източници