upgrade to phpseclib3

This commit is contained in:
Developer Team - emroc GmbH 2022-04-28 15:42:30 +00:00
parent 1b73688a8e
commit 6cfcc24bb5
9 changed files with 22 additions and 40 deletions

View File

@ -13,7 +13,7 @@
"guzzlehttp/guzzle": "^6.3|^7.0", "guzzlehttp/guzzle": "^6.3|^7.0",
"PHP": "^7.2|^8.0", "PHP": "^7.2|^8.0",
"kornrunner/keccak": "~1.0", "kornrunner/keccak": "~1.0",
"phpseclib/phpseclib": "~2.0.30", "phpseclib/phpseclib": "~3.0",
"ext-mbstring": "*" "ext-mbstring": "*"
}, },
"require-dev": { "require-dev": {

View File

@ -11,11 +11,12 @@
namespace Web3; namespace Web3;
use phpseclib3\Math\BigInteger;
use RuntimeException; use RuntimeException;
use InvalidArgumentException; use InvalidArgumentException;
use stdClass; use stdClass;
use kornrunner\Keccak; use kornrunner\Keccak;
use phpseclib\Math\BigInteger as BigNumber; use phpseclib3\Math\BigInteger as BigNumber;
class Utils class Utils
{ {
@ -293,7 +294,7 @@ class Utils
* *
* @param BigNumber|string $number * @param BigNumber|string $number
* @param string $unit * @param string $unit
* @return \phpseclib\Math\BigInteger * @return \phpseclib3\Math\BigInteger
*/ */
public static function toWei($number, $unit) public static function toWei($number, $unit)
{ {
@ -319,26 +320,7 @@ class Utils
} }
$whole = $whole->multiply($bnt); $whole = $whole->multiply($bnt);
// There is no pow function in phpseclib 2.0, only can see in dev-master $base = (new BigNumber(10))->pow(new BigNumber($fractionLength));
// Maybe implement own biginteger in the future
// See 2.0 BigInteger: https://github.com/phpseclib/phpseclib/blob/2.0/phpseclib/Math/BigInteger.php
// See dev-master BigInteger: https://github.com/phpseclib/phpseclib/blob/master/phpseclib/Math/BigInteger.php#L700
// $base = (new BigNumber(10))->pow(new BigNumber($fractionLength));
// So we switch phpseclib special global param, change in the future
switch (MATH_BIGINTEGER_MODE) {
case $whole::MODE_GMP:
static $two;
$powerBase = gmp_pow(gmp_init(10), (int) $fractionLength);
break;
case $whole::MODE_BCMATH:
$powerBase = bcpow('10', (string) $fractionLength, 0);
break;
default:
$powerBase = pow(10, (int) $fractionLength);
break;
}
$base = new BigNumber($powerBase);
$fraction = $fraction->multiply($bnt)->divide($base)[0]; $fraction = $fraction->multiply($bnt)->divide($base)[0];
if ($negative1 !== false) { if ($negative1 !== false) {
@ -381,7 +363,7 @@ class Utils
* *
* @param BigNumber|string|int $number * @param BigNumber|string|int $number
* @param string $unit * @param string $unit
* @return \phpseclib\Math\BigInteger * @return \phpseclib3\Math\BigInteger
*/ */
public static function fromWei($number, $unit) public static function fromWei($number, $unit)
{ {
@ -484,7 +466,7 @@ class Utils
* Change number or number string to bignumber. * Change number or number string to bignumber.
* *
* @param BigNumber|string|int $number * @param BigNumber|string|int $number
* @return array|\phpseclib\Math\BigInteger * @return array|\phpseclib3\Math\BigInteger
*/ */
public static function toBn($number) public static function toBn($number)
{ {

View File

@ -3,7 +3,7 @@
namespace Test\Unit; namespace Test\Unit;
use Test\TestCase; use Test\TestCase;
use phpseclib\Math\BigInteger as BigNumber; use phpseclib3\Math\BigInteger as BigNumber;
use Web3\Formatters\BigNumberFormatter; use Web3\Formatters\BigNumberFormatter;
class BigNumberFormatterTest extends TestCase class BigNumberFormatterTest extends TestCase

View File

@ -10,7 +10,7 @@ use Web3\Contract;
use Web3\Utils; use Web3\Utils;
use Web3\Contracts\Ethabi; use Web3\Contracts\Ethabi;
use Web3\Formatters\IntegerFormatter; use Web3\Formatters\IntegerFormatter;
use phpseclib\Math\BigInteger as BigNumber; use phpseclib3\Math\BigInteger as BigNumber;
class ContractTest extends TestCase class ContractTest extends TestCase
{ {

View File

@ -5,7 +5,7 @@ namespace Test\Unit;
use RuntimeException; use RuntimeException;
use InvalidArgumentException; use InvalidArgumentException;
use Test\TestCase; use Test\TestCase;
use phpseclib\Math\BigInteger as BigNumber; use phpseclib3\Math\BigInteger as BigNumber;
class EthApiTest extends TestCase class EthApiTest extends TestCase
{ {

View File

@ -4,7 +4,7 @@ namespace Test\Unit;
use RuntimeException; use RuntimeException;
use Test\TestCase; use Test\TestCase;
use phpseclib\Math\BigInteger as BigNumber; use phpseclib3\Math\BigInteger as BigNumber;
class EthBatchTest extends TestCase class EthBatchTest extends TestCase
{ {

View File

@ -5,7 +5,7 @@ namespace Test\Unit;
use RuntimeException; use RuntimeException;
use InvalidArgumentException; use InvalidArgumentException;
use Test\TestCase; use Test\TestCase;
use phpseclib\Math\BigInteger as BigNumber; use phpseclib3\Math\BigInteger as BigNumber;
class NetApiTest extends TestCase class NetApiTest extends TestCase
{ {

View File

@ -4,7 +4,7 @@ namespace Test\Unit;
use RuntimeException; use RuntimeException;
use Test\TestCase; use Test\TestCase;
use phpseclib\Math\BigInteger as BigNumber; use phpseclib3\Math\BigInteger as BigNumber;
class NetBatchTest extends TestCase class NetBatchTest extends TestCase
{ {

View File

@ -5,7 +5,7 @@ namespace Test\Unit;
use InvalidArgumentException; use InvalidArgumentException;
use stdClass; use stdClass;
use Test\TestCase; use Test\TestCase;
use phpseclib\Math\BigInteger as BigNumber; use phpseclib3\Math\BigInteger as BigNumber;
use Web3\Utils; use Web3\Utils;
use Web3\Contract; use Web3\Contract;