Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
1cac435d
Unverified
Commit
1cac435d
authored
Dec 14, 2022
by
mergify[bot]
Committed by
GitHub
Dec 14, 2022
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4450 from ethereum-optimism/sc/ctp-optimist-comments
maint(ctp): clean up Optimist comments
parents
476f3322
14a3bea8
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
43 additions
and
45 deletions
+43
-45
Optimist.sol
...ntracts-periphery/contracts/universal/op-nft/Optimist.sol
+43
-45
No files found.
packages/contracts-periphery/contracts/universal/op-nft/Optimist.sol
View file @
1cac435d
...
...
@@ -9,34 +9,28 @@ import { AttestationStation } from "./AttestationStation.sol";
import { Strings } from "@openzeppelin/contracts/utils/Strings.sol";
/**
* @title Optimist
* @author Optimism Collective
* @author Gitcoin
* @dev Contract for Optimist SBT
* @notice The Optimist contract is a SBT representing real humans
* It uses attestations for its base URI and allowList
* This contract is meant to live on L2
* This contract is not yet audited
* @title Optimist
* @notice A Soul Bound Token for real humans only(tm).
*/
contract Optimist is ERC721BurnableUpgradeable, Semver {
/**
* @notice
The attestation station contract where owner makes attestations
* @notice
Address of the AttestationStation contract.
*/
AttestationStation public immutable ATTESTATION_STATION;
/**
* @notice
The attestor attests to the baseURI and allowList
* @notice
Attestor who attests to baseURI and allowlist.
*/
address public immutable ATTESTOR;
/**
* @notice Initialize the Optimist contract.
* @custom:semver 1.0.0
* @dev call initialize function
* @param _name The token name.
* @param _symbol The token symbol.
* @param _attestor The administrator address who makes attestations.
* @param _attestationStation The address of the attestation station contract.
* @param _name Token name.
* @param _symbol Token symbol.
* @param _attestor Address of the attestor.
* @param _attestationStation Address of the AttestationStation contract.
*/
constructor(
string memory _name,
...
...
@@ -50,10 +44,10 @@ contract Optimist is ERC721BurnableUpgradeable, Semver {
}
/**
* @notice
Initialize
the Optimist contract.
*
@dev Initializes the Optimist contract with the given parameters.
* @param
_name The t
oken name.
* @param
_symbol The t
oken symbol.
* @notice
Initializes
the Optimist contract.
*
* @param
_name T
oken name.
* @param
_symbol T
oken symbol.
*/
function initialize(string memory _name, string memory _symbol) public initializer {
__ERC721_init(_name, _symbol);
...
...
@@ -61,11 +55,11 @@ contract Optimist is ERC721BurnableUpgradeable, Semver {
}
/**
* @notice
Mint the Optimist token.
*
@dev Mints the Optimist token to the give recipient address.
*
Limits the number of tokens that can be minted to one
per address.
*
The tokenId is the uint256 of the recipient address.
* @param
_recipient The a
ddress of the token recipient.
* @notice
Allows an address to mint an Optimist NFT. Token ID is the uint256 representation
*
of the recipient's address. Recipients must be permitted to mint, eventually anyone
*
will be able to mint. One token
per address.
*
* @param
_recipient A
ddress of the token recipient.
*/
function mint(address _recipient) public {
require(isOnAllowList(_recipient), "Optimist: address is not on allowList");
...
...
@@ -73,8 +67,9 @@ contract Optimist is ERC721BurnableUpgradeable, Semver {
}
/**
* @notice Returns decimal tokenid for a given address
* @return uint256 decimal tokenId
* @notice Returns the baseURI for all tokens.
*
* @return BaseURI for all tokens.
*/
function baseURI() public view returns (string memory) {
return
...
...
@@ -90,28 +85,31 @@ contract Optimist is ERC721BurnableUpgradeable, Semver {
}
/**
* @notice Returns the URI for the token metadata.
* @dev The token URI will be stored at baseURI + '/' + tokenId + .json
* @param tokenId The token ID to query.
* @return The URI for the given token ID.
* @notice Returns the token URI for a given token by ID
*
* @param _tokenId Token ID to query.
* @return Token URI for the given token by ID.
*/
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
function tokenURI(uint256
_
tokenId) public view virtual override returns (string memory) {
return
string(
abi.encodePacked(
baseURI(),
"/",
//
convert tokenId to hex string formatted like an address (20)
Strings.toHexString(tokenId, 20),
//
Properly format the token ID as a 20 byte hex string (address).
Strings.toHexString(
_
tokenId, 20),
".json"
)
);
}
/**
* @notice Returns whether an address is allowList
* @dev The allowList is an attestation by the admin of this contract
* @return boolean Whether the address is allowList
* @notice Checks whether a given address is allowed to mint the Optimist NFT yet. Since the
* Optimist NFT will also be used as part of the Citizens House, mints are currently
* restricted. Eventually anyone will be able to mint.
*
* @return Whether or not the address is allowed to mint yet.
*/
function isOnAllowList(address _recipient) public view returns (bool) {
return
...
...
@@ -121,34 +119,34 @@ contract Optimist is ERC721BurnableUpgradeable, Semver {
}
/**
* @notice Returns decimal tokenid for a given address
* @return uint256 decimal tokenId
* @notice Returns the token ID for the token owned by a given address. This is the uint256
* representation of the given address.
*
* @return Token ID for the token owned by the given address.
*/
function tokenIdOfAddress(address _owner) public pure returns (uint256) {
return uint256(uint160(_owner));
}
/**
* @notice Soulbound
* @dev Override function to prevent transfers of the Optimist token.
* @notice Disabled for the Optimist NFT (Soul Bound Token).
*/
function approve(address, uint256) public pure override {
revert("Optimist: soul bound token");
}
/**
* @notice Soulbound
* @dev Override function to prevent transfers of the Optimist token.
* @notice Disabled for the Optimist NFT (Soul Bound Token).
*/
function setApprovalForAll(address, bool) public virtual override {
revert("Optimist: soul bound token");
}
/**
* @notice
(Internal) Soulbound
*
@dev Override internal function to prevent transfers of the Optimist token.
* @param
_from The a
ddress of the token sender.
* @param
_to The a
ddress of the token recipient.
* @notice
Prevents transfers of the Optimist NFT (Soul Bound Token).
*
* @param
_from A
ddress of the token sender.
* @param
_to A
ddress of the token recipient.
*/
function _beforeTokenTransfer(
address _from,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment