/**
  * @param $coinSymbol
  * @return \BitWasp\Bitcoin\Network\Network
  * @throws \Exception
  */
 public static function getNetwork($coinSymbol)
 {
     CoinSymbolValidator::validate($coinSymbol, 'coinSymbol');
     $network = null;
     switch ($coinSymbol) {
         case 'btc':
             $network = NetworkFactory::bitcoin();
             break;
         case 'btc-testnet':
             $network = NetworkFactory::bitcoinTestnet();
             break;
         case 'ltc':
             $network = NetworkFactory::litecoin();
             break;
         case 'doge':
             $network = NetworkFactory::create('1e', '16', '9e')->setHDPubByte('02fd3929')->setHDPrivByte('02fd3955')->setNetMagicBytes('c0c0c0c0');
             break;
         case 'uro':
             // NetMagicBytes: https://github.com/urocoin/uro/blob/319de97bbd56a10a3b2dca5b36be0c7a9c6603ae/src/main.cpp#L3233
             throw new \Exception("Unsupported coin symbol: {$coinSymbol}");
             break;
         case 'bcy':
             // TODO: check ef, 043587cf, 04358394, d9b4bef9 values
             // not used for the time being
             $network = NetworkFactory::create('1b', '1f', 'ef', true)->setHDPubByte('043587cf')->setHDPrivByte('04358394')->setNetMagicBytes('d9b4bef9');
             break;
         default:
             throw new \Exception("Unsupported coin symbol: {$coinSymbol} by php-client");
     }
     return $network;
 }
Ejemplo n.º 2
0
 /**
  * @param string[] $hexPrivateKeys
  * @param string
  * @param bool $compressed True if the public key should be using compressed format
  * @return PrivateKeyList
  * @throws \BlockCypher\Exception\BlockCypherInvalidPrivateKeyException
  */
 public static function fromHexPrivateKeyArray($hexPrivateKeys, $coinSymbol, $compressed = true)
 {
     ArgumentArrayValidator::validate($hexPrivateKeys, 'hexPrivateKeys');
     CoinSymbolValidator::validate($coinSymbol, 'coinSymbol');
     $privateKeyList = new self($coinSymbol);
     foreach ($hexPrivateKeys as $hexPrivateKey) {
         $privateKey = PrivateKeyManipulator::importPrivateKeyFromHex($hexPrivateKey, $compressed);
         // Add private key indexed by public key
         $privateKeyList->addPrivateKey($privateKey);
     }
     return $privateKeyList;
 }
Ejemplo n.º 3
0
 /**
  *
  * @dataProvider invalidProvider
  * @expectedException \InvalidArgumentException
  */
 public function testInvalidDataValidate($input)
 {
     $this->assertTrue(CoinSymbolValidator::validate($input, "Name"));
 }
Ejemplo n.º 4
0
 /**
  * @param PrivateKeyInterface $privateKey
  * @param string $coinSymbol
  * @return mixed
  * @throws \Exception
  */
 public static function getAddressFromPrivateKey($privateKey, $coinSymbol)
 {
     CoinSymbolValidator::validate($coinSymbol, 'coinSymbol');
     $network = CoinSymbolNetworkMapping::getNetwork($coinSymbol);
     $publicKey = $privateKey->getPublicKey();
     $address = $publicKey->getAddress()->getAddress($network);
     return $address;
 }