forked from bitcoin-abe/bitcoin-abe
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO.txt
188 lines (136 loc) · 7.38 KB
/
TODO.txt
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
* MerkleRootMismatch reported when a non-final blocks/blk*.dat ends in
a NUL span. Ignore the span.
* datadir "loader" option seems not to override default-loader.
* Block/tx blacklist.
* Consider allowing unlimited script length.
* UnicodeEncodeError on non-ASCII MySQLdb connect params.
* Bugs affecting bytea hashin?
File "Abe/DataStore.py", line 1539, in import_block
tx['tx_id'] = store.import_tx(tx, pos == 0)
File "Abe/DataStore.py", line 1875, in import_tx
store.intin(tx['lockTime']), len(tx['tx'])))
File "Abe/DataStore.py", line 418, in sql
store.cursor.execute(cached, params)
IntegrityError: duplicate key value violates unique constraint "tx_tx_hash_key"
Failed to catch up {'blkfile_number': 1, 'dirname': '/home/bitcoin/.bitcoin', 'c
hain_id': None, 'id': Decimal('1'), 'blkfile_offset': 434255480}
Traceback (most recent call last):
File "Abe/DataStore.py", line 2220, in catch_up
try:
File "Abe/DataStore.py", line 2243, in catch_up_dir
while (True):
File "Abe/DataStore.py", line 2359, in import_blkdat
chain_ids = frozenset([] if chain_id is None else [chain_id])
File "Abe/DataStore.py", line 1655, in import_block
(block_id, txin_id, oblock_id))
File "Abe/DataStore.py", line 418, in sql
store.cursor.execute(cached, params)
TransactionRollbackError: deadlock detected
DETAIL: Process 8102 waits for ShareLock on transaction 3744470; blocked by pro
cess 20041.
Process 20041 waits for ShareLock on transaction 3744468; blocked by process 8102.
HINT: See server log for query details.
CONTEXT: SQL statement "SELECT 1 FROM ONLY "public"."block" x WHERE "block_id" OPERATOR(pg_catalog.=) $1 FOR SHARE OF x"
* Compress standard txout scripts by representing them as a pubkey_id
and script type. Multi-signature outputs require thought; leave
pubkey_id null and retain the script for starters.
* Support new script types. Fix the firstbits table on upgrade.
Recent non-zero outputs showing as Unknown:
tx_hash=b728387a3cf1dfcff1eef13706816327907f79f9366a7098ee48fc0c00ad2726,
Bitcoin 140921, 64:f816...d335 CHECKSIG.
tx_hash=9740e7d646f5278603c04706a366716e5e87212c57395e0d24761c0ae784b2c6,
Bitcoin 141460, 76:4c55...652e CHECKSIG. Various in Bitcoin 150951:
DUP HASH160 0: EQUALVERIFY CHECKSIG.
tx_hash=9969603dca74d14d29d1d5f56b94c7872551607f8c2d6837ab9715c60721b50e,
Bitcoin 154012, 8:04678afd04678afd DROP SHA256 32:894e...e95c EQUAL,
redeemed with 7:04678afd0467.
tx_hash=b8fd633e7713a43d5ac87266adc78444669b987a56b3a65fb92d58c2c4b0e84d,
Bitcoin 163685, raw 142a9bc5447d664c1d0141392a842d23dba45c4f13b175.
tx_hash=60a20bd93aa49ab4b28d514ec10b06e1829ce6818ec06cd3aabd013ebcdc4bb1,
Bitcoin 164467, 1 65:04cc...8ac4 65:0461...42af 2 CHECKMULTISIG,
multisig script, redeemed with 0: 71:3044...2b01.
tx_hash=f003f0c1193019db2497a675fd05d9f2edddf9b67c59e677c48d3dbd4ed5f00b,
Bitcoin 165116, raw
76a91407e761706c63b36e5a328fab1d94e9397f40704d88b0.
tx_hash=fa735229f650a8a12bcf2f14cca5a8593513f0aabc52f8687ee148c9f9ab6665,
Bitcoin 166533, IFDUP IF 2SWAP VERIFY 2OVER DEPTH.
tx_hash=b38bb421d9a54c58ea331c4b4823dd498f1e42e25ac96d3db643308fcc70503e,
Bitcoin 168910, DUP DUP DUP.
tx_hash=9c08a4d78931342b37fd5f72900fb9983087e6f46c4a097d8a1f52c74e28eaf6,
Bitcoin 170052, HASH160 20:19a7...960e EQUAL, pay-to-script-hash,
redeemed with 37:5121...51ae.
tx_hash=c0b69d1e5ed13732dbd704604f7c08bc96549cc556c464aa42cc7525b3897987,
Bitcoin 170766, 3 DROP DROP 1, redeemed with 1.
tx_hash=aea682d68a3ea5e3583e088dcbd699a5d44d4b083f02ad0aaf2598fe1fa4dfd4,
Bitcoin 170877, MIN 3 EQUAL, redeemed with 1:03 1:03.
Cf. http://blockchain.info/strange-transactions
* Highlight any objects that are not in a main chain as such. In
particular, don't imply that an output was "redeemed" when the
redeeming transaction is not in the chain.
* Write a test suite. Include reorgs, duplicate coinbases, and upgrades.
* JSON/JSONP support in /q functions.
* Search by firstbits.
* Show firstbits on address history page.
* Consider adjusting statistics for duplicate coinbase transactions.
* Avoid duplicate in/out points on block pages by using DISTINCT or
equivalent. This affects blocks common to more than one chain.
* Consider fixing: /block/HASH returns "Block not found" for block not
in any chain.
* Defunct abe.fcgi processes not letting abe.py exit. Unseen in a while.
* Bitcoin 140176 failed to catch up: str(exception) == "1". Should
probably limit the kinds of exceptions that catch_up converts to
warnings.
* Test for a portable "begin transaction" and use it.
* Consider retesting SQL flavour every time on startup.
* Add search by date/time within chain.
* Show auxiliary proof-of-work data.
* Consider porting to libbitcoin.
* Use explicit constraint names.
* Speed up initial load by disabling unneeded constraints temporarily.
* Consider showing amount of time ago along with or instead of
absolute times.
* Separate HTML from data access.
* Consider denormalization for performance: prevout_hash in txin,
pubkey_hash in txout, etc.
* Factor the coin-days destroyed feature as an optional add-on. Work
begin in branch no-statistics.
* Slight variation in CoinDD et al. among sites indicates a bug.
Possibly fixed and due to corrupt data.
* Clean up and document limits on search result size.
* Admin interface to delete chains, etc.
* Add a tool to upload transactions if bitcoind supports it.
* Perhaps write a validation module to check db data. Begun as verify.py.
* Abstract SQL into the DataStore class.
* Report block size, raw blocks, average transactions per block, fees
per block, ...
* Report the Merkle branch of a particular transaction to support SPV.
* Test as multithreaded or forking server.
* Perhaps support searching by hash/address non-initial substring.
* /q functions:
latesthash hextarget
decimaltarget probability hashestowin
nextretarget estimate
avgtxsize avgtxvalue avgblocksize
interval eta avgtxnumber
addressfirstseen mytransactions
reorglog
* BTC-specific /q functions:
bcperblock changeparams
totalbc(future block numbers)
* Perhaps create a BlockExplorer.com compatibility mode.
* Perhaps show nethash interval statistics on the chain summary page.
* Perhaps create an "SQL script" DataStore subclass that outputs flat
SQL INSERTs.
* Context-sensitive help as on http://blockexplorer.com.
* Simplify the process of adding new chains.
* Present Namecoin name operations as an optional add-on.
* Extract info from MultiCoin config files.
* Perhaps add coin tracking features: allow the administrator to
specify "interesting" (e.g., suspected fraudulent) transactions and
addresses, then add a hyperlink from objects linked to them.
* Perhaps track and report coin difficulty as proposed by casascius:
http://forum.bitcoin.org/index.php?topic=10755.0
* Perhaps track and report collectible transaction bytes: size of
transactions whose outputs are all spent, minus Merkle shrubbery
needed to verify the rest.
* Perhaps support email notification about address activity.