sipa changed the topic of #bitcoin-wizards to: This channel is for discussing theoretical ideas with regard to cryptocurrencies, not about short-term Bitcoin development | http://bitcoin.ninja/ | This channel is logged. | For logs and more information, visit http://bitcoin.ninja
tromp has joined #bitcoin-wizards
aguycalled has quit [Read error: Connection reset by peer]
aguycalled has joined #bitcoin-wizards
se3000 has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
se3000 has joined #bitcoin-wizards
tromp has quit [Remote host closed the connection]
kenshi84 has joined #bitcoin-wizards
tromp has joined #bitcoin-wizards
se3000 has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
se3000 has joined #bitcoin-wizards
Chris_Stewart_5 has quit [Ping timeout: 252 seconds]
<jeremyrubin>
Does anyone know if there's been any prior art on the ideas of _virtual outputs_ or _intermediate outputs_? A virtual output is an output that is created in such a manner that it A) is zero valued B) is prunable (e.g., OP_RETUN) C) If the OP_RETUN prefix were removed, some input provides a witness of how such an output could be redeemed. A virtual output is an output which is marked to be required to be spent within the same block as
<jeremyrubin>
Oops, I repeated virtual output; the latter is intermediate
<jeremyrubin>
In a virtual output, it is safe to enable certain features (such as covenants) without worry of causing a fungibility issue, because the computation is guaranteed to terminate.
<jeremyrubin>
(I beleive such a design is \Del_0 compatible)
dnaleor has quit [Quit: Leaving]
<jeremyrubin>
(This is also somewhat true for intermediate outputs)
<jeremyrubin>
I think that the above two could be useful in bitcoin as new opcodes which allow for much improved multi-transaction contract building.
<jeremyrubin>
I think if it were a matter of one or the other, I'd prefer virtual to intermediate because it is less complicated to mine.
<jeremyrubin>
But the code for mining Child-Pays-For-Parent already encapsulates similar logic I beleive.
<jeremyrubin>
<br>
chjj has quit [Ping timeout: 255 seconds]
<jeremyrubin>
On another note, I'd be curious to hear if there is also prior art on inverted inputs; e.g. a proof that an input could not be created.
CheckDavid has joined #bitcoin-wizards
<jeremyrubin>
For instance, if I want to say that a pre-generated spend is only possible if another spend of coins has already occured, an inverted output could be used to force a "wait" condition.
maaku has quit [Quit: No Ping reply in 180 seconds.]
<jeremyrubin>
These are already semi-possible in bitcoin without extension if the prograer explicityly adds an output that can be consumed after the spend desired to be monitored, but that doesn't generalize all too well (utxo/observer, observers must be created ahead of time)
maaku has joined #bitcoin-wizards
<jeremyrubin>
These can also be made more general if showing that the existence of another input precludes the creation (via mutual ancestor) of another desired input.
tromp has quit [Remote host closed the connection]
uiuc-slack has quit [Remote host closed the connection]
uiuc-slack has joined #bitcoin-wizards
tromp has joined #bitcoin-wizards
chjj has joined #bitcoin-wizards
HostFat_ has joined #bitcoin-wizards
Giszmo has quit [Ping timeout: 240 seconds]
HostFat__ has quit [Ping timeout: 276 seconds]
CrazyLoaf has joined #bitcoin-wizards
kenshi84_ has joined #bitcoin-wizards
Giszmo has joined #bitcoin-wizards
maaku has quit [Quit: No Ping reply in 180 seconds.]
kenshi84 has quit [Ping timeout: 240 seconds]
maaku has joined #bitcoin-wizards
kenshi84_ is now known as kenshi84
harrymm has joined #bitcoin-wizards
MaxSan has quit [Ping timeout: 248 seconds]
se3000 has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
aguycalled has quit [Remote host closed the connection]
Giszmo has quit [Ping timeout: 240 seconds]
_whitelogger has joined #bitcoin-wizards
Giszmo has joined #bitcoin-wizards
CheckDavid has quit [Quit: Connection closed for inactivity]
LIERO has quit [Ping timeout: 255 seconds]
pro has quit [Quit: Leaving]
kenshi84_ has joined #bitcoin-wizards
kenshi84 has quit [Killed (sinisalo.freenode.net (Nickname regained by services))]
kenshi84_ is now known as kenshi84
CrazyLoaf has quit [Quit: Connection closed for inactivity]
tromp has quit [Remote host closed the connection]
legogris has quit [Remote host closed the connection]
legogris has joined #bitcoin-wizards
rusty2 has joined #bitcoin-wizards
TheSeven has quit [Ping timeout: 256 seconds]
[7] has joined #bitcoin-wizards
rusty2 has quit [Quit: Leaving.]
rusty21 has joined #bitcoin-wizards
rusty21 has quit [Ping timeout: 256 seconds]
rusty2 has joined #bitcoin-wizards
gigq has quit [Ping timeout: 240 seconds]
gigq has joined #bitcoin-wizards
arthurb_ has quit [Quit: Konversation terminated!]
[7] has quit [Ping timeout: 240 seconds]
TheSeven has joined #bitcoin-wizards
gigq has quit [Ping timeout: 240 seconds]
Ylbam has quit [Quit: Connection closed for inactivity]
gigq has joined #bitcoin-wizards
chjj has quit [Ping timeout: 260 seconds]
kenshi84_ has joined #bitcoin-wizards
kenshi84 has quit [Killed (hobana.freenode.net (Nickname regained by services))]
kenshi84_ is now known as kenshi84
CrazyLoaf has joined #bitcoin-wizards
tromp has joined #bitcoin-wizards
lclc has joined #bitcoin-wizards
tromp has quit [Ping timeout: 248 seconds]
rusty2 has quit [Ping timeout: 276 seconds]
Giszmo has quit [Read error: Connection reset by peer]
chjj has joined #bitcoin-wizards
Ylbam has joined #bitcoin-wizards
Giszmo has joined #bitcoin-wizards
Aranjedeath has quit [Quit: Three sheets to the wind]
LIERO has joined #bitcoin-wizards
adlai has quit [Ping timeout: 240 seconds]
BashCo has quit [Remote host closed the connection]
BashCo has joined #bitcoin-wizards
adlai has joined #bitcoin-wizards
BashCo has quit [Ping timeout: 260 seconds]
adlai has quit [Ping timeout: 256 seconds]
kenshi84_ has joined #bitcoin-wizards
adlai has joined #bitcoin-wizards
kenshi84 has quit [Ping timeout: 255 seconds]
fibonacci has quit [Quit: Connection closed for inactivity]
BashCo has joined #bitcoin-wizards
gigq has quit [Ping timeout: 240 seconds]
Davasny has joined #bitcoin-wizards
gigq has joined #bitcoin-wizards
tromp has joined #bitcoin-wizards
Guyver2 has joined #bitcoin-wizards
kenshi84_ has quit [Remote host closed the connection]
kenshi84 has joined #bitcoin-wizards
tromp has quit [Ping timeout: 264 seconds]
CrazyLoaf has quit [Quit: Connection closed for inactivity]
isle2983 has quit [Read error: Connection reset by peer]
Chris_Stewart_5 has quit [Read error: Connection reset by peer]
kankles has quit [Read error: Connection reset by peer]
jannes has joined #bitcoin-wizards
dnaleor has joined #bitcoin-wizards
kenshi84_ has joined #bitcoin-wizards
MaxSan has joined #bitcoin-wizards
kenshi84 has quit [Ping timeout: 264 seconds]
licnep has quit [Quit: Connection closed for inactivity]
kenshi84 has joined #bitcoin-wizards
kenshi84_ has quit [Read error: Connection reset by peer]
kenshi84_ has joined #bitcoin-wizards
MaxSan has quit [Ping timeout: 248 seconds]
atgreen has quit [Ping timeout: 256 seconds]
kenshi84 has quit [Ping timeout: 276 seconds]
kenshi84 has joined #bitcoin-wizards
kenshi84_ has quit [Ping timeout: 276 seconds]
rusty2 has joined #bitcoin-wizards
kenshi84 has quit [Remote host closed the connection]
kenshi84 has joined #bitcoin-wizards
rusty2 is now known as rusty
kenshi84 has quit [Ping timeout: 252 seconds]
paveljanik has quit [Quit: Leaving]
aguycalled has joined #bitcoin-wizards
rusty has quit [Ping timeout: 255 seconds]
aguycalled has quit [Read error: Connection reset by peer]
aguycalled has joined #bitcoin-wizards
lclc has quit [Ping timeout: 240 seconds]
tromp has joined #bitcoin-wizards
tromp has quit [Ping timeout: 255 seconds]
MaxSan has joined #bitcoin-wizards
waxwing has joined #bitcoin-wizards
arubi has quit [Quit: bye]
arubi has joined #bitcoin-wizards
lclc has joined #bitcoin-wizards
atgreen has joined #bitcoin-wizards
MaxSan has quit [Quit: Leaving.]
tromp has joined #bitcoin-wizards
tromp has quit [Ping timeout: 240 seconds]
CheckDavid has joined #bitcoin-wizards
edvorg has joined #bitcoin-wizards
tromp has joined #bitcoin-wizards
CubicEarth has quit [Remote host closed the connection]
kenshi84 has joined #bitcoin-wizards
edvorg has quit [Remote host closed the connection]
lclc has quit [Ping timeout: 255 seconds]
edvorg has joined #bitcoin-wizards
cyphase has quit [Read error: Connection reset by peer]
cyphase_eviltwin has joined #bitcoin-wizards
lclc has joined #bitcoin-wizards
tromp has quit [Remote host closed the connection]
uiuc-slack has quit [Remote host closed the connection]
uiuc-slack has joined #bitcoin-wizards
lclc has quit [Ping timeout: 248 seconds]
Cory has quit [Remote host closed the connection]
lclc has joined #bitcoin-wizards
jcluck has joined #bitcoin-wizards
nanotube has quit [Ping timeout: 256 seconds]
cluckj has quit [Ping timeout: 256 seconds]
Cory has joined #bitcoin-wizards
edvorg has quit [Remote host closed the connection]
fluffypony has quit [Ping timeout: 240 seconds]
coryfields_ has joined #bitcoin-wizards
Intensity has quit [Ping timeout: 256 seconds]
coryfields has quit [Ping timeout: 240 seconds]
edvorg has joined #bitcoin-wizards
fluffypony has joined #bitcoin-wizards
fluffypony has quit [Changing host]
fluffypony has joined #bitcoin-wizards
Jeremy_Rand[m] has quit [Ping timeout: 255 seconds]
atgreen has quit [Ping timeout: 258 seconds]
Jeremy_Rand[m] has joined #bitcoin-wizards
nanotube has joined #bitcoin-wizards
CubicEarth has joined #bitcoin-wizards
pro has joined #bitcoin-wizards
CubicEarth has quit [Ping timeout: 258 seconds]
Chris_Stewart_5 has joined #bitcoin-wizards
Intensity has joined #bitcoin-wizards
lclc has quit [Ping timeout: 255 seconds]
Intensity has quit [Ping timeout: 256 seconds]
jcluck is now known as cluckj
Intensity has joined #bitcoin-wizards
tromp has joined #bitcoin-wizards
lclc has joined #bitcoin-wizards
tromp has quit [Ping timeout: 264 seconds]
lclc has quit [Ping timeout: 248 seconds]
wizkid057 has quit [Ping timeout: 252 seconds]
kenshi84_ has joined #bitcoin-wizards
wizkid057 has joined #bitcoin-wizards
edvorg has quit [Remote host closed the connection]
kenshi84 has quit [Ping timeout: 255 seconds]
CrazyLoaf has joined #bitcoin-wizards
isle2983 has joined #bitcoin-wizards
CubicEarth has joined #bitcoin-wizards
CubicEarth has quit [Ping timeout: 256 seconds]
edvorg has joined #bitcoin-wizards
lclc has joined #bitcoin-wizards
waxwing has quit [Quit: Leaving]
cyphase_eviltwin is now known as cyphase
WungFu has joined #bitcoin-wizards
aguycall_ has joined #bitcoin-wizards
aguycalled has quit [Read error: Connection reset by peer]
CubicEarth has joined #bitcoin-wizards
Giszmo has quit [Ping timeout: 245 seconds]
CubicEarth has quit [Ping timeout: 256 seconds]
weeeeeew has quit [Ping timeout: 256 seconds]
Giszmo has joined #bitcoin-wizards
CheckDavid has quit [Quit: Connection closed for inactivity]
licnep has joined #bitcoin-wizards
BashCo_ has joined #bitcoin-wizards
weeeeeew has joined #bitcoin-wizards
tromp has joined #bitcoin-wizards
BashCo has quit [Ping timeout: 260 seconds]
tromp has quit [Ping timeout: 240 seconds]
kenshi84 has joined #bitcoin-wizards
lclc has quit [Ping timeout: 255 seconds]
kenshi84_ has quit [Ping timeout: 240 seconds]
Starduster has quit [Ping timeout: 276 seconds]
se3000 has joined #bitcoin-wizards
CubicEarth has joined #bitcoin-wizards
CubicEarth has quit [Ping timeout: 276 seconds]
paveljanik has joined #bitcoin-wizards
paveljanik has joined #bitcoin-wizards
paveljanik has quit [Changing host]
aguycall_ has quit []
WungFu has quit [Ping timeout: 240 seconds]
cluckj has quit [Quit: Leaving]
maaku has quit [Quit: No Ping reply in 180 seconds.]
se3000 has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
<kanzure>
could it be shown that there's a game where you can withhold information but withholding cannot cause (some types of?) partitioning?
pero has left #bitcoin-wizards ["Leaving"]
<kanzure>
alternatively, i think there could be a very high latency interactive protocol where you have to collect signatures from everyone, and if you don't then you could backoff of the total data size for the next round, as an anti-dos rule.
<gmaxwell>
if I understand what you're asking ... the coding based anti-witholding scheme I came up has that property but only really works if people get their data from one source.
<kanzure>
context is mostly fraud proofs (or validity challenges) and the withholding problems when you have really large blocks (why would someone voluntarily tell you that they are causing inflation?)
<gmaxwell>
Which is say an attacker wants to hide one transaction in a block. And many clients will query the attacker for a random subset of transactions. The attacker will just fail to respond to queries for the bad data.
<gmaxwell>
The obvious countereasure is for clients to share with each other when they fail, but it doesn't clearly work because they can't prove they failed so the attacker could flood clients with fake failed share reports, causing them to just go fetch the data the attacker wants them to fetch.
<kanzure>
how do you show the failure to respond is not just DoS or something?
<kanzure>
right ok.
<gmaxwell>
What I suggested is that the protocol have the participants transmit the block data using a locally decodable code. So you randomly decide to check transactions x,y,z and then request data that will let you decode x,y,z but with some overhead from your error coding.
<kanzure>
insert various handwaving about noninteractive querying some snark proof... given magical snark prover..
<gmaxwell>
This can be constructed so that the attacker can only respond to ~= 1blocksize worth of queries IN TOTAL. or else risk that the clients can combine the data they recieved in order to recover the censored parts.
kenshi84 has joined #bitcoin-wizards
<kanzure>
what happens with malicious clients that don't share with other clients?
<gmaxwell>
they just don't count in the 1 blocksize worth.
<gmaxwell>
To be pedantic, the attacker cannot send more than $SIZE data to any collaborating set of honest clients.
<gmaxwell>
or else they can recover the whole thing.
kenshi84_ has quit [Ping timeout: 240 seconds]
se3000 has joined #bitcoin-wizards
<gmaxwell>
I think the coding based anti-censorship also combined well with past-miner signaling ... let every block commit to an additional public key. Now when you get a block you allow any of the last 100 blocks to send you a message that says "You must check transaction X,Y". If you get one of those messages, you will reject the block until you can check X,Y.
<gmaxwell>
the set of keys doesn't need to be limited to past miners, the only reason to restrict these hints is to constrain DOS attacks... so you could have your list of keys include a small random collection of whatever. Differences in people's advice acceptance sets can only cause a network split in the presence of block sources hiding transaction data.
<kanzure>
malicious clients could request lots of proofs, block signer ends up getting DoSed to death unable to transfer proofs to honest flood-network clients. ya?
<gmaxwell>
yea, but thats always true... I could keep your busy sending blocks to me so they don't send them to other people.
<gmaxwell>
if the coded version of the block were commited in the block, then anyone with a full copy of the whole thing could respond to coded block requests. But it would be computationally expensive (thus latent) to compute all the queries in advance, unfortunately. Maybe less of a concern with pre-consensus.
<gmaxwell>
In any case the two ideas (shared 'asks') and coded blocks are complementary. The coding amplifies censorship so that any censorship requires to to reject many queries or risk the censorship failing. The requests let honest users force a small set of additional queries across the network under penalty of rejecting the block. (Given a non-partitioning assumption, of course)
<kanzure>
"causing them to just go fetch the data the attacker wants them to fetch" buuut then they will fetch the data and be able to show the malicious activity (inflation or whatever)... if the attacker doesn't provide the data, the scheme doesn't work.
<gmaxwell>
kanzure: I suppose I've been unclear. In that sentence I was intentionally describing something that doesn't work.
<kanzure>
oh i see hwat you mean re: coding, you really did mean "~1MB worth of queries in total", because otherwise they are responding with more data than should be possible
<gmaxwell>
If we random sample, attacker may deny my samples that would hit gold. Bummer. But I could tell everyone else to also sample that location and if they can't get it, reject the block. Hurray. Except that can just be DOS attackked bummer (attacker keeps you busy fetching things he will serve).
<gmaxwell>
So I suggest two techniques:
<kanzure>
i'm not sure i understand when clients can safely say the block seems safe. they seem to need consensus over all the query-responses?
<gmaxwell>
(1) with coding we can make it so that if the block has 100 parts, and one bad part, than he can only respond to ~100 total queries for any parts without revealing the bad part.
<gmaxwell>
(2) we give prior block authors and other semi-honest parties the ability to tell every client to make one extra query each, which if they get denied they'll reject the block (just as they do for their own queries). This prevents the dos attack, because it bounds the number of additional queries.
<gmaxwell>
The (2) alone would be enough except for an attacker could play a game where they censor a lot of non-invalid data... just to force the semi-honest beacons to blow their queries extracting that from them.
<gmaxwell>
(1) amplifies censorship, so you can't share much data at all without showing an inconsistency OR revealing the censored data.
<kanzure>
not sure i understand the semi-honest party requirement, is this a set of known 'beacon' nodes? or are they random participants
<gmaxwell>
kanzure: you want them to be relatively consistent between participants because IF there is censorship, differences in the set might result in some clients accepting a block and others rejecting it. Though they do not have to be absolutely consistent.
<gmaxwell>
Basically for a given amount of coding amplification, you would need a given amount of additional forced queries to either prove censorship or prove dishonesty to everyone. So your set needs to include enough honest parties that would create the right demands. It can include additional attacker controlled parties, all they do is waste a bit of bandwidth.
<kanzure>
ok, and on the flooding network where clients send proofs to each other, you sit there passing around the proofs and wait until you have seen sufficient evidence (which is =~ the block size plus some overhead maybe)? or is it enough to wait to hear about possible dishonesty, without checking/storing the passing proofs. it seems like you need to be able to detect conflicts from the coding...
<kanzure>
... scheme(?), so you do have to store something?
<gmaxwell>
you have to be able to detect coding conflicts, which I believe requires a small constant multiple of a block size worth of storage.
chjj has quit [Ping timeout: 256 seconds]
tromp has joined #bitcoin-wizards
<kanzure>
is pruning okay here? i mean, if it's more storage space then you might as well insist that the block signer/miner transmit the actual large block contents anyway.
<kanzure>
(pruning after a round, i guess)
<gmaxwell>
well you only need that for a block you're considering rejecting.. so presumably just a small number of blocks at the tip worth.
<gmaxwell>
at worst.
<gmaxwell>
because either you'll learn enough to reject it in 10 minutes or you won't.
<kanzure>
hrm i don't know why i asked that. storage isn't the concern, it's total bandwidth per round heh.
<gmaxwell>
yea.
tromp has quit [Ping timeout: 255 seconds]
<gmaxwell>
In any case I think PT is far too dismissive... Another possible solution to the censorship problem is that you simply let a configured semi-honest party (e.g. the developers of your software) tell you additional places to sample. They could at most make you transfer a whole block every time (as if they wrote the software to just do that)... not much of an attack vector. ... as if you find them w
<gmaxwell>
asting your bandwidth you'd just replace them with another one.
lclc has quit [Ping timeout: 240 seconds]
<gmaxwell>
and it would immediately boost the security to an attack requiring a majority hashpower and control over the keys that the target clients listen to.
<kanzure>
maybe with some public auditing/verification a centralized coordination (for assigning the sharded asks) wouldn't be so bad.
<kanzure>
that footprint has to be realllly tiny
<kanzure>
in terms of features.
<kanzure>
say there are four or five different groups assigning the shards in that manner, to reduce total bandwidth for their clients. is there a failure mode where picking poor shards would cause clients to fail to identify block fraud? if they are on a single global flood network (in addition to the sharded ask coordination thing), then this seems to not be a failure mode.
reginaldo has joined #bitcoin-wizards
<kanzure>
it's too bad that low bandwidth nodes need to be forced to a totally different security model
<gmaxwell>
please 'shards' make little sense; that kind of buzzardry makes me want to ragequit this channel. You cannot tidly divide the flow of information in the bitcoin system. Transactions gather random txouts.
<kanzure>
ah i thought you typed "sharded" above (you had "shared"), nevermind my shards
<kanzure>
*typoed
luke-jr has joined #bitcoin-wizards
TheSeven has quit [Ping timeout: 256 seconds]
TheSeven has joined #bitcoin-wizards
reginaldo has quit [Quit: Leaving]
waxwing has joined #bitcoin-wizards
chjj has joined #bitcoin-wizards
metric has quit [Quit: No Ping reply in 180 seconds.]
chjj has quit [Quit: WeeChat 1.7]
reginaldo has joined #bitcoin-wizards
chjj has joined #bitcoin-wizards
metric has joined #bitcoin-wizards
metric has quit [Quit: No Ping reply in 180 seconds.]
metric has joined #bitcoin-wizards
se3000 has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
metric has quit [Quit: No Ping reply in 180 seconds.]
kenshi84_ has joined #bitcoin-wizards
se3000 has joined #bitcoin-wizards
kenshi84 has quit [Ping timeout: 260 seconds]
reginaldo has quit [Quit: Leaving]
JHistone has quit [Ping timeout: 255 seconds]
kenshi84_ has quit [Remote host closed the connection]
kenshi84 has joined #bitcoin-wizards
kankles has joined #bitcoin-wizards
kenshi84 has quit [Ping timeout: 258 seconds]
jannes has quit [Quit: Leaving]
tromp has joined #bitcoin-wizards
tromp has quit [Ping timeout: 248 seconds]
kenshi84 has joined #bitcoin-wizards
jtimon has joined #bitcoin-wizards
Davasny has quit [Remote host closed the connection]
Giszmo has quit [Quit: Leaving.]
atgreen has joined #bitcoin-wizards
Giszmo has joined #bitcoin-wizards
kenshi84 has quit [Read error: Connection reset by peer]
andytoshi has quit [Ping timeout: 272 seconds]
kenshi84 has joined #bitcoin-wizards
kenshi84_ has joined #bitcoin-wizards
kenshi8__ has joined #bitcoin-wizards
kenshi84 has quit [Read error: Connection reset by peer]
kenshi84_ has quit [Ping timeout: 240 seconds]
kenshi8__ has quit [Read error: Connection reset by peer]
kenshi84 has joined #bitcoin-wizards
kenshi84_ has joined #bitcoin-wizards
kenshi8__ has joined #bitcoin-wizards
kenshi8__ has quit [Remote host closed the connection]
kenshi84 has quit [Ping timeout: 258 seconds]
kenshi84 has joined #bitcoin-wizards
kenshi84 has quit [Remote host closed the connection]
kenshi84 has joined #bitcoin-wizards
kenshi84_ has quit [Ping timeout: 252 seconds]
JHistone has joined #bitcoin-wizards
JHistone has quit [Client Quit]
waxwing has quit [Ping timeout: 264 seconds]
JHistone has joined #bitcoin-wizards
kenshi84 has quit [Read error: Connection reset by peer]
Guyver2 has quit [Quit: :)]
kenshi84 has joined #bitcoin-wizards
kenshi84_ has joined #bitcoin-wizards
rusty2 has joined #bitcoin-wizards
kenshi84 has quit [Ping timeout: 245 seconds]
tromp has joined #bitcoin-wizards
Seedster has joined #bitcoin-wizards
tromp has quit [Ping timeout: 260 seconds]
kenshi84_ has quit [Read error: Connection reset by peer]