Как дёшево получить свои токены EOS и вообще уменьшить стоимость любой транзакции в сети эфира
Привет, жители Голоса! Вместо первого поста-приветствия решил написать инструкцию, которая может оказаться полезной для вас, если вы участвуете в ICO EOS или вообще делаете транзакции в сети Ethereum.
Скриншоты с сайта ethereum.org и eos.io
На голосе уже есть несколько подробных инструкций по поводу того, как можно поучаствовать в ICO EOS, которая проходит в настоящее время (и закончится только в следующем году). Например, рекомендую эту инструкцию от @litrbooh (если вас интересует востребование ваших токенов, то переходите сразу к шагу 4).
Купить токены очень легко - достаточно лишь отправить эфир на кошелёк ICO. Однако при необходимости получить купленные токены на свой кошелёк, люди сталкиваются с неожиданной проблемой: стоимость транзакции оказывается очень большой. К примеру, посмотрите эту транзакцию:
Её стоимость - 12 долларов 43 цента, или почти 750 рублей за одну транзакцию!
Почему так происходит?
Для востребования токенов мы вызываем инструкцию ClaimAll
. Однако, эта инструкция работает таким образом, что при её выполнении в большинстве случаев рекурсивно проходятся все окна, независимо от того, участвовали вы в этом окне или нет. Проблема в том, что всего в ICO 351 окно, в котором вы можете поучаствовать в распределении токенов. В конце ICO, для того, чтобы пройти все эти окна, может потребоваться очень много газа, так что, экстраполируя, если цена за востребование токенов сегодня составляет $12, в конце она может доходить до $100 - что, конечно, умопомрачительно дорого, особенно для небольшого количества токенов.
Как можно уменьшить эту сумму?
Есть два способа, которые можно использовать одновременно.
- Уменьшить цену за единицу газа.
- Востребовать токены из конкретного окна.
Уменьшение цены единицы газа
Данная информация относится не только к участию в ICO EOS, а вообще любой транзакции в сети эфира.
Стоимость транзакции в блокчейне эфира складывается из двух вещей:
- Лимит газа
- Цена за единицу газа
Когда вы посылаете инструкцию на адрес смарт-контракта (например, при востребовании токенов) нельзя указывать слишком маленький лимит газа - иначе транзакция оборвется с сообщением out of gas
и вы потеряете все деньги, которые были затрачены на обработку транзакции (несмотря на то, что она закончилась с ошибкой). Так что, чем больший лимит газа вы установите, тем большая уверенность у вас будет в успешном прохождении транзакции. То есть в этом случае наоборот, не нужно пытаться установить минимальный лимит газа - всё равно весь "лишний" газ, который не потребовался для транзакции, вернется к вам. Так, для востребования токенов ставьте лимит газа в 2-3 миллиона.
Стоимость транзакции нам поможет уменьшить 2 пункт.
В большинстве случаев, стоимость единицы газа рассчитывается автоматически. К примеру, на данный момент онлайн кошелек MEW по умолчанию выставляет стоимость газа в 21 gwei. Такая стоимость гарантирует, что ваша транзакция будет обработана как можно быстрее и попадет в ближайшие блоки блокчейна эфира.
Однако в некоторых случаях, нам не важна скорость обработки - для вас неважно, получите ли вы свои токены через несколько секунд, или через несколько минут. Поэтому вы можете установить минимально возможную цену за единицу газа, к примеру 1 gwei. Текущую "безопасную" минимальную цену газа можно, например, посмотреть на этом сайте, в правой колонке в строке SafeLow
- она меняется в зависимости от загруженности сети. Так, при цене газа в 1 gwei, транзакция, которая стоила 12 долларов, будет стоить 60 центов. В кошельке MyEtherWallet цена газа настраивается справа вверху:
2. Востребование токенов из конкретного окна.
Скорее всего, покупая токены вы не вкладывались в абсолютно все окна, а поучаствовали в одном конкретном окне. Так что вам нет необходимости требовать свои токены из каждого прошлого окна. К счастью, в смарт-контракте ICO предусмотрена возможность затребовать свои токены из одного конкретного окна, без необходимости проходить через все остальные.
В этой инструкции на steem (на англ. языке) описывается этот способ, если вы используете MyEtherWallet. Если коротко, вы выполняете все те же действия из 4 шага из инструкции на русском языке, однако вместо функции ClaimAll
вы выбираете функцию Claim
, и в текстовом поле пишете номер периода (окна). К примеру, если вы участвовали в 7 периоде, напишите цифру 7 (обратите внимание, что первое окно на самом деле было нулевым, то есть для него ставится цифра 0).
Номер вашего окна можно посмотреть на сайте eosscan.io (сейчас недоступен) или eoschart.com - в первой колонке номер окна, во второй колонке время окончания окна (в UTC).
Надеюсь, для кого-то эта статья поможет избежать лишних затрат.
P.S. Если заметите ошибки, не судите строго. Любые замечания глубоко приветствуются :)