随着互联网遭遇区块链的打击,各种依傍ETH发布各种钱币的操纵频繁出现,在这里我们不得不说一下我们程序员比如我们PHP是怎么到场的,获取内里的数据以及地点等等信息。在这里起首我们要相识,我们PHP要通过哪些方式去获取数据?然后怎么获取数据?
PHP获取链上数据的方式大概有Web3.0与RPC两种,比如利用第三方还有爬虫写脚本等方式咱们就另说了。PHP安装Web3.0的扩展利用内里封装的方法也可用,这次我们重点说一下RPC是怎么获取数据的。
先版署一下所封装的数组模板:
/** * 数组模板 * @param $method * @param array $params * @return array */public static function Template($method,$params = array()){ $opts = [ 'jsonrpc' => '2.0', 'method' => $method, 'params' => $params, 'id' => time() ]; $data = json_encode($opts); // POST哀求 各位可以自行封装 $res = Curl::post(self::$url, $data, 10, array('Content-Type:application/json;charset=UTF-8')); $res_arr = json_decode($res, true); return $res_arr;} // 节点url public static $url = 'XXXXX';1.获取全部账户地点:
// 获取钱包地点public function getAccountSList(){ $list = Eth::Template('eth_accounts'); if(!empty($list['result'])){ foreach($list['result'] as $key => $val){ echo "
"; print_r($val); } }else{ die("error"); }}2.获取指定地点账户的余额:
// 获取指定地点账户的余额public function getBalance(){ $send_arr = array("检查余额的地点","latest"); $list = Eth::Template('eth_getBalance', $send_arr); if(!empty($list['result'])){ echo "
"; print_r($list['result']); }else{ die("error"); }}3.转账:
// 转账public function sendTransaction(){ // 转为16进制 $value = number_format(12 * pow(10,18), 0, '', ''); $amout_value = base_convert($value, 10, 16); $send_arr = array( array( 'from' => "发送交易的源地点", 'to' => "交易的目标地点", 'value' => '0x'.$amout_value, 'gas' => '0xf4240', 'gasPrice' => '0xe8d4a51000' ) ); $res_arr = Eth::Template('eth_sendTransaction', $send_arr); if(empty($res_arr['result'])){ echo "转账失败"."\n"; die; } echo "转账乐成"."\n";}4.解锁账户:
/** * 解锁账户 * @param array $params */private static function Unlocking(array $params){ $address = $params['address']; $res_arr = Eth::Template('personal_unlockAccount',array($address,'Gex_15+Etv123456')); if(empty($res_arr['result'])){ return 'No'; } return 'Ok';}上面大概简单的列出几个例子,其他的操纵可以依次类推。如果说我们想本地存储指定链上的指定钱包地点全部交易数据,各人可以参考我一下我的思路和代码,献丑了。
1.写脚本利用Redis存储最新的区块高度: |