Skip to content
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

Closed
axic opened this issue May 10, 2018 · 37 comments · Fixed by dydxprotocol/protocol_v1#341
Closed

Comments

@axic
Copy link
Member

axic commented May 10, 2018

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:

interface Token {
  function transfer() returns (bool);
}

contract Good {
  function transfer() returns (bool) { return true; }
}

contract Bad {
  function transfer() {}
}

contract Wallet {
  function transfer(address token) {
    require(Token(token).transfer());
  }
}

The interface expects the transfer function to return a value and as a result Wallet compiles. In the current version of Solidity this will trigger:

  • a length check when ABI decoding the returned data (fails if the length is < 32)
  • using the returndatasize opcode to retrieve the length

This 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.

@axic
Copy link
Member Author

axic commented May 10, 2018

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 require if you know some tokens are incompatible. The call itself will bubble up exceptions so if it fails, the caller will fail too.

@Ivshti
Copy link

Ivshti commented May 10, 2018

Is there a notable case where an ERC20 might return false but not throw?

@decanus
Copy link

decanus commented May 10, 2018

@Ivshti As far as I know, the older ERC20 contracts returned false. Open Zeppelin I think only changed it recently

@Ivshti
Copy link

Ivshti commented May 10, 2018

OpenZeppelin behaviour in the adex contract is to not return anything, but only throw. Perhaps it returned false before that

@Arachnid
Copy link

There's an important distinction between what an interface specifies and what a contract does.

If the interface says it returns bool (which ERC20 does), then the implementation must return an ABI-encoded boolean if it returns, even if it's always the same value.

The current convention is for ERC20 tokens to revert if there's an error and return true if there isn't, because this is safest should work for everyone. An ERC20 token that returns 0 bytes is violating the ERC20 interface.

But, suddenly changing Solidity behaviour for these nonstandard return values in a point release isn't a great thing.

@axic
Copy link
Member Author

axic commented May 10, 2018

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 false.

@mattdf
Copy link
Member

mattdf commented May 10, 2018

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)
ISZERO
ISZERO

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.

@DaveAppleton
Copy link

Is there a notable case where an ERC20 might return false but not throw?

Anything that copied BAT contracts would do so.
At the time they were taken as pretty safe to copy.

    function transfer(address _to, uint256 _value) returns (bool success) {
      if (balances[msg.sender] >= _value && _value > 0) {
        balances[msg.sender] -= _value;
        balances[_to] += _value;
        Transfer(msg.sender, _to, _value);
        return true;
      } else {
        return false;
      }
    }

@yaronvel
Copy link

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.
However, this should be brought to the attention of the public, or at least relevant projects.

@chriseth
Copy link
Contributor

chriseth commented May 10, 2018

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 --evm-version homestead to make it still work for faulty contracts, but you will observe undefined behaviour with regards to the return value, which might be dangerous.

Another way to make an ERC20-non-compliant contract work is by creating an intermediate contract that translates between the two interfaces.

@decanus
Copy link

decanus commented May 11, 2018

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.

@Arachnid
Copy link

@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.

@chriseth
Copy link
Contributor

@Arachnid I agree, we should have been more careful there, so sorry about that.

To clarify the --evm-version homestead option: This removes that feature, reading of dynamic return data (where the size check is required) and the use of staticcall which can be breaking in a similar way.

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.

@3esmit
Copy link
Contributor

3esmit commented May 17, 2018

What about this case of Bad Token GavCoin?
https://etherscan.io/address/0x0b8d56c26d8cf16fe1bddf4967753503d974de06#code

It defines returns (bool) at signature but never returns true:

    function transfer(address _to, uint256 _value) when_owns(msg.sender, _value) returns (bool success) {
        Transfer(msg.sender, _to, _value);
        accounts[msg.sender].balance -= _value;
        accounts[_to].balance += _value;
    }

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)..

@ngutman
Copy link

ngutman commented May 23, 2018

Another "high-profile" non ERC20 compatible token is OMG for example.

function transferFrom(address _from, address _to, uint _value) onlyPayloadSize(3 * 32);
function transfer(address _to, uint _value) onlyPayloadSize(2 * 32);

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.

@axic
Copy link
Member Author

axic commented May 24, 2018

It defines returns (bool) at signature but never returns true:

@3esmit it implicitly returns false, which I would categorise as a programmer's error. One could argue this implicit behaviour isn't the best. For that there are proposals to change it and I would rather discuss that separately.

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.

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

@holiman
Copy link
Contributor

holiman commented May 28, 2018

@axic regarding that poc snippet. If someone embeds that into a contract, and calls it internally. So that method foo calls safeTransfer.

Won't that become a JUMP instead of a CALL internally? And if so, is there a possible corruption happening since you're writing to memory location 0 instead of what solidity designates the 'free memory' area ('0x60` onwards or whatever it is?)

@axic
Copy link
Member Author

axic commented May 28, 2018

Yes it would be a JUMP. Memory location 0 is designated as a "scratch area" used by hashing functions, so it is safe to use. It will be overwritten by the next use of KECCAK256.

Also the free memory area starts now at 0x80, but better to rely on the actual pointer in 0x40.

@axic
Copy link
Member Author

axic commented May 28, 2018

For long term compatibility it may be better to use the free memory pointer, just not update it in the function.

@BrendanChou
Copy link

BrendanChou commented May 29, 2018

Created my own version of safe transfer / transferFrom / approve. @axic is there more information about the memory locations somewhere? 0x0 and 0x40 and other important ones?

My implementation:
https://gist.github.com/BrendanChou/88a2eeb80947ff00bcf58ffdafeaeb61

@chriseth
Copy link
Contributor

https://solidity.readthedocs.io/en/v0.4.24/miscellaneous.html#layout-in-memory

@lukas-berlin
Copy link

lukas-berlin commented Jun 1, 2018

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
I did write an email to OMG. I think there should be a bigger outcry. These tokens may need to be forked, or the need to implement some proxy as @chriseth suggested

@holiman
Copy link
Contributor

holiman commented Jun 1, 2018

This issue is now 22 days old and I see no response in the community.

Well, Chris posted this a couple of days ago: https://medium.com/@chris_77367/explaining-unexpected-reverts-starting-with-solidity-0-4-22-3ada6e82308c

@lukas-berlin
Copy link

I compiled a list of affected contracts from the tokens listed on etherdelta. 130/913 tokens are affected.
https://gist.github.com/lukas-berlin/f587086f139df93d22987049f3d8ebd2

@lukas-berlin
Copy link

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

@BrendanChou
Copy link

Has anyone looked into transferFrom and approve? Are there tokens out there that do not return values for these functions?

@lukas-berlin
Copy link

@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()

@BrendanChou
Copy link

Most DEXs will probably not have to use approve, but any smart contract that interacts with DEXs will. Example from dYdX

p0n1 added a commit to p0n1/ethereum-org that referenced this issue Jun 7, 2018
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!
alexvandesande pushed a commit to ethereum/ethereum-org that referenced this issue Jun 8, 2018
* 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
@p0n1
Copy link

p0n1 commented Jun 8, 2018

Most of the incompatible ERC20 tokens (above 1703) have used token-advanced.sol code in solidity-org repo and I created PRs to fix.

Check this blog post for detailed report.
https://medium.com/loopring-protocol/an-incompatibility-in-smart-contract-threatening-dapp-ecosystem-72b8ca5db4da

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 call with function signature instead of still using incompatible no return function interface in code. Community should care more about common seen template code.

Hoping not to break anything. Help review please.
https://github.com/sec-bit/badERC20Fix/blob/master/badERC20Fix.sol

@Ivshti
Copy link

Ivshti commented Jul 19, 2018

After a brief discussion with @chriseth, it seems that this should be mitigatable by replicating the behavior of the old require in assembly, but we will have to construct the bytecode of the transfer() call ourselves

@mattdf @decanus thoughts?

@Ethearnal
Copy link

Hello everyone,
I know this is an old issue but our token (ERT - address: 0x8c78A83DE6FAa64B100B6055BDF3a1f0b445eFD2) for example is still affected by this. Any new solutions or work-arounds available?

@BlinkyStitt
Copy link

Is there a script-able way to test if a contract has this issue?

@p0n1
Copy link

p0n1 commented Nov 19, 2018

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 erc20-return-false or erc20-no-return.

Try it if you are interested.

https://github.com/sec-bit/adelaide/blob/secbit-ssae/README.secbit.md

@BlinkyStitt
Copy link

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.

@p0n1
Copy link

p0n1 commented Nov 19, 2018

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 badERC20Fix is a demo solution for DApp and DEX by adding a safe transfer/trasferFrom wrapper to solve the issue.

Different DEXs take diff ways.

This is 0x trick and this is Loopring one.

@BlinkyStitt
Copy link

Looks like uniswap didn’t know about this.

https://mobile.twitter.com/UniswapExchange/status/1072286775115161611

@BlinkyStitt
Copy link

I realize this is the solidity repo, but does anyone have a way to handle this in Vyper?

smartgeek1003 added a commit to smartgeek1003/ethereum-org that referenced this issue May 24, 2022
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!
smartgeek1003 added a commit to smartgeek1003/ethereum-org that referenced this issue May 24, 2022
* 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
supercrytoking pushed a commit to supercrytoking/ethereum-org that referenced this issue Jul 17, 2022
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!
supercrytoking pushed a commit to supercrytoking/ethereum-org that referenced this issue Jul 17, 2022
* 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

17 participants