Skip to content

Commit 8f49c24

Browse files
authored
Merge pull request #568 from evoskuil/master
Validation/confirmation fixe for recent major changes.
2 parents a287b3f + 4ed07e0 commit 8f49c24

2 files changed

Lines changed: 22 additions & 23 deletions

File tree

include/bitcoin/database/impl/query/consensus.ipp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -265,8 +265,13 @@ bool CLASS::push_spenders(tx_links& out, const point& point,
265265
TEMPLATE
266266
bool CLASS::get_double_spenders(tx_links& out, const block& block) const NOEXCEPT
267267
{
268-
for (const auto& tx: *block.transactions_ptr())
269-
for (const auto& in: *tx->inputs_ptr())
268+
// Empty or coinbase only implies no spends.
269+
const auto& txs = *block.transactions_ptr();
270+
if (txs.size() <= one)
271+
return true;
272+
273+
for (auto tx = std::next(txs.begin()); tx != txs.end(); ++tx)
274+
for (const auto& in: *(*tx)->inputs_ptr())
270275
if (!push_spenders(out, in->point(), in->metadata.link))
271276
return false;
272277

@@ -470,10 +475,6 @@ bool CLASS::set_unstrong(const header_link& link) NOEXCEPT
470475
TEMPLATE
471476
bool CLASS::set_prevouts(const header_link& link, const block& block) NOEXCEPT
472477
{
473-
// Empty or coinbase only implies no spends.
474-
if (block.transactions() <= one)
475-
return true;
476-
477478
tx_links spenders{};
478479
if (!get_double_spenders(spenders, block))
479480
return false;

include/bitcoin/database/tables/archives/transaction.hpp

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ struct transaction
3535
{
3636
using ix = linkage<schema::index>;
3737
using pt = linkage<schema::point_>;
38-
using puts = linkage<schema::puts_>;
38+
using pu = linkage<schema::puts_>;
3939
using bytes = linkage<schema::size>;
4040
using out = linkage<schema::put>;
4141
using search_key = search<schema::hash>;
@@ -64,7 +64,7 @@ struct transaction
6464
ins_count = source.read_little_endian<ix::integer, ix::size>();
6565
outs_count = source.read_little_endian<ix::integer, ix::size>();
6666
point_fk = source.read_little_endian<pt::integer, pt::size>();
67-
puts_fk = source.read_little_endian<puts::integer, puts::size>();
67+
puts_fk = source.read_little_endian<pu::integer, pu::size>();
6868
BC_ASSERT(!source || source.get_read_position() == minrow);
6969
return source;
7070
}
@@ -79,7 +79,7 @@ struct transaction
7979
sink.write_little_endian<ix::integer, ix::size>(ins_count);
8080
sink.write_little_endian<ix::integer, ix::size>(outs_count);
8181
sink.write_little_endian<pt::integer, pt::size>(point_fk);
82-
sink.write_little_endian<puts::integer, puts::size>(puts_fk);
82+
sink.write_little_endian<pu::integer, pu::size>(puts_fk);
8383
BC_ASSERT(!sink || sink.get_write_position() == minrow);
8484
return sink;
8585
}
@@ -105,7 +105,7 @@ struct transaction
105105
ix::integer ins_count{};
106106
ix::integer outs_count{};
107107
pt::integer point_fk{};
108-
puts::integer puts_fk{};
108+
pu::integer puts_fk{};
109109
};
110110

111111
struct only
@@ -124,7 +124,7 @@ struct transaction
124124
ins_count = source.read_little_endian<ix::integer, ix::size>();
125125
outs_count = source.read_little_endian<ix::integer, ix::size>();
126126
point_fk = source.read_little_endian<pt::integer, pt::size>();
127-
puts_fk = source.read_little_endian<puts::integer, puts::size>();
127+
puts_fk = source.read_little_endian<pu::integer, pu::size>();
128128
BC_ASSERT(!source || source.get_read_position() == minrow);
129129
return source;
130130
}
@@ -134,7 +134,7 @@ struct transaction
134134
ix::integer ins_count{};
135135
ix::integer outs_count{};
136136
pt::integer point_fk{};
137-
puts::integer puts_fk{};
137+
pu::integer puts_fk{};
138138
};
139139

140140
struct record_put_ref
@@ -153,7 +153,7 @@ struct transaction
153153
sink.write_little_endian<ix::integer, ix::size>(ins_count);
154154
sink.write_little_endian<ix::integer, ix::size>(outs_count);
155155
sink.write_little_endian<pt::integer, pt::size>(point_fk);
156-
sink.write_little_endian<puts::integer, puts::size>(puts_fk);
156+
sink.write_little_endian<pu::integer, pu::size>(puts_fk);
157157
BC_ASSERT(!sink || sink.get_write_position() == minrow);
158158
return sink;
159159
}
@@ -162,7 +162,7 @@ struct transaction
162162
ix::integer ins_count{};
163163
ix::integer outs_count{};
164164
pt::integer point_fk{};
165-
puts::integer puts_fk{};
165+
pu::integer puts_fk{};
166166
};
167167

168168
struct only_with_sk
@@ -204,14 +204,14 @@ struct transaction
204204
ins_count = source.read_little_endian<ix::integer, ix::size>();
205205
outs_count = source.read_little_endian<ix::integer, ix::size>();
206206
point_fk = source.read_little_endian<pt::integer, pt::size>();
207-
puts_fk = source.read_little_endian<puts::integer, puts::size>();
207+
puts_fk = source.read_little_endian<pu::integer, pu::size>();
208208
return source;
209209
}
210210

211211
ix::integer ins_count{};
212212
ix::integer outs_count{};
213213
pt::integer point_fk{};
214-
puts::integer puts_fk{};
214+
pu::integer puts_fk{};
215215
};
216216

217217
struct get_version
@@ -256,8 +256,7 @@ struct transaction
256256
}
257257

258258
source.skip_bytes(ix::size);
259-
point_fk = source.read_little_endian<pt::integer, pt::size>();
260-
point_fk += index;
259+
point_fk = source.read_little_endian<pt::integer, pt::size>() + index;
261260
return source;
262261
}
263262

@@ -277,19 +276,18 @@ struct transaction
277276

278277
if (index >= number)
279278
{
280-
puts_fk = puts::terminal;
279+
puts_fk = pu::terminal;
281280
return source;
282281
}
283282

284283
source.skip_bytes(pt::size);
285-
puts_fk = source.read_little_endian<puts::integer, puts::size>();
286-
puts_fk += (index * puts::size);
284+
puts_fk = source.read_little_endian<pu::integer, pu::size>() + index;
287285
return source;
288286
}
289287

290288
// Index provides optional offset for puts_fk, number is absolute.
291-
const puts::integer index{};
292-
puts::integer puts_fk{};
289+
const pu::integer index{};
290+
pu::integer puts_fk{};
293291
ix::integer number{};
294292
};
295293

0 commit comments

Comments
 (0)