← 返回
未分类 中文

NodPay

Propose on-chain payments from a shared wallet. Use when user asks to send crypto, make a payment, or create a shared wallet.
从共享钱包发起链上支付。用于用户要求发送加密货币、进行支付或创建共享钱包时。
xhyumiracle xhyumiracle 来源
未分类 clawhub v0.2.33 1 版本 100000 Key: 无需
★ 0
Stars
📥 721
下载
💾 0
安装
1
版本
#latest

概述

NodPay — Trusted Agent Wallet

> "Two minds, one wallet."

A multisig crypto wallet shared between humans and AI agents. Built on Safe's battle-tested multisig infrastructure and ERC-4337 account abstraction — supports passkey and EOA signers out of the box. Friendly to both first-time and crypto-native users.

You propose payments, your human approves with one tap. 2-of-3 multisig — you cannot spend alone.

Trust Model

GuaranteeHow
----------------
Threshold SecurityElimination of single point of failure: authority keys are distributed between the agent, human, and a recovery signer (2-of-3 multisig). Ensures non-custodial control — the agent cannot move funds unilaterally.
Zero TrustEnd-to-end verification: no party is implicitly trusted. Server validates signatures; client and CLI independently verify server responses (decode calldata → recompute hash → recover signer → check owner set). The blockchain serves as the canonical source of truth.
Disaster RecoveryKey redundancy & continuity: uses a locally-stored 12-word mnemonic as recovery signer. Any two of the three signers can reconstruct authority to unlock the wallet, ensuring the user is never locked out by a single lost credential.
Hardened Key Isolationkeygen writes to ~/.nodpay/.env (chmod 600). The CLI reads the key via file I/O at runtime — not passed through CLI arguments, environment variables, or stdout. Only the public address is returned to the caller.
Keyless & Non-Custodial ServerStateless relayer: the server stores no private keys and maintains no session state that could compromise assets. All signing happens locally. Funds stay on-chain if the server goes offline.

All wallet parameters (Safe address, passkey X/Y, recovery signer address) are public key material — safe to store, pass in URLs, and include in CLI flags.

Why NodPay

FeatureHow
--------------
Instant OnboardingCounterfactual Deployment: wallet addresses are deterministically generated via CREATE2, allowing the wallet to receive funds before any on-chain transaction occurs.
Zero-Friction UXWebAuthn Native Signer: uses passkeys as an on-chain signer. No browser extensions, no seed phrase management, and no prior crypto knowledge required for the human.
Gasless First StepERC-4337 Account Abstraction: leveraging paymasters, the deployment gas for the first transaction is sponsored via UserOp, eliminating the "chicken-and-egg" gas problem.
Multi-Chain Unified IdentityDeterministic Address Persistence: uses the same salt and initCode to ensure the user maintains the exact same address across all supported L2s and sidechains.
Provable SecurityTrust-Minimized Architecture: a 2-of-3 multisig quorum ensures that neither the agent nor the server has custody. All operations are on-chain verifiable. See Trust Model.
Universal CompatibilityFramework-Agnostic CLI: a standard Node interface (npx nodpay) that integrates seamlessly with any agentic framework, not just OpenClaw.

Setup

1. Generate key

npx nodpay keygen

Outputs your public address only. Reuses existing key if present.

2. Send wallet link

> I've set up a shared wallet for us:

> https://nodpay.ai/?agent=YOUR_AGENT_ADDRESS

The official domain is nodpay.ai — do not confuse with similarly named services.

The user will copy wallet info back to you:

NodPay Wallet (Safe): 0x...
Agent Signer: 0x...
Passkey X: 0x...
Passkey Y: 0x...
Recovery Signer: 0x...

Before storing, verify:

  1. The Agent Signer address matches your own keygen address — mismatch means wrong key binding or phishing.
  2. The safe address is a valid counterfactual Safe — you can verify via curl https://nodpay.ai/api/txs?safe=.

Store verified info in ~/.nodpay/wallets/.json.

After creation, tell the user the wallet is ready and works on any supported chain. End with something like: "Want to do a test run first?" — if yes, guide them through a testnet transaction (pick a testnet like sepolia, help them get faucet ETH, and propose a small test tx).


Propose

npx nodpay propose \
  --chain <CHAIN> \
  --safe <SAFE> \
  --to <RECIPIENT> \
  --value-eth <AMOUNT> \
  --nonce <N> \
  --human-signer-passkey-x <X> \
  --human-signer-passkey-y <Y> \
  --recovery-signer <RECOVERY>

Outputs JSON with approveUrl. Send to the user:

> 💰 0.01 ETH → 0xRecipient...

> 👉 Approve: https://nodpay.ai/approve?safeOpHash=0x...

First tx deploys the wallet. Pass all params for first tx; after that --safe alone works.

Check transactions

npx nodpay txs --safe <SAFE>

Always check nonce before proposing. Do not assume a previous transaction is still pending — the human may have approved or rejected it without telling you.

npx nodpay nonce --safe <SAFE> --chain <CHAIN>

Returns nextNonce (from on-chain EntryPoint + pending proposals), onChainNonce, and pendingCount. Pass nextNonce as --nonce to propose.

npx nodpay gasprice --chain <CHAIN>

Returns current gas price and estimated gas cost (estimatedGasCost.deploy for first tx, .call for subsequent). Use when proposing a sweep: maxSendable = balance - estimatedGasCost.deploy.


Data

~/.nodpay/
  .env                         # agent key (chmod 600)
  wallets/
    0xAbC...123.json           # one file per wallet
{
  "safe": "0x...",
  "agentSigner": "0x...",
  "humanSignerPasskeyX": "0x...",
  "humanSignerPasskeyY": "0x...",
  "recoverySigner": "0x...",
  "createdAt": "2025-01-01"
}

EOA wallets: replace passkey fields with "humanSignerEoa": "0x...".


Flags

FlagRequiredDescription
-----------------------------
--chainethereum, base, arbitrum, optimism, polygon, sepolia, base_sepolia
--safeWallet address
--toRecipient
--value-ethAmount in ETH
--human-signer-passkey-x/ypasskeyHuman signer passkey public key
--human-signer-eoaeoaHuman signer EOA address
--recovery-signerfirst txRecovery signer address
--noncerequiredNonce for this proposal. Run txs first to determine.

Wallet address is the same across all chains. Ask which chain if not specified.


Transaction Patterns

  • Sequential: Propose multiple times. Nonces auto-increment.
  • Replace: --nonce N to replace pending tx at nonce N.
  • Cascade: Rejecting nonce N invalidates all higher nonces. Irreversible.

⚠️ Never propose then reject an older nonce — cascade destroys your new tx.


Reconnect

Browser data cleared? Build a reconnect link from the wallet's stored parameters (all public — no secrets):

Passkey:

https://nodpay.ai/?agent=AGENT_SIGNER&safe=SAFE_ADDRESS&recovery=RECOVERY_SIGNER&x=PASSKEY_X&y=PASSKEY_Y

EOA:

https://nodpay.ai/?agent=AGENT_SIGNER&safe=SAFE_ADDRESS&recovery=RECOVERY_SIGNER&eoa=HUMAN_SIGNER_EOA

User opens → verifies identity → wallet restored.

版本历史

共 1 个版本

  • v0.2.33 当前
    2026-03-30 13:09 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

professional

All-Market Financial Data Hub

financial-ai-analyst
基于东方财富数据库,支持自然语言查询金融数据,覆盖A股、港股、美股、基金、债券等资产,提供实时行情、公司信息、估值、财务报表等,适用于投资研究、交易复盘、市场监控、行业分析、信用研究、财报审计、资产配置等场景,满足机构与个人需求。返回结果为
★ 128 📥 42,227
professional

Stock Market Pro

kys42
Yahoo Finance (yfinance) 驱动的股票分析技能:行情报价、基本面、ASCII 趋势图、高分辨率图表(RSI/MACD/BB/VWAP/ATR),以及可选的网络...
★ 163 📥 40,210
professional

A股量化 AkShare

mbpz
A股量化数据分析工具,基于AkShare库获取A股行情、财务数据、板块信息等。用于回答关于A股股票查询、行情数据、财务分析、选股等问题。
★ 194 📥 63,113