мы не принимаем токены и переводы с контрактов что это значит

Что не так с Ethereum: проблемы токенов стандарта ERC20

мы не принимаем токены и переводы с контрактов что это значит

Как работает ERC20

ERC20 — первый и самый широко используемый стандарт токенов, выпускаемых на базе блокчейна Ethereum. Данный стандарт был впервые представлен в 2015 году и в переводе с английского (Ethereum Request for Comments) означает «запрос на комментарии в Ethereum».

Именно благодаря внедрению ERC20 на крипторынке был отмечен массовый рост числа ICO-кампаний, поскольку в нем описан конкретный список спецификаций и правил, которым должны соответствовать будущие токены. Проще говоря, ERC20 токены — это специализированные смарт-контракты, которые работают на базе блокчейна Ethereum. Данный стандарт существенно облегчил работу разработчиков, которые до этого должны были сами вырабатывать стандарты совместимости токенов с блокчейном, кошельками, биржами и DApps. На сегодняшний день в сети Ethereum было запущено 67,507 ERC20 токенов-контрактов. А среди самых популярных ERC20 токенов можно отметить EOS, Tron, Binance Coin, ICON, KuCoin, OmiseGO и SingularDTV.

Код стандарта ERC20 предусматривает 6 функций:

мы не принимаем токены и переводы с контрактов что это значитФункция totalSupply определяет общее количество токенов.

мы не принимаем токены и переводы с контрактов что это значитФункция balance0f показывает баланс на счету определенного адреса, заданного параметром address _owner, где _owner — интересующий адрес.

мы не принимаем токены и переводы с контрактов что это значитФункция transfer реализует передачу токенов с первичного адреса на адрес индивидуального пользователя, к примеру, участника ICO.

мы не принимаем токены и переводы с контрактов что это значитФункция transferFrom используется для пересылки токенов от одного пользователя к другому.

мы не принимаем токены и переводы с контрактов что это значитФункция approve проверяет, остались ли токены у смарт-контракта и предусматривает вывод средств со счета вплоть до максимально допустимой суммы, которая указывается в качестве параметра функции.

мы не принимаем токены и переводы с контрактов что это значитФункция allowance гарантирует, что на адресе кошелька-отправителя достаточно токенов для их пересылки на адрес кошелька-получателя.

ERC20 также предусматривает два вида событий:

мы не принимаем токены и переводы с контрактов что это значитtransfer — событие перевода токенов между счетами;

мы не принимаем токены и переводы с контрактов что это значитapproval — событие инициируется при успешном выполнении функции approve, описанной выше.

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

Проблемы ERC20

Стандарт ERC20 является первым стандартом, разработанным в сети Ethereum, в связи с чем он имеет существенные недоработки. Блокчейн-разработчик, известный лишь как Dexaran, подробно описал баг, из-за которого при транзакциях пользователи могут потерять свои средства.

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

Это происходит из-за того, что для перевода токенов ERC20 необходимо задействовать одну из двух функции. Первая — функция transfer, позволит отправить токены на определенный адрес. Вторая используется для того чтобы внести депозит токенов в смарт-контракт, для чего необходимо использовать комбинацию функций approve + transferFrom. Благодаря функции approve, пользователь дает разрешение смарт-контракту на вывод собственных средств, который осуществляется при помощи функции transferFrom.

Также известно, что токены были заморожены в следующих контрактах:

мы не принимаем токены и переводы с контрактов что это значитВ контракте Golem утеряно 310,067 токенов GNT

мы не принимаем токены и переводы с контрактов что это значитВ контракте Augur 242 токена REP

мы не принимаем токены и переводы с контрактов что это значитВ контракте Digix DAO 814 токенов DGD

мы не принимаем токены и переводы с контрактов что это значитВ контракте FirstBlood 14,506 токенов 1ST

Возможные решения

Как отметил Майкл Малдерс, блокчейн-разработчик в компании The Ledger, для борьбы с данной проблемой члены сообщества Ethereum выпустили альтернативные стандарты токенов, которые могут заменить ERC20 в будущем.

Стандарт ERC223

ERC223 был разработан пользователем Dexaran, который детально проанализировал работу токенов стандарта ERC20 и выпустил свой, как альтернативу, в марте 2017 года. ERC223 позволяет транзакциям с токенами вести себя так же, как и в случае с эфиром — в случае ошибки функции transfer транзакция отменяется, и средства остаются у отправителя. Для этого стандарт ERC223 вводит новые функции, которых нет в ERC20, а именно:

мы не принимаем токены и переводы с контрактов что это значитЕдиную функцию transfer (вместо transfer и transferFrom) с тремя параметрами address _to, uint _value, bytes data.

мы не принимаем токены и переводы с контрактов что это значитФункцию tokenFallBack для принимающего контракта, которая определяет тип отправленных монет.

Таким образом, если будет допущена ошибка в одном из трех параметров функции transfer, или же контракт не будет поддерживать tokenFallBack, то транзакция не состоится и средства вернутся на адрес отправителя.

Стандарт ERC777

ERC777 был выпущен в ноябре прошлого года и его главная цель — решить проблемы ERC20 в виде отсутствия механизмов обработки транзакций. В связи с чем данный стандарт токенов предлагает широкий выбор инструментов для обработки транзакций токенов. Для этого стандарт ERC777 использует новый набор функций:

мы не принимаем токены и переводы с контрактов что это значитВместо функции transfer предусмотрена единая функция send;

мы не принимаем токены и переводы с контрактов что это значитВместо approve используется authoriseOperator;

мы не принимаем токены и переводы с контрактов что это значитВместо tokenFallback существует tokensReceived.

Данный подход гарантирует, что эти функции не будут препятствовать, блокировать или пересекаться с функциями других стандартов токенов. Из недостатков, однако, разработчики отмечают, что новые функции токенов стандарта ERC777 могут косвенно перенять баги токенов ERC20, поскольку они не будут блокировать их.

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

Другие стандарты

Также разработчиками были представлены такие стандарты, как ERC827, который объединяет в себе преимущества ERC223 с функциями ERC20. Или стандарт ERC664, который позволяет обновлять контракты токенов, однако несет в себе критичный баг ERC20.

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

Источник

мы не принимаем токены и переводы с контрактов что это значитuberipuzo

uberipuzo

Кошелек Payeer стал принимать Bitcoin и Ethereum.

Posts from This Journal by “#payeer” Tag

YOBIT+PAYEER+ADVCASH = зачисление 0 секунд!

YOBIT+PAYEER+ADVCASH = зачисление 0 секунд! Сегодня впервые попробовал перевести фиат на крипто-биржу YOBIT : https://goo.gl/irx0NL с платёжных…

Варианты пополнения электронного кошелька AdvCash. Если аккаунт AdvCash не верифицирован, то пополнять баланс картами и банковским переводом…

Я купил мощности SCRYPT на HashFlare со скидкой 5% по промокоду. Изза роста курса LTC (Litecoin) на криптобиржах, повысилась привлекательность…

Варианты вывода фиата с криптобиржи EXMO с минимальными издержками. Для меня эта тема пока малоактуальна, ибо я планирую только разгонять мой…

Что должен знать новичок, который хочет заняться криптовалютами.

Что должен знать новичок, который хочет заняться криптовалютами. В начале июля исполнится 3 месяца, как я занимаюсь криптовалютами. Оглядываясь…

Особенности вывода кодами криптобиржи BTC-E при помощи сервиса Bestchange.

Особенности вывода фиатных валют кодами криптобиржи BTC-E на платёжные системы при помощи сервиса Bestchange. На криптобирже BTC-E имеется такой…

Моё мнение о криптобирже BTC-E.

Моё мнение о криптобирже BTC-E. На BTC-E очень мало инструментов. Причём некоторые уже не нужны. (несколько торгуемых монет имеют неясные…

Краткий обзор криптобиржи LiveCoin.

Источник

Смарт контракты Ethereum: что делать при ошибке в смартконтракте или техники миграции

При написании смартконтрактов важно помнить, что после загрузки в блокчейн, они уже не могут быть изменены, а следовательно, не могут быть внесены какие-либо улучшения или исправлены какие-то найденные ошибки! Все мы знаем, что ошибки есть в любой программе, а вернувшись к написанному пару месяцев назад коду мы всегда найдем, что там можно улучшить. Как же быть? Единственно возможный вариант – это загрузить новый контракт с исправленным кодом. Но как же быть, если на базе имеющегося контракта уже выпущены токены? На помощь нам приходит миграция! За последний год я попробовал много разных техник ее реализации, проанализировал применяемые в других крупных блокчейн проектах и что-то поизобретал сам. Подробности под катом.

мы не принимаем токены и переводы с контрактов что это значит

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

Миграция с ERC20-совместимого контракта

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

К сожалению, интерфейс ERC20-совместимого контракта не позволяет узнать список всех держателей токенов, поэтому при миграции нам придется выяснить полный список держателей из какого-то другого источника, например, выгрузив его из etherscan.io. Пример контракта, на который осуществляется миграция, приведен в следующем листинге:

Конструктор контракта получает в качестве параметров адрес исходного ERC20-совместимого контракта, а также список держателей токенов, выгруженный вручную через etherscan.io. Следует обратить внимание, что в последней сроке конструктора проверяем, что количество токенов после миграции не изменилось, а следовательно, ни один держатель токенов не забыт. Необходимо учитывать, что такая миграция возможна лишь в том случае, если количество держателей токенов невелико и цикл по ним всем возможен в рамках одной транзакции (лимита газа, установленного в Ethereum для одной транзакции). Если все же количество держателей токенов не позволяет мигрировать за одну транзакцию, то эту функциональность придется вынести в отдельную функцию, которую можно будет вызвать необходимое количество раз, а контракт в этом случае будет выглядеть так:

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

Недостатки данного решения заключаются в следующем:

Миграция между этапами краудсейла

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

В это поле необходимо добавлять всех держателей токенов. Если контракт уже на ранних этапах сбора разрешает делать держателям перемещения токенов, т.е. реализует transfer(), необходимо позаботиться о том, чтобы массив обновлялся, например, как-то так

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

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

Миграция со сжиганием исходных токенов

Все-таки раз мы говорим про миграцию, а не про дублирование токенов в новом смартконтракте, то необходимо озаботиться вопросом уничтожения (сжигания) токенов на исходном контракте при создании их копии на новом. Очевидно, что недопустимо оставлять в смартконтракте «дыру», которая позволила бы кому угодно, будь он даже владельцем смартконтракта, сжигать токены других держателей. Такой смартконтракт будет просто скамовым! Осуществлять такого рода манипуляции над своими токенами может только их держатель, а следовательно, и осуществлять миграцию должен сам держатель. Владелец смартконтракта в данном случае может только запустить эту миграцию (перевести смартконтракт в состояние миграции). Пример реализации такой миграции я встретил в проекте GOLEM (ссылка на их гитхаб в конце поста), затем реализовал ее в нескольких своих проектах.

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

В исходном контракте токена должна быть реализована следующая дополнительная функциональность:

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

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

А можно поступить очень просто! Ведь любой пользователь криптовалюты, даже самый-самый начинающий, умеет хорошо делать одно – отправлять крипту со своего адреса на какой-то другой. Так пусть таким адресом будет адрес нашего смартконтракта, а его fallback функция в режиме «миграции» будет просто вызвать migrate(). Таким образом, держателю токенов для осуществления миграции будет достаточно перевести хотя бы 1 wei на адрес смартконтракта, находящегося в режиме «миграции», чтобы произошло чудо!

Заключение

Рассмотренные решения концептуально покрывают все возможные способы осуществления миграции токенов, хотя возможны вариации в конкретных реализациях. Отдельного внимания достоин подход «перегонного сосуда» (ссылка в конце поста). Независимо от используемого вами подхода к миграции, помните, что смартконтракт – это не просто программа, выполняемая внутри виртуальной машины Ethereum, а это некий отчужденный независимый договор, а любая миграция предполагает, что вы меняете условия этого договора. Уверены ли вы, что держатели токенов хотят поменять условия договора, который заключили, приобретая токены? Это на самом деле хороший вопрос. И существует очень правильная практика, «спрашивать» держателей токенов о том, хотят ли они «переехать» на новый контракт. Именно осуществление миграции через голосование я реализовал в смартконтракте своего проекта PROVER, с текстом контракта можно познакомиться на моем GitHub-е. Ну и конечно приглашаю присоединяться к ICO моего проекта PROVER.

Надеюсь, что все это кому-то полезно и нужно :).

Источник

Простыми словами: смарт-контракты, Ethereum, ICO

Смарт-контракты сделали криптовалюту Ethereum второй по величине. Рассказываем о том, что это такое и как это связано с модным понятием ICO.

мы не принимаем токены и переводы с контрактов что это значит

мы не принимаем токены и переводы с контрактов что это значит

Про Биткойн слышали многие, что и не удивительно — эта криптовалюта была первой и до сих пор остается самой популярной и самой крупной. Успех Биткойна вдохновил на подвиги кучу людей, поэтому за последние пару лет разных криптовалют — так называемых альткойнов — насоздавали ужас сколько, больше 1000.

Так вот, Биткойн — на данный момент однозначно номер один. А знаете, какая криптовалюта на втором месте? Ethereum. Когда мы говорим про места, мы имеем в виду капитализацию, то есть суммарную стоимость всех монет валюты.

мы не принимаем токены и переводы с контрактов что это значит

Капитализация и цены TOP-5 криптовалют. Источник

Как видите, Ethereum с большим отрывом опережает другие «альткойны», а в июне 2017 чуть было даже не обогнал Биткойн, «великий и ужасный». Давайте разберемся, что же в Ethereum такого особенного и почему подавляющее большинство проводимых в этом году ICO используют именно его.

Идея Ethereum

Ethereum запустился совсем недавно, 30 июля 2015 года. Одним из его создателей был нынче известный в блокчейн-тусовке и, не побоюсь этого слова, влиятельный Виталик Бутерин. Он родился в России, но с шести лет жил в Канаде. На тот момент, когда он изложил свои идеи, которые в итоге легли в основу сети Ethereum, ему было 19 лет.

Так вот, в чем же идея? В сети Биткойн с точки зрения пользователя все устроено довольно просто. Есть кошельки, можно передавать деньги с одного кошелька на другой или на несколько сразу. Сеть построена на весьма остроумных принципах, позволяющих обходиться без единого центра, но задачи решаются вполне классические. Обычная платежная система, по большому счету: люди, деньги, переводы — все, больше ничего нет.

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

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

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

И вот это нововведение существенно расширило сферу применения блокчейн-валют.

Примеры смарт-контрактов

Какие программы можно написать? Да какие угодно. Например, финансовую пирамиду. Для этого в сети Ethereum достаточно создать смарт-контракт со следующими правилами:

Или можно устроить аукцион. Пишем программу:

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

Напомним преимущество: это блокчейн — все уверены, что никто не жульничает, все видят текст программы и понимают, что она работает именно так, как в ней написано. Программа — не человек. Она не скроется с деньгами, не обанкротится, и так далее. Если, конечно, в ней нет багов или «неожиданного поведения».

Ограничения смарт-контрактов

Но есть и существенные ограничения, вот некоторые из них:

Иными словами, как и в других областях, многое зависит от профессионализма авторов контрактов.

Главное использование смарт-контрактов

мы не принимаем токены и переводы с контрактов что это значит

Простой смарт-контракт Ethereum. Имеющаяся ошибка позволяет украсть все деньги, кто нашел — молодец

Пирамиды, голосования, казино, лотереи — это все здорово. Но что оказалось действительно удобно делать при помощи смарт-контрактов — это надувать пузыри собирать деньги на свой стартап.

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

Смарт-контракты дали миллиону «криптоинвесторов» возможность «швырять деньги в монитор».мы не принимаем токены и переводы с контрактов что это значит

ICO — Initial Coin Offering

мы не принимаем токены и переводы с контрактов что это значит

График стоимости Ethereum. Источник

Обсудим ICO поподробнее. Типичная схема криптостартапа такова:

Сумма обычно составляет 10-20 миллионов долларов и собирается буквально за несколько минут, иногда дней. Как правило, ICO ограничено по времени или собираемой сумме — и это формирует ажиотаж.

Окупаемость криптоинвестиций

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

Как правило, сами токены выводятся на криптобиржу, и открываются торги. Те, кто не успел поучаствовать в ICO, могут купить их уже на бирже — скорее всего, подороже. Те, кто участвовал в ICO, чтобы потом перепродать подороже, могут их на бирже продать.

Иногда первых настолько больше, что цена растет стремительно, и капитализация проекта раздувается до миллиарда долларов. При том, что у него нет прибыли нет продукта, есть только идея, план и, в лучшем случае, команда.

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

В 2017 году (к сентябрю) на ICO разные проекты уже собрали порядка 1,7 миллиарда долларов. Об успешных проектах слышно мало, но инвесторы не теряют оптимизма.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *