想在你的 PHP 项目中零门槛对接 BNB 与 BEP20 代币?只要在终端输入一行命令,你就能完成地址生成、余额查询、链上转账、区块信息追踪等高频操作。本文手把手带你跑通 bsc-php,并给出实战案例与避坑指南,让「区块链开发」不再是资深工程师的专利。
为什么选择 bsc-php?
| 核心关键词:bsc-php、BNB、BEP20、Binance Smart Chain、PHP 区块链、离线签名、区块查询
- 轻量级:只有一个 Composer 依赖,零外部守护进程
- 双接口:既支持官方 BSC 节点 RPC,也支持 BscScan API
- 离线签名:私钥永不离开本机,最大限度降低被劫持风险
- 文档详细:链上常用 12 个场景函数全封装,示例代码开箱即用
一键安装
# 安装最新稳定版
composer require fenguoz/bsc-php
# 指定主版本号,锁定 1.x 更新
composer require fenguoz/bsc-php ~1.0安装过程不到 5 秒,接下来就能开始钱包与链上交互的「魔法之旅」。
快速上手:地址创建与私钥恢复
1. 随机生成新账户
use Binance\Wallet;
$wallet = new Wallet();
// 用随机私钥创建账户
$accountA = $wallet->newAccountByPrivateKey();
echo "地址: " . $accountA->address . PHP_EOL;
echo "私钥: " . $accountA->privateKey . PHP_EOL;
// 助记词方式
$accountB = $wallet->newAccountByMnemonic();
echo "助记词: " . $accountB->mnemonic . PHP_EOL;2. 通过助记词/私钥恢复
// 恢复已有助记词
$mnemonic = 'elite link code extra caution knock ...';
$recovered = $wallet->revertAccountByMnemonic($mnemonic);
// 恢复已有私钥
$privateKey = '0x5e9340935f4c02...';
$recovered = $wallet->revertAccountByPrivateKey($privateKey);两种链上数据源切换
根据公司安全策略与性能需求,你可以选择 自建节点 或 BscScan API。
方案一:直连 BSC RPC 节点(推荐主网)
$uri = 'https://bsc-dataseed1.binance.org'; // 主网
$api = new \Binance\NodeApi($uri);
// 测试网示例
// $uri = 'https://data-seed-prebsc-1-s1.binance.org:8545/';
// $api = new \Binance\NodeApi($uri, null, null, 'testnet');方案二:BscScan 中心化 API(简单易用)
$apiKey = 'QVG2GK41A...'; // 填你自己的 Key
$api = new \Binance\BscscanApi($apiKey);两种方法初始化完成后,所有余额查询、转账、区块扫描接口调用方式完全一致,真正做到 “一层封装,随时切换”。
余额与转账
查询 BNB 余额
$bnb = new \Binance\Bnb($api);
$balance = $bnb->bnbBalance('0x1667ca2c...');
echo "BNB 余额: " . $balance . " BNB" . PHP_EOL;查询 BEP20 代币余额
$config = [
'contract_address' => '0x55d398326f99059fF775485246999027B3197955', // USDT
'decimals' => 18,
];
$usdt = new \Binance\BEP20($api, $config);
$balance = $usdt->balance('0x1667ca2c...');
echo "USDT 余额: " . $balance . " USDT" . PHP_EOL;链上转账(离线签名示例)
$txHash = $bnb->transfer(
'0x1667ca2c...', // from
'0xd8699f0...', // to
0.01 // amount (BNB)
);
echo "转账 Tx Hash: " . $txHash . PHP_EOL;也支持 BEP20 转账,只要把对象换成 $usdt 即可。
区块与交易信息查询
| 关键词:链上查询、交易回执、区块高度
最新区块高度
$height = $bnb->blockNumber();按区块号查交易
$block = $bnb->getBlockByNumber(24631027);按交易哈希拿详情
$tx = $bnb->getTransactionByHash('0x4dd20d...'); $receipt = $bnb->getTransactionReceipt('0x4dd20d...');交易是否成功
$status = $bnb->receiptStatus('0x4dd20d...'); // 0 失败,1 成功
FAQ:bsc-php 开发者最常问的 5 个问题
Q1:生产环境一定要用主网么?
A:测试阶段可使用测试网 https://data-seed-prebsc-1-s1.binance.org:8545 获取水龙头 BNB;上线前再切到主网,以免产生误转账。
Q2:助记词泄露就完了?
A:是的。助记词 = 你的全部控制权。请务必使用硬件钱包或加密卷离线储存,开发环境建议使用 .env 文件结合 zshrc alias 避免留在 Git 仓库。
Q3:BscScan 的 API Key 有什么限制?
A:默认 5 request/sec。超出会被限速;若业务并发高,建议自建节点或购买企业版 Key。
Q4:在 Laravel 中如何用?
A:和 Composer 其它库一样,在 composer.json 引入后,用 ServiceProvider 单例封装 NodeApi,整个项目共享一个 $api 实例即可。
Q5:如何监听入金?
A:当前库仅提供「轮询查询」。需要实时推送可选:
- 使用 BscScan WebSocket(需升级套餐)
- 自建节点订阅
newPendingTransactions事件 - 用第三方服务做签名校验并转发到你的 Webhook URL
实战进阶:3 个小技巧让你的 BSC 应用更精进
- 批量查余额
调用$api->makeBatch(),可一次性查询 1000 个地址的 USDT 余额,省掉 1000 次网络请求。 - 离线签名批量转账
PHP 内存够大时,可将数千笔交易离线签名写入 Redis 队列,再交由守护进程批量广播,减少链上手续费高峰带来的 Gas War。 - Price Oracle 回填
可搭配 ChainLink BNB/USD 喂价合约,在转账成功回调里实时按照最新汇率给商户打 USDT,自动抹平波动风险。
结语
bsc-php 用不到 500 行 PHP 代码,把最耗时间的链上操作变成 “写一个函数” 的轻松体验。无论你是做交易所、DeFi 应用还是 NFT 市场,只要熟悉 PHP,就能借助这套工具把产品原型 2 小时内推到测试网。
现在就打开终端执行 composer require fenguoz/bsc-php 吧,和全球开发者一起“把区块链塞进 Laravel 的 ServiceProvider”。