波场TRON创建用户和为他人以及为自己冻结代币

2021-05-15 10:35:21 浏览2616次 作者: 旋风

收藏

我这里只讲一下windows下的安装,linux和windows基本一样,所需的软件也都一样,大家看完windows教程后,linux版本也就触类旁通了.当然,linux中我也会简单说几句.言归正传,开始:

第一步:你需要安装composer,win下安装非常方便,直接去composer官网下载最新版,安装即可,但是,要注意的几个地方分别是:

    1.php版本要在5.3.2以上

    2.安装过程中需要选择php.exe的路径,也就是安装中的:"Choose the command-line PHP you want to be"这个选项

然后下一步下一步安装即可,安装完成之后,看一下环境变量中有没有composer和php的路径,如果没有,请加上php.exe的路径和composer安装的路径到环境变量.

什么????你不知道环境变量?!!!此教程对你来说已经结束,出门左拐,慢走不送.

然后,再把composer切换成中国区镜像就行了:

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

这第一步,在linux中的话,那就简单了,下面三行代码逐行复制执行即可(如果下载失败,请重试,国外地址不稳定):

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
composer config -g repo.packagist composer https://packagist.phpcomposer.com

上面三行,分别是:"下载composer"  "移动composer到可执行环境下" "使用composer国内镜像(国外很慢呢)"

第二步:查看composer是否安装成功,linux和win同步,如下:

composer -v

如果出现版本号,说明安装成功.

第三步:开启你电脑的gmp拓展,linux的不多说了,网上有的是教程,我着重说一下win的.

首先找到你的php版本所在目录的ext文件夹,里面有所有的php的拓展,看看有没有php_gmp.dll这个文件,如果有,找到php.ini,看看里面的gmp拓展有没有打开,如果没有打开,那就打开就行了.如果没有,也好说,去https://windows.php.net/downloads/releases/archives/ 地址里面,找到你那个版本的php和你电脑对应的位数(一般是64位或者32位,我的电脑,属性),如果是64位就下64位的php包,如果是32位就下x86的包,下载后,解压zip得到一个完整的php版本,里面有gpm拓展,把里面的php_gmp.dll放到你的php,然后在php.ini中添加这个拓展就行了.

补充:如果你是linux还安装了宝塔,恭喜你,php图形页面拓展位置,找到gmp拓展,点击一键安装,重启php-fpm就行了.

第三步:找到你项目根目录,安装tron就行了.安装方式有两种,一种是直接修改根目录的composer.json,在composer里面加上两行:

              "iexbase/tron-api": "^3.1",
         "guzzlehttp/guzzle": "^7.3"

然后在dos中切换到根目录路径,运行composer update

另一种方式也是切换到根目录路径,先 

composer require iexbase/tron-api

再:

composer require guzzlehttp/guzzle

然后运行composer update,安装tron插件

至此,tron就安装完了.(当然,现实中经常会出现composer update 失败的情况,请自寻百度google来解决出现的错误码,因为错误类型太多,不一一列举,但是99%的情况是composer.json文件里面参数有问题)

第二种方式为推荐安装方式,因为第一种安装的是固定版本,第二种安装方式是最新版本.

安装完之后那就是调用了.接下来说说怎么调用tron接口来生成用户\为自己冻结代币\为他人冻结代币


tron接口使用篇:

我这边用的是tp,所以我就用tp为使用方法说明tron的接口调用.

首先在项目的application里面,找到index里面的controller文件夹,复制index.php,改名为Test.php,并写入内容:

<?php
namespace app\index\controller;
use \IEXBase\TronAPI\Tron;
class Test
{
    public function index()
    {
        echo 'we are close this function!';exit;
        $tron = new Tron();
        $generateAddress = $tron->generateAddress(); // or createAddress()
        $isValid = $tron->isAddress($generateAddress->getAddress());
        echo 'Address hex: '. $generateAddress->getAddress();
        echo 'Address base58: '. $generateAddress->getAddress(true);
        echo 'Private key: '. $generateAddress->getPrivateKey();
        echo 'Public key: '. $generateAddress->getPublicKey();
        echo 'Is Validate: '. $isValid;
        $d = $generateAddress->getRawData();
        print_r($d);exit;
    }
}
?>

这样就可以调用创建用户方法了.

如果是为自己冻结,也是在该文件中,调用方法如下:

/*为自己冻结*/
     function Frees(){
        $tron = new Tron();
        $tron->setPrivateKey('4CDEC8801AC71310D1BD84E520343C1D731A940E95C4188A2A0FEA9E97F12345');
        //第一个参数 amount 是
        $generate = $tron->freezeBalance(1, 3,  'BANDWIDTH', 'TNjtED4x69Ct2wRVmJLhSfJRyJZiCFbSN2');
        echo '<pre>';
        print_R($generate);exit;
    }

这样就给自己冻结了.这里要注意,里面写的privatekey和账号,都是我随便添加的,不是真实的.你要是用的时候一定要换成你自己的账号和privatekey

同样,为他人冻结也是一个样,不过需要自己改一下接口,我就改了一个,把上面的freezeBalance这个方法的文件中,找到freezebalance这个方法,复制一份,改成允许传入其他账号的方法,我改好了,路径为:

找到 tp目录里面的vendor文件夹,找到iexbase/tron-api/src/Tron.php,找到freezebalance里面,复制freezebalance为freezebalanceother,内容改为:

/* * 2021-04-19 为他人冻结*/
public function freezeBalanceother(float $amount = 0, int $duration = 3, string $resource = 'BANDWIDTH', string $owner_address = null,string $reciveuser=null)
{
    if($owner_address == null) {
        $owner_address = $this->address['hex'];
    }
    if($reciveuser == null) {
        $reciveuser = $this->address['hex'];
    }
    $freeze = $this->transactionBuilder->freezeBalanceother($amount, $duration, $resource, $owner_address,$reciveuser);
    $signedTransaction = $this->signTransaction($freeze);
    $response = $this->sendRawTransaction($signedTransaction);
    return array_merge($response, $signedTransaction);
}

,然后上面这个方法还调用了freezeBalance,所以还需要进入:

iexbase/tron-api/src/TransCtionBuilder里面,复制freezeBalance为freezeBalanceother,然后改内容为:

/* * 2021-04-19 为他人冻结*/
public function freezeBalanceother(float $amount = 0, int $duration = 3, string $resource = 'BANDWIDTH', string $owner_address = null,string $reciveuser=null)
{
    if($owner_address == null) {
        $owner_address = $this->address['hex'];
    }
    if($reciveuser == null) {
        $reciveuser = $this->address['hex'];
    }
    $freeze = $this->transactionBuilder->freezeBalanceother($amount, $duration, $resource, $owner_address,$reciveuser);
    $signedTransaction = $this->signTransaction($freeze);
    $response = $this->sendRawTransaction($signedTransaction);
    return array_merge($response, $signedTransaction);
}

然后test.php中正常调用即可.

为了防止你不会写,我把调用接口给他人转账的方法贴出来:

/*为他人冻结*/
function freesother(){
    $tron = new Tron();
    $tron->setPrivateKey('4CDEC8801AC71310D1BD84E520343C1D731A940E95C4188A2A0FEA9E97F12345');
    $generate = $tron->freezeBalanceother(1, 3,  'ENERGY', 'TNjtED4x69Ct2wRVmJLhSfJRyJZiCFbWK5','TBRRMXTdskcfKgiTrkQXzMH4H844ErCHUi');
    echo '<pre>';
    print_R($generate);exit;
}




当您发现内容错误或代码bug,以及下载链接无法使用等,请点击屏幕右下角的上报错误来进行提交,我们会尽快修正。
本程序所有源码和工具完全免费,当本网站内容如果侵犯了您的权益,请联系我们,我们会尽快处理,感谢您的合作。

收藏 分享

相关文章

评论:

文明上网理性发言,请遵守 新闻评论服务协议

当前还没有评论,快来评论吧

上报错误