我正在尝试以比特币为中心的网站,我需要能够执行以下操作,而不会在任何服务器上运行比特币守护程序,因为我的主机有限制:
getnewaddress($account)
)getreceivedbyaccount($account, $minconf=1)
)sendfrom($fromaccount, $tobitcoinaddress, $amount, $minconf=1, $comment="", $comment-to="")
)这些是现有json-rpc php客户端中存在的所有函数,但所有函数都依赖于服务器上运行的比特币守护程序。
我也读过“懒惰api”的内容,但我宁愿不依赖其他服务来获取块数据或发送比特币。
tl; dr:我需要一个版本的比特币php api,它不需要运行守护进程,至少具有上述功能。
答案 0 :(得分:1)
Blockchain.info提供了与Bitcoind JSON rpc兼容的API。
答案 1 :(得分:1)
TL; DR; :没有运行某种比特币客户和不信任第三方。
虽然可以信任第三方告诉您帐户的余额,但是一旦您使用getnewaddress
或{sendfrom
或{outputs
,您就必须信任第三方处理签署交易所需的私钥{1}},这可能不是你想要做的。
据我所知,一个可能的最小解决方案是使用第三方(例如http://blockchain.info)来跟踪余额(阅读发送时可以声明的可用费用{{1}}事务),并使用通知服务告诉您有关传入的事务(有些在此处列为替代事项https://en.bitcoin.it/wiki/BitcoinNotify)。
现在,只需创建一个新地址即可显示网站上的用户,以便能够接收交易。在PHP中创建这样的地址应该不难,只需看一下wiki。
现在对于发送部分来说,这将会非常困难,因为它涉及:
因此,当您尝试发送交易时,您可以看到它变得很复杂。如果不是绝对需要发送事务,我建议只向服务器提供一个可以接收事务的地址列表BitAddress允许您为此目的创建私钥/地址对。
答案 2 :(得分:1)
如果您只想生成比特币地址和私钥,请尝试:
https://github.com/zamgo/PHPCoinAddress
也许我们可以构建一个脚本,只是为了找到20个比特币对等节点来广播我们的交易。
来自bitseed.xf2.org的或chainparams.cpp中的硬编码对等列表源代码: https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery
答案 3 :(得分:1)
充其量,您需要来自服务提供商的API,该API允许创建钱包和交易查询。
正如您正在寻找:创建,发送,接收 - 这意味着您将需要一个托管此服务的服务:
Coinkite可能是一个不错的选择,因为大多数比特币操作都可以通过API完成:
通过电子邮件,短信或比特币地址发送和请求比特币
生成公钥(HD)
检查余额并接收通知
在HSM或多重签名帐户中安全存储比特币
创建优惠券和纸币(已发布私钥)
创建P2SH付款地址,通过M-of-N multisig撤销。
导入和扫描私钥
答案 4 :(得分:0)
目前,不存在此类功能。我听说过将bitcoind移植到原生PHP或可以在浏览器中运行的Java applet的谈话,但是没有比特币没有守护进程某处 - 尽管你可以用这个来管理这些基本功能MtGox Merchant API。
或者,如果您在家中拥有足够可靠的设置,您可以专门使用钻机来比特币并转发路由器设置中的相应端口。您通常不能在您的住宅互联网上托管网站的唯一原因是ISP阻止端口80;他们不阻止8337(如果他们这样做也可以配置)。 PHP API应该能够在网络上连接到bitcoind,就好像它在同一个盒子上一样。
答案 5 :(得分:0)
您可以使用开源GoUrl.io比特币-PHP支付库 -
https://github.com/cryptoapi/Payment-Gateway
<?
require_once( "cryptobox.class.php" );
$options = array(
"private_key" => "", // private key from gourl.io
"orderID" => "your_product1_or_signuppage1_etc",
"amountUSD" => 2 // 2 USD
);
// Initialise Payment Class
$box1 = new Cryptobox ($options);
// Display Payment Box or successful payment result
$paymentbox = $box1->display_cryptobox();
// A. Process Received Payment
if ($box1->is_paid())
{
// Your code here to handle a successful cryptocoin payment
// ...
}
else $message .= "The payment has not been made yet";
?>
<!DOCTYPE html>
<html><head></head>
<body>
<?= $paymentbox ?>
<?= $message ?>
</body>
</html>