引言:写在前面的话

最近总有人问我,咱们怎么才能用PHP创建一个以太坊钱包?其实这事儿没那么复杂,很多人一听到“区块链”就觉得高深莫测,其实套路都差不多。今天我就跟大家聊聊这个事情,分享一些我自己的实操经验,绝对让你不再犯同样的错。

基础知识:以太坊钱包是什么?

简单来说,以太坊钱包就是一个可以用于接收和发送以太币(ETH)的工具。和你在银行账户里存钱不太一样,钱包里其实存的是私钥。私钥就好像你家的钥匙,只有你才能打开。只要你有这个私钥,就能随时控制你的以太币。所以,安全性是第一位的。别听外面瞎吹什么“无脑操作”,钱包一旦丢了,钱也就没了。

步骤一:环境准备

首先,你得准备好自己的开发环境。这里推荐使用PHP7.0及以上的版本,你可以在本地搭建一个PHP开发环境,比如用XAMPP。如果你对PHP不太了解,百度一下“PHP环境搭建”,一天就能学会。记得安装好Composer,这个是PHP包管理工具,后面有用到。

步骤二:安装必要的库

你需要用到的库主要是web3.php。执行下面这个命令,直接用Composer来安装:

composer require web3p/web3.php

这个库可以让你方便地与以太坊区块链进行交互。其实我最开始用这个的时候,也是在一些Github的项目上找到的,觉得简单好用就开始搞了。

步骤三:生成钱包

生成以太坊钱包相对简单。你只需执行下面的代码:


require 'vendor/autoload.php';

use Web3\Web3;
use Web3\Personal;

$web3 = new Web3('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID');
$personal = new Personal('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID');

$personal->newAccount('YOUR_PASSWORD', function ($err, $account) {
    if ($err !== null) {
        echo 'Error: ' . $err->getMessage();
    }
    echo 'New account created: ' . $account;
});

注意,这里需要一个Infura的项目ID。很多人因为这个小地方吃过大亏,没做好安全措施,结果账户被盗。存好你的密码和账户信息,私钥不要随便晒在网上。

步骤四:查看钱包余额

创建完以太坊钱包以后,接下来就可以查看余额了。执行下面的代码:


$web3->eth->getBalance('YOUR_ACCOUNT_ADDRESS', function ($err, $balance) {
    if ($err !== null) {
        echo 'Error: ' . $err->getMessage();
    }
    echo 'Balance: ' . $balance->toString() . ' Wei';
});

这里注意一个细节,返回的余额是Wei单位,1 ETH = 10^18 Wei。别傻傻的以为直接就是以太币了,搞错单位就尴尬。

步骤五:发送以太币

想把以太币发出去,那可得小心了。发送之前,确保你的钱包里有足够的ETH用于支付Gas费用。下面是发送以太币的代码:


$web3->eth->sendTransaction(array(
    'from' => 'YOUR_ACCOUNT_ADDRESS',
    'to' => 'RECIPIENT_ADDRESS',
    'value' => 'VALUE_IN_WEI',
), function ($err, $transaction) {
    if ($err !== null) {
        echo 'Error: ' . $err->getMessage();
    }
    echo 'Transaction successful with hash: ' . $transaction;
});

这里要提前设置好Gas价格和Gas限额。很多新手在这儿都踩过雷,结果手里有ETH也兑不出去,急得像热锅上的蚂蚁。

新手常犯的三个蠢事

1. 忘记保管私钥:私钥就像是你家钥匙,不小心丢了,麻烦大了。很多人非要等到丢了才后悔,真是大错特错。

2. 搞错Gas费用:Gas费用直接影响你的交易速度。太低了可能会交易不成功,太高了又浪费。小心在交易前去查询一下当前的标准Gas费用。

3. 对交易地址不够谨慎:很多新手喜欢直接复制黏贴地址,结果粘贴错了,钱就打飞了。建议先发一小笔试一下。

如果不这么做会损失多少钱

我之前碰到一个哥们,随便发了个以太币,结果手续费没设置好,最后交易失败了,钱没到账不说,手续费都没法退回。那次损失了几百块,说实话心里真心痛。不过这种事儿说到底归根究底就是疏忽大意。

行业内不公开的潜规则

说到行业潜规则,其实很多时候都是隐藏的费用,比如你在某些交易所进行交易,可能会有各种隐藏的手续费。这些都得留心,最好在每次交易前去查清楚,别让人家趁机割了韭菜。

结尾:小结一下

那么,今天大概就聊到这里了。如果你们还有什么问题,随时可以来找我。记住,要慎重操作,安全第一,没事多上一些社区,多听听前辈们的建议。希望大家都能顺风顺水,钱包鼓鼓的!