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
ghtdak has quit [Quit: WeeChat 1.4-dev]
dEBRUYNE_ has joined #bitcoin-wizards
bitcoin-wizards1 has joined #bitcoin-wizards
dEBRUYNE_ has quit [Client Quit]
Quanttek has quit [Ping timeout: 255 seconds]
CubicEarth has quit [Remote host closed the connection]
matsjj_ has quit [Remote host closed the connection]
ThomasV has joined #bitcoin-wizards
ThomasV has quit [Changing host]
ThomasV has joined #bitcoin-wizards
lmatteis has quit [Ping timeout: 250 seconds]
matsjj has joined #bitcoin-wizards
gielbier has joined #bitcoin-wizards
catcow has joined #bitcoin-wizards
gielbier has quit [Client Quit]
bramc has quit [Quit: This computer has gone to sleep]
lmatteis has joined #bitcoin-wizards
matsjj_ has joined #bitcoin-wizards
morcos has quit [Ping timeout: 240 seconds]
catcow has quit [Ping timeout: 256 seconds]
matsjj has quit [Ping timeout: 240 seconds]
morcos has joined #bitcoin-wizards
jl2012 has quit [Ping timeout: 240 seconds]
CubicEar_ has quit [Remote host closed the connection]
jl2012 has joined #bitcoin-wizards
lmatteis has quit [Ping timeout: 240 seconds]
jl2012 has quit [Ping timeout: 240 seconds]
AaronvanW has joined #bitcoin-wizards
ThomasV has quit [Ping timeout: 240 seconds]
maaku has joined #bitcoin-wizards
maaku is now known as Guest83522
rusty has joined #bitcoin-wizards
catcow has joined #bitcoin-wizards
lmatteis has joined #bitcoin-wizards
matsjj_ has quit [Remote host closed the connection]
matsjj has joined #bitcoin-wizards
jl2012 has joined #bitcoin-wizards
Ylbam has joined #bitcoin-wizards
matsjj has quit [Ping timeout: 246 seconds]
r0ach has quit []
nuke1989 has quit [Remote host closed the connection]
roconnor has quit [Ping timeout: 246 seconds]
ThomasV has joined #bitcoin-wizards
Guyver2 has quit [Quit: :)]
Yoghur114 has quit [Remote host closed the connection]
rusty has quit [Ping timeout: 246 seconds]
Yoghur114 has joined #bitcoin-wizards
leakypat has joined #bitcoin-wizards
leakypat has quit [Client Quit]
hdbuck has joined #bitcoin-wizards
hdbuck has quit [Changing host]
hdbuck has joined #bitcoin-wizards
ThomasV has quit [Ping timeout: 256 seconds]
hdbuck has quit [Quit: hdbuck]
lmatteis has quit [Ping timeout: 240 seconds]
catcow has quit [Ping timeout: 240 seconds]
lmatteis has joined #bitcoin-wizards
lmatteis has quit [Ping timeout: 255 seconds]
Ylbam has quit [Read error: Connection reset by peer]
jl2012 has quit [Read error: Connection reset by peer]
Ylbam has joined #bitcoin-wizards
catcow has joined #bitcoin-wizards
jl2012 has joined #bitcoin-wizards
GAit has joined #bitcoin-wizards
Ylbam has quit [Ping timeout: 240 seconds]
AaronvanW has quit [Remote host closed the connection]
catcow has quit [Ping timeout: 240 seconds]
dEBRUYNE has joined #bitcoin-wizards
GAit has quit [Quit: Leaving.]
ThomasV has joined #bitcoin-wizards
AaronvanW has joined #bitcoin-wizards
AaronvanW has joined #bitcoin-wizards
pozitron has quit [Ping timeout: 255 seconds]
GAit has joined #bitcoin-wizards
MoALTz has quit [Ping timeout: 246 seconds]
jl2012 has quit [Ping timeout: 255 seconds]
catcow has joined #bitcoin-wizards
dEBRUYNE_ has joined #bitcoin-wizards
dEBRUYNE has quit [Ping timeout: 265 seconds]
jl2012 has joined #bitcoin-wizards
lmatteis has joined #bitcoin-wizards
Ylbam has joined #bitcoin-wizards
King_Rex has joined #bitcoin-wizards
MoALTz has joined #bitcoin-wizards
p15 has quit [Ping timeout: 272 seconds]
GAit has quit [Quit: Leaving.]
atgreen_ has quit [Ping timeout: 272 seconds]
licnep has joined #bitcoin-wizards
chjj has quit [Ping timeout: 246 seconds]
Quanttek has joined #bitcoin-wizards
GAit has joined #bitcoin-wizards
ThomasV has quit [Ping timeout: 255 seconds]
matsjj has joined #bitcoin-wizards
catcow has quit []
catcow has joined #bitcoin-wizards
catcow_ has joined #bitcoin-wizards
GGuyZ has joined #bitcoin-wizards
dEBRUYNE_ has quit [Ping timeout: 265 seconds]
GGuyZ has quit [Quit: GGuyZ]
tromp_ has joined #bitcoin-wizards
GAit has quit [Quit: Leaving.]
jgarzik has quit [Quit: Leaving]
tromp_ has quit [Remote host closed the connection]
Guest83522 is now known as maaku
GAit has joined #bitcoin-wizards
atgreen_ has joined #bitcoin-wizards
jgarzik has joined #bitcoin-wizards
jgarzik has quit [Changing host]
jgarzik has joined #bitcoin-wizards
laurentmt has joined #bitcoin-wizards
zookolaptop has joined #bitcoin-wizards
laurentmt has quit [Client Quit]
dEBRUYNE_ has joined #bitcoin-wizards
zookolaptop has quit [Ping timeout: 260 seconds]
<maaku>
sipa / phantomcircuit : how does one efficiently prove that the merkle-sum-tree or backlink tree roots are random junk?
seg has quit [Remote host closed the connection]
seg has joined #bitcoin-wizards
<aj>
maaku: isn't that trying to prove a negative? (ie, you prove that they're not random junk, or you don't do anything?)
bobke has joined #bitcoin-wizards
jcluck has joined #bitcoin-wizards
GGuyZ has joined #bitcoin-wizards
<sipa>
maaku: you can't
catcow_ has quit []
cluckj has quit [Ping timeout: 265 seconds]
dEBRUYNE__ has joined #bitcoin-wizards
<jl2012>
sipa: why do we need a commitment for witness hash at all? As long as one could produce a valid witness for a given tx, the actual content of the witness is irrelevant. If you need to calculate the block size or sigop etc, all you need is to commit these constraints. You don't even need to commit the actual number -- just the upper limit is enough. E.g., the
<jl2012>
witness of input X of tx Y must not be larger than Z bytes, and Z will be used for the purpose of block size.
roconnor has joined #bitcoin-wizards
<aj>
sipa: okay, call me stupid for not being able to find it myself, but can you point me at where the 75% discounting for witness data happens?
dEBRUYNE_ has quit [Ping timeout: 265 seconds]
<sipa>
aj: not yet implememted
<aj>
sipa: aww man!
<aj>
sipa: so am i right in thinking the current code just has no (consensus) limits on witness data?
<jl2012>
There is a benefit not to commit the witness hash. As witness is malleable, the witness in your mempool may not be same as mine. If you find a block, you need to send the witness to me. Without commitment, you don't need to
<sipa>
jl2012: in blocks? you need to be able to judge whether a relayer tampered with the block or the block itself was truly invalid
bramc has joined #bitcoin-wizards
<sipa>
aj: correct
<sipa>
jl2012: IBLT solves that too
<sipa>
jl2012: ah, i see your point
<aj>
sipa: yay! +1 for me!
<sipa>
aj: good, someone actually reading the code :)
<aj>
sipa: closer to grepping than reading :( but better than nothing!
<jl2012>
sipa: so does it really work without witness commitment? Or BIP62 standardness is enough?
<Taek>
please correct me if I'm wrong, but my understanding is that because the witness data is no longer a part of the txid, it does not matter that witnesses are malleable?
<maaku>
sipa: right it's a specific case of "i can't fetch the whole block!"
<maaku>
n/m
<sipa>
Taek: the block commits to the witness data
<sipa>
Taek: the txid does not.
<Taek>
right, which means the witness that ends up in the block might not be the exact witness that I broadcast to the txn network
<sipa>
jl2012: i don't understand
<maaku>
Taek: "it does not matter" is application specific
<aj>
sipa: so one other thing i wondered. obviously old nodes will consider a transaction with a segwit output non-standard and won't relay it; but afaics an old node will happily relay a transaction spending a segwit input to a non-segwit output (ie, empty scriptsig, P2PKH/P2SH scriptpubkey) as standard, but then won't be able to provide the witness. that seems suboptimal to me as far as safe soft-forking
<aj>
goes, and i wonder if requiring scriptSig = [OP_SEGWIT] might be better than scriptSig = [] ?
<Taek>
maaku: do you have an example of an application where witness malleability might pose a problem?
<maaku>
Taek: but it'd be a pretty contrived application that dependended on the exact serialized bits of the witness
<Taek>
:)
<jl2012>
sipa: I mean, is applying BIP62 as standardness rules enough to solve the problem of witness malleability?
<maaku>
Taek: it's quite simple to make such an application, even one that *sounds* like a good idea to uninformed ears (e.g. a colored coin scheme that did a sort of pay-to-contract thing entirely within the witness)
<aj>
maaku: maybe miners should deliberately run peephole optimisations over witnesses so they can pack in as much witness data as possible?
<maaku>
Taek: but a proposal I would actually suggest or feel comfortable using? no can't think of one. (but it's late in this timezone, so maybe that's why)
<Taek>
maaku: fair, time may reveal innovations that make witness malleability annoying
<maaku>
jl2012: no BIP62 is insufficient
<maaku>
in particular there is nothing that can be done to prevent signer malleability
<jl2012>
maaku: my concern is only in block relay
<maaku>
(it is a property of ECDSA that I can create multiple different signatures for the same message)
<bramc>
It turns out I was being a little too cute with completely skipping levels of the tree which don't have things on both sides. You need some kind of hashing at every bit to make proofs of non-inclusion simple.
<maaku>
jl2012: I don't understand the connection
<aj>
jl2012: the node that's relaying the block could have the private key for one of the transactions in the block, and malleate it while relaying if there's no commitment
<maaku>
witness needs to be committed to for certain fraud proofs if nothing else
<aj>
jl2012: (i've no idea if that would actually be bad)
<jl2012>
maaku: consider an attacker keep mutating witness they see. Although we may have the same tx, the witness in my mempool may not be the same as yours. When you find a block, if witness is committed, you must send your version of witness to me. That could be annoying
<maaku>
jl2012: more annoying: the block doesn't commit to the witness, and now an SPV node has no way of verifying witness data as being correct
<aj>
jl2012: ah, maybe: without a commitment tree for witness data, it's hard to verify the data fits in the limits?
<jl2012>
If you need to calculate the block size or sigop etc, all you need is to commit these constraints. You don't even need to commit the actual number -- just the upper limit is enough. E.g., the witness of input X of tx Y must not be larger than Z bytes, and Z will be used for the purpose of block size.
capmao has joined #bitcoin-wizards
Giszmo has joined #bitcoin-wizards
roconnor has quit [Quit: Konversation terminated!]
TrippySalmon has joined #bitcoin-wizards
<jl2012>
maaku: for SPV nodes, there could be 2 scenarios: 1. witness committed but no one send you the witness; 2. witness not committed and someone send you a wrong one, which does not match the tx . Are both attack effectively the same?
dEBRUYNE__ has quit [Ping timeout: 256 seconds]
<jl2012>
In either case, the SPV node doesn't know if the tx is valid or not
zookolaptop has joined #bitcoin-wizards
tromp_ has joined #bitcoin-wizards
<jl2012>
ok, maybe you are right. without commitment, one could not *prove* a tx is invalid
DougieBot5000 has joined #bitcoin-wizards
tromp_ has quit [Ping timeout: 265 seconds]
<sipa>
sorry, i dropped off
<sipa>
bip62 is indeed insufficient to prevent malleability
libertalis__ has quit [Quit: Connection closed for inactivity]
<sipa>
though with segwit + witness commitments, i guess all you can accomplish by malleating is making your transaction harder to relay by IBLT etc, as you introduce multiple versions on the network obly one of which gets picked
ThomasV has joined #bitcoin-wizards
GAit has quit [Quit: Leaving.]
<nsh>
.seen gmaxwell
<yoleaux>
I saw gmaxwell 14 Dec 2015 07:45Z in #bitcoin-wizards: <gmaxwell> yea, and 10 layers is a lot, if you're assuming 16 layers of "common data"
benjyz1 has joined #bitcoin-wizards
TrippySalmon has quit [Quit: Lost terminal]
capmao has quit [Ping timeout: 252 seconds]
gocrazy has joined #bitcoin-wizards
<Taek>
I'm looking for an example of rationally-motivated breaks of protocols in decenralized systems
<Taek>
A real world example of a stake-grinding attack on a POS coin would be helpful, but I'm having trouble finding one
dEBRUYNE__ has joined #bitcoin-wizards
<zookolaptop>
Taek: :-)
<fluffypony>
Taek: I think most of them are too disinteresting to attackers motivated enough to do so
<Taek>
fluflypony: I thought that peercoin was subject to one at some point? Maybe I am remembering incorrectly
<fluffypony>
plus why bother with stake grinding when you can just use an exploit Bitcoin fixed that the coin hasn't
<fluffypony>
Taek: ^^ that's what happened to Peercoin
<jgarzik>
Peercoin has had to lock in several checkpoints due to attacks
<fluffypony>
yeah, Peercoin has centralised consensus :-P
<Taek>
jgarzik: do you have any links discussing the attacks?
<Taek>
that's exactly the type of thing I'm looking for, even if it's not specifically stake grinding
<jl2012>
the POS coin?
<jl2012>
I can't remember details of any altcoin except Litecoin
<pigeons>
peercoin clients, at least at one time, trusted a hard-coded key to sign blocks that would checkpoint which chain the developer controlling the key determined were official
sparetire_ has joined #bitcoin-wizards
nuke1989 has joined #bitcoin-wizards
laurentmt has joined #bitcoin-wizards
laurentmt has quit [Client Quit]
benjyz1 has quit []
hazboluah has quit [Quit: Leaving]
CubicEarth has joined #bitcoin-wizards
tromp_ has joined #bitcoin-wizards
GAit has joined #bitcoin-wizards
tromp_ has quit [Ping timeout: 246 seconds]
Quent1 has quit [Read error: Connection reset by peer]
Quent has joined #bitcoin-wizards
bramc has quit [Quit: This computer has gone to sleep]
bendavenport has joined #bitcoin-wizards
bramc has joined #bitcoin-wizards
ThomasV has quit [Ping timeout: 240 seconds]
bramc has quit [Client Quit]
cluckj has joined #bitcoin-wizards
jcluck has quit [Ping timeout: 256 seconds]
paveljanik has joined #bitcoin-wizards
paveljanik has quit [Changing host]
paveljanik has joined #bitcoin-wizards
eudoxia has joined #bitcoin-wizards
memymo has joined #bitcoin-wizards
bramc has joined #bitcoin-wizards
ThomasV has joined #bitcoin-wizards
CubicEarth has quit [Remote host closed the connection]
CubicEarth has joined #bitcoin-wizards
brg444 has joined #bitcoin-wizards
teknic111 has quit [Ping timeout: 276 seconds]
bramc has quit [Quit: This computer has gone to sleep]
go1111111 has quit [Ping timeout: 240 seconds]
licnep has quit [Quit: Connection closed for inactivity]
mrkent has joined #bitcoin-wizards
Yoghur114_2 has joined #bitcoin-wizards
jl2012 has quit [Read error: Connection reset by peer]
mrkent has quit [Max SendQ exceeded]
tachys has joined #bitcoin-wizards
mrkent has joined #bitcoin-wizards
Ylbam has quit [Ping timeout: 240 seconds]
jl2012 has joined #bitcoin-wizards
Ylbam has joined #bitcoin-wizards
vmatekol_ has joined #bitcoin-wizards
GGuyZ_ has joined #bitcoin-wizards
GGuyZ has quit [Read error: Connection reset by peer]
GGuyZ_ is now known as GGuyZ
jron has joined #bitcoin-wizards
GGuyZ_ has joined #bitcoin-wizards
GGuyZ has quit [Read error: Connection reset by peer]
GGuyZ_ is now known as GGuyZ
nubbins` has quit [Quit: Quit]
SgtStroopwafel has quit [Read error: Connection reset by peer]
gobiasindustries has joined #bitcoin-wizards
SgtStroopwafel has joined #bitcoin-wizards
matsjj_ has joined #bitcoin-wizards
matsjj has quit [Read error: Connection reset by peer]
matsjj_ has quit [Read error: Connection reset by peer]
matsjj has joined #bitcoin-wizards
MrHodl has joined #bitcoin-wizards
matsjj has quit [Remote host closed the connection]
matsjj has joined #bitcoin-wizards
matsjj has quit [Client Quit]
Erik_dc has joined #bitcoin-wizards
matsjj has joined #bitcoin-wizards
GAit has quit [Quit: Leaving.]
matsjj_ has joined #bitcoin-wizards
matsjj has quit [Ping timeout: 246 seconds]
dEBRUYNE__ has quit [Ping timeout: 265 seconds]
digitalmagus has quit [Ping timeout: 240 seconds]
digitalmagus has joined #bitcoin-wizards
<adlai>
Taek: what about multipool-mediated deaths? miners aren't strictly breaking the protocol, but they are acting to maximize a profit metric outside the system, and it results in the system becoming unusable
GAit has joined #bitcoin-wizards
<Taek>
adlai: I'm not sure exactly what you are refering to by 'multipool-mediated deaths'
GAit has quit [Client Quit]
GAit has joined #bitcoin-wizards
licnep has joined #bitcoin-wizards
bramc has joined #bitcoin-wizards
MoALTz has quit [Ping timeout: 240 seconds]
vmatekol_ has quit [Remote host closed the connection]
dave4925 has quit [Remote host closed the connection]
dEBRUYNE__ has joined #bitcoin-wizards
eudoxia has quit [Quit: Leaving]
TBI has quit [Ping timeout: 255 seconds]
c0rw|zZz is now known as c0rw1n
mrkent_ has joined #bitcoin-wizards
mrkent has quit [Ping timeout: 240 seconds]
<bramc>
The nice thing about forcing a hash at every level of the tree even when there's nothing on one of the sides is that it almost completely eliminates all games which you can play with malformed trees
<zookolaptop>
It certainly does if you mix in the level or the node number or something into the input of the hash.
<zookolaptop>
Gotta run.
zookolaptop has quit [Ping timeout: 246 seconds]
<bramc>
That information is redundant when the path to the root is forced. All you need is a clear distinction between terminal and intermediary nodes
dEBRUYNE__ has quit [Ping timeout: 256 seconds]
<Taek>
bramc: are you familiar with the structure of the Merkle trees in RFC 6962? I think it does a pretty good job of eliminating abuse patterns
<Taek>
one thing that gets enforced is that leaf nodes have a '0' prepended to the hash, and branch nodes have a '1' prepended to the hash
MoALTz has joined #bitcoin-wizards
<bramc>
Taek, I'm using a patricia trie to make diffs between successive generations small
<bramc>
But yes, I'm using a single byte prepended which specifies which of the two sides are included and whether they're terminal
<bramc>
It being patricia is what creates this funny case where sometimes one of the two sides has nothing in it
gobiasindustries has quit [Ping timeout: 252 seconds]
dEBRUYNE__ has quit [Ping timeout: 265 seconds]
GAit has quit [Quit: Leaving.]
Cory has joined #bitcoin-wizards
<bramc>
As part of redesigning my format *again*, right now every node is stored using a type byte and two (or in some cases one) hashes. The type byte can be either pass0, meaning there's nothing in the 1 position, pass1 which is similar, term0 meaning the thing in the 0 position is terminal and the other is a branch, term 1 meaning the other way, termboth meaning both, and single which is a value only valid at the root of a tr
<bramc>
ee containing exactly one item
<bramc>
When a side is terminal it's hashed once before being hashed into the node. The node is a hash of the type byte concatenated with the two child hashes or one if there's only one.
AaronvanW has quit [Ping timeout: 250 seconds]
<bramc>
Keeping the metadata in the type byte makes implementation a lot less ugly. It's possible to indicate some metadata by special values in implementation, but yech, and since one byte is way more than enough there's no need to be stingy on what's included.
justice_ has joined #bitcoin-wizards
NewLiberty has quit [Ping timeout: 240 seconds]
<bramc>
Actually I'm still using some special values, there's EMPTY and INVALIDATED for hashes, and a special value for a child block being a branch rather than a leaf in the position indicator. Those seem more logical there.
CubicEarth has quit [Remote host closed the connection]
CubicEarth has joined #bitcoin-wizards
licnep has quit [Quit: Connection closed for inactivity]
mountaingoat has quit [Ping timeout: 240 seconds]
risho has joined #bitcoin-wizards
dEBRUYNE__ has quit [Quit: Leaving]
ThomasV has quit [Ping timeout: 260 seconds]
memymo has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
atgreen_ has quit [Ping timeout: 256 seconds]
eudoxia has quit [Remote host closed the connection]
<bramc>
There's a logical order to writing these functions. First you write the confirmation of inclusion/exclusion proof free-standing functions, then the get_root() method, then the is_included method, then I'm not sure because I haven't gotten up to it yet, I keep having to start over.
MrHodl has quit []
GGuyZ has quit [Read error: Connection reset by peer]
<adlai>
Taek: multipools are pools which track exchange rates for garbage altcoins and send miners the most profitable work at any given moment. it's actually a complicated task, they have to divide up work between the coins carefully so as not to instantly murder each coin they mine
GGuyZ has joined #bitcoin-wizards
<adlai>
"One conclusion that stands out is that we are responsible for a significant proportion of many networks' hashrate, but we only exceed 50% for 20 of the 165 coins we mine." http://forums.prohashing.com/viewtopic.php?f=11&t=659
zookolaptop has joined #bitcoin-wizards
Dizzle has quit [Remote host closed the connection]
Dizzle has joined #bitcoin-wizards
<bramc>
adlai, Now only able to defraud 12% of altcoins with impunity!
Ylbam has quit [Ping timeout: 240 seconds]
Ylbam has joined #bitcoin-wizards
<MRL-Relay>
[shen] I haven't heard of any of those on that list besides litecoin, -one is named "Ripoffcoin" how can these be real
<adlai>
there's something almost admirable about defrauding ipsos fraudsteros
foolio has joined #bitcoin-wizards
<bramc>
They're sticking with scrypt-based altcoins, which is a good business move on their part, but it makes me sad that so few people making altcoins understand the difference between a proof of work scheme and a password hashing scheme
<bramc>
adlai, I doubt those miners are actually defrauding anybody. They're mostly contributing to the stability and legitimacy of those pump and dumps.
<bsm1175321>
bramc: That's about the only "innovation" in the entire space, mucking around with the PoW function. It's really irrelevant. :-/
dEBRUYNE has joined #bitcoin-wizards
<adlai>
well, they distort the "altcoin developer"'s coin distribution plans, if any of them plan things out that far
<bramc>
I think most of the pump and dumps these days are cow systems, to avoid that pesky distributed security problem.
<bramc>
bsm1175321, My innovation in proofs of work to make them memory hard: Instead of using X as your proof of work, it's X plus three more bytes, call them q, and the work value is p(X)^p(X^q)
Dizzle_ has joined #bitcoin-wizards
<bramc>
How well this would make COTS compete with custom hardware is unclear, but at least it's an interesting idea, and merely doubles verification time instead of making it glacial.
Dizzle has quit [Ping timeout: 256 seconds]
<bramc>
Cuckoo is an even more interesting idea, but harder to explain and results in much larger proofs
Yoghur114_2 has quit [Remote host closed the connection]
CubicEarth has quit [Remote host closed the connection]
dEBRUYNE has quit [Quit: Leaving]
CubicEarth has joined #bitcoin-wizards
rasengan has joined #bitcoin-wizards
rasengan has quit [Client Quit]
Guyver2 has quit [Quit: :)]
Erik_dc has quit [Remote host closed the connection]
rhadamanthus has joined #bitcoin-wizards
<adlai>
bramc: what's COTS?
<bramc>
adlai, Common Off The Shelf
<bramc>
generally refers to hardware
* adlai
nods
SgtStroopwafel has quit [Ping timeout: 272 seconds]
laurentmt has joined #bitcoin-wizards
laurentmt has quit [Client Quit]
DougieBot5000 has quit [Quit: Leaving]
c0rw1n is now known as c0rw|zZz
bramc has quit [Quit: This computer has gone to sleep]