コード例 #1
0
 public function testNetworkSerializable()
 {
     $factory = new Factory(Bitcoin::getDefaultNetwork(), new Random());
     $filterclear = $factory->filterclear();
     $serialized = $filterclear->getNetworkMessage()->getBuffer();
     $parsed = $factory->parse(new Parser($serialized))->getPayload();
     $this->assertEquals($parsed, $filterclear);
 }
コード例 #2
0
ファイル: InvTest.php プロジェクト: tokenly/bitcoin-p2p-php
 public function testNetworkSerializer()
 {
     $net = Bitcoin::getDefaultNetwork();
     $factory = new Factory($net, new Random());
     $inv = $factory->inv([new Inventory(Inventory::MSG_BLOCK, Buffer::hex('4141414141414141414141414141414141414141414141414141414141414141'))]);
     $serialized = $inv->getNetworkMessage()->getBuffer();
     $parsed = $factory->parse(new Parser($serialized))->getPayload();
     $this->assertEquals($inv, $parsed);
 }
コード例 #3
0
 public function testNetworkSerializer()
 {
     $net = Bitcoin::getDefaultNetwork();
     $factory = new Factory($net, new Random());
     $locator = new BlockLocator([Buffer::hex('4141414141414141414141414141414141414141414141414141414141414141')], Buffer::hex('0000000000000000000000000000000000000000000000000000000000000000'));
     $getblocks = $factory->getblocks('1', $locator);
     $serialized = $getblocks->getNetworkMessage()->getBuffer();
     $parsed = $factory->parse(new Parser($serialized))->getPayload();
     $this->assertEquals($getblocks, $parsed);
 }
コード例 #4
0
 public function testNetworkSerialize()
 {
     $math = new Math();
     $factory = new Factory(Bitcoin::getDefaultNetwork(), new Random());
     $filter = BloomFilter::create($math, 10, 1.0E-6, 0, new Flags(BloomFilter::UPDATE_ALL));
     $filter->insertData(Buffer::hex('04943fdd508053c75000106d3bc6e2754dbcff19'));
     $filterload = $factory->filterload($filter);
     $serialized = $filterload->getNetworkMessage()->getBuffer();
     $parsed = $factory->parse(new Parser($serialized))->getPayload();
     $this->assertEquals($parsed, $filterload);
 }
コード例 #5
0
ファイル: Peer.php プロジェクト: Bit-Wasp/bitcoin-p2p-php
 /**
  * Handler for incoming data. Buffers possibly fragmented packets since they arrive sequentially.
  * Before finishing the version exchange, this will only emit Version and VerAck messages.
  */
 private function onData()
 {
     $tmp = $this->buffer;
     $parser = new Parser(new Buffer($tmp));
     try {
         while ($message = $this->msgs->parse($parser)) {
             $tmp = $parser->getBuffer()->slice($parser->getPosition())->getBinary();
             $this->emit('msg', [$this, $message]);
         }
     } catch (\Exception $e) {
         $this->buffer = $tmp;
         // Do nothing - it was probably a fragmented message
     }
 }
コード例 #6
0
 public function testMerkleBlock()
 {
     $factory = new Factory(NetworkFactory::bitcoin(), new Random());
     $hex = '0100000079cda856b143d9db2c1caff01d1aecc8630d30625d10e8b4b8b0000000000000b50cc069d6a3e33e3ff84a5c41d9d3febe7c770fdcc96b2c3ff60abe184f196367291b4d4c86041b8fa45d630101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff08044c86041b020a02ffffffff0100f2052a01000000434104ecd3229b0571c3be876feaac0442a9f13c5a572742927af1dc623353ecf8c202225f64868137a18cdd85cbbb4c74fbccfd4f49639cf1bdc94a5672bb15ad5d4cac00000000';
     $block = BlockFactory::fromHex($hex);
     $math = new Math();
     $filter = BloomFilter::create($math, 10, 1.0E-6, 0, new Flags(BloomFilter::UPDATE_ALL));
     $filter->insertHash('63194f18be0af63f2c6bc9dc0f777cbefed3d9415c4af83f3ee3a3d669c00cb5');
     // Check that Merkleblock message is serialized correctly
     $filtered = $block->filter($filter);
     $this->assertEquals($block->getHeader(), $filtered->getHeader());
     $merkle = $factory->merkleblock($filtered);
     $serialized = $merkle->getNetworkMessage()->getBuffer();
     $parsed = $factory->parse(new Parser($serialized))->getPayload();
     $this->assertEquals($merkle, $parsed);
 }
コード例 #7
0
ファイル: Peer.php プロジェクト: tokenly/bitcoin-p2p-php
 /**
  * Handler for incoming data. Buffers possibly fragmented packets since they arrive sequentially.
  * Before finishing the version exchange, this will only emit Version and VerAck messages.
  */
 private function onData()
 {
     $tmp = $this->buffer;
     $parser = new Parser(new Buffer($tmp));
     try {
         while ($message = $this->msgs->parse($parser)) {
             $tmp = $parser->getBuffer()->slice($parser->getPosition())->getBinary();
             $command = $message->getCommand();
             if ($this->exchangedVersion || ($command == 'version' || $command == 'verack')) {
                 $this->emit('msg', [$this, $message]);
             }
         }
     } catch (\Exception $e) {
         $this->buffer = $tmp;
         // Do nothing - it was probably a fragmented message
     }
 }