From 931138cc151c3da07beca83dd051a476a5cbb4a8 Mon Sep 17 00:00:00 2001 From: Sabnock01 <24715302+Sabnock01@users.noreply.github.com> Date: Wed, 1 Nov 2023 10:30:44 -0500 Subject: [PATCH 1/7] remove remappings.txt --- foundry.toml | 10 ++++++++++ remappings.txt | 8 -------- 2 files changed, 10 insertions(+), 8 deletions(-) delete mode 100644 remappings.txt diff --git a/foundry.toml b/foundry.toml index 1a63c54..090b7cb 100644 --- a/foundry.toml +++ b/foundry.toml @@ -5,6 +5,16 @@ libs = ['lib'] solc = "0.8.17" optimizer_runs = 875 bytecode_hash = "none" +remappings = [ + "colormap-registry/=lib/colormap-registry/src/", + "forge-std/=lib/forge-std/src/", + "solady/=lib/solady/src/", + "shields-api/=lib/shields-api-contract/contracts/", + "solmate/=lib/solmate/src/", + "@/script/=script/", + "@/contracts/=src/", + "@/test/=test/" +] [fmt] line_length = 100 diff --git a/remappings.txt b/remappings.txt deleted file mode 100644 index 0f32f14..0000000 --- a/remappings.txt +++ /dev/null @@ -1,8 +0,0 @@ -colormap-registry/=lib/colormap-registry/src/ -forge-std/=lib/forge-std/src/ -solady/=lib/solady/src/ -shields-api/=lib/shields-api-contract/contracts/ -solmate/=lib/solmate/src/ -@/script/=script/ -@/contracts/=src/ -@/test/=test/ From d197becca9b0ba553cb1cc7e7aa7d2c36f44476f Mon Sep 17 00:00:00 2001 From: Sabnock01 <24715302+Sabnock01@users.noreply.github.com> Date: Wed, 1 Nov 2023 18:12:52 -0500 Subject: [PATCH 2/7] deprecate scripts --- script/deploy/DeployTest.s.sol | 51 ------------------- .../DeployConstellation.s.sol | 2 +- 2 files changed, 1 insertion(+), 52 deletions(-) delete mode 100644 script/deploy/DeployTest.s.sol rename script/deploy/{ => deprecated}/DeployConstellation.s.sol (94%) diff --git a/script/deploy/DeployTest.s.sol b/script/deploy/DeployTest.s.sol deleted file mode 100644 index 2b4e6f9..0000000 --- a/script/deploy/DeployTest.s.sol +++ /dev/null @@ -1,51 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.17; - -import { console } from "forge-std/Test.sol"; - -import { DeployBase } from "./DeployBase.s.sol"; -import { MockPuzzle } from "@/contracts/utils/mock/MockPuzzle.sol"; - -/// @notice A script to deploy the protocol for testing purposes. In addition to -/// deploying Curta, 2 mock puzzles are deployed. -contract DeployTest is DeployBase { - /// @notice The address to transfer the ownership of the Authorship Token - /// to. - address constant AUTHORSHIP_TOKEN_OWNER = 0x7A0E5c5e5E5E5E5E5E5e5E5e5E5E5E5E5E5E5e5E; - - /// @notice The address to transfer the ownership of Curta to. - address constant CURTA_OWNER = 0x7A0E5c5e5E5E5E5E5E5e5E5e5E5E5E5E5E5E5e5E; - - /// @notice The number of seconds until an additional token is made - /// available for minting by the author. - uint256 constant ISSUE_LENGTH = 10 seconds; - - /// @notice The list of authors in the initial batch. - address[] internal AUTHORS = new address[](0); - - constructor() DeployBase(AUTHORSHIP_TOKEN_OWNER, CURTA_OWNER, ISSUE_LENGTH, AUTHORS) { } - - /// @notice See description for {DeployTest}. - function run() public override { - // Read private key from the environment. - uint256 deployerKey = vm.envUint("DEPLOYER_PRIVATE_KEY"); - - // --------------------------------------------------------------------- - // As `deployerKey` - // --------------------------------------------------------------------- - - vm.startBroadcast(deployerKey); - - // Deploy 2 instances of `MockPuzzle` to serve as mock puzzles for - // testing purposes. - MockPuzzle mockPuzzle1 = new MockPuzzle(); - MockPuzzle mockPuzzle2 = new MockPuzzle(); - - vm.stopBroadcast(); - - console.log("Mock Puzzle 1 Address: ", address(mockPuzzle1)); - console.log("Mock Puzzle 2 Address: ", address(mockPuzzle2)); - - super.run(); - } -} diff --git a/script/deploy/DeployConstellation.s.sol b/script/deploy/deprecated/DeployConstellation.s.sol similarity index 94% rename from script/deploy/DeployConstellation.s.sol rename to script/deploy/deprecated/DeployConstellation.s.sol index 59d2a04..5fb886a 100644 --- a/script/deploy/DeployConstellation.s.sol +++ b/script/deploy/deprecated/DeployConstellation.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.17; -import { DeployBase } from "./DeployBase.s.sol"; +import { DeployBase } from "../DeployBase.s.sol"; /// @notice A script to deploy the protocol on Constellation. contract DeployConstellation is DeployBase { From 328a7f74df3509ed32dbc4e724a69be3d56a5c8d Mon Sep 17 00:00:00 2001 From: Sabnock01 <24715302+Sabnock01@users.noreply.github.com> Date: Thu, 2 Nov 2023 11:21:19 -0500 Subject: [PATCH 3/7] add scripts for Base deployment --- script/deploy/DeployBase.s.sol | 5 ++--- script/deploy/DeployBaseGoerli.s.sol | 22 ++++++++++++++++++++++ script/deploy/DeployBaseMainnet.s.sol | 27 +++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 script/deploy/DeployBaseGoerli.s.sol create mode 100644 script/deploy/DeployBaseMainnet.s.sol diff --git a/script/deploy/DeployBase.s.sol b/script/deploy/DeployBase.s.sol index b40c95c..5abce01 100644 --- a/script/deploy/DeployBase.s.sol +++ b/script/deploy/DeployBase.s.sol @@ -1,8 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.17; -import { Script } from "forge-std/Script.sol"; -import { console } from "forge-std/Test.sol"; +import { Script, console } from "forge-std/Script.sol"; import { AuthorshipToken } from "@/contracts/AuthorshipToken.sol"; import { Curta } from "@/contracts/Curta.sol"; @@ -16,7 +15,7 @@ import { LibRLP } from "@/contracts/utils/LibRLP.sol"; /// @dev The script requires 3 private keys: `DEPLOYER_PRIVATE_KEY`, /// `AUTHORSHIP_TOKEN_PRIVATE_KEY` and `CURTA_PRIVATE_KEY`, which are all read /// as environment variables via `vm.envUint`. The account specified by -/// `DEPLOYER_PRIVATE_KEY` will fund the other 2 accounts 0.25 ETH each for gas. +/// `DEPLOYER_PRIVATE_KEY` will fund the other 2 accounts 0.4 ETH each for gas. /// Note that if accounts specified by `AUTHORSHIP_TOKEN_PRIVATE_KEY` or /// `CURTA_PRIVATE_KEY` have a nonzero account nonce or are equal, the script /// will most likely fail due to incorrect contract address precomputation diff --git a/script/deploy/DeployBaseGoerli.s.sol b/script/deploy/DeployBaseGoerli.s.sol new file mode 100644 index 0000000..e29af2a --- /dev/null +++ b/script/deploy/DeployBaseGoerli.s.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.17; + +import { DeployBase } from "./DeployBase.s.sol"; + +contract DeployBaseGoerli is DeployBase { + /// @notice The address to transfer the ownership of the Authorship Token + /// to. + address constant AUTHORSHIP_TOKEN_OWNER = 0xDbAacdcadD7c51a325B771ff75B261a1e7baE11c; + + /// @notice The address to transfer the ownership of Curta to. + address constant CURTA_OWNER = 0xDbAacdcadD7c51a325B771ff75B261a1e7baE11c; + + /// @notice The number of seconds until an additional token is made + /// available for minting by the author. + uint256 constant ISSUE_LENGTH = 3 days; + + /// @notice The list of authors in the initial batch. + address[] internal AUTHORS = new address[](0); + + constructor() DeployBase(AUTHORSHIP_TOKEN_OWNER, CURTA_OWNER, ISSUE_LENGTH, AUTHORS) { } +} \ No newline at end of file diff --git a/script/deploy/DeployBaseMainnet.s.sol b/script/deploy/DeployBaseMainnet.s.sol new file mode 100644 index 0000000..af4b2b5 --- /dev/null +++ b/script/deploy/DeployBaseMainnet.s.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.17; + +import { DeployBase } from "./DeployBase.s.sol"; + +contract DeployBaseMainnet is DeployBase { + /// @notice The address to transfer the ownership of the Authorship Token + /// to. + address constant AUTHORSHIP_TOKEN_OWNER = 0xA85572Cd96f1643458f17340b6f0D6549Af482F5; + + /// @notice The address to transfer the ownership of Curta to. + address constant CURTA_OWNER = 0xA85572Cd96f1643458f17340b6f0D6549Af482F5; + + /// @notice The number of seconds until an additional token is made + /// available for minting by the author. + uint256 constant ISSUE_LENGTH = 3 days; + + /// @notice The list of authors in the initial batch. + address[] internal AUTHORS = [ + // fiveoutofnine.eth + 0xA85572Cd96f1643458f17340b6f0D6549Af482F5, + // sabnock.eth + 0xDbAacdcadD7c51a325B771ff75B261a1e7baE11c + ]; + + constructor() DeployBase(AUTHORSHIP_TOKEN_OWNER, CURTA_OWNER, ISSUE_LENGTH, AUTHORS) { } +} \ No newline at end of file From b6e0ae93bd58e32cb7deccefceddd349d35906a8 Mon Sep 17 00:00:00 2001 From: Sabnock01 <24715302+Sabnock01@users.noreply.github.com> Date: Thu, 2 Nov 2023 12:58:05 -0500 Subject: [PATCH 4/7] chore: update tests --- test/deploy/DeployBaseGoerli.t.sol | 86 ++++++++++++++++++ test/deploy/DeployBaseMainnet.t.sol | 87 +++++++++++++++++++ .../DeployConstellation.t.sol | 2 +- 3 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 test/deploy/DeployBaseGoerli.t.sol create mode 100644 test/deploy/DeployBaseMainnet.t.sol rename test/deploy/{ => deprecated}/DeployConstellation.t.sol (97%) diff --git a/test/deploy/DeployBaseGoerli.t.sol b/test/deploy/DeployBaseGoerli.t.sol new file mode 100644 index 0000000..16f5754 --- /dev/null +++ b/test/deploy/DeployBaseGoerli.t.sol @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.17; + +import { Test } from "forge-std/Test.sol"; + +import { AuthorshipToken } from "@/contracts/AuthorshipToken.sol"; +import { Curta } from "@/contracts/Curta.sol"; +import { DeployBaseGoerli } from "@/script/deploy/DeployBaseGoerli.s.sol"; + +/// @notice Tests the Base Goerli deploy script. +contract DeployBaseGoerliTest is Test { + // ------------------------------------------------------------------------- + // Contracts + // ------------------------------------------------------------------------- + + /// @notice The Base Goerli deploy script. + DeployBaseGoerli internal deployBaseGoerli; + + // ------------------------------------------------------------------------- + // Setup + // ------------------------------------------------------------------------- + + function setUp() public { + vm.deal(vm.addr(vm.envUint("DEPLOYER_PRIVATE_KEY")), type(uint64).max); + + deployBaseGoerli = new DeployBaseGoerli(); + deployBaseGoerli.run(); + } + + // ------------------------------------------------------------------------- + // Tests + // ------------------------------------------------------------------------- + + /// @notice Test that the addresses were set correctly in each contract's + /// deploy. + function test_AddressInitializationCorrectness() public { + assertEq(address(deployBaseGoerli.curta().flagRenderer()), address(deployBaseGoerli.flagRenderer())); + assertEq( + address(deployBaseGoerli.curta().authorshipToken()), address(deployBaseGoerli.authorshipToken()) + ); + assertEq(deployBaseGoerli.authorshipToken().curta(), address(deployBaseGoerli.curta())); + } + + /// @notice Test that the Authorship Token's issue length was set correctly. + function test_authorshipTokenIssueLengthEquality() public { + assertEq(deployBaseGoerli.authorshipToken().issueLength(), deployBaseGoerli.issueLength()); + } + + /// @notice Test that the Authorship Token's authors were set. + function test_authorshipTokenAuthorsEquality() public { + uint256 totalSupply = deployBaseGoerli.authorshipToken().totalSupply(); + assertEq(totalSupply, deployBaseGoerli.authorsLength()); + + unchecked { + for (uint256 i; i < totalSupply; ++i) { + assertEq(deployBaseGoerli.authorshipToken().ownerOf(i + 1), deployBaseGoerli.authors(i)); + } + } + } + + /// @notice Test that an Authorship Token can be minted after deploy. + function test_authorshipTokenMinting() public { + AuthorshipToken authorshipToken = deployBaseGoerli.authorshipToken(); + + // Warp 1 `issueLength` period forward in time to ensure the owner can + // mint 1. + vm.warp(block.timestamp + authorshipToken.issueLength() + 1); + + // Mint as owner. + vm.prank(authorshipToken.owner()); + authorshipToken.ownerMint(address(this)); + } + + /// @notice Test that the Authorship Token's ownership was transferred + /// correctly. + function test_authorshipTokenOwnerEquality() public { + assertEq(deployBaseGoerli.authorshipToken().owner(), deployBaseGoerli.authorshipTokenOwner()); + } + + /// @notice Test that Curta's ownership was transferred correctly. + function test_curtaOwnerEquality() public { + assertEq(deployBaseGoerli.curta().owner(), deployBaseGoerli.curtaOwner()); + } + +} + diff --git a/test/deploy/DeployBaseMainnet.t.sol b/test/deploy/DeployBaseMainnet.t.sol new file mode 100644 index 0000000..faf77ad --- /dev/null +++ b/test/deploy/DeployBaseMainnet.t.sol @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.17; + +import { Test } from "forge-std/Test.sol"; + +import { AuthorshipToken } from "@/contracts/AuthorshipToken.sol"; +import { Curta } from "@/contracts/Curta.sol"; +import { DeployBaseMainnet } from "@/script/deploy/DeployBaseMainnet.s.sol"; + +/// @notice Tests the Base mainnet deploy script. +contract DeployBaseMainnetTest is Test { + // ------------------------------------------------------------------------- + // Contracts + // ------------------------------------------------------------------------- + + /// @notice The Base mainnet deploy script. + DeployBaseMainnet internal deployBaseMainnet; + + // ------------------------------------------------------------------------- + // Setup + // ------------------------------------------------------------------------- + + function setUp() public { + vm.deal(vm.addr(vm.envUint("DEPLOYER_PRIVATE_KEY")), type(uint64).max); + + deployBaseMainnet = new DeployBaseMainnet(); + deployBaseMainnet.run(); + } + + // ------------------------------------------------------------------------- + // Tests + // ------------------------------------------------------------------------- + + /// @notice Test that the addresses were set correctly in each contract's + /// deploy. + function test_AddressInitializationCorrectness() public { + assertEq( + address(deployBaseMainnet.curta().flagRenderer()), address(deployBaseMainnet.flagRenderer()) + ); + assertEq( + address(deployBaseMainnet.curta().authorshipToken()), + address(deployBaseMainnet.authorshipToken()) + ); + assertEq(deployBaseMainnet.authorshipToken().curta(), address(deployBaseMainnet.curta())); + } + + /// @notice Test that the Authorship Token's issue length was set correctly. + function test_authorshipTokenIssueLengthEquality() public { + assertEq(deployBaseMainnet.authorshipToken().issueLength(), deployBaseMainnet.issueLength()); + } + + /// @notice Test that the Authorship Token's authors were set. + function test_authorshipTokenAuthorsEquality() public { + uint256 totalSupply = deployBaseMainnet.authorshipToken().totalSupply(); + assertEq(totalSupply, deployBaseMainnet.authorsLength()); + + unchecked { + for (uint256 i; i < totalSupply; ++i) { + assertEq(deployBaseMainnet.authorshipToken().ownerOf(i + 1), deployBaseMainnet.authors(i)); + } + } + } + + /// @notice Test that an Authorship Token can be minted after deploy. + function test_authorshipTokenMinting() public { + AuthorshipToken authorshipToken = deployBaseMainnet.authorshipToken(); + + // Warp 1 `issueLength` period forward in time to ensure the owner can + // mint 1. + vm.warp(block.timestamp + authorshipToken.issueLength() + 1); + + // Mint as owner. + vm.prank(authorshipToken.owner()); + authorshipToken.ownerMint(address(this)); + } + + /// @notice Test that the Authorship Token's ownership was transferred + /// correctly. + function test_authorshipTokenOwnerEquality() public { + assertEq(deployBaseMainnet.authorshipToken().owner(), deployBaseMainnet.authorshipTokenOwner()); + } + + /// @notice Test that Curta's ownership was transferred correctly. + function test_curtaOwnerEquality() public { + assertEq(deployBaseMainnet.curta().owner(), deployBaseMainnet.curtaOwner()); + } +} diff --git a/test/deploy/DeployConstellation.t.sol b/test/deploy/deprecated/DeployConstellation.t.sol similarity index 97% rename from test/deploy/DeployConstellation.t.sol rename to test/deploy/deprecated/DeployConstellation.t.sol index 79cf5ec..b02bf40 100644 --- a/test/deploy/DeployConstellation.t.sol +++ b/test/deploy/deprecated/DeployConstellation.t.sol @@ -5,7 +5,7 @@ import { Test } from "forge-std/Test.sol"; import { AuthorshipToken } from "@/contracts/AuthorshipToken.sol"; import { Curta } from "@/contracts/Curta.sol"; -import { DeployConstellation } from "@/script/deploy/DeployConstellation.s.sol"; +import { DeployConstellation } from "@/script/deploy/deprecated/DeployConstellation.s.sol"; /// @notice Tests the Constellation chain deploy script. contract DeployConstellationTest is Test { From 8a5aaa61d617cb930c53a385defb707e85fa50e7 Mon Sep 17 00:00:00 2001 From: Sabnock01 <24715302+Sabnock01@users.noreply.github.com> Date: Thu, 2 Nov 2023 13:01:50 -0500 Subject: [PATCH 5/7] forge snapshot --- .gas-snapshot | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index f0e7c3b..f54e235 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,10 +1,10 @@ AuthorshipTokenTest:test_curtaMint() (gas: 85648) AuthorshipTokenTest:test_curtaMint_SenderIsNotCurta_RevertsUnauthorized(address) (runs: 256, μ: 10204, ~: 10204) -AuthorshipTokenTest:test_ownerMint_FuzzMintTimestamps_IssuesTokensCorrectly(uint256) (runs: 256, μ: 6505633, ~: 6043360) +AuthorshipTokenTest:test_ownerMint_FuzzMintTimestamps_IssuesTokensCorrectly(uint256) (runs: 256, μ: 6541307, ~: 6006304) AuthorshipTokenTest:test_ownerMint_SenderIsNotOwner_RevertUnauthorized(address) (runs: 256, μ: 12935, ~: 12935) AuthorshipTokenTest:test_ownerMint_SenderIsOwner_AllowsMint() (gas: 108202) AuthorshipTokenTest:test_tokenURI_MintedToken_Succeeds() (gas: 232) -AuthorshipTokenTest:test_tokenURI_UnmintedToken_Fails() (gas: 11055) +AuthorshipTokenTest:test_tokenURI_UnmintedToken_Fails() (gas: 12629) CurtaTest:test_Initialization_DeployAddressesMatch() (gas: 11297) CurtaTest:test_addPuzzle() (gas: 303991) CurtaTest:test_addPuzzle_UseAuthorshipToken_UpdatesStorage() (gas: 297194) @@ -17,7 +17,7 @@ CurtaTest:test_balanceOf_ZeroAddress_Fails() (gas: 8674) CurtaTest:test_setApprovalForAll_False_UpdatesStorage() (gas: 15966) CurtaTest:test_setApprovalForAll_True_UpdatesStorage() (gas: 35841) CurtaTest:test_setFermat_AsRandomAccount_Succeeds(address) (runs: 256, μ: 453796, ~: 453796) -CurtaTest:test_setFermat_InitialSet_UpdatesStorage() (gas: 509601) +CurtaTest:test_setFermat_InitialSet_UpdatesStorage() (gas: 510466) CurtaTest:test_setFermat_SetAfterTransfer_Succeeds(address) (runs: 256, μ: 873913, ~: 873913) CurtaTest:test_setFermat_SetDifferentPuzzlesTwiceInIncreasingOrder_Succeeds() (gas: 867472) CurtaTest:test_setFermat_SetNonFermatPuzzle_Fails() (gas: 777525) @@ -26,13 +26,13 @@ CurtaTest:test_setFermat_SetUnsolvedPuzzle_Fails() (gas: 298803) CurtaTest:test_setPuzzleColors() (gas: 304888) CurtaTest:test_setPuzzleColors_SetUnauthoredPuzzle_RevertsUnauthorized() (gas: 298166) CurtaTest:test_solve() (gas: 656199) -CurtaTest:test_solve_DuringAllPhases_FirstSolveTimestampOnlySetOnFirstBlood(uint40) (runs: 256, μ: 519608, ~: 518934) +CurtaTest:test_solve_DuringAllPhases_FirstSolveTimestampOnlySetOnFirstBlood(uint40) (runs: 256, μ: 519878, ~: 518934) CurtaTest:test_solve_DuringPhase1WithPayment_PaysAuthor(uint256) (runs: 256, μ: 494376, ~: 495633) CurtaTest:test_solve_DuringPhase2WithPayment_PaysAuthor(uint256) (runs: 256, μ: 532556, ~: 532556) -CurtaTest:test_solve_DuringPhase2_RequiresETH(uint256) (runs: 256, μ: 488065, ~: 486303) +CurtaTest:test_solve_DuringPhase2_RequiresETH(uint256) (runs: 256, μ: 488012, ~: 486303) CurtaTest:test_solve_DuringPhase3_Fails(uint40) (runs: 256, μ: 432757, ~: 432757) CurtaTest:test_solve_FirstBlood_AuthorshipTokenMintPotentialRevertBranch() (gas: 309908) -CurtaTest:test_solve_FirstBlood_MintsAuthorshipToken() (gas: 411160) +CurtaTest:test_solve_FirstBlood_MintsAuthorshipToken() (gas: 412017) CurtaTest:test_solve_FirstBlood_UpdatesFirstSolveTimestamp(uint40) (runs: 256, μ: 405999, ~: 405999) CurtaTest:test_solve_IncorrectSolution_Fails(uint256) (runs: 256, μ: 307909, ~: 307909) CurtaTest:test_solve_NonExistantPuzzle_Fails() (gas: 13650) @@ -42,7 +42,7 @@ CurtaTest:test_solve_Success_UpdatesSolveCounters() (gas: 612407) CurtaTest:test_solve_Success_UpdatesStorage() (gas: 406659) CurtaTest:test_supportsInterface() (gas: 8058) CurtaTest:test_tokenURI_MintedToken_Succeeds() (gas: 234) -CurtaTest:test_tokenURI_UnmintedToken_Fails() (gas: 11378) +CurtaTest:test_tokenURI_UnmintedToken_Fails() (gas: 12952) CurtaTest:test_transferFrom() (gas: 449268) CurtaTest:test_transferFrom_SenderIsOwner_AllowsTransfer() (gas: 433241) CurtaTest:test_transferFrom_ToZeroAddress_Fails() (gas: 406595) @@ -50,6 +50,18 @@ CurtaTest:test_transferFrom_Unauthorized_RevertsUnauthorized() (gas: 411497) CurtaTest:test_transferFrom_WithApprovalForAllTrue_AllowsTransfer() (gas: 459002) CurtaTest:test_transferFrom_WithTokenApproval_AllowsTransfer() (gas: 439426) CurtaTest:test_transferFrom_WrongFrom_Fails() (gas: 406517) +DeployBaseGoerliTest:test_AddressInitializationCorrectness() (gas: 23494) +DeployBaseGoerliTest:test_authorshipTokenAuthorsEquality() (gas: 13651) +DeployBaseGoerliTest:test_authorshipTokenIssueLengthEquality() (gas: 11460) +DeployBaseGoerliTest:test_authorshipTokenMinting() (gas: 108701) +DeployBaseGoerliTest:test_authorshipTokenOwnerEquality() (gas: 13799) +DeployBaseGoerliTest:test_curtaOwnerEquality() (gas: 13832) +DeployBaseMainnetTest:test_AddressInitializationCorrectness() (gas: 23494) +DeployBaseMainnetTest:test_authorshipTokenAuthorsEquality() (gas: 27900) +DeployBaseMainnetTest:test_authorshipTokenIssueLengthEquality() (gas: 11460) +DeployBaseMainnetTest:test_authorshipTokenMinting() (gas: 91601) +DeployBaseMainnetTest:test_authorshipTokenOwnerEquality() (gas: 13799) +DeployBaseMainnetTest:test_curtaOwnerEquality() (gas: 13832) DeployConstellationTest:test_AddressInitializationCorrectness() (gas: 23494) DeployConstellationTest:test_authorshipTokenAuthorsEquality() (gas: 20777) DeployConstellationTest:test_authorshipTokenIssueLengthEquality() (gas: 11460) @@ -68,4 +80,4 @@ DeployMainnetTest:test_authorshipTokenIssueLengthEquality() (gas: 11460) DeployMainnetTest:test_authorshipTokenMinting() (gas: 91601) DeployMainnetTest:test_authorshipTokenOwnerEquality() (gas: 13799) DeployMainnetTest:test_curtaOwnerEquality() (gas: 13832) -OptimizationsTest:testFuzzComputePhaseFromTimestampBranchlessOptimization(uint40,uint40) (runs: 256, μ: 3534, ~: 3531) \ No newline at end of file +OptimizationsTest:testFuzzComputePhaseFromTimestampBranchlessOptimization(uint40,uint40) (runs: 256, μ: 3545, ~: 3531) \ No newline at end of file From 9a472573747e061ff902b80244f95764c501e62b Mon Sep 17 00:00:00 2001 From: Sabnock01 <24715302+Sabnock01@users.noreply.github.com> Date: Thu, 2 Nov 2023 17:45:03 -0500 Subject: [PATCH 6/7] chore: update foundry.toml --- foundry.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/foundry.toml b/foundry.toml index 090b7cb..4be1d4a 100644 --- a/foundry.toml +++ b/foundry.toml @@ -15,6 +15,7 @@ remappings = [ "@/contracts/=src/", "@/test/=test/" ] +no-match-path = "test/deploy/deprecated/*" [fmt] line_length = 100 From 1b55a1ff4c34d4da07f4dc68fb5474a2482b15c0 Mon Sep 17 00:00:00 2001 From: Sabnock01 <24715302+Sabnock01@users.noreply.github.com> Date: Mon, 6 Nov 2023 12:26:21 -0600 Subject: [PATCH 7/7] update README --- README.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/README.md b/README.md index bdf88b2..272e20b 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ Since puzzles are on-chain, everyone can view everyone else's submissions. The g ## Usage -This project uses [**Foundry**](https://github.com/foundry-rs/foundry) as its development/testing framework and a [**Constellation**](https://constellation.so/) roll-up for testing. +This project uses [**Foundry**](https://github.com/foundry-rs/foundry) as its development/testing framework. ### Installation @@ -158,11 +158,6 @@ If you are deploying to a public chain, replace `DeployMainnet` and `mainnet` wi forge script script/deploy/DeployMainnet.s.sol:DeployMainnet -f mainnet --broadcast --verify ``` -If you are deploying to the Constellation roll-up, remove `--verify` and add `--legacy`: -```sh -forge script script/deploy/DeployConstellation.s.sol:DeployConstellation -f constellation --broadcast --legacy --sender $SENDER_ADDRESS -``` - ## Acknowledgements * [**Solmate**](https://github.com/transmissions11/solmate) * [**Art Gobblers**](https://github.com/artgobblers/art-gobblers)