Bitcoin Forum
June 18, 2024, 11:31:59 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 [194] 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 ... 341 »
  Print  
Author Topic: NovaCoin (scrypt PoW + PoS hybrid) [self-mod]  (Read 744374 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
fsb4000
Legendary
*
Offline Offline

Activity: 1400
Merit: 1000



View Profile
July 13, 2015, 01:30:41 PM
 #3861

Это он жрет один гиг или просто минимально необходимое на машине?

просто минимально необходимое на машине
Для кошелька и сервера.
Если файл подкачки задействовать, то наверное и на 512 можно запустить...
Foxcool
Sr. Member
****
Offline Offline

Activity: 463
Merit: 252



View Profile WWW
July 13, 2015, 07:50:42 PM
 #3862

Если связать тонкий клиент с установкой CJDNS как-то автоматически, то можно отвязать установку электрум сервера от необходимости иметь белый ип. Таким макаром можно получить много электрумов. Но, наверное это сложно.

alpet
Legendary
*
Offline Offline

Activity: 1912
Merit: 1020


View Profile WWW
July 13, 2015, 09:19:58 PM
 #3863

Оперативной памяти ~один гигабайт, белый IP, открытый порт (по умолчанию 40001, но можно и другой)

На текущий момент главный трабл сделать легкий клиент, отсутствие публичных(ого) electrum сервера Smiley

Вот инструкция по запуску: https://github.com/CryptoManiac/electrum-server/blob/master/HOWTO.md

У меня два статических IP адреса на разных провах есть. Порядка 50 + 60 мбит максимальной ширины каналы.

С установкой по инструкции пока в затык уперся:
Code:
novacoin@Web-Server:~/src$ git clone https://github.com/nova-project/novacoin.git
Cloning into 'novacoin'...
Username for 'https://github.com': alpet83
Password for 'https://alpet83@github.com':
error: The requested URL returned error: 403 while accessing https://github.com/nova-project/novacoin.git/info/refs
fatal: HTTP request failed

Novacoin we trust!
https://svcpool.io - PoS стейкинг и обменник NVC/BTC.
fsb4000
Legendary
*
Offline Offline

Activity: 1400
Merit: 1000



View Profile
July 14, 2015, 02:55:47 AM
 #3864

Оперативной памяти ~один гигабайт, белый IP, открытый порт (по умолчанию 40001, но можно и другой)

На текущий момент главный трабл сделать легкий клиент, отсутствие публичных(ого) electrum сервера Smiley

Вот инструкция по запуску: https://github.com/CryptoManiac/electrum-server/blob/master/HOWTO.md

У меня два статических IP адреса на разных провах есть. Порядка 50 + 60 мбит максимальной ширины каналы.

С установкой по инструкции пока в затык уперся:
Code:
novacoin@Web-Server:~/src$ git clone https://github.com/nova-project/novacoin.git
Cloning into 'novacoin'...
Username for 'https://github.com': alpet83
Password for 'https://alpet83@github.com':
error: The requested URL returned error: 403 while accessing https://github.com/nova-project/novacoin.git/info/refs
fatal: HTTP request failed
Ошибка в инструкции,
нужно
Code:
git clone https://github.com/novacoin-project/novacoin.git
midvidyk
Legendary
*
Offline Offline

Activity: 1330
Merit: 1012


View Profile
July 14, 2015, 11:47:33 AM
 #3865

кто майнин нову сколько щас в день будет с 10мегахешей?
1 нова примерно

У меня с 15 мегахеш за 12 дней 18 нов.  Т.е. 1,5 новы в день.
в топике майнеров продают майнер на 210 мегахеш за 2700$
 я тут прикинул если в среднем и с запасом 1 нова=1$, то за месяц приблизительно выходит 630$, тоесть майнер окупит себя за 4 месяца, а дальше только +
разумеется в теории все красиво.
расчеты без електричества.
довольно прибыльная инвестиция, или я что то не так считаю.
былаб еще полная гарантия на майнер на 1 год, тогда бы точно взял.
alpet
Legendary
*
Offline Offline

Activity: 1912
Merit: 1020


View Profile WWW
July 14, 2015, 01:05:32 PM
 #3866

Ошибка в инструкции,
нужно
Code:
git clone https://github.com/novacoin-project/novacoin.git

Ошибка не единственная. Вроде-бы все шаги выполнил далее, однако запуск сервера неудачный получается:
Code:
novacoin@Web-Server:~/electrum-server$ cat electrum.log






[14/07/2015-17:02:38] Starting Electrum server on localhost
[14/07/2015-17:02:39] Database version 3
[14/07/2015-17:02:39] Blockchain height 110558
[14/07/2015-17:02:39] UTXO tree root hash: d328800c7f3ccafe648d3eb43b47eb416f48103f1cd81ddd7a0c41431e4e463a
[14/07/2015-17:02:39] Coins in database: 0
[14/07/2015-17:02:39] catching up missing headers: 110557 110558
Exception in thread Thread-4:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 760, in run
    self.function(*self.args, **self.kwargs)
  File "/home/novacoin/electrum-server/backends/bitcoind/blockchain_processor.py", line 78, in <lambda>
    threading.Timer(0, lambda: self.catch_up(sync=False)).start()
  File "/home/novacoin/electrum-server/backends/bitcoind/blockchain_processor.py", line 629, in catch_up
    self.import_block(next_block, next_block_hash, self.storage.height+1, sync)
  File "/home/novacoin/electrum-server/backends/bitcoind/blockchain_processor.py", line 415, in import_block
    self.storage.update_hashes()
  File "/home/novacoin/electrum-server/backends/bitcoind/storage.py", line 313, in update_hashes
    assert letter in d.keys()
AssertionError

В файле конфигурации я задал путь к распакованной скаченной БД fulltree.
Code:
[server]
host = localhost
#report_host =
stratum_tcp_port = 40001
stratum_http_port = 7081
#stratum_tcp_ssl_port = 40002
#stratum_http_ssl_port = 7082
#report_stratum_tcp_port = 40001
#report_stratum_http_port = 80
#report_stratum_tcp_ssl_port = 40002
#report_stratum_http_ssl_port = 443
password = secret
banner = Welcome to Electrum!
#irc = no
#irc_nick = <yournickname>
ssl_certfile = /home/novacoin/rsa/electrum-server.crt
ssl_keyfile = /home/novacoin/rsa/electrum-server.key

# default backend is leveldb (pruning server)
backend = leveldb

[leveldb]
#path = /path/to/your/database
#fulltree is the new UTXO tree, required for Electrum 2.0 clients
path_fulltree = /home/novacoin/electrum-server/database
# for each address, history will be pruned if it is longer than this limit
pruning_limit = 1000

[bitcoind]
host = localhost
port = 8344
# user and password from novacoin.conf
user = alpet
password = ********

Novacoin we trust!
https://svcpool.io - PoS стейкинг и обменник NVC/BTC.
Balthazar (OP)
Legendary
*
Offline Offline

Activity: 3108
Merit: 1359



View Profile
July 14, 2015, 02:08:47 PM
Last edit: July 14, 2015, 02:21:13 PM by Balthazar
 #3867

Кое-что менялось с тех пор в клиенте, да и ошибки есть пока ещё не исправленные. Дело в том, что он пока не предназначен для какой бы то ни было эксплуатации, даже для тестовой. По этой причине оно находится в состоянии, далеком от актуальности. Думаю, в ближайшее время займемся приведением к стабильности.
becool
Legendary
*
Offline Offline

Activity: 1442
Merit: 1016


View Profile
July 14, 2015, 02:18:35 PM
Last edit: July 14, 2015, 02:39:22 PM by becool
 #3868

кто майнин нову сколько щас в день будет с 10мегахешей?
1 нова примерно

У меня с 15 мегахеш за 12 дней 18 нов.  Т.е. 1,5 новы в день.
в топике майнеров продают майнер на 210 мегахеш за 2700$
 я тут прикинул если в среднем и с запасом 1 нова=1$, то за месяц приблизительно выходит 630$, тоесть майнер окупит себя за 4 месяца, а дальше только +
разумеется в теории все красиво.
расчеты без електричества.
довольно прибыльная инвестиция, или я что то не так считаю.
былаб еще полная гарантия на майнер на 1 год, тогда бы точно взял.

Интересно.
Но расчеты эти на пампе ты делаешь, а следовательно и до этого было и дальше будет всё по другому.
Или поднимется цена майнеров или сложность или опустится назад цена валюты.
Если бы ты взялся считать когда новы были по 0.3 то было бы совсем иначе.
Ну на вскидку предположим сложность вроде не сильно меньше была, и получается 4*4=16 месяцев, а за это время сам понимаешь технологии асиков за твои же деньги что ты оплатил шагнут далеко в будущее но уже не для тебя.
И дело тут вовсе не в электричестве...
Но на страх и риск можно ввязаться в авантюру, но только если ты этим будешь отапливаться, а потребление такое надеешься не заметят.
Просто если уж ты реально решил отапливаться и когда на ваши 30 домов кто живет зимой 3 млн долга который разбрасывают и на тех кто летом живет только - то можно представить себе что соседи вооружившись вилами тебя просто порвут на части в десятером проткнув и раставскивая в разные стороны за такое потребление электричества которое они вдруг обнаружат токовыми клещами.
Ну и говорят в таких местах где умельцы ищут халяву с электрообогревом вместо дров без всяких асиков тебя будут проверять раз в месяц сверять показания приходить а токовыми уже по подозрению хоть каждый день, у меня было и в квартире каждый день электрики приходили и рубильник передергивали идя по пути, хоть и квартира.
Ну а в квартире само по себе тупо держать впустую улицу отапливать этим.
Можешь потом не оправдываться что ты оплатил))

Считать асик отопительным прибором и дорогой и красивой сушилкой для носков обязательно необходимо, ибо всё остальное рисковое дело, сушилка уже завтра может сломаться, или не окупить добавлленную стоимость.

Лучше минисобачек разведи и котов сфинксов голых, продавай их бабам заодно и знакомься и трахай, ну баб то есть.
А полученые с них деньги за собачек ( + сэкономленые на кафешках ресторанах и киношках с морожеными) покупай новы.
Причем они тоже будут отапливать помещение когда их много, как и люди, биологический отопительный прибор, где-то читал вроде человек равен 1 квт тепла, но надо проверять.
С минисобачки 30 ватт наверно, их надо много, будут отапливать, а окупаемость у такого фермерства явно куда круче.
Поэтому народ и ржет с таких придурков с асиками.
Да. конечно перестанут ржать если вдруг памп и ты станешь миллионером, но ведь тут уже дело не в асиках, ты мог просто на бирже купить на деньги вырученые с чего угодно, хоть с продажи петрушки на рынке хоть с продажи щенков и котят хоть с продажи минипигов павлинов и всяких там еловых рассаженых по границе участка туй и прочее. Денег море которые в новы можно вложить и получить еще больше, такое фермерство явно умнее. Ну да, а на навозе кстати хорошо розы могут расти. А охрнанять это всё большие псы и пчелы)) Так еще и мед))

В еще животные могут электричество вырабатывать, но тут надо изучать вопрос.
Одна корова 8 часов в день вырабатывает 500 ватт на беговой дорожке.
6 коров и станадртное потребление дома по максимуму 3 квт у людей зачастую обеспечено.
Наверно и 1-4 коровы хватит если аккумулировать аккумулятором и тратить на экстренные нужды там чего пилить сверлить чайник ставить больше но не долго, в случае буз майнеров то есть если.

Это еще так что реальное фермерство по сравнению с ботаническим это круто, а ботаническое асиковое это фермерство лохов.
Вложение же в валюту другое дело, это да, это серьезно, это как винклвоссы, это круто.

Смотреть что у кого-то там огромные датацентры это у них оборудование совсем по другим ценам, это они на тебе же и зарабатывают.

gnuuser
Member
**
Offline Offline

Activity: 93
Merit: 15


View Profile WWW
July 14, 2015, 02:25:57 PM
 #3869

./novacoin-qt
ura@ura:~/programs/Bitcoin/novacoin/novacoin-0.5.1-debian-i686$ ./novacoin-qt
novacoin-qt: src/kernel.cpp:549: uint32_t GetStakeModifierChecksum(const CBlockIndex*): Проверочное утверждение «pindex->pprev || pindex->GetBlockHash() == (!fTestNet ? hashGenesisBlock : hashGenesisBlockTestNet)» не выполнено.
Аварийный останов

Если удалить папку .novacoin, то novacoin-qt загружается без ошибок.
fsb4000
Legendary
*
Offline Offline

Activity: 1400
Merit: 1000



View Profile
July 14, 2015, 02:54:08 PM
 #3870

Ошибка в инструкции,
нужно
Code:
git clone https://github.com/novacoin-project/novacoin.git

Ошибка не единственная. Вроде-бы все шаги выполнил далее, однако запуск сервера неудачный получается:
Code:
novacoin@Web-Server:~/electrum-server$ cat electrum.log






[14/07/2015-17:02:38] Starting Electrum server on localhost
[14/07/2015-17:02:39] Database version 3
[14/07/2015-17:02:39] Blockchain height 110558
[14/07/2015-17:02:39] UTXO tree root hash: d328800c7f3ccafe648d3eb43b47eb416f48103f1cd81ddd7a0c41431e4e463a
[14/07/2015-17:02:39] Coins in database: 0
[14/07/2015-17:02:39] catching up missing headers: 110557 110558
Exception in thread Thread-4:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 760, in run
    self.function(*self.args, **self.kwargs)
  File "/home/novacoin/electrum-server/backends/bitcoind/blockchain_processor.py", line 78, in <lambda>
    threading.Timer(0, lambda: self.catch_up(sync=False)).start()
  File "/home/novacoin/electrum-server/backends/bitcoind/blockchain_processor.py", line 629, in catch_up
    self.import_block(next_block, next_block_hash, self.storage.height+1, sync)
  File "/home/novacoin/electrum-server/backends/bitcoind/blockchain_processor.py", line 415, in import_block
    self.storage.update_hashes()
  File "/home/novacoin/electrum-server/backends/bitcoind/storage.py", line 313, in update_hashes
    assert letter in d.keys()
AssertionError

В файле конфигурации я задал путь к распакованной скаченной БД fulltree.
Code:
[server]
host = localhost
#report_host =
stratum_tcp_port = 40001
stratum_http_port = 7081
#stratum_tcp_ssl_port = 40002
#stratum_http_ssl_port = 7082
#report_stratum_tcp_port = 40001
#report_stratum_http_port = 80
#report_stratum_tcp_ssl_port = 40002
#report_stratum_http_ssl_port = 443
password = secret
banner = Welcome to Electrum!
#irc = no
#irc_nick = <yournickname>
ssl_certfile = /home/novacoin/rsa/electrum-server.crt
ssl_keyfile = /home/novacoin/rsa/electrum-server.key

# default backend is leveldb (pruning server)
backend = leveldb

[leveldb]
#path = /path/to/your/database
#fulltree is the new UTXO tree, required for Electrum 2.0 clients
path_fulltree = /home/novacoin/electrum-server/database
# for each address, history will be pruned if it is longer than this limit
pruning_limit = 1000

[bitcoind]
host = localhost
port = 8344
# user and password from novacoin.conf
user = alpet
password = ********
Странно. У меня вроде бы норм.
https://i.imgur.com/aLbP01F.png

База: https://yadi.sk/d/cBTxcizshqRQE
Conf: https://yadi.sk/i/tIrDrwr0hrt7f

Запускал из терминала:
Code:
 python -u server.py
becool
Legendary
*
Offline Offline

Activity: 1442
Merit: 1016


View Profile
July 14, 2015, 03:21:21 PM
 #3871

fsb4000
может не в тему, но в инструкции по компиляции в винде для винды работает тоже если leveldb
выбран, у меня получилось только в последнюю очередь нужный вариант компиляции при котором ошибки закончились.
BDB не работает ссылаясь на отсутсвие библиотеки которая как раз именно в левелдб.
Имя библиотеки уже не помню.
Но она там в конфиг прямо вписывается названием что включить ее мол, в твоих исправлениях вроде бы. которые именно в инструкции написано исправить.

fsb4000
Legendary
*
Offline Offline

Activity: 1400
Merit: 1000



View Profile
July 14, 2015, 03:53:08 PM
 #3872

fsb4000
может не в тему, но в инструкции по компиляции в винде для винды работает тоже если leveldb
выбран, у меня получилось только в последнюю очередь нужный вариант компиляции при котором ошибки закончились.
BDB не работает ссылаясь на отсутсвие библиотеки которая как раз именно в левелдб.
Имя библиотеки уже не помню.
Но она там в конфиг прямо вписывается названием что включить ее мол, в твоих исправлениях вроде бы. которые именно в инструкции написано исправить.

Только что проверил, ошибок не возникло  Huh
https://i.imgur.com/HGp267T.jpg
https://i.imgur.com/JPZJnq1.jpg
https://i.imgur.com/s820sW2.jpCtq

LeveldDB не собирался: https://i.imgur.com/vZRjb1a.png
fsb4000
Legendary
*
Offline Offline

Activity: 1400
Merit: 1000



View Profile
July 14, 2015, 05:02:14 PM
 #3873

Спасибо svost за то что поднял electrum server.
Тестовая версия лёгкого Android(arm) кошелька: https://yadi.sk/d/F655AB95hpZBe
sleekka
Hero Member
*****
Offline Offline

Activity: 624
Merit: 500



View Profile
July 14, 2015, 05:14:08 PM
 #3874

Спасибо, потестирую на маленьких суммах.
becool
Legendary
*
Offline Offline

Activity: 1442
Merit: 1016


View Profile
July 14, 2015, 05:28:07 PM
 #3875

А есть легкий кошелек для этого или другой для использования на сервисе через апи или типа того?
Если не этот то тот который делал Алексей в банке или Icreator на сервисе покупки продажи оплаты.
Нужен сервис которому передаешь реестр выплаты и он делает транзу.
То есть не один получатель а именно много, но транза одна.
Нужно для краника.
Или батник который делает тоже самое по запуску планировщика (sh по крону)
Я бы наверно справился сделать скрипт скачивания реестра за дату по фтп и отправку монет.
Но может есть готовое или сервис.
Суть в выплате через реестр раз в сутки думаю понятна, снижение издержек на комиссии, чтобы платить за 1кб транзакций, а не за каждую отправку.
Кроме этого краник работает.
Только выплаты налупленного навведенного нет.
Ну и всетаки улучшения еще нужны, но всетаки работает.
Народ в кранике мелкие суммы лупит, им точно не до выплаты лишней комсы, не те суммы.
Никаких кошельков такому сервису не надо.
Считаю отправку через реестры путём в сторону серьезных систем биллинга, а имеющуюся сейчас на сайтах систему кошелек на хостинге дырой в безопастности.
Нужны веб-кошельки с API.

svost
Sr. Member
****
Offline Offline

Activity: 461
Merit: 252


View Profile
July 14, 2015, 05:38:28 PM
Last edit: July 14, 2015, 06:15:07 PM by svost
 #3876

Владельцу адреса 4PVrV94mXPVXaWvaGwsjnqQKBtWgKj2XSn отправил на пробу Smiley
Отправил и сюда 4GaHumhbBXhxQuruko8hm6dyNRq7CH2Qgy

PS Сам сервер на данный момент склонен периодически падать, по этому если коннект долгое время будет отсутствовать, пишите тут, буду перезапускать процесс.

4NovacoinyLfMCjTzqDXcaGNTrykfDBNkP
Balthazar (OP)
Legendary
*
Offline Offline

Activity: 3108
Merit: 1359



View Profile
July 14, 2015, 06:00:48 PM
 #3877

Спасибо, потестирую на маленьких суммах.
Из известных проблем electrum-nvc, которые помню - не всегда корректно понимаются coinstake транзакции, иногда клиент в упор не понимает, что они давно уже подтверждены. Полагаю, что в этом клиенте такого наблюдаться не будет.

To4kaG
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
July 14, 2015, 06:10:42 PM
 #3878

извиняюсь конечно но у нас пошли 2 ветки чтоле? в https://explorer.novaco.in/blocks/189306/-200
какието орфаны появились и у меня сгенерированый блок со 180 подтверждениями там не светится...
или это у злого что-то случилось с базой или устаревший клиент?
v0.4.4.6-nvc-update9-beta
Balthazar (OP)
Legendary
*
Offline Offline

Activity: 3108
Merit: 1359



View Profile
July 14, 2015, 06:15:06 PM
Last edit: July 14, 2015, 06:39:56 PM by Balthazar
 #3879

Собственно, ошибочность данных следует из показаний самого эксплорера. К примеру, вот этот блок:

https://explorer.novaco.in/block/066766498387d35785bea586ff2c0503fa00179343a91cd89583391e7938b4d9

является родителем вот этого:

https://explorer.novaco.in/block/8ec2c46e56b6b95aeaa428928fc455f8038ca85ba0067e97a7961ad5f8682391

При этом первый орфан, а второй нет, в реальности подобная ситуация просто невозможна. Похоже, что эксплорер просто по какой-то внутренней причине эти блоки так пометил, на самом деле они орфанами не являются.

Крайний блок в цепи на момент написания поста:

Code:
novacoin@alex-i7-970:/root$ /opt/novacoin/novacoind getblockbynumber 189308
{
    "hash" : "00000000001844a78a3b1aaae6b272fc36448ac4b953fd5b86307be81b363199",
    "confirmations" : 1,
    "size" : 683,
    "height" : 189308,
    "version" : 2,
    "merkleroot" : "31b50c938870905d03ee0041d878ae980436dc6bef8b2de83070636b477f6268",
    "mint" : 7.21000000,
    "time" : 1436897280,
    "nonce" : 1816156430,
    "bits" : "1b25b32c",
    "difficulty" : 1738.33397822,
    "blocktrust" : "1320175c1",
    "chaintrust" : "ed79b43c71b6",
    "previousblockhash" : "a90a07f8fb629d5b586f04fb22f2ff3cbb885d2b3a2d37a5ca374e8ca33f254f",
    "flags" : "proof-of-work stake-modifier",
    "proofhash" : "00000000001844a78a3b1aaae6b272fc36448ac4b953fd5b86307be81b363199",
    "entropybit" : 1,
    "modifier" : "6bd8986c1174c6c7",
    "modifierchecksum" : "eccdf24b",
    "tx" : [
        "31b50c938870905d03ee0041d878ae980436dc6bef8b2de83070636b477f6268"
    ]
}
novacoin@alex-i7-970:/root$

Что же касается возможности генерации блоков поверх отклоненной цепочки, то это вполне возможно, если какой-нибудь пул или холдер со старым клиентом подхватит такую ветку и продолжит её. Так что лучше использовать крайнюю версию клиента. Практика показывает, что та же 0.5.2 вполне стабильна, khore на ней работает непрерывно уже месяца три.
svost
Sr. Member
****
Offline Offline

Activity: 461
Merit: 252


View Profile
July 14, 2015, 06:17:49 PM
 #3880

@To4kaG
Можно по другому блокчейну провериться https://bchain.info/NVC/blocks

4NovacoinyLfMCjTzqDXcaGNTrykfDBNkP
Pages: « 1 ... 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 [194] 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 ... 341 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!