Completed
Pull Request — master (#118)
by Ruben de
09:49 queued 04:39
created

AddressReaderBase::readBase58()   A

Complexity

Conditions 4
Paths 9

Size

Total Lines 14
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 4.1755

Importance

Changes 0
Metric Value
cc 4
eloc 10
nc 9
nop 2
dl 0
loc 14
ccs 7
cts 9
cp 0.7778
crap 4.1755
rs 9.2
c 0
b 0
f 0
1
<?php
2
3
namespace Blocktrail\SDK\Address;
4
5
use BitWasp\Bitcoin\Address\AddressInterface;
6
use BitWasp\Bitcoin\Address\PayToPubKeyHashAddress;
7
use BitWasp\Bitcoin\Address\ScriptHashAddress;
8
use BitWasp\Bitcoin\Base58;
9
use BitWasp\Bitcoin\Network\NetworkInterface;
10
use BitWasp\Bitcoin\Script\ScriptInterface;
11
12
abstract class AddressReaderBase
13
{
14
    /**
15
     * @param string $strAddress
16
     * @param NetworkInterface $network
17
     * @return PayToPubKeyHashAddress|ScriptHashAddress|null
18
     */
19 17
    protected function readBase58($strAddress, NetworkInterface $network) {
20
        try {
21 17
            $data = Base58::decodeCheck($strAddress);
22 17
            $prefixByte = $data->slice(0, 1)->getHex();
23
24 17
            if ($prefixByte === $network->getP2shByte()) {
25 17
                return new ScriptHashAddress($data->slice(1));
26
            } else if ($prefixByte === $network->getAddressByte()) {
27
                return new PayToPubKeyHashAddress($data->slice(1));
28
            }
29 2
        } catch (\Exception $e) {
0 ignored issues
show
Coding Style Comprehensibility introduced by
Consider adding a comment why this CATCH block is empty.
Loading history...
30
        }
31 2
        return null;
32
    }
33
34
    /**
35
     * @param $strAddress
36
     * @param NetworkInterface|null $network
37
     * @return AddressInterface
38
     */
39
    abstract public function fromString($strAddress, NetworkInterface $network = null);
40
41
    /**
42
     * @param ScriptInterface $script
43
     * @return AddressInterface
44
     */
45
    abstract public function fromOutputScript(ScriptInterface $script);
46
}
47