#### 准备工作 首先,你需要确保你的开发环境中已经安装了 Composer,这是 PHP 的依赖管理工具。然后,通过 Composer 安装 Web3.php 库。 ```bash composer require sc0vu/web3.php ``` 安装完成后,创建一个 PHP 文件,比如 `eth_wallet.php`,然后引入 Web3.php 库。 ```php require 'vendor/autoload.php'; use Web3\Web3; use Web3\Contract; use Web3\Exception; // 连接到以太坊节点,比如 Infura $provider = 'https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'; $web3 = new Web3($provider); ``` ### 创建一个新钱包 现在,我们来创建一个新的以太坊钱包。钱包的地址和私钥是很重要的,私钥绝对不能泄露。 ```php // 生成新的以太坊钱包 function createWallet() { $wallet = new Web3\Account(); $newAccount = $wallet->create(); return $newAccount; } // 调用创建钱包的函数 $newWallet = createWallet(); echo '钱包地址: ' . $newWallet->getAddress() . "\n"; echo '私钥: ' . $newWallet->getPrivateKey() . "\n"; ``` 上面的代码使用 `Web3\Account` 类创建了一个新的钱包,并输出了钱包地址和私钥。注意,私钥一定要妥善保管,不可泄露。 ### 导入已有钱包 如果你已经有一个钱包的私钥,也可以通过 Web3.php 导入这个钱包。 ```php function importWallet($privateKey) { try { $wallet = new Web3\Account(); $account = $wallet->fromPrivateKey($privateKey); return $account; } catch (Exception $e) { echo '导入钱包失败: ' . $e->getMessage(); return null; } } // 示例私钥(请替换为您自己的私钥) $existingWallet = importWallet('YOUR_PRIVATE_KEY'); if ($existingWallet) { echo '导入的钱包地址: ' . $existingWallet->getAddress() . "\n"; } ``` ### 查询余额 接下来,我们可以查询钱包的ETH余额。 ```php function getBalance($address) { global $web3; // 引入之前定义的 Web3 对象 $web3->eth->getBalance($address, function ($err, $balance) { if ($err !== null) { echo '查询余额失败: ' . $err->getMessage(); return; } echo '余额: ' . $balance->toString() . ' Wei (1 ETH = 10^18 Wei)'; }); } // 调用查询余额的函数 getBalance($newWallet->getAddress()); ``` ### 发送交易 如果你想要发送 ETH,需要有一个节点的支持,下面是发送交易的代码: ```php function sendTransaction($from, $privateKey, $to, $value) { global $web3; $web3->eth->sendTransaction([ 'from' => $from, 'to' => $to, 'value' => $web3->eth->toWei($value, 'ether') ], function ($err, $transactionHash) { if ($err !== null) { echo '发送交易失败: ' . $err->getMessage(); return; } echo '交易发送成功: ' . $transactionHash . "\n"; }); } // 发送0.01 ETH(示例) sendTransaction($newWallet->getAddress(), $newWallet->getPrivateKey(), 'TO_ADDRESS', 0.01); ``` ### 注意事项 1. **私钥安全性**:一定要将私钥保存在安全的地方。不要在公共场合或线上泄露。 2. **交易费用**:在以太坊上发送交易需要支付一定的网络费用,这个费用通常以 gas 为单位。使用时要留意网络状况。 3. **节点选择**:你可以选择自己的 Ethereum 节点或使用第三方服务如 Infura 提供的接口。确保你的服务是可靠的。 4. **使用环境**:测试环境可以使用 Ropsten 或 Rinkeby 测试网络,在部署到主网络前进行充分测试。 在这篇文章中,我们创建了以太坊钱包、导入已有钱包、查询余额和发送交易。希望这些例子对你有所帮助。以太坊生态系统非常庞大,玩得好可以实现许多有趣的功能。未来可以探索智能合约、去中心化应用(DApp)等内容。 如果有更多问题,欢迎随时问我!