Bir temsilcinin bana mesaj göndermek için para ödeyip ödeyemeyeceğini görmek istedim.

İletişim formunu dolduran bir insan değil. CAPTCHA değil. Cüzdanı, bir görevi ve bana ulaşma isteği olan bir temsilci.

Ben özel biri değilim. Ben sadece bir bilgisayarın bir şeyler söylemek isteyebileceği sıradan biriyim.

İletişim sayfasında belirtildiği gibi, bir insan istediği zaman LinkedIn veya X üzerinden bana ulaşabilir.

Bu siteye bir iletişim noktası koyarsam, izlemem gereken yeni bir gelen kutusu olur. Spam, botlar, soğuk iletişim. CAPTCHA insanları engeller. Ödeme herkesi engeller, ancak kredi kartları da insanları engeller. Temsilcilerin çalışma şekline özgü bir şeye ihtiyacım vardı.

x402 bu engeldir. İnternetin ödemeler için ayırdığı ancak hiçbir zaman tanımlamadığı durum kodu olan HTTP 402 Payment Required üzerine kurulu bir protokoldür. x402 bunu tanımlar. Bir sunucu, bir fiyat ve bir stablecoin adresi ile 402 yanıtını döndürür. Temsilci yanıtı okur, cüzdanıyla bir izin belgesi imzalar, ödeme başlığıyla yeniden dener ve sunucu zincir üzerinde ödemeyi gerçekleştirir. Ödeme sayfası yok. Form yok. Hesap yok. Sadece bir durum kodu ve bir imza.

Bu, bir kişi için korkunç bir deneyimdir. Bir aracı için ise harika bir deneyimdir.

Nasıl çalışır

Uç nokta, bu sitede /contact/send adresinde bulunur. Bir aracı, bunu OpenAPI spesifikasyonu veya agents.md aracılığıyla keşfeder. İlk POST'ta ödeme başlığı yoktur. Sunucu, fiyatı, kabul edilen varlıkları ve hangi alanların dahil edileceğini açıklayan bir şemayı içeren bir 402 yanıtı döndürür. Aracının, yanıtın kendisinden başka bir belgeye ihtiyacı yoktur.

sequenceDiagram
    participant Human as Human
    participant Agent as Agent
    participant Site as benmilne.com
    participant Facilitator as x402 Facilitator
    participant Chain as Blockchain
    participant Admin as Admin Panel

    Human-->>Agent: "Contact Ben Milne about X"
    Agent-->>Site: POST /contact/send (no payment)
    Site-->>Agent: 402 + price + assets + field schema
    Agent-->>Agent: Sign stablecoin permit
    Agent-->>Site: POST + PAYMENT-SIGNATURE + message body
    Site-->>Facilitator: Verify signature
    Facilitator-->>Site: Valid
    Site-->>Facilitator: Settle
    Facilitator->>Chain: On-chain transfer (SBC)
    Chain-->>Facilitator: Tx hash
    Facilitator-->>Site: Settlement confirmed
    Site-->>Site: Store message in D1
    Site-->>Agent: 200 + receipt with tx hash
    Admin-->>Admin: Message appears with block explorer link

    rect rgba(200, 120, 50, 0.08)
    Note over Human,Admin: Future: callback URL enables two-way communication
    end

The Stable Coin Company, temsilcinin imzalı iznini doğrulayan ve zincir üzerinde transferi gerçekleştiren, her iki taraf adına gaz ücretini ödeyen bir aracı işletir. Temsilcinin ETH veya SOL tutması gerekmez. Temsilci, ödeme yaptığı tek bir varlığı tutar.

Başlangıç

Bunun için x402-payment-path adlı küçük bir kütüphane yazdım. Bu kütüphane, 402 sorgusunu, imza doğrulamasını, ödemeyi ve makbuz oluşturmayı yönetir.

Altta yatan protokol, Coinbase'in açık kaynak kodlu hale getirdiği ve şu anda x402 Vakfı'nın bir Linux Vakfı projesi olarak sürdürdüğü, x402 (stablecoin) tabanlı ödeme standardıdır. The Stable Coin Company, Base, Solana ve Radius'tUSDC'i ve SBC'yi destekleyen kolaylaştırıcıyı işletmektedir. En iyi bildiğim varlık olduğu için SBC'yi kullandım.

Bunu bir mesaj yerine bir ürün için uygulamak isterseniz, ödeme sonrasında ne olacağını değiştirirsiniz. Bir mesaj depolamak yerine, bir indirme URL'si oluşturur, bir webhook tetikler veya bir sevkiyat başlatırsınız. Kütüphane, eylemin ne olduğu ile ilgilenmez. Eylemi ödemenin arkasına yerleştirir.

Kararlar

Uç nokta hem USDC hem de SBC'yi kabul eder. SBC'yi kullandım çünkü en iyi bildiğim varlık bu ve her iki zincirde de uçtan uca doğrulamak istediğim varlık bu.

İki cüzdanım var. EVM cüzdanım Base'de SBC alıyor. Ayrı bir Solana cüzdanı ise Solana'da SBC alıyor. Aynı uç nokta, aynı fiyat, farklı ödeme kanalları.

Mesajlar bir D1 tablosuna düşüyor. Bunları yönetici panelinden okuyorum. E-posta yönlendirmesi yok, izlenecek gelen kutusu yok. Bir mesaj, mesaj olmaktan başka hiçbir şey yapamamalı.

Fiyat 0,10 dolar. Spam'i ekonomik olmayan hale getirecek kadar yüksek. Meşru bir aracı için önemsiz olacak kadar düşük.

Çalışıyor

İşte 13 Haziran 2026 tarihli gerçek işlemler. Her mesajın maliyeti 0,10 $ SBC idi. Ödeme zincir üzerinde yapıldı.

GönderenTutarİşlem
cursor-agent/0.46.2Temel0,10 $ SBC0x5265bdd1…963cd · BaseScan
deal-flow-scout@vcscan.aiTemel0,10 $ SBC0xe0aa91c4…4313d · BaseScan
claude-research-agent/1.2Temel0,10 $ SBC0xb0c96326…4dd05 · BaseScan
e2e-test-agentTemel0,10 $ SBC0x0fca4265…c1b08 · BaseScan
e2e-test-agentSolana0,10 $ SBC2typCyWo…hsYc · Solscan
Admin panel showing x402 agent messages with sender, message body, network, and transaction hash links to BaseScan and Solscan

Bu benim yönetici panelim. Yedi mesaj var. Base ve Solana. Her biri görünmeden önce zincir üzerinde onaylandı.

Bana mesaj gönderme

Bir ajan oluşturuyorsanız, uç nokta POST benmilne.com /contact/send şeklindedir. Bu, OpenAPI spesifikasyonunda ve agents.md dosyasında belgelenmiştir.

Ödeme başlığı olmadan POST yapın, sunucu ihtiyacınız olan her şeyi içeren bir 402 yanıtı döndürür. x402 istemci kütüphanesi, buradan itibaren imzalamayı ve yeniden denemeyi yönetir. Fiyat 0,10 $'dır. Base ve Solana'da SBC ve USDC. Geri arama URL'si eklerseniz, gelecekte o URL'de yanıt verebileceğim.

Öğrendiklerim

402 yanıtı, makine tarafından okunabilir bir faturadır. Aracının kullanıcı arayüzüne ihtiyacı yoktur. Bir fiyat, bir varlık adresi ve bir ağa ihtiyacı vardır. İmzalıyor, ödüyor, yeniden deniyor.

Kendilerini anahtarsız olarak tanıtan topluluk kolaylaştırıcıları aracılığıyla USDC desteğini eklemeyi denedim. Hiçbiri izinsiz çalışmadı. Biri adres kaydı gerektiriyordu. Bir diğerinde sürüm uyumsuzluğu vardı. The Stable Coin Company aracılığıyla SBC, hiçbir kurulum gerektirmeden çalışan tek kolaylaştırıcıydı. Anahtar yok, hesap yok, kayıt yok. Ajanların, bir insanın önceden bir şey yapılandırmasına gerek kalmadan ödeme yapabilmesini istiyorsanız bu önemlidir.

Beni şaşırtan bir başka şey de şuydu: MetaMask ve Phantom, ben defalarca onayladıktan sonra bile SBC'yi cüzdanımda gizlemeye devam ediyordu. Tokeni ekler, işlemi onaylar, bakiyemi kontrol ederdim ve varlık yine kaybolurdu. Bu, testler sırasında defalarca yaşandı. Her iki ekibe de büyük saygı duyuyorum, ancak kendi cihazımdaki cüzdanıma, düzenlemeye tabi bir ihraççıdan kendi varlığımı kullanmak istediğimi defalarca söylemek zorunda kalmak saçma geldi. İnternet çok büyük. Cüzdanlar, kullanıcılarının daha önce yaptığı seçimlere güvenmelidir.

Bunun için kullandığım kod açık kaynaklıdır ve MetaMask veya Phantom'un yaptıklarınızı etkilemek istemediğini varsayarsak, bu kodla istediğiniz her şeyi yapmakta özgürsünüz.