Update docs
This commit is contained in:
@ -7,7 +7,13 @@ import {ERC4626} from "@openzeppelin/contracts/token/ERC20/extensions/ERC4626.so
|
||||
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
||||
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
||||
|
||||
/// @dev ERC4626 vault with entry/exit fees expressed in https://en.wikipedia.org/wiki/Basis_point[basis point (bp)].
|
||||
/// @dev ERC-4626 vault with entry/exit fees expressed in https://en.wikipedia.org/wiki/Basis_point[basis point (bp)].
|
||||
///
|
||||
/// NOTE: The contract charges fees in terms of assets, not shares. This means that the fees are calculated based on the
|
||||
/// amount of assets that are being deposited or withdrawn, and not based on the amount of shares that are being minted or
|
||||
/// redeemed. This is an opinionated design decision that should be taken into account when integrating this contract.
|
||||
///
|
||||
/// WARNING: This contract has not been audited and shouldn't be considered production ready. Consider using it with caution.
|
||||
abstract contract ERC4626Fees is ERC4626 {
|
||||
using Math for uint256;
|
||||
|
||||
|
||||
9
docs/modules/api/examples/MyNFT.sol
Normal file
9
docs/modules/api/examples/MyNFT.sol
Normal file
@ -0,0 +1,9 @@
|
||||
// contracts/MyNFT.sol
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
|
||||
|
||||
contract MyNFT is ERC721 {
|
||||
constructor() ERC721("MyNFT", "MNFT") {}
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
// contracts/AccessControlModified.sol
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";
|
||||
|
||||
contract AccessControlModified is AccessControl {
|
||||
error AccessControlNonRevokable();
|
||||
|
||||
// Override the revokeRole function
|
||||
function revokeRole(bytes32, address) public pure override {
|
||||
revert AccessControlNonRevokable();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
// contracts/AccessControlNonRevokableAdmin.sol
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";
|
||||
|
||||
contract AccessControlNonRevokableAdmin is AccessControl {
|
||||
error AccessControlNonRevokable();
|
||||
|
||||
function revokeRole(bytes32 role, address account) public override {
|
||||
if (role == DEFAULT_ADMIN_ROLE) {
|
||||
revert AccessControlNonRevokable();
|
||||
}
|
||||
|
||||
super.revokeRole(role, account);
|
||||
}
|
||||
}
|
||||
21
docs/modules/api/examples/token/ERC1155/GameItems.sol
Normal file
21
docs/modules/api/examples/token/ERC1155/GameItems.sol
Normal file
@ -0,0 +1,21 @@
|
||||
// contracts/GameItems.sol
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
|
||||
|
||||
contract GameItems is ERC1155 {
|
||||
uint256 public constant GOLD = 0;
|
||||
uint256 public constant SILVER = 1;
|
||||
uint256 public constant THORS_HAMMER = 2;
|
||||
uint256 public constant SWORD = 3;
|
||||
uint256 public constant SHIELD = 4;
|
||||
|
||||
constructor() ERC1155("https://game.example/api/item/{id}.json") {
|
||||
_mint(msg.sender, GOLD, 10 ** 18, "");
|
||||
_mint(msg.sender, SILVER, 10 ** 27, "");
|
||||
_mint(msg.sender, THORS_HAMMER, 1, "");
|
||||
_mint(msg.sender, SWORD, 10 ** 9, "");
|
||||
_mint(msg.sender, SHIELD, 10 ** 9, "");
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
// contracts/MyERC115HolderContract.sol
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {ERC1155Holder} from "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol";
|
||||
|
||||
contract MyERC115HolderContract is ERC1155Holder {}
|
||||
11
docs/modules/api/examples/token/ERC20/GLDToken.sol
Normal file
11
docs/modules/api/examples/token/ERC20/GLDToken.sol
Normal file
@ -0,0 +1,11 @@
|
||||
// contracts/GLDToken.sol
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
|
||||
|
||||
contract GLDToken is ERC20 {
|
||||
constructor(uint256 initialSupply) ERC20("Gold", "GLD") {
|
||||
_mint(msg.sender, initialSupply);
|
||||
}
|
||||
}
|
||||
19
docs/modules/api/examples/token/ERC721/GameItem.sol
Normal file
19
docs/modules/api/examples/token/ERC721/GameItem.sol
Normal file
@ -0,0 +1,19 @@
|
||||
// contracts/GameItem.sol
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {ERC721URIStorage, ERC721} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
|
||||
|
||||
contract GameItem is ERC721URIStorage {
|
||||
uint256 private _nextTokenId;
|
||||
|
||||
constructor() ERC721("GameItem", "ITM") {}
|
||||
|
||||
function awardItem(address player, string memory tokenURI) public returns (uint256) {
|
||||
uint256 tokenId = _nextTokenId++;
|
||||
_mint(player, tokenId);
|
||||
_setTokenURI(tokenId, tokenURI);
|
||||
|
||||
return tokenId;
|
||||
}
|
||||
}
|
||||
27
docs/modules/api/examples/utilities/Base64NFT.sol
Normal file
27
docs/modules/api/examples/utilities/Base64NFT.sol
Normal file
@ -0,0 +1,27 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
|
||||
import {Strings} from "@openzeppelin/contracts/utils/Strings.sol";
|
||||
import {Base64} from "@openzeppelin/contracts/utils/Base64.sol";
|
||||
|
||||
contract Base64NFT is ERC721 {
|
||||
using Strings for uint256;
|
||||
|
||||
constructor() ERC721("Base64NFT", "MTK") {}
|
||||
|
||||
// ...
|
||||
|
||||
function tokenURI(uint256 tokenId) public pure override returns (string memory) {
|
||||
// Equivalent to:
|
||||
// {
|
||||
// "name": "Base64NFT #1",
|
||||
// // Replace with extra ERC-721 Metadata properties
|
||||
// }
|
||||
// prettier-ignore
|
||||
string memory dataURI = string.concat("{\"name\": \"Base64NFT #", tokenId.toString(), "\"}");
|
||||
|
||||
return string.concat("data:application/json;base64,", Base64.encode(bytes(dataURI)));
|
||||
}
|
||||
}
|
||||
15
docs/modules/api/examples/utilities/Multicall.sol
Normal file
15
docs/modules/api/examples/utilities/Multicall.sol
Normal file
@ -0,0 +1,15 @@
|
||||
// contracts/Box.sol
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {Multicall} from "@openzeppelin/contracts/utils/Multicall.sol";
|
||||
|
||||
contract Box is Multicall {
|
||||
function foo() public {
|
||||
// ...
|
||||
}
|
||||
|
||||
function bar() public {
|
||||
// ...
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user