Skip to content

Commit

Permalink
🪡 v0 ~~
Browse files Browse the repository at this point in the history
  • Loading branch information
z0r0z committed Jan 11, 2024
1 parent 483a7d1 commit e0eb80a
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 73 deletions.
64 changes: 32 additions & 32 deletions .gas-snapshot
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
DagonTest:testBurn(address,uint96) (runs: 256, μ: 153049, ~: 153049)
DagonTest:testDeploy() (gas: 2218938)
DagonTest:testFailBurnOverBalance(address,uint96) (runs: 256, μ: 187519, ~: 188686)
DagonTest:testFailBurnOverThreshold(address,uint96) (runs: 256, μ: 218771, ~: 219938)
DagonTest:testFailInvalidThresholdExceedsSupply() (gas: 159129)
DagonTest:testFailInvalidThresholdExceedsSupply2() (gas: 164264)
DagonTest:testFailInvalidThresholdNull() (gas: 159177)
DagonTest:testFailIsValidSignature2of3ForInsufficientSignatures() (gas: 201623)
DagonTest:testFailIsValidSignatureOutOfOrder() (gas: 239457)
DagonTest:testFailIsValidSignatureWeighted() (gas: 231153)
DagonTest:testBurn(address,uint96) (runs: 256, μ: 153055, ~: 153055)
DagonTest:testDeploy() (gas: 2216130)
DagonTest:testFailBurnOverBalance(address,uint96) (runs: 256, μ: 187448, ~: 188692)
DagonTest:testFailBurnOverThreshold(address,uint96) (runs: 256, μ: 218700, ~: 219944)
DagonTest:testFailInvalidThresholdExceedsSupply() (gas: 159135)
DagonTest:testFailInvalidThresholdExceedsSupply2() (gas: 164270)
DagonTest:testFailInvalidThresholdNull() (gas: 159183)
DagonTest:testFailIsValidSignature2of3ForInsufficientSignatures() (gas: 201629)
DagonTest:testFailIsValidSignatureOutOfOrder() (gas: 239463)
DagonTest:testFailIsValidSignatureWeighted() (gas: 231159)
DagonTest:testFailIsValidSignatureWeightedERC1155() (gas: 36227)
DagonTest:testFailIsValidSignatureWeightedERC20() (gas: 235720)
DagonTest:testFailIsValidSignatureWeightedERC6909() (gas: 227309)
DagonTest:testFailIsValidSignatureWeightedERC721() (gas: 208929)
DagonTest:testFailSetTokenInvalidStd(address) (runs: 256, μ: 158171, ~: 158171)
DagonTest:testFailTransferFromInactiveAuth(address,address,uint96) (runs: 256, μ: 192121, ~: 192899)
DagonTest:testFailTransferOverBalance(address,address,uint96) (runs: 256, μ: 186629, ~: 187407)
DagonTest:testInstall() (gas: 137482)
DagonTest:testIsValidSignature() (gas: 150958)
DagonTest:testIsValidSignature2of3() (gas: 197462)
DagonTest:testIsValidSignature3of3() (gas: 205252)
DagonTest:testIsValidSignatureOnchain() (gas: 197623)
DagonTest:testIsValidSignatureWeighted() (gas: 234909)
DagonTest:testIsValidSignatureWeightedERC1155() (gas: 247815)
DagonTest:testIsValidSignatureWeightedERC20() (gas: 247619)
DagonTest:testIsValidSignatureWeightedERC6909() (gas: 247789)
DagonTest:testIsValidSignatureWeightedERC721() (gas: 207528)
DagonTest:testFailIsValidSignatureWeightedERC20() (gas: 240854)
DagonTest:testFailIsValidSignatureWeightedERC6909() (gas: 232746)
DagonTest:testFailIsValidSignatureWeightedERC721() (gas: 211709)
DagonTest:testFailSetTokenInvalidStd(address) (runs: 256, μ: 158177, ~: 158177)
DagonTest:testFailTransferFromInactiveAuth(address,address,uint96) (runs: 256, μ: 192049, ~: 192905)
DagonTest:testFailTransferOverBalance(address,address,uint96) (runs: 256, μ: 186557, ~: 187413)
DagonTest:testInstall() (gas: 137488)
DagonTest:testIsValidSignature() (gas: 150964)
DagonTest:testIsValidSignature2of3() (gas: 197468)
DagonTest:testIsValidSignature3of3() (gas: 205258)
DagonTest:testIsValidSignatureOnchain() (gas: 197629)
DagonTest:testIsValidSignatureWeighted() (gas: 234915)
DagonTest:testIsValidSignatureWeightedERC1155() (gas: 250741)
DagonTest:testIsValidSignatureWeightedERC20() (gas: 250253)
DagonTest:testIsValidSignatureWeightedERC6909() (gas: 250726)
DagonTest:testIsValidSignatureWeightedERC721() (gas: 210308)
DagonTest:testNameAndSymbolAndDecimals(uint256) (runs: 256, μ: 15035, ~: 15035)
DagonTest:testSetAuth(address) (runs: 256, μ: 145746, ~: 145746)
DagonTest:testSetThreshold() (gas: 147627)
DagonTest:testSetToken(address) (runs: 256, μ: 148419, ~: 148419)
DagonTest:testSetURI() (gas: 165149)
DagonTest:testTransfer(address,address,uint88) (runs: 256, μ: 176217, ~: 176995)
DagonTest:testTransferWithAuth(address,address,uint96) (runs: 256, μ: 180039, ~: 180943)
DagonTest:testSetAuth(address) (runs: 256, μ: 145752, ~: 145752)
DagonTest:testSetThreshold() (gas: 147633)
DagonTest:testSetToken(address) (runs: 256, μ: 148425, ~: 148425)
DagonTest:testSetURI() (gas: 165155)
DagonTest:testTransfer(address,address,uint88) (runs: 256, μ: 175912, ~: 177001)
DagonTest:testTransferWithAuth(address,address,uint96) (runs: 256, μ: 180161, ~: 180949)
2 changes: 1 addition & 1 deletion lib/solady
80 changes: 40 additions & 40 deletions src/Dagon.sol
Original file line number Diff line number Diff line change
Expand Up @@ -226,42 +226,6 @@ contract Dagon is ERC6909 {
}
}

/// ====================== TOKEN OPERATIONS ====================== ///

/// @dev Returns the account metadata.
function getMetadata(address account)
public
view
virtual
returns (string memory, string memory, string memory, IAuth)
{
Metadata storage meta = _metadata[uint256(uint160(account))];
return (meta.name, meta.symbol, meta.tokenURI, meta.authority);
}

/// @dev Mints shares for an owner of the caller account.
function mint(address owner, uint96 shares) public payable virtual {
uint256 id = uint256(uint160(msg.sender));
_metadata[id].totalSupply += shares;
_mint(owner, id, shares);
}

/// @dev Burns shares from an owner of the caller account.
function burn(address owner, uint96 shares) public payable virtual {
uint256 id = uint256(uint160(msg.sender));
unchecked {
if (_settings[msg.sender].threshold > (_metadata[id].totalSupply -= shares)) {
revert InvalidSetting();
}
}
_burn(owner, id, shares);
}

/// @dev Sets new token URI metadata for the caller account.
function setURI(string calldata uri) public payable virtual {
emit URISet(msg.sender, (_metadata[uint256(uint160(msg.sender))].tokenURI = uri));
}

/// ======================== INSTALLATION ======================== ///

/// @dev Initializes ownership settings for the caller account.
Expand All @@ -277,23 +241,23 @@ contract Dagon is ERC6909 {
if (owners.length != 0) {
uint96 supply;
for (uint256 i; i != owners.length;) {
_mint(owners[i].owner, id, owners[i].shares);
supply += owners[i].shares;
_mint(owners[i].owner, id, owners[i].shares);
unchecked {
++i;
}
}
_metadata[id].totalSupply += supply;
}
setThreshold(setting.threshold);
setToken(setting.token, setting.standard);
setThreshold(setting.threshold);
if (bytes(meta.name).length != 0) {
_metadata[id].name = meta.name;
_metadata[id].symbol = meta.symbol;
}
if (bytes(meta.tokenURI).length != 0) setURI(meta.tokenURI);
if (meta.authority != IAuth(address(0))) _metadata[id].authority = meta.authority;
IOwnable(msg.sender).requestOwnershipHandover();
try IOwnable(msg.sender).requestOwnershipHandover() {} catch {} // Avoid revert.
}

/// ===================== OWNERSHIP SETTINGS ===================== ///
Expand Down Expand Up @@ -334,6 +298,42 @@ contract Dagon is ERC6909 {
emit ThresholdSet(msg.sender, (set.threshold = threshold));
}

/// ====================== TOKEN OPERATIONS ====================== ///

/// @dev Returns the account metadata.
function getMetadata(address account)
public
view
virtual
returns (string memory, string memory, string memory, IAuth)
{
Metadata storage meta = _metadata[uint256(uint160(account))];
return (meta.name, meta.symbol, meta.tokenURI, meta.authority);
}

/// @dev Mints shares for an owner of the caller account.
function mint(address owner, uint96 shares) public payable virtual {
uint256 id = uint256(uint160(msg.sender));
_metadata[id].totalSupply += shares;
_mint(owner, id, shares);
}

/// @dev Burns shares from an owner of the caller account.
function burn(address owner, uint96 shares) public payable virtual {
uint256 id = uint256(uint160(msg.sender));
unchecked {
if (_settings[msg.sender].threshold > (_metadata[id].totalSupply -= shares)) {
revert InvalidSetting();
}
}
_burn(owner, id, shares);
}

/// @dev Sets new token URI metadata for the caller account.
function setURI(string calldata uri) public payable virtual {
emit URISet(msg.sender, (_metadata[uint256(uint160(msg.sender))].tokenURI = uri));
}

/// =================== EXTERNAL TOKEN HELPERS =================== ///

/// @dev Returns the amount of ERC20/721 `token` owned by `account`.
Expand Down Expand Up @@ -364,7 +364,7 @@ contract Dagon is ERC6909 {
mstore(0x34, id) // Store the `id` argument.
pop(staticcall(gas(), token, 0x10, 0x44, 0x20, 0x20))
amount := mload(0x20)
mstore(0x34, 0)
mstore(0x34, 0) // Restore the part of the free memory pointer that was overwritten.
}
}

Expand Down

0 comments on commit e0eb80a

Please sign in to comment.