Php 比特币api不依赖于正在运行的比特币守护进程?
我正在尝试建立一个以比特币为中心的网站,由于主机的限制,我需要能够执行以下操作,而无需在任何服务器上运行比特币守护程序:Php 比特币api不依赖于正在运行的比特币守护进程?,php,api,json-rpc,bitcoin,Php,Api,Json Rpc,Bitcoin,我正在尝试建立一个以比特币为中心的网站,由于主机的限制,我需要能够执行以下操作,而无需在任何服务器上运行比特币守护程序: 创建新的比特币地址(getnewaddress($account)) 在该地址接收硬币;确定收到的金额(GetReceivedByaAccount($account,$minconf=1)) 将硬币发送到某个地址(sendfrom($fromcount,$tobitcoinaddress,$amount,$minconf=1,$comment=“”,$comment to=“
getnewaddress($account)
)GetReceivedByaAccount($account,$minconf=1)
)sendfrom($fromcount,$tobitcoinaddress,$amount,$minconf=1,$comment=“”,$comment to=“”))
)我也读过“lazyapi”的内容,但我不希望依赖其他服务来获取块数据或发送比特币
tl;dr:我需要一个不需要运行守护进程的比特币php api版本,至少要有上面描述的功能。目前,不存在这样的功能。我听说比特币被移植到本机PHP或可以在浏览器中运行的Java小程序,但没有比特币没有守护进程——尽管你可能可以用MtGox Merchant API管理这些基本功能
或者,如果您在家里有足够可靠的设置,您可以将一个装备专用于比特币,并在路由器设置中转发适当的端口。你通常不能在你的住宅互联网上托管站点的唯一原因是ISP阻止端口80;他们不会阻止8337(如果他们阻止了,无论如何都是可配置的)。PHP API应该能够通过“网络”连接到Bitcoin,就像它在同一个框中一样。Blockchain.info提供了与Bitcoin JSON rpc兼容的API
TL;博士:不运行某种比特币客户端和不信任第三方是不可能的 虽然可以信任第三方告诉您帐户余额,但您必须信任第三方在使用
getnewaddress
或sendfrom
时处理签署交易所需的私钥,这可能不是您想要做的
据我所知,一个可能的最低解决方案是使用第三方,例如,跟踪余额(阅读发送交易时您可以申请的可支出输出
),并使用通知服务告诉您有关传入交易的信息(此处列出了一些备选方案)
现在,为了能够接收交易,您只需要创建一个新地址,在您的网站上显示用户。在PHP中创建这样一个地址应该不难,只需看一下
现在对于发送部分,这将非常困难,因为它涉及:
- 收集产出李>
- 通过提供匹配的签名来声明它们李>
- 创建所需地址的新输出李>
- 合并事务中的所有内容并将其序列化到李>
- 连接到P2P网络并将事务发送给对等方
因此,正如您所看到的,当您尝试发送事务时,它会很快变得复杂。如果发送交易不是绝对必需的,我建议只向服务器提供一个地址列表,它可以接收交易,允许您为此创建私钥/地址对。如果您只想生成比特币地址和私钥,请尝试: 也许我们可以构建一个脚本,只找到20个比特币对等节点来广播我们的交易 从bitseed.xf2.org或chainparams.cpp源代码中的硬编码对等列表:
您可以使用开源的goul.io比特币PHP支付库-
充其量,您需要一个服务提供商提供的API,该API允许创建钱包和进行交易查询 正如您所寻找的:创建、发送、接收-这意味着您将需要一个已经托管此服务的服务: Coinkite可能是一个不错的选择,因为大多数比特币操作都可以通过API完成:
- 通过电子邮件、短信或比特币地址发送和请求比特币
- 生成公钥(HD)
- 检查余额并接收通知
- 将比特币安全存储在HSM或多重签名帐户中
- 创建凭证和纸质钱包(发布私钥)
- 创建P2SH付款地址,通过M-of-N multisig提取
- 导入和扫描私钥
我想现在就要一个PHP端口。如果不是因为他们最近被黑客攻击的事实,我会使用MtGox API。“但我不想依靠其他服务来获取区块数据或发送比特币。”我不会-1,因为我有点含糊不清,但我知道并知道blockchain.info API,但这根本不能回答我的问题。
<?
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>