├── rpc-curl.sh ├── php示例说明 ├── rpc-guzzle.php ├── rpc-web3.php └── README.md /rpc-curl.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo '=> web3_clientVersion' 3 | curl -X POST http://localhost:8545 -s -d '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[]}' | jq 4 | 5 | echo '=> web3_sha3' 6 | curl -X POST http://localhost:8545 -s -d '{"jsonrpc":"2.0","method":"web3_sha3","params":["hello,ethereum"]}' | jq 7 | -------------------------------------------------------------------------------- /php示例说明: -------------------------------------------------------------------------------- 1 | # Hi,以太坊 2 | 3 | 使用不同的方式接入以太坊。 4 | 5 | 在运行预置代码之前,请首先在1#终端启动节点仿真器: 6 | 7 | ``` 8 | ~$ ganache-cli 9 | ``` 10 | 11 | ## 使用命令行工具 12 | 13 | 在终端运行如下bash脚本: 14 | 15 | ``` 16 | ~/repo/chapter2$ ./rpc-curl.sh 17 | ``` 18 | 19 | ## 使用http库 20 | 21 | 在终端运行如下php脚本: 22 | 23 | ``` 24 | ~/repo/chapter2$ php rpc-guzzle.php 25 | ``` 26 | 27 | ## 使用web3.php开发包 28 | 29 | 在终端运行如下php脚本: 30 | 31 | ``` 32 | ~/repo/chapter3$ php rpc-web3.php 33 | ``` 34 | -------------------------------------------------------------------------------- /rpc-guzzle.php: -------------------------------------------------------------------------------- 1 | [ 10 | 'jsonrpc' => '2.0', 11 | 'method' => 'web3_clientVersion', 12 | 'params' => [], 13 | 'id' => time() 14 | ] 15 | ]; 16 | 17 | $rsp = $client->post('http://localhost:8545',$opts); 18 | echo $rsp->getBody() . PHP_EOL; 19 | 20 | $opts = [ 21 | 'json' => [ 22 | 'jsonrpc' => '2.0', 23 | 'method' => 'eth_accounts', 24 | 'params' => [], 25 | 'id' => time() 26 | ] 27 | ]; 28 | $rsp = $client->post('http://localhost:8545',$opts); 29 | echo $rsp->getBody(); 30 | ?> 31 | -------------------------------------------------------------------------------- /rpc-web3.php: -------------------------------------------------------------------------------- 1 | clientVersion(function($err,$result){ 9 | if($err) throw $err; 10 | echo $result . PHP_EOL; 11 | }); 12 | 13 | $cb = new Callback; 14 | 15 | $web3->clientVersion($cb); 16 | echo $cb->result . PHP_EOL; 17 | 18 | $web3->sha3('hello,ethereum',$cb); 19 | echo $cb->result . PHP_EOL; 20 | 21 | $web3->eth->gasPrice($cb); 22 | echo $cb->result . PHP_EOL; 23 | 24 | $web3->eth->accounts($cb); 25 | $accounts = $cb->result; 26 | print_r($accounts); 27 | 28 | $web3->eth->getBalance($accounts[0],$cb); 29 | echo $cb->result . PHP_EOL; 30 | ?> 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ethereum-php 2 | 3 | 一个很受欢迎的用php开发区块链以太坊dapp和智能合约的教程:[php以太坊](http://xc.hubwiz.com/course/5b36629bc02e6b6a59171de3?affid=630github) 4 | 5 | 本课程详细讲解如何使用Php开发语言为网站增加以太坊区块链支持,课程内容即涉及以太坊中的核心概念,例如账户管理、状态与交易、智能合约开发与交互、过滤器和事件等,同时也详细说明如何使用Php与以太坊进行交互,是Php工程师学习以太坊应用开发的不二选择。 6 | 7 | 课程目录如下: 8 | 9 | 1.概述 10 | 11 | - 以太坊概述 12 | - JSON RPC与web3j 13 | - web3j体系概述 14 | - 课程内容概述 15 | 16 | 2.hi,以太坊 17 | 18 | - hi以太坊 19 | - 使用ganache 20 | - 使用curl获取节点版本信息 21 | - 使用php获取节点版本信息 22 | - 使用现成的轮子 23 | - 理解web3.php的命名规则 24 | - Web3入口类 25 | 26 | 27 | 3.账户管理 28 | 29 | - 账户管理 30 | - 私钥、公钥与账户 31 | - 创建账户 32 | - 导入私钥 33 | - keystore钱包文件 34 | - Credential账户凭证 35 | - 为网站增加以太币支付功能 36 | - 理解状态与交易 37 | 38 | 4.理解状态与交易 39 | 40 | - 状态与交易 41 | - 状态与激励 42 | - 以太坊状态机 43 | - 获取账户余额 44 | - 以太坊货币单位 45 | - 货币单位表示与换算 46 | - 交易类型 47 | - 提交普通交易 48 | - 获取交易收据 49 | - gas价格与用量 50 | - 使用裸交易 51 | 52 | 5.智能合的开发、部署、交互 53 | 54 | - 智能合约概述 55 | - ERC20代币规范 56 | - 代币合约状态设计 57 | - 代币合约方法实现 58 | - 编译代币合约 59 | - 部署代币合约 60 | - 访问代币合约 61 | 62 | 6.过滤器与事件 63 | 64 | - 通知机制概述 65 | - 监听新块事件 66 | - 监听新交易事件 67 | - 监听待定交易事件 68 | - 监听合约事件 69 | - 使用主题过滤日志 70 | - 解码日志数据 71 | 72 | 欢迎爱学习的你访问学习:[php以太坊](http://xc.hubwiz.com/course/5b36629bc02e6b6a59171de3?affid=626github) 73 | --------------------------------------------------------------------------------