tree checksum vpatch file split hunks

all signers: mod6

antecedents: mod6_privkey_tools asciilifeform_dns_thermonyukyoolar_kleansing asciilifeform_tx-orphanage_amputation mod6_manifest mod6_phexdigit_fix

press order:

genesismod6
bitcoin-asciilifeform.1mod6
rm_rf_upnpmod6
bitcoin-asciilifeform.3-turdmeister-alert-snipmod6
asciilifeform_orphanage_thermonukemod6
bitcoin-asciilifeform.2-https_snipsnipmod6
bitcoin-v0_5_3_1-static_makefile_v002.8mod6
bitcoin-asciilifeform.4-goodbye-win32mod6
bitcoin-v0_5_3_1-rev_bump.7mod6
bitcoin-v0_5_3-db_config.6mod6
asciilifeform_maxint_locks_correctedmod6
asciilifeform_tx-orphanage_amputationmod6
asciilifeform_dnsseed_snipsnipmod6
asciilifeform_zap_hardcoded_seedsmod6
asciilifeform_zap_showmyip_crudmod6
asciilifeform_dns_thermonyukyoolar_kleansingmod6
asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ipmod6
asciilifeform-kills-integer-retardationmod6
asciilifeform_and_now_we_have_block_dumper_correctedmod6
mod6_fix_dumpblock_paramsmod6
asciilifeform_and_now_we_have_eatblockmod6
asciilifeform_lets_lose_testnetmod6
asciilifeform_add_verifyall_optionmod6
programmable-versionstringmod6
mod6_der_high_low_smod6
mod6_privkey_toolsmod6
malleus_mikehearnificarummod6
makefilesmod6
asciilifeform_aggressive_pushgetblocksmod6
mod6_manifestmod6
mod6_phexdigit_fixmod6
mod6_excise_hash_truncationmod6

patch:

- 63AECFFAED0398FB2A4F40B170EF1992BCDF9F81A6A8F1FA9851816E53FBE1EE96F061788210B687C37AE13F43CD28EB668F20EAC5E0A468BF450480FFD02D96
+ 5091AEE977F4E3D8B13B3DF1775A0A70647F7A3BAF66DC5EF8693C3333E4223A4EFEEA781AFBCB1B10755664FE8FCB29212FE9F0FCB127D048BC4090BB022F77
bitcoin/manifest
(1 . 4)(1 . 33)
5 542413 genesis mod6 TRB Genesis
6 542413 bitcoin-asciilifeform.1 asciilifeform QT_GUI removal
7 542413 rm_rf_upnp ben_vulpes Removal of UPnP
8 542413 bitcoin-asciilifeform.2 asciilifeform Removal of SSL from http service
9 542413 bitcoin-asciilifeform.3-turdmeister-alert-snip asciilifeform Removal of alert spam
10 542413 bitcoin-asciilifeform.4-goodbye-win32 asciilifeform Win32 removal
11 542413 asciilifeform_orphanage_thermonuke asciilifeform Drop orphans on the floor
12 542413 asciilifeform_tx-orphanage_amputation asciilifeform Remove orphan processing
13 542413 asciilifeform_dnsseed_snipsnip asciilifeform Abandon the DNS seeding mechanism
14 542413 bitcoin-v0_5_3-db_config mod6 Add BDB configuration options
15 542413 asciilifeform_zap_hardcoded_seeds asciilifeform Remove hardcoded node seeds
16 542413 bitcoin-v0_5_3_1-static_makefile_v002.8 mod6 Add static makefile options
17 542413 asciilifeform-kills-integer-retardation asciilifeform Fix integer type problems
18 542413 asciilifeform_zap_showmyip_crud asciilifeform Abolishes the 'showmyip.com' idiocy; prerequisite for the total removal of all instances of DNS invocation
19 542413 bitcoin-v0_5_3_1-rev_bump ben_vulpes Bump version number to 0.5.3.1
20 542413 asciilifeform_and_now_we_have_block_dumper_corrected asciilifeform Add 'dumpblock' RPC command
21 542413 asciilifeform_dns_thermonyukyoolar_kleansing asciilifeform Abolishes all invocations of DNS
22 542413 mod6_fix_dumpblock_params mod6 Constrain the 'dumpblock' parameters
23 542413 asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip Bump version to 0.5.4; Remove IRC seeder and hooks; Removal of mechanisms for determining own external IP
24 542413 asciilifeform_maxint_locks_corrected asciilifeform Set BDB configuration options to max
25 542413 asciilifeform_and_now_we_have_eatblock asciilifeform Add 'eatblock' RPC command
26 542413 asciilifeform_lets_lose_testnet asciilifeform Removal of Testnet
27 542413 asciilifeform_add_verifyall_option asciilifeform Add 'verifyall' flag
28 542413 programmable-versionstring asciilifeform Add two optional command-line flags to change the version string and number
29 542413 malleus_mikehearnificarum asciilifeform Ban peers when attempting to issue unsupported commands
30 542413 mod6_der_high_low_s mod6 Add command-line flags to set Low-S or High-S
31 542413 makefiles mod6 Add makefiles to build entire TRB
32 542413 asciilifeform_aggressive_pushgetblocks asciilifeform Issue PushGetBlocks command to any peer that issues 'version' command
33 614342 trb_keccak_regrind mod6 Not a vpatch, whole TRB tree keccak regrind; removes UTF-8 char from original genesis.vpatch
34 614347 mod6_privkey_tools.vpatch mod6 adds privkey tools
35 614351 mod6_manifest.vpatch mod6 Adds TRB manifest; updates version comments
36 616451 mod6_phexdigit_fix.vpatch mod6 Adds missing comma to separate values in the phexdigit array in util.cpp.
37 617254 mod6_excise_hash_truncation mod6 Regrind of ben_vulpes original; removes truncation of hashes printed to TRB log file
- ED121A460F49C601B8C56E5E90E9AB728D6EDBA0674DDB34111E0E520CF84AEA918624C677937CE025FD95405B4DBE30A2A160F007846B32817532CD4FABA40B
+ 8D156EA97F8A65CEDFB916C7EB8A2FF621F1CF0131EFE51CD6BF1D5A8D3D6D0DD24FE05372FB91ED35DB27858A737D3E4E741BB0E0E5536893390BEBCE6EA6DD
bitcoin/src/db.cpp
(578 . 7)(578 . 7)
42 pindexBest = mapBlockIndex[hashBestChain];
43 nBestHeight = pindexBest->nHeight;
44 bnBestChainWork = pindexBest->bnChainWork;
45 printf("LoadBlockIndex(): hashBestChain=%s height=%d\n", hashBestChain.ToString().substr(0,20).c_str(), nBestHeight);
46 printf("LoadBlockIndex(): hashBestChain=%s height=%d\n", hashBestChain.ToString().c_str(), nBestHeight);
47
48 // Load bnBestInvalidWork, OK if it doesn't exist
49 ReadBestInvalidWork(bnBestInvalidWork);
(836 . 14)(836 . 6)
51 }
52 vWalletUpgrade.push_back(hash);
53 }
54
55 //// debug print
56 //printf("LoadWallet %s\n", wtx.GetHash().ToString().c_str());
57 //printf(" %12I64d %s %s %s\n",
58 // wtx.vout[0].nValue,
59 // DateTimeStrFormat("%x %H:%M:%S", wtx.GetBlockTime()).c_str(),
60 // wtx.hashBlock.ToString().substr(0,20).c_str(),
61 // wtx.mapValue["message"].c_str());
62 }
63 else if (strType == "acentry")
64 {
- 6424F947D41CD64953A4F2C3AAFA97A21E69CEFF571CAAF9DE9175117644ED456F45F1EAA4FBAD7D85412D003C121DD9579F5D07A701C5DFD1BA5E209F286DD4
+ 0971A01F7FA9F4D6209A769A8D5249AFAC1E458907C031626EE764B6F85416AEDA8DE595E8F18F3E9968D7E699F35259BC833BBA1D88C14DDB26D29AFD45C7FB
bitcoin/src/main.cpp
(365 . 8)(365 . 8)
69 if (!ConnectInputs(txdb, mapUnused, CDiskTxPos(1,1,1), pindexBest, nFees, false, false, 0, fInvalid))
70 {
71 if (fInvalid)
72 return error("AcceptToMemoryPool() : FetchInputs found invalid tx %s", hash.ToString().substr(0,10).c_str());
73 return error("AcceptToMemoryPool() : ConnectInputs failed %s", hash.ToString().substr(0,10).c_str());
74 return error("AcceptToMemoryPool() : FetchInputs found invalid tx %s", hash.ToString().c_str());
75 return error("AcceptToMemoryPool() : ConnectInputs failed %s", hash.ToString().c_str());
76 }
77
78 // Don't accept it if it can't get into a block
(415 . 7)(415 . 7)
80 if (ptxOld)
81 EraseFromWallets(ptxOld->GetHash());
82
83 printf("AcceptToMemoryPool(): accepted %s\n", hash.ToString().substr(0,10).c_str());
84 printf("AcceptToMemoryPool(): accepted %s\n", hash.ToString().c_str());
85 return true;
86 }
87
(709 . 8)(709 . 8)
89 CTxDB().WriteBestInvalidWork(bnBestInvalidWork);
90 MainFrameRepaint();
91 }
92 printf("InvalidChainFound: invalid block=%s height=%d work=%s\n", pindexNew->GetBlockHash().ToString().substr(0,20).c_str(), pindexNew->nHeight, pindexNew->bnChainWork.ToString().c_str());
93 printf("InvalidChainFound: current best=%s height=%d work=%s\n", hashBestChain.ToString().substr(0,20).c_str(), nBestHeight, bnBestChainWork.ToString().c_str());
94 printf("InvalidChainFound: invalid block=%s height=%d work=%s\n", pindexNew->GetBlockHash().ToString().c_str(), pindexNew->nHeight, pindexNew->bnChainWork.ToString().c_str());
95 printf("InvalidChainFound: current best=%s height=%d work=%s\n", hashBestChain.ToString().c_str(), nBestHeight, bnBestChainWork.ToString().c_str());
96 if (pindexBest && bnBestInvalidWork > bnBestChainWork + pindexBest->GetBlockWork() * 6)
97 printf("InvalidChainFound: WARNING: Displayed transactions may not be correct! You may need to upgrade, or other nodes may need to upgrade.\n");
98 }
(796 . 7)(796 . 7)
100 fFound = txdb.ReadTxIndex(prevout.hash, txindex);
101 }
102 if (!fFound && (fBlock || fMiner))
103 return fMiner ? false : error("ConnectInputs() : %s prev tx %s index entry not found", GetHash().ToString().substr(0,10).c_str(), prevout.hash.ToString().substr(0,10).c_str());
104 return fMiner ? false : error("ConnectInputs() : %s prev tx %s index entry not found", GetHash().ToString().c_str(), prevout.hash.ToString().c_str());
105
106 // Read txPrev
107 CTransaction txPrev;
(806 . 7)(806 . 7)
109 CRITICAL_BLOCK(cs_mapTransactions)
110 {
111 if (!mapTransactions.count(prevout.hash))
112 return error("ConnectInputs() : %s mapTransactions prev not found %s", GetHash().ToString().substr(0,10).c_str(), prevout.hash.ToString().substr(0,10).c_str());
113 return error("ConnectInputs() : %s mapTransactions prev not found %s", GetHash().ToString().c_str(), prevout.hash.ToString().c_str());
114 txPrev = mapTransactions[prevout.hash];
115 }
116 if (!fFound)
(816 . 7)(816 . 7)
118 {
119 // Get prev tx from disk
120 if (!txPrev.ReadFromDisk(txindex.pos))
121 return error("ConnectInputs() : %s ReadFromDisk prev tx %s failed", GetHash().ToString().substr(0,10).c_str(), prevout.hash.ToString().substr(0,10).c_str());
122 return error("ConnectInputs() : %s ReadFromDisk prev tx %s failed", GetHash().ToString().c_str(), prevout.hash.ToString().c_str());
123 }
124
125 if (prevout.n >= txPrev.vout.size() || prevout.n >= txindex.vSpent.size())
(824 . 7)(824 . 7)
127 // Revisit this if/when transaction replacement is implemented and allows
128 // adding inputs:
129 fInvalid = true;
130 return DoS(100, error("ConnectInputs() : %s prevout.n out of range %d %d %d prev tx %s\n%s", GetHash().ToString().substr(0,10).c_str(), prevout.n, txPrev.vout.size(), txindex.vSpent.size(), prevout.hash.ToString().substr(0,10).c_str(), txPrev.ToString().c_str()));
131 return DoS(100, error("ConnectInputs() : %s prevout.n out of range %d %d %d prev tx %s\n%s", GetHash().ToString().c_str(), prevout.n, txPrev.vout.size(), txindex.vSpent.size(), prevout.hash.ToString().c_str(), txPrev.ToString().c_str()));
132 }
133
134 // If prev is coinbase, check that it's matured
(839 . 13)(839 . 13)
136 if (fVerifyAll || (!(fBlock && (nBestHeight < Checkpoints::GetTotalBlocksEstimate()))))
137 // Verify signature
138 if (!VerifySignature(txPrev, *this, i))
139 return DoS(100,error("ConnectInputs() : %s VerifySignature failed", GetHash().ToString().substr(0,10).c_str()));
140 return DoS(100,error("ConnectInputs() : %s VerifySignature failed", GetHash().ToString().c_str()));
141
142 // Check for conflicts (double-spend)
143 // This doesn't trigger the DoS code on purpose; if it did, it would make it easier
144 // for an attacker to attempt to split the network.
145 if (!txindex.vSpent[prevout.n].IsNull())
146 return fMiner ? false : error("ConnectInputs() : %s prev tx already used at %s", GetHash().ToString().substr(0,10).c_str(), txindex.vSpent[prevout.n].ToString().c_str());
147 return fMiner ? false : error("ConnectInputs() : %s prev tx already used at %s", GetHash().ToString().c_str(), txindex.vSpent[prevout.n].ToString().c_str());
148
149 // Check for negative or overflow input values
150 nValueIn += txPrev.vout[prevout.n].nValue;
(863 . 12)(863 . 12)
152 }
153
154 if (nValueIn < GetValueOut())
155 return DoS(100, error("ConnectInputs() : %s value in < value out", GetHash().ToString().substr(0,10).c_str()));
156 return DoS(100, error("ConnectInputs() : %s value in < value out", GetHash().ToString().c_str()));
157
158 // Tally transaction fees
159 int64 nTxFee = nValueIn - GetValueOut();
160 if (nTxFee < 0)
161 return DoS(100, error("ConnectInputs() : %s nTxFee < 0", GetHash().ToString().substr(0,10).c_str()));
162 return DoS(100, error("ConnectInputs() : %s nTxFee < 0", GetHash().ToString().c_str()));
163 if (nTxFee < nMinFee)
164 return false;
165 nFees += nTxFee;
(1174 . 7)(1174 . 7)
167 bnBestChainWork = pindexNew->bnChainWork;
168 nTimeBestReceived = GetTime();
169 nTransactionsUpdated++;
170 printf("SetBestChain: new best=%s height=%d work=%s\n", hashBestChain.ToString().substr(0,20).c_str(), nBestHeight, bnBestChainWork.ToString().c_str());
171 printf("SetBestChain: new best=%s height=%d work=%s\n", hashBestChain.ToString().c_str(), nBestHeight, bnBestChainWork.ToString().c_str());
172
173 return true;
174 }
(1185 . 7)(1185 . 7)
176 // Check for duplicate
177 uint256 hash = GetHash();
178 if (mapBlockIndex.count(hash))
179 return error("AddToBlockIndex() : %s already exists", hash.ToString().substr(0,20).c_str());
180 return error("AddToBlockIndex() : %s already exists", hash.ToString().c_str());
181
182 // Construct new block index object
183 CBlockIndex* pindexNew = new CBlockIndex(nFile, nBlockPos, *this);
(1325 . 7)(1325 . 7)
185 // Check for duplicate
186 uint256 hash = pblock->GetHash();
187 if (mapBlockIndex.count(hash))
188 return error("ProcessBlock() : already have block %d %s", mapBlockIndex[hash]->nHeight, hash.ToString().substr(0,20).c_str());
189 return error("ProcessBlock() : already have block %d %s", mapBlockIndex[hash]->nHeight, hash.ToString().c_str());
190
191 // Preliminary checks
192 if (!pblock->CheckBlock())
(1357 . 7)(1357 . 7)
194 // If don't already have its previous block, throw it out!
195 if (!mapBlockIndex.count(pblock->hashPrevBlock))
196 {
197 printf("ProcessBlock: BASTARD BLOCK, prev=%s, DISCARDED\n", pblock->hashPrevBlock.ToString().substr(0,20).c_str());
198 printf("ProcessBlock: BASTARD BLOCK, prev=%s, DISCARDED\n", pblock->hashPrevBlock.ToString().c_str());
199
200 // Ask this guy to fill in what we're missing
201 if (pfrom)
(1553 . 7)(1553 . 7)
203 pindex->nHeight,
204 pindex->nFile,
205 pindex->nBlockPos,
206 block.GetHash().ToString().substr(0,20).c_str(),
207 block.GetHash().ToString().c_str(),
208 DateTimeStrFormat("%x %H:%M:%S", block.GetBlockTime()).c_str(),
209 block.vtx.size());
210
(1925 . 12)(1925 . 12)
212 pindex = pindex->pnext;
213 int nLimit = 500 + locator.GetDistanceBack();
214 unsigned int nBytes = 0;
215 printf("getblocks %d to %s limit %d\n", (pindex ? pindex->nHeight : -1), hashStop.ToString().substr(0,20).c_str(), nLimit);
216 printf("getblocks %d to %s limit %d\n", (pindex ? pindex->nHeight : -1), hashStop.ToString().c_str(), nLimit);
217 for (; pindex; pindex = pindex->pnext)
218 {
219 if (pindex->GetBlockHash() == hashStop)
220 {
221 printf(" getblocks stopping at %d %s (%u bytes)\n", pindex->nHeight, pindex->GetBlockHash().ToString().substr(0,20).c_str(), nBytes);
222 printf(" getblocks stopping at %d %s (%u bytes)\n", pindex->nHeight, pindex->GetBlockHash().ToString().c_str(), nBytes);
223 break;
224 }
225 pfrom->PushInventory(CInv(MSG_BLOCK, pindex->GetBlockHash()));
(1941 . 7)(1941 . 7)
227 {
228 // When this block is requested, we'll send an inv that'll make them
229 // getblocks the next batch of inventory.
230 printf(" getblocks stopping at limit %d %s (%u bytes)\n", pindex->nHeight, pindex->GetBlockHash().ToString().substr(0,20).c_str(), nBytes);
231 printf(" getblocks stopping at limit %d %s (%u bytes)\n", pindex->nHeight, pindex->GetBlockHash().ToString().c_str(), nBytes);
232 pfrom->hashContinue = pindex->GetBlockHash();
233 break;
234 }
(1974 . 7)(1974 . 7)
236
237 vector<CBlock> vHeaders;
238 int nLimit = 2000 + locator.GetDistanceBack();
239 printf("getheaders %d to %s limit %d\n", (pindex ? pindex->nHeight : -1), hashStop.ToString().substr(0,20).c_str(), nLimit);
240 printf("getheaders %d to %s limit %d\n", (pindex ? pindex->nHeight : -1), hashStop.ToString().c_str(), nLimit);
241 for (; pindex; pindex = pindex->pnext)
242 {
243 vHeaders.push_back(pindex->GetBlockHeader());
(2005 . 7)(2005 . 7)
245 }
246 else if (fMissingInputs)
247 {
248 printf("REJECTED orphan tx %s\n", inv.hash.ToString().substr(0,10).c_str());
249 printf("REJECTED orphan tx %s\n", inv.hash.ToString().c_str());
250 }
251 if (tx.nDoS) pfrom->Misbehaving(tx.nDoS);
252 }
(2016 . 7)(2016 . 7)
254 CBlock block;
255 vRecv >> block;
256
257 printf("received block %s\n", block.GetHash().ToString().substr(0,20).c_str());
258 printf("received block %s\n", block.GetHash().ToString().c_str());
259 // block.print();
260
261 CInv inv(MSG_BLOCK, block.GetHash());
(2524 . 9)(2524 . 9)
263
264 void print() const
265 {
266 printf("COrphan(hash=%s, dPriority=%.1f)\n", ptx->GetHash().ToString().substr(0,10).c_str(), dPriority);
267 printf("COrphan(hash=%s, dPriority=%.1f)\n", ptx->GetHash().ToString().c_str(), dPriority);
268 BOOST_FOREACH(uint256 hash, setDependsOn)
269 printf(" setDependsOn %s\n", hash.ToString().substr(0,10).c_str());
270 printf(" setDependsOn %s\n", hash.ToString().c_str());
271 }
272 };
273
(2608 . 7)(2608 . 7)
275
276 if (fDebug && GetBoolArg("-printpriority"))
277 {
278 printf("priority %-20.1f %s\n%s", dPriority, tx.GetHash().ToString().substr(0,10).c_str(), tx.ToString().c_str());
279 printf("priority %-20.1f %s\n%s", dPriority, tx.GetHash().ToString().c_str(), tx.ToString().c_str());
280 if (porphan)
281 porphan->print();
282 printf("\n");
- ECAFBDF451A63BE8EA30BA33B93F62A155511051154AF8369284519E6F493D2B3546FF2D3E7F7A3EC263F50A2080DA9665B24DCE3AEBB4CD54B92ACB12F37024
+ 00BAE14F70F53E0826F7F23453A48E59CA34FDE46DE507482224965AD465ACAB0C913141E1EA21323C4F5461035B8B4D3AC9B11AA9C16FDEA000640145B89FD1
bitcoin/src/main.h
(222 . 7)(222 . 7)
287
288 std::string ToString() const
289 {
290 return strprintf("COutPoint(%s, %d)", hash.ToString().substr(0,10).c_str(), n);
291 return strprintf("COutPoint(%s, %d)", hash.ToString().c_str(), n);
292 }
293
294 void print() const
(297 . 7)(297 . 7)
296 if (prevout.IsNull())
297 str += strprintf(", coinbase %s", HexStr(scriptSig).c_str());
298 else
299 str += strprintf(", scriptSig=%s", scriptSig.ToString().substr(0,24).c_str());
300 str += strprintf(", scriptSig=%s", scriptSig.ToString().c_str());
301 if (nSequence != UINT_MAX)
302 str += strprintf(", nSequence=%u", nSequence);
303 str += ")";
(371 . 7)(371 . 7)
305 {
306 if (scriptPubKey.size() < 6)
307 return "CTxOut(error)";
308 return strprintf("CTxOut(nValue=%"PRI64d".%08"PRI64d", scriptPubKey=%s)", nValue / COIN, nValue % COIN, scriptPubKey.ToString().substr(0,30).c_str());
309 return strprintf("CTxOut(nValue=%"PRI64d".%08"PRI64d", scriptPubKey=%s)", nValue / COIN, nValue % COIN, scriptPubKey.ToString().c_str());
310 }
311
312 void print() const
(608 . 7)(608 . 7)
314 {
315 std::string str;
316 str += strprintf("CTransaction(hash=%s, ver=%d, vin.size=%d, vout.size=%d, nLockTime=%d)\n",
317 GetHash().ToString().substr(0,10).c_str(),
318 GetHash().ToString().c_str(),
319 nVersion,
320 vin.size(),
321 vout.size(),
(954 . 10)(954 . 10)
323 void print() const
324 {
325 printf("CBlock(hash=%s, ver=%d, hashPrevBlock=%s, hashMerkleRoot=%s, nTime=%u, nBits=%08x, nNonce=%u, vtx=%d)\n",
326 GetHash().ToString().substr(0,20).c_str(),
327 GetHash().ToString().c_str(),
328 nVersion,
329 hashPrevBlock.ToString().substr(0,20).c_str(),
330 hashMerkleRoot.ToString().substr(0,10).c_str(),
331 hashPrevBlock.ToString().c_str(),
332 hashMerkleRoot.ToString().c_str(),
333 nTime, nBits, nNonce,
334 vtx.size());
335 for (int i = 0; i < vtx.size(); i++)
(967 . 7)(967 . 7)
337 }
338 printf(" vMerkleTree: ");
339 for (int i = 0; i < vMerkleTree.size(); i++)
340 printf("%s ", vMerkleTree[i].ToString().substr(0,10).c_str());
341 printf("%s ", vMerkleTree[i].ToString().c_str());
342 printf("\n");
343 }
344
(1138 . 8)(1138 . 8)
346 {
347 return strprintf("CBlockIndex(nprev=%08x, pnext=%08x, nFile=%d, nBlockPos=%-6d nHeight=%d, merkle=%s, hashBlock=%s)",
348 pprev, pnext, nFile, nBlockPos, nHeight,
349 hashMerkleRoot.ToString().substr(0,10).c_str(),
350 GetBlockHash().ToString().substr(0,20).c_str());
351 hashMerkleRoot.ToString().c_str(),
352 GetBlockHash().ToString().c_str());
353 }
354
355 void print() const
(1209 . 8)(1209 . 8)
357 str += CBlockIndex::ToString();
358 str += strprintf("\n hashBlock=%s, hashPrev=%s, hashNext=%s)",
359 GetBlockHash().ToString().c_str(),
360 hashPrev.ToString().substr(0,20).c_str(),
361 hashNext.ToString().substr(0,20).c_str());
362 hashPrev.ToString().c_str(),
363 hashNext.ToString().c_str());
364 return str;
365 }
366
- 071F23CB1E017F72A89271924861D1036E3FB2D9C6459709D8A962CD7AA94F84FAA657618D0DD553650A135A6E341ECF4389E2CB911C5E71D8C87D5D24BD77AF
+ 891CDAA560E5403C9BECD96A586998CD345C3045795C8DCE601CD7F46119C24CEE0857846CD7BF10A1869D8E54E3D52B0E67DDC488F183E992E18D92081C74D7
bitcoin/src/protocol.cpp
(297 . 7)(297 . 7)
371
372 std::string CInv::ToString() const
373 {
374 return strprintf("%s %s", GetCommand(), hash.ToString().substr(0,20).c_str());
375 return strprintf("%s %s", GetCommand(), hash.ToString().c_str());
376 }
377
378 void CInv::print() const
- B1151747313461AAA55B9B7B3A0BF0E560F3D9200B646859DE29B07543D3CB746F109004610AC55433C6A803D59C5CD3C092C4D187999997CADFB85A762BDA74
+ EC7774805C2999F289F26C3DC0AA669977EA36B9112C4040D4470760583854821262B5073C74F51DFD6C9B3725660F706C1E7990CE43B94B91D7CFF61F047012
bitcoin/src/wallet.cpp
(270 . 7)(270 . 7)
383 }
384
385 //// debug print
386 printf("AddToWallet %s %s%s\n", wtxIn.GetHash().ToString().substr(0,10).c_str(), (fInsertedNew ? "new" : ""), (fUpdated ? "update" : ""));
387 printf("AddToWallet %s %s%s\n", wtxIn.GetHash().ToString().c_str(), (fInsertedNew ? "new" : ""), (fUpdated ? "update" : ""));
388
389 // Write to disk
390 if (fInsertedNew || fUpdated)
(467 . 7)(467 . 7)
392
393 }
394
395 void CWalletTx::GetAccountAmounts(const string& strAccount, int64& nGenerated, int64& nReceived,
396 void CWalletTx::GetAccountAmounts(const string& strAccount, int64& nGenerated, int64& nReceived,
397 int64& nSent, int64& nFee) const
398 {
399 nGenerated = nReceived = nSent = nFee = 0;
(667 . 7)(667 . 7)
401 uint256 hash = GetHash();
402 if (!txdb.ContainsTx(hash))
403 {
404 printf("Relaying wtx %s\n", hash.ToString().substr(0,10).c_str());
405 printf("Relaying wtx %s\n", hash.ToString().c_str());
406 RelayMessage(CInv(MSG_TX, hash), (CTransaction)*this);
407 }
408 }