比特币交易的相关程序

最近老板要求加入 网站可用比特币交易的功能.

之前也写过博客介绍比特币,就不多讲了.简单讲讲程序方面的问题.

利用比特币开发交易程序,主要有两种方案

一、自建比特币客户端,然后用编程语言(例如php)通过比特币客户端提供的jsonRPC 方式进行通信和控制

交易流程大概是这样:

  1. Install and secure bitcoind, or open an account with a bitcoin exchange (安装比特币客户端,创建帐户)

  2. Pull current rate from an exchange API (or multiple exchange APIs) (获取比特币当前的兑换汇率)

  3. Create a unique bitcoin address for your bitcoind or exchange account (创建唯一的收款地址)

  4. Send the address and price to the buyer  (把地址和商品价格发给客户)

  5. Store address, price, and customer information in a database   (同时把地址和价格以及客户信息存入数据库)

  6. Wait for payment  (等待客户付款)

  7.  Lookup what order is this for?   (一直循环检查该订单的信息)

  8. Verify exchange rate is still valid?  (检测汇率)

  9.  Handle customer support issues for overpayments, underpayments, duplicate payments, and late payments (跟踪客户的付款情况)

  10.  Wait for block confirmations  (等待交易区块的确认)

  11. Deliver product to customer (发送商品给客户)


二、通过第三方的API实现

交易流程大概是这样

1、创建一个比特币帐户

2、帐户信息提交给第三方API,并从第三方获取API文档

3、从第三方API处获取付款地址发送给客户

4、等待客户付款

5、第三方主动推送客户付款的结果,以及交易区块的确认数量

6、根据推送结果处理该交易


可以看到通过第三方API实现比较简单 但存在一定的风险,因为用户是先把比特币打到第三方的帐户上,然后第三方再把比特币打回你的帐户上.而且一般稳定的第三方都会收取一定的手续费.

大致的交流流程的逻辑就是这样.

说几个关键点

1、比特币交易都是直接通过地址交易的.没有所谓的交易ID这种东东.所以官方说法是推荐为每一笔交易生成独立唯一的地址.来充当交易号的作用,同时也避免交易被追踪

2、每一笔比特币交易都会同步到整个网络中.为了避免欺诈,最好等到一定的确认数(所谓确认数就是有多少客户端确认了该笔交易)之后再进行发货.官方推荐是至少4-6个确认之后.

关于比特币的交易模型估计还有很多人不清楚.简单描述一下.

每个比特币客户端都是通过一个钱包文件来识别客户信息.它是唯一的.里面会存储你的收款和付款信息.

比特币的每一笔交易都会实时同步到整个网络中,并通过P2P的方式被所有联网的比特币客户端下载.

举个例子: A 现在有 100比特币   B 现在有50 比特币

A 现在交易给 B 50比特币 

这条交易数据会发送到网路中,所有联网的比特币客户端都会接受到这条交易记录.

那么很容易得出 A的比特币还剩 100- 50 = 50比特币

B的比特币 为 50 + 50 =100比特币

然后这时A 伪造数据, 发送交易信息 交易给B 100比特币.这条交易数据同样会发送到网络中.

这时其他的客户端会根据历史交易记录得出 A 其实并没有100比特币.那么此时接收到这笔交易的客户端并不会承认这笔交易.该交易将无法获得确认数.

那么此时A的依然只有50比特币是得到承认的.

所以B 接受比特币的时候必须要等待足够多的确认数之后才能确认这笔交易是真实的.从而避免欺诈.

(比特币的客户端会自动下载从第一个比特币诞生之初的每一笔交易记录,目前大概有10G的数据包,我下载的就这么多.所以每个人的比特币钱包有多少钱其实是可以根据每一笔交易记录得出来的.好处是很难进行欺诈,除非你黑掉足够多的比特币客户端.坏处是随着交易数的增多.要下载的数据包也会越来越多.)

你可能感兴趣的:(比特币交易的相关程序)