Until there was an interface to visualize and otherwise interpret the EOSCrowdsale windows, this was not an easy task. @lukestokes posted an interface that doesn't rely on MetaMask and I then forked and improved it. Having this interface made contributing to future windows for non-MetaMask users feasible, so here it is.
Important note If you have MetaMask, and have already contributed to the EOSCrowdsale through their interface, you can use the official EOSCrowdsale interface to contribute to future windows by selecting your desired window from the dropdown.
These instructions are specifically for contributing to a future window, if you are not familiar with this ICO and MEW, you should read EOS Token Sale with MyEtherWallet - The Complete Guide first.
Instructions
- Read this article and follow the instructions
- From the interface referenced in the last step, choose a window in the future you would like to contribute to. Note: Closed windows will appear red, current window is yellow, future windows are after the yellow row. You just need the number, for example
340
- Go to https://www.myetherwallet.com/#contracts
- Under heading Select Existing Contract in a dropdown, select EOS Contribution
- Click
Access
- Under the "Read / Write Contract" heading, in the dropdown select
buyWithLimit
. - In the field
day
put the number you decided on earlier that represents the future window you would like to contribute to. - In the field
limit
put0
(if you would like to know what this does, please scroll down.) - Load your wallet using any one of the methods listed.
- Click
Unlock
button - Click
Write
button - in Amount to send to enter the amount you would like to contribute and allow the wallet to suggest a Gas Limit. If it does not autopopulate, enter
90000
or more. If your TX fails, increase Gas Limit. If you would like your TX to go through more quickly, adjust your gas limit accordingly. - Click
Generate Transaction
button - Check the details of the transaction, and if you are confident with the details you have entered, click
Yes, I am sure! Make transaction
- If all went well, a green bar will appear at the bottom of the page including a link to your transaction on the blockchain.
If you would like you can double check that this worked, after you have given your buyWithLimit
transaction enough time to be confirmed, that is.
Notes
- If you contribute to a closed (invalid) window it will fail and gas will be exhausted.
About the limit functionality
When any positive number other than 0
is entered, it will protect you from contributing multiple times to the same window with the same amount. This is to protect you in the case of network congestion, and pending transactions. For most people 0
is adequate.
If you need more information about contributing to the EOSCrowdsale using MyEtherWallet, you should also check out EOS Token Sale with MyEtherWallet - The Complete Guide
Very good step by step explanation!
How about Parity? After add EOS address as Contract created from custom ABI, every EOS function can be called very easy.
Yes.
Thanks for this explanation!
Simple sending ether to contract address works the same as calling buyWithLimit() with zero limit.
But what is really needed and NOT explained in your article - how to claim tokens and how to generate and register EOS key (without which yoo'll be unable to use tokens after EOS blockchain launch).
Also, if you contribute to a closed window this instruction in buyWithLimit()
assert(day >= today());
will throw exception. Transaction'll fail using all gas.
Updated post, there was a typo at "Amount to send." If you sent transaction, please send me the tx hash and I'll refund the fee.
Simple sending, or payable root function defined as
()
in contract actually callsbuy()
which callsbuyWithLimit
like sobuyWithLimit(today(), 0)
You should have read the article more closely. At the end of the article, it says the following.
Click that link. This article is specifically for contributing to a future window.
Sorry, hadn't understand it's specifically to a future window. Also, can't understand why one may want to do such a strange thing.
Because this is a no fomo ICO.
in step 4. you say..."EOS Distribution" should it be EOS Contribution?
The path to their tool, after you've agreed to terms is
http://eos.io/distribution
... Technically, either works. It's a distribution tool, EOS is distributed by contributions.Great. Thanks. :)
I realize you were referring to the existing contract in MEW, yes, that was a typo. The correct existing contract in MEW is "EOS Contribution"
This post received a 3.7% upvote from @randowhale thanks to @sandwich! For more information, click here!
@sandwich Thanks for the awesome guide ! I have 1 question though regarding instruction number 7.
"In the field 'day' put the number you decided on earlier that represents the future window you would like to contribute to"
Period/Window 0 is day 1 till 5 or Period/Window 0 is considered as day 0 or day 1?
For example, if I want to contribute to Window 30, shoud I insert day 30 (same number as Window 30), day 31 (Window 0 considered as 1 day)or day 35(Window 0 has 5 days)?
Sorry for the late reply, Period/Window 0 is days 1-5. Unfortunately, they titled this field "days" which is a misnomer in this context. There's a few of those in this contract.
Thank you for the reply. I hope someone can change the field to 'Period/Window' to avoid confusion and wrong contribution to the intended window. Anyway, thanks again!
is "day" the same at Period #?
another question. If I want to specifically indicate a certain amount of ETH has been received for such period how would I do that? I though this is the limit but you didn't explain it for example if I put limit of 2500 does it mean the transaction will be canceled if 2500 ETH has already been received for the specific period?
Thanks
Yes, "day" is a misnomer, it's referring to "period"
"When any positive number other than 0 is entered, it will protect you from contributing multiple times to the same window with the same amount. This is to protect you in the case of network congestion, and pending transactions. For most people 0 is adequate."
From the EOS website:
"Use BuyWithLimit function in the EOS Distribution Contract
If you would like to purchase EOS Tokens in a future period, you can use the BuyWithLimit function in the EOS Distribution Contract and specify which period you wish to purchase EOS Tokens. If it is a BuyWithLimit transaction and you have specifically indicated that the transaction will be terminated if a certain amount of ETH has already been received for such period, then your transaction will be cancelled."
I would like to limit the amount of ETH I spend on each EOS token, is this possible as suggested on the site? I have dug deeper and it seems its only possible at the time you contribute which really doesn't help much if at all as more ETH can be added afterwards without any change to your particular contract.