TestCommand.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Models\Contract;
  4. use App\Models\MemberClan;
  5. use App\Servers\ContractServer;
  6. use App\Servers\Icon\BanRPC;
  7. use App\Servers\Icon\Utils;
  8. use BitWasp\Bitcoin\Bitcoin;
  9. use BitWasp\Bitcoin\Address\PayToPubKeyHashAddress;
  10. use BitWasp\Bitcoin\Crypto\Random\Random;
  11. use BitWasp\Bitcoin\Key\Factory\HierarchicalKeyFactory;
  12. use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39Mnemonic;
  13. use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39SeedGenerator;
  14. use BitWasp\Bitcoin\Mnemonic\MnemonicFactory;
  15. use Illuminate\Console\Command;
  16. use Web3p\EthereumUtil\Util;
  17. class TestCommand extends Command
  18. {
  19. /**
  20. * The name and signature of the console command.
  21. *
  22. * @var string
  23. */
  24. protected $signature = 'test:a';
  25. /**
  26. * The console command description.
  27. *
  28. * @var string
  29. */
  30. protected $description = 'Command description';
  31. /**
  32. * Create a new command instance.
  33. *
  34. * @return void
  35. */
  36. public function __construct()
  37. {
  38. parent::__construct();
  39. }
  40. /**
  41. * Execute the console command.
  42. *
  43. * @return mixed
  44. */
  45. public function handle()
  46. {
  47. dd(Utils::hex2dec('0x12a05f200'));
  48. // $bnb_block = BanRPC::creatServer()->sendBlockNumber();
  49. // dd($bnb_block);
  50. $random = new Random();
  51. // 生成随机数(initial entropy)
  52. $entropy = $random->bytes(Bip39Mnemonic::MIN_ENTROPY_BYTE_LEN);
  53. $bip39 = MnemonicFactory::bip39();
  54. // 通过随机数生成助记词
  55. $mnemonic = $bip39->entropyToMnemonic($entropy);
  56. echo "mnemonic: " . $mnemonic.PHP_EOL.PHP_EOL;// 助记词
  57. $seedGenerator = new Bip39SeedGenerator();
  58. // 通过助记词生成种子,传入可选加密串'hello'
  59. $seed = $seedGenerator->getSeed($mnemonic);
  60. echo "seed: " . $seed->getHex() . PHP_EOL;
  61. $hdFactory = new HierarchicalKeyFactory();
  62. $master = $hdFactory->fromEntropy($seed);
  63. $hardened = $master->derivePath("44'/60'/0'/0/0");
  64. echo 'WIF: ' . $hardened->getPrivateKey()->toWif();
  65. echo PHP_EOL;
  66. $address = new PayToPubKeyHashAddress($hardened->getPublicKey()->getPubKeyHash());
  67. echo 'address: ' . $address->getAddress();
  68. echo PHP_EOL;
  69. echo " - m/44'/60'/0'/0/0 " .PHP_EOL;
  70. echo " public key: " . $hardened->getPublicKey()->getHex().PHP_EOL;
  71. echo " private key: " . $hardened->getPrivateKey()->getHex().PHP_EOL;// 可以导入到imtoken使用的私钥
  72. $util = new Util();
  73. echo " address: " . $util->publicKeyToAddress($util->privateKeyToPublicKey($hardened->getPrivateKey()->getHex())) . PHP_EOL;// 私钥导入imtoken后一样的地址
  74. dd(1221);
  75. // ContractServer::creatServer()->verifyContractCommon();
  76. // dd(12);
  77. // $ids=Member::where('id','>',1)->pluck('id')->toArray();
  78. // MemberServer::creatServer()->verificationLevel($ids);
  79. $contract=Contract::where('id',33)->first();
  80. $memberTeam=MemberClan::where('m_id',$contract->{'m_id'})->select(['id','m_id','p_ids','one_m_id','two_m_id'])->first();
  81. $pIds=array_reverse(array_filter(explode(',',$memberTeam->{'p_ids'})));
  82. dd($contract,$pIds);
  83. ContractServer::creatServer()->teamProportion($contract,$pIds);
  84. dd(1221);
  85. // $data=Address::generate();
  86. // dd($data);
  87. // for ($i=0;$i<=23;++$i){
  88. // $address='0x848da9d7fcbfe80afc47b4383f178184589acfa9';
  89. // $p_member= Member::orderBy('id','desc')->select(['id', 'address'])->first();
  90. // $ret = MemberServer::creatServer()->register($i.$address, $p_member->{'id'}, '', '');
  91. // }
  92. // $ret=BanRPC::creatServer()->getTransactionReceipt('0xc47a91e730e44c1beb80182f69c117b74dfdf9e6b2fdbb81def8bc704cd0cb5b');
  93. // dd($ret);
  94. }
  95. }