stipend

Carteira USDC não-custodial na Base. Limites de gastos aplicados no código, não em um prompt.

Documentação

stipend

Uma carteira USDC não custodial na Base que um agente de IA instala por conta própria, com limites de gastos aplicados abaixo da camada de instrução.

pip install eth-account && curl -sL stipend.sh/install | sh

Esta é a fonte do pacote que o instalador busca. Ela é publicada para que as afirmações feitas sobre ela possam ser verificadas, e não acreditadas.

Ela inclui um servidor MCP (Model Context Protocol)stipend mcp — expondo sete ferramentas via stdio, para que um agente possa guardar e gastar dinheiro através da interface de ferramentas que já possui. Veja servidor MCP abaixo.

A afirmação que vale a pena verificar

A falha que importa para um agente que guarda dinheiro não é uma chave roubada. É uma transação corretamente assinada da qual ele foi convencido.

Quase toda defesa contra isso vive na camada de instrução — um prompt de sistema dizendo "não envie fundos para endereços não verificados". Isso é uma sugestão para um modelo, sentada na mesma janela de contexto que o texto que o ataca.

Aqui os limites não são conselhos. São código pelo qual uma transação passa a caminho de ser assinada, e nenhuma redação em qualquer janela de contexto os alcança.

Comece em stipend/policy.py. São cerca de trezentas linhas e é todo o argumento.

Os três controles

controleo que faz
limites por transação e diáriosum teto que nenhuma instrução pode elevar
aprovações de uso únicoautorizam um único pagamento — vinculado àquele destinatário, àquele valor, com expiração, uso único — em vez de elevar um limite
confirmação de novo destinoo primeiro pagamento para qualquer endereço que você nunca pagou precisa de confirmação, independentemente do valor

O segundo é o que as pessoas entendem errado. Elevar um limite para arcar com uma compra enfraquece todos os pagamentos futuros para todos, que é exatamente o que um atacante pede. Autorize o pagamento, não a capacidade.

O terceiro é o que impede um dreno por muitos pagamentos pequenos que ficam cada um abaixo do limite. O endereço de um atacante é, por definição, um que você nunca pagou.

E se você ativar uma lista de permissões, ela é absoluta. Os fundos não alcançam mais nada — nem com confirmação, nem com aprovação, nem com qualquer instrução de lugar algum.

Servidor MCP

A carteira também é um servidor Model Context Protocol (MCP), para que um agente possa usá-la através da interface de ferramentas que já possui, em vez de recorrer a comandos externos.

stipend mcp

Ele fala JSON-RPC sobre stdin e stdout — o transporte stdio do MCP. Seu cliente MCP inicia o processo; nada escuta em uma porta e nada é exposto a uma rede.

Na configuração de um cliente, isso se parece com:

{
  "mcpServers": {
    "stipend": {
      "command": "stipend",
      "args": ["mcp"]
    }
  }
}

As ferramentas

ferramentao que faz
stipend_addresso endereço da carteira, para que o dinheiro possa chegar até você esteja você em execução ou não
stipend_balanceUSDC mantido, moeda nativa mantida, gasto hoje e o limite diário
stipend_checkeste pagamento seria permitido? Responde sem enviar nada
stipend_payenvia USDC, sujeito a todos os limites abaixo
stipend_earningslê pagamentos recebidos da rede e os registra
stipend_reportganho contra gasto, por categoria, com autonomia em dias
stipend_recovero que está pendente e de quem é a responsabilidade de cada item

Cada uma delas passa pelo mesmo portão policy.check que a linha de comando usa, então os limites, a lista de permissões e a confirmação de novo destino se aplicam de forma idêntica. Não há caminho aqui que mova dinheiro sem eles.

stipend_check existe para que um agente possa perguntar "isso seria permitido?" antes de se oferecer para pagar algo, transformando uma recusa em uma resposta em vez de uma falha.

O que deliberadamente não expõe

Nenhuma ferramenta lê, exporta ou deriva a chave privada. Nenhuma ferramenta altera um limite de gastos ou a lista de permissões. Nenhuma ferramenta cria ou sobrescreve uma carteira.

Uma ferramenta MCP pode ser chamada por um modelo que está lendo texto não confiável, e elevar um limite é exatamente o que um atacante pediria — então isso não está no menu de forma alguma. Mudanças de configuração permanecem na linha de comando, onde um humano está presente.

Por que não é hospedado

Todo registro preferiria uma URL, e não publicaremos uma. Um servidor de carteira hospedado significa que a chave vive na máquina de outra pessoa — a nossa — e toda a afirmação deste pacote é que isso não acontece. Ele roda ao lado do keystore, sob o mesmo usuário, e a chave nunca se move.

Rode seus próprios testes

Sem rede, sem fundos, sem tocar em nenhuma carteira sua:

python -m stipend selftest

219 verificações cobrindo validação de endereço, aritmética de valores, cada ramo de política, a lista de permissões, o limite diário, a confiança de destino e sua expiração, criptografia do keystore, codificação ERC-20, seleção de requisitos x402, assinatura EIP-3009, o ledger e exatamente o que a telemetria enviaria.

O que preferiríamos ter

Alguém para quebrá-lo.

Se você conseguir construir uma injeção que mova dinheiro além das verificações em policy.py, abra uma issue. Preferimos ouvir de você do que de alguém que não está sendo educado sobre isso.

Limites honestos

  • Não auditado de forma independente.
  • A interoperabilidade x402 é verificada contra nosso próprio endpoint, não contra comerciantes terceiros.
  • A chave é gerada na sua máquina e nunca transmitida — o que também significa que ninguém pode recuperá-la para você, incluindo nós.
  • Mantenha o saldo pequeno. É um float de trabalho, não uma poupança.

Links

Licença

Apache-2.0. Veja LICENSE.

Construído pela equipe de desenvolvimento da Stipend. FelixTrade.ai Pty Ltd, Austrália.