-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathDbInterface.php
More file actions
189 lines (162 loc) · 4.93 KB
/
Copy pathDbInterface.php
File metadata and controls
189 lines (162 loc) · 4.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<?php
namespace BitWasp\Bitcoin\Node\Db;
use BitWasp\Bitcoin\Block\Block;
use BitWasp\Bitcoin\Block\BlockHeaderInterface;
use BitWasp\Bitcoin\Block\BlockInterface;
use BitWasp\Bitcoin\Node\Chain\BlockIndexInterface;
use BitWasp\Bitcoin\Node\Chain\ChainSegment;
use BitWasp\Bitcoin\Node\Chain\ChainViewInterface;
use BitWasp\Bitcoin\Node\HashStorage;
use BitWasp\Bitcoin\Node\Index\Validation\BlockAcceptData;
use BitWasp\Bitcoin\Node\Index\Validation\BlockData;
use BitWasp\Bitcoin\Node\Index\Validation\HeadersBatch;
use BitWasp\Bitcoin\Serializer\Block\BlockSerializerInterface;
use BitWasp\Bitcoin\Serializer\Transaction\OutPointSerializerInterface;
use BitWasp\Bitcoin\Transaction\TransactionInterface;
use BitWasp\Buffertools\BufferInterface;
interface DbInterface
{
/**
* @return \PDO
*/
public function getPdo();
/**
*
*/
public function stop();
/**
* @return bool
*/
public function wipe();
/**
* @return bool
*/
public function resetBlocksOnly();
/**
* @return bool
*/
public function reset();
/**
* @param array $history
* @return BlockIndexInterface
*/
public function findSegmentBestBlock(array $history, $status);
/**
* @param int $segmentId
* @return array
*/
public function loadHashesForSegment($segmentId);
/**
* @param int $segment
* @param int $segmentStart
* @return int
*/
public function loadSegmentAncestor($segment, $segmentStart);
/**
* Creates the Genesis block index
* @param BlockHeaderInterface $header
* @return bool
*/
public function createIndexGenesis(BlockHeaderInterface $header);
/**
* @param BufferInterface $hash
* @return BlockIndexInterface
*/
public function fetchIndex(BufferInterface $hash);
/**
* @param int $id
* @return BlockIndexInterface
*/
public function fetchIndexById($id);
/**
* @param int $blockId
* @return TransactionInterface[]
*/
public function fetchBlockTransactions($blockId);
/**
* @param BufferInterface $hash
* @return Block
*/
public function fetchBlock(BufferInterface $hash);
/**
* @param BufferInterface $tipHash
* @param BufferInterface $txid
* @return TransactionInterface
*/
public function getTransaction(BufferInterface $tipHash, BufferInterface $txid);
/**
* @param OutPointSerializerInterface $outpointSerializer
* @param string[] $outpointKeys
* @return \BitWasp\Bitcoin\Utxo\Utxo[]
*/
public function fetchUtxoDbList(OutPointSerializerInterface $outpointSerializer, array $outpointKeys);
/**
* @return ChainSegment[]
*/
public function fetchChainSegments();
/**
* @param int $blockId
* @param BlockInterface $block
* @param HashStorage $hashStorage
* @return bool
*/
public function insertBlockTransactions($blockId, BlockInterface $block, HashStorage $hashStorage);
/**
* @param OutPointSerializerInterface $serializer
* @param BlockData $blockData
*/
public function updateUtxoSet(OutPointSerializerInterface $serializer, BlockData $blockData);
/**
* @param HeadersBatch $batch
* @return bool
* @throws \Exception
*/
public function insertHeaderBatch(HeadersBatch $batch);
/**
* @param BufferInterface $blockHash
* @param BufferInterface $block
* @param BlockAcceptData $acceptData
* @param int $status
* @return mixed
*/
public function insertBlockRaw(BufferInterface $blockHash, BufferInterface $block, BlockAcceptData $acceptData, $status);
/**
* @param BufferInterface $hash
* @param BlockInterface $block
* @param BlockSerializerInterface $blockSerializer
* @param int $status
* @return int
*/
public function insertBlock(BufferInterface $hash, BlockInterface $block, BlockSerializerInterface $blockSerializer, $status);
/**
* @param BlockIndexInterface $index
* @param $status
* @return mixed
*/
public function updateBlockStatus(BlockIndexInterface $index, $status);
/**
* Here, we return max 2000 headers following $hash.
* Useful for helping other nodes sync.
* @param BufferInterface $hash
* @return BlockHeaderInterface[]
*/
public function fetchNextHeaders(BufferInterface $hash);
/**
* @param BufferInterface $hash
* @param int $numAncestors
* @return array
*/
public function findSuperMajorityInfoByHash(BufferInterface $hash, $numAncestors = 1000);
/**
* @param ChainViewInterface $view
* @param int $numAncestors
* @return array
*/
public function findSuperMajorityInfoByView(ChainViewInterface $view, $numAncestors = 1000);
/**
* @param callable $function
* @return void
* @throws \Exception
*/
public function transaction(callable $function);
}