Skip to content

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

APIProtocoloCaso de UsoPorta
JSON-RPCHTTP POSTGerenciamento de nó, operações de carteira16180
API RESTHTTP GETDados da blockchain, transações16180
WebSocketWSNotificações em tempo real16181
ZeroMQZMQStreaming de eventosConfigurá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.1

Teste 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/chaininfo

Autenticaçã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/

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

  1. Nunca exponha o RPC à internet pública
  2. Use credenciais fortes e aleatórias
  3. Restrinja acesso IP com rpcallowip
  4. Considere SSL/TLS para acesso remoto via proxy reverso

Próximos Passos

Lançado sob a Licença MIT.