Pull to refresh
26
0

Developer

Send message
algs подскажи по ОСи, пожалуйста

физически сколько компьютеров использовалось для построения своего блокчеина, как подымали мастерноду?

Поднимали на одном с помощью github.com/smartzplatform/eos-hackathon/blob/master/backend/dev/start_local_chain.sh

На винде, как я понял, работать не будет?

Не будет, работает на mac и linux.

Где уроки посмотреть для работы с блокчеином ЕОS?

Думаю скоро выпустим workshop на www.youtube.com/channel/UCn4kywh7NwNNHce2a2murSg.

Для постояных записей в смартконтракт не будет взиматься оплата за транзакции?
Будет взыматься. В локальном режиме (nodeos -e) у аккаунтов бесконечные ресурсы.

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

Да, все так. Здесь недоверие с другой стороны: компания Вам не доверяет, что Вы передаете показания верно.
А теперь вопрос, надеюсь не глупый: много ли есть проблем, или задач, которые ну никак не могут доверится центральному серверу или одному владельцу?

Вопрос доверия — выходит за рамки технической дискуссии, думаю на Хабре дальнейшей дискуссии не место. Я просто оставлю это и это здесь.

Еще один вопрос: неужели невозможно добиться доверия и прозрачности используя стандартные инструменты и централизованные решения?

Можно хранить данные централизованно и публиковать их, подписывая своим закрытым ключом. Наверное, понадобится какая-то упорядоченность данных, как минимум хронологическая. И утилиты работы с этим массивом данных. Какой готовый софт решит задачу? Например, из семейства Hyperledger или упомянутый локальный EOS.
По ходу статьи мы не говорим, что использование глобального децентрализованного блокчейна — обязательный элемент нашего решения.
Здравствуйте!

Спасибо, хорошие вопросы и кейс важный.

Прежде всего рекомендую бесплатную лекцию-воркшоп моего коллеги, где как раз будет затронута тема токена (2 модели токенов: mintable и полный premint) aronicle.timepad.ru/event/665542, по-моему будет трансляция.

По вопросам:

1) Можно добавить себе после ICO (т.н. mintable), а можно до ICO сразу отложить 100, а остальные 900 продать (т.н. полный premint). (900 и 100 чтобы получалось 90% и 10%).

Выдергивать из уже проданных, конечно, не хорошо. Хотя технически возможно в ряде случаев, т.к. балансы токена ведутся в контракте токена, вот тут например: github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/ERC20/BasicToken.sol#L15.

2) и 3) Тут как и с покупкой доли в ООО или АО: если 1000 Ваших токенов покупают по 1 ETH, при этом зная, что продаются 90% токенов проекта, значит уже в момент покупки инвесторы оценивают проект в 1000/0.9 = 1111 ETH. До покупки стоимость проекта была сугубо умозрительной, после покупки проект имеет в активах 1000 ETH, плюс у Вас токены оцененные в 111 ETH.
Дополнительное замечание: удвоения стоимости здесь не происходит: т.к. нельзя одновременно продать 90% токенов и продать 1000 ETH (если сначала продать токены, то теряется право распоряжаться эфиром проекта; если сначала продать эфир проекта — то его стоимость наверняка упадет и токены обесценятся).

4) В простом случае — да, эфир собирается сразу Вам в кошелек. Собранный эфир — строго говоря не Ваш, а проекта, напр. пообедать за его счет будет некрасиво и даже (в глазах ряда стран) незаконно. А вот 100 токенов — Ваши личные — можно аккуратно их продать и купить ягуар, но не забывать делать проект.

5) Вцелом да, только число токенов, повторюсь, записано в контракте токена. Адрес этого контракта владелец токенов должен руками добавить в watch token в кошелек.
Зачем тясячи то? десятка за глаза

Насколько понимаю, Вами предлагается найти всех майнеров, перебрав участников сети. Подозреваю, участников сети десятки тысяч и более — трудно будет искать майнеров. Или можно определить их ip, не перебирая всех участников?

майнеру отправлять блоки с write-only ноды

Уточню: майнер может «читать» сеть с одного ip, а посылать новый блок с другого, на котором он вообще не слушает никакие порты.
А поподробнее? Не забываем, что я могу увидеть конечный эффект любой незамайненой транзакции, применив ее к текущему состоянию БЧ, как бы глубоко обфусцирована она ни была.
А вот хорошая идея защиты от front running: hackingdistributed.com/2017/08/28/submarine-sends
Если их более 25, то придется принудительно рвать соединения до известных IP, например, с помощью iptables, и так собрать их все.

А сколько их? Например, у меня постоянно запущена нода rinkeby. Есть подозрение, что порядок величины — десятки тысяч и более. Трудоемкая задача получается.
Как вариант защиты — майнеру отправлять блоки с write-only ноды. Тогда ддосать придется ip целиком.
Ну тут как в VCS. Нода должна (по апи в т.ч.) уметь отвечать на вопросы о прошлом.
«Почти» потому что его нельзя самому себе нарисовать. В тестнете rinkeby его довольно легко получить: faucet.rinkeby.io. Балансы разных сетей никак не связаны, по сути это независимые криптовалюты.
Возможности контрактов по взаимодействию с внешним миром весьма ограничены, т.к. их работа должна быть проверяема любым узлом сети, и значит всегда возвращать один и тот же результат. Кроме того, опять же поскольку эту работу вынужден будет выполнить любой т.н. полный узел, она дорого стоит (записать 32 байта не так давно стоило порядка $0.2).

Конкретно в случае обращения за прогнозом погоды — это можно, например сходить в какое-либо json-api с помощью сервиса www.oraclize.it — сервис доставит данные в Ваш контракт и ему с какой-то степенью можно доверять. Но лишь с какой-то степенью. Ждем появления т.н. децентрализованных оракулов.
Спасибо за вопросы!

1. По сравнению со сборами даже небольших проектов затраты на деплой и комиссии пренебрежимо малы (к тому же, после последнего хардфорка они стали сильно ниже, см. ethgasstation.info). Гораздо большую угрозу лишние связи представляют для безопасности и надежности, т.к. нужно внимательно проконтролировать доступ и не поиметь проблем из-за reentrancy. Пока что несколько, т.е. единицы контрактов в системе кажется разумным решением. Уверен, с развитием технологий мы увидим и десятки и сотни.

2. В SafeMath методы помечены как internal, т.е. компилятору нет необходимости делать их публичными, и Вам нет нужды ее деплоить. После компиляции и оптимизации их код окажется в теле контракта, и по расходу газа это будет эквивалентно тому, что они прописаны прямо в вызывающем коде.

3. Хороший и важный вопрос. Когда-то столкнулся точно с таким же. К сожалению, готового удобного инструмента получить good ol' stacktrace нет. Приходится прибегать к таким примитивным способам как вывод информации с помощью событий (truffle показывает залогированные события упавшего теста) и локализация багов комментированием кусков кода дихотомией. Надеюсь, я отстал от жизни и в комментариях подскажут решение получше.

4. Автотесты — конечно только на testrpc. В testnet стоит провести тест всего за пределами кода контрактов — т.е. миграций, связи контрактов, верификации, кошельков, и провести пару пробных транзакций.

5. Затраты газа на деплой можно оценить либо по логу testrpc либо опять же на testnet. Затем берем запас на неудачные попытки: умножаем газ на 2.5 — 4. Оцениваем цену газа на момент деплоя — сейчас она в основном мала, 1 Gwei, но в общем случае она колеблется в разы в течение дня в зависимости от загруженности сети. Умножив газ на его цену получим затраты на деплой. Если эфира не хватило в ходе деплоя, текущая миграция завершится с ошибкой, и в следующий раз truffle начнет миграцию с нее.

6. В самом простом варианте можно просто скачать Ethereum Wallet, он скачает geth автоматически и тот начнет синхронизацию. У Вас будет и удобный интерфейс работы с контрактами, и возможность запустить geth с поднятым rpc для truffle:

geth --verbosity 2 --rpcport 8549 --wsport 8550 --rpc console --fast

и добавляем в networks в truffle.js:

    mainnet: {
      host: "localhost",
      port: 8549,
      network_id: 1,
      gasPrice: 1000000000
    }

Первоначальная синхронизация с нуля не проверяет каждую транзакцию и идет относительно быстро (на macbook pro можно уложиться в 8 часов! ура!). Синхронизация не-с-нуля идет заметно медленнее. В определенный момент будет быстрее удалить блокчейн (осторожно — не удалите keystore!) и запустить с нуля. Если есть доверенная контролируемая Вами нода — можно просто скопировать блокчейн с нее. В любом случае мы рекомендуем брать хорошее железо — 256G+ SSD, 8G+ памяти, процессор порядка core i5 или лучше. С магнитными дисками не стоит даже связываться. Совершенно верно, синхронизацию стоит начать за неделю и постоянно донакатывать блоки — уже не раз теряли и свое время и время заказчика на этом, теперь научены опытом.

7. Могу озвучить в личке. Здесь отмечу, что разработчики смарт-контрактов и тем более блокчейнов сейчас могут рассчитывать на очень выгодные условия, в 2-3 раза более выгодные.

Статья эта несмотря на длину, конечно, довольно обзорная. Я уже отмечал, что и по разработке и по безопасности нужны не то что отдельные статьи — отдельные курсы. Отвечая на вопрос про несколько crowdsale'ов — мы используем один токен, владение которым передается от crowdsale к crowdsale с помощью этого mixin'а, защищенного мультиподписью, умеем откатывать токен вместе с возвратом средств. Вот пример из того, что сейчас в работе. Конечно, есть альтернативные варианты.
С другой стороны непонятно насколько плохая идея не очищать маппинг, а только засорять его.

А с какой целью очищать? Уменьшить размер блокчейна не получится, разве что размер текущего состояния.
Т.е. по сути введены поколения структур. Да, хорошая идея. Вложенные маппинги работают за счет того, что локация в storage определяется условно говоря как хэш(локация мапинга, uid, ключ) — новый uid — все обнулено.
Вообще, сейчас вполне нормальная практика иметь ЛК инвестора, в котором ты даже не можешь посмотреть адрес СК. 90% ICO которые я вижу сейчас поступают так.

90% по сборам или штучно? Понимаете, к чему я веду?

А скамануть можно и с безупречным смарт-контрактом и целым отрядом Escrow-агентов.

Это аргумент из серии «кому надо — все равно сломают». Конечно. Но при прочих равных лучше иметь прозрачные, криптографически гарантированные условия.
У инвесторов свои каналы получения информации. Если они не могут прочитать solidity-код (даже если кто-то может — тратить свое время на это будет крайне неэффективно), это не значит, что они не узнают, что ICO «X» looks scammy.
Чисто и лаконично написано.
Но в функции transferOwnership есть цикл, число итераций которого может оказаться порядка тысячи и более:
for (i = 0; i < allPendingOperations.length; i++) {
что приведет к достижению лимита газа блока и невозможности поменять владельцев контракта.
Мультиподпись ethereum wallet также этим страдает (функция clearPending).
В своей мультиподписи на базе МП ethereum wallet мы ввели принудительный сброс pending-операций в потенциально опасной ситуации, но я считаю это временным решением — планируем переработать алгоритм сброса в итерационный, который адаптивно учитывает msg.gas.
Да, количество участников. Плюс возросшая эффективность майнинга.
Да, это пожалуй самый большой слон в посудной лавке, о котором евангелисты умалчивают в пламенных речах.

Проблема масштабируемости состоит из как минимум двух подпроблем: нарастить число транзакций в секунду (TPS) и спасти жесткие диски от сотен гигабайт занятых под блокчейн.

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

Серьезно ужать блокчейн — сложнее. Есть различные легковесные решения, но, кажется, там возникает либо проблема эффективности, либо проблема доверия. Есть идеи шардинга, но, напр., в Ethereum оно только на этапе экспериментов github.com/ethereum/wiki/wiki/Sharding-FAQ.
Если присоединяешься к пулу, и юнит-экономика сходится (т.е. достаточна ли энергоэффективность, вне зависимости от hash rate), то почему бы и нет. Правда не уверен, что в случае CPU она сойдется. Может на bitcoin gold.
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity