Commit fbfe19d6 by Francisco Giordano

Improve documentation around ERC1155

parent ee149877
...@@ -10,18 +10,20 @@ import "../../utils/introspection/IERC165.sol"; ...@@ -10,18 +10,20 @@ import "../../utils/introspection/IERC165.sol";
*/ */
interface IERC1155Receiver is IERC165 { interface IERC1155Receiver is IERC165 {
/** /**
@dev Handles the receipt of a single ERC1155 token type. This function is * @dev Handles the receipt of a single ERC1155 token type. This function is
called at the end of a `safeTransferFrom` after the balance has been updated. * called at the end of a `safeTransferFrom` after the balance has been updated.
To accept the transfer, this must return *
`bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * NOTE: To accept the transfer, this must return
(i.e. 0xf23a6e61, or its own function selector). * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
@param operator The address which initiated the transfer (i.e. msg.sender) * (i.e. 0xf23a6e61, or its own function selector).
@param from The address which previously owned the token *
@param id The ID of the token being transferred * @param operator The address which initiated the transfer (i.e. msg.sender)
@param value The amount of tokens being transferred * @param from The address which previously owned the token
@param data Additional data with no specified format * @param id The ID of the token being transferred
@return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed * @param value The amount of tokens being transferred
*/ * @param data Additional data with no specified format
* @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
*/
function onERC1155Received( function onERC1155Received(
address operator, address operator,
address from, address from,
...@@ -31,18 +33,21 @@ interface IERC1155Receiver is IERC165 { ...@@ -31,18 +33,21 @@ interface IERC1155Receiver is IERC165 {
) external returns (bytes4); ) external returns (bytes4);
/** /**
@dev Handles the receipt of a multiple ERC1155 token types. This function * @dev Handles the receipt of a multiple ERC1155 token types. This function
is called at the end of a `safeBatchTransferFrom` after the balances have * is called at the end of a `safeBatchTransferFrom` after the balances have
been updated. To accept the transfer(s), this must return * been updated.
`bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` *
(i.e. 0xbc197c81, or its own function selector). * NOTE: To accept the transfer(s), this must return
@param operator The address which initiated the batch transfer (i.e. msg.sender) * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
@param from The address which previously owned the token * (i.e. 0xbc197c81, or its own function selector).
@param ids An array containing ids of each token being transferred (order and length must match values array) *
@param values An array containing amounts of each token being transferred (order and length must match ids array) * @param operator The address which initiated the batch transfer (i.e. msg.sender)
@param data Additional data with no specified format * @param from The address which previously owned the token
@return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed * @param ids An array containing ids of each token being transferred (order and length must match values array)
*/ * @param values An array containing amounts of each token being transferred (order and length must match ids array)
* @param data Additional data with no specified format
* @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
*/
function onERC1155BatchReceived( function onERC1155BatchReceived(
address operator, address operator,
address from, address from,
......
...@@ -26,6 +26,8 @@ NOTE: This core set of contracts is designed to be unopinionated, allowing devel ...@@ -26,6 +26,8 @@ NOTE: This core set of contracts is designed to be unopinionated, allowing devel
{{IERC1155Receiver}} {{IERC1155Receiver}}
{{ERC1155Receiver}}
== Extensions == Extensions
{{ERC1155Pausable}} {{ERC1155Pausable}}
......
...@@ -6,6 +6,11 @@ pragma solidity ^0.8.0; ...@@ -6,6 +6,11 @@ pragma solidity ^0.8.0;
import "./ERC1155Receiver.sol"; import "./ERC1155Receiver.sol";
/** /**
* Simple implementation of `ERC1155Receiver` that will allow a contract to hold ERC1155 tokens.
*
* IMPORTANT: When inheriting this contract, you must include a way to use the received tokens, otherwise they will be
* stuck.
*
* @dev _Available since v3.1._ * @dev _Available since v3.1._
*/ */
contract ERC1155Holder is ERC1155Receiver { contract ERC1155Holder is ERC1155Receiver {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment