Request form
Kudos SoulBound NFT
  • NFT
  • ERC1155
  • Soulbound
  • No-Code Deploy
Docs
Source
ChefGPT

Kudos SoulBound NFT

Each Kudos token represents some achievement in the form of a non-transferable, ERC-1155 compatible SoulBound token.

KudosV7 :
RegisteredKudos(address,uint256) :
This event is solely so that we can easily track which creator registered which Kudos tokens without having to store the mapping on-chain.
balanceOf(address,uint256) :
See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.
balanceOfBatch(address[],uint256[]) :
See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.
communityAdminAirdrop(uint256,(address,uint8,bytes32,bytes32),(address,uint8,bytes32,bytes32),bool,(bytes32,bytes32),bytes32[]) :
It's important to note here that this endpoint is potentially vulnerable -- because the admin signature's content is only the token ID, one can look on-chain and obtain the admin signature for a particular token, and then call this endpoint with their own "consenting" signature to maliciously obtain a token. This is only the case if the function is open to anyone and not locked down by role, so for the time being we don't need to worry about it. However, it's worth noting as we make the contract more accessible outside of going through our API.
communityAdminAirdropWithoutConsentSig(uint256,(address,uint8,bytes32,bytes32),address,bool,(bytes32,bytes32),bytes32[]) :
All the concerns of the above communityAdminAirdrop function apply, with the additional issue that this function does not require a signature from the recipient address - community admins can use this function to mint a Kudos to ANY address. This is intended for special cases where the regular communityAdminAirdrop function won't work - migrations, situations where the end user can't/won't collect consent signatures for recipients, etc.
exists(uint256) :
Indicates whether any token exist with a given id, or not.
getAllowlistedContributors(uint256) :
The solidity compiler automatically returns the getter for mappings with arrays as map(key, idx), which prevents us from getting the entire array back for a given key.
isApprovedForAll(address,address) :
See {IERC1155-isApprovedForAll}.
owner() :
Returns the address of the current owner.
paused() :
Returns true if the contract is paused, and false otherwise.
registerBySig(address,(string,string,uint256,uint256,string[],string,string,(bytes32,bytes32),(bool,bool,int256,uint256)),uint8,bytes32,bytes32) :
This just allowlists the tokens that are able to claim this particular token type, but it does not necessarily mint the token until later. Note that because we are using signed messages, if the Kudos input data is not the same as what it was at the time of user signing, the function call with fail. This ensures that whatever the user signs is what will get minted, and that we as the admins cannot tamper with the content of a Kudos.
registerBySigAndAirdrop(address,address,(string,string,uint256,uint256,string[],string,string,(bytes32,bytes32),(bool,bool,int256,uint256)),uint8,bytes32,bytes32) :
Note that because we are using signed messages, if the Kudos input data is not the same as what it was at the time of user signing, the function call with fail. This ensures that whatever the user signs is what will get minted, and that we as the admins cannot tamper with the content of a Kudos.
renounceOwnership() :
Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.
safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) :
See {IERC1155-safeBatchTransferFrom}.
safeTransferFrom(address,address,uint256,uint256,bytes) :
See {IERC1155-safeTransferFrom}.
setApprovalForAll(address,bool) :
See {IERC1155-setApprovalForAll}.
supportsInterface(bytes4) :
See {IERC165-supportsInterface}.
totalSupply(uint256) :
Total amount of tokens in with a given id.
transferOwnership(address) :
Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.
uri(uint256) :
See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\{id\}` substring with the actual token type ID.
OwnableUpgradeable :
Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.
owner() :
Returns the address of the current owner.
renounceOwnership() :
Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.
transferOwnership(address) :
Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.
PausableUpgradeable :
Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.
Paused(address) :
Emitted when the pause is triggered by `account`.
Unpaused(address) :
Emitted when the pause is lifted by `account`.
paused() :
Returns true if the contract is paused, and false otherwise.
MerkleProofUpgradeable :
These functions deal with verification of Merkle Tree proofs. The tree and the proofs can be generated using our https://github.com/OpenZeppelin/merkle-tree[JavaScript library]. You will find a quickstart guide in the readme. WARNING: You should avoid using leaf values that are 64 bytes long prior to hashing, or use a hash function other than keccak256 for hashing leaves. This is because the concatenation of a sorted pair of internal nodes in the merkle tree could be reinterpreted as a leaf value. OpenZeppelin's JavaScript library generates merkle trees that are safe against this attack out of the box.
Initializable :
This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ``` contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init("MyToken", "MTK"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init("MyToken"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```
Initialized(uint8) :
Triggered when the contract has been initialized or reinitialized.
ERC1155NonTransferableBurnableUpgradeable :
balanceOf(address,uint256) :
See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.
balanceOfBatch(address[],uint256[]) :
See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.
exists(uint256) :
Indicates whether any token exist with a given id, or not.
isApprovedForAll(address,address) :
See {IERC1155-isApprovedForAll}.
safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) :
See {IERC1155-safeBatchTransferFrom}.
safeTransferFrom(address,address,uint256,uint256,bytes) :
See {IERC1155-safeTransferFrom}.
setApprovalForAll(address,bool) :
See {IERC1155-setApprovalForAll}.
supportsInterface(bytes4) :
See {IERC165-supportsInterface}.
totalSupply(uint256) :
Total amount of tokens in with a given id.
uri(uint256) :
See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\{id\}` substring with the actual token type ID.
ICommunityRegistry :
ContextUpgradeable :
Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.
AddressUpgradeable :
Collection of functions related to the address type
ERC1155Upgradeable :
Implementation of the basic standard multi-token. See https://eips.ethereum.org/EIPS/eip-1155 Originally based on code by Enjin: https://github.com/enjin/erc-1155 _Available since v3.1._
balanceOf(address,uint256) :
See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.
balanceOfBatch(address[],uint256[]) :
See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.
isApprovedForAll(address,address) :
See {IERC1155-isApprovedForAll}.
safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) :
See {IERC1155-safeBatchTransferFrom}.
safeTransferFrom(address,address,uint256,uint256,bytes) :
See {IERC1155-safeTransferFrom}.
setApprovalForAll(address,bool) :
See {IERC1155-setApprovalForAll}.
supportsInterface(bytes4) :
See {IERC165-supportsInterface}.
uri(uint256) :
See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\{id\}` substring with the actual token type ID.
ERC1155SupplyUpgradeable :
Extension of ERC1155 that adds tracking of total supply per id. Useful for scenarios where Fungible and Non-fungible tokens have to be clearly identified. Note: While a totalSupply of 1 might mean the corresponding is an NFT, there is no guarantees that no other token with the same id are not going to be minted.
balanceOf(address,uint256) :
See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.
balanceOfBatch(address[],uint256[]) :
See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.
exists(uint256) :
Indicates whether any token exist with a given id, or not.
isApprovedForAll(address,address) :
See {IERC1155-isApprovedForAll}.
safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) :
See {IERC1155-safeBatchTransferFrom}.
safeTransferFrom(address,address,uint256,uint256,bytes) :
See {IERC1155-safeTransferFrom}.
setApprovalForAll(address,bool) :
See {IERC1155-setApprovalForAll}.
supportsInterface(bytes4) :
See {IERC165-supportsInterface}.
totalSupply(uint256) :
Total amount of tokens in with a given id.
uri(uint256) :
See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\{id\}` substring with the actual token type ID.
IERC1155Upgradeable :
Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._
ApprovalForAll(address,address,bool) :
Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.
TransferBatch(address,address,address,uint256[],uint256[]) :
Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.
TransferSingle(address,address,address,uint256,uint256) :
Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
URI(string,uint256) :
Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.
balanceOf(address,uint256) :
Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.
balanceOfBatch(address[],uint256[]) :
xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.
isApprovedForAll(address,address) :
Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.
safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) :
xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.
safeTransferFrom(address,address,uint256,uint256,bytes) :
Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.
setApprovalForAll(address,bool) :
Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.
supportsInterface(bytes4) :
Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.
IERC1155ReceiverUpgradeable :
_Available since v3.1._
onERC1155BatchReceived(address,address,uint256[],uint256[],bytes) :
Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` (i.e. 0xbc197c81, or its own function selector).
onERC1155Received(address,address,uint256,uint256,bytes) :
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. NOTE: To accept the transfer, this must return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` (i.e. 0xf23a6e61, or its own function selector).
supportsInterface(bytes4) :
Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.
IERC1155MetadataURIUpgradeable :
Interface of the optional ERC1155MetadataExtension interface, as defined in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. _Available since v3.1._
balanceOf(address,uint256) :
Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.
balanceOfBatch(address[],uint256[]) :
xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.
isApprovedForAll(address,address) :
Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.
safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) :
xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.
safeTransferFrom(address,address,uint256,uint256,bytes) :
Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.
setApprovalForAll(address,bool) :
Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.
supportsInterface(bytes4) :
Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.
uri(uint256) :
Returns the URI for token type `id`. If the `\{id\}` substring is present in the URI, it must be replaced by clients with the actual token type ID.
ERC165Upgradeable :
Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
supportsInterface(bytes4) :
See {IERC165-supportsInterface}.
IERC165Upgradeable :
Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.
supportsInterface(bytes4) :
Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.
Kudosv7.sol
OwnableUpgradeable.sol
PausableUpgradeable.sol
MerkleProofUpgradeable.sol
Initializable.sol
ERC1155NonTransferableBurnableUpgradeable.sol
ContextUpgradeable.sol
AddressUpgradeable.sol
ERC1155Upgradeable.sol
ERC1155SupplyUpgradeable.sol
IERC1155Upgradeable.sol
IERC1155ReceiverUpgradeable.sol
IERC1155MetadataURIUpgradeable.sol
ERC165Upgradeable.sol
IERC165Upgradeable.sol

43 downloads

mintkudos.xyz / Kudos SoulBound NFT
  • NFT
  • ERC1155
  • Soulbound
  • No-Code Deploy
Docs
Source
ChefGPT
Expand
Share

Get Cookin'
star icon43

43 downloads

Kudos SoulBound NFT

Each Kudos token represents some achievement in the form of a non-transferable, ERC-1155 compatible SoulBound token.

KudosV7 :
RegisteredKudos(address,uint256) :
This event is solely so that we can easily track which creator registered which Kudos tokens without having to store the mapping on-chain.
balanceOf(address,uint256) :
See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.
balanceOfBatch(address[],uint256[]) :
See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.
communityAdminAirdrop(uint256,(address,uint8,bytes32,bytes32),(address,uint8,bytes32,bytes32),bool,(bytes32,bytes32),bytes32[]) :
It's important to note here that this endpoint is potentially vulnerable -- because the admin signature's content is only the token ID, one can look on-chain and obtain the admin signature for a particular token, and then call this endpoint with their own "consenting" signature to maliciously obtain a token. This is only the case if the function is open to anyone and not locked down by role, so for the time being we don't need to worry about it. However, it's worth noting as we make the contract more accessible outside of going through our API.
communityAdminAirdropWithoutConsentSig(uint256,(address,uint8,bytes32,bytes32),address,bool,(bytes32,bytes32),bytes32[]) :
All the concerns of the above communityAdminAirdrop function apply, with the additional issue that this function does not require a signature from the recipient address - community admins can use this function to mint a Kudos to ANY address. This is intended for special cases where the regular communityAdminAirdrop function won't work - migrations, situations where the end user can't/won't collect consent signatures for recipients, etc.
exists(uint256) :
Indicates whether any token exist with a given id, or not.
getAllowlistedContributors(uint256) :
The solidity compiler automatically returns the getter for mappings with arrays as map(key, idx), which prevents us from getting the entire array back for a given key.
isApprovedForAll(address,address) :
See {IERC1155-isApprovedForAll}.
owner() :
Returns the address of the current owner.
paused() :
Returns true if the contract is paused, and false otherwise.
registerBySig(address,(string,string,uint256,uint256,string[],string,string,(bytes32,bytes32),(bool,bool,int256,uint256)),uint8,bytes32,bytes32) :
This just allowlists the tokens that are able to claim this particular token type, but it does not necessarily mint the token until later. Note that because we are using signed messages, if the Kudos input data is not the same as what it was at the time of user signing, the function call with fail. This ensures that whatever the user signs is what will get minted, and that we as the admins cannot tamper with the content of a Kudos.
registerBySigAndAirdrop(address,address,(string,string,uint256,uint256,string[],string,string,(bytes32,bytes32),(bool,bool,int256,uint256)),uint8,bytes32,bytes32) :
Note that because we are using signed messages, if the Kudos input data is not the same as what it was at the time of user signing, the function call with fail. This ensures that whatever the user signs is what will get minted, and that we as the admins cannot tamper with the content of a Kudos.
renounceOwnership() :
Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.
safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) :
See {IERC1155-safeBatchTransferFrom}.
safeTransferFrom(address,address,uint256,uint256,bytes) :
See {IERC1155-safeTransferFrom}.
setApprovalForAll(address,bool) :
See {IERC1155-setApprovalForAll}.
supportsInterface(bytes4) :
See {IERC165-supportsInterface}.
totalSupply(uint256) :
Total amount of tokens in with a given id.
transferOwnership(address) :
Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.
uri(uint256) :
See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\{id\}` substring with the actual token type ID.
OwnableUpgradeable :
Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.
owner() :
Returns the address of the current owner.
renounceOwnership() :
Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.
transferOwnership(address) :
Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.
PausableUpgradeable :
Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.
Paused(address) :
Emitted when the pause is triggered by `account`.
Unpaused(address) :
Emitted when the pause is lifted by `account`.
paused() :
Returns true if the contract is paused, and false otherwise.
MerkleProofUpgradeable :
These functions deal with verification of Merkle Tree proofs. The tree and the proofs can be generated using our https://github.com/OpenZeppelin/merkle-tree[JavaScript library]. You will find a quickstart guide in the readme. WARNING: You should avoid using leaf values that are 64 bytes long prior to hashing, or use a hash function other than keccak256 for hashing leaves. This is because the concatenation of a sorted pair of internal nodes in the merkle tree could be reinterpreted as a leaf value. OpenZeppelin's JavaScript library generates merkle trees that are safe against this attack out of the box.
Initializable :
This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ``` contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init("MyToken", "MTK"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init("MyToken"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```
Initialized(uint8) :
Triggered when the contract has been initialized or reinitialized.
ERC1155NonTransferableBurnableUpgradeable :
balanceOf(address,uint256) :
See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.
balanceOfBatch(address[],uint256[]) :
See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.
exists(uint256) :
Indicates whether any token exist with a given id, or not.
isApprovedForAll(address,address) :
See {IERC1155-isApprovedForAll}.
safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) :
See {IERC1155-safeBatchTransferFrom}.
safeTransferFrom(address,address,uint256,uint256,bytes) :
See {IERC1155-safeTransferFrom}.
setApprovalForAll(address,bool) :
See {IERC1155-setApprovalForAll}.
supportsInterface(bytes4) :
See {IERC165-supportsInterface}.
totalSupply(uint256) :
Total amount of tokens in with a given id.
uri(uint256) :
See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\{id\}` substring with the actual token type ID.
ICommunityRegistry :
ContextUpgradeable :
Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.
AddressUpgradeable :
Collection of functions related to the address type
ERC1155Upgradeable :
Implementation of the basic standard multi-token. See https://eips.ethereum.org/EIPS/eip-1155 Originally based on code by Enjin: https://github.com/enjin/erc-1155 _Available since v3.1._
balanceOf(address,uint256) :
See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.
balanceOfBatch(address[],uint256[]) :
See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.
isApprovedForAll(address,address) :
See {IERC1155-isApprovedForAll}.
safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) :
See {IERC1155-safeBatchTransferFrom}.
safeTransferFrom(address,address,uint256,uint256,bytes) :
See {IERC1155-safeTransferFrom}.
setApprovalForAll(address,bool) :
See {IERC1155-setApprovalForAll}.
supportsInterface(bytes4) :
See {IERC165-supportsInterface}.
uri(uint256) :
See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\{id\}` substring with the actual token type ID.
ERC1155SupplyUpgradeable :
Extension of ERC1155 that adds tracking of total supply per id. Useful for scenarios where Fungible and Non-fungible tokens have to be clearly identified. Note: While a totalSupply of 1 might mean the corresponding is an NFT, there is no guarantees that no other token with the same id are not going to be minted.
balanceOf(address,uint256) :
See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.
balanceOfBatch(address[],uint256[]) :
See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.
exists(uint256) :
Indicates whether any token exist with a given id, or not.
isApprovedForAll(address,address) :
See {IERC1155-isApprovedForAll}.
safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) :
See {IERC1155-safeBatchTransferFrom}.
safeTransferFrom(address,address,uint256,uint256,bytes) :
See {IERC1155-safeTransferFrom}.
setApprovalForAll(address,bool) :
See {IERC1155-setApprovalForAll}.
supportsInterface(bytes4) :
See {IERC165-supportsInterface}.
totalSupply(uint256) :
Total amount of tokens in with a given id.
uri(uint256) :
See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\{id\}` substring with the actual token type ID.
IERC1155Upgradeable :
Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._
ApprovalForAll(address,address,bool) :
Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.
TransferBatch(address,address,address,uint256[],uint256[]) :
Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.
TransferSingle(address,address,address,uint256,uint256) :
Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
URI(string,uint256) :
Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.
balanceOf(address,uint256) :
Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.
balanceOfBatch(address[],uint256[]) :
xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.
isApprovedForAll(address,address) :
Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.
safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) :
xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.
safeTransferFrom(address,address,uint256,uint256,bytes) :
Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.
setApprovalForAll(address,bool) :
Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.
supportsInterface(bytes4) :
Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.
IERC1155ReceiverUpgradeable :
_Available since v3.1._
onERC1155BatchReceived(address,address,uint256[],uint256[],bytes) :
Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` (i.e. 0xbc197c81, or its own function selector).
onERC1155Received(address,address,uint256,uint256,bytes) :
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. NOTE: To accept the transfer, this must return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` (i.e. 0xf23a6e61, or its own function selector).
supportsInterface(bytes4) :
Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.
IERC1155MetadataURIUpgradeable :
Interface of the optional ERC1155MetadataExtension interface, as defined in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. _Available since v3.1._
balanceOf(address,uint256) :
Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.
balanceOfBatch(address[],uint256[]) :
xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.
isApprovedForAll(address,address) :
Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.
safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) :
xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.
safeTransferFrom(address,address,uint256,uint256,bytes) :
Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.
setApprovalForAll(address,bool) :
Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.
supportsInterface(bytes4) :
Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.
uri(uint256) :
Returns the URI for token type `id`. If the `\{id\}` substring is present in the URI, it must be replaced by clients with the actual token type ID.
ERC165Upgradeable :
Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
supportsInterface(bytes4) :
See {IERC165-supportsInterface}.
IERC165Upgradeable :
Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.
supportsInterface(bytes4) :
Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.
Kudosv7.sol
OwnableUpgradeable.sol
PausableUpgradeable.sol
MerkleProofUpgradeable.sol
Initializable.sol
ERC1155NonTransferableBurnableUpgradeable.sol
ContextUpgradeable.sol
AddressUpgradeable.sol
ERC1155Upgradeable.sol
ERC1155SupplyUpgradeable.sol
IERC1155Upgradeable.sol
IERC1155ReceiverUpgradeable.sol
IERC1155MetadataURIUpgradeable.sol
ERC165Upgradeable.sol
IERC165Upgradeable.sol