|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace BitWasp\Bitcoin\Script; |
|
4
|
|
|
|
|
5
|
|
|
use BitWasp\Bitcoin\Bitcoin; |
|
6
|
|
|
use BitWasp\Bitcoin\Math\Math; |
|
7
|
|
|
use BitWasp\Bitcoin\Script\Factory\InputScriptFactory; |
|
8
|
|
|
use BitWasp\Bitcoin\Script\Factory\OutputScriptFactory; |
|
9
|
|
|
use BitWasp\Bitcoin\Script\Factory\P2shScriptFactory; |
|
10
|
|
|
use BitWasp\Bitcoin\Script\Factory\ScriptCreator; |
|
11
|
|
|
use BitWasp\Bitcoin\Script\Factory\ScriptInfoFactory; |
|
12
|
|
|
use BitWasp\Buffertools\Buffer; |
|
13
|
|
|
|
|
14
|
|
|
class ScriptFactory |
|
15
|
|
|
{ |
|
16
|
|
|
/** |
|
17
|
|
|
* @param Buffer|null $buffer |
|
18
|
|
|
* @param Opcodes|null $opcodes |
|
19
|
|
|
* @param Math|null $math |
|
20
|
|
|
* @return ScriptCreator |
|
21
|
|
|
*/ |
|
22
|
1125 |
|
public static function create(Buffer $buffer = null, Opcodes $opcodes = null, Math $math = null) |
|
23
|
|
|
{ |
|
24
|
1125 |
|
return new ScriptCreator($math ?: Bitcoin::getMath(), $opcodes ?: new Opcodes(), $buffer); |
|
25
|
|
|
} |
|
26
|
|
|
|
|
27
|
|
|
/** |
|
28
|
|
|
* @return InputScriptFactory |
|
29
|
|
|
*/ |
|
30
|
93 |
|
public static function scriptSig() |
|
31
|
|
|
{ |
|
32
|
93 |
|
return new InputScriptFactory(); |
|
33
|
|
|
} |
|
34
|
|
|
|
|
35
|
|
|
/** |
|
36
|
|
|
* @return OutputScriptFactory |
|
37
|
|
|
*/ |
|
38
|
321 |
|
public static function scriptPubKey() |
|
39
|
|
|
{ |
|
40
|
321 |
|
return new OutputScriptFactory(); |
|
41
|
|
|
} |
|
42
|
|
|
|
|
43
|
|
|
/** |
|
44
|
|
|
* @return P2shScriptFactory |
|
45
|
|
|
*/ |
|
46
|
|
|
public static function p2sh() |
|
47
|
|
|
{ |
|
48
|
|
|
return new P2shScriptFactory(self::scriptPubKey()); |
|
49
|
|
|
} |
|
50
|
|
|
|
|
51
|
|
|
/** |
|
52
|
|
|
* @param ScriptInterface $script |
|
53
|
|
|
* @param ScriptInterface|null $redeemScript |
|
54
|
|
|
* @return ScriptInfo\ScriptInfoInterface |
|
55
|
|
|
*/ |
|
56
|
135 |
|
public static function info(ScriptInterface $script, ScriptInterface $redeemScript = null) |
|
57
|
|
|
{ |
|
58
|
135 |
|
return (new ScriptInfoFactory())->load($script, $redeemScript); |
|
59
|
|
|
} |
|
60
|
|
|
|
|
61
|
|
|
/** |
|
62
|
|
|
* @param Buffer|string $string |
|
63
|
|
|
* @return Script |
|
64
|
|
|
*/ |
|
65
|
708 |
|
public static function fromHex($string) |
|
66
|
|
|
{ |
|
67
|
708 |
|
return self::create($string instanceof Buffer ? $string : Buffer::hex($string))->getScript(); |
|
68
|
|
|
} |
|
69
|
|
|
} |
|
70
|
|
|
|