qlg.tsgz.moe/hyhproject/app/model/Chain3base.php
2019-09-06 23:53:10 +08:00

115 lines
3.1 KiB
PHP
Executable File

<?php
namespace wstmart\app\model;
use think\Model;
use think\Db;
Vendor('web3.vendor.autoload');
use Web3\Web3;
/**
* ============================================================================
* 基础模型器
*/
class Chain3base extends Model{
/**
* web3
*
* @var \Web3\Web3
*/
protected $web3;
protected $wei = 18;
/**
* testHost
*
* @var string
*/
protected $testHost = 'http://localhost:8545';
/**
* coinbase
*
* @var string
*/
protected $coinbase=0;
public function __construct(){
parent::__construct();
$web3 = new Web3($this->testHost);
$this->web3 = $web3;
}
public function getCoinbase(){
$this->web3->eth->coinbase(function ($err, $coinbase) {
if ($err !== null) {
//return $this->fail($err->getMessage());
}else{
$this->coinbase = $coinbase;
}
});
return $this->coinbase;
////获取本机账号列表
// $this->web3->eth->accounts(function ($err, $accounts) use ($eth) {
// if ($err !== null) {
// echo 'Error: ' . $err->getMessage();
// return;
// }
// dump($accounts);
// });
}
/**
*创建账号
*
* @return void
*/
public function createAccount($pass){
$web3->personal->newAccount($pass, function ($err, $account) use (&$newAccount) {
if ($err !== null) {
return WSTReturn($err->getMessage());
// echo 'Error: ' . $err->getMessage();
//return;
}else{
$data['account'] = $account;
return WSTReturn('',1,$data);
}
});
}
public function getBalance($address){
$msg='';
$status=-1;
$data['balance']=0;
$this->web3->eth->getBalance($address , function ($err, $balance) use (&$msg,&$status,&$data) {
if ($err !== null) {
$msg=$err->getMessage();
//return WSTReturn($err->getMessage());
//echo 'Error: ' . $err->getMessage();
//return;
}else{
$my_balance = $balance->toString();
$my_balance = $my_balance/pow(10,$this->wei);
$status=1;
$data['balance'] = $my_balance;
}
});
return WSTReturn($msg,$status,$data);
}
//账号解锁
public function unlock_account($pass,$address){
$web3->personal->unlockAccount($address, $pass, function ($err, $unlocked) {
if ($err !== null) {
exit(jsonReturn($err->getMessage()));
// echo 'Error: ' . $err->getMessage();
// return;
}
if($unlocked) {
$data['unlock'] = 1;//$unlocked;
return WSTReturn('',1,$data);
} else {
$data['unlock'] = 0;
return WSTReturn('',1,$data);
//echo 'New account isn\'t unlocked' . PHP_EOL;
}
});
}
}