Santiago Palladino e96164feea ERC721 full implementation (#803)
* Rename current ERC721 implementation to BaseERC721

* Implement ERC721 optional & approveAll functionality

* Support for new ERC721 interface

- Tests for new features are pending
- ERC721 is abstract, since it requires metadata implementation
- Move some methods into DeprecatedERC721 contract
- Reorganise base vs full implementation
- Pending tokenByIndex

* Add more tests for ERC721

* Implement suggestions by @dekz

* Update comments in ERC721 contracts

* Implement tokensByIndex extension

- Remove restrictions from mock mint and burn calls

* Add default implementation for metadata URI

This allows token implementation to be non-abstract

* Allow operators to call approve on a token

* Remove gas stipend restriction in call to 721 receiver

* Remove deprecated implementation

We only want to keep the interface, for interacting with already deployed contracts

* Add notice to isContract helper on constract constructors

* Change natspec delimiters for consistency

* Minor linting fixes

* Add constant modifier to ERC721_RECEIVED magic value

* Use 4-params safeTransferFrom for implementing the 3-params overload

* Minor text changes in natspec comments

* Use address(0) instead of 0 or 0x0

* Use if-statements instead of boolean one-liners for clarity

:-(

* Keep ownedTokensCount state var in sync in full ERC721 implementation

* Fix incorrect comparison when burning ERC721 tokens with metadata

* Use address(0) instead of 0 in one more place in ERC721

* Throw when querying balance for the zero address

Required by the spec

* Update links to approved version of EIP721

* Use explicit size for uint

* Remove unneeded internal function in ERC721

Also rename addToken and removeToken for added clarity

* Use underscore instead of 'do' prefix for internal methods in ERC721

* Fix failing test due to events reordering in ERC721 safe transfer

* Fix bug introduced in 74db03ba06

* Remove do prefix for internal setTokenUri method

* Allow transfers to self in ERC721
2018-03-23 15:11:59 -03:00
2017-09-16 10:20:06 -04:00
2017-11-22 18:52:52 -03:00
2018-03-23 15:11:59 -03:00
2017-12-20 18:28:22 -03:00
2017-02-17 18:04:02 -03:00
2017-12-20 18:28:22 -03:00
2017-09-16 10:20:06 -04:00
2018-02-20 18:11:33 -03:00
2017-09-16 10:20:06 -04:00
2018-02-20 18:11:33 -03:00
2018-02-20 18:11:33 -03:00

Zeppelin Solidity

NPM Package Build Status Coverage Status

OpenZeppelin is a library for writing secure Smart Contracts on Ethereum.

With OpenZeppelin, you can build distributed applications, protocols and organizations:

NOTE: New to smart contract development? Check our introductory guide.

Getting Started

OpenZeppelin integrates with Truffle, an Ethereum development environment. Please install Truffle and initialize your project with truffle init.

npm install -g truffle
mkdir myproject && cd myproject
truffle init

To install the OpenZeppelin library, run the following in your Solidity project root directory:

npm init -y
npm install -E zeppelin-solidity

Note that OpenZeppelin does not currently follow semantic versioning. You may encounter breaking changes upon a minor version bump. We recommend pinning the version of OpenZeppelin you use, as done by the -E (--save-exact) option.

After that, you'll get all the library's contracts in the node_modules/zeppelin-solidity/contracts folder. You can use the contracts in the library like so:

import 'zeppelin-solidity/contracts/ownership/Ownable.sol';

contract MyContract is Ownable {
  ...
}

Security

OpenZeppelin is meant to provide secure, tested and community-audited code, but please use common sense when doing anything that deals with real money! We take no responsibility for your implementation decisions and any security problem you might experience.

If you find a security issue, please email security@openzeppelin.org.

Developer Resources

Building a distributed application, protocol or organization with OpenZeppelin?

Interested in contributing to OpenZeppelin?

Collaborating organizations and audits by OpenZeppelin

among others...

License

Code released under the MIT License.

Description
OpenZeppelin Contracts is a library for secure smart contract development.
Readme MIT 100 MiB
Languages
JavaScript 84.2%
Ruby 14.1%
Python 0.7%
Shell 0.5%
Solidity 0.4%