| Commit message (Expand) | Author | Age | Files | Lines |
* | eth/downloader: fix reviewer comments | Péter Szilágyi | 2016-05-20 | 2 | -9/+32 |
* | eth/downloader: stream partial skeleton filling to processor | Péter Szilágyi | 2016-05-17 | 3 | -19/+55 |
* | eth/downloader: implement concurrent header downloads | Péter Szilágyi | 2016-05-17 | 4 | -211/+584 |
* | eth/downloader: bound fork ancestry and allow heavy short forks | Péter Szilágyi | 2016-05-13 | 2 | -43/+201 |
* | rpc: remove NotifierContextKey | Felix Lange | 2016-04-16 | 1 | -1/+1 |
* | all: fix go vet warnings | Felix Lange | 2016-04-15 | 2 | -5/+3 |
* | all: update license information | Felix Lange | 2016-04-15 | 1 | -7/+7 |
* | rpc: add pub/sub support | Bas van Kervel | 2016-04-02 | 1 | -16/+59 |
* | core, eth: replace reorganiz with reorganis | Leif Jurvetson | 2016-03-16 | 1 | -2/+2 |
* | eth: various typos | Leif Jurvetson | 2016-03-16 | 4 | -10/+10 |
* | eth/downloader: fix a throughput estimation data race | Péter Szilágyi | 2016-03-10 | 1 | -2/+2 |
* | eth/downloader: fix premature exit before notifying all part fetchers | Péter Szilágyi | 2016-02-29 | 1 | -1/+3 |
* | eth/downloader: fix header download limiting | Felix Lange | 2016-02-26 | 1 | -1/+1 |
* | Merge pull request #2251 from karalabe/increase-downlaoder-queue | Péter Szilágyi | 2016-02-24 | 2 | -1/+6 |
|\ |
|
| * | eth/downloader: bump the download queue size to prevent starvation | Péter Szilágyi | 2016-02-23 | 2 | -1/+6 |
* | | Merge pull request #2242 from jimenezrick/upstream-crypto | Jeffrey Wilcke | 2016-02-24 | 1 | -1/+1 |
|\ \
| |/
|/| |
|
| * | all: Rename crypto.Sha3{,Hash}() to crypto.Keccak256{,Hash}() | Ricardo Catalinas Jiménez | 2016-02-22 | 1 | -1/+1 |
* | | eth/downloader: fix partial rollback and ancestor lookup | Péter Szilágyi | 2016-02-19 | 1 | -2/+28 |
|/ |
|
* | eth, eth/downloader, jsre: surface state sync progress through the API | Péter Szilágyi | 2016-02-10 | 3 | -22/+31 |
* | eth/downloader: raise pending state limit that prevented concurrency | Péter Szilágyi | 2016-02-08 | 2 | -3/+3 |
* | rpc: migrated the RPC insterface to a new reflection based RPC layer | Bas van Kervel | 2016-01-26 | 1 | -1/+1 |
* | core, eth/downloader: ensure state presence in ancestor lookup | Péter Szilágyi | 2016-01-04 | 3 | -57/+68 |
* | eth/downloader: throttling tests are time-sensitive, don't run parallel | Péter Szilágyi | 2015-12-30 | 1 | -3/+1 |
* | eth/downloader: fix negative balance issue in tests | Felix Lange | 2015-12-18 | 1 | -2/+5 |
* | rpc: new RPC implementation with pub/sub support | Bas van Kervel | 2015-12-14 | 1 | -0/+64 |
* | eth/downloader: fetch data proportionally to peer capacity | Péter Szilágyi | 2015-11-19 | 3 | -246/+258 |
* | eth/downloader: run tests in parallel | Felix Lange | 2015-11-19 | 1 | -0/+29 |
* | eth/downloader: also drain stateCh, receiptCh in eth/61 mode | Felix Lange | 2015-11-19 | 1 | -71/+77 |
* | eth/downloader: don't hang for spurious deliveries | Felix Lange | 2015-11-19 | 3 | -236/+230 |
* | eth/downloader: fix dysfunctional ignore list hidden by generic set | Péter Szilágyi | 2015-11-04 | 2 | -11/+46 |
* | eth: don't block sync goroutines that short circuit | Péter Szilágyi | 2015-10-28 | 1 | -2/+4 |
* | core, eth, trie: fix data races and merge/review issues | Péter Szilágyi | 2015-10-21 | 5 | -347/+518 |
* | eth: clean out light node notions from eth | Péter Szilágyi | 2015-10-19 | 1 | -4/+6 |
* | core, eth: roll back uncertain headers in failed fast syncs | Péter Szilágyi | 2015-10-19 | 3 | -11/+130 |
* | eth/downloader: concurrent receipt and state processing | Péter Szilágyi | 2015-10-19 | 4 | -72/+158 |
* | core, eth, trie: direct state trie synchronization | Péter Szilágyi | 2015-10-19 | 6 | -451/+760 |
* | core, eth: receipt chain reconstruction | Péter Szilágyi | 2015-10-19 | 2 | -114/+166 |
* | eth/downloader: add fast and light sync strategies | Péter Szilágyi | 2015-10-19 | 6 | -775/+1388 |
* | eth/downloader: match capabilities when querying idle peers | Péter Szilágyi | 2015-10-02 | 3 | -8/+53 |
* | eth/downloader: always send termination wakes, clean leftover | Péter Szilágyi | 2015-09-23 | 1 | -20/+36 |
* | eth/downloader: header-chain order and ancestry check | Péter Szilágyi | 2015-09-15 | 3 | -7/+77 |
* | eth, rpc: standardize the chain sync progress counters | Péter Szilágyi | 2015-09-15 | 2 | -51/+476 |
* | core: split out TD from database and all internals | Péter Szilágyi | 2015-09-11 | 2 | -16/+39 |
* | eth/downloader: fix race causing occasional test failure | Péter Szilágyi | 2015-09-01 | 1 | -1/+3 |
* | eth: update metrics collection to handle eth/62 algos | Péter Szilágyi | 2015-08-25 | 3 | -4/+97 |
* | eth: port the synchronisation algo to eth/62 | Péter Szilágyi | 2015-08-25 | 4 | -217/+1125 |
* | eth: kill off protocol eth/60 in preparation for eth/62 | Péter Szilágyi | 2015-08-24 | 2 | -772/+5 |
* | eth, eth/downloader: handle header requests, table driven proto tests | Péter Szilágyi | 2015-08-24 | 1 | -5/+7 |
* | eth, metrics, p2p: prepare metrics and net packets to eth/62 | Péter Szilágyi | 2015-08-21 | 1 | -1/+2 |
* | eth, eth/downloader: don't report stall if fetcher filled the block | Péter Szilágyi | 2015-07-29 | 2 | -42/+64 |
* | all: fix license headers one more time | Felix Lange | 2015-07-24 | 5 | -5/+5 |
* | all: update license headers to distiguish GPL/LGPL | Felix Lange | 2015-07-23 | 5 | -20/+20 |
* | eth/downloader: drop peer if advertised TD but won't delvier | Péter Szilágyi | 2015-07-09 | 2 | -99/+44 |
* | all: update license information | Felix Lange | 2015-07-07 | 5 | -0/+80 |
* | eth/downloader: fix a rare test race on the OSX CI | Péter Szilágyi | 2015-07-03 | 1 | -1/+7 |
* | eth, eth/downloader: fix #1231, DOS vulnerability in hash queueing | Péter Szilágyi | 2015-07-01 | 1 | -4/+14 |
* | eth/downloader: reduce hash fetches in prep for eth/61 | Péter Szilágyi | 2015-07-01 | 1 | -3/+3 |
* | eth, eth/downloader: transition to eth 61 | Péter Szilágyi | 2015-07-01 | 4 | -81/+606 |
* | eth, eth/downloader: pass the eth protocol version through | Péter Szilágyi | 2015-07-01 | 3 | -35/+44 |
* | eth/downloader, eth/fetcher: use core.GenerateChain in tests | Felix Lange | 2015-06-30 | 1 | -156/+97 |
* | core/types: make blocks immutable | Felix Lange | 2015-06-30 | 1 | -1/+4 |
* | eth, eth/fetcher: move propagated block import into fetcher | Péter Szilágyi | 2015-06-18 | 1 | -1/+1 |
* | eth/fetcher: fix timer reset bug, add initial tests | Péter Szilágyi | 2015-06-18 | 1 | -3/+5 |
* | eth, eth/fetcher: separate notification sync mechanism | Péter Szilágyi | 2015-06-18 | 1 | -0/+1 |
* | eth/downloader: extend slow test to fix even slower CI server... | Péter Szilágyi | 2015-06-18 | 1 | -1/+1 |
* | eth/downloader: always reenter processing if not exiting | Péter Szilágyi | 2015-06-18 | 2 | -39/+37 |
* | eth, eth/downloader: fix processing interrupt caused by temp cancel | Péter Szilágyi | 2015-06-18 | 2 | -23/+21 |
* | eth/downloader: fix #1280, overlapping (good/bad) delivery hang | Péter Szilágyi | 2015-06-17 | 2 | -0/+35 |
* | eth/downloader: detailed comment for the race corner case | Péter Szilágyi | 2015-06-15 | 1 | -4/+15 |
* | eth/downloader: fix import statistic reset, fetch hashes async | Péter Szilágyi | 2015-06-15 | 1 | -11/+14 |
* | eth, eth/downloader: do async block fetches, add dl tests | Péter Szilágyi | 2015-06-15 | 2 | -4/+46 |
* | eth/downloader: sanity test for multi peer syncs | Péter Szilágyi | 2015-06-15 | 1 | -0/+31 |
* | eth, eth/downloader: move block processing into the downlaoder | Péter Szilágyi | 2015-06-15 | 2 | -180/+249 |
* | eth/downloader: add valid peer during attacks (check interference) | Péter Szilágyi | 2015-06-15 | 1 | -93/+140 |
* | eth/downloader: instreument and test the sync peer drop | Péter Szilágyi | 2015-06-15 | 2 | -9/+66 |
* | eth/downloader: support individual peers in the test suite | Péter Szilágyi | 2015-06-15 | 1 | -112/+113 |
* | eth/downloader: remove uneeded testing functions | Péter Szilágyi | 2015-06-15 | 2 | -37/+2 |
* | eth, eth/downloader: move peer removal into downloader | Péter Szilágyi | 2015-06-15 | 3 | -45/+76 |
* | eth/downloader: fetch the block hashes on the fly, when needed | Péter Szilágyi | 2015-06-11 | 1 | -9/+5 |
* | cmd/geth, eth/downloader: rough guess at the import eta | Péter Szilágyi | 2015-06-10 | 1 | -2/+13 |
* | cmd/geth, eth/downloader: collect and report import progress too | Péter Szilágyi | 2015-06-10 | 1 | -4/+35 |
* | eth/downloader: fix hash fetch timeout handling | Felix Lange | 2015-06-09 | 1 | -12/+18 |
* | eth/downloader: test registration rejection on head ban | Péter Szilágyi | 2015-06-08 | 1 | -2/+10 |
* | eth/downloader: reject peer registration if head is banned | Péter Szilágyi | 2015-06-08 | 1 | -4/+15 |
* | eth/downloader: cap the hash ban set, add test for it | Péter Szilágyi | 2015-06-08 | 4 | -9/+61 |
* | eth/downloader: fix throttling test to be less timing dependent | Péter Szilágyi | 2015-06-08 | 1 | -3/+7 |
* | eth/downloader: fix another rebase error | Péter Szilágyi | 2015-06-08 | 1 | -2/+1 |
* | eth/downloader: preallocate the block cache | Péter Szilágyi | 2015-06-08 | 3 | -21/+14 |
* | eth/downloader: fix merge compile error | Péter Szilágyi | 2015-06-08 | 1 | -1/+1 |
* | eth/downloader: don't block hash deliveries while pulling blocks | Péter Szilágyi | 2015-06-08 | 1 | -17/+14 |
* | eth/downloader: update test for shitty travis | Péter Szilágyi | 2015-06-08 | 1 | -1/+1 |
* | eth/downloader: clean up and simplify the code a bit | Péter Szilágyi | 2015-06-08 | 1 | -13/+3 |
* | eth/downloader: short circuit sync if head hash is banned | Péter Szilágyi | 2015-06-08 | 1 | -0/+4 |
* | eth/downloader: accumulating hash bans for reconnecting attackers | Péter Szilágyi | 2015-06-08 | 2 | -5/+126 |
* | eth/downloader: clean up tests and unused variables | Péter Szilágyi | 2015-06-08 | 2 | -120/+79 |
* | Merge pull request #1189 from karalabe/downloader-polishes | Jeffrey Wilcke | 2015-06-05 | 3 | -19/+50 |
|\ |
|
| * | eth/downloader: differentiate stale and nonexistent deliveries | Péter Szilágyi | 2015-06-05 | 2 | -19/+46 |
| * | eth/downloader: log hard timeouts and reset capacity | Péter Szilágyi | 2015-06-05 | 2 | -0/+4 |
* | | eth, eth/downloader: fix #1098, elevate empty hash errors to peer drops | Péter Szilágyi | 2015-06-05 | 1 | -2/+2 |
|/ |
|
* | eth/downloader: drop log entry from peer, it's covered already | Péter Szilágyi | 2015-06-04 | 1 | -5/+0 |
* | eth/downloader: log after state updates, easier to debug | Péter Szilágyi | 2015-06-04 | 1 | -5/+3 |
* | eth/downloader: fix #1178, don't request blocks beyond the cache bounds | Péter Szilágyi | 2015-06-04 | 3 | -15/+35 |
* | eth/downloader: demote peers if they exceed the soft limits at 1 blocks already | Péter Szilágyi | 2015-06-03 | 1 | -3/+8 |
* | eth/downloader: add a basic block download congestion control | Péter Szilágyi | 2015-06-03 | 5 | -55/+67 |
* | core, eth/downloader: expose the bad hashes, check in downloader | Péter Szilágyi | 2015-05-28 | 1 | -0/+16 |
* | eth/downloader: silence "Added N blocks from..." if N == 0 | Péter Szilágyi | 2015-05-26 | 1 | -1/+1 |
* | eth, eth/downloader: surface downloaded block origin, drop on error | Péter Szilágyi | 2015-05-26 | 3 | -14/+22 |
* | Merge pull request #1064 from karalabe/downloader-attacks | Jeffrey Wilcke | 2015-05-22 | 3 | -21/+93 |
|\ |
|
| * | eth, eth/downloader: remove duplicate consts, bump hash fetch to 2K | Péter Szilágyi | 2015-05-21 | 3 | -6/+8 |
| * | eth/downloader: circumvent a forged block chain with known parent attack | Péter Szilágyi | 2015-05-21 | 2 | -13/+56 |
| * | eth/downloader: prevent a peer from dripping bad hashes | Péter Szilágyi | 2015-05-21 | 2 | -9/+36 |
* | | eth/downloader: fix test to it doesn't time out on a slow machine | Péter Szilágyi | 2015-05-20 | 1 | -1/+1 |
|/ |
|
* | eth/downloader: moved start event | obscuren | 2015-05-16 | 1 | -2/+2 |
* | Merge pull request #996 from karalabe/fix-potential-crosscheck-race | Jeffrey Wilcke | 2015-05-16 | 1 | -5/+7 |
|\ |
|
| * | eth/downloader: circumvent download race between crosscheck and hashes | Péter Szilágyi | 2015-05-16 | 1 | -5/+7 |
* | | eth/downloader: fix #992, where tests may time out on a slow machine | Péter Szilágyi | 2015-05-16 | 1 | -0/+6 |
|/ |
|
* | eth/downloader: fix cancel channel double close | Péter Szilágyi | 2015-05-16 | 1 | -3/+8 |
* | eth/downloader: circumvent a fake blockchain attack | Péter Szilágyi | 2015-05-15 | 2 | -27/+58 |
* | eth/downloader: don't penalize for stale cross checks | Péter Szilágyi | 2015-05-15 | 1 | -7/+17 |
* | eth, eth/downloader: detect and handle madeup hash attacks | Péter Szilágyi | 2015-05-15 | 3 | -42/+109 |
* | eth/downloader: circumvent hash reordering attacks | Péter Szilágyi | 2015-05-15 | 3 | -49/+88 |
* | eth/downloader: check sync after failed attacks | Péter Szilágyi | 2015-05-15 | 2 | -7/+23 |
* | eth/downloader: add a test for detecting missing blocks | Péter Szilágyi | 2015-05-15 | 2 | -8/+24 |
* | eth, eth/downloader: prevent hash repeater attack | Péter Szilágyi | 2015-05-15 | 3 | -13/+46 |
* | eth/downloader: fixed test | obscuren | 2015-05-15 | 1 | -1/+3 |
* | eth, eth/downloader, miner: use download events to check miner start | obscuren | 2015-05-15 | 2 | -1/+21 |
* | Merge pull request #974 from karalabe/downloader-fix-unknown-parent-attack | Jeffrey Wilcke | 2015-05-14 | 3 | -34/+82 |
|\ |
|
| * | eth/downloader: add a small additional check to the test | Péter Szilágyi | 2015-05-14 | 1 | -0/+3 |
| * | eth/downloader: remove a previous leftover | Péter Szilágyi | 2015-05-14 | 1 | -1/+0 |
| * | eth, eth/downloader: remove parent verification from the downlaoder | Péter Szilágyi | 2015-05-14 | 3 | -37/+13 |
| * | eth, eth/downloader: handle a potential unknown parent attack | Péter Szilágyi | 2015-05-14 | 2 | -25/+95 |
* | | Merge pull request #950 from karalabe/downloader-cancel-sync | Jeffrey Wilcke | 2015-05-14 | 1 | -32/+37 |
|\ \ |
|
| * | | eth/downloader: remove a redundant sync progress check | Péter Szilágyi | 2015-05-13 | 1 | -4/+0 |
| * | | eth/downloader: add a user sync notificaton | Péter Szilágyi | 2015-05-13 | 1 | -0/+5 |
| * | | eth/downloader: sync the cancel channel during cancel too | Péter Szilágyi | 2015-05-13 | 1 | -21/+4 |
| * | | eth/downloader: fix deliveries to check for sync cancels | Péter Szilágyi | 2015-05-13 | 1 | -10/+31 |
| |/ |
|
* / | eth/downloader: fix nil panic caused by wrong variable use | Péter Szilágyi | 2015-05-13 | 1 | -1/+1 |
|/ |
|
* | eth/downloader: fix active peer shadowing, polish func names | Péter Szilágyi | 2015-05-13 | 2 | -22/+14 |
* | eth, eth/downloader: moved pending queue error message to debug | obscuren | 2015-05-11 | 1 | -2/+2 |
* | eth/downloader: use count instead of peers, clearer | Péter Szilágyi | 2015-05-11 | 2 | -4/+4 |
* | eth/downloader: revert to demotion, use harsher penalty | Péter Szilágyi | 2015-05-11 | 2 | -8/+19 |
* | eth/downloader: fix #910, thread safe peers & polishes | Péter Szilágyi | 2015-05-11 | 4 | -161/+210 |
* | eth: added a cancel method for the downloader | obscuren | 2015-05-10 | 2 | -2/+103 |
* | eth/downloader: fix leftover state between syncs | Péter Szilágyi | 2015-05-08 | 1 | -1/+4 |
* | eth, eth/downloader: handle sync errors a bit more gracefully | Péter Szilágyi | 2015-05-08 | 2 | -18/+16 |
* | eth, eth/downloader: make synchronize thread safe | Péter Szilágyi | 2015-05-08 | 3 | -68/+16 |
* | eth/downloader: fix priority queue reset, add throttling test | Péter Szilágyi | 2015-05-07 | 1 | -0/+48 |
* | eth/downloader: fix expiration not running while fetching | Péter Szilágyi | 2015-05-07 | 2 | -34/+32 |
* | eth/downloader: prioritize block fetch based on chain position, cap memory use | Péter Szilágyi | 2015-05-07 | 5 | -273/+369 |
* | downloader: hash downloading recovery | obscuren | 2015-05-03 | 2 | -29/+71 |
* | eth/downloader: put back hashes on block overflow error | obscuren | 2015-05-03 | 1 | -19/+14 |
* | eth/downloader: changed has to blockHashes for chain linking | obscuren | 2015-05-03 | 1 | -1/+1 |
* | eth/downloader: added additional tests | obscuren | 2015-05-03 | 2 | -4/+73 |
* | eth, eth/downloader: Moved block processing & graceful shutdown | obscuren | 2015-05-01 | 3 | -173/+221 |
* | eth/downloader: delete blocks from queue | obscuren | 2015-04-30 | 1 | -2/+14 |
* | eth, eth/downloader: remove bad peers from peer set | obscuren | 2015-04-30 | 1 | -10/+8 |
* | eth/downloader: drop block | obscuren | 2015-04-30 | 1 | -1/+1 |
* | core: fixed tetst to reflect (int, error) return by insertChain | obscuren | 2015-04-29 | 1 | -2/+2 |
* | eth/downloader: ignore orphan blocks in the downloader. | obscuren | 2015-04-29 | 1 | -5/+9 |
* | core: return the index of the block that failed when inserting a chain | obscuren | 2015-04-29 | 1 | -5/+4 |
* | eth/downloader: reset the chain when parent is missing during processing | obscuren | 2015-04-29 | 1 | -0/+2 |
* | eth: check if downloader is busy before showing log message | obscuren | 2015-04-29 | 1 | -0/+4 |
* | eth/downloader: removed update loop and synch channel | obscuren | 2015-04-25 | 1 | -25/+0 |
* | eth/downloader: fixed tests | obscuren | 2015-04-24 | 1 | -12/+8 |
* | eth, eth/downloader: simplified synchronisation process | obscuren | 2015-04-24 | 1 | -24/+13 |
* | eth/downloader: removed peer td management and best peer selection | obscuren | 2015-04-24 | 2 | -16/+2 |
* | eth, eth/downloader: don't require td on downloader. Fixed tests | obscuren | 2015-04-24 | 2 | -21/+18 |
* | eth, eth/downloader: moved peer selection to protocol handler | obscuren | 2015-04-24 | 2 | -124/+50 |
* | core: added chain head reset to known block | obscuren | 2015-04-20 | 1 | -0/+2 |
* | geth: admin download status | obscuren | 2015-04-20 | 1 | -11/+15 |
* | downloader: fixed tests with low ttl | obscuren | 2015-04-19 | 2 | -2/+3 |
* | moved | obscuren | 2015-04-19 | 1 | -6/+6 |
* | Removed debug println | obscuren | 2015-04-19 | 1 | -3/+0 |
* | downloader: moved chunk ignoring. Fixes issue with catching up | obscuren | 2015-04-19 | 4 | -31/+44 |
* | downloader: defer peer reset after download | obscuren | 2015-04-19 | 2 | -4/+8 |
* | downloader: reset hashTtl on receive | obscuren | 2015-04-19 | 1 | -0/+2 |
* | downloader: don't remove peers. keep them around | obscuren | 2015-04-19 | 1 | -2/+3 |
* | typo | obscuren | 2015-04-19 | 1 | -1/+1 |
* | downloader: free up peers from work when the downloader resets | obscuren | 2015-04-19 | 3 | -5/+22 |
* | downloader: throw an error if there are no peers available for download | obscuren | 2015-04-19 | 1 | -6/+16 |
* | downloader: fixed a race condition for download status | obscuren | 2015-04-19 | 1 | -1/+0 |
* | eth: adapted to new synchronous api of downloader's AddBlock | obscuren | 2015-04-19 | 2 | -2/+2 |
* | downloader: improved downloading and synchronisation | obscuren | 2015-04-19 | 4 | -110/+129 |
* | downloader: make sure that hashes are only accepted from the active peer | obscuren | 2015-04-18 | 1 | -18/+45 |
* | downloader: reset the queue if a peer response with an empty hash set | obscuren | 2015-04-18 | 2 | -14/+36 |
* | downloader: all handlers check for isBusy | obscuren | 2015-04-18 | 1 | -7/+7 |
* | Merge branch 'develop' into downloader-proto | obscuren | 2015-04-18 | 2 | -5/+117 |
|\ |
|
| * | downloader: fixed a typo | obscuren | 2015-04-17 | 1 | -1/+1 |
| * | downloader: added demotion / promotion in prep. for rep. system | obscuren | 2015-04-16 | 2 | -0/+25 |
| * | downloader: updated downloader and fixed issues with catch up | obscuren | 2015-04-16 | 1 | -21/+47 |
* | | downloader: updated downloader and fixed issues with catch up | obscuren | 2015-04-16 | 1 | -22/+48 |
|/ |
|
* | downloader: added missing blocks catchup functionality | obscuren | 2015-04-13 | 4 | -133/+303 |
* | downloader: return an error for peer.fetch and return chunk to queue | obscuren | 2015-04-12 | 2 | -3/+16 |
* | downloader: renamed chunks to queue | obscuren | 2015-04-12 | 1 | -0/+0 |
* | downloader: implemented new downloader | obscuren | 2015-04-12 | 4 | -0/+602 |