Linux Apache MySQL PHP比特币教程。
在这个介绍中,我们假设您有用于Apache和PHP的GNU/Linux服务器,并且您想从一个Web应用程序与比特币网络进行交互。我们假设你有一定的比特币知识和PHP经验。
虽然这是为PHP编写的,但同样的原则也适用于其他语言。有关其他语言的信息,请参考相关的API参考页面。
最简单的入门方法是在守护模式下运行比特币,PHP通过本地HTTP请求进行通信。一个名为JSON-RPC的库用于调用bitcoind的各种函数,bitcoind将用JSON对象进行响应。
但是,建议使用列出的备选库之一,因为它们更复杂。
设置比特币
您可以从主页下载比特币守护进程,并运行附带的二进制文件之一,或者从附带的源代码编译您自己的守护进程。有关配置比特币的更多信息,请参见运行比特币。
运行比特币之前,需要创建一个配置文件(~/。比特币数据目录中的bitcoin/bitcoin.conf ):
Rpcuser=userrpcpassword={为了安全起见,您必须选择一个唯一的密码}如果您错过了这一步,bitcoind会提醒您。
现在运行bitcoind:
$ ./bitcoind#等待几秒钟,让它启动$。/bitcoin-cli getinfo#会显示各种信息。如果您得到一个错误,再试一次,直到您看到一些有用的输出。$./bitcoin-clihelp # gethelp关于命令,请注意在help之前没有破折号比特币将开始与网络同步并下载区块链的完整副本。截至2012年8月,在此过程中必须下载和验证超过2GB的数据。可能需要两个小时或更长时间才能完成。当块计数达到当前计数时,您将知道它何时结束。
Getinfo (Hello World版比特币)假设比特币已经完成初始化过程;从JSON-RPC PHP下载文件jsonRPCClient.php,并把它放在一个web可访问的位置。
其次,用以下内容创建一个PHP文件,用浏览器访问并测试。
require _ once ' jsonrpc client . PHP '$ bit coin=new jsonRPCClient(' http://user:password @ 127 . 0 . 0 . 1:8332/');echo ' pre \\ nprint _ r($ bit coin-getinfo());echo“/pre”;注意:jsonRPCClient库使用fopen()。如果收到bitcoind的404或500错误,会抛出异常说“无法连接”,表示无法连接。这可以防止您看到bitcoind生成的错误消息(因为它们是在状态404或500下发送的)。下面列出的备选库在功能上类似于JSON-RPC PHP,但是没有这个问题。
精确比特币的金额从1 Satoshi(0.000000001 BTC)到近2100000000000(210000000 BTC)不等。为了避免舍入误差,您必须确保PHP实现支持所有位值而不损失精度。大多数PHP实现使用53位精度的IEEE 64位双精度浮点数,足以正确表示所有位的货币值。
有关更多信息,请参见正确的资金处理(JSON-RPC)。
如果您的PHP实现不支持64位数字(同样,这是非常罕见的),您必须使用比特币的一个版本,该版本以字符串形式发送值(genjix在http://github.com/genjix/bitcoin有一个分支),并使用GMP和BC数学库进行所有涉及比特币数量的计算。
账户在比特币,钱寄到地址,一个钱包可以装很多地址。比特币中默认显示的余额是钱包中所有地址的比特币总和。
更进一步,你可以拥有一个比特币账户。每个账户都有多个地址,行为就像一个迷你比特币。
$ ./bitcoin-cli listaccounts#显示帐户列表和每个帐户的各种信息。/bit coin-CLI get account address user 889 #获取一个接收资金的地址,该地址对于帐户user 889是唯一的。/bitcoin-cli getbalance user889#获取帐户user889所拥有的地址中所有资金的总和在您的应用程序中,每个用户都应该有一个唯一的用户名。然后,可以使用$ bit coin-getaccountdress(\” user 889 \”);查询bitcoind的唯一地址;获取用户889的第一个地址。或者$ bitcoin-getnewaddress(\”用户889 \”);为用户889创建新地址。
然后顾客把它存放在这个地址。
可以使用$ coin-get balance(“用户889”,4);查看客户的资金。4表示在假设此付款有效之前,我们将接受的最低确认次数。
如果您将长期使用多个存款和取款帐户,您可能需要考虑在自己的数据库中跟踪用户余额。这简化了应用程序帐户之间的转移,并将您的帐户与比特币钱包分开。
Getnewaddress vs getaccountaddress使用Getnewaddress可以让恶意代理很难追踪到流经应用程序的付款,从而有助于提高用户的匿名性。但是,频繁运行getnewaddress会导致你的钱包塞满很多空地址。
因此,建议以某种方式限制每个用户可以请求的无资金地址的数量。以下是使用会话的示例:
?PHP require _ once(' jsonrpcclient . PHP ');$ bit coin=new jsonRPCClient(' http://root:root @ 127 . 0 . 0 . 1:8332/');#现在检查用户帐户中的适当资金,尝试{ $username=.if(is set($ _ SESSION[' senaddress '])$ senaddress=$ _ SESSION[' senaddress '];else { $ senaddress=$ bit coin-getnew address($ username);$ _ SESSION[' send address ']=$ send address;} $ balance=$ bit coin-get balance($ username);} catch(异常$e) { die('pServer错误!请联系管理员。/p’);}?这将在每个新会话开始时创建一个新地址,并将其存储在会话变量中。
除了RPC库,还有一些PHP库可以连接到bitcoind RPC。建议使用普通的jsonRPCClient.php类。它们不依赖于magic__call,使用cURL代替fopen并且有更好的错误处理(并且可以和composer一起安装)。
Nbobtc比特币-phpeasybitcoin-PHP作者:编程狂人链接:https://www.jianshu.com/p/3b649a008832来源:简书版权归作者所有。商业转载请联系作者授权,非商业转载请注明出处。