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
|
|
|
|