文档章节

比特币交易的相关程序

酒逍遥
 酒逍遥
发布于 2013/11/12 15:11
字数 1189
阅读 165
收藏 3

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

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

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

一、自建比特币客户端,然后用编程语言(例如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的数据包,我下载的就这么多.所以每个人的比特币钱包有多少钱其实是可以根据每一笔交易记录得出来的.好处是很难进行欺诈,除非你黑掉足够多的比特币客户端.坏处是随着交易数的增多.要下载的数据包也会越来越多.)

© 著作权归作者所有

共有 人打赏支持
酒逍遥

酒逍遥

粉丝 48
博文 40
码字总数 35454
作品 0
武汉
高级程序员
私信 提问
比特币中国第三方支付通道关闭 价格暴跌20%

继央行等五部委发布《关于防范比特币风险的通知》禁止金融机构提供比特币交易服务后,央行昨日再度约谈支付宝等第三方支付公司,要求不得给比特币、莱特币等交易网站提供支付与清算服务。比特...

比特币
2013/12/17
3
0
从大起到大落 各国的虚拟货币市场有何转变?

  【IT168 评论】从没想过比特币会在2017年如此疯狂的上涨,也从没想过暴涨之后所面临的又是如此重度的暴跌。这种“过山车”式的大起到大落足以让一部分人赚的盆丰钵满,也有人为此而倾家荡...

it168网站
02/12
0
0
中国公民在海外网站购买比特币是否违法?

本文共2258字,预计阅读时间45秒 我国不承认比特币等虚拟货币是货币,但不是否定其存在的合法性。 什么是比特币,早在2013年,央行、工信部、银监会五部门发布了《关于防范比特币风险的通知》...

秒针小姐
07/17
0
0
BTC上涨是因它而起吗? | 比特币ETF

昨天路可对这次BTC上涨背后的诸多原因做了解释。但是,后台有币友提出少了一个原因:比特币ETF。 对于比特币ETF,我想许多币友应该还是很模糊的。所以,这篇文章主要向币友讲解一下有关比特币...

路可比特
08/06
0
0
谁在监管加密货币?各国数字货币政策情况概览

大数据文摘作品 编译:白丁、 笪洁琼 、小鱼 当前各国对加密数字货币的监管差异很大,在接下来的几个月中还会有许多变数;与此同时,了解各国政府对数字加密货币监管所持的态度也具有十分重要...

数据汪
02/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mac 下 mysql 8.0.13 安装并记录遇到的问题 以便以后查看

安装 官网mysql 下载地址 安装过程 省去 安装好之后 下载navicat 错误1 链接 遇到 mysql 2003 - Can't connect to MySQL server 错误, 解决方案 重启mysql 服务 #错误2 ERROR 1045: Acces...

杭州-IT攻城狮
21分钟前
3
0

中国龙-扬科
24分钟前
1
0
[Spring4.x]基于spring4.x纯注解的Web工程搭建

在前文中已经说明了如何基于 Spring4.x+ 版本开发纯注解的非web项目,链接如下: https://my.oschina.net/morpheusWB/blog/2985600 本文则主要说明,如何在Web项目中,"基于spring纯注解方式...

morpheusWB
53分钟前
13
0
基础编程题目集-7-13 日K蜡烛图

股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K线、按月的月K线等。以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要表示四个价格:开...

niithub
今天
5
0
Jenkins window 下的安装使用

1.下载:https://jenkins.io/download/ 双击安装完毕,将自动打开浏览器: http://localhost:8080 打开对应位置的文件,将初始密钥粘贴至输入框。 第一个是 安装默认的软件;第二个是 自定义...

狼王黄师傅
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部