Bitcoin Forum
May 26, 2019, 04:41:44 PM *
News: Latest Bitcoin Core release: 0.18.0 [Torrent] (New!)
 
  Home Help Search Login Register More  
  Show Posts
Pages: [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 ... 77 »
1  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: May 22, 2019, 09:47:45 PM
Some history:

Way back in 2016 I did not make any progress in building bitcoin when I tried to get help from the bitcoin/bytecoin related FreeNode groups.

So I ended up making my own environment.  I put it up on GitHub in 2017, and have not really looked at it since.

I believe that this is a bunch of scripts that will build a virtual machine and then build a local copy of Bytecoin that I codenamed IOUnote.  I have not reviewed it today, or since 2017.

This was a bit fragile and a little too customized for the immediate task at hand, but it did work for me and nothing else did.  It builds the GitHub version by Ahmed Bodhi, the one that he cloned, and my branch that I call IOUnote.  These are all 0.8.x versions.

Somewhere in the build process there is a call from the virtual machine out to the VirtualBox host, and this is a Ubuntu command.  It is probably an ssh call, I don't remember.  If you are running VirtualBox on windows, I expect that things will break there.

Many newer bitcoin versions use a different build environment and I have not mastered these new environments.

The build is very specific to Trusty Tahar, with exactly the installs in the scripts.  All sorts of surprising things cause it to break, it is really fragile, so this is very constrained both in the bitcoin version and also in the Ubuntu version.

https://github.com/a-mcintosh/Trusty-preseed


Anyway, please feel free to look this over.  After I get a bit oriented as to what I did, I will make some decisions about what to do next.
2  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: May 16, 2019, 01:14:37 AM
Thanks. I am trying to compile on a Digital Ocean ubuntu droplet. Getting build errors..  Roll Eyes

Perhaps Prof Mac on this thread can help you with that.


I'm swamped with day job for a few more weeks.  Then I have time.

I can probably put together a VirtualBox appliance that will work.  It stretched my ability to get a good compile environment, and both Ubuntu updates and Bitcoin updates break things that take me weeks to fix.
3  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: February 17, 2019, 05:23:47 PM
The coin is blocked by HARDTURTLE?

Should not be.  Do you know of any problems?
4  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: February 02, 2019, 10:21:30 PM
13 Blocks to go...

Get your rigs ready!!!

Beginning at block 58464, a new block will have to be 3204 seconds newer than the median time of the previous 11 blocks for my node to accept it.

This is a change.  Previously, it only had to be 1 second newer.

This is 6 block-times of 534 seconds each.  This allows the difficulty to rise at 12.3% each interval (2016 blocks).  This is the historical rise calculated from the genesis block to block 469573 of the bitcoin chain.  At a target time of 600 seconds per block, the block would be 3600 seconds newer.

You may wish to allocate your hashpower with this in mind.

In addition, the timestamp cannot be more than 1 minute in the future.  Previously, this limit was 2 hours.

These are some preliminary changes toward Hard Turtle technology.

I will monitor the situation for the unexpected.
5  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: January 19, 2019, 07:08:37 PM
Just was checking the charts about Bytecoin
For example this https://stocksneural.net/crypto/BCN/USD
Now I think it's good to invest in all cryptocurrencies!

There under the chart I read that BCN was strted in July, 2012.
Is it really so old coin?

You might notice that this thread is annotated BTE.  It is not about BCN.
BTE was released on April 1, 2013.
Despite what the chart says, you may have a difficult time finding any public verifiable information about BCN prior to April 1, 2013.

6  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: November 12, 2018, 07:28:37 PM
I'm not a coder, but I think I get the gist of what you are trying to do. I want to use the current client to mine, but am leery about what will happen when block 48464 is reached. I suspect Ahmed Bodi and his clones will be waiting to scarf all the blocks with large ASIC machines. This seems all the more likely as at current difficulty mining BTC with anything but an S9 or better is a waste of time and electricity. Will your code be in place and working when 48464 is reached?

BTW, I still cannot connect to any machine other than your two. Is any one else running a node besides you and I? TIA.


Oh, I have never been able to make reliable time-frame estimates.  I can pretty much turn on the Hard Turtle extensions now, but they are not fully tested.  The problem is that there is no windows client.  I have spent my time on the extensions, and assume that someone else can compile a windows client when the time comes, and if not I can do it at the end.

So long as we are the steadfast miners, all we have to do is refuse to honor strip mined blocks, and I can do that manually, so I am not really very worried.

7  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: November 12, 2018, 04:38:19 PM
OK, that makes it clearer. I see the block count currently went from 58414 to 58421. Did you mine those with the new code?


I mined these blocks with a slightly modified version of the Ahmed-Bodi code that I modified about 18 months ago.  This is the same code that all of you have connected with on my server.  The version that actually produced and accepted blocks had some preliminary ideas for Hard Turtle technology.  Originally I had activated them at block 58414.  I no longer remember why I chose that block number, but at the time it seemed safely far in the future.  This was not a complete solution and it rejected some blocks.

I pushed the activation block back to 58463, the end of the current interval, so they are now de-activated.  This preliminary technology is mostly obsolete, but that version of the client does have some programming jigs in place to let me get a better view of how the code works.

This past month I made a version of the client that works with cpuminer from https://github.com/pooler/cpuminer.git and allows anyone to put their bytecoin 8-address in as either "user" or "pass."  This version exposes the getblocktemplate (GBT) interface.  Last month I bought a mining contract on eBay to test this before I made an announcement, and the test failed.  This left me with a client that anyone could use with a cpu miner, but not with an ASIC.  This may be advantageous as we are fighting against strip-mining, but I still wanted to be able to use contract miners.

I decided to look for a stratum server and test whether it would work with a contract from eBay and my modifications.  The  mining of blocks 58414 to 58421 was a test of the ckpool stratum server with bytecoin.  I bought an 8 hour mining contract on eBay.  The ckpool server is on a linode, so that my personal equipment is not exposed to lots of mischief.  This test succeeded in a solo-mining configuration as you saw, but has some other problems.

I haven't decided whether to look for other stratum servers, or make some modifications to ckpool.  I haven't found a good forum to discuss these choices, so I am going much of this project alone.  
----

Sigh, this is my first major C++ project.  At this point I think I have pretty good comprehension of the block-chain structure, the code of the source client, the trade offs involved in the various decisions, a specialized application concept for the near future, and I have made "Hello World" on the Android.  

My current thought is to completely re-mine the bytecoin block-chain leaving it at difficulty 1, with all existing transactions intact, and compatible with both the legacy client and the Hard Turtle client, forking at the next interval or so.  I believe this can be accomplished in a single evening using an eBay mining contract.  There are some administrative / design decisions that go along with this.  I may re-mine the block-chain several times, once for each decision, then "let the market decide."

I think I am at the point where I can publish some of the design alternatives for comment.  I wanted to be sure I was clear headed on the ideas before I did this, and also that I was knowledgeable enough that I could finish coding faster than someone with a hostile  agenda.
8  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: November 12, 2018, 06:19:39 AM
Don't you mean ahead from 58414to 58463?  You just can't jump 50 blocks ahead.

I built an instance of ckpool and connected a 1.15 TH/s miner to it.  I mined 7 blocks in 8 hours.  This was configured as a standalone miner, so it was not suitable as a mining pool with many users.

I identified a configuration problem that created difficulties at block 58414.  I have pushed that problem back to block  58463.

The database support, ckdb, did not build effortlessly so I can't bring up multi-user support at the moment.



I mean, the code I am running treats some things differently after for block 58463 and before vs 58464 and after.  Previously the limit was 58414, I had forgotten that, and it made a problem.

9  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: November 11, 2018, 11:59:10 PM
I built an instance of ckpool and connected a 1.15 TH/s miner to it.  I mined 7 blocks in 8 hours.  This was configured as a standalone miner, so it was not suitable as a mining pool with many users.

I identified a configuration problem that created difficulties at block 58414.  I have pushed that problem back to block  58463.

The database support, ckdb, did not build effortlessly so I can't bring up multi-user support at the moment.

10  Bitcoin / Mining software (miners) / Re: CKPOOL - Open source pool/proxy/passthrough/redirector/library in c for Linux on: November 10, 2018, 05:40:34 PM

Old versions of the bitcoin daemon do not have the features required for ckpool to work completely, though I don't know how old you're talking about.

There's nothing in line 6225 that has anything to do with submitting a block? test_blocksolve goes to line 5949 which sends it to local_block_submit and in there line 2061 submits it to generator_submitblock and so on.

Bitbucket is the only authentic git repository for my source, so not sure why you need to look elsewhere?

Thanks for your reply.  My current approach with bitcoin is to try to understand virtually every line of code on the version I started with,
then move to the future.  At the moment, I'm marooned pretty far in the past at 0.8.1.  Real Soon Now I will leapfrog forward.

Offhand, do you know the oldest bitcoin version that is supported?

I am looking at the code below, with a small modification that I made.

Code:
if (sdiff >= diff) {
if (new_share(sdata, hash, id)) {
LOGINFO("Accepted client %s share diff %.1f/%.0f/%s: %s",
client->identity, sdiff, diff, wdiffsuffix, hexhash);
result = true; LOGDEBUG("stratifier.c Ln 6223 submitblock <hexstuff>"); // parse_upstream_block(ckp, val);
} else {

Oh, and as for Bitbucket, it's just yet another login / password / interface to deal with.  I'll deal with it.



Procedure diff_from_nbits in file libckpool.c clamps the minimum difficulty to approximately 256.  I removed that code and it works correctly with a difficulty 1 network.
11  Bitcoin / Mining software (miners) / Re: CKPOOL - Open source pool/proxy/passthrough/redirector/library in c for Linux on: October 30, 2018, 08:30:55 PM

Old versions of the bitcoin daemon do not have the features required for ckpool to work completely, though I don't know how old you're talking about.

There's nothing in line 6225 that has anything to do with submitting a block? test_blocksolve goes to line 5949 which sends it to local_block_submit and in there line 2061 submits it to generator_submitblock and so on.

Bitbucket is the only authentic git repository for my source, so not sure why you need to look elsewhere?

Thanks for your reply.  My current approach with bitcoin is to try to understand virtually every line of code on the version I started with,
then move to the future.  At the moment, I'm marooned pretty far in the past at 0.8.1.  Real Soon Now I will leapfrog forward.

Offhand, do you know the oldest bitcoin version that is supported?

I am looking at the code below, with a small modification that I made.

Code:
if (sdiff >= diff) {
if (new_share(sdata, hash, id)) {
LOGINFO("Accepted client %s share diff %.1f/%.0f/%s: %s",
client->identity, sdiff, diff, wdiffsuffix, hexhash);
result = true; LOGDEBUG("stratifier.c Ln 6223 submitblock <hexstuff>"); // parse_upstream_block(ckp, val);
} else {

Oh, and as for Bitbucket, it's just yet another login / password / interface to deal with.  I'll deal with it.
12  Bitcoin / Mining software (miners) / Re: CKPOOL - Open source pool/proxy/passthrough/redirector/library in c for Linux on: October 30, 2018, 06:57:16 PM
I want to set up an isolated lab where I read the software sources, execute for a bit, and see what happens.

In my particular scenario I will use an earlier version of the reference bitcoin client and download about 10,000 blocks.  The difficulty will be 1 at this point.

I will use cgminer and ckpool as well, to develop what skill I can at understanding stratum and how to configure the servers and what they do.

Toward that end I have made the most recent version of ckpool, and started it with
  ckpool -l 7 -A -H

and ckpool.conf points only to my local setup.

I appear to retreive getblocktemplates, pass info up to cpuminer/minerd, do the magic and send results back to ckpool.  ckpool.log and the consoles for cpuminer and ckpool make sense to me.

I don't grok how to get the new block submitted to my local bitcoind.

For what it's worth, I am looking at line 6225 of stratum.c.  That seems to be one place where I might expect a submitblock to happen, but it does not.

My understanding of "upstream" and whether it is necessary / possible to set up a proxy to make this happen is a bit wobbly.

Oh, and while I am posting, I thought I would mention that I am pretty familiar with GitHub, but not so much with the repository where ck has his source located.  Is there a GitHub bridge (fork) to his efforts, or do I need to figure out the new repository as part of all this effort.

13  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: October 27, 2018, 07:51:24 AM
I have rented a machine at linode, and have set up a node for some testing there.

You may put your address in as the user.  This can be either a bitcoin address, or a bytecoin address.

I have not been successful with the rent-an-ASIC miners with this setup.  I am able to use the J.Garzik cpu miner.  You should be able to CPU mine at the moment.

It is not defined whether I will keep or discard any blocks mined at this time.


Code:
{
"_comment1" : "Any long-format command line argument ",
"_comment2" : "may be used in this JSON configuration file",
        "_comment3" : "Use your own bitcoin address as the user",

"url" : "http://seed-prime.bte.vima.austin.tx.us:46332",
"user" : "1ZgFUZmYU9s3sBYAyBumTGvNaVcEnq17b",
"pass" : "ignored",
"algo" : "sha256d",

"protocol-dump" : true,
"debug" : true,
"threads" : "4",
"scantime" : "120"
}



If you make an otherwise empty .bytecoin directory and add the following to your bytecoin.conf file you should be able to follow the progress as the blocks are mined.

Code:
checkpoints=0
rpcport=46332
port=46333
connect=seed-prime.bte.vima.austin.tx.us


There will be problems.  I don't know what they will be.  This is a test.
14  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: October 10, 2018, 05:22:12 AM
In the event that I mine BTE block 58115, I might pay some to a previous miner.

You can submit a previously mined address for consideration at https://docs.google.com/forms/d/e/1FAIpQLSenAetfDoIAEQddL7rmQJFw4dLqIq2P1ms2hMigX5zrSc5LoQ/viewform?usp=sf_link

--- clarification 2017-12-20 ---

For example, one of the submissions begins 8Qmq.  This address does not show up in my database of coinbase transactions.  Again, any submissions should be for addresses that have previously been paid by mining, e.g., the transaction is in transaction 0 of the block.

I have
heightaddressearnings
71898QmQTRcwoq6PFw2Qm3pAXdrXMegPDzzQ9750.00000000
84388QmQ6nfi6uHRKF05ayyFrJZK4hq2KNY14n50.00000000


In my current testing, I am running 2 instances of cpuminer with variations of the configuration file shown below.
The user is different in the two configuration files.

If the test is successful, the payout in the coinbase will match a correct Bytecoin address that
is provided for the user in the file.  This will open the possibility that I can run a mining server in the future.

You may wish to have a version of cpuminer operational and ready to reconfigure. 
You should be able to test it on your own machine, using the existing
client that you have.
 
This setup supports getblocktemplate.  It does not support stratum.  The current difficulty is 1.

You may also wish to submit some address to the Google form referenced above.  The submitted addresses will be tested so that they are valid, and they have received payment in a coinbase transaction.

Code:
{
"_comment1" : "Any long-format command line argument ",
"_comment2" : "may be used in this JSON configuration file",

"url" : "http://[fdbf:946a:5c97:0:a00:27ff:fe1b:854f]:6332",
"user" : "8MT7kyLUL5Jom6yhCQUTHtRz869kaEX91b",
"pass" : "repair blockchain",
"threads" : "1",
"protocol-dump" : true,
"debug" : true,
"algo" : "sha256d",
"scantime" : "120"
}
15  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: October 04, 2018, 01:07:12 AM


That is the last block that I have here, Sun Aug 26 12:00:06 2018

I typically have 5 to 7 connections at any time, so I assume this is the actual state for the network.

My interpretation is that no one is mining at the moment.

Do you want to mine?

Prof, is this happening because you are Hard Turtling the blockchain? Please explain

No.  Things should work for anyone who mines.  At the current difficulty, you have to have an ASIC.  I calculate that my 83 GHz/s Avalon will take maybe 15 hours to find a block, so there may not be many willing miners at the moment.

If you absolutely want a block, you should be able to rent-a-miner online, run your own client synced up to mine, and get satisfaction.

16  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: October 01, 2018, 04:24:10 PM

My blocks are stuck WTF is happening guys!!

What is the last block number or hash that you have?


Block 58,376

That is the last block that I have here, Sun Aug 26 12:00:06 2018

I typically have 5 to 7 connections at any time, so I assume this is the actual state for the network.

My interpretation is that no one is mining at the moment.

Do you want to mine?
17  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: September 28, 2018, 03:46:37 PM
What "Bytecoin" are you talking about? Bytecoin (BTE) which is this thread or Btyecoin (BCN) the copycat?


My blocks are stuck WTF is happening guys!!

What is the last block number or hash that you have?
18  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: August 05, 2018, 02:57:30 PM
I just realized a significant short-cut that I can take.  I am doing that silly thing of programming with urgency, brewing much coffee, and putting off sleep.  I hope it works.

The short-cut will eliminate the need to solve a difficult problem during the transition from BTE to BTE-HT. 

I am in the flush of thinking everything is now solved.  If you have programmed very long, you will recognize this phase, and laugh.

However, some questions have a new urgency.

1.  Can anyone build the windows client?  If not, I can learn how, but it will cause a delay.
2.  How much is my effort worth, in coins?
3.  What is the name and symbol of the forked coin?  BHT, for Bytecoin-Hard Turtle, comes to mind but there is a name collision with the BitHub exchange.  I think that keeping the same name after a hard-fork will cause confusion.

I have artwork and another name ready to go, but I want to hear from the community.


19  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: August 02, 2018, 06:45:57 AM
Hi prof,

It's been a while since I've actively mined and compiled a wallet. I helped out with BTE way back and still have a wallet.

I've got a virtual Ubuntu box setup and would like to see what's in my wallet and, for now, if you think it's still viable do some GPU / CPU mining.

Just wondering what the best repo is to compile from?

Thanks Smiley

"difficulty" : 1056741.21450361
I think that with a 2nd generation ASIC, 83 GH/s, it would take 15 hours or so to mine a block.  CPU is currently not useful.
My work all uses the ahmed-bodi repo on GitHub, as mentioned a post or two above.  I have a Ubuntu 14.04 virtual machine that I build from scripts.  It is public on my GitHub


However ... that possibly controversial thing I mentioned ...

I am going to re-mine the entire block-chain.  All the existing transactions will be preserved, including the coinbase transactions.  
This will take fewer hashes than mining the current difficulty for the next few hundred blocks.  The difficulty should be 1 when all 58,330 or so Legacy blocks have been repair-mined.
Most of my development time has been spent on this aspect of the project.  It has been "a learning experience."
Most of the block timestamps will be very similar to the Legacy timestamps.
I will interleave the Legacy blocks (even number, starting with Genesis at 0) with new Repair blocks.  The new repair blocks will have nuanced payout structure.
  25% for the current miner, to pay for their help in repairing the Legacy blockchain.
  25% for the people who are registered on that Google form I posted a while back, to create some excitement.
  50% at half the value of the previous Legacy block payouts, to pay me for my development time.

I am almost ready to open this up to the public.  Initially, it will be at difficulty 1.0.  In addition, I have put in support for "Legacy Time" so that a high hash rate miner will churn out blocks, but the timestamps, which are all Legacy and in the past, will conform to the newer stringent Hard Turtle rules.  I expect complete chaos when this is launched, with many people doing things, ahem, that I haven't thought of.

It turns out that it is possible to mine a Legacy *bitcoin* block into this new blockchain.

ROTFL.  If you have a bitcoin wallet from 2013, and you do a dumpprivkey on your address, and you take that output and you do a importprivkey to the bytecoin client, you get a bytecoin 8 address.  And then, if I/we re-mine a bitcoin coinbase that pays that address into a new BTE-HT block, all the payouts appear as 8 addresses <snort> and your imported 8 address works.  The transaction has the identical transaction ID.  </snort>  Yes, I have tested this.  Yes, I was skeptical.  Yes, I read the C++ code really, really carefully.    I am toying with the idea of re-mining all the bitcoin coinbase blocks that pay out to address 18bLcVkviErQi75zB8X39jZXxHNpSZggdC.  This will give me 80 BTE, not that much really, but it will bring in a huge community of other bitcoin miners who mined at Eligius.  This should help revive the coin.

https://docs.google.com/forms/d/e/1FAIpQLSd8yfSnu9pInRhHkJWxNkawb8b-0T5L5TaFpVG52PqbVk1H9A/viewform?usp=sf_link



I am currently working on a small number of tasks.
1.  Modify the RPC login so that the username is a bytecoin address and the password is ignored, and multiple people can log in.  This will allow miners to run the Garzik minerd miner and use blocktemplate.  I will run this client in a virtual machine and the community can mine from it.
2.  There are some race conditions when I fetch a Legacy block via RPC and build the internal structures to support blocktemplate and also the internal CPU miner.  My experience with race conditions is not in the C++ environment, so this is slow slogging.  I want it to be reliable before the chaos begins.
3.  For whatever misguided reason, I stopped and made a "vanity address" generator task and put it into the miner.  I needed a break, and I learned some more of the data structures in the client, so it was not totally misguided.  I am actually quite pleased with this, in a guilty cat that ate the canary sort of way.  
4.  I also had to master git for the Hard Turtle effort.  It has been a busy year.  I think that I can publish "orthogonal" branches, for example the vanity address, the Genesis-difficulty adjustment, the standard difficulty modifications, the resurrected code to make a new Genesis block.  I suspect that a clever person can "git merge" whichever of these orthogonal branches they want in a clean way.  This is at the edge of my current expertise with git, and will take a bit of effort to disentangle all the merges from this year into these orthogonal tasks.  I may decide this is too much effort, and just publish my branch as it is.

Most academics really try to clean up all the mess of development before they publish.  I am transitioning from finishing a few tasks to editing and publishing the work, and a managed roll-out.

20  Alternate cryptocurrencies / Altcoin Discussion / Re: [BTE] The Bytecoin Information Thread on: August 01, 2018, 07:26:42 PM
I would Like Some help to build a windows Client. I Have Built in the current bitcoin build environment using Debian, But I'm not at all sure if I would attract any Users. does anyone know if there are any BTc pools still out there running these Days, I Think it would be great if we all showed the Coinplorer guys some love for providing this service, and if we let them know how great Bytecoin is, However this basic idea is to accept the block with the highest difficulty instead of the block that is first.  Then, to keep accepting blocks for at least an hour since the 6th previous block. so for a one man band you're doing a Simply Amazing job...!


Can you build the most recent ahmed-bodi Git for windows?
If so, publish the sha-256 for the binary here.  We'll figure out how to transfer a copy to me, we might use scp to my machine using your public key.  I can put together an IPv6 website pretty easily.

https://github.com/ahmedbodi/bytecoin

Pages: [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 ... 77 »
Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!