Visão Geral da API
A Cloud Service fornece múltiplas APIs para interagir com a blockchain, construir aplicações e integrar com serviços.
APIs Disponíveis
| API | Protocolo | Caso de Uso | Porta |
|---|---|---|---|
| JSON-RPC | HTTP POST | Gerenciamento de nó, operações de carteira | 16180 |
| API REST | HTTP GET | Dados da blockchain, transações | 16180 |
| WebSocket | WS | Notificações em tempo real | 16181 |
| ZeroMQ | ZMQ | Streaming de eventos | Configurável |
Início Rápido
Habilitar APIs
Adicione ao seu cs.conf:
ini
# Habilitar JSON-RPC
server=1
rpcuser=seu_usuario
rpcpassword=sua_senha
rpcport=16180
rpcallowip=127.0.0.1
# Habilitar API REST
rest=1
# Habilitar WebSocket
wsport=16181
wsallowip=127.0.0.1Teste Rápido
bash
# Testar JSON-RPC
curl -s --data-binary '{"jsonrpc":"1.0","id":"test","method":"getblockchaininfo","params":[]}' \
-H 'content-type: text/plain;' \
http://seu_usuario:sua_senha@127.0.0.1:16180/
# Testar API REST
curl http://127.0.0.1:16180/rest/chaininfoAutenticação
JSON-RPC
Usa autenticação HTTP básica:
bash
# Formato
curl -u "usuario:senha" http://127.0.0.1:16180/
# Ou na URL
curl http://usuario:senha@127.0.0.1:16180/Autenticação por Cookie
A Cloud Service cria automaticamente um arquivo cookie:
bash
# Localização do cookie
cat ~/.cs/.cookie
# Conteúdo: __cookie__:senha_aleatória
# Usar cookie
curl --cookie ~/.cs/.cookie http://127.0.0.1:16180/Bibliotecas e SDKs
Python
python
from bitcoinrpc.authproxy import AuthServiceProxy
rpc = AuthServiceProxy("http://usuario:senha@127.0.0.1:16180/")
info = rpc.getblockchaininfo()
print(info['blocks'])JavaScript/Node.js
javascript
const bitcoin = require('bitcoin');
const client = new bitcoin.Client({
host: '127.0.0.1',
port: 16180,
user: 'usuario',
pass: 'senha'
});
client.getBlockchainInfo((err, info) => {
console.log(info.blocks);
});Go
go
package main
import (
"github.com/btcsuite/btcd/rpcclient"
"fmt"
)
func main() {
connCfg := &rpcclient.ConnConfig{
Host: "127.0.0.1:16180",
User: "usuario",
Pass: "senha",
HTTPPostMode: true,
DisableTLS: true,
}
client, _ := rpcclient.New(connCfg, nil)
defer client.Shutdown()
info, _ := client.GetBlockChainInfo()
fmt.Printf("Blocos: %d\n", info.Blocks)
}Limites e Boas Práticas
Limites de Taxa
- Sem limite oficial de taxa para uso local
- Para APIs públicas, implemente limitação adequada
- Use conexões persistentes quando possível
Segurança
- Nunca exponha o RPC à internet pública
- Use credenciais fortes e aleatórias
- Restrinja acesso IP com
rpcallowip - Considere SSL/TLS para acesso remoto via proxy reverso
Próximos Passos
- Comandos RPC — Referência completa de comandos
- API REST — Endpoints HTTP
- WebSockets — Notificações em tempo real