form1.cn
Make a little progress every day

PHP调用以太坊JSON-RPC接口创建钱包

19th of March 2018 PHP Thinkphp 11934

1,下载安装geth,下载地址如下:

http://ethfans.org/wikis/Wallet-Mirror

进入后点击<Geth 国内镜像>,下载和安装都很快,本文安装的是windows版


2,运行geth,安装之后会在安装目录生成一个geth.exe,需要使用cmd来运行它


第一步先初始化一下:

geth --datadir "chain" init piccgenesis.json

piccgenesis.json文件

{
  "config": {
        "chainId": 33,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "coinbase" : "0x0000000000000000000000000000000000000000",
    "difficulty" : "0x4",
    "extraData" : "",
    "gasLimit" : "0xffffffff",
    "nonce" : "0x0000000000000042",
    "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp" : "0x00",
    "alloc": { }
}
}


第二步设置rpc并开启rpc接口,rpc地址为127.0.0.1:8534

geth --rpc --rpccorsdomain  --datadir ./mychain -rpcport 8534 --port 30308 --identity test --networkid 123456999 --rpcaddr 0.0.0.0 --rpcapi admin,miner,db,eth,net,web3,personal --nodiscover console


主网参考:(可写一个.sh文件,放入这些命令,方便重复使用)

/mnt/geth/geth --datadir "/mnt/geth/chaindataFull/" -port 30308 --rpc   --rpcapi "personal,db,eth,net,web3" --rpccorsdomain "" --rpcport 18545 --rpcaddr "152.21.90.17"

注:上面使用内网IP


快速同步模式:

/mnt/geth/geth --syncmode "fast" --cache=1024 --datadir "/mnt/geth/chaindata/"


注:这里用的是测试网络,不需要同步所有区块,如果要正试应用需要一台linux服务器,开启主网同步所有区块,在打开并设置rpc


3,geth安装完成,rpc接口开启,下面就该用php调用geth的rpc方法了

也可以参考以下几个链接

https://github.com/ethereum/wiki/wiki/JSON-RPC
https://github.com/paritytech/parity/wiki/JSONRPC-personal-module


go-ethereum APIs

https://github.com/ethereum/go-ethereum/wiki/Management-APIs#personal
http://www.cocoachina.com/blockchain/20180125/22019.html


PHP本文用的Thinkphp中的jsonrpc类

public function index(){
vendor('jsonRPC.jsonRPCClient');
$client = new \jsonRPCClient('http://localhost:8534');
dump($client->personal_newAccount("123456"));
}

一个钱包就创建好了,123456是密码,是personal_newAccount这个方法的参数,还有其它rpc方法参考上面的连接


这里面也可以学到一些相关知识:http://ethfans.org/


geth测试网络命令

https://blog.csdn.net/u011386109/article/details/62422392?t=1490862653061