USDT-RPC+归集

本文详细探讨了如何使用USDT-RPC进行数字货币的归集操作,并结合PHP技术实现高效、安全的交易处理。通过理解RPC协议和USDT的特性,读者将能够掌握在实际项目中应用 grpc 和 PHP 的关键技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php

class Ethcoin
{
   
    protected $host, $version;
    protected $id = 0;
    protected $usrename = "nginx";
    protected $pwd = "8ee2asfgshtfs0b6";
    public $base = 1000000000000000000;//1e18 wei  基本单位

	/**
	* 构造函数
	* Common constructor.
	* @param $host
	* @param string $port
	* @param string $version
	*/
    function __construct($host, $version = "2.0")
    {
   
        $this->host = $host;
        $this->version = $version;
    }

	/**
	* 发送请求
	* @author qiuphp2
	* @since 2017-9-21
	* @param $method
	* @param array $params
	* @return mixed
	*/
    function request($method, $params = array())
    {
   
    	
        $data = array();
        $data['jsonrpc'] = $this->version;
        $data['id'] = $this->id + 1;
        $data['method'] = $method;
        $data['params'] = $params;
		
		//print_r($method);exit;
        // echo json_encode($data);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $this->host);
        // curl_setopt($ch, CURLOPT_PORT, $this->port);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
        curl_setopt($ch, CURLOPT_USERPWD, "$this->usrename:$this->pwd");
        curl_setopt($ch, CURLOPT_POST, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

        $ret = curl_exec($ch);
        
        /* if("eth_sendTransaction" == $method){
        	print_r($ret);exit;
        } */
        //返回结果
        try {
   
            if ($ret) {
   
            	
                curl_close($ch);
                unset($data);
				
				
                return json_decode($ret, true);
            } else {
   
                
                $error = curl_errno($ch);
                curl_close($ch);
                unset($data);
                return json_decode('ETH钱包服务器连接失败', true);
                // throw new Exception("curl出错,错误码:$error");
            }
        } catch (\Throwable $th) {
   

            unset($data);
            return json_decode('ETH钱包服务器连接失败', true);
        }
    }

	/**
	* @author qiuphp2
	* @since 2017-9-21
	* @param $weiNumber 16进制wei单位
	* @return float|int 10进制eth单位【正常单位】
	*/
    function fromWei($weiNumber)
    {
   
        $ethNumber = hexdec($weiNumber) / $this->base;
		
        return $ethNumber;
    }
	function fromWeiEth($weiNumber)
    {
   
        $ethNumber = $weiNumber / $this->base;
		
        return $ethNumber;
    }
	/**
	* @author qiuphp2
	* @since 2017-9-21
	* @param $ethNumber 10进制eth单位
	* @return string    16进制wei单位
	*/
    function toWei($ethNumber)
    {
   
    	
       $weiNumber = base_convert($this->decimalNotation($ethNumber * $this->base),10,16);
       
        // $weiNumber = float($weiNumber);
        return $weiNumber;
    }
	
	function decimalNotation($num){
   
		
		$parts = explode('E', $num);
		if(count($parts) != 2){
   
			
			 return intval($num);
		}
		$exp = abs(end($parts)) + 3;
		$decimal = number_format($num, $exp);
		
		$decimal = rtrim($decimal, '0');
		
		return rtrim($decimal, '.');
	}

	/**
	* 判断是否是16进制
	* @author qiuphp2
	* @since 2017-9-21
	* @param $a
	* @return int
	*/
    function assertIsHex($a)
    {
   
        if (ctype_xdigit($a)) {
   
            return true;
        } else {
   
            return false;
        }
    }
	
	/**
	* 获取版本信息,判断是否连接
	* @author qiuphp2
	* @since 2017-9-19
	*/
    function web3_clientVersion()
	{
   
		$params = array();
		$data = $this->request(__FUNCTION__, $params);
        if ($data['result']) {
   
            return true;
        } else {
   
            return false;
        }
        //return $data['result'];
    }
	
	 function txpool_status()
	{
   
		$params = array();
		$data = $this->request(__FUNCTION__, $params);
        if ($data['result']) {
   
            return true;
        } else {
   
            return false;
        }
        //return $data['result'];
    }
	
	
	/**
	* 获取主账户
	* @author qiuphp2
	* @since 2017-9-19
	*/
    function eth_coinbase()
	{
   
		$params = array();
        $data = $this->request(__FUNCTION__, $params);
		
        if ($data['result']) {
   
            return $data['result'];
        } else {
   
            return $data['error']['message'];
        }
        // return $data['result'];
    }
	
	/**
	* 返回客户端持有的地址列表。
	* @author qiuphp2
	* @since 2017-9-19
	*/
    function eth_accounts()
	{
   
		$params = array();
        $data = $this->request(__FUNCTION__, $params);
        if ($data['result']) {
   
            return $data['result'];
        } else {
   
            return $data['error']['message'];
        }
        // return $data['result'];
    }

    /**
    * 获取区块数量
    * @author qiuphp2
    * @since 2017-9-19
    */
    function eth_blockNumber()
    {
   
        $params = array();
        $data = $this->request(__FUNCTION__, $params);
        if ($data['result']) {
   
            return $data['result'];
        } else {
   
            return $data['error']['message'];
        }
        // return $data['result'];
    }

    /**
    * 对于已经同步的客户端,该调用返回一个描述同步状态的对象;对于未同步客户端,返回false
    * @author qiuphp2
    * @since 2017-9-19
    */
    function eth_syncing()
    {
   
        $params = array();
        $data = $this->request(__FUNCTION__, $params);
        if ($data['result']) {
   
            return $data['result'];
        } else {
   
            return $data['error']['message'];
        }
        // return $data['result'];
    }
	
	/**
	* 新建账号 有点耗时 最好给用户生成的之后,密码保存在数据库里面
	* @author qiuphp2
	* @since 2017-9-19
	*/
    function personal_newAccount($password='')//一般用账户名作为加密密码
    {
   
        // $password = &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_41997115

您的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值