Show Posts
|
Pages: [1]
|
По следам вот этой статьи где идет пропаганда POS в связи предстоящим переходом Эфира на POS. Если кратко там говорится почему ETH и POS лучше Биткоина и один из аргументов в том, что в POW уже давно не было прорывных исследований... Я уже 5 лет занимаюсь исследованиями протоколов и думаю нашел такую прорывную технологию, которая использует связку POW + Memory Цель данного консенсуса - ускорить обработку транзакций и блоков до уровня POS/DPOS консенсусов, но при этом сохранить уровень надежности и децентрализации на уровне POW консенсуса. Как известно недостатком POS является зависимость цепочки от внутренних переменных блокчейна, следствием чего является дешевизна переписывания истории транзакций. В то же время в POW цепочка зависит от потраченной энергии, а значит изменение истории стоит дорого. Дополнительным бонусом консенсуса PoM является уравниванием между собой оборудования майнинга, основанного на GPU и ASIC, а также неограниченно масштабируемый шардинг.
Для этого мы предлагаем помимо вычисления хэшей еще использовать память, но в отличие от других похожих алгоритмов (например Ethash), в нашем алгоритме память не ограничивает, а улучшает работу целевого оборудования. Это можно осуществить за счет того, что при подборе хеша будет использоваться не целочисленный nonce, а определенное значение, трудоемкое для вычисления - например, вычисленное по алгоритму SHA-3, и будет допущено повторное применение этого значения в течении некоторого времени для подбора лучшего хэша блока. Таким образом будет выгоднее сохранять эти значения в памяти, чем вычислять заново. Детально в этом WPПлюсы: -Высокая скорость транзакций (не ниже любой POS/DPOS) -Остается децентрализация уровня PoW (так как нужно физическое оборудование - GPU) и атаки стоят реальных денег -Появляется возможность бесконечной масштабируемости сети из блокчейнов с суммарным tps 1M tps и выше P.S. По следам обсуждения хочется написать статью опровержения
|
|
|
Всем привет! Появилась сильная идея объединить существующие или вновь создаваемые блокчейны под одним зонтичным протоколом - единым шардингом. Техническая суть идеи описана вот тут. Если кратко: то используется совместный майнинг и кросс-шардинговые транзакции (встроенные атомарные свопы). Все объединяющиеся с друг другом блокчейны - это самостоятельные цепочки с точки зрения правил майнинга, эмиссии и ценности монеты. Справка: Если блокчейны создается по единому протоколу совместного шардинга, то фактически они оказываются в едином информационном пространстве, но не мешают друг другу (т.е. производительность каждого не ухудшается). Это происходит из-за того что они являются кусочками целого. Транзакции и блоки создаются не на каждом компьютере (ноде), а только на части, т.е. происходит распределение вычислений между участниками сети. Это основной принцип шардинга.
Почему это интересно: Много блокчейнов имеют возможность выпуска своего токена, но постоянно находятся люди которые хотят создать свой вариант блокчейна (особенно это актуально для пользователей данного форума). Почти каждый хочет создать свой правильный вариант распределения начальной эмиссии, правильной децентрализации, нужным названием, вобщем со своим блэкджеком. 1) Когда свой блокчейн создан, то нужно решать проблемы с ликвидностью: создавать платежные каналы для своей DEX, проходить долгий путь листинга на биржах. В случае зонтичного шардинга - достаточно одной валюте залиститься на крупных биржах, а все остальные получают доступ к ликвидности автоматом через кросс-шардинговые транзакции. 2) Общая производительность всей сети может достигать миллиона транзакций в секунду. Это большой маркетинговый плюс для блокчейна. Как прикрутить к существующим блокчейнам? 1) Например к Биткоину. Фактически мы создаем новый протокол. Перейдет ли биткоин на него в ближайшие 100... 2) Для малоизвестных или вновь создаваемых блокчейнов наверно это более реально... Будет ли эта идея (при условии 100% технической возможности) объединяющим людей фактором и создаст ли она новый тренд развития блокчейна в мире?
|
|
|
Всем привет. Мы в Тере создали фонд, который будет вознаграждать людей, пишущих качественные статьи про проект TERA. Пополнение резервов фонда будет осуществляться постоянно. Валюта выплат — Bitcoin (BTC). Текущий баланс резервов будет доступен всем желающим по адресу 191875. На текущий момент резервы составляют 0.250 BTC. Условия проекта: — Контент должен иметь популярность и должен быть опубликован на Reddit или Medium. — Статья должна содержать не менее 3000 символов (без пробелов). — Содержимое статьи должно быть абсолютно уникальным, нести информативность и вызывать интерес целевой аудитории. Блог статей по Тере: https://terafoundation.org/blog/— Вознаграждение в размере от 50 до 100 USD (в криптовалютном эквиваленте) в зависимости от качества и будет выплачиваться по итогу проверки раз в неделю (при условии наличия резервов на счёте фонда - 191875). — Получая эти деньги, авторы обязуются не удалять эту статью из публичного места размещения Внимание: этот фонд не оплачивает создание и размещение статей, он служит для премирования, при условии НАЛИЧИЯ СРЕДСТВ НА БАЛАНСЕ ФОНДА. Вы можете принять участие в пополнении фонда, и ваш голос будет принят во внимание при назначении награды. Источник информации: - документация на сайте https://terafoundation.org- мои посты на этом форуме - задавайте любые вопросы здесь или в Телеграме (@progr76) я подробно на них отвечу... - вы можете взять любое актуальное криптовалютное событие или новость и поразмышлять вместе со мной как это сделано в Тере и что будет дальше... После написания статьи отправляйте ссылку на нее в телеграм @progr76 или в Дискорд канал: https://discord.gg/x6uB6gyP.S. Авторы, умеющие писать качественный текст, вы можете связаться с нашим менеджером, он курирует создание статей, оплата обговаривается с ним отдельно (фонд не оплачивает статьи - он их вознаграждает сверху). Телеграм @progr76 UPD 24.08.2019Если у вас есть ранее опубликованные статьи на тему крипты/блокчейна и вы хотите написать статью по Тере, то я вам могу отправить приветственные монеты (примерно 20-50 USD) для того чтобы вы могли лучше ознакомиться с проектом и найти тему статьи. Для этого: 1 Пришлите мне ссылки на ваши статьи 2 Пришлите номер(ИД) вашего счета Теры (создать счет можно например в веб кошельке https://terawallet.org)
|
|
|
В команду проекта Tera требуется веб-мастер/веб-дизайнер на постоянную работу (по удаленке). Задача развитие сайта terafoundation.org (наполнение контентом/иллюстрации). Оплата ежемесячно в BTC по курсу на день перечисления. Подробности в телеграм @progr76 Дополнение от 09.02.19 - в обязанности будет еще входить техническое писательство. Описание программистских поделок художественным языком. Например, у нас есть уже созданные Дапы, про интересные из них нужно написать на сайте. Вот их список: http://dappsgate.com/web-wallet.html#TabDappsОтветы на вопросы:>>Что конкретно по дизайну нужно делать? Промо материалы? Сайт на английском. Направленность чисто академическая. Наполнение контентом по Тере. Задача донести как работает блокчейн, какие новости от команды разработчиков. Цель - показать новые технологии. Сейчас уже достаточно материала по Тере, но он в основном написан в виде гугл доков. Нужно все систематизировать и выложить на сайт. Также нужно будет создать русскоязычные страницы (а потом по мере успешного поиска переводчиков - тоже требуются) - остальные языки. >>Есть контент на английском, его нужно выложить на сайт, под словом систематизировать что подразумевается? Сделать понятный сайт (не хуже чем у других), можно за пример взять другие сайты например блокчейн Lisk (ссылку не помню) >>Картинки, фото нужно покупать на стоках, за чей счет, или их нужно рисовать, какая сложность? Схемы, инфографики, или лица людей? Схемы, думаю рисовать - ибо все они будут уникальны - технология блокчейна наша, нигде в мире нет такой. >>Конкретно какое ТЗ?Нужен человек на постоянку, без ТЗ. Сам понимаешь что ТЗ будет каждый день новое... Посмотри WP, нужно для начала будет его отобразить на сайте: рус: https://docs.google.com/document/d/1B6_qlAp2xs4aHkqOwyvRMCDJTjgeNiOJiGpIeT0VAzY/edit?usp=sharingeng: https://docs.google.com/document/d/1EaqFg1ncIxsrNE2M9xJOSzQu8z3ANwMuNyTX0z_A1ow/edit?usp=sharingP.S. Tera - это самый быстрый децентрализованный блокчейн в мире.
|
|
|
Интернет-магазин на блокчейнеМы много говорили про внедрение блокчейна в реальной жизни. Теперь время пришло, поехали! Что это такое. Это децентрализованное приложение, которое работает на блокчейне поддерживающий ДАпы. Доступно в тонком кошельках, в полной ноде, а также через обычный браузер - по обычной ссылке (через шлюзы майнеров и других энтузиастов). Для владельца магазина есть специальный кабинет:-С настройками и загрузкой товара из популярного формата Яндекс-Маркета (xml-feed). -С просмотром полученных заказов -Различные действия: подтверждения заказа, отмена, петиция к эскроу (когда товар уже отправлен) Для покупателя это обычный интернет-магазин с функциями:-Просмотр и подбор товара -Изменение корзины, отправка заказа -Просмотр статуса ранее сделанного заказа -Различные действия по заказу (отмена не подтвержденного, подтверждение получения, петиция к эскроу) Деньги покупателя при заказе не передаются сразу магазину, а резервируются на его счету. Плюсы для продавца:Владельцу магазина не требуется создавать свой сайт и платить за хостинг (по сути он создает вечный интернет-магазин) Стоимость создания магазина минимальна (близка к нулю, оплата только за обучение консультантам - партнерам которых я ищу) Плюс для покупателя:Если покупатель делает предоплату, то деньги не передаются продавцу до тех пор пока он не подтвердит получение (они остаются зарезервированными на счете покупателя). Ищу партнеров, которые будут продавать услуги по внедрению такого магазина. P.S. Сейчас запущен первый магазин с игрушками для детей: https://terafoundation.org/dapp/35Исходный код смарт-контакта написан на javascript
|
|
|
Всем привет. Нашему проекту требуется дизайн-сайта. Награда 1 млн Тера (что по курсу встроенной DEX биржи составляет примерно от 2000 до 6500 долларов). Вот официальная часть объявления https://discord.gg/RrYSxz: Я отправил на счет 186573 сумму в Терах (1,1 миллиона). Это награда за дизайн сайта, который понравится сообществу. Вы можете договориться работать по частям друг с другом. Главное условие-оплата будет произведена после утверждения проекта сообществом. 1 победитель получит 1 миллион 2 Если у вас хороший дизайн, вы заняли 2 место я заплачу 100к Тера за участие. Работы должны быть показаны на канале https://discord.gg/RrYSxz. Срок проведения конкурса - до конца месяца. P.S. Если кратко, то проект TERA - это блокчейн 4-го поколения. Будущий сайт: http://terafoundation.org - сейчас там только логотип и ссылки на другие ресурсы проекта.
|
|
|
Всем привет. С некоторых пор (с конца октября) на Тере можно писать смарт-контракты. Язык смарт-контрактов javascript. Среда исполнения - node.jsВ блокчейне Тера идея смарт-контрактов (далее по тексту смарты) была развита: 1. Код пишется на просто javascript и сразу отправляется в сеть без каких-либо манипуляций с компилированием кода или утилитами командной строки - достаточно буквально пары кликов мышки. 2. Можно писать смарты как шаблоны (библиотеки). Т.е. написав один раз им могут пользоваться все люди (создавая собственные экземпляры). Для этого человек просто прикрепляет его к своему счету (в Тере деньги хранятся на счетах по аналогии с расчетными счетами банка) и после этого управление деньгами контролируется кодом блокчейна. Смарт можно отвязать от счета, но при условии что он это разрешает. 3. Добавлена клиентская визуальная часть Пример простого смарт-контракта под именем Promise, логика которого описана тут: https://bitcointalk.org/index.php?topic=4711054.msg47790792#msg47790792 function CheckPermission() { if(context.Account.Num!==context.FromNum) throw "Access is allowed only from your own account."; }
function OnGet() { if(context.Description==="UNFREEZE") UnFreeze(); }
function OnSend() { CheckFreeze(); }
function OnDeleteSmart() { CheckFreeze(); }
function CheckFreeze() { var State=ReadState(context.Account.Num); if(State.Freeze) throw "Account is frozen"; }
"public" function Freeze(Params) { CheckPermission(); CheckFreeze(0);
var State=ReadState(context.Account.Num); State.Freeze=1; State.UnFreezeNum=Params.UnFreezeNum;
State.DescBlock=context.BlockNum; State.DescTr=context.TrNum; WriteState(State);
Event("Freeze"); }
"public" function UnFreeze(Params) { var State=ReadState(context.Account.Num); if(!State.Freeze) throw "Account already unfreeze"; if(context.FromNum===State.UnFreezeNum || context.FromNum===context.Smart.Owner) { State.UnFreezeNum=context.FromNum; State.Freeze=0; WriteState(State); Event("UnFreeze"); } else { throw "Access is allowed only from: "+State.UnFreezeNum+" or "+context.Smart.Owner; } }
Чтобы отправлять команды смарты нужна клиентская часть кода, клиент создается в виде HTML-странички. Например: <HTML> <script> function Freeze() { var AccountNum=ACCOUNT_OPEN_NUM;//my account var UnFreezeNum=$("idUnfreezeNum").value;//account for unfreeze var Text="My promise text";//any text
SendCall(AccountNum,"Freeze",{UnFreezeNum:UnFreezeNum,Text:Text},AccountNum); } </script>
Can unfreeze:<input type="number" id="idUnfreezeNum"> <BR> <button onclick="Freeze()">Freeze</button> </HTML>
В качестве базы данных используется сам счет, привязанный к смарту, чтобы описать структуру его полей введите в поле State format строку: {Freeze:byte, UnFreezeNum:uint, DescBlock:uint, DescTr:uint16} Чтобы отправить этот смарт в сеть, поместите его в окошко Dap-editor-а (верхний код в верхнее окошко, нижний с html - в нижнее), укажите имя и отправьте в сеть (Dap-editor - есть в каждом клиенте).
|
|
|
Алгоритм с защитой от GPU-майнинга TeraHash
Назовем его именем TeraHash
Версия 0.1.1
На вход подается 32-байтный хеш данных текущего блока CurrentDataHash, нужно найти такой Nonce (целое число), чтобы в результате получился подходящий для нас хеш (с максимальным значением начальных нулей). Ограничение: 1. Поиск должен быть оптимизирован на использование памяти - для защиты от GPU-майнинга 2. Проверка должна осуществлять при минимальном количестве памяти и выполняться быстро - примерно со скоростью вычисления sha3
Порядок расчета: 1. Вычисляется HashTemp = sha3(PrevHashXXX , Nonce) 2. Получаем Hash = HashTemp XOR CurrentDataHash
PrevHashXXX - 32-байтный хеш предыдущего блока, отстающий на N блоков от текущего (максимальная глубина ограничена определенным числом, например 10000 блоков) Nonce - число для перебора значений от 0 до макс целого числа
Таким образом в блокчейн записывается: CurrentDataHash,Nonce, N - по которым быстро восстанавливается хеш блока
Т.е. здесь основная идея один раз рассчитать различные значения HashTemp с разными Nonce, а потом 10000 блоков просто подставлять значения через операцию XOR для лучшего подходящего хеша.
Особенность: из-за операции XOR можно так упорядочено расположить предрассчитанные значения HashTemp в памяти, что вообще не будет перебора Nonce - поиск будет вестись за логарифм времени. Соответственно при поиске CPU нагружаться не будет. Большое значение в алгоритме будет иметь размер памяти. Компьютеры с Терабайтом памяти будут 100 раз быстрее чем 10Гбайт. Но если ограничить максимальный размер N, то можно уменьшить эту разницу. Но это делать нужно осторожно, чтобы GPU-карты продолжали оставаться неконкурентными.
|
|
|
Блокчейн-торговля Задумал написать смарт-контракт для децентрализованной торговли, вот какие мысли меня посетили... Интернет-торговляТовар может продаваться через интернет по следующей схеме: - При продаже товара у продавца и клиента замораживается депозит. У продавца 0,5 от суммы товара, а у покупателя 1,5 от суммы товара (т.е. всего 2-х кратная сумма).
- При получении товара, покупатель отправляет транзакцию - товар получен. Ему возвращается 0.5 суммы, а продавцу 1,5 части суммы (оплата за товар + возврат 0,5 депозита)
- Если покупатель не сообщает в блокчейн такую информацию, то оба лишаются средств: продавец 0,5 суммы + стоимость товара (если он его отправлял), покупатель 1,5 суммы денег (или за минусом стоимости товара - если товар все же получил). Таким образом покупателю и продавцу выгодно быть честным - отправить товар и подтвердить получение товара.
Таблица выигрышей продавца и покупателя по теории игр:
| Покупатель сказал, что получил | Покупатель сказал, что не получил | Продавец отправил | 0 и 0 | -1,5 и -0,5 | Продавец не отправил | 1 и -1 | -0,5 и -1,5 |
Таблица составлена в предположении, что нет третьих сил, т.е. если он был отправлен, то он точно дошел до покупателя. Примечание:Тут еще нужно продумать над эффективной психологической суммой штрафа за обман. В данном примере он равен 0,5 суммы. Но возможно ее нужно снизить до 0.1. Так что если покупатель не получил, он лишается 1,1 суммы и это не слишком сильно отличается от величины 1,0 - он в гневе и готов пожертвовать 0,1 суммы, чтобы наказать недобросовестного продавца. А если он получил, то у него хорошее настроение и он хочет вернуть 0,1 суммы своего депозита. Ещё нужно предусмотреть вариант отказ от сделки по взаимному согласию сторон (а также другие варианты). Применение:Электронные доски объявлений Офлайн-торговляГарантия возврата товара Каждый товар при создании имеет уникальный код, который забивается в блокчейн производителем. При каждой продаже товара (от производителя к оптовику и т.д. до конечного покупателя) меняется статус Когда товар утратил свое качество (брак производителя), то он также по цепочке возвращается производителю, а деньги конечному держателю товара. Минус:Покупатель должен пойти к продавцу Автоматический возврат денег без прихода к продавцуПокупатель может в любое время вернуть деньги за товар не обращаясь к посреднику, для этого он должен нажать специальную кнопку на устройстве. Устройство в ответ дает специальный код, который он может ввести в блокчейн и тем самым получить деньги, но само устройство переходит в нерабочий режим. Минус:Товары должны быть минимум электрическими, а еще лучше электронными для предотвращения несанкционированного использования. Считывание кода производится бесконтактным методом с телефона через чип NFC (теги стоят порядка 6 руб за штуку в партиях от 10 штук) По умолчанию можно сделать возврат только 50% суммы, чтобы не было никому выгодно выполнять возврат: ни продавцу поставлять плохой товар, ни покупателю отказываться от хорошего товара Таблица выигрышей продавца и покупателя по теории игр составляется аналогично как и таблица выше: Покупатель пользуется Покупатель отказался от товара Производитель создал хороший товар 0 и 0 -0,5 и -0,5 Продавец создал плохой товар 0.5 и -0,5 -0,5 и -0,5 В случае когда производитель создал плохой товар, но покупатель не отказался от него у производителя есть некоторая выгода, т.к. товар был продан по завышенной цене, но как видно из таблицы - покупателю ничего не стоит “отомстить” продавцу отказавшись от товара.. Общее примечание:Жирным выделено равновесие Нэша. P.S. Писать буду на Тере, когда смарты прикручу...
|
|
|
Introducing TERA PLATFORM TERA is a platform for developing applications in a decentralized network. Programs can manage and transfer any digital values, including coins and tokens. This platform allows you to build a world economy without borders. The network is built on a highly reliable blockchain Protocol with PoW consensus.
It is our great pleasure to invite you to join us to mine TERA, a coin that offers solutions for issues of existing cryptocurrencies, namely centralization, transaction throughput, transaction speed, confirmation times, transaction fees and general usability and difficulty of integration into existing payment and financial systems.
We have managed to create a blockchain with 3 second block time, 10 seconds for full confirmation of transfer and zero fees. On top of that TERA blockchain is capable of throughput of 1000 transactions per second while retaining all praised blockchain features and bringing huge possibilities for further development and seamless integration with existing infrastructure as well as with new emerging technologies.
SpecificationName: | Tera | Consensus: | POW | Algorithm: | TERAhash (sha3 + Optimize RAM hashing) | Max emission: | 1 Bln (TERA) | Reward for block: | about 3 TERA (one billionth of the remainder of undistributed amount of coins (account 0) multiplied by 9) | Block size: | 350 KB | Premine: | 5% | Development fund: | 1% of the mining amount | Block generation time: | 3 second | Block confirmation time: | 10 seconds | Speed: | 1000 transactions per second | Commission: | free of charge |
Additional InformationCryptography: | sha3, secp256k1 | Protection against DDoS: | PoW (hash calculation) | Platform: | Node.JS | Smart contract language: | Javascript | Wallets: | Windows - src & setup; MacOS, Linux - src only | Network launch: | 01.07.2018 12:0:0 (UTC) | Mining launch: | UTC "2018-07-24T15:33:20 |
RoadmapSmart-contracts – October, 2018 Decentralized forum – November, 2018 Decentralized stock exchange – November 2018 Web wallet - December 2018 2019Android/iOS Wallets Creation of IDE for DApps development Creating DApp for anonymous payments Research to increase transactions with sharding up to 1 million tps Creation of financial instruments for actions on tokens: futures, options, pawnshops 2020Sharding (1 million tps) 2021Development of DeFi ecosystem Development of bridges across Bitcoin, Ethereum and other blockchains Full node & MiningAttention: To connect to the network, it's better to have a public IP address. Installation instruction: https://gitlab.com/terafoundation/teraRequirementsThe Terahash algorithm based on sha3 and optimized RAM hashing function. At least you need a strong CPU (>4 Cores) and a lot of RAM (>8 GB). Good combinations of Cores / RAM are:04 Cores /// 08 GB RAM 08 Cores /// 16 GB RAM 12 Cores /// 24 GB RAM 16 Cores /// 32 GB RAMFor example: The Intel i7-4770K CPU have 4 cores and 8 threads. Starting the walletWait until the synchronization is complete - the green message Synchronization complete should appear. Below, when you start first time, two fields will appear: name and adviser. Enter the code of the adviser (if you have one), enter account name and click the Create button. After about 8 seconds, the account creation transaction will fit in the blockchain and you will have an open account where you can mine the coins. Solving connection problems- Check the firewall (port must open on the computer) Transfer your coins "bank like"
The coins are kept in accounts by analogy with bank accounts. The accounts are numbered from 0 sequentially. The zero account number is for system account, to which initially 1 bln coins were issued. To create new account you need to send to the network special transaction ACCOUNT_CREATE where you need to specify a public key of the account owner and unnecessary characteristic “name of account” (a line with length up to 40 bytes). It is advisable to specify the name to check the correctness of the account number input when sending the payment.
Test NetworkDefault values:Launch:cd ~/wallet cp -a Source SourceJinn cd SourceJinn node set-jinn httpport:8800 password:<Password> pm2 start run-jinn.js
|
|
|
Мгновенные платежи (алгоритм реализации)Через залоговый принцип: 1. Покупатель деньги хранит на специальном счете, с которого средства можно тратить не более 1% в минуту. 2. При получении числа транзакций свыше данного лимита начисляются большие штрафы. При покупке чего-либо покупатель отдает транзакцию сразу продавцу, который сам отправляет ее в сеть (предварительно проверив ее цифровую подпись). После чего не ждет несколько минут для подтверждения транзакции, а отдает товар, будучи более уверенным, что деньги до него дойдут. Т.к. см. пункты 1 и 2 правил. Конечно для разных блокчейнов время скорости траты должно быть своим, чем тормознее блокчейн (чем дольше висят транзакции до подтверждения, тем медленнее нужно разрешать тратить деньги). Реализовать это можно через обычные смартконтракты, но очень важно чтобы кошелек продавца автоматически понимал такой смартконтракт, оценивал его условия, оставшуюся сумму и давал оценку доверительности платежа. На мой взгляд, самый лучший способ реализовать в виде платформенной поддержки, в виде системного смартконтракта - специального вида счета в какой-либо новой криптовалюте. Минусы: Я специально выше отметил, что данный алгоритм повышает уверенность, но не гарантирует. Повышает примерно в 100 раз. Но все равно остается вероятность, что не честный покупатель одновременно отправил деньги сразу 200 продавцам и ни один ничего не заметил. UPD: Второй алгоритм.Цель - достичь следующей возможной ситуации: допустим мы планируем пойти в магазин за покупками, мы знаем что он принимает криптовалюту. Мы хотим быстро оплатить товары не ожидая 10 минут на кассе. Решение: Используем транзакции, применяемые в атомарном свопе. Но немного модифицированные. Порядок действий будет такой: 1. Покупатель заранее создает специальную транзакцию - депонирование суммы на счет продавца, т.к. он точно не знает суммы покупки, то отправляет немного больше, например 5000 руб. 2. Покупатель указывает время, когда деньги автоматически вернуться ему на счет, если он передумает покупать. Например через 2 часа (один час на хождение по магазину, 1 час - гарантия подтверждения транзакций блокчейном - точное минимальное значение задает продавей, например, в виде объявления при входе в магазин вместе со своим адресом кошелька) 3. Отправив транзакцию, покупатель ждет некоторое время, убеждается что его транзакция принята блокчейном и отправляется за покупками 4. При оплате покупатель предъявляет кассиру только специальный ордер (на самом деле это тоже транзакция только с другим содержанием), в котором указана сумма не больше депонированной и цифровая подпись. Продавец может самостоятельно отправить этот ордер, т.к. деньги фактически уже находятся на его счете. Ордер нужно отправить в сеть для того чтобы деньги не вернулись обратно покупателю. У продавца для этого есть достаточно времени, т.к. он это потребовал в виде объявления на входе (оно может быть как 1 час, так и 1 сутки) Данная схема, более надежна, т.к. уже гарантирует что деньги в конечно счете будут у продавца. Продавец, сам контролирует степень гарантии. P.S. Для сети Биткоина это не получится, нужно расширять опкоды и делать обновление сети. В Эфириуме вполне может сработать. P.S2. Но это все равное не будет работать для вышеуказанных криптовалют, из-за относительно высоких комиссий... UPD2Второй алгоритм будет реализован в блокчейне TERA в ближайшее время (август 2018) https://bitcointalk.org/index.php?topic=4573801
|
|
|
Эмиссия монет.Общеизвестно, что чем более популярной становится криптовалюта, тем больше у нее узлов (нод) в сети и тем больше в ней совершается транзакций. Понятно, что чем больше нод подключается к сети, тем больше тратится общей вычислительной мощности для осуществления транзакций. Например, когда в сети было 100 нод, то сеть обрабатывала 100 транзакций в день и, например, эмитировано в день 100 монет. Логично ожидать, что когда в сети будет 1 млн нод и в сети будет обрабатываться 1 млн транзакций, то эмиссия монет будет 1 млн монет, т.к. вычислительные затраты выросли пропорционально. Представьте следующие начальные условия: 1) Есть блокчейн с высокой скоростью транзакций (от тысячи TPS). 2) Алгоритм консенсуса максимально децентрализованный - т.е. чистый PoW Требуется придумать максимально честный алгоритм эмиссии монет. Под честностью понимаю "что-то", что позволит максимально широко распространится в массах, например можно сделать, чтобы пользователи присоединившиеся позже получили такие же условия майнинга (эмиссии монет) как и более ранние пользователи. Я вижу решение такое - число монет выдаваемое в качестве награды за блок должно зависеть от уровня сложности PoW. Например можно сделать: 1)Линейная зависимость. Награда за блок равна среднему хешрейту сети в данный момент (т.е. равна: 2 в степени числа нулей в "красивом" хеше найденного блока) 2)Квадратный корень. Тоже что и 1, только берется квадратный корень 3)Логарифмическая. Тупо берется число первых нулей красивого хеша. На примере биткоина: Block #521743 хеш: 00000000000000000016c6647923244f520ad7ca6ccdf07325e2113e667708a8 В нем 75 первых бит равны 0 1) Линейный способ - не хватает разрядности числа, это главный недостаток 2) 2^(75/2) = 194368031998 - тоже многовато, даже если считать в сатоши. Интересно, что если взять кубический корень, то 2^(75/3) = 33554432 сатоши (0.3 биткоина) 3) 75 Стоит заметить что есть два варианта развития: 1) Инфляционный вариант. Если эта идея станет популярной в массах, то экономика будет совсем непривычной - цена монеты не будет сильно расти. Наверно основной упор будет сделан на стабильности стоимости монеты и на совершении транзакций. 2) Без инфляционный вариант. Но с другой стороны ничего не мешает ограничить эмиссию монет сверху, например, при достижении эмиссии 100 млн монет, правила меняются меняются - заменяются на классический вариант с автоматическим понижением в 2 раза каждые N блоков UPDATE:Плюс описанного подхода: Можно более точно заложить объем денег, требуемых для сети. Особенность криптовалют такая, что один раз установив правила игры, их уже практически нельзя поменять. Размер эмиссии - это рыночный показатель, зависящий от числа пользователей. Логично заложить эту зависимость в саму формулу. UPD2Алгоритм реализован в блокчейне TERA https://bitcointalk.org/index.php?topic=4573801Consensus: PoW Algorithm: sha3 + meshhash (ASIC resistent hashing) Max emission: 1 bln (TER) Reward for block: 1-20 coins, depends on network power (one billionth of the remainder of undistributed amount of coins and multiplied by the hundredth part of the square of the logarithm of the network power) Block size 120 KB Premine: 5% Development fund: 1% of the mining amount Block generation time: 1 secondBlock confirmation time: 8 seconds Speed: from 1000 transactions per second Commission: free of charge
|
|
|
Усиление децентрализации блокчейна (Консенсус с двумя pow)По следам темы идеального блокчейна https://bitcointalk.org/index.php?topic=2574634С целью усиления децентрализации блокчейна возникла идея ввести в алгоритм консенсу просчет двух хешей, один по алгоритму заточенному под CPU, а другой под асик. Идея заключается в том, что если злоумышленник (или например правительство Китая) возьмет под свой контроль все мощности асиков (т.е. более 51%), то у него ничего не выйдет так как еще наравне с этим требуется получить контроль над обычными компьютерами. Ну не то что совсем никогда не выйдет, но данный факт очень сильно затруднит такой захват. Я практически создал (выложу в сеть через месяц - в феврале) блокчейн с высокой скоростью TPS (сейчас пару тысяч транзакций в секунду, потом к концу года будет 1 млн), блоки создаются раз в 2 секунды. Сеть синхронная, т.е. блоки создаются гарантировно раз в две секунды. Т.к. резкие изменения мощности ей не страшны, то тут подходит данный алгоритм консенсуса с двумя вариантами PoW. Предлагаю обсудить полезность от такого разделения алгоритмов и метрику сравнения блоков. Например есть два блока конкурирующих блока: Первый блок (число нулевых бит): pow1 = 19 pow2 = 41 Второй блок (число нулевых бит): pow1 = 21 pow2 = 40 какой блок победил? Предлагаю, чтобы победителем был 2-й блок. Алгоритм: pow1-алгоритм на CPU pow2-алгоритм для асика 1) Вычисляется логарифм сложности (т.е. тупо число нулевых бит) каждого хеша 2) Складываются их значения и сравниваются с другим блоком (чем больше тем лучше) 3) В случае их равенства победитель определяется по меньшему абсолютному значению хеша pow1 Главный вопрос: Считаете ли вы что два алгоритма усиливают децентрализацию?Попутный вопрос: Какой алгоритм pow2 использовать (другими словами владельцам каких асиков дарить монеты)? Стандартный Биткоина sha256(sha256()) ? UPDATE:Идея верна, только в предположении, что можно создать асикоустойчивый алгоритм, например такой который обсуждался в этой ветке: https://bitcointalk.org/index.php?topic=2666995
|
|
|
UPD 12.09.2018Тема уже неактуальна в связи с созданием более сильного алгоритма с защитой от GPU-майнинга "TeraHash" https://bitcointalk.org/index.php?topic=5023773.0Старое:Друзья, продолжаю более детальную проработку темы идеального блокчейна: https://bitcointalk.org/index.php?topic=2574634.0;allА конкретно, пункт: "12. Асикостойкий алгоритм PoW" Давайте обсудим асикостойкие (а заодно и GPU-стойкие) алгоритмы PoW. Зачем это нужно: чтобы выполнить более широкое и равномерное распространение криптовалюты. В идеале - среди обычных граждан. Есть такое утверждение: ценность валюты как средства платежа пропорционально квадрата числа людей ею пользующиеся. Давайте подумаем над природой проблемы, что такое CPU (процессор), GPU (графический процессор) и ASIC (микросхема для вычисления хэшей): CPU - универсальный процессор, способный выполнять любую Тьюринг полную программу GPU - векторный процессор с массовым параллелизмом для обработки графики (и не только) ASIC - микросхема которая умеет вычислять только хэши (на несколько порядков быстрее CPU/GPU) Получается, что если мы хотим создать такой алгоритм PoW, чтобы он никогда не выполнялся на асике даже теоретически, нужно в него добавить исполнение Тьюринг-полной задачи. Сделать так, чтобы алгоритм был динамический и нужен был процессор для интерпретации алгоритма. Например, добавить интерпретацию скрипта, который заранее составляется псведослучайным образом на основе хэша рассчитываемого блока. Скрипт будет выполнять случайные перестановки байтов входного буфера и избежать его выполнения не получится. Скрипт будет содержать условные переходы, операторы цикла, а также иметь ограничение на длины вычислений (чтобы не было случайного зацикливания). После исполнения скрипта вызывается какой-либо стандартный криптографический алгоритм хэширования. Соответственно скрипт запускается столько раз - сколько раз перебирается число nonce при поиске "правильного" хэша. Таким образом, если получится создать такой асик, то это уже будет не асик, а полноценный процессор... Отдельным вопросом стоит GPU - можно ли на нем написать интерпретатор? UPD:Давайте подумаем как реализовать интерпретатор, можно например так: 1. Берем хеш предыдущего блока, его длина 32 байта 2. Считаем его программой из 32 строк 3. Каждый байт - это отдельная команда 4. Выполняем программу, ограниченное количество тактов (например 1000) Состав АЛУ (регистры 2 байтовые): Регистры: 00-Аккумулятор 01-03 - общего назначения Память: 32 байта (собственно это входящий хеш, который нужно перемешать). Вся память разбита на 16 ячеек по 2 байта. Все значения - это целые положительные числа длиной 16 бит. Примеры команд (цифры в 16-м коде): RM - загрузить в регистр R двухбайтовое число из ячейки M (memory) 4R - сложить значение из аккумулятора со значением из регистра R (registr) и поместить результат в аккумулятор 5R - аналогично вычитание 6R - аналогично умножение 7R - аналогично деление 8R - аналогично побитовое OR 9R - аналогично побитовое AND AR - аналогично побитовое XOR BR - аналогично SIN (!) CL,DL - переход на строку L (label) если значение в аккумуляторе меньше 2^15 (C-переход на строки: 0-15, D-переход 16-31) EL,FL - переход на строку L (label) если значение в аккумуляторе больше 2^15 (E-переход на строки: 0-15, F-переход 16-31) Все остальные значения (4R-AR где значения R>3) приводят к перемешиванию памяти кратно значению в аккумуляторе. где: R-номер регистра 0-3 M-номер ячейки памяти (0-15) L-номер строки программы (0-15) Итого: ¼ всех случайных команд приводит к условному переходу примерно ⅓ команд - к случайному наполнению аккумулятора примерно ⅓ команд - к перемешиванию хеша Можно убрать все арифметические операции (команды 4R-AR), а ввести только сложные тригонометрические функции, как например команда BR, чтобы затруднить работу на GPU UPD2:Функция перемешивания на JS: function meshhash(hash) { var regs=[hash[3],hash[2],hash[1],hash[0]]; var mem=[]; for(var i=0;i<16;i++) { mem[i]=hash[i*2]+(hash[i*2+1]<<8); }
var WasGoto=0; var L=0; for(var i=0;i<64;i++) { var c=hash[L&31]; L++; var a=(c>>4)&0xF; var b=c&0xF; var r=c&0x3;
switch (a) { case 0: regs[0]=regs[0] + regs[r]; break; case 1: regs[0]=regs[0] * regs[r]; break; case 2: regs[0]=regs[0] | regs[r]; break; case 3: regs[0]=regs[0] & regs[r]; break; case 4: case 5: case 6: case 7: regs[0]=regs[0] + regs[1] + regs[2] + regs[3]; break; case 8: if((regs[0]&0xFFFF)<32768 && !WasGoto) { L=32+L-b; WasGoto=1; } break; case 9: if((regs[0]&0xFFFF)>32768 && !WasGoto) { L+=b; WasGoto=1; } break;
default: regs[a%4]=mem[b];
}
var index1=regs[0]&0xF; var index2=(regs[0]>>8)&0xF; if(index1!==index2) { var temp=mem[index1]; mem[index1]=mem[index2]; mem[index2]=temp; } }
var ret=[]; for(var i=0;i<16;i++) { ret[i*2]=mem[i]&0xFF; ret[i*2+1]=mem[i]>>8; }
return ret; }
UPD3Алгоритм реализован в блокчейне TERA https://bitcointalk.org/index.php?topic=4573801Consensus: PoW Algorithm: sha3 + meshhash (ASIC resistent hashing) Max emission: 1 bln (TER) Reward for block: 1-20 coins, depends on network power (one billionth of the remainder of undistributed amount of coins and multiplied by the hundredth part of the square of the logarithm of the network power) Block size 120 KB Premine: 5% Development fund: 1% of the mining amount Block generation time: 1 secondBlock confirmation time: 8 seconds Speed: from 1000 transactions per second Commission: free of charge
|
|
|
Друзья, давайте создадим идеальную криптовалюту, лишенную проблем масштабирования и стоимости комисии. На мой взгляд идеальная криптовалюта должна иметь:1. Бесконечную масштабируемость, например если число нод 1000, то обрабатывает 1000 транзакций в секунду (tps), если число нод стало 1 млн, то скорость сети пропорционально увеличилась до 1 млн tps 2. Маленькое время подтверждения транзакции - не более 5 сек. 3. Бесплатные или практически бесплатные транзакции: Либо в транзакции указывается какая-то комиссия (мин сумма задается в константе см п.13). Комиссия всегда сжигается, майнеры получают только вознаграждение. Либо оплачена подписка на транзакции (см. пункт 14) Либо в транзакции указан PoW эквивалентный работе компьютера в течении например 1 сек (управляется константой) - также это будет использоваться для дополнительной защиты сети, т.к. в транзакции идет ссылка на один из предыдущих блоков Будет установлено минимально допустимое время между транзакциями предок-потомок (например 1 минута) При неудовлетворении этих условий транзакция считается невалидной и сетью не принимается. 4. Защиту от атак (защита от спама через пункт 3, защита от резкого изменения мощностей майнеров - через алгоритм) 5.1 Распределение вознаграждения за блок: 10% за максимальный PoW хэша, 10% оракулам, 80% остальным активным участникам сети (нодам) за обмен транзакций. 5.2 Консенсус с двумя pow 6. Запускать поверх себя другие активы (по типу цветных монет в биткоине) и в том числе содержать транзакции всех популярных криптовалют (наличие точной информации по курсам этих валют позволит создать децентрализованные биржи/обменники/ломбарды и т.п.) 7. Регулируемый размер эмиссии через голосование и пропорционально количеству нод (точнее логарифму их числа) 8. Смарт-контракты 9 Пиринговый файлообмен 10. Пиринговые сообщения (чат) 11. DApp (хостинг проектов) 12. Асикостойкий алгоритм PoW https://bitcointalk.org/index.php?topic=2666995.013. “Управляемые” константы - константы, которые меняются через систему голосования. Например размер эмиссии, процент распределения награды, стоимость подписка на сервисы и т.п. Сама система голосования возможно будет реализована путем сжигания суммы валюты за то или иное решение. Время голосования длительное - минимум 2 недели или при наборе большинства. Подумать про отдельную систему выборщиков... 14. В сети будут реализованы встроенные сервисы (например подписка на бесплатные транзакции в течении года). Оплата осуществляется путем сжигания определенной суммы на определенный адрес - например 0x000000001 15. Безопасные кошельки - специальное свойство кошелька, показывающее возможность отмены транзакции в случае кражи пароля. Механика: перевод с таких кошельков осуществляется долго, например 1 неделя, при этом в течении этого времени есть возможность создать блокировочную транзакцию, по которой все деньги отправляются на резервный кошелек. А также опция ограничение суммы платежа в день/месяц за исключением переводов на резервный кошелек. Применение: повышение безопасности брэйн-кошельков. 16. Оракулы - заливка экспертных знаний реального мира внутрь блокчейна. Системно будут поддерживаться несколько финансовых показателей, например, курс данной валюты к USD, курсы других валют (Биткоина, Эфириума, фиатных валют). Алгоритм вознаграждения за правильные знания: ноды, которые максимально ближе были к среднему значению участвуют в розыгрыше монеты. Установка осуществляется в момент достижения консенсуса сети (в момент лавинной отправки макс блока). 17. Сделать поддержку для полных нод работать только в браузере на базе WebRTC 18. Ввести понятие гарантия ноды: нода замораживает N монет и гарантирует честную работу, если обнаружены доказательства обмана, то эти монеты сжигаются. Список доказательств обмана: византийское поведение (отправка разных данных о своем состоянии) подтверждение заведомо неправильных транзакций (двойных трат) спам (превышение количества сообщений больше нормы) не передача данных от соседних нод или таймаут (как доказывать??) При подключении ноды использовать такую гарантию в качестве одного из приоритетов 19. Анонимные транзакции через “ветер” (авто движение монеты из одной шарды в другую). Реализуется посредством автообменов, механизм нужный для избавления от мелких монет (консолидации монет в одну). Примечание: мелкие монеты это проблемы, которые будут возникать из-за шардирования. 20. Стабильность курса валюты (создание второй валюты STBL, привязанной к курсу какого-либо фиата) СЕРВИСЫ за которые нужно платить:-Подписка на быстрые (без PoW) транзакции без комиссии -Расчет баланса кошелька для тонкого клиента Подписка осуществляется путем сжигания (переводы на заранее определенные нулевые адреса). Период подписки: день, месяц, год Приложения на платформе:1. Биржа услуг и товаров с гарантией исполнения: например заказ транспорта. Лицо оказывающее услугу вносит на биржу лоты с описанием и стоимостью и датой, объем лотов ограничено внесением залогового депозита (гарантии сделки). Клиент покупает услугу, деньги переводятся спустя 2-3 дня при взаимном согласии сторон. В случае спора подключается третья сторона Оракул (за 5%, которые списываются от продавца лота). 2. Учет долгов. Универсальная бухгалтерская книга - взаиморасчеты между друг другом (как людьми, так и организациями). Учитываться будут именно долги, например за поставку товара начисляется долг одного кошелька перед другим кошельком. Начисление долга будет произвольным, но допускается только если уже были переводы средств между кошельками (для защиты от спама). Внедрить в функционал ERP систем, например: увеличение долга - в документ Отгрузочная накладная, списание долга - в документ Выписка банка. Плюсы для всех - видеть состояние взаиморасчетов сразу, не дожидаясь проведения бухгалтерских актов сверок. TODO: Продумать пределы “произвольности” начисления долгов, механизм сдержек и противовесов... Пункт 1 я уже проработал, создал компьютерную модель, вроде работает хорошо (используется шардинг, писал на Node.JS). Остальные пункты попроще, теоретических проблем с их реализацией пока не вижу. Кому интересно предлагаю обсудить алгоритмы технической реализации. Прошло полгода, встречайте: Introducing TERA | Smart money SpecificationName: TERAConsensus: PoW Algorithm: sha3 + meshhash (Asic resistent hashing) Max emission: 1 bln (TER) Reward for block: 1-20 coins, depends on network power (one billionth of the remainder of undistributed amount of coins and multiplied by the hundredth part of the square of the logarithm of the network power) Block size 120 KB Premine: 5% Commission from the mining: 1% (to the development fund) Block generation time: 1 second Block confirmation time: 8 seconds Speed: from 1000 transactions per second Commission: free of charge ... https://bitcointalk.org/index.php?topic=4573801
|
|
|
|