arc-devkit 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,72 @@
1
+ """Operações de carteira na Arc blockchain."""
2
+
3
+ import logging
4
+ from decimal import Decimal
5
+
6
+ from eth_account import Account
7
+ from web3 import Web3
8
+
9
+ from arc_devkit.core.connection import get_web3
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+ # USDC usa 6 casas decimais (padrão Circle)
14
+ USDC_DECIMALS = 6
15
+ USDC_MULTIPLIER = 10**USDC_DECIMALS
16
+
17
+
18
+ def create_wallet() -> dict[str, str]:
19
+ """
20
+ Cria uma nova carteira EVM aleatória.
21
+
22
+ Returns:
23
+ Dict com 'address' (checksummed) e 'private_key' (hex com prefixo 0x).
24
+
25
+ Warning:
26
+ A chave privada gerada nunca é armazenada — guarde-a imediatamente
27
+ em local seguro. Perder a chave significa perder acesso à carteira.
28
+ """
29
+ account = Account.create()
30
+ logger.info("Nova carteira criada: %s", account.address)
31
+ key_hex = account.key.hex()
32
+ return {
33
+ "address": account.address,
34
+ "private_key": key_hex if key_hex.startswith("0x") else f"0x{key_hex}",
35
+ }
36
+
37
+
38
+ def get_balance(address: str) -> dict[str, str | Decimal]:
39
+ """
40
+ Retorna o saldo nativo de um endereço Arc.
41
+
42
+ Na Arc, USDC é o token de gás. Este método retorna o saldo nativo
43
+ da rede. Para saldo do contrato USDC ERC-20, será necessário o
44
+ endereço do contrato USDC na Arc (a confirmar com a documentação oficial).
45
+
46
+ Args:
47
+ address: Endereço EVM (com ou sem checksum).
48
+
49
+ Returns:
50
+ Dict com address, balance_wei e balance_usdc (Decimal).
51
+ """
52
+ w3 = get_web3()
53
+ checksum_addr = Web3.to_checksum_address(address)
54
+
55
+ wei = w3.eth.get_balance(checksum_addr)
56
+ # Converte para valor legível (18 casas decimais para saldo nativo)
57
+ balance_human = Decimal(str(w3.from_wei(wei, "ether")))
58
+
59
+ logger.debug("Saldo de %s: %s (%d wei)", checksum_addr, balance_human, wei)
60
+
61
+ return {
62
+ "address": checksum_addr,
63
+ "balance_wei": str(wei),
64
+ "balance_usdc": balance_human,
65
+ }
66
+
67
+
68
+ def get_block_number() -> int:
69
+ """Retorna o número do bloco mais recente na Arc."""
70
+ bloco = get_web3().eth.block_number
71
+ logger.debug("Bloco atual: #%d", bloco)
72
+ return bloco
@@ -0,0 +1,5 @@
1
+ """Módulo Tx Debugger — análise de transações Arc."""
2
+
3
+ from arc_devkit.debugger.tx_analyzer import TxAnalyzer
4
+
5
+ __all__ = ["TxAnalyzer"]
@@ -0,0 +1,107 @@
1
+ """Analisador de transações Arc — combina dados RPC com análise via Claude."""
2
+
3
+ import logging
4
+ from decimal import Decimal
5
+
6
+ from arc_devkit.core.connection import get_web3
7
+
8
+ logger = logging.getLogger(__name__)
9
+
10
+ # Prompt enviado ao Claude com os dados brutos da transação
11
+ _PROMPT_ANALISE = """\
12
+ Analise os dados desta transação da Arc blockchain e responda em português brasileiro.
13
+
14
+ Dados da transação:
15
+ {dados}
16
+
17
+ Responda de forma estruturada:
18
+ 1. **O que a transação fez** — descreva em linguagem simples
19
+ 2. **Status** — sucesso ou falha, com motivo se houver erro
20
+ 3. **Custo em USDC** — gás consumido convertido para USDC
21
+ 4. **Sugestão** — se houve erro, como corrigir; se sucesso, alguma otimização possível
22
+ """
23
+
24
+
25
+ class TxAnalyzer:
26
+ """
27
+ Analisa transações Arc: busca dados via RPC e gera diagnóstico com IA.
28
+
29
+ O analisador combina eth_getTransaction + eth_getTransactionReceipt
30
+ com o Dev Copilot para produzir uma análise em linguagem natural.
31
+ """
32
+
33
+ def __init__(self) -> None:
34
+ self._w3 = get_web3()
35
+
36
+ def analyze(self, tx_hash: str) -> dict:
37
+ """
38
+ Analisa uma transação e retorna diagnóstico completo.
39
+
40
+ Args:
41
+ tx_hash: Hash da transação (formato 0x...).
42
+
43
+ Returns:
44
+ Dict com: status, resumo, custo_usdc, erro, sugestao,
45
+ e dados brutos da transação.
46
+ """
47
+ logger.info("Analisando transação: %s", tx_hash)
48
+
49
+ # --- 1. Buscar dados brutos via RPC ---
50
+ try:
51
+ tx = self._w3.eth.get_transaction(tx_hash)
52
+ receipt = self._w3.eth.get_transaction_receipt(tx_hash)
53
+ except Exception as exc:
54
+ logger.error("Erro ao buscar transação %s: %s", tx_hash, exc)
55
+ return {
56
+ "hash": tx_hash,
57
+ "status": "erro",
58
+ "resumo": f"Não foi possível buscar a transação: {exc}",
59
+ "custo_usdc": "0",
60
+ "erro": str(exc),
61
+ "sugestao": "Verifique se o hash está correto e se a RPC está acessível.",
62
+ }
63
+
64
+ # --- 2. Calcular custo em USDC ---
65
+ gas_usado = receipt.get("gasUsed", 0)
66
+ gas_price = tx.get("gasPrice", 0)
67
+ custo_wei = gas_usado * gas_price
68
+ # Converte para unidade legível (18 decimais para o token nativo)
69
+ custo_decimal = Decimal(str(self._w3.from_wei(custo_wei, "ether")))
70
+
71
+ # --- 3. Montar resumo dos dados para o prompt ---
72
+ status_str = "sucesso" if receipt.get("status") == 1 else "revertida"
73
+ dados_resumo = {
74
+ "hash": tx_hash,
75
+ "de": tx.get("from"),
76
+ "para": tx.get("to"),
77
+ "valor_wei": str(tx.get("value", 0)),
78
+ "gas_limite": tx.get("gas"),
79
+ "gas_usado": gas_usado,
80
+ "status": status_str,
81
+ "custo_estimado_usdc": str(custo_decimal),
82
+ "bloco": receipt.get("blockNumber"),
83
+ "logs_count": len(receipt.get("logs", [])),
84
+ }
85
+
86
+ logger.debug("Dados coletados: %s", dados_resumo)
87
+
88
+ # --- 4. Solicitar análise ao Dev Copilot ---
89
+ try:
90
+ from arc_devkit.copilot.agent import DevCopilot
91
+
92
+ copilot = DevCopilot()
93
+ prompt = _PROMPT_ANALISE.format(dados=dados_resumo)
94
+ resumo = copilot.ask(prompt)
95
+ except Exception as exc:
96
+ logger.warning("Análise de IA indisponível: %s", exc)
97
+ resumo = f"Status: {status_str} | Gas usado: {gas_usado} | Custo: {custo_decimal} USDC"
98
+
99
+ return {
100
+ "hash": tx_hash,
101
+ "status": status_str,
102
+ "resumo": resumo,
103
+ "custo_usdc": str(custo_decimal),
104
+ "erro": None if status_str == "sucesso" else "Transação revertida",
105
+ "sugestao": "", # incluído no resumo gerado pelo Claude
106
+ "dados_brutos": dados_resumo,
107
+ }
@@ -0,0 +1,238 @@
1
+ Metadata-Version: 2.4
2
+ Name: arc-devkit
3
+ Version: 0.2.0
4
+ Summary: Plataforma open source de ferramentas para desenvolvedores da Arc blockchain (Circle)
5
+ Author-email: Jeiel Santos <jeielsantos.ti@gmail.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/Jeielsantosdev/arc-devkit
8
+ Project-URL: Repository, https://github.com/Jeielsantosdev/arc-devkit
9
+ Project-URL: Bug Tracker, https://github.com/Jeielsantosdev/arc-devkit/issues
10
+ Keywords: arc,blockchain,circle,usdc,web3,ai,anthropic
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Software Development :: Libraries
19
+ Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ Requires-Dist: typer[all]>=0.12
23
+ Requires-Dist: rich>=13.7
24
+ Requires-Dist: fastapi>=0.115
25
+ Requires-Dist: uvicorn[standard]>=0.30
26
+ Requires-Dist: web3>=7.0
27
+ Requires-Dist: anthropic>=0.40
28
+ Requires-Dist: python-dotenv>=1.0
29
+ Requires-Dist: httpx>=0.27
30
+ Provides-Extra: dev
31
+ Requires-Dist: pytest>=8.0; extra == "dev"
32
+ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
33
+ Requires-Dist: ruff>=0.6; extra == "dev"
34
+ Requires-Dist: httpx>=0.27; extra == "dev"
35
+
36
+ # Arc DevKit
37
+
38
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
39
+ [![Licença MIT](https://img.shields.io/badge/licença-MIT-green.svg)](LICENSE)
40
+ [![Testnet](https://img.shields.io/badge/arc-testnet-orange.svg)](https://arc.io)
41
+ [![Status](https://img.shields.io/badge/status-em%20desenvolvimento-yellow.svg)]()
42
+
43
+ Uma plataforma open source de ferramentas para desenvolvedores que constroem na **Arc blockchain** — a Layer 1 da Circle com USDC como token de gás e finalidade em menos de 1 segundo.
44
+
45
+ ---
46
+
47
+ ## O que é a Arc?
48
+
49
+ A **Arc** é uma blockchain Layer 1 desenvolvida pela Circle (criadores do USDC), com foco em pagamentos programáveis e agentes econômicos autônomos. Características principais:
50
+
51
+ - **EVM-compatível** — contratos Solidity funcionam sem modificação
52
+ - **USDC como gás** — sem necessidade de ETH ou token nativo separado
53
+ - **Consenso Malachite** — finalidade em menos de 1 segundo
54
+ - **Circle Agent Stack** — infraestrutura nativa para agentes de IA econômicos
55
+ - **Testnet ativa** desde outubro de 2025; mainnet prevista para o verão de 2026
56
+
57
+ ---
58
+
59
+ ## Módulos
60
+
61
+ ### Dev Copilot
62
+ Assistente de IA para geração de código Arc. Responde a perguntas, gera contratos Solidity, scripts de deploy e interações com o ecossistema Circle.
63
+
64
+ ### Agent Starter Kit
65
+ Templates prontos para agentes econômicos autônomos: pagamento recorrente, monitoramento de carteira, arbitragem de câmbio e marketplace descentralizado.
66
+
67
+ ### Tx Debugger
68
+ Ferramenta de análise de transações Arc. Decodifica traces, identifica erros, calcula custos em USDC e sugere correções.
69
+
70
+ ---
71
+
72
+ ## Instalação
73
+
74
+ **Pré-requisitos:** Python 3.11 ou superior, pip.
75
+
76
+ ```bash
77
+ # Instalação padrão
78
+ pip install arc-devkit
79
+
80
+ # Instalação para desenvolvimento (inclui ferramentas de teste e lint)
81
+ git clone https://github.com/seu-usuario/arc-devkit.git
82
+ cd arc-devkit
83
+ pip install -e ".[dev]"
84
+ ```
85
+
86
+ ### Configurar variáveis de ambiente
87
+
88
+ ```bash
89
+ # Chave da API Anthropic (obrigatória para o Dev Copilot)
90
+ export ANTHROPIC_API_KEY="sua-chave-aqui"
91
+
92
+ # URL RPC da Arc (padrão: testnet)
93
+ export ARC_RPC_URL="https://rpc.arc.io/testnet"
94
+
95
+ # Chave privada da carteira (opcional — necessária apenas para enviar transações)
96
+ export ARC_PRIVATE_KEY="sua-chave-privada"
97
+ ```
98
+
99
+ ---
100
+
101
+ ## Uso Rápido
102
+
103
+ ### Dev Copilot — Gerar código com IA
104
+
105
+ ```python
106
+ from arc_devkit.copilot import DevCopilot
107
+
108
+ copilot = DevCopilot()
109
+
110
+ # Gerar um contrato de pagamento recorrente
111
+ resposta = copilot.perguntar(
112
+ "Como implemento pagamento recorrente em USDC na Arc usando Solidity?"
113
+ )
114
+ print(resposta)
115
+ ```
116
+
117
+ Via linha de comando:
118
+
119
+ ```bash
120
+ arc-copilot perguntar "Como fazer deploy de um contrato ERC-20 na Arc testnet?"
121
+ ```
122
+
123
+ ---
124
+
125
+ ### Agent Starter Kit — Criar agente econômico
126
+
127
+ ```python
128
+ from arc_devkit.agents import AgenteMonitoramento
129
+ from decimal import Decimal
130
+
131
+ # Monitorar uma carteira e agir ao receber USDC
132
+ agente = AgenteMonitoramento(
133
+ carteira="0xSuaCarteiraAqui",
134
+ limiar_usdc=Decimal("100.00"), # agir ao receber 100 USDC ou mais
135
+ intervalo_segundos=30,
136
+ )
137
+
138
+ agente.ao_receber(lambda evento: print(f"Recebido: {evento.valor} USDC"))
139
+ agente.iniciar()
140
+ ```
141
+
142
+ Via linha de comando:
143
+
144
+ ```bash
145
+ arc-agents iniciar monitoramento \
146
+ --carteira 0xSuaCarteiraAqui \
147
+ --limiar 100 \
148
+ --intervalo 30
149
+ ```
150
+
151
+ ---
152
+
153
+ ### Tx Debugger — Analisar transação
154
+
155
+ ```python
156
+ from arc_devkit.debugger import TxDebugger
157
+
158
+ debugger = TxDebugger()
159
+
160
+ # Analisar uma transação que falhou
161
+ analise = debugger.analisar("0xhash_da_transacao_aqui")
162
+
163
+ print(analise.status) # "revertida"
164
+ print(analise.motivo) # "ERC20: transferência excede saldo"
165
+ print(analise.custo_usdc) # "0.0012 USDC"
166
+ print(analise.sugestao) # "Verifique o saldo antes de transferir"
167
+ ```
168
+
169
+ Via linha de comando:
170
+
171
+ ```bash
172
+ arc-debug analisar 0xhash_da_transacao_aqui --formato json
173
+ ```
174
+
175
+ ---
176
+
177
+ ## Estrutura do Projeto
178
+
179
+ ```
180
+ arc_devkit/
181
+ ├── core/ # Fundação: cliente RPC, utilitários de gás em USDC
182
+ │ ├── client.py # Cliente Arc (web3.py com defaults Arc)
183
+ │ ├── gas.py # Estimativa e conversão de gás em USDC
184
+ │ └── config.py # Carregamento de configuração e variáveis de ambiente
185
+
186
+ ├── copilot/ # Módulo Dev Copilot
187
+ │ ├── ai.py # Wrapper do SDK Anthropic com streaming
188
+ │ ├── cli.py # Interface de linha de comando (Click)
189
+ │ └── prompts/ # Templates de prompt por tipo de tarefa
190
+
191
+ ├── agents/ # Módulo Agent Starter Kit
192
+ │ ├── base.py # Classe base para todos os agentes
193
+ │ ├── pagamento.py # Agente de pagamento recorrente
194
+ │ ├── monitoramento.py # Agente de monitoramento de carteira
195
+ │ ├── cambio.py # Agente de arbitragem de câmbio
196
+ │ └── marketplace.py # Agente de marketplace descentralizado
197
+
198
+ └── debugger/ # Módulo Tx Debugger
199
+ ├── debugger.py # Orquestrador principal
200
+ ├── trace.py # Decodificador de traces de transação
201
+ ├── abi.py # Resolução de ABI (cache local + Sourcify)
202
+ └── cli.py # Interface de linha de comando (Click)
203
+ ```
204
+
205
+ ---
206
+
207
+ ## Documentação
208
+
209
+ - [Começando](docs/getting-started.md) — instalação, configuração e primeiro exemplo
210
+ - [Dev Copilot](docs/modules/dev-copilot.md) — uso completo do assistente de IA
211
+ - [Agent Starter Kit](docs/modules/agent-starter-kit.md) — templates de agentes econômicos
212
+ - [Tx Debugger](docs/modules/tx-debugger.md) — análise e debugging de transações
213
+
214
+ ---
215
+
216
+ ## Contribuição
217
+
218
+ Contribuições são bem-vindas! Leia [CONTRIBUTING.md](CONTRIBUTING.md) para entender o processo.
219
+
220
+ ```bash
221
+ # Rodar os testes
222
+ pytest
223
+
224
+ # Verificar formatação e tipos
225
+ ruff check . && mypy arc_devkit/
226
+ ```
227
+
228
+ ---
229
+
230
+ ## Licença
231
+
232
+ MIT — veja [LICENSE](LICENSE) para detalhes.
233
+
234
+ ---
235
+
236
+ ## Sobre a Arc
237
+
238
+ A Arc é desenvolvida pela Circle, a empresa por trás do USDC. Para mais informações sobre a blockchain e o ecossistema de agentes econômicos, consulte a documentação oficial da Circle.
@@ -0,0 +1,31 @@
1
+ arc_devkit/__init__.py,sha256=_U6nBRL-8xVY_OTVrWnhiP6uXQJVOqav-5HmuWzNRx4,105
2
+ arc_devkit/config.py,sha256=v1Qbvt92i2grTnpfW29kpxyQL18Cd-KlMDbBs5Ov09c,2174
3
+ arc_devkit/agents/__init__.py,sha256=IMZVCD5QyeOCVc69SA-mAhJcvl5NtUf_H8NFfi9SU1A,297
4
+ arc_devkit/agents/base_agent.py,sha256=sqjJNZ4koGSAvj85YMRePUnKxI7ddo3KA_VpgmKirSk,2612
5
+ arc_devkit/agents/monitor_agent.py,sha256=orOJ5Bc5vaRpGE76hljsexNAFy8A6Qn5C9N9nIxAkT0,3416
6
+ arc_devkit/agents/payment_agent.py,sha256=gdHoecngKZX0bzrEjQCEvnH0oETXaFXcF53KnyctjGw,3411
7
+ arc_devkit/api/__init__.py,sha256=Z25C5ONPiCIoviRZYcvcAGIfkaRkI2kMiWBEuo1Lw6k,60
8
+ arc_devkit/api/main.py,sha256=zUDbJTuN6W2Uez8FpqO-5dhCZsj0VfhjbnMNOTVDxhI,1252
9
+ arc_devkit/api/routes/__init__.py,sha256=j3UP1a0EGfALvvpq-otJccTXiUT7UFLyveOw66cPDoA,31
10
+ arc_devkit/api/routes/agents.py,sha256=BAl83BgVJcZFE6Xl4-7YJld7gLYxDCB3fQOKUdXNdMI,4195
11
+ arc_devkit/api/routes/copilot.py,sha256=gCTzTlkKocCea4iPsogsN5L6xwyK66f5gygiYKCMA2I,1199
12
+ arc_devkit/api/routes/debugger.py,sha256=GEdYEefCm0ETzBbtFbtqBGARi1jYTGmLn9M2zk0zf8k,1758
13
+ arc_devkit/cli/__init__.py,sha256=HxXvqwve8YcVgcPMtyh1Eh_pEP7OhNG1xV1s4XWyIsQ,67
14
+ arc_devkit/cli/main.py,sha256=lnG6fNynMemkXglUGydPIEYOFqB7TBAm3EbRVtvvq2Q,2574
15
+ arc_devkit/cli/commands/__init__.py,sha256=9mV6f6CarhEi8Q0qIiw-JB2TU4UqVqTuvEX9ICyQ13o,34
16
+ arc_devkit/cli/commands/agent.py,sha256=Mwh99CSywr3eRFuyTHDsk6J4PAPl7OiBtWISVNfIJm8,6243
17
+ arc_devkit/cli/commands/copilot.py,sha256=bqxw6rYSeYPjUVAgsDZjVxwfI9M-gABX0UUviSxzNS4,1051
18
+ arc_devkit/cli/commands/debug.py,sha256=h9zqordjnPnZNrA1La5Cq9HACcMTMEEZY9vlgtPFJjc,3453
19
+ arc_devkit/copilot/__init__.py,sha256=ux9txnF1N7tSNaLVuGuk-7Uqkfe1LSnPwzHcFi5-HRc,151
20
+ arc_devkit/copilot/agent.py,sha256=SQ6VAj4dRF48HZLrdHvNEDqhis-XSTMMNS_bjn_PpLA,2698
21
+ arc_devkit/core/__init__.py,sha256=cyP5-3A-bOahtvgpce-NkwOD0PaP2Zx423B3iSzLpPo,67
22
+ arc_devkit/core/connection.py,sha256=h045FcmvkSVSIZoK9LTxU6IgblcXfiZuvkEhC1lS2xY,1348
23
+ arc_devkit/core/gas.py,sha256=eww3ANeFDi4vWBaTvC9yV66ZtjyQZOlMWig8G-YuLn0,1961
24
+ arc_devkit/core/wallet.py,sha256=eRkQiC9-gDIXqQ7MFwsvC7n0-_GXBJkL53aU-Pa87ZE,2100
25
+ arc_devkit/debugger/__init__.py,sha256=p9--cHKoWMjuemxzfb--PUJ7EIMyLXR8cIKb3w6rweQ,142
26
+ arc_devkit/debugger/tx_analyzer.py,sha256=PYB62AjxczK_EMWmojZK_ffEXimfL71vtdXKmxJaHuo,3899
27
+ arc_devkit-0.2.0.dist-info/METADATA,sha256=4ByhBfDaS_9oG_1sK3IW_EAGw_iJaY6dBLokYbC7jdM,7608
28
+ arc_devkit-0.2.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
29
+ arc_devkit-0.2.0.dist-info/entry_points.txt,sha256=wKF8LAEu1vWKfiujTrp7h_df1kVCsbuGl96Ql75QjfU,54
30
+ arc_devkit-0.2.0.dist-info/top_level.txt,sha256=_8As_e0w6FWAQptRM9vVTpBaTQmGKjajyiscnqRps-8,11
31
+ arc_devkit-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ arcdevkit = arc_devkit.cli.main:app
@@ -0,0 +1 @@
1
+ arc_devkit