contract batch send transaction
This commit is contained in:
parent
d69ce96a64
commit
a47544b991
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of web3.php package.
|
* This file is part of web3.php package.
|
||||||
*
|
*
|
||||||
* (c) Kuan-Cheng,Lai <alk03073135@gmail.com>
|
* (c) Kuan-Cheng,Lai <alk03073135@gmail.com>
|
||||||
*
|
*
|
||||||
* @author Peter Lai <alk03073135@gmail.com>
|
* @author Peter Lai <alk03073135@gmail.com>
|
||||||
* @license MIT
|
* @license MIT
|
||||||
*/
|
*/
|
||||||
@ -44,56 +44,56 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* abi
|
* abi
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $abi;
|
protected $abi;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* constructor
|
* constructor
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $constructor = [];
|
protected $constructor = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* functions
|
* functions
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $functions = [];
|
protected $functions = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* events
|
* events
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $events = [];
|
protected $events = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* toAddress
|
* toAddress
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $toAddress;
|
protected $toAddress;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* bytecode
|
* bytecode
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $bytecode;
|
protected $bytecode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* eth
|
* eth
|
||||||
*
|
*
|
||||||
* @var \Web3\Eth
|
* @var \Web3\Eth
|
||||||
*/
|
*/
|
||||||
protected $eth;
|
protected $eth;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ethabi
|
* ethabi
|
||||||
*
|
*
|
||||||
* @var \Web3\Contracts\Ethabi
|
* @var \Web3\Contracts\Ethabi
|
||||||
*/
|
*/
|
||||||
protected $ethabi;
|
protected $ethabi;
|
||||||
@ -167,7 +167,7 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* call
|
* call
|
||||||
*
|
*
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @param array $arguments
|
* @param array $arguments
|
||||||
* @return void
|
* @return void
|
||||||
@ -184,7 +184,7 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* get
|
* get
|
||||||
*
|
*
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
@ -200,7 +200,7 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* set
|
* set
|
||||||
*
|
*
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @param mixed $value
|
* @param mixed $value
|
||||||
* @return mixed
|
* @return mixed
|
||||||
@ -217,7 +217,7 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* getProvider
|
* getProvider
|
||||||
*
|
*
|
||||||
* @return \Web3\Providers\Provider
|
* @return \Web3\Providers\Provider
|
||||||
*/
|
*/
|
||||||
public function getProvider()
|
public function getProvider()
|
||||||
@ -241,7 +241,7 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* getDefaultBlock
|
* getDefaultBlock
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getDefaultBlock()
|
public function getDefaultBlock()
|
||||||
@ -315,7 +315,7 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* setAbi
|
* setAbi
|
||||||
*
|
*
|
||||||
* @param string $abi
|
* @param string $abi
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
@ -326,7 +326,7 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* getEthabi
|
* getEthabi
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getEthabi()
|
public function getEthabi()
|
||||||
@ -336,7 +336,7 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* getEth
|
* getEth
|
||||||
*
|
*
|
||||||
* @return \Web3\Eth
|
* @return \Web3\Eth
|
||||||
*/
|
*/
|
||||||
public function getEth()
|
public function getEth()
|
||||||
@ -346,7 +346,7 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* setBytecode
|
* setBytecode
|
||||||
*
|
*
|
||||||
* @param string $bytecode
|
* @param string $bytecode
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
@ -357,7 +357,7 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* setToAddress
|
* setToAddress
|
||||||
*
|
*
|
||||||
* @param string $bytecode
|
* @param string $bytecode
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
@ -368,7 +368,7 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* at
|
* at
|
||||||
*
|
*
|
||||||
* @param string $address
|
* @param string $address
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
@ -384,7 +384,7 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* bytecode
|
* bytecode
|
||||||
*
|
*
|
||||||
* @param string $bytecode
|
* @param string $bytecode
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
@ -400,7 +400,7 @@ class Contract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* abi
|
* abi
|
||||||
*
|
*
|
||||||
* @param string $abi
|
* @param string $abi
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
@ -439,7 +439,7 @@ class Contract
|
|||||||
/**
|
/**
|
||||||
* new
|
* new
|
||||||
* Deploy a contruct with params.
|
* Deploy a contruct with params.
|
||||||
*
|
*
|
||||||
* @param mixed
|
* @param mixed
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
@ -481,7 +481,7 @@ class Contract
|
|||||||
/**
|
/**
|
||||||
* send
|
* send
|
||||||
* Send function method.
|
* Send function method.
|
||||||
*
|
*
|
||||||
* @param mixed
|
* @param mixed
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
@ -490,7 +490,6 @@ class Contract
|
|||||||
if (isset($this->functions)) {
|
if (isset($this->functions)) {
|
||||||
$arguments = func_get_args();
|
$arguments = func_get_args();
|
||||||
$method = array_splice($arguments, 0, 1)[0];
|
$method = array_splice($arguments, 0, 1)[0];
|
||||||
$callback = array_pop($arguments);
|
|
||||||
|
|
||||||
if (!is_string($method)) {
|
if (!is_string($method)) {
|
||||||
throw new InvalidArgumentException('Please make sure the method is string.');
|
throw new InvalidArgumentException('Please make sure the method is string.');
|
||||||
@ -505,8 +504,17 @@ class Contract
|
|||||||
if (count($functions) < 1) {
|
if (count($functions) < 1) {
|
||||||
throw new InvalidArgumentException('Please make sure the method exists.');
|
throw new InvalidArgumentException('Please make sure the method exists.');
|
||||||
}
|
}
|
||||||
if (is_callable($callback) !== true) {
|
/* if (is_callable($callback) !== true) {
|
||||||
throw new \InvalidArgumentException('The last param must be callback function.');
|
throw new \InvalidArgumentException('The last param must be callback function.');
|
||||||
|
}*/
|
||||||
|
if ($this->eth->provider->isBatch) {
|
||||||
|
$callback = null;
|
||||||
|
} else {
|
||||||
|
$callback = array_pop($arguments);
|
||||||
|
|
||||||
|
if (is_callable($callback) !== true) {
|
||||||
|
throw new \InvalidArgumentException('The last param must be callback function.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// check the last one in arguments is transaction object
|
// check the last one in arguments is transaction object
|
||||||
@ -564,12 +572,16 @@ class Contract
|
|||||||
$transaction['to'] = $this->toAddress;
|
$transaction['to'] = $this->toAddress;
|
||||||
$transaction['data'] = $functionSignature . Utils::stripZero($data);
|
$transaction['data'] = $functionSignature . Utils::stripZero($data);
|
||||||
|
|
||||||
$this->eth->sendTransaction($transaction, function ($err, $transaction) use ($callback){
|
if ($this->eth->provider->isBatch) {
|
||||||
if ($err !== null) {
|
$this->eth->sendTransaction($transaction);
|
||||||
return call_user_func($callback, $err, null);
|
} else {
|
||||||
}
|
$this->eth->sendTransaction($transaction, function ($err, $transaction) use ($callback){
|
||||||
return call_user_func($callback, null, $transaction);
|
if ($err !== null) {
|
||||||
});
|
return call_user_func($callback, $err, null);
|
||||||
|
}
|
||||||
|
return call_user_func($callback, null, $transaction);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -672,7 +684,7 @@ class Contract
|
|||||||
/**
|
/**
|
||||||
* estimateGas
|
* estimateGas
|
||||||
* Estimate function gas.
|
* Estimate function gas.
|
||||||
*
|
*
|
||||||
* @param mixed
|
* @param mixed
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
@ -708,7 +720,7 @@ class Contract
|
|||||||
if (!is_string($method)) {
|
if (!is_string($method)) {
|
||||||
throw new InvalidArgumentException('Please make sure the method is string.');
|
throw new InvalidArgumentException('Please make sure the method is string.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$functions = [];
|
$functions = [];
|
||||||
foreach ($this->functions as $function) {
|
foreach ($this->functions as $function) {
|
||||||
if ($function["name"] === $method) {
|
if ($function["name"] === $method) {
|
||||||
@ -721,7 +733,7 @@ class Contract
|
|||||||
if (is_callable($callback) !== true) {
|
if (is_callable($callback) !== true) {
|
||||||
throw new \InvalidArgumentException('The last param must be callback function.');
|
throw new \InvalidArgumentException('The last param must be callback function.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// check the last one in arguments is transaction object
|
// check the last one in arguments is transaction object
|
||||||
$argsLen = count($arguments);
|
$argsLen = count($arguments);
|
||||||
$transaction = [];
|
$transaction = [];
|
||||||
@ -794,7 +806,7 @@ class Contract
|
|||||||
* 1. Get the funtion data with params.
|
* 1. Get the funtion data with params.
|
||||||
* 2. Sign the data with user private key.
|
* 2. Sign the data with user private key.
|
||||||
* 3. Call sendRawTransaction.
|
* 3. Call sendRawTransaction.
|
||||||
*
|
*
|
||||||
* @param mixed
|
* @param mixed
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
@ -822,7 +834,7 @@ class Contract
|
|||||||
if (!is_string($method)) {
|
if (!is_string($method)) {
|
||||||
throw new InvalidArgumentException('Please make sure the method is string.');
|
throw new InvalidArgumentException('Please make sure the method is string.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$functions = [];
|
$functions = [];
|
||||||
foreach ($this->functions as $function) {
|
foreach ($this->functions as $function) {
|
||||||
if ($function["name"] === $method) {
|
if ($function["name"] === $method) {
|
||||||
@ -832,7 +844,7 @@ class Contract
|
|||||||
if (count($functions) < 1) {
|
if (count($functions) < 1) {
|
||||||
throw new InvalidArgumentException('Please make sure the method exists.');
|
throw new InvalidArgumentException('Please make sure the method exists.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$params = $arguments;
|
$params = $arguments;
|
||||||
$data = "";
|
$data = "";
|
||||||
$functionName = "";
|
$functionName = "";
|
||||||
|
Loading…
Reference in New Issue
Block a user