Esempio n. 1
-1
 protected function discover_wallet_addrs_single($x_pub_key)
 {
     $params = $this->get_params();
     $math = Bitcoin::getMath();
     $network = Bitcoin::getNetwork();
     //$x_pub_key = '1LSedCD6AFWJaZXF2qR8jZobaGx3jN6akv';
     $master = HierarchicalKeyFactory::fromExtended($x_pub_key, $network);
     /*        
     echo "Master Public Key (m)\n";
     echo "   " . $master->toExtendedPublicKey($network) . "\n";
     echo "   Address: " . $master->getPublicKey()->getAddress()->getAddress() . "\n";
     echo sprintf( "   depth: %s, sequence: %s\n\n", $master->getDepth(), $master->getSequence() );
     */
     return $this->discover_addrs($master);
 }
 public function newMasterKey($seed_hex_string)
 {
     return HierarchicalKeyFactory::fromEntropy(new Buffer(hex2bin($seed_hex_string)));
 }
Esempio n. 3
-1
<?php

use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Address;
use BitWasp\Bitcoin\Key\Deterministic\HierarchicalKeyFactory;
require __DIR__ . "/../vendor/autoload.php";
$math = Bitcoin::getMath();
$network = Bitcoin::getNetwork();
$master = HierarchicalKeyFactory::generateMasterKey();
echo "Master key (m)\n";
echo "   " . $master->toExtendedPrivateKey($network) . "\n";
echo "   Address: " . $master->getPublicKey()->getAddress()->getAddress() . "\n\n";
echo "Derive sequential keys:\n";
$key1 = $master->deriveChild(0);
echo " - m/0' " . $key1->toExtendedPrivateKey($network) . "\n";
echo "   Address: " . $key1->getPublicKey()->getAddress()->getAddress() . "\n\n";
$key2 = $key1->deriveChild(999999);
echo " - m/0'/999999 " . $key2->toExtendedPublicKey($network) . "\n";
echo "   Address: " . $key2->getPublicKey()->getAddress()->getAddress() . "\n\n";
echo "Directly derive path\n";
$sameKey2 = $master->derivePath("0'/999999");
echo " - m/0'/999999 " . $sameKey2->toExtendedPublicKey() . "\n";
echo "   Address: " . $sameKey2->getPublicKey()->getAddress()->getAddress() . "\n\n";
Esempio n. 4
-1
<?php

require "../vendor/autoload.php";
use BitWasp\Bitcoin\Mnemonic\MnemonicFactory;
use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39SeedGenerator;
function status(\BitWasp\Bitcoin\Key\Deterministic\MultisigHD $hd)
{
    echo "Path: " . $hd->getPath() . "\n";
    echo "Keys: \n";
    foreach ($hd->getKeys() as $key) {
        echo " - " . $key->toExtendedKey() . "\n";
    }
    echo "Script: " . $hd->getRedeemScript()->getScriptParser()->getHumanReadable() . "\n";
    echo "Address: " . $hd->getAddress()->getAddress() . "\n";
    echo "\n";
}
$ec = \BitWasp\Bitcoin\Bitcoin::getEcAdapter();
$bip39 = (new MnemonicFactory())->bip39();
$seed = new Bip39SeedGenerator($bip39);
$s = [];
$k = [];
for ($i = 0; $i < 3; $i++) {
    $s[$i] = $seed->getSeed($bip39->create());
    $k[$i] = \BitWasp\Bitcoin\Key\Deterministic\HierarchicalKeyFactory::fromEntropy($s[$i]);
}
$sequences = new \BitWasp\Bitcoin\Key\Deterministic\HierarchicalKeySequence($ec->getMath());
$hd = new \BitWasp\Bitcoin\Key\Deterministic\MultisigHD(2, 'm', $k, $sequences, true);
status($hd);
$new = $hd->derivePath("0/1h/2");
status($new);
Esempio n. 5
-1
        } else {
            if ($item->isTx()) {
                $txs[] = '';
            } else {
                if ($item->isFilteredBlock()) {
                    $filtered[] = '';
                }
            }
        }
    }
    if (count($blks) > 0 || count($filtered) > 0) {
        echo " [blocks: " . count($blks) . ", txs: " . count($txs) . ", filtered: " . count($filtered) . "]\n";
    }
}
$math = BitWasp\Bitcoin\Bitcoin::getMath();
$key = \BitWasp\Bitcoin\Key\Deterministic\HierarchicalKeyFactory::fromEntropy(new Buffer('this random sentence can be used to form a private key trololol123'));
$hd = $key->deriveChild(1);
$publicKey = $hd->getPublicKey();
echo $publicKey->getAddress()->getAddress() . "\n";
$flags = new Flags(BloomFilter::UPDATE_P2PUBKEY_ONLY);
$filter = BloomFilter::create($math, 1, 1, 1, $flags);
$filter->insertData($publicKey->getBuffer());
$loop = React\EventLoop\Factory::create();
$factory = new \BitWasp\Bitcoin\Networking\Factory($loop);
$dns = $factory->getDns();
$peerFactory = $factory->getPeerFactory($dns);
$host = $peerFactory->getAddress('192.168.192.101');
$local = $peerFactory->getAddress('192.168.192.39', 32301);
$peers = $peerFactory->getLocator();
$manager = $peerFactory->getManager($peers);
$manager->on('outbound', function (Peer $peer) use(&$node, $filter) {
Esempio n. 6
-2
<?php

require_once "../vendor/autoload.php";
use BitWasp\Bitcoin\Crypto\Random\Random;
use BitWasp\Bitcoin\Mnemonic\MnemonicFactory;
use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39SeedGenerator;
// Generate a mnemonic
$random = new Random();
$entropy = $random->bytes(64);
$bip39 = MnemonicFactory::bip39();
$seedGenerator = new Bip39SeedGenerator($bip39);
$mnemonic = $bip39->entropyToMnemonic($entropy);
// Derive a seed from mnemonic/password
$seed = $seedGenerator->getSeed($mnemonic, 'password');
echo $seed->getHex() . "\n";
$bip32 = \BitWasp\Bitcoin\Key\Deterministic\HierarchicalKeyFactory::fromEntropy($seed);