तुमच्या AI एजंटमध्ये पैसे कसे जोडावे.
@blockchain0x/node (किंवा Python क्लायंट) कडून createClient सह एक एजंट तयार करा, payments.create सह USDC पेमेंट पाठवा, आणि webhooks.verify सह स्वाक्षरी केलेल्या वेबहुकची पुष्टी करा. खर्च नियंत्रण डॅशबोर्डमध्ये सेट केले जातात आणि API वर वाचन-फक्त असतात. एजंट कधीही थेट खाजगी कींना स्पर्श करत नाही. साइन-अपपासून तुमच्या पहिल्या USDC पेमेंटपर्यंत दहा मिनिटांपेक्षा कमी, TypeScript किंवा Python मध्ये.
तुम्ही सुरू करण्यापूर्वी.
- A Blockchain0x account (मोफत साइनअप).
- डॅशबोर्डवरून एक API की (या मार्गदर्शकासाठी
sk_test_की वापरा; आपण नंतरsk_live_वर स्विच कराल). - तुमच्या एजंट रनटाइममध्ये Node.js 20+ किंवा Python 3.11+.
- कुठल्याही फ्रेमवर्कवर तयार केलेला एक एजंट - LangChain, CrewAI, AutoGen, LlamaIndex, OpenAI Agents SDK, MCP, किंवा साधा SDK कोड. सूचना फ्रेमवर्क-निष्पक्ष आहेत.
- वेबहुक प्राप्त करण्यासाठी सार्वजनिक इंटरनेटवरून पोहोचणारा HTTPS एंडपॉइंट (विकासासाठी ngrok किंवा एक डिप्लॉय पूर्वावलोकन चांगले आहे).
एजंट प्रोफाइल तयार करा.
एजंट प्रोफाइल प्रत्येक पेमेंटच्या मागे असलेली पत्ता ओळख आहे जी तुमचा एजंट पाठवतो किंवा प्राप्त करतो. यात वॉलेटचा पत्ता, सार्वजनिक पृष्ठ, प्रमाणीकरण बॅज, आणि (नंतर) खर्च धोरण समाविष्ट आहे. प्रत्येक तार्किक एजंटसाठी एक तयार करा.
import { createClient } from "@blockchain0x/node";
const client = createClient({ apiKey: process.env.BLOCKCHAIN0X_API_KEY! }); // sk_test_ / sk_live_
const agent = await client.agents.create({ name: "research-bot" });
console.log(agent.id); // "agt_..."
// Public page: https://wallet.blockchain0x.com/a/{slug}from blockchain0x import Client
client = Client() # reads BLOCKCHAIN0X_API_KEY from the environment
agent = client.agents.create(body={"name": "research-bot"})
print(agent["id"]) # "agt_..."
# Public page: https://wallet.blockchain0x.com/a/{slug}After this call, the agent has a public page at https://wallet.blockchain0x.com/a/<slug> that any counterparty (human or agent) can hover for verification info. See the agent payment identity glossary entry for what that page exposes.
पेमेंट पाठवा.
payments.create sends USDC from the agent wallet. amountWei is base units (USDC has 6 decimals), so 0.01 USDC is the string "10000". The SDK auto-stamps an Idempotency-Key, and the call can return 503 until the chain adapter is wired for your network. To RECEIVE instead, settle an invoice you created in the dashboard with paymentRequests.settle - see the payment API page.
// Send a USDC payment from the agent wallet. amountWei is base units
// (USDC has 6 decimals): "10000" is 0.01 USDC. payments.create auto-stamps an
// Idempotency-Key and can return 503 until the chain adapter is wired.
const tx = await client.payments.create({
agentId: agent.id,
to: "0xRecipient",
amountWei: "10000",
});
console.log(tx); // the submitted transfer# amountWei is USDC base units (6 decimals): "10000" is 0.01 USDC.
tx = client.payments.create(body={
"agentId": agent["id"],
"to": "0xRecipient",
"amountWei": "10000",
})
print(tx) # the submitted transferवेबहुक हाताळा.
Payment settle झाली हे समजण्यासाठी webhooks हाच मार्ग आहे. Node मध्ये @blockchain0x/node मधील webhooks.verify HMAC check करते आणि discriminated union परत करते; इतर भाषांमध्ये raw body वर तोच HMAC मोजा. Event type नुसार branch करा (inbound साठी payment.received), पटकन 2xx response द्या, आणि जड काम 2xx नंतर queue करा, म्हणजे delivery timeout होणार नाही.
import express from "express";
import { webhooks } from "@blockchain0x/node";
const app = express();
// Capture the RAW body. The HMAC is over the exact bytes on the wire.
app.use(express.raw({ type: "application/json" }));
app.post("/webhooks/payment", (req, res) => {
const result = webhooks.verify({
headers: req.headers,
rawBody: req.body, // Buffer, raw bytes
secret: process.env.BLOCKCHAIN0X_WEBHOOK_SECRET!,
});
if (!result.ok) return res.status(400).json({ code: result.code });
if (result.eventType === "payment.received") {
// USDC landed - deliver the work, fulfil the order, etc.
void deliver(result.eventId);
}
res.status(200).send("ok");
});import hmac, hashlib, os, time
from flask import Flask, request, abort
app = Flask(__name__)
SECRET = os.environ["BLOCKCHAIN0X_WEBHOOK_SECRET"].encode()
@app.post("/webhooks/payment")
def webhook():
raw = request.get_data() # RAW bytes - do not parse first
sig = request.headers.get("X-Blockchain0x-Signature", "")
ts = request.headers.get("X-Blockchain0x-Timestamp", "")
parts = dict(p.split("=", 1) for p in sig.split(",") if "=" in p)
t, v1 = parts.get("t", ts), parts.get("v1", sig)
want = hmac.new(SECRET, t.encode() + b"." + raw, hashlib.sha256).hexdigest()
if not hmac.compare_digest(want, v1) or abs(time.time() - int(t)) > 300:
abort(401)
if request.headers.get("X-Blockchain0x-Event-Type") == "payment.received":
deliver(request.get_json()) # USDC landed
return ("ok", 200)डॅशबोर्डमध्ये खर्च नियंत्रण सेट करा.
जर तुमचा एजंट फक्त प्राप्त करतो, तर तुम्ही हे वगळू शकता. जर तो देखील पैसे देत असेल, तर खर्चाची परवानगी सेट करा - एक कालावधीसाठी भत्ता आणि प्रत्येक व्यवहाराची मर्यादा - डॅशबोर्डमध्ये. प्रत्येक पेमेंटवर बॅकएंडद्वारे लागू केले जाते, त्यामुळे हे एजंट-साइड नियम कधीही करू शकत नाहीत. परवानगी बदलणारा कोणताही API किंवा SDK कॉल नाही (एजंटची स्वतःची की तिची मर्यादा वाढवू शकत नाही); API वाचनासाठीच आहे, त्यामुळे तुमचा कोड वर्तमान मूल्ये मिळवू शकतो जे दर्शवण्यासाठी किंवा योजना करण्यासाठी.
curl https://api.blockchain0x.com/v1/agents/agt_123/spend-permissions \
-H "Authorization: Bearer $BLOCKCHAIN0X_API_KEY"{
"allowance_wei": "5000000",
"per_tx_wei": "1000000",
"period_seconds": 86400,
"revoked_at": null
}Base Sepolia वर संपूर्ण प्रवाहाची चाचणी करा.
खोलवर sk_live_ कींवर फिरवण्यापूर्वी, sk_test_ सह संपूर्ण मार्ग अंत-ते-अंत चालवा. एक टेस्ट की सर्व काही Base Sepolia वर ठेवते, जिथे तुम्ही सार्वजनिक नळातून वॉलेटला निधी देता आणि प्रतिसादाचे आकार लाइव्हशी जुळतात. की प्रीफिक्स नेटवर्क निवडतो, त्यामुळे एक टेस्ट की मुख्यनेट फंड हलवू शकत नाही.
तीन परिस्थितींचा व्यायाम करा: एक आनंददायी मार्गाचा पेमेंट जो payment.received चालवतो, एक चुकलेली डिलिव्हरी (वेबहुकला मृत URL वर निर्देशित करा, नंतर transactions.get सह व्यवहार मिळवून समेट करा), आणि एक वेबहुक पुनर्प्रयत्न (पहिल्यांदा 500 परत करा, दुसऱ्यांदा 200, आणि तुमचा हँडलर आयडेम्पोटंट आहे याची पुष्टी करा). जेव्हा तीनही चाचणीवर पास होतात, तेव्हा की बदलून पाठवा.
पाच चुका ज्यामुळे टीमला एक आठवडा खर्च करावा लागतो.
वेबहुक स्वाक्षरी पडताळणी वगळणे
जर तुम्ही /webhooks/payment वर कोणतीही POST अधिकृत म्हणून स्वीकारली, तर एक हल्लेखोर खोटी पेमेंट इव्हेंट तयार करू शकतो आणि तुमच्या एजंटला मोफत काम वितरित करण्यासाठी फसवू शकतो. नेहमी वेबहुक गुप्ततेसह HMAC-प्रमाणित करा, एक स्थिर-वेळ तुलना वापरून. पहिला समजूतदारपणा बहुतेक वेळा गहाळ असलेल्या प्रमाणीकरणामुळे असतो.
एक स्वतंत्र पुष्टीकरण इव्हेंट गृहीत धरून
शिप केलेले इव्हेंट्स आहेत payment.received, payment.sent, wallet.deployed, आणि webhook.test - कोणतीही वेगळी पुष्टीकरण इव्हेंट नाही. हस्तांतरण ब्लॉकमध्ये असताना payment.received कार्यान्वित होते. बहुतेक कामासाठी, ते तुमच्यासाठी वितरित करण्याचे सिग्नल आहे. काही महाग किंवा अपरिवर्तनीय गोष्टीसाठी, transactions.get सह व्यवहार पोल करा आणि कार्य करण्यापूर्वी तुमचा स्वतःचा पुष्टीकरण थRESHOLD लागू करा; अस्तित्वात नसलेल्या इव्हेंटची वाट पाहू नका.
वेबहुक हँडलर्सवर कोणतीही आयडेम्पोटेन्सी नाही
Webhooks नॉन-2xx प्रतिसादांवर पुन्हा प्रयत्न करतात, आणि त्याच इव्हेंट लोड अंतर्गत अनेक वेळा येईल. तुमचा हँडलर आयडेम्पोटेंट असावा लागतो: तुम्ही आधीच प्रक्रिया केलेल्या इव्हेंट आयडींचा एक छोटा टेबल ठेवा आणि डुप्लिकेट्स वगळा. अन्यथा एक तात्पुरता ब्लिप त्याच कामाला दोन वेळा वितरित करेल आणि तुम्हाला डबल-फुलफिलमेंट्स डिबग करण्यासाठी तास लागतील.
चाचणी आणि लाइव्ह API कीज मिश्रित करणे
चाचणी की (sk_test_) सॅंडबॉक्सवर हिट करतात आणि बेस सेपोलीयाचा वापर करतात; लाइव्ह की (sk_live_) उत्पादनावर हिट करतात आणि बेस मुख्य नेटवर्कचा वापर करतात. वातावरण कॉन्फिगमध्ये त्यांना एकत्र करणे 'डेव्ह मध्ये कार्य करते, उत्पादनात अपयशी' तिकिटांचा मुख्य कारण आहे. जर आपले रनटाइम वातावरण आणि की प्रीफिक्स जुळत नसतील तर प्रारंभावर कठोर अपयश.
गहाळ वेबहुकला अयशस्वी भरणा म्हणून मानणे
अयशस्वी इव्हेंट नाही, आणि एक वेबहुक चुकला जाऊ शकतो (तुमचा एंडपॉइंट बंद होता, एक डिलिव्हरी गहाळ झाली). एजंटला 'फंडसाठी वाट पाहत आहे' लूपमध्ये अडकवू नका. समेट करा: वास्तविक स्थिती जाणून घेण्यासाठी transactions.get सह व्यवहार मिळवा, आणि कोणत्याही वाट पाहणाऱ्या प्रवाहावर टाइमआउट ठेवा जेणेकरून एक गहाळ केलेले भरणे धरलेले संसाधने मुक्त करते, कायमचे अडकण्याऐवजी.
एकदा तुम्हाला तुमचे पहिले पेमेंट मिळाले की.
Basic payments चालू झाल्यावर सर्वाधिक फायदा देणारे पुढचे टप्पे म्हणजे spend controls (जेणेकरून agent बजेट नियंत्रणाबाहेर जाणार नाही), webhook robustness (जेणेकरून load खाली payments शांतपणे हरवणार नाहीत), आणि identity verification (जेणेकरून counterparties agent च्या public page वर विश्वास ठेवतील).
प्रॉम्प्ट इंजेक्शन सहन करणारे एजंट खर्च नियंत्रण सेट करा
डेव्हलपर्स सर्वात जास्त विचारतात त्या वेबहुक पॅटर्न
GitHub आणि डोमेन पडताळणी बॅज मिळवा
पूर्ण API संदर्भ docs.blockchain0x.com येथे आहे. त्याच API साठी उत्पादन पृष्ठ: पेमेंट API.