เรียก RPC method และส่งเหตุการณ์ไปยัง URL ของคุณด้วย ERPC CLI

erpc rpc call ส่ง JSON-RPC request หนึ่งรายการจากเทอร์มินัลของคุณด้วยบัญชี ERPC ที่ลงชื่อเข้าใช้ไว้ หรือชำระเงินต่อการเรียกด้วย x402 erpc webhook จะ POST เหตุการณ์ RPC ไปยัง URL ของคุณ
หน้านี้อธิบาย ERPC CLI v0.1.0-rc.4 ซึ่งเป็นเวอร์ชัน pre-release

เรียก RPC method

ใช้บัญชี ERPC ที่ลงชื่อเข้าใช้ไว้เพื่อเรียก Solana หรือ Ethereum mainnet โดย CLI จะเลือก endpoint ที่ใช้ร่วมกันตาม method หรือคุณจะเลือกเครือข่ายเองก็ได้
sh
erpc login
erpc rpc call getSlot
erpc --json rpc call eth_getBlockByNumber '["latest", false]' --network ethereum-mainnet
erpc rpc call eth_call --params-file params.json
printf '%s' '["finalized", false]' | erpc rpc call eth_getBlockByNumber -
erpc rpc call getHealth --endpoint-url http://127.0.0.1:8899
  • พารามิเตอร์ เป็น JSON array หรือ object, ไฟล์ที่ระบุด้วย --params-file หรือ - สำหรับ standard input หากไม่ระบุ การเรียกจะส่ง []
  • เครือข่าย ได้แก่ solana-mainnet และ ethereum-mainnet (ใช้ eth-mainnet ได้ด้วย) ส่วน erpc rpc list-networks จะแสดงรายการเครือข่ายที่มี shared RPC ของ ERPC และ RPC แบบ x402
  • Endpoint ของคุณเอง: --endpoint-url จะใช้เฉพาะข้อมูลรับรองที่อยู่ใน URL นั้น โดย URL ต้องเป็น URL ที่ปลอดภัยหรือ loopback และต้องไม่มีข้อมูลผู้ใช้

การเรียกแต่ละครั้งใช้คีย์ใดของบัญชี

บัญชีหนึ่งมี RPC key ได้หลายรายการ erpc rpc call และ erpc webhook run จะลองใช้ทีละคีย์ตามลำดับ โดยเริ่มจากคีย์หลัก และเรียก getHealth หนึ่งครั้งต่อคีย์ก่อนการเรียกของคำสั่งเอง คีย์จะถูกตรวจสอบที่ shared RPC ของ Solana ไม่ว่าหลังจากนั้นจะเรียกเชนใดก็ตาม
หาก RPC ไม่ยอมรับคีย์ใดเลย และไม่สามารถสอบถาม RPC เกี่ยวกับคีย์บางคีย์ได้ คำสั่งจะทำงานต่อด้วยคีย์แรกที่สอบถามไม่ได้ และการเรียกของคำสั่งเองจะเป็นตัวบอกผล หากทุกคีย์ถูกปฏิเสธ คำสั่งจะล้มเหลวพร้อมข้อความ the shared RPC takes none of the account's API keys from this machine (<n> tried) โปรดดูเมื่อทำงานล้มเหลว

ชำระเงินต่อการเรียกด้วย x402

หากต้องการเข้าถึงแบบชำระเงินต่อการเรียกโดยไม่ต้องมีบัญชี ให้ขอใบเสนอราคา x402 โดย --quote จะแสดงใบเสนอราคาโดยไม่อ่าน wallet และไม่ชำระเงิน
หากต้องการชำระเงิน ให้รันคำสั่งโดยไม่ใส่ --quote ในเทอร์มินัล แล้ว CLI จะแสดงจำนวนเงิน ขอการยืนยัน จากนั้นจึงลงนามการชำระเงินด้วย EURC บน Base ตามใบเสนอราคา โดยใช้ wallet ที่ erpc wallet create ตั้งค่าไว้ โปรดเก็บ EURC บน Base ไว้ใน wallet นั้น (ชำระเงินจาก wallet)
sh
erpc rpc call getSlot --network solana-mainnet --x402 --quote
erpc rpc call eth_blockNumber --x402

ส่งเหตุการณ์ไปยัง URL ของคุณ

Webhook ในเครื่องจะ subscribe RPC WebSocket แล้ว POST เหตุการณ์ไปยัง URL ของคุณ ให้เริ่มตัวรับ สร้าง subscription แล้วรัน ID ที่ create ส่งคืนมา ในเทอร์มินัลหรือภายใต้ process supervisor ของคุณ
sh
erpc webhook create --name slots --network solana-mainnet \
  --url http://127.0.0.1:8080/events --method slotSubscribe
erpc webhook create --name heads --network ethereum-mainnet \
  --url http://127.0.0.1:8080/events --method eth_subscribe --params '["newHeads"]'
erpc webhook list
erpc webhook run 1
สำหรับกิจกรรมของ wallet บน Solana ให้ใช้ --template solana-wallet --wallet ADDRESS แทน --method สำหรับ log ของ contract บน Ethereum ให้ใช้ --template evm-contract-events --address CONTRACT callback URL เป็น HTTPS หรือ HTTP แบบ loopback และเครือข่ายเป็นชุดเดียวกับของ erpc rpc call

สิ่งที่ตัวรับของคุณได้รับ

  • POST แต่ละครั้งมี webhook_id, network และ notification ของ JSON-RPC ต้นฉบับ ให้ตอบกลับด้วย HTTP 2xx เพื่อรับ POST นั้น
  • การส่งเหตุการณ์เริ่มจาก subscription ที่ทำงานอยู่ในขณะนั้น เมื่อรีสตาร์ท runner จะ subscribe เหตุการณ์ใหม่
  • การตัดการเชื่อมต่อหรือ callback ที่ล้มเหลวจะทำให้ runner จบการทำงานด้วย exit status ที่ไม่ใช่ศูนย์
  • erpc webhook run รับ --once เพื่อทดสอบการส่งเพียงครั้งเดียว และ --endpoint-url เพื่อใช้ WebSocket RPC ของคุณเอง

จัดการ Webhook

คำสั่งสิ่งที่ทำ
erpc webhook listแสดงรายการ subscription ที่บันทึกไว้
erpc webhook show IDแสดง subscription หนึ่งรายการ โดยไม่แสดงข้อมูลรับรองของ callback
erpc webhook enabled-countนับ subscription ที่เปิดใช้งานอยู่บนเครื่องนี้
erpc webhook pause IDปิดการส่ง และ runner ที่กำลังทำงานอยู่จะจบการทำงาน
erpc webhook activate IDเปิดให้ run ครั้งต่อไปทำงานได้
erpc webhook delete IDลบนิยามนั้น
คำสั่งเหล่านี้ตรวจสอบและเปลี่ยนแปลงเฉพาะการกำหนดค่าในเครื่องเท่านั้น ในสคริปต์ ให้ส่ง --yes ให้กับ pause, activate และ delete