Bitcoin Forum

Local => Desenvolvimento & Discussões Técnicas => Topic started by: Nixtren on January 18, 2016, 10:20:06 PM



Title: Apresentando o esboço do possível futuro projeto LazyBitcoin API
Post by: Nixtren on January 18, 2016, 10:20:06 PM
tl;dr: API para programadores preguiçosos receberem pagamentos Bitcoin facilmente.

Há alguns dias atrás quis fazer um site que lidasse com o recebimento de pagamentos Bitcoin. O problema é que não queria estar a executar o software do Bitcoin (bitcoind) no servidor, pois seria apenas um pequeno site e não teria espaço suficiente para armazenar o blockchain. Lembro-me de existir um serviço do Blockchain.info em que dava para criar endereços Bitcoin e depois todos os pagamentos para esse endereço eram redirecionados para o endereço Bitcoin principal do vendedor, mas no entanto isso já não parece existir. Ou melhor falando, existir até existe, mas agora é necessária uma conta no Blockchain.info.

É então aqui que entra o projeto LazyBitcoin API. Este seria um API muito simples, vejamos aqui um exemplo preliminar (esboço, sem mecanismos de segurança):

Endereço Bitcoin do vendedor: 15TjGHA7FA6drHDK6dcut1dsfHPh28PQWA
Montante a pagar pelo comprador: 0.01 BTC

Pedido:
Code:
POST /api/payment/new
{
  "addr": "15TjGHA7FA6drHDK6dcut1dsfHPh28PQWA",
  "payment_amount": "0.01",
  "success_notify": "http://example.com/notify.php?id="
}

Resposta do pedido POST:
Code:
{
  "id": "1",
  "payment_addr": "1Lr5bRNtNhwQuWtpAVvbXEP6ZanrUskChx",
  "payment_amount": "0.01",
}

Como podem ver, seria gerado um endereço de pagamento único para que o comprador pudesse efetuar o pagamento. Após a confirmação de pagamento o meu servidor iria notificar o site do comprador para informar que o pagamento teve sucesso, e posteriormente enviar os Bitcoins para o endereço principal do vendedor.

Seria uma solução muito fácil de implementar para pequenos sites que quisessem aceitar Bitcoin rapidamente e sem problemas. No entanto, não seria recomendada a utilização na venda de produtos de valor elevado, pois os Bitcoins teriam de passar pelo meu servidor primeiro, o que poderia constituir um risco quando lidando com valores elevados.

Em relação às taxas, seria cobrada uma taxa de 0.0005 BTC (a descontar no valor a ser redirecionado) para cobrar a taxa de mineiro e a doação para o serviço (ex.: 0.0003 BTC para os mineiros e 0.0002 BTC para o projeto).

Este é um esboço da minha ideia que surgiu pela necessidade deste serviço. Digam o que acham e se vale a pena continuar com o projeto ou não.

Estou aberto a sugestões :)


Title: Re: Apresentando o esboço do possível futuro projeto LazyBitcoin API
Post by: dive on January 19, 2016, 04:36:38 PM
Algumas sugestões:

- Não controle private keys: faça o /payment/new receber uma xpub key de HB wallet e gere como resposta um endereço derivado para ela
- Como os fundos não vão passar por você, crie um serviço pre-pago. Ex. 0.01BTC para cada 100 calls.


Title: Re: Apresentando o esboço do possível futuro projeto LazyBitcoin API
Post by: Nixtren on January 19, 2016, 05:27:17 PM
Algumas sugestões:

- Não controle private keys: faça o /payment/new receber uma xpub key de HB wallet e gere como resposta um endereço derivado para ela
- Como os fundos não vão passar por você, crie um serviço pre-pago. Ex. 0.01BTC para cada 100 calls.

Interessante, obrigado :)

Agora só tenho de pensar como gerar um endereço HD que nunca foi usado anteriormente (ou que tenha balanço 0) pelo comprador fora do API.

Exemplo:
Quote
Endereço 1 - 1Lr5bRNtNhwQuWtpAVvbXEP6ZanrUskChx
Endereço 2 - 1LDtV9NiqDJESjNDEdGBUhWdVutvpLAZXA

O comprador poderia ter gerado o endereço 1 para receber um pagamento manualmente (com recurso a uma wallet HD). Assim, o endereço 1 já não teria balanço 0, o que poderia atrapalhar o sistema do API. Talvez eu pudesse fazer a verificação do balanço antes de retornar a resposta do POST. Se tivesse saldo diferente de 0 gerava outro endereço HD.

Para os interessados, encontrei isto aqui para lidar com o BIP32/HD addresses:
https://github.com/prusnak/addrgen