About God and religion – and why it’s bad for you

In Russian this post was written in long forgotten 2015, due to some life happenings.

From the start: stay calm, I’m no some trigger-happy agnostic, I’m simply anti0christian, anti-muslim, anti-jude … etc. BUT, for what you call God — it exists. You are free to call it whatever you like, e.g. some schizophrenic Father, Son and Holy spirit, or Allah or Yahweh, Tor, Quetzalcoatl, Thoth or alike… I prefer to call this entity The Eternity, and since sex is relative, like in English table is it, in Spanish table is she(la mesa), in Russian it is he, it is simply E.(also Big Electron is nice). Unlike gods in so many religions E. is perfectly cognoscible. However like in every study you only study small fragment of the whole entity, the same should be done during any study actually — keep in mind that bigger picture always exists. It’s similar in a way to block Universe of Eisenstein, everything what is happened, what is happening and what potentially can happen is inside E, and everything is predetermined at larger scale – but it is not.

With E. it’s completely different, everything is already happened, but not exactly going to be this way. Unlike Einstein thought, time is not simple 4th dimension, I’m not quiet sure on how many dimensions time have, maybe two, maybe some huge number like TREE(3). The smaller the region in space-time we operating the better we can predict what’s going to happen next. The larger the region we examine — the less certainty can be. And it’s not like with 60% it’s going to rain tomorrow, and with 40% it’s going to be dry and sunny. E. is not static, being complete set of some very huge number of dimensions she’s constantly evolving, changing and shifting, E. is alive after all.

In the title of the post and in first paragraph I mentioned religion. For what religion is it is just a weapon of indoctrination of the masses by some narrow group of people, first they were called shamans, then high priests, than government, and just recently in historic perspective, like ~12000 years of attributable human culture, they learnt to lurk in shadows and conceal their true faith – chaos.

You may think that most effective company is McDonalds, some of FANGs, or some else company of Fortune-500 list? You’re wrong, most effective corporation is Catholic church. It sells you mythical product, possesses enormous land area for free, and pays no taxes for over a millennia! It would be wrong to completely ignore the role of the church in history, may it be distorted a perverted but it was some order in chaos of tribal rituals, and even some order is better than utter chaos. It’s a step from pre-сreation chaos towards harmony of order. But most notorious of all churches is Russian Orthodox church. What relation can possibly have their luxurious buildings to their so-called God? E. is always a whisper in you head, and even if you have an urge to go to the church and put some candle before some painting – just go of the gird for a while. Deprive yourself of all noises, turn off all your disturbing devices and listen, listen to yourself and you will hear a whisper at very remote corner of your mind. Congrats – that’s E.

For the conclusion one last bullet in the dead body of religion. We often hear “May the God bless you”, “God bless you”, and such. E. is not hearing particularly anyone(and it’s rude to personally address such a supreme being with your own lowly problems – don’t you think?), there is no anyone with exclusive access privileges, she’s everywhere and thus in everyone, and provides free access to the entire universe of ideas\ways\knowledge and there is nothing stopping you from getting access to this huge database, and no one can prohibit you that access. Just like in Bitcoin — which is free, open, public, border-less and censorship resistant, don’t you think that Satoshi made it to be image of E. for monetary tool:)?

Как использовать кошелёк Electrum и Eclair

Данный пост написан с целью показать насколько просто завести достаточно безопасный биткоин кошёлек и как безопасно, опять же относительно хранить\тратить свои сатошики. Итак начнём:

  1. скачиваем electrum c https://electrum.org/#home Естественно, в браузере надо проверить, что вы действительно скачиваете с указанного адреса, и я не направил вас на свои скам)
так выглядит сайт electrum, со временем может измениться
  1. Щёлкнув на зелененький замочек в хроме, или в лисице можно дополнительно проверить сертификат
проверяем что сертификат действителен для посещаемого сайта

Конечно можно проверить ещё много всего, например подпись разработчика, чек-суммы и так далее. Оставим это пока вне рассмотрения. Скачав например установшик для винды, ждем пока загрузиться, он небольшой по современным меркам ~25мб на момент написания и подтверждаем ей что хотим запустить. Ждем немного пока установиться, можно указать куда, но можно оставить и по умолчанию (это мы потом учтём) и запускаем.

  1. При первом запуске начинается визард который проведёт по процессу подключения к сети биткоин и создания кошелька, вернее будет сказать связки ключей, но кошелек привычнее и короче
подключение к серверам

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

  1. Для целей текущей статьи создаём “простой кошелёк”. Это не означает, что он чем-то хуже
создание простого кошелька
  1. Электрум является детерменистическим кошельком с упрощенной верификацией транзакций. Пары ключей выводяться из семечки, или SEED, и в данном случае это куда удобнее, т.к. его можно запомнить) Выбираем segwit
segwit семечко кошелька
  1. Семечка будет сгенерирована случайно, её надо ЗАПИСАТЬ НА БУМАЖКУ и ХРАНИТЬ как основный документы (если вдруг у вас в кошельке заметная сумма), и желатьлно в нескольких местах. ОБЛАДАНИЕ ВАШИМ Сидом РАВНОЦЕННО ОБЛАДАНИЮ ВСЕМИ ВАШИМИ САТОШИКАМИ. Никогда не храните его электронно.
да, даже от пустого кошелька я сделал половину сида нечитаемым
  1. На следующим шаге Electrum попросит вбить обратно семечку, чтобы убедиться что вы запомнили семечку правильно. Он будет вам помогать, заодно предоставляя вам возмоность оценить словарь)
вбиваем семечку для подтверждения
  1. После того как семечка вбита, он настоятельно попросит зашифровать её, вместе со всем кошельком. Правило простое: короткие пароли типа RjkbtQ4#&7 – плохо, мнемонические пароли типа La_gatta_ciara_come_el_sombrero_negro хорошие.
он и тут помогать будет
  1. Можете вбить пароли которые я упомянул и посмотреть как он их оценит, я использовал один из своих любимых паролей немного его обрезав, СССР…)
и даже в таком обрезанном виде
  1. Уже всё, это было просто правда?
Можно посмотреть некоторое количество адресов.

Когда вы создавали кошелёк можно посмотреть где он его создал, зависит от операционной системы, и удалить его оттуда предварительно сохранив на съёмном носителе. Также вашу семечку можно будет использовать в другом кошельке. Рекомендуется создавать несколько семечек, одна из которых создаёт файл который никогда не бывает онлайн, и несколько “горячих”, т.е. постоянно настоящихся на компьютере имеющим доступ в сеть.

Скромной приватности гид

или как правильно готовить ВПН, ака VPN – virtual private network

Учитывая последние инициативы всяких бешенных принтеров, и прочих контрол-фриков (это такие чудесные звери помешанные на контроле всего и вся) вопрос защиты от онлайн наблюдения встаёт всё острее. И напонимаю: наблюдение === подавление.

Данная статья разбита на три части:

  1. Что такое ВПН, зачем это нужно и где его завести
  2. Настройки OpenVPN серверной части
  3. Настройки OpenVPN клиентской части

Многа-букафф\лень читать: или у меня есть *.ovpn файл конфига — сразу на третью часть.

Что такое ВПН

Если говорить понятным языком — ВПН это способ объединения нескольких персональных компьютеров (к коим сейчас можно относить очень широкий класс устройств) через интернет приватно. Т.е. так, чтобы никто между ними не видел какой информацией происходит обмен. Также это можно использовать для обхода цензуры – запрета определённых сервисов на определенной територии и тому подобное. Как только цензура перестаёт быть внутренней, она становиться вредна.

На сегодняшний день существует море т.н. VPN сервисов, в котором вам дают ключи, т.е. пару логин-пароль, и вы бывает какаете какой-то клиент, а бывает обходитесь настройками в браузере, но в любом случае, ни о какой P, т.е. приватности в данном случае речи не идёт. Т.к. сразу наличествует третья сторона, которая для вас в данном случае является черным ящиком, и одна Вечность знает, что там с вашим трафиком делают. Ещё один важный недостаток таких решений — если вы нашли такой сервис, то и соответсвующие органы его найдут также легко. И ограничат или запретят к нему доступ. Предлагаемое мной решение тоже не даёт 100% гарантии защиты от ограничения доступа (т.к. оно всё равно централизовано), но сводит его к минимуму.

Первое что нам понадобиться — это виртуальный сервер где-то там. Можно использовать для этого Amazon Web Services EC2, MS Azure, Google Compute Cloud или любой другой облачный провайдер. Основная хрень в случае больших провайдеров — это их KYC(Know Your Customer), или знай своего клиента. А целью данного руководства является всё-таки скромная, но приватность. В силу этого был выбран небольшой (по сравнению с гуглом) провайдер – ITL group (ссылко реферальная, но как обычно персональную инфу я не собираю здесь). Для регестрации достаточно емейла, и если пользоваться например protonmail, причём желательно избегать вэб-интерфейса в случае крайней паранои, то вообще всё ОК. Более того данный сервис принимает оплату криптой, т.е. ни карточки, ни прочие персональзированные платёжные системы не требуются.

Для наших целей хватит обычного минимального VDS (виртуального выделенного сервера):

Требуемый виртуальный сервер

Соответсвенно серверу мы выбираем локацию — учитывая, что мы хотим хоть и приватный, но шустрый интернет, т.е. можно забить на всё это и обращаться в сеть исключительно через ТОР, но в этом случае скорость будет варьироваться от модемной (кто еще помнит модемы на 9200, то скорее уж 56к), до полноценного широкополосного, это вне вашего контроля. Т.е. выбираем то, что не очень далеко от вас — из России, например, вполне подойдет Голландия или Латвия. Или даже Украина.

Также к достойнствам данного провайдера стоит отнести простую установку операционной системы, да, мечта – в 1 клик. В целях экономии всего и вся мной была выбрана Centos 7, которая в установке занимает ~600 мегабайт, ещё столько же мы потратим на нужный софт. Да, доступ к нашей виртуальной машинке будет через SSH, т.е. с програмками типа PUTTY для Виндовс, или терминала для Линуксов и Маков. Никакого графического интерфейса конечно не предусмотрено (зачем плодить ненужные сущности?), нормальный чистый шелл. Всё, понеслась, дальше начинается хардкор!

OpenVPN — настройка сервера

Итак, вы получили заветное письмо от провайдера с кредами, от credentials, или паролями-явками:

пример явок-паролей

Собственно нам нужен ИП адрес, юзер (он будет с рут-правами, т.е. полный контроль) и пароль. Пароли есессно надо сразу сменить, в панели провайдера, ибо a) пароли от ssh не один вменяемый клиент не даст запомнить б) ваш емейл провайдер его уже видел в) перебором такое подобрать значительно быстрее чем a_ya_uge_zapomnil_etot_parol. Всё мы оказались в шелл-консоли, теперь нужно установить нужный софт, и да, мы поставим сразу несколько программ одной командной, привет Винда! Погнали:

sudo yum update -y
sudo yum install epel-release -y
sudo yum update -y

Убедились что менеджер пакетов, встроенный в ЦентОС ( это то, что скрывается за буквами yum) актуален. Поставили EPEL ( Extra Packages for Enterprise Linux ) и снова проверили актуальность. Теперь основная котлета. Поскольку данное руководство весьма параноидально, помимо собственно OpenVPN понадобится EasyRSA, да, весь трафик по умолчанию будет сурово защифрован, так что никакой deep packet inspection нас не испугает.

sudo yum install -y openvpn easy-rsa iptables iptables-services wget yum-cron net-tools bind-utils nc mtr 

Также подцепили Iptables. Это то, что называется state-of-art, фаерволл. Теперь нужно изменить конфигурацию сервера:

vi /etc/openvpn/server.conf

Vi — это текстовый редактор по умолчанию, он крайне, предельно минималистичен. Ибо нефик. Украшательства нам не нужны. Можно взять мой файл, можно развлечь себя на пару недель пониманием как ещё можно конфигурировать сервер, напомню сейчас он заточен чтобы предоставлять клиентским компьютерам выход в сеть приватно.

# Базовые настройки сервера
dev tun
proto tcp
port 1194
keepalive 10 120
max-clients 50

# Сертификаты шифрования
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0

# Шифрование и закалка
reneg-sec 0
remote-cert-tls client
crl-verify crl.pem
tls-version-min 1.2
cipher AES-256-CBC
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256

# После инициализации сервера дропаем root-доступ
user nobody
group nobody

# Настройки пула ИП адресов в нашей сети
server 172.31.100.0 255.255.255.0
topology subnet
ifconfig-pool-persist ipp.txt
client-config-dir ccd

# Разное 
persist-key
persist-tun
comp-lzo

# Весь трафик пускаем через OpenVPN и используем публичные днс сервера Гугла. Для совсем параноиков можно поднять свой, но пока так 
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

# Логи. 3 - храним кто когда подключается, и критические диагностические сообщения
log-append /var/log/openvpn.log
verb 3

Многие параметры имеют достаточно описательное наименование. Proto TCP (используем tcp сооединение, можно udp, который обеспечивает лучшую устойчивость к сканированию портов и ддосу, но у меня он как-то не полетел), через порт 1194, макс клиентов – и т.п. Надо отметить что для эксперимента Я протестил все 10 клиентов под тяжёлым трафиком, и при этом нагрузка на наш хиленький виртуальный сервер не превышала 3% по времени процессора и памяти.

Теперь пришло время сформировать сертификаты сервера и клиента. Для этого используем EasyRSA. Сертификаты сервера мы генерируем однажды (секрет держим на сервере) и публичный выдаем клиентам, он нужен для того, чтобы клиенты знали что они именно с нашим сервером связываются, если вдруг где-то что-то пойдёт не так, и например ваш интернет провайдер погонит весь трафик через все порты через свой сервер, клиент не даст установить соединение. Это очень маловероятно, но я тоже когда-то репостнул изображение из группы МДК в контакте. Маловероятно не значит невозможно. Следующие команды набирать (или через shift+insert) последовательно!

mkdir /etc/openvpn/ccd
cd ~

Создаём директорию для файлов клиентов. И на всяк возвращаемся в корень

/usr/share/easy-rsa/3/easyrsa init-pki

Инициализируем PKI т.е. Public Key Infrastructure, иначе говоря всё то что нам понадобиться для генерации ключей.

/usr/share/easy-rsa/3/easyrsa build-ca nopass

Программа спросит имя сервера, я использовал просто “VPN”, можно указать FQDN имя сервера (aka Fully Qualified Domain Name), однако же, я предпочёл этого не делать, дабы не потерять портабельность, вдруг я решу перейти на физический сервер или в другое облако, тогда придётся заново создавать все сертификаты, и сервера и клиентов. Nopass потому как мы же не хотим чтобы при каждом соединении пользователю дополнительно ко всем приблудам всплывало окошко с паролем, это уже избыточно.

 /usr/share/easy-rsa/3/easyrsa gen-dh

создаём параметры Diffie-Helllman, нужные для сервера для установки защищённого соединения. Это может занять некоторое заметное время, в окружении использованном мной, около 40 секунд.

/usr/share/easy-rsa/3/easyrsa build-server-full vpn-server nopass

Создаём ключи сервера. vpn-server – имя вашего сервера, какое удобней, но оно понадобиться в будущем так что не стоит использовать рандомную крокозябру. Хоть её и можно будет подсмотреть – но зачем лишний раз?

/usr/share/easy-rsa/3/easyrsa build-client-full klient-1 nopass

В вашем случае klient-1 это местное имя устройства(не обязательно его реальное имя, каким бы оно не было, исключительно для удобства), которое будет подключаться к серверу. Эту команду можо повторять сколько нужно раз, единственно имена должны быть разными.

/usr/share/easy-rsa/3/easyrsa gen-crl

АПДЕЙТ: контрольный сертификат по умолчания действует 180 дней. По-этому можно либо озаботиться увеличением этого времени, либо за день-до запустить команду выше снова и закопировать в директорию openvpn (ниже)

Создаём список для отзыва сертификатов. Мало-ли кто-то станет плохо себя вести?) Но об этом в другой раз.

openvpn --genkey --secret pki/ta.key

Это мы сгенерировали предварительно разделенный ключ (пре-шаред ключ). Это тоже немного поможет нашей параное. Подробнее здесь.

Теперь копируем сгенерированные ключи в папку openvpn, чтобы сервер знал, что происходит. Все нужные файлы находяться в корне в папке pki. Можете проверить это набрав:

cd ~
ls
cd pki

Файлы *.key – это секретная часть ключа, файлы *.crt – это публичная часть ключа, т.н. сертификат. Теперь копируем, если всё было как описано, то это должно выглядеть так:

sudo cp pki/ca.crt /etc/openvpn/ca.crt
sudo cp pki/dh.pem /etc/openvpn/dh.pem
sudo cp pki/issued/vpn-server.crt /etc/openvpn/server.crt
sudo cp pki/private/vpn-server.key /etc/openvpn/server.key
sudo cp pki/ta.key /etc/openvpn/ta.key
sudo cp pki/crl.pem /etc/openvpn/crl.pem

Теперь надо всё это делать запустить. И настроить так, чтобы в случае перезапуска нашего виртуального сервера(сервер это такая машинка которая работает 365\24\7, но бывает что угодно) всё запускалось само:

sudo systemctl -f enable openvpn@server.service
sudo systemctl start openvpn@server.service

Настал хороший момент проверить, что пока всё идёт как надо. Для этого посмотрим хвост(tail) лог файла:

sudo tail -f /var/log/openvpn.log

Ctrl+C, чтобы выйти из просмотра хвоста

Также уже сейчас, можно перейти на финальный этап, конфигурацю клиента, установить соединение и опинговать (Ping 172.31.100.1), если пакеты не теряются, то значит всё ОК, иначе – увидите в хвосте лога. Обычный интернет трафик пока что не пойдёт, тут немного подкрутим iptables. Но для этого нам нужно заставить наш сервер пропускать весь Ip v4 трафик, ибо никакая вменяемая система по умолчанию этого не делает, представьте себе на минуточку, в случае если у вас статичный ИП у ващего интернет-провайдера, через вас кто угодно сможет гнать свой трафик. Не дело же!

vi /etc/sysctl.conf

Добаваляем туда:

net.ipv4.ip_forward = 1

Сохранив файл (нажимаем esc и набираем :wq), применяем изменение:

sudo sysctl -p

Теперь нужно весь трафик загнать в openvpn, дропнуть левых и прочее. Внимание! Таблицы надо вводить разом, проше всего это сделать создав отдельный bash скрипт, предварительно сохранив существующие таблицы:

iptables-save > /tmp/iptables.txt

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

cd ~
touch simple.sh
vi simple.sh

Через ctrl+insert вставляем в него следующее содерджимое:

#!/bin/bash
# Стираем все правила
iptables -F FORWARD
iptables -F INPUT
iptables -F OUTPUT
iptables -X
# Устанавливаем все правила по умолчанию
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Позволяем всему трафику идти через ип таблицы и дальше
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Принимаем весь трафик идуший наружу на интрефейс по умолчанию
iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT
# Принимаем все входяшие соединения на интерфейс по умолчанию
iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
## Принимаем все входяшие SSH соединения, именно из-за этого и нужен # хороший пароль ssh, но я об этом подумаю позже)
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -s 0.0.0.0/0 -j ACCEPT
# Принимаем весь входяший трафик на порт OpenVPN
iptables -A INPUT -p tcp --dport 1194 -m state --state NEW -s 0.0.0.0/0 -j ACCEPT
# Активируем NAT для VPN
iptables -t nat -A POSTROUTING -s 172.31.100.0/24 -o eth0 -j MASQUERADE
# позволяем TUN соединения для нашего OpenVPN server
iptables -A INPUT -i tun0 -j ACCEPT
# позволяем TUN соединения к нашему серверу идти дальше
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
# Позволяем всем исходяшим соединениям через наш VPN идти куда угодно в интернете
iptables -A FORWARD -i tun0 -s 172.31.100.0/24 -d 0.0.0.0/0 -j ACCEPT
# Пока что блокируем весь межклиентский трафик. Это будет в части два.
iptables -A FORWARD -i tun0 -s 172.31.100.0/24 -d 172.31.100.0/24 -j DROP

Сохраняем файл (esq + :wq) и даём этому скрипту права исполнения(chmod) и запускаем:

chmod +x simple.sh
./simple.sh

Актуализируем новые таблицы маршрутизации:

sudo systemctl enable iptables
sudo systemctl start iptables
sudo service iptables save

Если вдруг что-то не прошло, то возможно стоит очистить текущие таблицы маршрутизации, с помощью след скрипта (всё всюда пропускает):

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

Всё, осталось собрать нужные файлы клиента(ca.crt – корневой сертификат нашего сервера; cleint.crt – сертификат клиента; client.key – секретный ключ клиента; ta.key – предварительно разделенный ключ ) в одном месте и скопировать их на нужное устройство:

mkdir klietn-1-config
/usr/share/easy-rsa/3/easyrsa build-client-full klietn-1 nopass
cp pki/ca.crt klietn-1-config/ca.crt
cp pki/issued/klietn-1.crt klietn-1-config/client.crt
cp pki/private/klient-1.key klient-1-config/client.key
cp pki/ta.key klient-1-config/ta.key

Теперь создаем собственно файл кофигурации (*.ovpn) клиента( сначала touch, затем vi klient-1.ovpn), со следующим содержимым, ВНИМАНИЕ СТРОЧКУ С АДРЕСОМ Remote меняем на адрес своего виртуального сервера, полученный в самом начале:

# Secure OpenVPN Client Config

#viscosity dns full
#viscosity usepeerdns true
#viscosity dhcp true
tls-client
pull
client
dev tun
proto udp
# ЗДЕСЬ ПРОПИСЫВАЕМ АДРЕС ВАШЕГО СЕРВЕРА и порт(если меняли):
remote 123.123.123.123 1194
redirect-gateway def1
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca ca.crt
cert client.crt
key client.key
tls-auth ta.key 1
remote-cert-tls server
ns-cert-type server
key-direction 1
cipher AES-256-CBC
tls-version-min 1.2
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256

Теперь копируем файл в папку клиента и архивируем, чтобы скачать:

cp klient-1.ovpn klient-1-config/client.ovpn
tar cvfz klient-1-config.tgz klient-1-config

Всё готово к третьей части, если вы дочитали до сих пор, то без проблем скачаете файл, например подключившись с логином от ssh через sftp например через Filezilla:

Клиентская часть OpenVPN

У вас есть *.ovpn файл, 4 файла сертификатов, можно начинать настройки клиентской части. Для никсов и винды берём клиент тут. В случае мака(который тоже никсоподобный) есть отдельно. Для андроидов и айфонов есть клиент в соответвующих магазинах приложений: в Гугл Плей, в Аппл Сторе.

Ставим в укзанное место размещения, запоминаем это место, и прямо туда копируем папку с установками. При установке придется несколько раз вбить пароль, или нажать кнопочку “да”, но вот клиент запущен. Теперь ему надо подсунуть наши настройки. Для этого открываем настройки (на примере винды, маки аналогичны):

В случае андройда\айфона нужно будет импортировать профиль из файоловой систему устройства. Основная проблема айфонов в том что это не так просто, но meh, кому они нужны, если уж вы заморочились контролем над своим цифровым следом:)

В расширенных настройках указываем путь к ovpn файлу:

Теперь также нажимаем connect, ждем некоторое время и вуаля, защищенное соединение в Интернет установлено. Даже Я не смогу следить за вашим траффиком, а уж кто-то там ещё, просто без шансов.

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

Данной скорости вполне достаточно чтобы смотреть нетфликс в 1080п, про 4к не скажу, ибо такого содержимого мало, и оно того не стоит, а для браузинга, и всяких рутинных задач – более чем достаточно.

Послесловие

Даже такой параноидальный впн не даст вам достаточного уровня анонимности и приватности в интернете. Если вы читаете почту на компьютере на котором у вас установлено соединение, но при этом у вас не рутованый телефон с тем же аккаунтом – этому помочь нельзя, ваша геолокация всё время будет известна Гуглам\т.е. кому-угодно. Надо менять свои цифровые привычки. Использовать всякие Firefox, а лучше его форк Waterfox, с установленными приложениями PrivacyBadger, UBlockOrigin, AdNauseaum.

Также один набор ключей-сертификатов можно искользовать на нескольких устройствах, но не одновременно, по каждому набору возможно только одно соединение в единицу времени. Однако если у вас на DDWRT, то ключи-сертификаты можно использовать на нём, и уже к нему будут подключаться все ваши устройства, которые будут и за роутером и за впном. Но это история на другой раз:)

и конечно, если вам данный материал был полезен, жду сатошиков на следующий адрес Ьиткойна: 3CNK4GTmK5M3Nq7CTqzM2ocxabVXEjPj6o

Массовые взломы MODX Revolution или почему нужно делать бэкап

Раздался у меня в пятницу звонок, от представителя одного из экс-заказчиков. Знаете эту историю – скупой платит, не дважды, а всегда. Так вот – его ресурс попал под взлом, и соответственно  стал постепенно разваливаться, сначала фронт переводил посетителей на всякие скамы, типа биномо, потом тоже самое стало происходить в бэкэнде, потом перестало вообще грузить бэкэнд. Итак, явки пароли от хостинга взяты, приступим!

Лечим взломанный MODX Revo

Первым делом, снимаем и проверяем дамп базы на опасные вкрапления shell_exec, eval, base64, passthru, includes, requires, decode и прочее. Скорее всего в базе ничего не будет, т.к. MODX не грешит включением в доставляемое из базы содержимое всяких исполняемых на сервере или в браузере скриптов – привет WordPress, в котором в пост можно встроить майнер монерки, и каждый кто зайдёт – присядет на него. Другое дело как его туда внедрить – но это уже совершенно другая история.

Теперь делаем дамп файлов. Смотрим на исполняемые php файлы, особенно в корне, по хорошему у MODX там должны быть только index.php и config.core.pho, также проверяем php файлы в стандартных папках assets, core, components, manager. Там скорее всего будут в самом начале файлов вкрапления следующего вида:

/*b127e*/

@include “\057dom\145/en\145rs/\071/91\061700\060198\0550/d\157mai\156s/p\162o-s\165shi\056net\057cor\145/co\155pon\145nts\057sho\160kee\160er3\057.ce\06715d\0705.i\143o”;

/*b127e*/

Это заражённый код, который запускается специфическим get-запросом, если ведёте логи – то без труда обнаружите их. Можете просто удалить, можете поглумиться. Бонус заключается в том, что вкрапления будут во всех файлах одинаковы, т.е. их без труда удалить.

Но дальше наступает самое интересное – js файлы. В зависимости от глубины заражения могут быть перезаписаны все файлы. Они, будут все одного размера, сложно же ожидать от массовой атаки какой-либо изощренности? к сожалению все js файлы потеряны. Хорошая новость в том, что если у вас нет бэкапа основные файлы можно взять из стандартной поставки MODX. Другой бонус заключается в том, что в зависимости от количества установленных пакетов js файлов может быть далеко за 1000, и не все пакеты могут быть под рукой. Но, MODX  хранит transport zipы пакетов. Т.е. пакетами, которые отсутствуют, можно смело жертвовать – потом их можно будет установить из транспортных архивов. Итак мы зачистили зараженные файлы. Содержимое core/cache/ грохаем, но не саму папку. Файлы стандартных пакетов меняем на чистые. Грузим на сервер, заходим в админку, устанавливаем все недостающие пакеты из архивов. Вуаля. Теперь пришло время защитить ресурс.

Защищаем взломанный MODX Revo

Как известно эксплоиты сразу не умирают и атаки будут продолжаться усердными роботами ещё некоторое время. Самый простой способ – снять со всех папок права на запись для ВСЕХ, т.е. chmod 0555, и будет. Даже если скрипт будет исполнен он ничего не запишет.

Способ посложнее – убивать все запросы запрашивающие специфические php файлы в стандартных директориях через следующий .htaccess:

IndexIgnore */*
<Files *.php>
Order Deny,Allow
Deny from all
</Files>
<Files *.log>
Order Deny,Allow
Deny from all
</Files>

И ещё один бонус. Бывает так, что вы всё вылечели, а то в админке то ещё где – белый экран. Это из-за того что зловред помимо того, что портит всё js он ещё генерит пустые index.html где попало. Грохаем их.

3-2-1 правило или почему надо делать бэкап.

Всё вышеизложенной канители можно избежать регулярно делая бэкап. На хороших хостингах бэкапы делаются автоматический, но может получится так что перезаписанные файлы тоже будут забэкаплены. Так что грамонтый бэкап – ваша головная боль. Правило 3-2-1 гласит, что у вас должно быть 3 копии ваших данных, и базы и кода и почты, короче всего нужного, 2 разных носителя, т.е жесткий диск и флеш-накопители или облака, и обязательно 1 офф-сайт копия. Т.е. в случае сайта будет ваша машина.

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

Можно раз в неделю делать инкрементальный бэкап – т.е. хранить только изменение файлов относительно последнего полного бэкапа. А раз в месяц полный.

Есть куча софта для менеджмента бэкапов, ничего конкретного рекламировать не стану, фих всем, криптоанархизм наше фсё!

Как Яндекс рекламодателей дурит.

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

Так вот, Яндекс – по сути, сборище некомпетентных криворучек. Я думаю многие помнят их игрища в построении СЕРПы с поведенческими факторами и к чему они привели:) Также многие слыхали об их матрикс-нете, страшном таком алгоритме, который недо-ИИ, в котором 100+++ параметров оценки сайта, и их веса не знает ни сам матрикс-нет ни яндекс.

И вот тут мы приходим к самому главному, Яндекс – это компания фо-профит. Т.е. из своего поисковика ей надо максимально больше выжать денежек из рекламодателей. И вот тут начинается совсем уж магия)

Звонит мне некий чудный персонаж, представляется из отделка гео-сервисов Яндекса и начинает просто соловьем петь, как я всё хорошо веду в их справочнике, какой я молодец и так минут 8. Нормальный такой скрипт написали, но чёрт, мозгом надо мыслить, а не мечтать о рекламодателях идиотах) Просит меня зайти в справочник и выбрать там одну из точек и посмотреть стату… Тут реально сработал робот, потому-что стату я коллекционирую. И вот что-же я там увидел:

Какие заботливые) даже в письме продублировали тогдашнюю картинку, да ещё вместо меня всё обвели… Только вот сразу столько лажы видно) Итак, как мы видим радиус охватывает четыре муниципальных округа красносельского района и даже кусочек кировского, по-этому не будем мелочиться и просто возьмем всё население района ~ 380 тыс. людей. Ещё какое-то количество приезжает сюда на работу, но будем считать, что уезжает столько-же, и вообще сдаётся мне что люди склонны столоваться ближе к домику, так что эта цифра выглядит вполне правдоподобно. Теперь же делим страшную большую цифру в квадратике на 30 дней. ~223 тысячи запросов в день про жратву.  Т.е. 58% ежедневно ищут ресторан в котором поесть или еду заказать. Достаточно вспомнить другую стату, по данным Nielsen 56% россиян хотя-бы раз в году посетили кафе(данные за 2016 год). Удвоим цифру – два раза в год. Этож чисто питер. И да, чтобы соответствовать данным яндекса, надо еще в 180 раз увеличить. Т.е. это первая фантастическая цифра.

Смотрим дальше. Даже лучшая организация на районе получила из этих 6.6М только 153 клика. т.е. даже не 0,1%. бред сумасшедшего.

Но давайте же посмотрим на псевдоцвет. Есть области над водой, над промзонами, в которых цвет максимально темный, Это что вообще такое? хреновое меппинг данных? лень? кривые руки? Да ладно, мы же можем приблизить…

Общий радиус 1км

общий радиус 5км

Эээ, без комментариев. Тут всё и так ясно. С визуализацией данных в Яндексе беда….

Но на этом чудеса не заканчиваются. Цифры волшебным образом стали более реалистичными.

Эти цифры на мои вкус выглядят более приближенными к реальности. И в данном случае предполагаемая цена клика ~5 руб, и цена конверсии в 80-100 руб, не выглядит уж такой абсурдной. Ещё бы и давали потестить, даже за денежку, а не писали что  “И в большинстве случаев, люди выбирали 90, 180 либо 360 (дней)”.  А хотя-бы на 7, ладно на 30… но сразу вписываться в блудняк на 90, только по-тому что какие-то люди что-то там выбирали….

Да мне пофиг. Don’t trush. Verify.

 

 

9 заблуждений о Биткоине

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

1. Майнеры используют компьютеры для решения ОЧЕНЬ СЛОЖНЫХ задач

С точностью наоборот. Эти компьютеры решают НАИМЕНЕЕ СЛОЖНУЮ задачу которую можно представить: они случайным образом перебирают числа, и после каждой попытки сравнивают хеш(побайтовые арифметические операции) числа с данным. Как и любой другой не-майняший полный узел.

2. Майнинговое оборудование подтверждает транзакции, обеспечивая соблюдение правил Сети!

Опять нет, майнинговое оборудование ничего не подтверждает. Оно только получает (вероятно действительную) транзакцию от полных узлов: либо от оператора фермы, но чаще от майнинг пула.

3. Если кто-то контролирует 51% сетевого хэшрейта, то он контролирует Биткоин.

Нет, даже если кто-то обеспечит себе 100% хэшрейта всей Сети он не сможет сделать недействительные транзакции действительными (украсть существующие, увеличить количество, т.е. создать инфляцию, изменить правила, например ввести центральную сущность в сеть). С 50%+ можно попробовать блокировать некоторые транзакции в будущем ИЛИ  переписать ВСЮ прошлую историю, т.е. затратить столько же мощности, сколько уже было затрачено на генерацию текущей цепи блоков в Сети.

4. Блокчейн более эффективен, быстр и дешёв чем централизованные решения.

А ещё мы можем заместить их дабы обеспечить сокращение костов и т.п. Бла-бла-бла. Наоборот. Блокчейн медленнее, дороже в сетапе, и требует значительно больших ресурсов на поддержание. Единственно и достаточно – блокчейн убирает единую точку уязвимости присущую всем централизованным системам.

5. Блокчейн защифрован и обеспечивает приватность, недоступную централизованным технологиям.

А ещё мы можем их использовать чтобы зашифровать\зашифровать чувствительные данные. Ога. В чистом виде сам по себе блокчейн не зашифрован, читабелен, публичен и доступен для ВСЕХ и КАЖДОГО, НАВСЕГДА, большого кошмара для приватности\конфиденциальности и представить сложно.

6. Биткоин можно превзойти, блокчейн это революция – пора забыть про Биткоин.

См. пункты 4 и 5. Нет, блокчейн можно превзойти, но мы преуменьшаем ценность биткоина, как первого децентрализованного средства хранения ценности. Пора начинать развивать Биткоин забыв про блокчейн. Привет Лайтнинг.

7.  Биткоин чаще всего используют криминальные элементы.

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

8. Биткоин – криптовалюта первого поколения. Скоро будет 3, 4 и 5ое вот  мы заживем!

Нет. Биткоин с большим преимуществом самая продвинутая, современная, инновационная технолигия на сегодняшний день. На текущий момент – это проект на котором работает, причем на волонтёрских началах, беспрецедентное количество людей.  Ни одна операционная система, ни одна философская концепция, ни одна физическая теория до сих пор не имела такой концентрации мозговой активности, работающей над проектом.

9. Альткоины изобрели столько всего, что разработчикам Биткоина даже не пришло в голову

Нет. Абсолютно все моменты обеспечивающие продажи альтов (посы, мастерноды, блоки с большими транзакциями), были уже оценены и проигнорированы\отвергнуты самыми первыми разработчиками Биткоина, иногда даже задолго до Биткоина (привет ПоС, использованный в BMONEY, Аж 1998 год).

 

 

 

 

Почему Биткоин отличается?

Да, мне очень не нравится вопрос почему, в силу того, что он обращен в прошлое, но иногда устаешь повторять одно и тоже, к тому-же данный вопрос не так уж и бесполезен в плане увеличения понимания тех или иных явлений. Итак…


Почему Биткоин отличается?

Если Биткоин для вас является чем-то новым, и вы знакомы с ним менее 6 месяцев, то последние месяцы могут показаться вам сумасшедшими. Как я и предупреждал в одном из предыдущих постов – волатильность убийственная для людей не знакомых с чудным зверьком по имени ЛОСЬ. Цена взлетала с бешенной скоростью, заставляя всех затаить дыхание, и индуцируя СОВС (Страх Остаться В Стороне – аналог английского FOMO – Fear Of Missing Out), а затем падала с неменьшим энтузиазмом, возбуждая уже СНС – Страх, Неуверенность, Сомнение. Вместе с тем все крипто-монетки кажутся очень связанными между собой, и двигуются как минимум с 60% корреляцией, в чем же разница? Как различить одну монетку от другой? И, самое важное, как инвестору определить ценность монеты в долгосрочной перспективе?

В этой статье, Я расскажу о том, что делает Биткоин отличающимся, как Биткоин, как система, несмотря на все попытки клонирования и бесконечные форки, все ещё по-настоящему не воспроизводимым.

Настоящая инновация

Для истинного понимания предположения о ценности биткоина, нелишне взглянуть на историю. Мысль о том, что вот эта-та новая монетка на ICO (initial coin offering), наконец-то “улучшит” или “исправит” Биткоин, и разом решит все проблемы, которые Биткоин отправил в мусор, только потому, что ему не хватало какой-то “фичи” (особенной функциональности), может показаться очень привлекательной. Ога, купим за грамм песка, продадим за тысячу грамм калифорния. В самом деле, на почти каждом ICO, в каждом новом альт-коине или хард-форке мы видим очередную фундментальную инновацию. Единстенно, все эти ребята упускают из виду самое главное, самая большая инновация, не побоюсь этой оценки, аж за 500 с лишним лет, уже произошла. Об этом я расскажу в следующем материала, пока же речь немного не о этом.

Децентрализованный цифровой дефицит явяляется одной из фундаментальных черт Биткоина, которая сделала его первым, и как покажет этот материал, остается единстенной такой монетой. Все прочие так называемые инновации, такие как более быстрые подтверждения, измениения на proof-of-самшит, о чем Я писал в предыдущем посте, полнота по Тьюрингу, другой алгоритм подписи, другой механизм выбора транзакции на подтверждение, и даже конфиденциальность, есть всего-лишь крошечные изменения по сравнению с гигантской инновацией Биткоина.

Важно помнить, что альтернативы Биткоина предлагаются с 2011 года, и ни одна так и не приблизилась к тому чтобы заместить Биткоин в плане цены, использования или защищенности. IxCoin  был клоном Биткоина, созданным в 2011 году с большими наградами за блок и значительным премайном (долей монет отправляемой разработчикам.  Tenebrix был альт-коином также созданным в 2011 году, в попытке добавить устоичивость к добыче на видео-картах (напомню, что изначально биткоин прекрасно добывался на процессорах, потом быстро появились программы для утилизации под эти нужды видеокарт, и только потом появились асики) и опять-же имела значительный премайн. Solidcoin был ещё одной монетой, созданной в 2011 году с более быстрым временем блока, а соответсвенно и подтверждении транзакции, и, вы угалали, с большим премайном. Одни из немногих выживщих монет тех времен являются Namecoin и Litecoin, которые отличаются тем, что в них премайна не было.

Капитализация крипто-монет 5 лет назад

ICO также не новость. Mastercoin провел ICO в 2013 и да, вы догадались, с премайном, подняли более 5000 биткоинов и спустя некоторое время переименовались в Omni из-за того, что окружающая экосистема была весьма анемичной в то время. Factom провели ICO в 2015 и подняли более 2000 биткоинов, после чего провели еще несколько раундов дополнительного финансирования из-за нехватки денег. Другими словами, все эти “новые” монеты показали себя бледно и не обеспечили какого-либо применения.

Альткоины и ICO испробовали множество “новых фич”, но большинство так и не показало особенной полезности и широкого принятия. Что нам это даёт? Почему Биткоин обладает, как-будто, специальным местом в экосистеме? Исследуем два аспекта, делающих Биткоин отличным от большинства: сетевой эффект и децентрализацию.

Сетевой эффект

Поскольку Биткоин обладает широчайшей сетью и сетевым эффектом, все другие монеты играют в догонялки. Если вы знакомы с теорией игр, то знаете, что производитель молока с одной коровой имеет нулевые шансы продавать своё молоко в одном ареале с какои-нибудь ТНК, у которой миллионы коров на всех континетах; при условии свободной конкуренции естественно, но это опять-же другая история. Биткоин – это неделя из 7 дней, а каждая другая монетка – это некая вариация: давайте сделаем неделю из 4 дней! А давайте сделаем в дне 18 часов! А давайте называть дни по другому! Давайте менять длину недель по желанию некоторой группы лиц! Нет нужды говорить, что такой вид “инноваций” в лучшем случае незначителен, и естественно не находит широкого принятия. Это происходит в силу того, что сетевой эффект Биткоина растет со временем, и люди используют сеть для оптимизации и создания стандартов в соответсвии с сетью, привлекая все больше людей.

С ростом сети, то что кажется нам неустоичивым и тонким, постоянно нарашивает невидимые преимущества, играющие в пользу нормализации сети. Таким образом, то что изначально не лежит на поверхности, и кажется незначительным, на самом деле несет в себе эффекты вторго, третьего и далее порядков (привет SegWit, о котором я писал ранее), которые опять же делают сеть более доступной, в тоже время утверждая норму сети. Для примера, автомобили не летают, и не плавают, а предназначены для передвижения по твердой поверхности. Отсутвие дополнительных функциональностей, в данном случае делает автомобили более полезными, их, например легче парковать, дешевле содержать, потребляют меньше горючего и т.д.

В дополнее к этому норма, которую форсирует сеть прошла и проходит самую суровую проверку – временем, и подтвердила своё устоичивость в неочевидных формах. Вы не захотите быть первым испытателем гибрида авто и самолета, поскольку не знаете насколько это безопасно. То что было в использовании некоторое время имеет значительно больше шансов на использование. Биткоин в этом плане предлагает самую щедрую награду за баги и уязвимости протокола. Таким образом, Биткоин доказал свою безопасность временем. Всякая другая монета, являясь более молодой, уже доказала или еще докажет свою меньшую безопасность.

В самом деле, сомнительная природа таких дополнительных “фич” становиться очевидной только со временем. К примеру, кеЭфирная полнота по Тьюрингу, обернулась большей уязвимостью сети эфира(см. DAO и Parity багами). Протокол же Биткоина, в противоположность, изначально воздерживался от полность по Тьюрингу по этой самой причине. Обычнымы ответными мерами централизованых разработчиков\лиц на такие уязвимости являются еще более авторитарные меры (откаты, хард-форки, и т.д.). Другими словами, сетевой эффект в сочетании со временем делает альты ещё более хрупкими.

Биткоин имеет самую большую сеть, что означает увеличение его использования с каждым новым пользователем. Так проще найти акксесуар для распространенной модели телефона, чем чего-либо экзотичного. Экосистема вокруг Биткоина делает его приобретение и хранение более простым, чем скажем приобретение очередной монетки на ICO.

Децентрализация

Другое главное свойство Биткоина, которое я затрагивал в предыдущем посте, это децентрализация. Под этим я понимаю отсутсвие единой точки уязвимости сети. Любая другая монета обладает основателем или компанией за ней, что делает её более уязвимой к давлению с их стороны. Хардфорк (не обратно-совместимое изменение) который навязывают пользователю явялется индикатором излишней централизации монеты.

Централизованные монеты имеют “преимущество” – они могут быстро адаптироваться, в ответ на требования рынка. Централизация безусловно неплоха для бизнеса, предоставляющего определенный товар и услугу для своих клиентов. Централизованный бизнес может быстрее адаптироваться к меняющимся условиям рынка, и тем самым увеличивать/сохранять прибыль.

Для денег же, однако, централизация не несёт ничего хорошего. Во-первых, одним из главных критериев ценности для хранилища ценности является количественная неизменность, т.е. единица хранилища ценности остается как минимум единицец с течением времени. Также хранилище ценности требует, чтобы его качества со временем не ухудшались (да, даже алмазы не вечны). Изменения которые ставят под сомнения эти особенности (инфляция предложения, снижение принятия, изменения в протоколе) сказывается на использовани такого хранилища ценности самым неприятным образом. Тут сразу приходит на ум доллар. В начале XX века на 1 доллар можно было купить хороший шерстяной костюм у портного….

Во-вторых, централизация валюты/монеты испытывает тенденцию к изменению правил игры, что имеет катастрофический эффект. Весь прошлый век полон историйцентральных банков, медленно обесценнивающих свои валюты в качестве хранилища ценности. На минуточку, средняя продолжительность жизни таких валют составляет 27 лет, несмотря на то, что их поддерживают правительства и повсеместно на территории целого государства их принимают. “Фичи”, способность быстро адаптироваться и используемость даже близко не так значимы для валюты/монеты как дефицитность и неизменность.

Всякая другая крипто-валюта и ICO, кроме Биткоина, является централизованной. В случае ICO – очевидно. Сущность выпускающая токен/монету на ICO является центальной. Они выпускают монету, и тем самым, могут менять её использование, и даже выпускать дополнительные токены. Также они могут отказаться принимать свои-же токены задним числом.

Альт-коины тоже испытывают подобные проблемы, но в менее очевидном виде. Обычно создатель является фактическим диктатором монеты, и может делать со своей монетой тоже, что и правительства и банки с традиционными валютами. Налоги (налог разработчика, налог на держателей и т.п.), инфлация, игнорирование недовольных (DAO, Proof-of-X изменения) часто возникают по воле создателей. Как держателю альт-коина вам приходиться не только доверять текущему лидеру, но и всем грядущим лидерам, в том что они не конфискуют ваши монеты, не обложат налогом, не подвергнут монету инфляции. Другими словами, альты и ICO ничем качественно не отличаются от обычных централизванных валют. С альтами и ICO вы не являетесь правителем ваших монет.

Это особенно явно на примере наибольшего “конкурента” Биткоина: Эфира. По любым меркам, Эфир – централизован. Было как минимум 5 хард-форков в которых пользователей принуждали переходить на новую версию. Они исключили несогласных c их решением по DAO. И теперь они даже говорят о введении платы(налога) за хранение. Централизованный контроль явно показан в значительном начальном премайне. Представьте себе 12 миллионов биткоинов в первом блоке….

Биткоин другой. Вероятно лучшей вещью, которую сделал Сатоши для Биткоина было его исчезновение. В ранние дни Биткоина Сатоши контролировал многое из того, что разрабатывалось на базе его протокола. Исчезнув, он обеспечил ситуацию в которой множество сторон, которые не обязательно в восторге друг от друга, имеют право голоса в том как система будет фунционировать дальше. Каждое изменение сети добровольно и обратно-совместимо, т.о. никто никого ни к чему не принуждает для хранения его собственных биткоинов. Иначе, нет ни единой точки уязвимости. Биткоин – это система в которой можно, буквально стереть континент с лица планеты, и ничего не измениться.

С Биткоином вы являетесь единоличным праителем ваших монет.

Для монеты очень благотворно отсутствие центральной сущности которая может влиять на используемость ваших монет. Это означает, что Биткоин – настояший дефицит (вместо временного или теоретического дефицита), и не измениться количественно без всеобщего на то согласия. Таким образом на сегодняшний момент Биткоин – это единственное хранилище ценности, которое обеспечено не просто каким-то там правительством, а фундаментальными законами Вечности.

Заключение

С таким изобилием альтов, читатель может задаться вопросом – а почему же индекс доминирования Биткоина падает? Начнем с того, что это не свосем адекватная метрика, т.к. легко подвержена манипуляциям. Также рынки подвержены шуму, пампам-дампам и реальная картина имеет смысл только на долгих промежутках времени.

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

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

Что нужно для того, чтобы сместить Биткоин с его доминирующего положения? Во-первых это такая же большая инновация которой является сам Биткоин, а как я покажу в следующей статье, это не каждую сотню лет происходит, или же фатальная ошибка в системе, как уже описывалось для Эфира, которая сделает Биткоин уязвимым. Изменение нескольких переменных в коде недостаточно для того, чтобы даже приблизиться к Биткоину (привет БиткоинАнлим, БиткоинХТ, БиткоинКэш, БиткоинГолд и т.д.). Даже добавление большой “фичи”, такой как абсолютная приватность, вполне вероятно недостаточна для захвата экосистемы Биткоина. Тем более что, с внедрением сегвита и лайтнинга, абсолютная приватность всё ближе.

Децентрализация также не является легко достижимой, как показал опыт альт-коинов, мало кому удалось направить монету по этому пути. Ибо даже сама идея того чтобы направить альт-коин по пути централизации является централизованной)

Биткоин явился прорывом. Его идея не является такой уж новой, он с нами дольше чем CRISPR, о котором я все не соберусь рассказать, и уходит своими корнями в 80ые года прошлого века, но это первое воплощение тех идей, которое получило столь широкое распространение. А нет оружия страшнее идей которая находит благодатную почву в умах миллионов, таких как я.

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

 

данная статься не носит рекомендательный характер, Я не являюсь финансовым советником или иным лицом, уполномоченным принимать инвестиционные решения. Множество ситуации при которых я несу какую-либо ответсвенность за решения принятые вами на основании данного текста, является пустым. Любая операция с сущностью, которую вы не понимаете до конца, несёт в себе значительные риски. Все решения вы принимаете сами. Будьте взрослыми мальчиками и девочками и делайте собственные исследования.

До скорого, котятки!!!

POS (proof-of-stake), или ошибка в ДНК.

TL;DR пруф-оф-стейк отстой, скам и развод для гуманитариев.

Основные определения

В последнее время всё больше нокойнеров, топят за т.н. пруф оф стейк. Остановимся подробнее на этом феномене Для чего понадобиться определить основные понятия.

Нокойнер (англ nocoiner) – это человек, который:

  • полагает что блокчейн >> биткоин
  • постоянно говорит о том, что биткоин – это первое поколение криптовалют, и будет лучший биткоин
  • верит в регулирование и фиатные валюты
  • постоянно вспоминает про тюлпаноманию, компанию южных морей, пузыри, пирамиды и медофа с понзи.
  • не то чтобы не написал ни одной строки кода, но даже не потрудился ознакомится с репозиторием хотя-бы биткоина. Это из серии “гуманитарию скажу в ответ: пакет не надо, карты-нет”.

Пруф оф стейк (англ – proof of stake) – это криптографическое доказательство владения определенной сущностью, при том что эта сущность обладает ещё каким-либо дополнительным свойством, например то что эта сущность не может быть передана кому-либо до выполнения специфических условий.  Т.е. в отличие от доказательства работы, которое отражает затраченную энергию, причем в совершенно термодинамическом смысле, доказательство владения отражает затраченный интерес, что как очевидно вещь совершенно изменчивая.

Критические системы и цена ошибки.

Теперь же определившись с понятиями рассмотрим корневую ошибку в ДНК у разработчиков Etherium Casper, Cardano Ouroboros и прочих и прочих. Возможный интерес разработчиков в PoSу вероятно продиктован желанием неограниченно скалировать(т.е. увеличивать) блокчейн и ложным представлением о том что PoW Биткоина “расточителен”.

За всей этой шумихой вокруг PoS остаётся незамеченным важный, критический важный аспект – а именно то, как PoS, поведёт в случае наихудшего возможного сценария. Например: значительная часть сети уходит в оффлайн, т.е. теряет связь с остальной сетью, или значительная часть приватных ключей украдена/куплена/потеряно.

Кто-то может подумать что такие события маловероятны и вряд-ли когда-либо произойдут, однако 1) они могут быть  не так редки как оцениваются 2) даже если вероятность события крайне мала, например 0.1%, это лишь означает, что оно всё равно произойдёт, просто чуть позже. Т.н. “Черные лебеди”

Проще говоря, Черные лебеди  – это маловероятные и трудно прогнозируемые события, которые имеют масштабные последствия. Иллюзия безопасности, основанная на том, что предыдущие 10-100-1000 лет было безопасно.

Когда мы имеем дело с системами, претендующими на глобальное влияние, такими как Биткоин, или иная крипто-монета, которая может в определенный момент стать основным носителем ценности, с миллионами предпринимателей и потребителей её использующими, мы просто не можем полагаться на малую вероятность, а создавать системы с учетом возможных Черных Лебедей. Когда мы говорим о таких системах, мы говорим о критический важных системах. Различают четыре основных типа таких систем:

  • для сохранности, нарушения в таких системах могут привести к потере жизни, тяжелому увечью, обширному повреждению окружающей среды. Примеры таких систем – управляющие системы на хим. производствах, атомных реакторах, автопилоты, и т.п.
  • для предназначения, нарушения в таких системах могут привести к потерям несопоставимо большим самой системы: система подачи топлива в ракетоносителе, система управления багажом в крупных аэропортах, и т.п.
  • для бизнеса, нарушения в таких системах ведут к прямому материальному и репутационному урону, часто выражаются в том что система уходит в состояние “перестала отвечать на запросы”.  К таким системам относятся банковские продукты, крупная интернет торговля, биржи, ERP-системы предприятий и т.п.
  • для информационной безопасности, в таких системах при нарушениях может быть утечка чувствительных данных. Тут всё ясно, такие системы вокруг сплошным плотным забором.

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

Приведу несколько примеров того, где инженерные просчеты на высочайшем уровне привели к катарстрофам

Катастрофа Конкорда в 2000 году

Конкорд, считавшийся одним из самых безопасных самолетов в мире, и один из двух пассажирских сверхзвуковых самолетов, находился в эксплуатации с 1976 года, взлетая с ВПП через 4 минуту после предыдущего самолёта порвал одну из покрышек шасси об отвалившеюся от того титановую створку  реверса двигателя (что не представляло для того опасности), и обрывок лопнувшей покрышки попал в топливный бак на крыле, вызвал в нём утечку, а другим обрывком покрышки повредило проводку топливных насосов, вызвав искрение. Вытекающий керосин воспламенился и включил систему пожаротушения двигателя, который тут-же был отключен экипажем, при этом второй двигатель на том же крыле уже не мог обеспечить тягу из-за окружавших его раскаленных продуктов горения и тоже отключился. И тут читатель должен себе представить Конкорд, огромный самолет у которого уже 75% ВПП позади и тяга есть только на одном крыле, т.к. второе крыло охвачено огнём, и двигатели там не тянут совсем, таки отрывается от полосы и взлетает. Шансы на выживание? 0.

Катастрофа Челленжера в 1986

NASA оценивало вероятность катастрофы в 1:100000,  однако позже всё оказалось совсем иначе и уже оценивалась как 1:100. Катастрофа развивалась подобно вышеописанной, только с тем отличием, что началась из-за недостаточной термической эластичности уплотнительного кольца, повлекшее за собой его повреждение в следствие необычайно низкой температуры (аж -1 по Цельсию!) , и дальше уже пошла цепь непредвиденных катастрофических последствий.

Чернобыль 1986

Истинной картины данной катастрофы, по всей видимости мы уже не узнаем никогда. Однако можно немного поразмыслить. Катастрофа началась за день до взрыва. Энергоблок планировали заглушить для планово-предупредительного ремонта. В штатном режиме в реакторе идёт контролируемая реакция распада, энергия которой нагревает прокачиваемую воду в перегретый пар, который вращает ротор электрогенератора. В ходе эксперимента планировалось использовать кинетическую энергию ротора для питания циркуляционных насосов.  Но как оказалось считать энергию вращения ещё не умели, и её не хватило. Реактор сначала заглушили, введя в него поглощающие стержни, и заглушив реактор примерно до 1% от номинальной мощности, чего было недостаточно для прокачки теплоносителя через него, и тогда его стали в ручном режиме разгонять, выводя поглощающие стержни, что при этом происходило в рабочем теле делящегося вещества – одной В. известно, но когда началось лавинообразное нарастание мощности реактора, его уже было не остановить и весь этот радиоактивный адок вырвался наружу.

Фукусима 2011

Спустя 25 лет после Чернобыля, в Японии, в которой землетрясения происходят регулярно, и которая к ним привычно случилось самое мощное из известных землетрясений в Японии, в 9 магнитуд. За ним последовало цунами, что и вызвало остановку реакторов и их перегрев и расплавление.

Как итог: когда речь идёт о критических системах глобального масштаба, даже самые невероятно-плохие сценарии надо держать в голове. Один из основных законов В. “если какая-то хрень может случиться, она обязательно случиться, когда её меньше всего ожидаешь”.

Критические события: PoW vs PoS.

А сейчас рассмотрим как POS и POW поведут себя в сценариях, вполне возможных и уже даже осуществляемых: фрагментация сети и неожиданный простой в течение отрезка времени.

Собственно, почему я сказал уже осуществляемых, чтобы вы не думали о малых, чисто умозрительных, вероятностях. В течение т.н. Арабской весны, турецкое правительство использовало BGP-перехват, для блокировки всего трафика  Twitter исходящего от своих же граждан. Китай имеет в своём распоряжении куда более сложные инструменты, такие как DPI, чтобы блокировать вообще весь специфический трафик в рамках Великого Китайского Брандмауэра (слово которое нам любезно предоставили мелкомягкие для подмены английского firewall).

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

Итак обратимся непосредственно к тому, как поведут себя оба протокола и PoW и PoS в таких сценариях:

Сценарий 1: Вся сеть вынужденно прекращает функционирование на некоторый отрезок времени. Потом перезагружается.

Не все регионы могут быть перезагружены одновременно и соответственно не смогут одновременно восстановить связь с остальной частью сети. Это приведет к тому, что будут регионы, в которых образуются свои, независимые блокчейны(далее цепи), которые начинаются с последнего общего блока, предшествовавшего падению сети, тем самым порождая множественные разделения основной цепи.

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

В случае PoW узлы сети самоорганизуются и будут стремится к единой цепи: а именно той в которой скоплено наибольшее количество доказательств работы. Да это будет больно, т.к. большинство независимых сетей будет отброшено, но это будет работать, причем это поведение сети будет полностью предсказуемым и ожидаемым.

В случае PoS, у узлов не будет ни малейшего понятия какая цепь является той самой, единственно корректной. В отличие от PoW, в PoS нет единого объективного (напомню, что объективной является реальность, материя, явления существующая в независимости от нашего знания) критерия того, какая из двух сравнимых сетей “настоящая”. Поведение после разделения в таком случае не является предопределенным и соответственно невозможно автоматизировать процесс слияния без введения дополнительных произвольных правил, что как раз и влечет за собой расширение потенциальных уязвимостей сети.  Разделение вообще может стать постоянным, поскольку некоторые протоколы делают невозможным возврат далеко назад.

Разработчики PoS-а вообще часто доходят до того, что надо “наказывать” узлы которые ведут себя не по правилам. Что они при этом забывают упомянуть, так это то что при разделении цепи, все узлы вели себя по правилам, но разделение цепи произошло.

Сценарий 2: Некоторые части сети фрагментируются от остальной сети.

Несложно догадаться что всё сведется к той же ситуации, что и в первом сценарии. Фрагменты будут продолжать функционировать как обычно, кроме того, что количество узлов с которыми они будут обмениваться, станет сильно меньше. Когда же полная сеть восстановиться появится путаница в том, какая же версия цепи настоящая.

Основное отличие от сценария 1 в том, что сценарий 2 куда более вероятен. Перенаправление трафика куда проще чем вывод всего фрагмента сети в отключенное состояние. Мы уже видели как это делается на примере Турции. Фрагменты сети могут быть произвольно малых размеров – хоть город, хоть район, не важно. Можно предположить, что с нашим бешеным принтером, и мировой банковской олигархией такое будет происходить сплошь и рядом.

Сценарий 3: Утраченные приватные ключи.

Распределение всего, в том числе и криптоактивов подчиняется универсальным закономерностям, и вполне резонно предположить, что 1% держателей PoS будет контролировать 50%+ всего оборота сети. Приватные ключи таких держателей могут быть похищены в результате глубоко эшелонированых атак, включающих похищения, пытки, вымогательство, шантаж и прочие радости.

Похищая ключи, вместо того чтобы занимать или покупать монеты на открытом рынке, атакующие избегают изменения их цены. Достаточно странно,что рассматривая данный вектор атаки на PoS цепь, разработчики полагают, что единственный путь получения большинства монет (а тем самым и получения контроля над сетью) это покупка на открытом рынке, что делает такую атаку невыполнимой. Кража приватных ключей в данном случае позволяет обходить эти трудности с куда меньшими затратами.

(как вариант, возможна покупка старых ключей у держателей потерявших интерес к данной PoS монете)

В случае PoW это эквивалентно получения контроля над 50%+ хеш-мощности сети.

Допустим, что кому-то удалось получить большую часть хеш-мощности сети, для Биткоина это не реально практический, но для других PoW-монет, может быть осуществимо. И что можно сделать с этой мощностью? Можно попробовать осуществлять двойные траты или переписать всю цепь. Но чтобы осуществить двойную трату, нужно потратить кучу средств, получение большой части мощности в данном случае – это только первый шаг. Даже несмотря на то как ужасно это звучит, получение кем-то 50%+ процентов хэш-мощности сети, сам протокол PoW продолжает работать как обычно, и только одна цепь может быть истинной (однако SPV, simplified payment verification, ноды можно обмануть, т.к. они не загружают блоки полностью и не хранят весь блокчейн, из-за этого крайне рекомендуется иметь хотя-бы одну полную ноду). Для того чтобы переписать весь блокчейн ещё требуется куда большая мощность чем мощность половины сети. В данном случае сами пользователи сети могут предпринять смену алгоритма и свести смысл этих усилий к эффективному нулю.

В любом случае, это крайне плохая ситуация. Но как мы видим, получение большей части хэш-мощности, это ещё полдела, надо постоянно продолжать вложения чтобы в итоге переписать цепь с нуля. Это можно рассматривать как двух-факторную защиту. В случае атаки, поведение сети предсказуемо, и не возникнет сомнений в том какая цепь является истинной. Такое поведение PoW сетей на текущий момент крайне недооценено, спасибо всяким так, не будем показывать пальцем, утверждающим де-биткоин проект спецслужб)

В тоже время PoS являет собой полную противоположность. Получение 50%+ ставки дает неограниченные возможности. Двойная трата становиться возможной без каких-либо дополнительных затрат. Также можно либо а) переписать историю если в протоколе нет чекпоинтов б)если они есть (привет Каспер, ссылка есть выше), то можно сделать несовместимые ответвления сети. Изменения алгоритма в PoS  не даёт в данном случае ничего, т.к. нет цены переключения, в виде например инвестиций в железо.

Вместо завершения, или почему PoS – ошибка ДНК разработчиков.

Подводя итог, PoW предоставляет два преимущества, когда речь идёт о безопасности сети:

  1. PoW защищает будущее: когда происходит разветвление сети, есть объективный механизм, автоматический разрезающий конфликты между воссоединившимися узлами, без человеческого вмешательства и без необходимости доверия третьей стороне-арбитру.
  2. PoW защищает прошлое: для того чтобы изменить ваш баланс, надо не только получить 50%+ мощности, но и затратить всю ту мощность что уже была затрачена на создание блокчейна.

PoS  не предлагает ни того, ни другого. PoS-фаны могут спекулировать на тему того, что чекпоинты решают эти проблемы, однако они лишь переносят их в другую плоскость. Чекпоинты – это централизованное решение, что открывает лишь ещё одну выгребную яму.

(в теории можно реализовать чекпоинты децентрализовано, но это лишь приведет к проблемам которые потребуют централизованных решений, об этом в другой раз, что делает чекпоинты эффективно централизованным решением)


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

Протоколы PoS построены на неверных и наивных представлениях, которые не принимают во внимание худшие возможные сценарии. PoS – это шаг в неправильном направлении: вместо поднятия планки качества, её снижение ради фальшивых бенефиций. Я называю это ошибкой в ДНК, т.е. в самом основании любого начинания.

Будущее биткоина

В данном посте речь пойдет не про курс биткоина к презренной зеленой бумажке, а о том что ожидает биткоин в технологическом плане в ближайшем будущем.

Не так давно биткоин преодолел отметку в 10 тыс, долларов, после чего провёл пару днй в плоской коррекции, нарисовав две не очень приятные для говядины свечки подряд:

После чего, ракетой полетел дальше, и выше и выше…

Поскольку сейчас можно услышать уже и бабушек в сбербанках упоминающих биткоин, и по федеральным каналам стали попискивать, то критический важно понимать, что на графике приведенном выше вы скорее всего потеряете. Соблазн зашортить на всю котлету на исторических хаях очень велик. И вместо того, чтобы заниматься или примериваться к спекуляциям, лучше немного осведомится о том, что ждет биток в технологическом плане. Как сказал Уоррен Баффет, “инвестиции не рискованны, риск начинается тогда, когда вы не понимаете что вы делаете”.

Поскольку биткоин и лежащая в основе технология блокчейн относительно новы, например они куда свежее чем например СТО или ядрена бомба, или даже полевой транзистор, но уже всё таки постарше чем такие умопомрачительные вещи как CRISPR (про него в другой раз), попытка проникнуть в суть этой технологии может показаться пугающе сложной. Это статья написана для того, чтобы осветить проблему масштабирования, которая в настоящий момент стоит перед биткоином, и чего можно ожидать в ближайшем будущем для ее решения.

Данный пост написан с оглядкой на то, что далеко не у всех есть некий технологический бэкграунд, и я не рассчитываю на то, что вы понимаете ООП, и прочие. Тем не менее базовое понятие, что такое блокчейн и биткоин крайне желательно. Об этом можно почитать и посмотреть здесь. Итак, давайте приступать.

Масштабируемость биткоина, или почему #NO2X

Когда Биткоин был впервые введен в оборот, его полумифический создатель Сатоши Накамото, описал Биткойн в своём вайтпепере как “исключительно пир-ту-пир версию электронной наличности, которая позволит осуществлять прямой обмен между участниками сети, без участия какого-либо централизованного института посередине”. Привед, центробанки!

Одной из фундаментальных ценностей биткоина была почти мгновенная и безопасная транзакция от пользователя к пользователю (пир-ту-пир). Сейчас, как никогда ранее, Биткоин становиться превалирующей мировой крипто-валютой, с ростом за последний год более чем в 12 раз.

Такой бурный рост породил помимо огромного числа “онолитегов”, верещащих про тюльпаны и прочие пузыри, еще и рост количества транзакций в сети, вплоть до 400000 и более в день.

Уже из одного этого графика становится очевидна основная проблема Биткоина – что такое, пусть миллион транзакций в сутки в глобальном масштабе – капля в море, та же Visa в сутки осуществляет 150+ миллионов, т.е. около 1600 в секунду. Теперь вспомним, что все транзакции в сети Биткоина записываются в блоки размером около 1 мегабайта, т.е. миллиона байт. Блоки идут +- раз в 10 минут, т.е. 600*1600=960000, т.е. на одну транзакцию должно приходится чуть больше байта, чтобы обеспечить пропускную способность визы. Это нереально, т.к. в транзакцию входит адрес отправителя, получателя, количество битков, временной отпечаток, нонс, хэш предыдущего блока. Ну никак. Небольшая инфографика о том, что на самом деле происходит при транзакции в сети биткоина:

Т.е. как вы видите, без майнеров сеть невозможна, ноды не майнят, они лишь регистрируют транзакции и вносят их в блокчейн, а подтверждают эти транзакции – майнеры. Тут перенесёмся в далекое будущее, когда последний биткоин будет добыт, их же ограниченное количество, то теперь инициатива майнеров будет регулироваться стоимостью транзакций в сети, выше плата – быстрее транзакция. Вот именно это сейчас и происходит. Теперь вернёмся в настоящее и посмотрим как это работает сейчас в числах:

  • медиана размера транзакции находится в районе 250 байт(именно медиана, потому что мы знаем что у 9 медсестёр и одного игорюши сечина средняя зп огого какая)
  • Как уже упоминалось, размер блока около 1 мб.
  • т.е. в блоке около 4000 транзакций
  • время блока – около 10 минут
  • т.е. мы получаем 6,6(6) транзакций в секунду.  маловато.

Транзакции которые не вошли в блок попадают в так называемый mempool который есть на каждой ноде, где и находятся до попадания в блок. И вот у нас в мемпуле сидит тысяч 100 транзакций ждущих подтверждения. И как майнерам выбрать какую именно подтверждать? Правильно, с помощью платы за транзакцию. Обычно она исчисляется с сатоши(10 миллиардных биткоина) за байт, и может доходить до 1000 сатоши/байт. Еще немного математики:  0.00000001 * 1000 * 250 = 0.0025 биткоина, т.е. в моменте 40 долларов. Дорого. Здесь следует сделать оговорку, что это плоская плата, будете переводить 0.01 биткоина или 10 или 100 – не важно, плата будет одинаковой.

Теперь представим что Саша хочет послать Маше 10 баксов – т.е. он либо заплатит еще 10 за транзакцию, либо будет ждать несколько десятков блоков.

Одним из предлагаемых решений был так называемый SegWit2x, который предполагал увеличение блока в два раза, каждый раз когда надо. По небольшому размышлению становится понятно, что это – путь в никуда. пусть 10 транзакций в секунду до 100000 в секунду даст нам увеличение блока в 10 тысяч раз, т.е. до 10 гб. Как такие блоки передавать по сети? я уж не говорю что хранить такой блокчейн можно будет только на очень больших массивах жестких дисков или в облаке, что приведет к предельной концентрации корневых нод и всей сети. Но есть и другие пути…

Segregated Witness (SegWit)

Или разделённое свидетельство. Оно уже было имплементировано в сеть, еще в августе. Суть в том что размер транзакции уменьшается, тем самым позволяя большему количеству транзакции войти в блок. Сегвит это мягкая вилка (soft fork), т.е. полностью совместимая с предудущими версиями блоков.

Каждая транзакция от отправителя, содержит подпись отправителя, или говоря иначе свидетельство. Это свидетельство вообще говоря не является необходимым для подтверждения транзакции, поэтому происходит разделение. Если такая транзакция попадает на ноду еще не поддерживающую сегвит, нода просто удаляет свидетельство этой транзакции, уменьшая размер транзакции и экономя место в блоке. Кроме того, нода больше не может изменять данные в свидетельстве, что было возможно раньше. Это позволяет  ввести много-уровневые решения, о которых речь пойдёт ниже.

Более того, сегвит изменяет определение размера транзакции: вместо того чтобы исчислять его в байтах, ей присваивается вес, вес блока составляет 4000. До-сегвитовская транзакция имеет вес 4, а поддерживающая сегвит 0.25, что позволяет поместить в блок примерно в 16 раз больше транзакций при увеличении размера блока максимум до 2 мб. Однако для того, чтобы полностью перевести всю сеть биткоина на сегвит, необходимо чтобы все корневые узлы и все кошельки внедрили поддержку сегвита, что пока идёт не очень быстро (в данном случае уместна аналогия с апгрейдом с винХП на вин7, против перехода с винХП на хромОсь в случае харфорка сегвитХ2), и к текущему моменту только 12% всех транзакций идут в сегвит формате.

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

Слоёные решения

Дя, я долго подбирал русский аналог для multi-layered и многоуровневое решение как то не отражает сути.

Как уже описывал выше, покупка чашки кофе за биткоины может оказаться не самой удачной идей (как впрочем и используя банковскую карту), и цена транзакции может быть выше покупки и время подтверждения в лучшем случае 10 минут – в общем не-не-не.

Протокол Lightning Network – одно из текущих решений, находящихся в разработке, от которого ожидается решение проблемы, или во всяком случае значительное её смягчение. Эта сеть состоит из двух дополнительных слоёв, которые позволяют пользователям создавать прямые каналы между собой, фактический позволяя осуществлять неограниченное количество транзакций между собой практический мгновенно.  Так так, скажет внимательные читатель, вот мы тут уединимся и наплодим целую кучу биткоинов, которые не в сети, а потом…. А вот потом не будет, и сейчас разберем каким образом все предполагается осуществлять.

Второй слой

Пользователь присоединяется к сети второго слоя производя транзакцию в основной блокчейн, в которой он декларирует количество биткоинов которое он собирается использовать в сети второго слоя. После чего пользователь присоединяется к группе связанных между собой узлов, называемых фабриками каналов (channel factories). Этот канал по сути представляет собой группу пользователей, заинтересованных в проведении между собой большого количества мелких транзакций (вот же ж мечта состоятельного разумного человека – раз в месяц выделяет сотую биточка на кофе, сотую на вино и т.д. присоединяясь к соответствующим каналам, идеальное планирование расходов!). После чего фабрики каналов уже на третьем слое делают возможным неограниченное количество транзакций между участниками, но в рамках декларированного количества биткоинов.

lightning network channel structure

Третий слой

Каналы микроплатежей создаются на третьем уровне для обеспечения расчетов между любыми двумя участниками (в картинке наверху их 3 посколку участников три, простейгая комбинаторика, 4 участника – окей, 6, n участников – n*(n-1)/2, на два делим из-за того что сочетания AB = BA в нашем случае). Поскольку на третьем уровне основной блокчейн уже не присутствует, он не может быть использован для подтверждения. Вместо этого используются смарт-контракты (умные контракты, в отличие от тех к которым мы привыкли, они не статичны во времени и не могут быть изменены в одностороннем порядке, как мы это любим), такие как мультиподпись, означающая адрес который может быть подписан несколькими участниками для перемещения фондов, или же хэшированные ограниченные по времени контракты, представляющие собой криптографический подписанный автоматический контракт который замораживает фонды на определенное заранее время, и коль скоро у вас в кармане нет квантового компьютера который сломает криптографическую подпись.

Рассмотрим на примере, как работает микротранзакция в лаитнинг сети:

  1. Маша хочет зарезервировать 1 биткоин для расчетов с Сашей. Она декларирует этот 1 биткоин в передающую транзакцию в блокчейн. Это означает, что этот 1 биткоин зарезервирован за адресом с мультиподписью, который может быть освобожден если обе стороны решат прекратить действие этого адреса. Сам адрес защищен хэшированным, ограниченным по времени контрактом, который можно интерпретировать так: “У Маши есть 1 биткоин, у Саши есть 0 биткойнов, которые будут освобождены через сутки”. Это означает, что у Маши есть на 1 биткоин меньше на сутки, после чего он вернется к Маше с соответствующей записью в блокчейн (если конечно Маша не решит не обламывать Сашу).
  2. Маша, спустя 4 часа, всё таки решает, что ну на биток Саша не тянет, но на 0.1 вполне. Теперь контракт изменяется на “У Маши есть 0.9 биткоина, у Саши есть 0.1 биткоина, которые будут освобождены через 18 часов”.
  3. Полные сутки проходят и эта передающая транзакция закрывается, и финальный контракт содержащий балансы Саши и Маши отправляется в блокчейн. Если Саша и Маша хотят продолжать расчеты дальше, то они могут продлить действие контракта сколь им угодно. Если один из них захочет прекратить действие досрочно – то он\она выходит из передающий транзакции, что влечет немедленную публикацию контракта в блокчейн с актуальными на момент выхода балансами.

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

Имплементация лаитнинг сети весьма сложна, и полностью её понять практический с нуля невозможно, но для конечного пользователя это и не важно: слыхали про ПеГеПе? ака pretty good privacy, в ранних имплементациях это было клево, вы полторы минуты стучите рандомно по клавиатуре, у вас создаётся случайный ключ, вы этим ключом шифруете свое сообщение, и шифруете этот ключ публичным ключом адресата, и отправляете шифрованное сообщение и шифрованный ключ, получатель дешифрует ключ своим приватным ключом, и с помощью полученного ключа, наконец расшифровывает ваше сообщение? уже мозг закипел? окей, а если я теперь скажу что тот же самый пгп используется в телеграмме\ватсапе\и т.д. и вы этого даже не замечаете)) Тоже самое произойдёт с лаитнинг сетью со временем.

Но вернёмся к нашим слоям над блокчейном. В идеале пользователь не будет создавать передающие транзакции во втором слое слишком часто. Люди рабы своих привычек, и есть регулярные платежи которые постоянно повторяются с одними и теми же адресатами. И будут жить эти передающие каналы долго, дни, месяцы, годы…

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

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

Шнорр подписи (Schnorr Signatures)

Когда пользователь посылает транзакцию в биткоинах, входные данные транзакции (количество, что вы посылаете) вычисляется просто изымая из блокчейна данные об общем количестве биткоинов, которые были у вас до сих пор не потраченными. Для примера:

  • Начиная с пустого кошелька, Я получаю 1 биткоин в транзакции №1, потом в отдельной транзакции №2 Я получаю ещё 1 биткоин (яхууу!)
  • Теперь я хочу отправить 2 биткоина, у этой транзакции №3, будет 2 входящие транзакции №1 и №2

В текущей сети, каждая транзакция требует своей подписи. Это увеличивает размер транзакции и тем самым поднимая стоимость транзакции.

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

текущая и шнорр подпись

Сверх того, Шнорр-подписи могут помочь блокчейну биткоина в плане анонимности, дополняя CoinJunction транзакции. CoinJunction, как следует из названия – объединение\соединение монет, является методом анонимизации биткоина путем смешения входящих транзакции от множества людей прежде чем отправлять их дальше. Поскольку происходит смешение из множества источников, требуется больше подписей, тем самым опять же делая транзакцию неоправданно дорогой. Здесь Шнорр-подпись может объединить все входящие транзакции в одну подпись, тем самым снижая цену транзакции и побуждая больше использовать CoinJunction.

И еще сверх этого, Шнорр позволяет вводить мультиподпись по цене одной. Не важно сколько подписей нужно  – они все объединяются в одну, Шнорр-подпись.

Шнорр-подписи стали возможны только с внедрением СегВита, поскольку данные подписи не могут быть изменены третьими лицами, они могут быть объединены в одну Шорр-подпись.

MimbleWimble

MimbleWimble – это радикальное, но необыкновенно мощное предложение по улучшению биткоина, которое было сделано анонимно еще в июле 2016.

Названное по имени проклятия из Гарри Поттера, которое заставляло проклятого замолчать (silence же!, ака сало, чертовы нубы блин), МW нацелена на то, чтобы полностью удалить транзакции из блоков. Т.е. оставить в транзакции только входящее количество, исходящее количество и подпись, при том что подпись может быть расшифрована только получателем, соответственно верификация транзакции остается на совести получателя  – не подтвердил, не получил, ок… Я один чую здесь запах пе-ге-пе?

С помощью этого расширения, блоки состоят только из списка входящих транзакций, списка исходящих транзакций и зашифрованных подписей. Блоки могут быть связаны между собой без каких-либо проблем, поскольку количество на входе и выходе из блока не шифрованы. Узлам (нодам) остаётся только проверить, что разница между входом и выходом нуль, а подписи останутся зашифрованными.

Удаление полных данных о транзакции ведёт к существенному снижению объема текущего блокчейна и делает невозможным отслеживание транзакций (просто мечта криптопанков, и кошмар властей и хозяев денег). Более того, с блоками содержащими только не истраченные биткоины (т.е. те что поступили на адрес но никуда оттуда еще не ушли), нодам нужно будет отслеживать только неистраченное количество биткоинов, вместо того чтобы хранить всю историю транзакций, что приведет к огромному росту производительности сети (вспомним что только 3% из всех биткоинов в обороте, остальные лежат в холодную где-то).

Математические детали MW явно не попадают в предмет рассмотрения этой статьи. Однако внедрение, пусть и дающее очевидные преимущества, требует отказа от алгоритма SHA-256, на который опирается вся экосистема биткоина, делая внедрение не реализуемым.

Однако, существуют предложения по имплементации MW в виде так называемого sidechain – стороннего блокчейна с взаимооднозначным соответствием с основным блокчейном биткоина. Эта связь чем то похожа на часовой механизм, или цепную передачу. Эта связь позволит переносить ценность из блокчейна биткоина в блокчейн MW, проводить в ней приватные и мгновенные(во всяком случае значительно более шустрые транзакции), и возвращать ценность в биткоинах в основной блокчейн.

связанная цепь

По факту уже есть группа разработчиков в процессе разработки отдельной криптовалюты на основе MimbleWimble – GRIN; недавно запущенной в тестовом режиме и готовящейся к полноценному запуску в скором будущем (интересно каков будет пре-майн и какое будет ICO:).

Rootstock

Rootstock по какой-то непостижимой причине является одним из наименее обсуждаемых улучшений, но тем не менее одним из самых многообещающих. Rootstock описывают как “первая платформа с открытым исходным кодом для умных контрактов с взаимооднозначным соответствием с Биткоином, которая также позволяет майнерам получать дополнительную награду при помощи совмещенного майнига (одновременная добыча двух монет без какого-либо ущерба для добычи основной, не путать с обычным дуал-майнингом, тут второй алгоритм использует данные первого), позволяя им активно участвовать в РЕВОЛЮЦИИ в умных контрактах”. Устал я от всевозможных революционеров, правда ж… доколе?)))

Во многом походя на MimbleWimble, Rootstock разрабатывается как сайдчейн. Его фундаментальная ценность заключается в фокусе на умных контрактах. Rootstock нацелен на то чтобы стать платформой для умных контрактов полной по Тьюрингу(т.е. платформой на которой можно запрограммировать любую вычислимую функцию, пример функции не-вычислимой очень прост: функция равная 0, если в записи числа Pi нет подряд 4х нулей, и равной 1 если есть, поскольку число нулей которое мы может попросить произвольно, а Pi иррационально, что означает что она содержит все возможные комбинации цифр подряд. Для нас эта функция всегда равна 1, для машины всегда 0, потому что за конечное время PI  не вычислить). При этом эта платформа сможет исполнять умные контракты на базе эфира, и разработанные на собственной платформе.

Разработчики Rootstock рассчитывают имплементировать  обширный функционал умных контрактов, сохраняя доминирующую пользовательскую базу пользователей биткоина, с помощью сайдчейна с взаимооднозначным соответствием с блокчейном биткоина. Также она создаётся с расчетом на уже существующую вычислительную мощность сети биткоина, тем самым избегая необходимости отдельно защищать свой блокчейн. Также предполагается внедрить собственный механизм многослойности под названием Lumino, с помощью которого они обещают 20000 транзакций в секунду.

Rootstock планируют запуск к концу 2017 года, т.е. уже практический завтра! Судя по всему платформа прекрасно дополняет блокчейн биткоина, и если все что они обещают смогут реализовать это добавит огромный пласт функционала в сеть биткоина, тем самым увеличив его ценность.


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

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

Никоим образом эта статья не освещает всё что происходит в области блокчейна сейчас. Если у вас есть что добавить – оставляете в комментариях.

Данная статья является дополненным и расширенным переводом этой.

Если вам интересно углублять своё понимание биткоина дальше, то вот несколько ссылок:

И конечно можно купить мне пиво или кофе:)

BTC: 1JMRpXEB9kCtpegdFpe6YEx4JEafDxZRTq

ETH: 0xbB7a62236948e12097523EA9dAD489B37BCd2A2F

>:^_^:<

Почему биткоин не пирамида?

Данный пост, является продолжением “всей истины о майиниге“. Наверное, не секрет, что для меня вопрос “почему?” глубоко омерзителен, и куда более мне симпатична форма “зачем?”, при всей тенденциозности заголовков, Я оставляю себе роскошь предположения, что человек разумный сможет из этого потока сознания извлечь разумное для себя.
лирическое оступление: если бы вы в момент предыдущего поста, купили биткоин, а 1 ноября биток можно было купить по 6800$, сегодня их можно продать по 9500$ легко, скромно предполагаю что переводить в годовые не стоит…

Почему биткоин не пирамида?!

Те, кто проводят аналогии с тюльпаноманией, компанией южных морей, ГКО и прочим оперируют лишь вершиной айсберга. Смотрят в книжку, видят фишку – график похож – ололо, тоже самое… Скажем так, это подход не совсем одноклеточных существ, но явно не венца творения. Когда люди, ворочающие миллионами долларов, рассказывают как они завели на очередную биржу 5 битков(!!!) и поторговали две недели, и стали экспертами в криптовалюте — это ничего кроме смеха не вызывает, по крайней мере у меня.

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

Аргумент за нумером два, биткоин использовали для наркоторговли, оборота оружия, и т.п…. Окай, давайте посчитаем сколько триллионов долларов провернулись на наркоте/оружии/работорговли (да-да, сидишь в офисе на з/п РАБотничег^^? ), не получается ? ога.

Аргумент за нумером три: биткоин обеспечивается исключительно верой в рост. Окей, доллар так уже 46 лет живёт. Единственная естественная встроенная функция биткоина – это среда расчётов. Всё. Вот именно этим он и обеспечен. У золота есть множество функций: монетарная, расчётная, ювелирная, сберегательная, и т.п. У биткоина функция одна — расчётная. Те кто говорят что это хранилище ценности, не договаривают, это хранилище ценности универсальной, не-блокируемой, не-подделываемой, устойчивой среды расчётов. Всё.

Аргумент за нумер четыре: биткоин не платит дивиденды. Окей приехали, дивиденд, это не тот-же самый ссудный процент, который позволю себе напомнить, был запрещён большую часть н.э. Покупая акцию вы получаете право на часть прибыли компании, буддисский намёк – в сети биткоина тоже такое возможно. Пока не добыт последний биток есть источник новых биткоинов, потом все биткоины будут  предоставятся также, за подтверждения транзакций, вот и всё.