-
Notifications
You must be signed in to change notification settings - Fork 5.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enforcing ABI length checks for return data from calls can be breaking #4116
Comments
I wonder though about the expectation. If it doesn’t return a bool, the old compiler should have taken it as a 0, which means false. I think the real solution is to stop using |
Is there a notable case where an ERC20 might return |
@Ivshti As far as I know, the older ERC20 contracts returned false. Open Zeppelin I think only changed it recently |
OpenZeppelin behaviour in the adex contract is to not return anything, but only throw. Perhaps it returned |
There's an important distinction between what an interface specifies and what a contract does. If the interface says it returns The current convention is for ERC20 tokens to But, suddenly changing Solidity behaviour for these nonstandard return values in a point release isn't a great thing. |
Apparently the reason this worked in the old compiler is that the output memory area overlapping with the input memory area and since the input contained the function selector, it was never all zeroes, and as a result, never |
On @axic's comment, this behaviour is triggered when the child contract ends on a STOP instruction, or when it ends on a RETURN instruction with returnsize of 0, because then the memarea of input is not written to at all, and: MLOAD (inoffset/outoffset) Ensures that this always returns true, since the method signature makes the first 32 bytes always nonzero. This means that contracts that call children that specify return values but end in STOP or RETURN(0) can be tricked into thinking that the input calldata is what is returned by the child. |
Anything that copied BAT contracts would do so.
|
Just to give some background. This behavior was detected on OMG token. And afaik most existing DEX contract will break (will not be able to trade OMG) once compiled with new version. I agree it is not a solidity issue, and I am also not sure the compiler should fix anything. |
Calling a function on a contract that does not return the expected type is a runtime error and should be treated as such. The caller has to decode the data into something. If the returned size is zero, there is no way to create a value out of it and the correct way is to revert. As a workaround, you can use Another way to make an ERC20-non-compliant contract work is by creating an intermediate contract that translates between the two interfaces. |
So I did a bit of digging and found that any token using Open Zeppelin between OpenZeppelin/openzeppelin-contracts@52120a8#diff-da41308b41a2748120cc2cfa52b1ea00 and OpenZeppelin/openzeppelin-contracts@6331dd1#diff-da41308b41a2748120cc2cfa52b1ea00 does not conform to ERC20. So the landscape of tokens which would be affected by this feature is likely to be huge. |
@chriseth Agreed this is a bug in the contracts concerned - but this change in a point-release of Solidity is a breaking change for existing code. |
@Arachnid I agree, we should have been more careful there, so sorry about that. To clarify the Also not that the versioning scheme does not distinguish between bugfix releases and feature releases. We only distinguish breaking (change in the second component of the version number as long as the first is zero) and non-breaking (change only in the last copmonent of the version number, as long as the first is zero) changes, where a change is defined as non-breaking if and only if it does not change the compilability and semantics of previously compilable contracts unless they rely on undocumented or undefined features or bugs in the compiler. |
What about this case of Bad Token It defines
I think is not the case, but also an example of bad implemented token that fail even before the return lenght check (in case you require token transfer to return true, as in spec).. |
Another "high-profile" non ERC20 compatible token is OMG for example.
This is highly problematic for DEXes, as soon as they redeploy their contracts with solidity > 0.4.24 such tokens won't be usable on the platform. |
@3esmit it implicitly returns
As mentioned by @chriseth, it is still possible to compile contracts with non-byzantium mode to remove the length check. I've raised issues at truffle (trufflesuite/truffle-compile#72) and remix (https://github.com/ethereum/remix-ide/issues/1282) to implement support for this option. I hope that will help. We also plan to document this a bit further and raise awareness. I have also created this proof of concept (do not use!) to show it should be possible creating wrappers even for recent Solidity versions: https://gist.github.com/axic/85f12e78885a5336f2806357b1ba6ea1 |
@axic regarding that poc snippet. If someone embeds that into a contract, and calls it internally. So that method Won't that become a |
Yes it would be a Also the free memory area starts now at |
For long term compatibility it may be better to use the free memory pointer, just not update it in the function. |
Created my own version of safe My implementation: |
This issue is now 22 days old and I see no response in the community. This is a critical issue for the affected contracts. When users send their BadToken to any contract (DEX, DutchEx, ... ) compiled after solc 0.4.22 the token will most likely be stuck on such contracts |
Well, Chris posted this a couple of days ago: https://medium.com/@chris_77367/explaining-unexpected-reverts-starting-with-solidity-0-4-22-3ada6e82308c |
I compiled a list of affected contracts from the tokens listed on etherdelta. 130/913 tokens are affected. |
I published an article about this issue, https://medium.com/@lukas.berlin/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca with a safeTransfer proposal similar to the proposal of @BrendanChou |
Has anyone looked into |
@BrendanChou Yes the faulty interface from OpenZeppelin also includes approve() and transferFrom(), so transferFrom() has the same problem as transfer(). It would require the same solution. I have never seen a contract that calls approve() |
Most DEXs will probably not have to use |
As discussed in ethereum/solidity#4116 Due to solidity compiler change after v0.4.22, this wrong transfer function will cause serious issues. We (SECBIT.IO) found many people followed this tutorial on ethereum.org. SHOULD fix this ASAP!
* fix argument * Link to wiki * Fix formatting I'm not sure if this is correct but I think it's better than before. * Whyyyyy (#827) * update online (#769) * Update index.pug * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 * update foundation page * Gh pages ud3 (#790) * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * updating foundation page * updating foundation page again * update/fix on foundation page * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * updating greeter to the current on on gh-pages * update to foundation page * update to brand * Update website (#814) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * Delete e-mail and change press-kit wording * Update Remix URL (#797) * Transfer of zero ERC20 Token must success (#796) * Make check for overflows compliant with ERC20 As my previous change: the ERC20 standard says that a transfer of 0 token MUST success. So we need to replace > by >= when checking for overflows, or the transfer of 0 token will revert ;-) * Transfer of 0 token must success Same as previous change: to be ERC20 compliant, a token must allow transfert of 0 token. * Transfer of zero token MUST success If you look at the ERC20 token standard, here: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer You can read that: Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. But if you are too strict when checking for overflows, as now, the 0 token transaction will revert <:o) I think we need to change the > into >= to allow transfers of 0 token as required by the standard. * Update crowdsale.sol (#786) * Develop (#792) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Emit Events (#808) * Update token-erc20.sol * Update token-erc20.sol * Add "public" to minimum viable token (#807) * Develop into master (#804) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * both -> two distinct (#810) because there are three clients but both implies that there are only two clients * Revert "Develop (#792)" (#812) This reverts commit 4f29530. * Add 'public' to remaining variables in MyToken (#801) * Update dao-association.sol (#798) Updated the contract in favor of the latest solidity build compilation. * Solidity fixes (#699) * Line has no effect The "numberOfVotes" variable is set to the new value two lines further down, so this line does nothing. * Proposals should be marked as executed whether they pass or not This prevents proposals that lost the vote from having a chance of submitting more yea votes after the close of voting, and still get executed. * Hudson 4-10-18 Updates (#826) * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * Delete e-mail and change press-kit wording * Update Remix URL (#797) * Transfer of zero ERC20 Token must success (#796) * Make check for overflows compliant with ERC20 As my previous change: the ERC20 standard says that a transfer of 0 token MUST success. So we need to replace > by >= when checking for overflows, or the transfer of 0 token will revert ;-) * Transfer of 0 token must success Same as previous change: to be ERC20 compliant, a token must allow transfert of 0 token. * Transfer of zero token MUST success If you look at the ERC20 token standard, here: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer You can read that: Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. But if you are too strict when checking for overflows, as now, the 0 token transaction will revert <:o) I think we need to change the > into >= to allow transfers of 0 token as required by the standard. * Update crowdsale.sol (#786) * Develop (#792) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Emit Events (#808) * Update token-erc20.sol * Update token-erc20.sol * Add "public" to minimum viable token (#807) * Develop into master (#804) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Revert "Develop (#792)" (#812) This reverts commit 4f29530. * Add 'public' to remaining variables in MyToken (#801) * Update dao-association.sol (#798) Updated the contract in favor of the latest solidity build compilation. * Solidity fixes (#699) * Line has no effect The "numberOfVotes" variable is set to the new value two lines further down, so this line does nothing. * Proposals should be marked as executed whether they pass or not This prevents proposals that lost the vote from having a chance of submitting more yea votes after the close of voting, and still get executed. * Update Links (#815) * Created hackternship.md This will eventually be the address for hackternship.ethereum.org * Update and rename hackternship.md to grants.md * updated page * Updated votingDeadline variable to minExecutionDate (#818) * Updated votingDeadline variable to minExecutionDate * Update dao-congress.sol * Removed horizontal overflow generated by figures on mobile (#821) * Updated votingDeadline variable to minExecutionDate (#820) * Update Twitter links (#822) * Fixed ms dependency issue (#825) * Creating equality between master and gh-pages (#828) * update online (#769) * Update index.pug * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 * update foundation page * Gh pages ud3 (#790) * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * updating foundation page * updating foundation page again * update/fix on foundation page * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * updating greeter to the current on on gh-pages * update to foundation page * update to brand * Update website (#814) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * Delete e-mail and change press-kit wording * Update Remix URL (#797) * Transfer of zero ERC20 Token must success (#796) * Make check for overflows compliant with ERC20 As my previous change: the ERC20 standard says that a transfer of 0 token MUST success. So we need to replace > by >= when checking for overflows, or the transfer of 0 token will revert ;-) * Transfer of 0 token must success Same as previous change: to be ERC20 compliant, a token must allow transfert of 0 token. * Transfer of zero token MUST success If you look at the ERC20 token standard, here: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer You can read that: Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. But if you are too strict when checking for overflows, as now, the 0 token transaction will revert <:o) I think we need to change the > into >= to allow transfers of 0 token as required by the standard. * Update crowdsale.sol (#786) * Develop (#792) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Emit Events (#808) * Update token-erc20.sol * Update token-erc20.sol * Add "public" to minimum viable token (#807) * Develop into master (#804) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * both -> two distinct (#810) because there are three clients but both implies that there are only two clients * Revert "Develop (#792)" (#812) This reverts commit 4f29530. * Add 'public' to remaining variables in MyToken (#801) * Update dao-association.sol (#798) Updated the contract in favor of the latest solidity build compilation. * Solidity fixes (#699) * Line has no effect The "numberOfVotes" variable is set to the new value two lines further down, so this line does nothing. * Proposals should be marked as executed whether they pass or not This prevents proposals that lost the vote from having a chance of submitting more yea votes after the close of voting, and still get executed. * Hudson 4-10-18 Updates (#826) * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * Delete e-mail and change press-kit wording * Update Remix URL (#797) * Transfer of zero ERC20 Token must success (#796) * Make check for overflows compliant with ERC20 As my previous change: the ERC20 standard says that a transfer of 0 token MUST success. So we need to replace > by >= when checking for overflows, or the transfer of 0 token will revert ;-) * Transfer of 0 token must success Same as previous change: to be ERC20 compliant, a token must allow transfert of 0 token. * Transfer of zero token MUST success If you look at the ERC20 token standard, here: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer You can read that: Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. But if you are too strict when checking for overflows, as now, the 0 token transaction will revert <:o) I think we need to change the > into >= to allow transfers of 0 token as required by the standard. * Update crowdsale.sol (#786) * Develop (#792) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Emit Events (#808) * Update token-erc20.sol * Update token-erc20.sol * Add "public" to minimum viable token (#807) * Develop into master (#804) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Revert "Develop (#792)" (#812) This reverts commit 4f29530. * Add 'public' to remaining variables in MyToken (#801) * Update dao-association.sol (#798) Updated the contract in favor of the latest solidity build compilation. * Solidity fixes (#699) * Line has no effect The "numberOfVotes" variable is set to the new value two lines further down, so this line does nothing. * Proposals should be marked as executed whether they pass or not This prevents proposals that lost the vote from having a chance of submitting more yea votes after the close of voting, and still get executed. * Update Links (#815) * Created hackternship.md This will eventually be the address for hackternship.ethereum.org * Update and rename hackternship.md to grants.md * updated page * Updated votingDeadline variable to minExecutionDate (#818) * Updated votingDeadline variable to minExecutionDate * Update dao-congress.sol * Removed horizontal overflow generated by figures on mobile (#821) * Updated votingDeadline variable to minExecutionDate (#820) * Update Twitter links (#822) * Fixed ms dependency issue (#825) * Updated the grants page Please accept. * Update crowdsale.sol Fix compile bug on Ethereum Wallet 0.10.0 * Update dao-liquid-democracy.sol fix compile error * Updated grants.ethereum.org * updated grants.md added new fellowships * Update token.md * Correct wrong explanation of keyword 'now'. The keyword **now** was described as 'today'. Updated to describe the keyword **now** as 'current time'. * Added new funding source * Missing word * Invoking events without "emit" prefix is deprecated. * Functions in interfaces should be declared external. * Updating network ID typo and providing more context to Geth commands 1. The network ID mentioned in the Geth command and the supporting text are different. Updated the command's network ID to match. 2. Adding more context to the two Geth commands being used. * Update token.md * added coinbase funders * adding emit to events and removing depricated ways (#847) * removes welcome gitter sidecar * prefixed emit for events. Reused the _transfer function added emit's as prefixes to events * Add buy function missed return statement * make transfer func compatible to eip20 standard As discussed in ethereum/solidity#4116 Due to solidity compiler change after v0.4.22, this wrong transfer function will cause serious issues. We (SECBIT.IO) found many people followed this tutorial on ethereum.org. SHOULD fix this ASAP! * Fixing wiki link spacing on footer * update build instructions * Update build
Most of the incompatible ERC20 tokens (above 1703) have used Check this blog post for detailed report. And also, we are trying to make a working solution for the dApps and dexs, which is similar to the work of @lukas-berlin and @BrendanChou. But using Hoping not to break anything. Help review please. |
Hello everyone, |
Is there a script-able way to test if a contract has this issue? |
Adelaide is a static analysis tool which could detect issues like Try it if you are interested. https://github.com/sec-bit/adelaide/blob/secbit-ssae/README.secbit.md |
Great, thanks! Has there been any progress with https://github.com/sec-bit/badERC20Fix/blob/master/badERC20Fix.sol ? It looks good to me, but I am very new to solidity and so that doesn't mean anything. |
@wysenynja Different DEXs take diff ways. This is 0x trick and this is Loopring one. |
Looks like uniswap didn’t know about this. https://mobile.twitter.com/UniswapExchange/status/1072286775115161611 |
I realize this is the solidity repo, but does anyone have a way to handle this in Vyper? |
As discussed in ethereum/solidity#4116 Due to solidity compiler change after v0.4.22, this wrong transfer function will cause serious issues. We (SECBIT.IO) found many people followed this tutorial on ethereum.org. SHOULD fix this ASAP!
* fix argument * Link to wiki * Fix formatting I'm not sure if this is correct but I think it's better than before. * Whyyyyy (#827) * update online (#769) * Update index.pug * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 * update foundation page * Gh pages ud3 (#790) * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * updating foundation page * updating foundation page again * update/fix on foundation page * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * updating greeter to the current on on gh-pages * update to foundation page * update to brand * Update website (#814) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * Delete e-mail and change press-kit wording * Update Remix URL (#797) * Transfer of zero ERC20 Token must success (#796) * Make check for overflows compliant with ERC20 As my previous change: the ERC20 standard says that a transfer of 0 token MUST success. So we need to replace > by >= when checking for overflows, or the transfer of 0 token will revert ;-) * Transfer of 0 token must success Same as previous change: to be ERC20 compliant, a token must allow transfert of 0 token. * Transfer of zero token MUST success If you look at the ERC20 token standard, here: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer You can read that: Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. But if you are too strict when checking for overflows, as now, the 0 token transaction will revert <:o) I think we need to change the > into >= to allow transfers of 0 token as required by the standard. * Update crowdsale.sol (#786) * Develop (#792) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Emit Events (#808) * Update token-erc20.sol * Update token-erc20.sol * Add "public" to minimum viable token (#807) * Develop into master (#804) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * both -> two distinct (#810) because there are three clients but both implies that there are only two clients * Revert "Develop (#792)" (#812) This reverts commit 4f29530666857c07c53dc5c503648ef4a2ba411c. * Add 'public' to remaining variables in MyToken (#801) * Update dao-association.sol (#798) Updated the contract in favor of the latest solidity build compilation. * Solidity fixes (#699) * Line has no effect The "numberOfVotes" variable is set to the new value two lines further down, so this line does nothing. * Proposals should be marked as executed whether they pass or not This prevents proposals that lost the vote from having a chance of submitting more yea votes after the close of voting, and still get executed. * Hudson 4-10-18 Updates (#826) * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * Delete e-mail and change press-kit wording * Update Remix URL (#797) * Transfer of zero ERC20 Token must success (#796) * Make check for overflows compliant with ERC20 As my previous change: the ERC20 standard says that a transfer of 0 token MUST success. So we need to replace > by >= when checking for overflows, or the transfer of 0 token will revert ;-) * Transfer of 0 token must success Same as previous change: to be ERC20 compliant, a token must allow transfert of 0 token. * Transfer of zero token MUST success If you look at the ERC20 token standard, here: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer You can read that: Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. But if you are too strict when checking for overflows, as now, the 0 token transaction will revert <:o) I think we need to change the > into >= to allow transfers of 0 token as required by the standard. * Update crowdsale.sol (#786) * Develop (#792) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Emit Events (#808) * Update token-erc20.sol * Update token-erc20.sol * Add "public" to minimum viable token (#807) * Develop into master (#804) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Revert "Develop (#792)" (#812) This reverts commit 4f29530666857c07c53dc5c503648ef4a2ba411c. * Add 'public' to remaining variables in MyToken (#801) * Update dao-association.sol (#798) Updated the contract in favor of the latest solidity build compilation. * Solidity fixes (#699) * Line has no effect The "numberOfVotes" variable is set to the new value two lines further down, so this line does nothing. * Proposals should be marked as executed whether they pass or not This prevents proposals that lost the vote from having a chance of submitting more yea votes after the close of voting, and still get executed. * Update Links (#815) * Created hackternship.md This will eventually be the address for hackternship.ethereum.org * Update and rename hackternship.md to grants.md * updated page * Updated votingDeadline variable to minExecutionDate (#818) * Updated votingDeadline variable to minExecutionDate * Update dao-congress.sol * Removed horizontal overflow generated by figures on mobile (#821) * Updated votingDeadline variable to minExecutionDate (#820) * Update Twitter links (#822) * Fixed ms dependency issue (#825) * Creating equality between master and gh-pages (#828) * update online (#769) * Update index.pug * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 * update foundation page * Gh pages ud3 (#790) * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * updating foundation page * updating foundation page again * update/fix on foundation page * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * updating greeter to the current on on gh-pages * update to foundation page * update to brand * Update website (#814) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * Delete e-mail and change press-kit wording * Update Remix URL (#797) * Transfer of zero ERC20 Token must success (#796) * Make check for overflows compliant with ERC20 As my previous change: the ERC20 standard says that a transfer of 0 token MUST success. So we need to replace > by >= when checking for overflows, or the transfer of 0 token will revert ;-) * Transfer of 0 token must success Same as previous change: to be ERC20 compliant, a token must allow transfert of 0 token. * Transfer of zero token MUST success If you look at the ERC20 token standard, here: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer You can read that: Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. But if you are too strict when checking for overflows, as now, the 0 token transaction will revert <:o) I think we need to change the > into >= to allow transfers of 0 token as required by the standard. * Update crowdsale.sol (#786) * Develop (#792) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Emit Events (#808) * Update token-erc20.sol * Update token-erc20.sol * Add "public" to minimum viable token (#807) * Develop into master (#804) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * both -> two distinct (#810) because there are three clients but both implies that there are only two clients * Revert "Develop (#792)" (#812) This reverts commit 4f29530666857c07c53dc5c503648ef4a2ba411c. * Add 'public' to remaining variables in MyToken (#801) * Update dao-association.sol (#798) Updated the contract in favor of the latest solidity build compilation. * Solidity fixes (#699) * Line has no effect The "numberOfVotes" variable is set to the new value two lines further down, so this line does nothing. * Proposals should be marked as executed whether they pass or not This prevents proposals that lost the vote from having a chance of submitting more yea votes after the close of voting, and still get executed. * Hudson 4-10-18 Updates (#826) * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * Delete e-mail and change press-kit wording * Update Remix URL (#797) * Transfer of zero ERC20 Token must success (#796) * Make check for overflows compliant with ERC20 As my previous change: the ERC20 standard says that a transfer of 0 token MUST success. So we need to replace > by >= when checking for overflows, or the transfer of 0 token will revert ;-) * Transfer of 0 token must success Same as previous change: to be ERC20 compliant, a token must allow transfert of 0 token. * Transfer of zero token MUST success If you look at the ERC20 token standard, here: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer You can read that: Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. But if you are too strict when checking for overflows, as now, the 0 token transaction will revert <:o) I think we need to change the > into >= to allow transfers of 0 token as required by the standard. * Update crowdsale.sol (#786) * Develop (#792) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Emit Events (#808) * Update token-erc20.sol * Update token-erc20.sol * Add "public" to minimum viable token (#807) * Develop into master (#804) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Revert "Develop (#792)" (#812) This reverts commit 4f29530666857c07c53dc5c503648ef4a2ba411c. * Add 'public' to remaining variables in MyToken (#801) * Update dao-association.sol (#798) Updated the contract in favor of the latest solidity build compilation. * Solidity fixes (#699) * Line has no effect The "numberOfVotes" variable is set to the new value two lines further down, so this line does nothing. * Proposals should be marked as executed whether they pass or not This prevents proposals that lost the vote from having a chance of submitting more yea votes after the close of voting, and still get executed. * Update Links (#815) * Created hackternship.md This will eventually be the address for hackternship.ethereum.org * Update and rename hackternship.md to grants.md * updated page * Updated votingDeadline variable to minExecutionDate (#818) * Updated votingDeadline variable to minExecutionDate * Update dao-congress.sol * Removed horizontal overflow generated by figures on mobile (#821) * Updated votingDeadline variable to minExecutionDate (#820) * Update Twitter links (#822) * Fixed ms dependency issue (#825) * Updated the grants page Please accept. * Update crowdsale.sol Fix compile bug on Ethereum Wallet 0.10.0 * Update dao-liquid-democracy.sol fix compile error * Updated grants.ethereum.org * updated grants.md added new fellowships * Update token.md * Correct wrong explanation of keyword 'now'. The keyword **now** was described as 'today'. Updated to describe the keyword **now** as 'current time'. * Added new funding source * Missing word * Invoking events without "emit" prefix is deprecated. * Functions in interfaces should be declared external. * Updating network ID typo and providing more context to Geth commands 1. The network ID mentioned in the Geth command and the supporting text are different. Updated the command's network ID to match. 2. Adding more context to the two Geth commands being used. * Update token.md * added coinbase funders * adding emit to events and removing depricated ways (#847) * removes welcome gitter sidecar * prefixed emit for events. Reused the _transfer function added emit's as prefixes to events * Add buy function missed return statement * make transfer func compatible to eip20 standard As discussed in ethereum/solidity#4116 Due to solidity compiler change after v0.4.22, this wrong transfer function will cause serious issues. We (SECBIT.IO) found many people followed this tutorial on ethereum.org. SHOULD fix this ASAP! * Fixing wiki link spacing on footer * update build instructions * Update build
As discussed in ethereum/solidity#4116 Due to solidity compiler change after v0.4.22, this wrong transfer function will cause serious issues. We (SECBIT.IO) found many people followed this tutorial on ethereum.org. SHOULD fix this ASAP!
* fix argument * Link to wiki * Fix formatting I'm not sure if this is correct but I think it's better than before. * Whyyyyy (#827) * update online (#769) * Update index.pug * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 * update foundation page * Gh pages ud3 (#790) * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * updating foundation page * updating foundation page again * update/fix on foundation page * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * updating greeter to the current on on gh-pages * update to foundation page * update to brand * Update website (#814) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * Delete e-mail and change press-kit wording * Update Remix URL (#797) * Transfer of zero ERC20 Token must success (#796) * Make check for overflows compliant with ERC20 As my previous change: the ERC20 standard says that a transfer of 0 token MUST success. So we need to replace > by >= when checking for overflows, or the transfer of 0 token will revert ;-) * Transfer of 0 token must success Same as previous change: to be ERC20 compliant, a token must allow transfert of 0 token. * Transfer of zero token MUST success If you look at the ERC20 token standard, here: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer You can read that: Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. But if you are too strict when checking for overflows, as now, the 0 token transaction will revert <:o) I think we need to change the > into >= to allow transfers of 0 token as required by the standard. * Update crowdsale.sol (#786) * Develop (#792) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Emit Events (#808) * Update token-erc20.sol * Update token-erc20.sol * Add "public" to minimum viable token (#807) * Develop into master (#804) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * both -> two distinct (#810) because there are three clients but both implies that there are only two clients * Revert "Develop (#792)" (#812) This reverts commit 4f29530666857c07c53dc5c503648ef4a2ba411c. * Add 'public' to remaining variables in MyToken (#801) * Update dao-association.sol (#798) Updated the contract in favor of the latest solidity build compilation. * Solidity fixes (#699) * Line has no effect The "numberOfVotes" variable is set to the new value two lines further down, so this line does nothing. * Proposals should be marked as executed whether they pass or not This prevents proposals that lost the vote from having a chance of submitting more yea votes after the close of voting, and still get executed. * Hudson 4-10-18 Updates (#826) * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * Delete e-mail and change press-kit wording * Update Remix URL (#797) * Transfer of zero ERC20 Token must success (#796) * Make check for overflows compliant with ERC20 As my previous change: the ERC20 standard says that a transfer of 0 token MUST success. So we need to replace > by >= when checking for overflows, or the transfer of 0 token will revert ;-) * Transfer of 0 token must success Same as previous change: to be ERC20 compliant, a token must allow transfert of 0 token. * Transfer of zero token MUST success If you look at the ERC20 token standard, here: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer You can read that: Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. But if you are too strict when checking for overflows, as now, the 0 token transaction will revert <:o) I think we need to change the > into >= to allow transfers of 0 token as required by the standard. * Update crowdsale.sol (#786) * Develop (#792) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Emit Events (#808) * Update token-erc20.sol * Update token-erc20.sol * Add "public" to minimum viable token (#807) * Develop into master (#804) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Revert "Develop (#792)" (#812) This reverts commit 4f29530666857c07c53dc5c503648ef4a2ba411c. * Add 'public' to remaining variables in MyToken (#801) * Update dao-association.sol (#798) Updated the contract in favor of the latest solidity build compilation. * Solidity fixes (#699) * Line has no effect The "numberOfVotes" variable is set to the new value two lines further down, so this line does nothing. * Proposals should be marked as executed whether they pass or not This prevents proposals that lost the vote from having a chance of submitting more yea votes after the close of voting, and still get executed. * Update Links (#815) * Created hackternship.md This will eventually be the address for hackternship.ethereum.org * Update and rename hackternship.md to grants.md * updated page * Updated votingDeadline variable to minExecutionDate (#818) * Updated votingDeadline variable to minExecutionDate * Update dao-congress.sol * Removed horizontal overflow generated by figures on mobile (#821) * Updated votingDeadline variable to minExecutionDate (#820) * Update Twitter links (#822) * Fixed ms dependency issue (#825) * Creating equality between master and gh-pages (#828) * update online (#769) * Update index.pug * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 * update foundation page * Gh pages ud3 (#790) * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * updating foundation page * updating foundation page again * update/fix on foundation page * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * updating greeter to the current on on gh-pages * update to foundation page * update to brand * Update website (#814) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * Delete e-mail and change press-kit wording * Update Remix URL (#797) * Transfer of zero ERC20 Token must success (#796) * Make check for overflows compliant with ERC20 As my previous change: the ERC20 standard says that a transfer of 0 token MUST success. So we need to replace > by >= when checking for overflows, or the transfer of 0 token will revert ;-) * Transfer of 0 token must success Same as previous change: to be ERC20 compliant, a token must allow transfert of 0 token. * Transfer of zero token MUST success If you look at the ERC20 token standard, here: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer You can read that: Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. But if you are too strict when checking for overflows, as now, the 0 token transaction will revert <:o) I think we need to change the > into >= to allow transfers of 0 token as required by the standard. * Update crowdsale.sol (#786) * Develop (#792) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Emit Events (#808) * Update token-erc20.sol * Update token-erc20.sol * Add "public" to minimum viable token (#807) * Develop into master (#804) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * both -> two distinct (#810) because there are three clients but both implies that there are only two clients * Revert "Develop (#792)" (#812) This reverts commit 4f29530666857c07c53dc5c503648ef4a2ba411c. * Add 'public' to remaining variables in MyToken (#801) * Update dao-association.sol (#798) Updated the contract in favor of the latest solidity build compilation. * Solidity fixes (#699) * Line has no effect The "numberOfVotes" variable is set to the new value two lines further down, so this line does nothing. * Proposals should be marked as executed whether they pass or not This prevents proposals that lost the vote from having a chance of submitting more yea votes after the close of voting, and still get executed. * Hudson 4-10-18 Updates (#826) * es6 changes and node andnpm version update * Update index.pug * Update token.md * modify vitalik's website (#766) * Update crowdsale.md (#765) The token is actually defined as an interface not a contract * Update footer 2017 -> 2018 (#764) * A tiny typo fix (#762) * Update recipes.pug (#757) * Update index.pug (#756) * Update Ether FAQ (#752) * Docs improvement to match interface (#751) Case & space now better match interface. Comment naming step unnecessarily confuses due to interface mismatch. Also, some grammar cleanup. * Updating deprecated .send(...) to .transfer(...) (#734) .send(...) is now deprecated. Send vs transfer comparsion: https://vomtom.at/solidity-send-vs-transfer/ Also the Solidity by Example Documentation got updated and now uses the .transfer() function. http://solidity.readthedocs.io/en/develop/solidity-by-example.html We dont need to use require, as transfer fully propagates errors. * Update contract Token name (#732) It should be "contract Token", not "contract token". Also transferFrom is missing in the contract, added it to contract Token. * English grammatical mistakes (#767) * Corrected English grammatical mistake * Corrected English grammatical mistake * Gh pages 2017 01 04 (#768) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * update dependencies * new build * update 2018 dates * update 2018 * Develop (#727) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Timeline.md ethereum -> Ethereum * Fix Constructor word typo Fix Constructor word typo * Fixed phrase for better clarity. (#776) "The console has auto completion and history support" was changed to: "The console has auto completion of commands and command-history support" * Rephrased for better clarity. Changed: generate an account to: create an account * Used 'CAUTION' to highlight POTENTIAL MONEY LOSS. 'CAUTION' is a more suitable word than 'ATTENTION', in order to highlight POTENTIAL MONEY LOSS. For reference, on Technical Writing, visit: http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/ * remove duplicated line this line had been duplicated "If you have not installed a compiler, then you need to install one. You can find [instructions for installing Solidity here](http://solidity.readthedocs.io/en/develop/installing-solidity.html)." * Add necessary 'public' to function in tutorial Without adding 'public' to that line of code, Ethereum Wallet returns the error: No visibility specified. Defaulting to "public". function Token(uint256 initialSupply) { ^ Spanning multiple lines. Proposing to add that in so tutorial takers don't run into this error, get confused, etc. * missing '>' * [admin.nodeInfo.nodeURL] >> [admin.nodeInfo.enode] The command 'admin.nodeInfo.nodeURL', results in 'undefined', in the recent version of Geth. Here is the actual output, based on the recent version of Geth: myMac:console2 admin$ geth attach ipc:../node2/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2 coinbase: 0x3fd97155061e47960b59b563a178fa248493017c at block: 2 (Thu, 11 Jan 2018 20:25:58 +04) datadir: /Users/admin/EtherNet/testnet/node2 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > web3.eth.accounts ["0x3fd97155061e47960b59b563a178fa248493017c"] > admin.nodeInfo.nodeURL undefined > admin.nodeInfo.enode "enode://f48fcf69ba27442ff3813912ec12ea1ad249f14739dabfcadb3985c3654540e047700030adba5800bf33d0adbdd9ca5f1c47aae2498a0d9dafb8c2fd730969b4@[::]:3002?discport=0" > * Follow correct style guide for code * Update Greeter tutorial to comply with change in Remix's UI (#779) * Clarifications on installing Solc vs using Remix * update docs to reflect Remix GUI change * Clarifications on retrieving ABI from Remix * formatting cleanup * Fixed app.js and updated /dist * Add error handling to Greeter tutorial (#774) * Add error handling to Greeter tutorial While trying to get up and running with contract deployment through geth, I spent multiple hours trying to debug the `greeterFactory.new(...)` command in this tutorial without realizing that I was getting an "Error: exceeds block gas limit" error. This change makes it so that the console will log if contract deployment fails. * Use early return for error handling. * Removed the Ethereum Alarm Clock (#729) Removed the Ethereum Alarm Clock as it is not available on all networks * Update Foundation Page (#789) * updating foundation page * updating foundation page again * update/fix on foundation page * Delete e-mail and change press-kit wording * Update Remix URL (#797) * Transfer of zero ERC20 Token must success (#796) * Make check for overflows compliant with ERC20 As my previous change: the ERC20 standard says that a transfer of 0 token MUST success. So we need to replace > by >= when checking for overflows, or the transfer of 0 token will revert ;-) * Transfer of 0 token must success Same as previous change: to be ERC20 compliant, a token must allow transfert of 0 token. * Transfer of zero token MUST success If you look at the ERC20 token standard, here: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer You can read that: Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. But if you are too strict when checking for overflows, as now, the 0 token transaction will revert <:o) I think we need to change the > into >= to allow transfers of 0 token as required by the standard. * Update crowdsale.sol (#786) * Develop (#792) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Update Emit Events (#808) * Update token-erc20.sol * Update token-erc20.sol * Add "public" to minimum viable token (#807) * Develop into master (#804) * fixes Greeter tutorial see #14738 * removes unneeded kine * tidy grammer slightly * Revert "Develop (#792)" (#812) This reverts commit 4f29530666857c07c53dc5c503648ef4a2ba411c. * Add 'public' to remaining variables in MyToken (#801) * Update dao-association.sol (#798) Updated the contract in favor of the latest solidity build compilation. * Solidity fixes (#699) * Line has no effect The "numberOfVotes" variable is set to the new value two lines further down, so this line does nothing. * Proposals should be marked as executed whether they pass or not This prevents proposals that lost the vote from having a chance of submitting more yea votes after the close of voting, and still get executed. * Update Links (#815) * Created hackternship.md This will eventually be the address for hackternship.ethereum.org * Update and rename hackternship.md to grants.md * updated page * Updated votingDeadline variable to minExecutionDate (#818) * Updated votingDeadline variable to minExecutionDate * Update dao-congress.sol * Removed horizontal overflow generated by figures on mobile (#821) * Updated votingDeadline variable to minExecutionDate (#820) * Update Twitter links (#822) * Fixed ms dependency issue (#825) * Updated the grants page Please accept. * Update crowdsale.sol Fix compile bug on Ethereum Wallet 0.10.0 * Update dao-liquid-democracy.sol fix compile error * Updated grants.ethereum.org * updated grants.md added new fellowships * Update token.md * Correct wrong explanation of keyword 'now'. The keyword **now** was described as 'today'. Updated to describe the keyword **now** as 'current time'. * Added new funding source * Missing word * Invoking events without "emit" prefix is deprecated. * Functions in interfaces should be declared external. * Updating network ID typo and providing more context to Geth commands 1. The network ID mentioned in the Geth command and the supporting text are different. Updated the command's network ID to match. 2. Adding more context to the two Geth commands being used. * Update token.md * added coinbase funders * adding emit to events and removing depricated ways (#847) * removes welcome gitter sidecar * prefixed emit for events. Reused the _transfer function added emit's as prefixes to events * Add buy function missed return statement * make transfer func compatible to eip20 standard As discussed in ethereum/solidity#4116 Due to solidity compiler change after v0.4.22, this wrong transfer function will cause serious issues. We (SECBIT.IO) found many people followed this tutorial on ethereum.org. SHOULD fix this ASAP! * Fixing wiki link spacing on footer * update build instructions * Update build
This was identified independently by @yaronvel (https://gitter.im/ethereum/solidity-dev?at=5af1490f97f07c7e13787516) and @mattdf / @Ivshti / @decanus (https://gist.github.com/decanus/bdc08df5bf73af349333d1a8cae07d23).
To show the problem as a simple example:
The interface expects the
transfer
function to return a value and as a resultWallet
compiles. In the current version of Solidity this will trigger:returndatasize
opcode to retrieve the lengthThis fails when passing in an instance of
Bad
, because it returns 0 bytes.Apparently, this wasn't a problem with previous versions, because it didn't had the length check. Also because the return types are not part of the ABI selector hash, this wasn't enforced in the past at all.
As a result there are token contracts out there which do not comply with the above ERC20 interface and this change deprives decentralised exchanges from dealing with them if compiled with a recent Solidity version.
The text was updated successfully, but these errors were encountered: