Skip to content

Canister-Software/x402-icp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@canister-software/x402-icp

x402 payment scheme for the Internet Computer — brings native ICP token payments (ICP, ckUSDC, ckUSDT) to the HTTP 402 standard using ICRC-2 approve/transferFrom.

Overview

x402 is an open protocol for machine-native HTTP payments. This library adds ICP support to the x402 ecosystem, letting any HTTP resource accept ICP tokens with a single line of middleware — and any client pay automatically using an internet identity.

Supported assets

Symbol Asset
ICP icp:1:ryjl3-tyaaa-aaaaa-aaaba-cai
ckUSDC icp:1:xevnm-gaaaa-aaaar-qafnq-cai
ckUSDT icp:1:cngnf-vqaaa-aaaar-qag4q-cai

icp:1 signifisy the network as

Installation

npm install @canister-software/x402-icp

Requires @x402/core >= 2.4.0 as a peer dependency.

Usage

Client — paying for a resource

import { x402Client } from '@x402/core/client'
import { wrapFetchWithPayment } from '@x402/fetch'
import { registerExactIcpScheme, createPemSigner } from '@canister-software/x402-icp/client'
import fs from 'fs'

const signer = await createPemSigner({
  pem: fs.readFileSync('identity.pem', 'utf8'),
})

const client = new x402Client()
registerExactIcpScheme(client, { signer })

const fetch402 = wrapFetchWithPayment(fetch, client)
const res = await fetch402('https://api.example.com/premium')

Server — protecting a resource

import { createIcpPaymentRequirements } from '@canister-software/x402-icp/server'

const requirements = createIcpPaymentRequirements({
  network: 'icp:1:xevnm-gaaaa-aaaar-qafnq-cai', // ckUSDC
  amount: '1000000',                              // 1 ckUSDC (6 decimals)
  payTo: 'your-principal-id',
})

Facilitator

A public facilitator for ICP is operated by Canister Software Inc at:

https://facilitator.canister.software

Full documentation: docs.canister.software

License

MIT

About

x402 library for creating server resources and clients using the Internet Computer (ICP) blockchain.

Topics

Resources

License

Stars

Watchers

Forks

Contributors